diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17fb8b2..10589f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,12 +25,31 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r requirements.txt - pip install -r requirements-dev.txt + pip install -e ".[dev]" - name: Validate committed data and notebooks run: pytest tests/ -q + - name: Verify group summaries regenerate + reconcile + run: python pipeline/build_group_summaries.py + + locked: + name: Reproducible install from hashed lock + runs-on: ubuntu-latest # the lock targets x86_64-linux / py3.11 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: pip + - name: Install from the pinned, hashed lock + run: | + python -m pip install --upgrade pip + pip install --require-hashes -r requirements.lock + pip install -e . --no-deps + - name: Test against the locked environment + run: pytest tests/ -q + security: name: Dependency audit (pip-audit) runs-on: ubuntu-latest @@ -43,7 +62,7 @@ jobs: - name: Install project + pip-audit run: | python -m pip install --upgrade pip - pip install -r requirements.txt + pip install -e ".[dev]" # audit the closure the code actually runs in pip install pip-audit - name: Audit installed dependencies run: pip-audit --desc @@ -68,8 +87,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r requirements.txt - pip install -r requirements-dev.txt + pip install -e ".[dev]" - name: Execute notebooks - run: pytest --nbmake --nbmake-timeout=900 case-study group individual + # --nbmake-kernel=python3 overrides any embedded kernel name so a clean + # checkout runs regardless of the author's local kernel. + run: pytest --nbmake --nbmake-kernel=python3 --nbmake-timeout=900 case-study group individual diff --git a/.gitignore b/.gitignore index 87d2197..8b269f3 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,9 @@ env/ htmlcov/ # Original HEIC files (converted to JPG) *.HEIC + +.claude/ + +# Generated by pipeline/build_group_summaries.py +data/group_results/reconstructed/ +mms.egg-info/ diff --git a/.python-version b/.python-version index e4fba21..2c07333 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.12 +3.11 diff --git a/CITATION.cff b/CITATION.cff index 6718aef..424b696 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -15,4 +15,4 @@ keywords: - psychometric-testing - multimodal-analysis - computational-neuropsychology -license: MIT +license: CC-BY-4.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b11cadd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,104 @@ +# Contributing to Multimodal-Multisensor + +Thanks for your interest. This is a small, reproducible research repo: notebooks +and a shared `mms` analysis package built on top of committed sensor summaries +from a 10-participant longitudinal study. Contributions that improve clarity, +reproducibility, or the statistical rigour of the analysis are especially +welcome. Because the data are special-category health data, please also read +[DATA_ETHICS.md](DATA_ETHICS.md) before working with anything under `data/`. + +## Development setup + +The repo targets Python >= 3.11 (CI runs 3.11 and 3.12). Create a virtualenv and +install the project editable, which also brings in the `mms` package and the +test toolchain: + +```bash +python -m venv .venv && source .venv/bin/activate +pip install -e ".[dev]" # deps + mms + pytest / nbmake / ipykernel +``` + +For a byte-for-byte reproducible environment, install from the pinned, hashed +lockfile instead (generated with `uv pip compile`): + +```bash +pip install -r requirements.lock +pip install -e . --no-deps # add the mms package on top, without re-resolving +``` + +## Running the tests + +The suite validates the committed data and checks every notebook is valid and +was saved without error outputs. No notebook execution is required: + +```bash +pytest tests/ -q +``` + +Optional top-to-bottom notebook execution (slow, and what the manual +`execute-notebooks` CI job runs) is opt-in: + +```bash +pytest --nbmake --nbmake-kernel=python3 --nbmake-timeout=900 case-study group individual +``` + +If you change the analysis code or committed data, also confirm the group +summaries still regenerate and reconcile: + +```bash +python pipeline/build_group_summaries.py +``` + +## Linting + +There is no separate linter or formatter configured — keep style consistent with +the surrounding code. CI does run a `pip-audit` dependency scan; it is advisory +today, so a flagged CVE won't block a PR, but do check the output. + +## Code style + +- Clean code, few comments: let names and structure carry the meaning. +- Put shared loaders and metrics in the `mms` package (`mms.io`, `mms.hrv`, + `mms.stats`, `mms.fixation`) and import them from notebooks — don't + re-implement analysis inline. New shared logic needs a test in `tests/`. +- Re-run a notebook top to bottom before committing it, so it lands with clean + outputs and no saved errors (the smoke test enforces this). +- Never commit raw or re-identifiable data. Keep to the de-identified summaries + under `data/`; see [DATA_PROVENANCE.md](DATA_PROVENANCE.md) for scope. + +## Commit messages + +Use [Conventional Commits](https://www.conventionalcommits.org/) with a terse +description: + +``` +feat: a new analysis, metric, or notebook +fix: a correctness fix in mms/, the pipeline, or a notebook +docs: README, provenance, or other docs +test: tests only +refactor: restructuring with no behaviour change +build: dependencies, packaging, lockfile +chore: tooling and housekeeping +``` + +For example: `fix: correct ICC(1) confidence interval` or +`docs: clarify data licence`. Keep one logical change per commit. + +## Filing an issue + +Open an issue describing what you observed and how to reproduce it. For a numeric +discrepancy, include the exact command and the values you got versus expected — +the reliability numbers are reproducible from `mms.stats.icc1`, so a mismatch is +worth a report. + +## Opening a pull request + +1. Branch off `main`. +2. Make your change and keep commits focused. +3. Run `pytest tests/ -q` locally (and `python pipeline/build_group_summaries.py` + if you touched the analysis or data). +4. Open a pull request against `main`. CI runs the data and notebook validation + on Python 3.11 and 3.12 and must be green before merge. + +Code (notebooks, `mms/`, scripts) is released under the [MIT license](LICENSE); +data and figures under the terms in [DATA_LICENSE.md](DATA_LICENSE.md). diff --git a/DATA_ETHICS.md b/DATA_ETHICS.md index 0c0058f..8b937f2 100644 --- a/DATA_ETHICS.md +++ b/DATA_ETHICS.md @@ -30,10 +30,12 @@ penalty. details, dates of birth, or device identifiers). - Participants are referred to only by non-reversible pseudonymous codes (e.g. `01`, `02`). -- Recording timestamps are retained for time-series analysis. They carry no - location or identity information and, combined only with pseudonymous codes, - present low re-identification risk; they can be shifted to relative session - time on request. +- Recording timestamps are retained for time-series analysis. To minimise the + residual re-identification risk of absolute appointment dates/times, run + [`scripts/deidentify_timestamps.py`](scripts/deidentify_timestamps.py) + (`--apply`) to shift each session to a relative origin (`2000-01-01`), + preserving within-session alignment while removing the wall-clock date/time. + The tool is dry-run by default. - If you believe any released field could re-identify a participant, please open an issue and it will be removed. diff --git a/DATA_LICENSE.md b/DATA_LICENSE.md new file mode 100644 index 0000000..bce8eed --- /dev/null +++ b/DATA_LICENSE.md @@ -0,0 +1,28 @@ +# Data license + +The repository's [`LICENSE`](LICENSE) (MIT) governs the **code** (notebooks, the +`mms/` package, scripts). MIT is a software license — it speaks of "the +Software" and grants rights to sell/sublicense — so it does not cleanly govern a +dataset. The **data** under [`data/`](data/) and the derived figures are +therefore released separately under: + +## Creative Commons Attribution 4.0 International (CC-BY-4.0) + +SPDX: `CC-BY-4.0` · Full text: https://creativecommons.org/licenses/by/4.0/legalcode + +You are free to share and adapt the data for any purpose, including +commercially, provided you give appropriate credit (cite via +[`CITATION.cff`](CITATION.cff)). + +### Additional condition — no re-identification + +Because this is pseudonymised **special-category health data** from human +participants (see [`DATA_ETHICS.md`](DATA_ETHICS.md)), one binding condition is +added on top of CC-BY-4.0: + +> You must **not** attempt to re-identify any participant, nor use the data to +> make decisions about any individual. Report suspected re-identification risks +> by opening an issue. + +This condition reflects the participants' consent terms and does not otherwise +restrict the CC-BY-4.0 grant. diff --git a/DATA_PROVENANCE.md b/DATA_PROVENANCE.md new file mode 100644 index 0000000..9e71e65 --- /dev/null +++ b/DATA_PROVENANCE.md @@ -0,0 +1,91 @@ +# Data Provenance & Reproducibility + +This document states, honestly, **what in this repository can be regenerated +from committed data and what cannot** — the question a reviewer or reuser asks +first. It also documents the raw→processed→summary pipeline and known data +issues. It complements [DATA_ETHICS.md](DATA_ETHICS.md) (consent, GDPR, +de-identification). + +## TL;DR reproducibility status + +| Layer | Regenerable from this repo? | How | +|-------|-----------------------------|-----| +| Headline reliability numbers (ICC) | ✅ Yes | `mms.stats.icc1` on `data/group_results/*.csv` — reproduces the README's 0.22 / 0.45 / 0.61 **and** adds the 95% CIs | +| Case-study participant's summary row (= **P02**) | ✅ Yes — HRV & pupil exactly, duration to ~2e-5 | `python pipeline/build_group_summaries.py` | +| Group summary rows for the other 9 participants | ❌ No | Their raw streams were not released (privacy) — see below | +| Case-study per-session figures (HR, HRV, fixation, clustering) | ✅ Yes | Run the `case-study/` notebooks (data present) | + +## The layers + +``` +data/case-study/raw/*.txt # sensor exports (semicolon-delimited), one participant + │ (parsing, column rename, derived fixation/duration columns) + ▼ +data/case-study/processed/*.csv # tidy per-session streams: hr_0N, ibi_0N, sed_fix_0N + │ (per-session summary statistics — see mms/) + ▼ +data/group_results/*.csv # one row per participant, one column per session +``` + +- **raw → processed**: the raw `.txt` files are semicolon-delimited and use + dotted names (`gazeDir.x`); the processed `.csv` files are comma-delimited. The + plain `sed_*.csv` streams keep raw's `gazeDir.{x,y,z}` names, while + `sed_fix_*.csv` renames them to `gaze_{x,y,z}` and adds derived `fixation`, + `fixation_id`, `duration`, and `gaze_diff` columns. Only the case-study + participant's raw files are present, so only that participant's processed layer + is regenerable end-to-end. +- **processed → summary**: `pipeline/build_group_summaries.py` computes SDNN, + pupil-diameter STD and response-duration STD per session. It reproduces the + committed **P02** HRV and pupil rows exactly (< 1e-6) and the response-duration + row to ~2e-5 — see the reconciliation in + `data/group_results/reconstructed/MANIFEST.json` (generated by the pipeline and + gitignored, so absent from a fresh clone until you run it). + +## Why only one participant is regenerable + +The case-study streams correspond to participant **P02** in the group tables. +This was verified, not assumed: the case-study IBI, pupil and duration data +reproduce the committed P02 row — HRV and pupil **exactly** (< 1e-6), duration to +~2e-5. The raw +streams for P01 and P03–P10 were **not released** — a deliberate, +privacy-legitimate minimisation choice (only pseudonymised summaries are shared; +see DATA_ETHICS.md). Consequently their summary rows are provided *as released +values* and cannot be recomputed from this repository. `build_group_summaries.py` +does **not** invent them. + +## Two recipes: original vs improved + +`build_group_summaries.py` reports both, so the choice is explicit: + +- **Original recipe** (reproduces the committed values): `ibi.std()` and + `pupil.std()` with **no artifact filtering**. This is faithful to how the + committed summaries were made, but it lets dropped beats and blink artifacts + inflate variance — e.g. P02's Session-2 pupil STD of **1.12** is an artifact + spike, ~2.3× the other sessions (more than double). +- **Improved recipe** (recommended going forward): `mms.hrv.sdnn` applies a + 300–2000 ms normal-to-normal filter; `mms.fixation.pupil_std` gates on the + `pupilQ` quality flag. These are more defensible and remove the S2 spike. + +## Known data-integrity issues + +- **P01 HRV SDNN, Session 02 == Session 03 (both 65.39).** Byte-identical, a + suspected copy-paste artifact; the archived technical report lists a different + P01 Session-3 value. Because P01's raw data is not in the repo, **the correct + value cannot be recovered here**, so it is *flagged and left unmodified* rather + than guessed. +- **P07 and P08 response-duration STD, Session 01 == 4.409281 (both).** Two + different participants share a byte-identical value to 15 decimals — a + cross-participant copy-paste artifact. Neither participant's raw data is in the + repo, so the true values cannot be recovered; both are flagged and left + unmodified. The data owner should restore them from the original source. + +`tests/test_data_integrity.py` fails loudly if any **new** duplicate — within a +participant or across participants — appears; the two known cases above are +allow-listed so CI stays green while regressions are caught. + +## `_modified` psychometric files + +`data/case-study/psychometric/*_modified.csv` drop the `Type` column, add a +parsed `datetime` column, and reformat timestamps relative to the originals. +They are analysis conveniences derived from the canonical +`Psychometric_Test_Results_0N.csv` files; the originals are authoritative. diff --git a/README.md b/README.md index f302ffe..a392865 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,15 @@ Longitudinal study where 10 adults completed standardized psychology tests acros ## Key findings -How stable are these patterns within a person across sessions? A test–retest reliability check (ICC(1), n = 10, 3 sessions) on the committed summaries gives ICC = 0.22 for HRV SDNN, 0.45 for pupil-dilation variability, and 0.61 for response-duration variability — poor for the physiological measures, moderate at best. So the data do **not** support a strong "stable individual traits" reading: with only 10 participants, these measures look closer to session-to-session fluctuation than to reliable traits. Any stability claim should be read as tentative and underpowered. +How stable are these patterns within a person across sessions? A test–retest reliability check (ICC(1), n = 10, 3 sessions) on the committed summaries gives: + +| Measure | ICC(1) | 95% CI | +|---------|:------:|:------:| +| HRV SDNN | 0.22 | **[−0.13, 0.66]** | +| Pupil-dilation variability | 0.45 | [0.07, 0.79] | +| Response-duration variability | 0.61 | [0.25, 0.87] | + +The confidence intervals are the real story: for HRV the interval **crosses zero**, meaning the data are equally consistent with negative and moderate reliability — i.e. essentially uninformative at n = 10. So the data do **not** support a strong "stable individual traits" reading; these measures look closer to session-to-session fluctuation than to reliable traits. Any stability claim should be read as tentative and underpowered. These numbers are fully reproducible — `mms.stats.icc1` recomputes them (point estimate and CI) from `data/group_results/`. ![Correlation matrix of HRV SDNN and Pupil Dilation STD across sessions](images/correlation_heatmap_with_values_final.png) @@ -63,6 +71,44 @@ How stable are these patterns within a person across sessions? A test–retest r |:---:|:---:| | ![PCA K-Means clusters](images/pca_kmeans_clusters.png) | ![Silhouette score vs number of clusters](images/silhouette_score.png) | +## Reproduce this analysis + +```bash +git clone https://github.com/urme-b/Multimodal-Multisensor +cd Multimodal-Multisensor + +python -m venv .venv && source .venv/bin/activate # Python >= 3.11 +pip install -e ".[dev,notebooks]" # deps + mms + tests + jupyterlab +# Byte-for-byte reproducible install instead (hashed lock): +# pip install -r requirements.lock && pip install -e . --no-deps + +# Regenerate the group-level summaries from committed data + reconciliation report +python pipeline/build_group_summaries.py + +# Reproduce the headline reliability numbers (ICC + 95% CIs) +python -c "import mms, pandas as pd; \ +m=mms.io.load_group_summary('HRV_SDNN')[['Session 01','Session 02','Session 03']].to_numpy(float); \ +print(mms.stats.icc1(m))" + +# Explore the notebooks +jupyter lab +``` + +**Suggested notebook order** (each folder is independent): +`case-study/preprocess_raw_to_csv → build_hrv → 1_hr / 1_hrv / 2_fixation → 3_clustering`, +then `group/group_analysis → group_correlation_matrix → group_correlation_heatmap`. + +Shared loaders and metrics live in the [`mms/`](mms/) package (`mms.io`, +`mms.hrv`, `mms.stats`, `mms.fixation`) so notebooks import tested code instead +of re-implementing it. Reproducibility scope and known data issues are documented +in **[DATA_PROVENANCE.md](DATA_PROVENANCE.md)**. + +## Reports & publications + +- [Multimodal Multisensor Technical Report.pdf](Multimodal%20Multisensor%20Technical%20Report.pdf) — methods and results write-up +- [Thesis Report.pdf](Thesis%20Report.pdf) — full thesis +- [CYPSY_Poster.pdf](CYPSY_Poster.pdf) — CyberPsychology conference poster + ## Tech Stack Python · Jupyter · pandas · NumPy · SciPy · Matplotlib · Seaborn · scikit-learn @@ -83,4 +129,5 @@ This repository contains human-subjects data (psychometric responses and physiol ## License -[MIT](LICENSE) +- **Code** (notebooks, `mms/`, scripts) — [MIT](LICENSE) +- **Data** (`data/`) and figures — [CC-BY-4.0 with a no-re-identification term](DATA_LICENSE.md) (special-category health data) diff --git a/case-study/1_HR.ipynb b/case-study/1_HR.ipynb deleted file mode 100755 index fd5e8ee..0000000 --- a/case-study/1_HR.ipynb +++ /dev/null @@ -1,119 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "5dedc8fa-9ef7-452a-a113-f791ecaf5b7d", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": "import pandas as pd\nfrom scipy.stats import ttest_ind\n\nDATA = '../data/case-study/processed'\nPSY = '../data/case-study/psychometric'\n\n# load data\nhr_bl01 = pd.read_csv(f'{DATA}/hr.csv')\nhr_tk01 = pd.read_csv(f'{DATA}/hr_01.csv')\n\n# high confidence only\nbaseline_heart_rate = hr_bl01[hr_bl01['confidence'] == 1.0]['heart_rate']\ntest_heart_rate = hr_tk01[hr_tk01['confidence'] == 1.0]['heart_rate']\n\n# calculate averages\navg_hr_baseline = baseline_heart_rate.mean()\navg_hr_test = test_heart_rate.mean()\n\n# Welch's t-test\nt_stat, p_value = ttest_ind(baseline_heart_rate, test_heart_rate, equal_var=False)\n\n# percentage increase\npercentage_increase = ((avg_hr_test - avg_hr_baseline) / avg_hr_baseline) * 100\n\nresults = {\n 'Average Heart Rate - Baseline': avg_hr_baseline,\n 'Average Heart Rate - Test': avg_hr_test,\n \"Welch's T-Test Statistic\": t_stat,\n \"Welch's T-Test P-Value\": p_value,\n 'Percentage Increase in Heart Rate': percentage_increase\n}\n\nresults" - }, - { - "cell_type": "code", - "id": "jb1vxoauez9", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\n\nDATA = '../data/case-study/processed'\n\n# load and filter\nhr_baseline = pd.read_csv(f'{DATA}/hr.csv')\nhr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\nhr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n\nbaseline = hr_baseline[hr_baseline['confidence'] == 1.0]['heart_rate']\ntest_01 = hr_01[hr_01['confidence'] == 1.0]['heart_rate']\ntest_02 = hr_02[hr_02['confidence'] == 1.0]['heart_rate']\ntest_03 = hr_03[hr_03['confidence'] == 1.0]['heart_rate']\n\nsessions = {'Baseline': baseline, 'Session 01': test_01, 'Session 02': test_02, 'Session 03': test_03}\n\n# normality tests\nprint(\"=== Shapiro-Wilk Normality Tests ===\\n\")\nfor name, data in sessions.items():\n sample = data.sample(min(5000, len(data)), random_state=42)\n stat, p = stats.shapiro(sample)\n normal = \"normal\" if p > 0.05 else \"non-normal\"\n print(f\"{name}: W={stat:.4f}, p={p:.4f} ({normal}), n={len(data)}\")\n\n# Cohen's d\ndef cohens_d(x, y):\n nx, ny = len(x), len(y)\n pooled = np.sqrt(((nx-1)*x.std()**2 + (ny-1)*y.std()**2) / (nx+ny-2))\n return (x.mean() - y.mean()) / pooled if pooled > 0 else 0.0\n\n# paired comparisons vs baseline\nprint(\"\\n=== Baseline vs Session Comparisons ===\\n\")\nfor name, data in list(sessions.items())[1:]:\n t_stat, p_val = stats.ttest_ind(baseline, data, equal_var=False)\n d = cohens_d(data, baseline)\n size = \"large\" if abs(d) >= 0.8 else \"medium\" if abs(d) >= 0.5 else \"small\"\n\n # 95% CI on mean difference\n diff = data.mean() - baseline.mean()\n se = np.sqrt(data.std()**2/len(data) + baseline.std()**2/len(baseline))\n ci = (diff - 1.96*se, diff + 1.96*se)\n\n print(f\"{name} vs Baseline:\")\n print(f\" Mean diff: {diff:.2f} BPM, 95% CI: [{ci[0]:.2f}, {ci[1]:.2f}]\")\n print(f\" Welch's t={t_stat:.3f}, p={p_val:.4f}\")\n print(f\" Cohen's d={d:.3f} ({size})\")\n print()", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8bc574ff-4b76-4d83-960e-4483ccb832ee", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "\n", - "DATA = '../data/case-study/processed'\n", - "PSY = '../data/case-study/psychometric'\n", - "\n", - "sessions = [1, 2, 3]\n", - "hr_data = {}\n", - "psychometric = {}\n", - "\n", - "for s in sessions:\n", - " hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n", - " hr = hr[hr['confidence'] == 1.0]\n", - " hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " hr_data[s] = hr.sort_values('datetime')\n", - "\n", - " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n", - " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " psychometric[s] = psy\n", - "\n", - "question_types = ['HADS', 'STAI-T', 'STAI-S', 'BFI', 'FQ']\n", - "\n", - "def process_and_plot(type_key):\n", - " plt.figure(figsize=(14, 7))\n", - "\n", - " for s in sessions:\n", - " data = psychometric[s][psychometric[s]['Type'] == type_key].reset_index(drop=True).copy()\n", - " hr = hr_data[s]\n", - "\n", - " # interval average, not point estimate\n", - " data['heart_rate'] = [\n", - " hr.loc[\n", - " (hr['datetime'] >= row['Question Start Time']) &\n", - " (hr['datetime'] <= row['Question Answer Time']),\n", - " 'heart_rate'\n", - " ].mean()\n", - " for _, row in data.iterrows()\n", - " ]\n", - "\n", - " data['Question Number'] = data['Test'].str.extract(r'(\\d+)')[0].fillna(0).astype(int)\n", - " data['Time Difference'] = (data['Question Start Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", - "\n", - " plt.plot(data['Time Difference'], data['heart_rate'], label=f'HR - {type_key} Session {s}', marker='o')\n", - " for i in range(len(data)):\n", - " plt.annotate(int(data['Question Number'].iloc[i]),\n", - " (data['Time Difference'].iloc[i], data['heart_rate'].iloc[i]))\n", - "\n", - " plt.title(f'Heart Rate During {type_key} Questions')\n", - " plt.xlabel('Time Difference (seconds)')\n", - " plt.ylabel('Heart Rate')\n", - " plt.legend()\n", - " plt.grid(True)\n", - " plt.tight_layout()\n", - " plt.show()\n", - " plt.close()\n", - "\n", - "for q_type in question_types:\n", - " process_and_plot(q_type)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ccad6578-f176-4df1-9a55-4b5c4c85f839", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\n\nDATA = '../data/case-study/processed'\nPSY = '../data/case-study/psychometric'\n\ncategories = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n\nfor session_num in [1, 2, 3]:\n hr_data = pd.read_csv(f'{DATA}/hr_{session_num:02d}.csv', delimiter=',')\n hr_data = hr_data[hr_data['confidence'] == 1.0]\n hr_data['datetime'] = pd.to_datetime(hr_data['datetime'], format='%Y/%m/%d %H:%M:%S.%f', utc=True, errors='coerce').dt.tz_convert(None)\n\n psychometric_data = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{session_num:02d}.csv')\n \n for category_name, expected_questions in categories.items():\n category_data = psychometric_data[psychometric_data['Type'] == category_name].copy()\n category_data['Question Start Time'] = pd.to_datetime(category_data['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n category_data['Question Answer Time'] = pd.to_datetime(category_data['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\n # accumulate segments\n segments = []\n question_times = []\n\n for _, row in category_data.iterrows():\n start_time = row['Question Start Time']\n end_time = row['Question Answer Time']\n mask = (hr_data['datetime'] >= start_time) & (hr_data['datetime'] <= end_time)\n seg = hr_data.loc[mask]\n if not seg.empty:\n segments.append(seg)\n question_times.append(end_time)\n\n category_hr_data = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n\n if len(question_times) != expected_questions:\n print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n\n category_hr_data = category_hr_data.sort_values(by='datetime').reset_index(drop=True)\n\n window_size = 10\n category_hr_data['smoothed_heart_rate'] = category_hr_data['heart_rate'].rolling(window=window_size).mean()\n\n plt.figure(figsize=(12, 6))\n plt.plot(category_hr_data['datetime'], category_hr_data['smoothed_heart_rate'], label='Heart Rate', color='b')\n\n for i, time in enumerate(question_times, start=1):\n nearest_idx = category_hr_data['datetime'].searchsorted(time)\n if nearest_idx < len(category_hr_data):\n hr_at_time = category_hr_data.iloc[nearest_idx]['smoothed_heart_rate']\n plt.scatter(time, hr_at_time, color='red')\n plt.text(time, hr_at_time + 1, f'Q{i}', rotation=45, ha='right')\n else:\n plt.axvline(x=time, color='red', linestyle='--', alpha=0.5)\n plt.text(time, category_hr_data['smoothed_heart_rate'].max(), f'Q{i}', rotation=45, ha='right')\n\n plt.xlabel('Time')\n plt.ylabel('Heart Rate (bpm)')\n plt.title(f'Heart Rate Changes During {category_name} (Session {session_num})')\n plt.xticks(rotation=45)\n plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n plt.legend()\n plt.grid(True)\n plt.tight_layout()\n plt.show()\n plt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/1_HRV.ipynb b/case-study/1_HRV.ipynb deleted file mode 100755 index 524b643..0000000 --- a/case-study/1_HRV.ipynb +++ /dev/null @@ -1,125 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "4b8c48d9-d2ea-4f9e-b01c-dc3cc8361f57", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "\n", - "DATA = '../data/case-study/processed'\n", - "PSY = '../data/case-study/psychometric'\n", - "\n", - "sessions = [1, 2, 3]\n", - "colors = ['b', 'g', 'r']\n", - "question_type = 'HADS'\n", - "\n", - "# load all sessions\n", - "hrv_data = {}\n", - "psy_data = {}\n", - "\n", - "for s in sessions:\n", - " hrv = pd.read_csv(f'{DATA}/hrv_{s:02d}.csv')\n", - " hrv['datetime'] = pd.to_datetime(hrv['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " hrv_data[s] = hrv.sort_values('datetime')\n", - "\n", - " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n", - " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", - " psy_data[s] = psy\n", - "\n", - "# interval average HRV per question\n", - "session_merged = {}\n", - "for s in sessions:\n", - " data = psy_data[s][psy_data[s]['Type'] == question_type].reset_index(drop=True).copy()\n", - " hrv = hrv_data[s]\n", - "\n", - " # interval average, not point estimate\n", - " for metric in ['sdnn', 'rmssd']:\n", - " data[metric] = [\n", - " hrv.loc[\n", - " (hrv['datetime'] >= row['Question Start Time']) &\n", - " (hrv['datetime'] <= row['Question Answer Time']),\n", - " metric\n", - " ].mean()\n", - " for _, row in data.iterrows()\n", - " ]\n", - "\n", - " data['Question Number'] = data['Test'].str.extract(r'(\\d+)').astype(int)\n", - " data['Start Time Difference'] = (data['Question Start Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", - " data['Answer Time Difference'] = (data['Question Answer Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", - " session_merged[s] = data\n", - "\n", - "# plot SDNN\n", - "plt.figure(figsize=(14, 7))\n", - "for s, color in zip(sessions, colors):\n", - " m = session_merged[s]\n", - " plt.plot(m['Start Time Difference'], m['sdnn'], label=f'SDNN - {question_type} Session {s}', marker='o', color=color)\n", - " plt.plot(m['Answer Time Difference'], m['sdnn'], linestyle='--', marker='x', color=color)\n", - " for i in range(len(m)):\n", - " plt.annotate(m['Question Number'].iloc[i].item(), (m['Start Time Difference'].iloc[i], m['sdnn'].iloc[i]))\n", - "\n", - "plt.title(f'SDNN During {question_type} Questions')\n", - "plt.xlabel('Time Difference (seconds)')\n", - "plt.ylabel('SDNN (ms)')\n", - "plt.legend()\n", - "plt.grid(True)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "plt.close()\n", - "\n", - "# plot RMSSD\n", - "plt.figure(figsize=(14, 7))\n", - "for s, color in zip(sessions, colors):\n", - " m = session_merged[s]\n", - " plt.plot(m['Start Time Difference'], m['rmssd'], label=f'RMSSD - {question_type} Session {s}', marker='o', color=color)\n", - " plt.plot(m['Answer Time Difference'], m['rmssd'], linestyle='--', marker='x', color=color)\n", - " for i in range(len(m)):\n", - " plt.annotate(m['Question Number'].iloc[i].item(), (m['Start Time Difference'].iloc[i], m['rmssd'].iloc[i]))\n", - "\n", - "plt.title(f'RMSSD During {question_type} Questions')\n", - "plt.xlabel('Time Difference (seconds)')\n", - "plt.ylabel('RMSSD (ms)')\n", - "plt.legend()\n", - "plt.grid(True)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "plt.close()" - ] - }, - { - "cell_type": "code", - "id": "dbljkaqu2e8", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy.signal import lombscargle\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\n# load IBI data\nibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\nibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\nibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\nibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n\ndef frequency_hrv(ibi_values):\n # artifact rejection\n ibi = ibi_values[(ibi_values > 300) & (ibi_values < 2000)].values\n if len(ibi) < 10:\n return None\n \n # cumulative time axis\n t = np.cumsum(ibi) / 1000.0\n t = t - t[0]\n \n # detrend\n nn = ibi - np.mean(ibi)\n \n # frequency range\n freqs = np.linspace(0.01, 0.5, 500)\n angular_freqs = 2 * np.pi * freqs\n \n # Lomb-Scargle PSD\n psd = lombscargle(t, nn, angular_freqs, normalize=False)\n psd = psd / len(nn)\n \n # frequency bands\n vlf_mask = (freqs >= 0.003) & (freqs < 0.04)\n lf_mask = (freqs >= 0.04) & (freqs < 0.15)\n hf_mask = (freqs >= 0.15) & (freqs < 0.4)\n \n vlf_power = np.trapezoid(psd[vlf_mask], freqs[vlf_mask])\n lf_power = np.trapezoid(psd[lf_mask], freqs[lf_mask])\n hf_power = np.trapezoid(psd[hf_mask], freqs[hf_mask])\n total_power = vlf_power + lf_power + hf_power\n lf_hf_ratio = lf_power / hf_power if hf_power > 0 else np.nan\n \n return {\n 'VLF': vlf_power, 'LF': lf_power, 'HF': hf_power,\n 'Total': total_power, 'LF/HF': lf_hf_ratio,\n 'LF%': lf_power / total_power * 100 if total_power > 0 else 0,\n 'HF%': hf_power / total_power * 100 if total_power > 0 else 0,\n 'freqs': freqs, 'psd': psd\n }\n\nsessions = {\n 'Baseline': ibi_baseline,\n 'Session 01': ibi_01,\n 'Session 02': ibi_02,\n 'Session 03': ibi_03\n}\n\n# compute frequency HRV\nresults = {}\nfor name, df in sessions.items():\n r = frequency_hrv(df['ibi'].dropna())\n if r:\n results[name] = r\n\n# summary table\nprint(\"=== Frequency-Domain HRV ===\\n\")\nprint(f\"{'Session':<14} {'VLF':>8} {'LF':>10} {'HF':>10} {'LF/HF':>8} {'LF%':>6} {'HF%':>6}\")\nfor name, r in results.items():\n print(f\"{name:<14} {r['VLF']:>8.1f} {r['LF']:>10.1f} {r['HF']:>10.1f} {r['LF/HF']:>8.2f} {r['LF%']:>5.1f}% {r['HF%']:>5.1f}%\")\n\n# clinical interpretation\nprint(\"\\n=== Clinical Interpretation ===\\n\")\nprint(\"LF/HF > 2.0 = sympathetic dominance (stress/anxiety)\")\nprint(\"LF/HF < 0.5 = parasympathetic dominance (relaxation)\")\nprint(\"LF/HF 0.5-2.0 = balanced autonomic tone\\n\")\nfor name, r in results.items():\n ratio = r['LF/HF']\n state = \"sympathetic dominant\" if ratio > 2.0 else \"parasympathetic dominant\" if ratio < 0.5 else \"balanced\"\n print(f\"{name}: LF/HF={ratio:.2f} -> {state}\")\n\n# PSD plot\nfig, axes = plt.subplots(2, 2, figsize=(14, 10))\ncolors = {'Baseline': 'gray', 'Session 01': 'tab:blue', 'Session 02': 'tab:orange', 'Session 03': 'tab:green'}\n\nfor ax, (name, r) in zip(axes.flat, results.items()):\n freqs, psd = r['freqs'], r['psd']\n ax.plot(freqs, psd, color=colors.get(name, 'black'), linewidth=0.8)\n ax.fill_between(freqs, psd, where=(freqs >= 0.04) & (freqs < 0.15), alpha=0.3, color='red', label='LF')\n ax.fill_between(freqs, psd, where=(freqs >= 0.15) & (freqs < 0.4), alpha=0.3, color='blue', label='HF')\n ax.set_title(f'{name} (LF/HF={r[\"LF/HF\"]:.2f})')\n ax.set_xlabel('Frequency (Hz)')\n ax.set_ylabel('PSD (ms²/Hz)')\n ax.legend(fontsize=8)\n ax.set_xlim(0, 0.5)\n\nplt.suptitle('Frequency-Domain HRV: Power Spectral Density')\nplt.tight_layout()\nplt.show()\nplt.close()\n\n# LF/HF bar chart\nfig, ax = plt.subplots(figsize=(8, 5))\nnames = list(results.keys())\nratios = [results[n]['LF/HF'] for n in names]\nbars = ax.bar(names, ratios, color=[colors[n] for n in names])\nax.axhline(2.0, color='red', linestyle='--', alpha=0.7, label='Stress threshold')\nax.axhline(0.5, color='green', linestyle='--', alpha=0.7, label='Relaxation threshold')\nax.set_ylabel('LF/HF Ratio')\nax.set_title('Sympathovagal Balance Across Sessions')\nax.legend()\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/1_SD HR.ipynb b/case-study/1_SD HR.ipynb deleted file mode 100755 index d2362f3..0000000 --- a/case-study/1_SD HR.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "4065e5d8-1fad-4496-aba0-086d4ccad315", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/case-study/processed'\n\n# load both tests\nhr_psychometric = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_baseline = pd.read_csv(f'{DATA}/hr.csv')\n\n# filter high confidence\nhr_psychometric_high_conf = hr_psychometric[hr_psychometric['confidence'] == 1.0]\nhr_baseline_high_conf = hr_baseline[hr_baseline['confidence'] == 1.0]\n\n# overall avg + std\noverall_avg_hr_psychometric = hr_psychometric_high_conf['heart_rate'].mean()\noverall_sd_hr_psychometric = hr_psychometric_high_conf['heart_rate'].std()\n\noverall_avg_hr_baseline = hr_baseline_high_conf['heart_rate'].mean()\noverall_sd_hr_baseline = hr_baseline_high_conf['heart_rate'].std()\n\n# create table\ncombined_stats_df = pd.DataFrame({\n 'Test': ['Psychometric Test', 'Baseline Test'],\n 'Average HR': [overall_avg_hr_psychometric, overall_avg_hr_baseline],\n 'Standard Deviation HR': [overall_sd_hr_psychometric, overall_sd_hr_baseline]\n})\n\nprint(combined_stats_df)" - }, - { - "cell_type": "code", - "id": "lbi1cj1ij4", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\n\nDATA = '../data/case-study/processed'\n\n# load all sessions\nhr_baseline = pd.read_csv(f'{DATA}/hr.csv')\nhr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\nhr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n\nsessions = {\n 'Baseline': hr_baseline[hr_baseline['confidence'] == 1.0]['heart_rate'],\n 'Session 01': hr_01[hr_01['confidence'] == 1.0]['heart_rate'],\n 'Session 02': hr_02[hr_02['confidence'] == 1.0]['heart_rate'],\n 'Session 03': hr_03[hr_03['confidence'] == 1.0]['heart_rate']\n}\n\n# descriptive stats\nstats_table = pd.DataFrame({\n name: {\n 'N': len(data),\n 'Mean': data.mean(),\n 'SD': data.std(),\n 'Median': data.median(),\n 'IQR': data.quantile(0.75) - data.quantile(0.25),\n 'Min': data.min(),\n 'Max': data.max()\n }\n for name, data in sessions.items()\n}).T.round(2)\n\nprint(\"=== Descriptive Statistics ===\\n\")\nprint(stats_table.to_string())\n\n# Kruskal-Wallis test\nprint(\"\\n=== Kruskal-Wallis Test (all sessions) ===\\n\")\nh_stat, p_val = stats.kruskal(*sessions.values())\nprint(f\"H={h_stat:.3f}, p={p_val:.4f}\")\n\n# pairwise Mann-Whitney U\nprint(\"\\n=== Pairwise Mann-Whitney U Tests ===\\n\")\nnames = list(sessions.keys())\nfrom itertools import combinations\np_vals = []\npair_labels = []\nfor i, j in combinations(range(len(names)), 2):\n u_stat, p = stats.mannwhitneyu(sessions[names[i]], sessions[names[j]], alternative='two-sided')\n p_vals.append(p)\n pair_labels.append(f\"{names[i]} vs {names[j]}\")\n\n# Holm correction\nsorted_idx = np.argsort(p_vals)\ncorrected = np.zeros(len(p_vals))\nm = len(p_vals)\nfor rank, idx in enumerate(sorted_idx):\n corrected[idx] = min(p_vals[idx] * (m - rank), 1.0)\n\nfor k in range(len(pair_labels)):\n sig = \"*\" if corrected[k] < 0.05 else \"ns\"\n print(f\" {pair_labels[k]}: U p={p_vals[k]:.4f}, corrected={corrected[k]:.4f} {sig}\")", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/1_hr.ipynb b/case-study/1_hr.ipynb new file mode 100755 index 0000000..6da4e10 --- /dev/null +++ b/case-study/1_hr.ipynb @@ -0,0 +1,318 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "81125625", + "metadata": { + "mms_tag": "hr_caveat" + }, + "source": [ + "## ⚠️ Read before interpreting the t-tests below\n", + "\n", + "This notebook analyses **one participant**. The per-second heart-rate samples within a session are strongly autocorrelated and are **not independent observations**, so a Welch t-test over the raw sample arrays treats (say) 3,000 correlated samples as 3,000 independent data points and manufactures extreme p-values. Those p-values are **descriptive of this session only** — they do not generalise to a population. The cell at the end aggregates to **one mean HR per question** before comparing, which is the honest unit of analysis here; even then, with a single subject this characterises, it does not test a population hypothesis." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5dedc8fa-9ef7-452a-a113-f791ecaf5b7d", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from scipy.stats import ttest_ind\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "PSY = '../data/case-study/psychometric'\n", + "\n", + "# load data\n", + "hr_bl01 = pd.read_csv(f'{DATA}/hr.csv')\n", + "hr_tk01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "\n", + "# high confidence only\n", + "baseline_heart_rate = hr_bl01[hr_bl01['confidence'] == 1.0]['heart_rate']\n", + "test_heart_rate = hr_tk01[hr_tk01['confidence'] == 1.0]['heart_rate']\n", + "\n", + "# calculate averages\n", + "avg_hr_baseline = baseline_heart_rate.mean()\n", + "avg_hr_test = test_heart_rate.mean()\n", + "\n", + "# Welch's t-test\n", + "t_stat, p_value = ttest_ind(baseline_heart_rate, test_heart_rate, equal_var=False)\n", + "\n", + "# percentage increase\n", + "percentage_increase = ((avg_hr_test - avg_hr_baseline) / avg_hr_baseline) * 100\n", + "\n", + "results = {\n", + " 'Average Heart Rate - Baseline': avg_hr_baseline,\n", + " 'Average Heart Rate - Test': avg_hr_test,\n", + " \"Welch's T-Test Statistic\": t_stat,\n", + " \"Welch's T-Test P-Value\": p_value,\n", + " 'Percentage Increase in Heart Rate': percentage_increase\n", + "}\n", + "\n", + "results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "jb1vxoauez9", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load and filter\n", + "hr_baseline = pd.read_csv(f'{DATA}/hr.csv')\n", + "hr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\n", + "hr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n", + "\n", + "baseline = hr_baseline[hr_baseline['confidence'] == 1.0]['heart_rate']\n", + "test_01 = hr_01[hr_01['confidence'] == 1.0]['heart_rate']\n", + "test_02 = hr_02[hr_02['confidence'] == 1.0]['heart_rate']\n", + "test_03 = hr_03[hr_03['confidence'] == 1.0]['heart_rate']\n", + "\n", + "sessions = {'Baseline': baseline, 'Session 01': test_01, 'Session 02': test_02, 'Session 03': test_03}\n", + "\n", + "# normality tests\n", + "print(\"=== Shapiro-Wilk Normality Tests ===\\n\")\n", + "for name, data in sessions.items():\n", + " sample = data.sample(min(5000, len(data)), random_state=42)\n", + " stat, p = stats.shapiro(sample)\n", + " normal = \"normal\" if p > 0.05 else \"non-normal\"\n", + " print(f\"{name}: W={stat:.4f}, p={p:.4f} ({normal}), n={len(data)}\")\n", + "\n", + "# Cohen's d\n", + "def cohens_d(x, y):\n", + " nx, ny = len(x), len(y)\n", + " pooled = np.sqrt(((nx-1)*x.std()**2 + (ny-1)*y.std()**2) / (nx+ny-2))\n", + " return (x.mean() - y.mean()) / pooled if pooled > 0 else 0.0\n", + "\n", + "# paired comparisons vs baseline\n", + "print(\"\\n=== Baseline vs Session Comparisons ===\\n\")\n", + "for name, data in list(sessions.items())[1:]:\n", + " t_stat, p_val = stats.ttest_ind(baseline, data, equal_var=False)\n", + " d = cohens_d(data, baseline)\n", + " size = \"large\" if abs(d) >= 0.8 else \"medium\" if abs(d) >= 0.5 else \"small\"\n", + "\n", + " # 95% CI on mean difference\n", + " diff = data.mean() - baseline.mean()\n", + " se = np.sqrt(data.std()**2/len(data) + baseline.std()**2/len(baseline))\n", + " ci = (diff - 1.96*se, diff + 1.96*se)\n", + "\n", + " print(f\"{name} vs Baseline:\")\n", + " print(f\" Mean diff: {diff:.2f} BPM, 95% CI: [{ci[0]:.2f}, {ci[1]:.2f}]\")\n", + " print(f\" Welch's t={t_stat:.3f}, p={p_val:.4f}\")\n", + " print(f\" Cohen's d={d:.3f} ({size})\")\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bc574ff-4b76-4d83-960e-4483ccb832ee", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "PSY = '../data/case-study/psychometric'\n", + "\n", + "sessions = [1, 2, 3]\n", + "hr_data = {}\n", + "psychometric = {}\n", + "\n", + "for s in sessions:\n", + " hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n", + " hr = hr[hr['confidence'] == 1.0]\n", + " hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " hr_data[s] = hr.sort_values('datetime')\n", + "\n", + " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n", + " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psychometric[s] = psy\n", + "\n", + "question_types = ['HADS', 'STAI-T', 'STAI-S', 'BFI', 'FQ']\n", + "\n", + "def process_and_plot(type_key):\n", + " plt.figure(figsize=(14, 7))\n", + "\n", + " for s in sessions:\n", + " data = psychometric[s][psychometric[s]['Type'] == type_key].reset_index(drop=True).copy()\n", + " hr = hr_data[s]\n", + "\n", + " # interval average, not point estimate\n", + " data['heart_rate'] = [\n", + " hr.loc[\n", + " (hr['datetime'] >= row['Question Start Time']) &\n", + " (hr['datetime'] <= row['Question Answer Time']),\n", + " 'heart_rate'\n", + " ].mean()\n", + " for _, row in data.iterrows()\n", + " ]\n", + "\n", + " data['Question Number'] = data['Test'].str.extract(r'(\\d+)')[0].fillna(0).astype(int)\n", + " data['Time Difference'] = (data['Question Start Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", + "\n", + " plt.plot(data['Time Difference'], data['heart_rate'], label=f'HR - {type_key} Session {s}', marker='o')\n", + " for i in range(len(data)):\n", + " plt.annotate(int(data['Question Number'].iloc[i]),\n", + " (data['Time Difference'].iloc[i], data['heart_rate'].iloc[i]))\n", + "\n", + " plt.title(f'Heart Rate During {type_key} Questions')\n", + " plt.xlabel('Time Difference (seconds)')\n", + " plt.ylabel('Heart Rate')\n", + " plt.legend()\n", + " plt.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " plt.close()\n", + "\n", + "for q_type in question_types:\n", + " process_and_plot(q_type)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccad6578-f176-4df1-9a55-4b5c4c85f839", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "PSY = '../data/case-study/psychometric'\n", + "\n", + "categories = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n", + "\n", + "for session_num in [1, 2, 3]:\n", + " hr_data = pd.read_csv(f'{DATA}/hr_{session_num:02d}.csv', delimiter=',')\n", + " hr_data = hr_data[hr_data['confidence'] == 1.0]\n", + " hr_data['datetime'] = pd.to_datetime(hr_data['datetime'], format='%Y/%m/%d %H:%M:%S.%f', utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + " psychometric_data = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{session_num:02d}.csv')\n", + " \n", + " for category_name, expected_questions in categories.items():\n", + " category_data = psychometric_data[psychometric_data['Type'] == category_name].copy()\n", + " category_data['Question Start Time'] = pd.to_datetime(category_data['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " category_data['Question Answer Time'] = pd.to_datetime(category_data['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + " # accumulate segments\n", + " segments = []\n", + " question_times = []\n", + "\n", + " for _, row in category_data.iterrows():\n", + " start_time = row['Question Start Time']\n", + " end_time = row['Question Answer Time']\n", + " mask = (hr_data['datetime'] >= start_time) & (hr_data['datetime'] <= end_time)\n", + " seg = hr_data.loc[mask]\n", + " if not seg.empty:\n", + " segments.append(seg)\n", + " question_times.append(end_time)\n", + "\n", + " category_hr_data = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n", + "\n", + " if len(question_times) != expected_questions:\n", + " print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n", + "\n", + " category_hr_data = category_hr_data.sort_values(by='datetime').reset_index(drop=True)\n", + "\n", + " window_size = 10\n", + " category_hr_data['smoothed_heart_rate'] = category_hr_data['heart_rate'].rolling(window=window_size).mean()\n", + "\n", + " plt.figure(figsize=(12, 6))\n", + " plt.plot(category_hr_data['datetime'], category_hr_data['smoothed_heart_rate'], label='Heart Rate', color='b')\n", + "\n", + " for i, time in enumerate(question_times, start=1):\n", + " nearest_idx = category_hr_data['datetime'].searchsorted(time)\n", + " if nearest_idx < len(category_hr_data):\n", + " hr_at_time = category_hr_data.iloc[nearest_idx]['smoothed_heart_rate']\n", + " plt.scatter(time, hr_at_time, color='red')\n", + " plt.text(time, hr_at_time + 1, f'Q{i}', rotation=45, ha='right')\n", + " else:\n", + " plt.axvline(x=time, color='red', linestyle='--', alpha=0.5)\n", + " plt.text(time, category_hr_data['smoothed_heart_rate'].max(), f'Q{i}', rotation=45, ha='right')\n", + "\n", + " plt.xlabel('Time')\n", + " plt.ylabel('Heart Rate (bpm)')\n", + " plt.title(f'Heart Rate Changes During {category_name} (Session {session_num})')\n", + " plt.xticks(rotation=45)\n", + " plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n", + " plt.legend()\n", + " plt.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36ababa8", + "metadata": { + "mms_tag": "hr_agg" + }, + "outputs": [], + "source": [ + "import sys, pathlib\n", + "sys.path.insert(0, str(pathlib.Path.cwd().parent)) # repo root -> import mms\n", + "import mms\n", + "import pandas as pd\n", + "\n", + "# Epoch-honest comparison: reduce each question to a single mean HR,\n", + "# so the test is over ~tens of questions, not thousands of samples.\n", + "rows = []\n", + "for s in (1, 2, 3):\n", + " hr = mms.io.load_hr(s)\n", + " hr['datetime'] = mms.io.parse_datetime(hr['datetime'])\n", + " psy = mms.io.load_psychometric(s)\n", + " psy['start'] = mms.io.parse_datetime(psy['Question Start Time'])\n", + " psy['end'] = mms.io.parse_datetime(psy['Question Answer Time'])\n", + " for _, q in psy.iterrows():\n", + " seg = hr.loc[(hr['datetime'] >= q['start']) & (hr['datetime'] <= q['end']), 'heart_rate']\n", + " if len(seg):\n", + " rows.append({'session': s, 'type': q.get('Type'), 'mean_hr': seg.mean()})\n", + "\n", + "per_q = pd.DataFrame(rows)\n", + "print(f'Aggregated to {len(per_q)} question-level mean-HR values '\n", + " f'(vs thousands of raw samples).')\n", + "print(per_q.groupby('session')['mean_hr'].agg(['count', 'mean', 'std']).round(2))\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/1_hr_sd.ipynb b/case-study/1_hr_sd.ipynb new file mode 100755 index 0000000..1fd4d6c --- /dev/null +++ b/case-study/1_hr_sd.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0e47b352", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# 1 Hr Sd\n", + "\n", + "Heart-rate mean and standard deviation, baseline vs test session.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4065e5d8-1fad-4496-aba0-086d4ccad315", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load both tests\n", + "hr_psychometric = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_baseline = pd.read_csv(f'{DATA}/hr.csv')\n", + "\n", + "# filter high confidence\n", + "hr_psychometric_high_conf = hr_psychometric[hr_psychometric['confidence'] == 1.0]\n", + "hr_baseline_high_conf = hr_baseline[hr_baseline['confidence'] == 1.0]\n", + "\n", + "# overall avg + std\n", + "overall_avg_hr_psychometric = hr_psychometric_high_conf['heart_rate'].mean()\n", + "overall_sd_hr_psychometric = hr_psychometric_high_conf['heart_rate'].std()\n", + "\n", + "overall_avg_hr_baseline = hr_baseline_high_conf['heart_rate'].mean()\n", + "overall_sd_hr_baseline = hr_baseline_high_conf['heart_rate'].std()\n", + "\n", + "# create table\n", + "combined_stats_df = pd.DataFrame({\n", + " 'Test': ['Psychometric Test', 'Baseline Test'],\n", + " 'Average HR': [overall_avg_hr_psychometric, overall_avg_hr_baseline],\n", + " 'Standard Deviation HR': [overall_sd_hr_psychometric, overall_sd_hr_baseline]\n", + "})\n", + "\n", + "print(combined_stats_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "lbi1cj1ij4", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load all sessions\n", + "hr_baseline = pd.read_csv(f'{DATA}/hr.csv')\n", + "hr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\n", + "hr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n", + "\n", + "sessions = {\n", + " 'Baseline': hr_baseline[hr_baseline['confidence'] == 1.0]['heart_rate'],\n", + " 'Session 01': hr_01[hr_01['confidence'] == 1.0]['heart_rate'],\n", + " 'Session 02': hr_02[hr_02['confidence'] == 1.0]['heart_rate'],\n", + " 'Session 03': hr_03[hr_03['confidence'] == 1.0]['heart_rate']\n", + "}\n", + "\n", + "# descriptive stats\n", + "stats_table = pd.DataFrame({\n", + " name: {\n", + " 'N': len(data),\n", + " 'Mean': data.mean(),\n", + " 'SD': data.std(),\n", + " 'Median': data.median(),\n", + " 'IQR': data.quantile(0.75) - data.quantile(0.25),\n", + " 'Min': data.min(),\n", + " 'Max': data.max()\n", + " }\n", + " for name, data in sessions.items()\n", + "}).T.round(2)\n", + "\n", + "print(\"=== Descriptive Statistics ===\\n\")\n", + "print(stats_table.to_string())\n", + "\n", + "# Kruskal-Wallis test\n", + "print(\"\\n=== Kruskal-Wallis Test (all sessions) ===\\n\")\n", + "h_stat, p_val = stats.kruskal(*sessions.values())\n", + "print(f\"H={h_stat:.3f}, p={p_val:.4f}\")\n", + "\n", + "# pairwise Mann-Whitney U\n", + "print(\"\\n=== Pairwise Mann-Whitney U Tests ===\\n\")\n", + "names = list(sessions.keys())\n", + "from itertools import combinations\n", + "p_vals = []\n", + "pair_labels = []\n", + "for i, j in combinations(range(len(names)), 2):\n", + " u_stat, p = stats.mannwhitneyu(sessions[names[i]], sessions[names[j]], alternative='two-sided')\n", + " p_vals.append(p)\n", + " pair_labels.append(f\"{names[i]} vs {names[j]}\")\n", + "\n", + "# Holm correction\n", + "sorted_idx = np.argsort(p_vals)\n", + "corrected = np.zeros(len(p_vals))\n", + "m = len(p_vals)\n", + "for rank, idx in enumerate(sorted_idx):\n", + " corrected[idx] = min(p_vals[idx] * (m - rank), 1.0)\n", + "\n", + "for k in range(len(pair_labels)):\n", + " sig = \"*\" if corrected[k] < 0.05 else \"ns\"\n", + " print(f\" {pair_labels[k]}: U p={p_vals[k]:.4f}, corrected={corrected[k]:.4f} {sig}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/1_hrv.ipynb b/case-study/1_hrv.ipynb new file mode 100755 index 0000000..5e856e7 --- /dev/null +++ b/case-study/1_hrv.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "350de244", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# 1 Hrv\n", + "\n", + "Time- and frequency-domain HRV linked to psychometric question timing.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b8c48d9-d2ea-4f9e-b01c-dc3cc8361f57", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "PSY = '../data/case-study/psychometric'\n", + "\n", + "sessions = [1, 2, 3]\n", + "colors = ['b', 'g', 'r']\n", + "question_type = 'HADS'\n", + "\n", + "# load all sessions\n", + "hrv_data = {}\n", + "psy_data = {}\n", + "\n", + "for s in sessions:\n", + " hrv = pd.read_csv(f'{DATA}/hrv_{s:02d}.csv')\n", + " hrv['datetime'] = pd.to_datetime(hrv['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " hrv_data[s] = hrv.sort_values('datetime')\n", + "\n", + " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n", + " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy_data[s] = psy\n", + "\n", + "# interval average HRV per question\n", + "session_merged = {}\n", + "for s in sessions:\n", + " data = psy_data[s][psy_data[s]['Type'] == question_type].reset_index(drop=True).copy()\n", + " hrv = hrv_data[s]\n", + "\n", + " # interval average, not point estimate\n", + " for metric in ['sdnn', 'rmssd']:\n", + " data[metric] = [\n", + " hrv.loc[\n", + " (hrv['datetime'] >= row['Question Start Time']) &\n", + " (hrv['datetime'] <= row['Question Answer Time']),\n", + " metric\n", + " ].mean()\n", + " for _, row in data.iterrows()\n", + " ]\n", + "\n", + " data['Question Number'] = data['Test'].str.extract(r'(\\d+)').astype(int)\n", + " data['Start Time Difference'] = (data['Question Start Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", + " data['Answer Time Difference'] = (data['Question Answer Time'] - data['Question Start Time'].min()).dt.total_seconds()\n", + " session_merged[s] = data\n", + "\n", + "# plot SDNN\n", + "plt.figure(figsize=(14, 7))\n", + "for s, color in zip(sessions, colors):\n", + " m = session_merged[s]\n", + " plt.plot(m['Start Time Difference'], m['sdnn'], label=f'SDNN - {question_type} Session {s}', marker='o', color=color)\n", + " plt.plot(m['Answer Time Difference'], m['sdnn'], linestyle='--', marker='x', color=color)\n", + " for i in range(len(m)):\n", + " plt.annotate(m['Question Number'].iloc[i].item(), (m['Start Time Difference'].iloc[i], m['sdnn'].iloc[i]))\n", + "\n", + "plt.title(f'SDNN During {question_type} Questions')\n", + "plt.xlabel('Time Difference (seconds)')\n", + "plt.ylabel('SDNN (ms)')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# plot RMSSD\n", + "plt.figure(figsize=(14, 7))\n", + "for s, color in zip(sessions, colors):\n", + " m = session_merged[s]\n", + " plt.plot(m['Start Time Difference'], m['rmssd'], label=f'RMSSD - {question_type} Session {s}', marker='o', color=color)\n", + " plt.plot(m['Answer Time Difference'], m['rmssd'], linestyle='--', marker='x', color=color)\n", + " for i in range(len(m)):\n", + " plt.annotate(m['Question Number'].iloc[i].item(), (m['Start Time Difference'].iloc[i], m['rmssd'].iloc[i]))\n", + "\n", + "plt.title(f'RMSSD During {question_type} Questions')\n", + "plt.xlabel('Time Difference (seconds)')\n", + "plt.ylabel('RMSSD (ms)')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbljkaqu2e8", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy.signal import lombscargle\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load IBI data\n", + "ibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\n", + "ibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\n", + "ibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n", + "\n", + "def frequency_hrv(ibi_values):\n", + " # artifact rejection\n", + " ibi = ibi_values[(ibi_values > 300) & (ibi_values < 2000)].values\n", + " if len(ibi) < 10:\n", + " return None\n", + " \n", + " # cumulative time axis\n", + " t = np.cumsum(ibi) / 1000.0\n", + " t = t - t[0]\n", + " \n", + " # detrend\n", + " nn = ibi - np.mean(ibi)\n", + " \n", + " # frequency range\n", + " freqs = np.linspace(0.01, 0.5, 500)\n", + " angular_freqs = 2 * np.pi * freqs\n", + " \n", + " # Lomb-Scargle PSD\n", + " psd = lombscargle(t, nn, angular_freqs, normalize=False)\n", + " psd = psd / len(nn)\n", + " \n", + " # frequency bands\n", + " vlf_mask = (freqs >= 0.003) & (freqs < 0.04)\n", + " lf_mask = (freqs >= 0.04) & (freqs < 0.15)\n", + " hf_mask = (freqs >= 0.15) & (freqs < 0.4)\n", + " \n", + " vlf_power = np.trapezoid(psd[vlf_mask], freqs[vlf_mask])\n", + " lf_power = np.trapezoid(psd[lf_mask], freqs[lf_mask])\n", + " hf_power = np.trapezoid(psd[hf_mask], freqs[hf_mask])\n", + " total_power = vlf_power + lf_power + hf_power\n", + " lf_hf_ratio = lf_power / hf_power if hf_power > 0 else np.nan\n", + " \n", + " return {\n", + " 'VLF': vlf_power, 'LF': lf_power, 'HF': hf_power,\n", + " 'Total': total_power, 'LF/HF': lf_hf_ratio,\n", + " 'LF%': lf_power / total_power * 100 if total_power > 0 else 0,\n", + " 'HF%': hf_power / total_power * 100 if total_power > 0 else 0,\n", + " 'freqs': freqs, 'psd': psd\n", + " }\n", + "\n", + "sessions = {\n", + " 'Baseline': ibi_baseline,\n", + " 'Session 01': ibi_01,\n", + " 'Session 02': ibi_02,\n", + " 'Session 03': ibi_03\n", + "}\n", + "\n", + "# compute frequency HRV\n", + "results = {}\n", + "for name, df in sessions.items():\n", + " r = frequency_hrv(df['ibi'].dropna())\n", + " if r:\n", + " results[name] = r\n", + "\n", + "# summary table\n", + "print(\"=== Frequency-Domain HRV ===\\n\")\n", + "print(f\"{'Session':<14} {'VLF':>8} {'LF':>10} {'HF':>10} {'LF/HF':>8} {'LF%':>6} {'HF%':>6}\")\n", + "for name, r in results.items():\n", + " print(f\"{name:<14} {r['VLF']:>8.1f} {r['LF']:>10.1f} {r['HF']:>10.1f} {r['LF/HF']:>8.2f} {r['LF%']:>5.1f}% {r['HF%']:>5.1f}%\")\n", + "\n", + "# clinical interpretation\n", + "print(\"\\n=== Clinical Interpretation ===\\n\")\n", + "print(\"LF/HF > 2.0 = sympathetic dominance (stress/anxiety)\")\n", + "print(\"LF/HF < 0.5 = parasympathetic dominance (relaxation)\")\n", + "print(\"LF/HF 0.5-2.0 = balanced autonomic tone\\n\")\n", + "for name, r in results.items():\n", + " ratio = r['LF/HF']\n", + " state = \"sympathetic dominant\" if ratio > 2.0 else \"parasympathetic dominant\" if ratio < 0.5 else \"balanced\"\n", + " print(f\"{name}: LF/HF={ratio:.2f} -> {state}\")\n", + "\n", + "# PSD plot\n", + "fig, axes = plt.subplots(2, 2, figsize=(14, 10))\n", + "colors = {'Baseline': 'gray', 'Session 01': 'tab:blue', 'Session 02': 'tab:orange', 'Session 03': 'tab:green'}\n", + "\n", + "for ax, (name, r) in zip(axes.flat, results.items()):\n", + " freqs, psd = r['freqs'], r['psd']\n", + " ax.plot(freqs, psd, color=colors.get(name, 'black'), linewidth=0.8)\n", + " ax.fill_between(freqs, psd, where=(freqs >= 0.04) & (freqs < 0.15), alpha=0.3, color='red', label='LF')\n", + " ax.fill_between(freqs, psd, where=(freqs >= 0.15) & (freqs < 0.4), alpha=0.3, color='blue', label='HF')\n", + " ax.set_title(f'{name} (LF/HF={r[\"LF/HF\"]:.2f})')\n", + " ax.set_xlabel('Frequency (Hz)')\n", + " ax.set_ylabel('PSD (ms²/Hz)')\n", + " ax.legend(fontsize=8)\n", + " ax.set_xlim(0, 0.5)\n", + "\n", + "plt.suptitle('Frequency-Domain HRV: Power Spectral Density')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# LF/HF bar chart\n", + "fig, ax = plt.subplots(figsize=(8, 5))\n", + "names = list(results.keys())\n", + "ratios = [results[n]['LF/HF'] for n in names]\n", + "bars = ax.bar(names, ratios, color=[colors[n] for n in names])\n", + "ax.axhline(2.0, color='red', linestyle='--', alpha=0.7, label='Stress threshold')\n", + "ax.axhline(0.5, color='green', linestyle='--', alpha=0.7, label='Relaxation threshold')\n", + "ax.set_ylabel('LF/HF Ratio')\n", + "ax.set_title('Sympathovagal Balance Across Sessions')\n", + "ax.legend()\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/2_Fixation.ipynb b/case-study/2_Fixation.ipynb deleted file mode 100755 index a2f83a1..0000000 --- a/case-study/2_Fixation.ipynb +++ /dev/null @@ -1,113 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "09035409-d0a6-4ca5-b102-dafe75b47438", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/case-study/processed'\n\n# load data\ndf1 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\ndf2 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\ndf3 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\nbaseline_df = pd.read_csv(f'{DATA}/sed_fix.csv')\n\n# avg fixation duration\ndef calculate_average_fixation_duration(df):\n df = df.copy()\n df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n\n fixation_starts = df[df['fixation_start']].index\n fixation_ends = df[df['fixation_end']].index\n\n # validate pairs\n if len(fixation_starts) > len(fixation_ends):\n fixation_starts = fixation_starts[:len(fixation_ends)]\n elif len(fixation_ends) > len(fixation_starts):\n fixation_ends = fixation_ends[:len(fixation_starts)]\n\n # fixation durations\n fixation_durations = df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values\n fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n average_duration = fixation_durations.mean() if len(fixation_durations) > 0 else 0\n return average_duration\n\n# avg per session\nbaseline_avg_fixation = calculate_average_fixation_duration(baseline_df)\navg_fixation_01 = calculate_average_fixation_duration(df1)\navg_fixation_02 = calculate_average_fixation_duration(df2)\navg_fixation_03 = calculate_average_fixation_duration(df3)\n\n# calculate difference\nfixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\nfixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\nfixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n\n# display results\nprint(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} seconds')\nprint(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} seconds')\nprint(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} seconds')\nprint(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} seconds')\nprint(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} seconds')\nprint(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} seconds')\nprint(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} seconds')" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b37c281f-150c-4bbd-a61d-f10b50518ef1", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/case-study/processed'\n\n# load baseline\nbaseline_fixation = pd.read_csv(f'{DATA}/sed_fix.csv')\n\n# load fixation data\nfixation_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\nfixation_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\nfixation_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n\n# avg fixation duration\ndef calculate_average_fixation_duration(df):\n df = df.copy()\n df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n\n fixation_starts = df[df['fixation_start']].index\n fixation_ends = df[df['fixation_end']].index\n\n # validate pairs\n if len(fixation_starts) > len(fixation_ends):\n fixation_starts = fixation_starts[:len(fixation_ends)]\n elif len(fixation_ends) > len(fixation_starts):\n fixation_ends = fixation_ends[:len(fixation_starts)]\n\n # fixation durations\n fixation_durations = df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values\n fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n \n # convert to ms\n fixation_durations_ms = fixation_durations * 1000\n \n # filter valid range\n valid_fixation_durations = fixation_durations_ms[(fixation_durations_ms >= 150) & (fixation_durations_ms <= 300)]\n \n # average duration\n average_duration = valid_fixation_durations.mean() / 1000 if len(valid_fixation_durations) > 0 else 0\n return average_duration\n\n# avg per session\nbaseline_avg_fixation = calculate_average_fixation_duration(baseline_fixation)\navg_fixation_01 = calculate_average_fixation_duration(fixation_01)\navg_fixation_02 = calculate_average_fixation_duration(fixation_02)\navg_fixation_03 = calculate_average_fixation_duration(fixation_03)\n\n# calculate difference\nfixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\nfixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\nfixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n\n# display results\nprint(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} seconds')\nprint(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} seconds')\nprint(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} seconds')\nprint(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} seconds')\nprint(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} seconds')\nprint(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} seconds')\nprint(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} seconds')" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7bf81a42-3acb-4d36-bfea-446b84003e26", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\n# load baseline\nbaseline_fixation = pd.read_csv(f'{DATA}/sed_fix.csv')\n\n# load fixation data\nfixation_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\nfixation_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\nfixation_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n\n# calculate average\ndef calculate_average_fixation_duration(df):\n df = df.copy()\n df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n\n fixation_starts = df[df['fixation_start']].index\n fixation_ends = df[df['fixation_end']].index\n\n # validate pairs\n if len(fixation_starts) > len(fixation_ends):\n fixation_starts = fixation_starts[:len(fixation_ends)]\n elif len(fixation_ends) > len(fixation_starts):\n fixation_ends = fixation_ends[:len(fixation_starts)]\n\n # fixation durations\n fixation_durations = (df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values) * 1000\n fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n\n # filter valid range\n valid_fixation_durations = fixation_durations[(fixation_durations >= 150) & (fixation_durations <= 300)]\n\n # average duration\n average_duration = valid_fixation_durations.mean() if len(valid_fixation_durations) > 0 else 0\n return average_duration\n\n# avg per session\nbaseline_avg_fixation = calculate_average_fixation_duration(baseline_fixation)\navg_fixation_01 = calculate_average_fixation_duration(fixation_01)\navg_fixation_02 = calculate_average_fixation_duration(fixation_02)\navg_fixation_03 = calculate_average_fixation_duration(fixation_03)\n\n# calculate difference\nfixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\nfixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\nfixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n\n# display results\nprint(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} ms')\nprint(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} ms')\nprint(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} ms')\nprint(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} ms')\nprint(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} ms')\nprint(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} ms')\nprint(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} ms')" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "619cd60b-6105-4bb7-a655-9e610baeff09", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\n# load data\ndata = pd.read_csv(f'{DATA}/sed_01.csv')\n\n# fixation duration calc\ndef calculate_fixation_duration(df, velocity_threshold=0.1):\n df = df.copy()\n # gaze velocity\n df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n df['gazeDir.y'].diff()**2 +\n df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n\n # identify fixations\n df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n\n # group fixations\n df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n\n # fixation durations\n g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n fixation_durations = g.max() - g.min()\n\n # filter + average\n fixation_durations = fixation_durations[fixation_durations > 0]\n average_fixation_duration = fixation_durations.mean()\n\n return average_fixation_duration\n\n# average fixation\naverage_fixation_duration = calculate_fixation_duration(data)\n\n# convert to ms\naverage_fixation_duration_ms = average_fixation_duration * 1000\n\n# print result\nprint(f\"The average fixation duration is {average_fixation_duration_ms:.2f} milliseconds\")" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "66eff0c8-734b-4313-a502-1960ea3f5c5a", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\nbaseline_data = pd.read_csv(f'{DATA}/sed.csv')\nsession_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\nsession_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\nsession_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# fixation duration calc\ndef calculate_fixation_duration(df, velocity_threshold=0.1):\n df = df.copy()\n # gaze velocity\n df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n df['gazeDir.y'].diff()**2 +\n df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n\n # identify fixations\n df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n\n # group fixations\n df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n\n # fixation durations\n g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n fixation_durations = g.max() - g.min()\n\n # filter + average\n fixation_durations = fixation_durations[fixation_durations > 0]\n average_fixation_duration = fixation_durations.mean()\n\n return average_fixation_duration\n\n# avg per dataset\nbaseline_avg_fixation_duration = calculate_fixation_duration(baseline_data)\nsession_01_avg_fixation_duration = calculate_fixation_duration(session_01_data)\nsession_02_avg_fixation_duration = calculate_fixation_duration(session_02_data)\nsession_03_avg_fixation_duration = calculate_fixation_duration(session_03_data)\n\n# convert to ms\nbaseline_avg_fixation_duration_ms = baseline_avg_fixation_duration * 1000\nsession_01_avg_fixation_duration_ms = session_01_avg_fixation_duration * 1000\nsession_02_avg_fixation_duration_ms = session_02_avg_fixation_duration * 1000\nsession_03_avg_fixation_duration_ms = session_03_avg_fixation_duration * 1000\n\n# calculate difference\nfixation_difference_01 = session_01_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\nfixation_difference_02 = session_02_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\nfixation_difference_03 = session_03_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\n\n# anxiety threshold\nfixation_anxiety_threshold = 250\n\n# check fixation anxiety\nanxiety_fixation_baseline = baseline_avg_fixation_duration_ms < fixation_anxiety_threshold\nanxiety_fixation_01 = session_01_avg_fixation_duration_ms < fixation_anxiety_threshold\nanxiety_fixation_02 = session_02_avg_fixation_duration_ms < fixation_anxiety_threshold\nanxiety_fixation_03 = session_03_avg_fixation_duration_ms < fixation_anxiety_threshold\n\n# display results\nprint(f'Baseline Average Fixation Duration: {baseline_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_baseline else \"Normal\"}')\nprint(f'Session 1 Average Fixation Duration: {session_01_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_01 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} ms')\nprint(f'Session 2 Average Fixation Duration: {session_02_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_02 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} ms')\nprint(f'Session 3 Average Fixation Duration: {session_03_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_03 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} ms')" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "71d91f0d-9305-4fe7-becd-da5edd4839f8", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\nbaseline_data = pd.read_csv(f'{DATA}/sed.csv')\nsession_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\nsession_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\nsession_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# calculate fixation\ndef calculate_fixation_durations(df, velocity_threshold=0.1):\n df = df.copy()\n # gaze velocity\n df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n df['gazeDir.y'].diff()**2 +\n df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n\n # identify fixations\n df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n\n # group fixations\n df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n\n # fixation durations\n g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n fixation_durations = g.max() - g.min()\n\n # filter zero durations\n fixation_durations = fixation_durations[fixation_durations > 0]\n\n return fixation_durations\n\n# calculate fixation durations\nbaseline_fixation_durations = calculate_fixation_durations(baseline_data)\nsession_01_fixation_durations = calculate_fixation_durations(session_01_data)\nsession_02_fixation_durations = calculate_fixation_durations(session_02_data)\nsession_03_fixation_durations = calculate_fixation_durations(session_03_data)\n\n# convert to ms\nbaseline_fixation_durations_ms = baseline_fixation_durations * 1000\nsession_01_fixation_durations_ms = session_01_fixation_durations * 1000\nsession_02_fixation_durations_ms = session_02_fixation_durations * 1000\nsession_03_fixation_durations_ms = session_03_fixation_durations * 1000\n\n# average fixation\nbaseline_avg_fixation_duration_ms = baseline_fixation_durations_ms.mean()\nsession_01_avg_fixation_duration_ms = session_01_fixation_durations_ms.mean()\nsession_02_avg_fixation_duration_ms = session_02_fixation_durations_ms.mean()\nsession_03_avg_fixation_duration_ms = session_03_fixation_durations_ms.mean()\n\n# bar plot average\naverage_durations = [baseline_avg_fixation_duration_ms, session_01_avg_fixation_duration_ms, session_02_avg_fixation_duration_ms, session_03_avg_fixation_duration_ms]\nlabels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n\nplt.figure(figsize=(8, 6))\nplt.bar(labels, average_durations, color=['blue', 'orange', 'green', 'red'])\nplt.axhline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\nplt.ylabel('Average Fixation Duration (ms)')\nplt.title('Average Fixation Duration by Dataset')\nplt.legend()\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fa35079-82f0-4b5b-8136-2d2070eae3e6", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\nbaseline_data = pd.read_csv(f'{DATA}/sed.csv')\nsession_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\nsession_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\nsession_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# calculate fixation\ndef calculate_fixation_durations(df, velocity_threshold=0.1):\n df = df.copy()\n # gaze velocity\n df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n df['gazeDir.y'].diff()**2 +\n df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n\n # identify fixations\n df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n\n # group fixations\n df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n\n # fixation durations\n g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n fixation_durations = g.max() - g.min()\n\n # filter zero durations\n fixation_durations = fixation_durations[fixation_durations > 0]\n\n return fixation_durations\n\n# calculate fixation durations\nbaseline_fixation_durations = calculate_fixation_durations(baseline_data)\nsession_01_fixation_durations = calculate_fixation_durations(session_01_data)\nsession_02_fixation_durations = calculate_fixation_durations(session_02_data)\nsession_03_fixation_durations = calculate_fixation_durations(session_03_data)\n\n# convert to ms\nbaseline_fixation_durations_ms = baseline_fixation_durations * 1000\nsession_01_fixation_durations_ms = session_01_fixation_durations * 1000\nsession_02_fixation_durations_ms = session_02_fixation_durations * 1000\nsession_03_fixation_durations_ms = session_03_fixation_durations * 1000\n\n# average fixation\nbaseline_avg_fixation_duration_ms = baseline_fixation_durations_ms.mean()\nsession_01_avg_fixation_duration_ms = session_01_fixation_durations_ms.mean()\nsession_02_avg_fixation_duration_ms = session_02_fixation_durations_ms.mean()\nsession_03_avg_fixation_duration_ms = session_03_fixation_durations_ms.mean()\n\n# distribution plot\nplt.figure(figsize=(12, 6))\nplt.hist(baseline_fixation_durations_ms, bins=30, alpha=0.5, label='Baseline')\nplt.hist(session_01_fixation_durations_ms, bins=30, alpha=0.5, label='Session 01')\nplt.hist(session_02_fixation_durations_ms, bins=30, alpha=0.5, label='Session 02')\nplt.hist(session_03_fixation_durations_ms, bins=30, alpha=0.5, label='Session 03')\nplt.axvline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\nplt.xlabel('Fixation Duration (ms)')\nplt.ylabel('Frequency')\nplt.legend()\nplt.title('Distribution of Fixation Durations')\nplt.show()\nplt.close()\n\n# bar plot average\naverage_durations = [baseline_avg_fixation_duration_ms, session_01_avg_fixation_duration_ms, session_02_avg_fixation_duration_ms, session_03_avg_fixation_duration_ms]\nlabels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n\nplt.figure(figsize=(8, 6))\nplt.bar(labels, average_durations, color=['blue', 'orange', 'green', 'red'])\nplt.axhline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\nplt.ylabel('Average Fixation Duration (ms)')\nplt.title('Average Fixation Duration by Dataset')\nplt.legend()\nplt.show()\nplt.close()\n\n# anxiety threshold plot\nplt.figure(figsize=(12, 6))\nplt.hist(baseline_fixation_durations_ms, bins=30, alpha=0.5, label='Baseline')\nplt.hist(session_01_fixation_durations_ms, bins=30, alpha=0.5, label='Session 01')\nplt.hist(session_02_fixation_durations_ms, bins=30, alpha=0.5, label='Session 02')\nplt.hist(session_03_fixation_durations_ms, bins=30, alpha=0.5, label='Session 03')\nplt.axvline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\nplt.xlabel('Fixation Duration (ms)')\nplt.ylabel('Frequency')\nplt.legend()\nplt.title('Distribution of Fixation Durations with Anxiety Threshold')\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "316085d1-78a2-414e-8c1f-7561f6c1389a", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\nbaseline_data = pd.read_csv(f'{DATA}/sed.csv')\nsession_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\nsession_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\nsession_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# clean pupil\ndef clean_pupil_data(df):\n # filter invalid rows\n df = df[df['pupil'] > 0]\n return df\n\n# clean pupil data\nbaseline_data_clean = clean_pupil_data(baseline_data)\nsession_01_data_clean = clean_pupil_data(session_01_data)\nsession_02_data_clean = clean_pupil_data(session_02_data)\nsession_03_data_clean = clean_pupil_data(session_03_data)\n\n# Calculate average pupil\nbaseline_avg_pupil_size = baseline_data_clean['pupil'].mean()\nsession_01_avg_pupil_size = session_01_data_clean['pupil'].mean()\nsession_02_avg_pupil_size = session_02_data_clean['pupil'].mean()\nsession_03_avg_pupil_size = session_03_data_clean['pupil'].mean()\n\n# dilation threshold\npupil_dilation_threshold = 3.5\n\n# check pupil anxiety\nincreased_pupil_baseline = baseline_avg_pupil_size > pupil_dilation_threshold\nincreased_pupil_01 = session_01_avg_pupil_size > pupil_dilation_threshold\nincreased_pupil_02 = session_02_avg_pupil_size > pupil_dilation_threshold\nincreased_pupil_03 = session_03_avg_pupil_size > pupil_dilation_threshold\n\n# display results\nprint(f'Baseline Average Pupil Size: {baseline_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_baseline else \"Normal\"}')\nprint(f'Session 1 Average Pupil Size: {session_01_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_01 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 1: {session_01_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\nprint(f'Session 2 Average Pupil Size: {session_02_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_02 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 2: {session_02_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\nprint(f'Session 3 Average Pupil Size: {session_03_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_03 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 3: {session_03_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\n\n# distribution plot\nplt.figure(figsize=(12, 6))\nplt.hist(baseline_data_clean['pupil'], bins=30, alpha=0.5, label='Baseline')\nplt.hist(session_01_data_clean['pupil'], bins=30, alpha=0.5, label='Session 01')\nplt.hist(session_02_data_clean['pupil'], bins=30, alpha=0.5, label='Session 02')\nplt.hist(session_03_data_clean['pupil'], bins=30, alpha=0.5, label='Session 03')\nplt.axvline(pupil_dilation_threshold, color='r', linestyle='dashed', linewidth=1, label='Pupil Dilation Threshold (3.5 mm)')\nplt.xlabel('Pupil Size (mm)')\nplt.ylabel('Frequency')\nplt.legend()\nplt.title('Distribution of Pupil Sizes')\nplt.show()\nplt.close()\n\n# Bar plot average\naverage_pupil_sizes = [baseline_avg_pupil_size, session_01_avg_pupil_size, session_02_avg_pupil_size, session_03_avg_pupil_size]\nlabels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n\nplt.figure(figsize=(8, 6))\nplt.bar(labels, average_pupil_sizes, color=['blue', 'orange', 'green', 'red'])\nplt.axhline(pupil_dilation_threshold, color='r', linestyle='dashed', linewidth=1, label='Pupil Dilation Threshold (3.5 mm)')\nplt.ylabel('Average Pupil Size (mm)')\nplt.title('Average Pupil Size by Dataset')\nplt.legend()\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "652e4cf1-d0fd-4224-9a0e-7a7a06b0564c", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\nbaseline_data = pd.read_csv(f'{DATA}/sed.csv')\nsession_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\nsession_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\nsession_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# calculate saccade\ndef calculate_saccade_frequency(df, velocity_threshold=0.1):\n df = df.copy()\n # gaze velocity\n df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n df['gazeDir.y'].diff()**2 +\n df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n\n # identify saccades\n df['is_saccade'] = df['gaze_velocity'] > velocity_threshold\n\n # count saccade events\n total_time = df['reltime'].iloc[-1] - df['reltime'].iloc[0]\n saccade_onsets = df['is_saccade'] & ~df['is_saccade'].shift(fill_value=False)\n saccade_count = saccade_onsets.sum()\n saccade_frequency = saccade_count / total_time if total_time > 0 else 0.0\n\n return saccade_frequency\n\n# calculate saccade frequency\nbaseline_saccade_frequency = calculate_saccade_frequency(baseline_data)\nsession_01_saccade_frequency = calculate_saccade_frequency(session_01_data)\nsession_02_saccade_frequency = calculate_saccade_frequency(session_02_data)\nsession_03_saccade_frequency = calculate_saccade_frequency(session_03_data)\n\n# frequency threshold\nsaccade_frequency_threshold = 5\n\n# check saccade anxiety\nincreased_saccade_frequency_baseline = baseline_saccade_frequency > saccade_frequency_threshold\nincreased_saccade_frequency_01 = session_01_saccade_frequency > saccade_frequency_threshold\nincreased_saccade_frequency_02 = session_02_saccade_frequency > saccade_frequency_threshold\nincreased_saccade_frequency_03 = session_03_saccade_frequency > saccade_frequency_threshold\n\n# display results\nprint(f'Baseline Saccade Frequency: {baseline_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_baseline else \"Normal\"}')\nprint(f'Session 1 Saccade Frequency: {session_01_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_01 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 1: {session_01_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\nprint(f'Session 2 Saccade Frequency: {session_02_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_02 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 2: {session_02_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\nprint(f'Session 3 Saccade Frequency: {session_03_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_03 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 3: {session_03_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\n\n# plot saccade frequency\nsaccade_frequencies = [baseline_saccade_frequency, session_01_saccade_frequency, session_02_saccade_frequency, session_03_saccade_frequency]\nlabels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n\nplt.figure(figsize=(8, 6))\nplt.bar(labels, saccade_frequencies, color=['blue', 'orange', 'green', 'red'])\nplt.axhline(saccade_frequency_threshold, color='r', linestyle='dashed', linewidth=1, label='Saccade Frequency Threshold (>5 saccades/second)')\nplt.ylabel('Saccade Frequency (saccades/second)')\nplt.title('Saccade Frequency by Dataset')\nplt.legend()\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "id": "f0zomnkga4i", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\n# load fixation data\nsessions = {}\nfor s in [0, 1, 2, 3]:\n filename = f'{DATA}/sed_fix.csv' if s == 0 else f'{DATA}/sed_fix_{s:02d}.csv'\n df = pd.read_csv(filename)\n label = 'Baseline' if s == 0 else f'Session {s:02d}'\n durations = df[df['fixation'] == True]['duration'].dropna()\n sessions[label] = durations\n\n# descriptive stats\nprint(\"=== Fixation Duration Stats ===\\n\")\nfor name, dur in sessions.items():\n print(f\"{name}: n={len(dur)}, mean={dur.mean():.4f}s, median={dur.median():.4f}s, SD={dur.std():.4f}s\")\n\n# Kruskal-Wallis\nprint(\"\\n=== Kruskal-Wallis Test ===\")\nh, p = stats.kruskal(*sessions.values())\nprint(f\"H={h:.3f}, p={p:.4f}\")\n\n# histograms\nfig, axes = plt.subplots(2, 2, figsize=(12, 10))\nfor ax, (name, dur) in zip(axes.flat, sessions.items()):\n ax.hist(dur, bins=50, edgecolor='black', alpha=0.7)\n ax.axvline(dur.mean(), color='red', linestyle='--', label=f'mean={dur.mean():.4f}s')\n ax.axvline(dur.median(), color='blue', linestyle=':', label=f'median={dur.median():.4f}s')\n ax.set_title(name)\n ax.set_xlabel('Fixation Duration (s)')\n ax.set_ylabel('Count')\n ax.legend(fontsize=8)\n\nplt.suptitle('Fixation Duration Distributions')\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "id": "yif61xjogm", - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nDATA = '../data/case-study/processed'\nPSY = '../data/case-study/psychometric'\n\n# load all modalities\nhr_sessions = {}\nibi_sessions = {}\nsed_sessions = {}\npsy_sessions = {}\n\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n hr = hr[hr['confidence'] == 1.0]\n hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n hr_sessions[s] = hr\n \n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n ibi['datetime'] = pd.to_datetime(ibi['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n ibi_sessions[s] = ibi\n \n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n sed['datetime'] = pd.to_datetime(sed['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n sed_sessions[s] = sed\n \n psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n psy_sessions[s] = psy\n\n# baseline stats\nhr_bl = pd.read_csv(f'{DATA}/hr.csv')\nhr_bl = hr_bl[hr_bl['confidence'] == 1.0]\nbl_hr_mean, bl_hr_std = hr_bl['heart_rate'].mean(), hr_bl['heart_rate'].std()\n\nibi_bl = pd.read_csv(f'{DATA}/ibi.csv')\nibi_clean = ibi_bl['ibi'][(ibi_bl['ibi'] > 300) & (ibi_bl['ibi'] < 2000)]\nbl_sdnn = ibi_clean.std()\nbl_rmssd = np.sqrt(np.mean(np.diff(ibi_clean.values)**2))\n\nsed_bl = pd.read_csv(f'{DATA}/sed.csv')\nbl_pupil_mean = sed_bl[sed_bl['pupil'] > 0]['pupil'].mean()\nbl_pupil_std = sed_bl[sed_bl['pupil'] > 0]['pupil'].std()\n\n# per-question biometrics\nrows = []\nfor s in [1, 2, 3]:\n psy = psy_sessions[s]\n for _, q in psy.iterrows():\n start, end = q['Question Start Time'], q['Question Answer Time']\n \n # HR during question\n hr_seg = hr_sessions[s][(hr_sessions[s]['datetime'] >= start) & (hr_sessions[s]['datetime'] <= end)]\n avg_hr = hr_seg['heart_rate'].mean() if len(hr_seg) > 0 else np.nan\n \n # IBI/HRV during question\n ibi_seg = ibi_sessions[s][(ibi_sessions[s]['datetime'] >= start) & (ibi_sessions[s]['datetime'] <= end)]\n ibi_vals = ibi_seg['ibi'][(ibi_seg['ibi'] > 300) & (ibi_seg['ibi'] < 2000)]\n sdnn = ibi_vals.std() if len(ibi_vals) > 2 else np.nan\n rmssd = np.sqrt(np.mean(np.diff(ibi_vals.values)**2)) if len(ibi_vals) > 2 else np.nan\n \n # pupil during question\n sed_seg = sed_sessions[s][(sed_sessions[s]['datetime'] >= start) & (sed_sessions[s]['datetime'] <= end)]\n pupil_seg = sed_seg[sed_seg['pupil'] > 0]['pupil']\n avg_pupil = pupil_seg.mean() if len(pupil_seg) > 0 else np.nan\n \n # extract question number\n test_str = str(q['Test'])\n q_num = ''.join(c for c in test_str.split('.')[0] if c.isdigit())\n label = f\"S{s} {q['Type']} Q{q_num}\" if q_num else f\"S{s} {q['Type']}\"\n \n rows.append({\n 'label': label, 'session': s, 'type': q['Type'],\n 'HR': avg_hr, 'SDNN': sdnn, 'RMSSD': rmssd, 'Pupil': avg_pupil\n })\n\ndf = pd.DataFrame(rows)\n\n# z-score relative to baseline\ndf['HR_z'] = (df['HR'] - bl_hr_mean) / bl_hr_std if bl_hr_std > 0 else 0\ndf['SDNN_z'] = -(df['SDNN'] - bl_sdnn) / bl_sdnn if bl_sdnn > 0 else 0\ndf['RMSSD_z'] = -(df['RMSSD'] - bl_rmssd) / bl_rmssd if bl_rmssd > 0 else 0\ndf['Pupil_z'] = (df['Pupil'] - bl_pupil_mean) / bl_pupil_std if bl_pupil_std > 0 else 0\n\n# composite stress index\nz_cols = ['HR_z', 'SDNN_z', 'RMSSD_z', 'Pupil_z']\ndf['Stress Index'] = df[z_cols].mean(axis=1)\n\n# heatmap matrix\nheatmap_data = df.set_index('label')[z_cols + ['Stress Index']].dropna()\nheatmap_data.columns = ['HR', 'SDNN\\n(inverted)', 'RMSSD\\n(inverted)', 'Pupil', 'Composite\\nStress']\n\nplt.figure(figsize=(10, max(8, len(heatmap_data) * 0.25)))\nsns.heatmap(heatmap_data, cmap='RdYlBu_r', center=0, annot=True, fmt='.1f',\n linewidths=0.5, cbar_kws={'label': 'Z-score (higher = more stress)'})\nplt.title('Multimodal Stress Response per Question\\n(z-scored vs baseline, SDNN/RMSSD inverted)')\nplt.tight_layout()\nplt.show()\nplt.close()\n\n# top stressed questions\ntop = df.nlargest(10, 'Stress Index')[['label', 'type', 'session', 'Stress Index']]\nprint(\"=== Top 10 Highest Stress Questions ===\\n\")\nprint(top.to_string(index=False))\n\n# average by question type\nprint(\"\\n=== Average Stress Index by Question Type ===\\n\")\ntype_stress = df.groupby('type')['Stress Index'].agg(['mean', 'std', 'count'])\nprint(type_stress.sort_values('mean', ascending=False).round(3).to_string())", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/2_fixation.ipynb b/case-study/2_fixation.ipynb new file mode 100755 index 0000000..30686ce --- /dev/null +++ b/case-study/2_fixation.ipynb @@ -0,0 +1,863 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3f90b170", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# 2 Fixation\n", + "\n", + "Eye-tracking fixation durations per session and per question type.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09035409-d0a6-4ca5-b102-dafe75b47438", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load data\n", + "df1 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\n", + "df2 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\n", + "df3 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n", + "baseline_df = pd.read_csv(f'{DATA}/sed_fix.csv')\n", + "\n", + "# avg fixation duration\n", + "def calculate_average_fixation_duration(df):\n", + " df = df.copy()\n", + " df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n", + " df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n", + "\n", + " fixation_starts = df[df['fixation_start']].index\n", + " fixation_ends = df[df['fixation_end']].index\n", + "\n", + " # validate pairs\n", + " if len(fixation_starts) > len(fixation_ends):\n", + " fixation_starts = fixation_starts[:len(fixation_ends)]\n", + " elif len(fixation_ends) > len(fixation_starts):\n", + " fixation_ends = fixation_ends[:len(fixation_starts)]\n", + "\n", + " # fixation durations\n", + " fixation_durations = df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values\n", + " fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n", + " average_duration = fixation_durations.mean() if len(fixation_durations) > 0 else 0\n", + " return average_duration\n", + "\n", + "# avg per session\n", + "baseline_avg_fixation = calculate_average_fixation_duration(baseline_df)\n", + "avg_fixation_01 = calculate_average_fixation_duration(df1)\n", + "avg_fixation_02 = calculate_average_fixation_duration(df2)\n", + "avg_fixation_03 = calculate_average_fixation_duration(df3)\n", + "\n", + "# calculate difference\n", + "fixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\n", + "fixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\n", + "fixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n", + "\n", + "# display results\n", + "print(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} seconds')\n", + "print(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} seconds')\n", + "print(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} seconds')\n", + "print(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} seconds')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b37c281f-150c-4bbd-a61d-f10b50518ef1", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load baseline\n", + "baseline_fixation = pd.read_csv(f'{DATA}/sed_fix.csv')\n", + "\n", + "# load fixation data\n", + "fixation_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\n", + "fixation_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\n", + "fixation_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n", + "\n", + "# avg fixation duration\n", + "def calculate_average_fixation_duration(df):\n", + " df = df.copy()\n", + " df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n", + " df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n", + "\n", + " fixation_starts = df[df['fixation_start']].index\n", + " fixation_ends = df[df['fixation_end']].index\n", + "\n", + " # validate pairs\n", + " if len(fixation_starts) > len(fixation_ends):\n", + " fixation_starts = fixation_starts[:len(fixation_ends)]\n", + " elif len(fixation_ends) > len(fixation_starts):\n", + " fixation_ends = fixation_ends[:len(fixation_starts)]\n", + "\n", + " # fixation durations\n", + " fixation_durations = df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values\n", + " fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n", + " \n", + " # convert to ms\n", + " fixation_durations_ms = fixation_durations * 1000\n", + " \n", + " # filter valid range\n", + " valid_fixation_durations = fixation_durations_ms[(fixation_durations_ms >= 150) & (fixation_durations_ms <= 300)]\n", + " \n", + " # average duration\n", + " average_duration = valid_fixation_durations.mean() / 1000 if len(valid_fixation_durations) > 0 else 0\n", + " return average_duration\n", + "\n", + "# avg per session\n", + "baseline_avg_fixation = calculate_average_fixation_duration(baseline_fixation)\n", + "avg_fixation_01 = calculate_average_fixation_duration(fixation_01)\n", + "avg_fixation_02 = calculate_average_fixation_duration(fixation_02)\n", + "avg_fixation_03 = calculate_average_fixation_duration(fixation_03)\n", + "\n", + "# calculate difference\n", + "fixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\n", + "fixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\n", + "fixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n", + "\n", + "# display results\n", + "print(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} seconds')\n", + "print(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} seconds')\n", + "print(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} seconds')\n", + "print(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} seconds')\n", + "print(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} seconds')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bf81a42-3acb-4d36-bfea-446b84003e26", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load baseline\n", + "baseline_fixation = pd.read_csv(f'{DATA}/sed_fix.csv')\n", + "\n", + "# load fixation data\n", + "fixation_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\n", + "fixation_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\n", + "fixation_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n", + "\n", + "# calculate average\n", + "def calculate_average_fixation_duration(df):\n", + " df = df.copy()\n", + " df['fixation_start'] = df['fixation'].diff().fillna(0) == 1\n", + " df['fixation_end'] = df['fixation'].diff().fillna(0) == -1\n", + "\n", + " fixation_starts = df[df['fixation_start']].index\n", + " fixation_ends = df[df['fixation_end']].index\n", + "\n", + " # validate pairs\n", + " if len(fixation_starts) > len(fixation_ends):\n", + " fixation_starts = fixation_starts[:len(fixation_ends)]\n", + " elif len(fixation_ends) > len(fixation_starts):\n", + " fixation_ends = fixation_ends[:len(fixation_starts)]\n", + "\n", + " # fixation durations\n", + " fixation_durations = (df.loc[fixation_ends, 'reltime'].values - df.loc[fixation_starts, 'reltime'].values) * 1000\n", + " fixation_durations = fixation_durations[~pd.isnull(fixation_durations)]\n", + "\n", + " # filter valid range\n", + " valid_fixation_durations = fixation_durations[(fixation_durations >= 150) & (fixation_durations <= 300)]\n", + "\n", + " # average duration\n", + " average_duration = valid_fixation_durations.mean() if len(valid_fixation_durations) > 0 else 0\n", + " return average_duration\n", + "\n", + "# avg per session\n", + "baseline_avg_fixation = calculate_average_fixation_duration(baseline_fixation)\n", + "avg_fixation_01 = calculate_average_fixation_duration(fixation_01)\n", + "avg_fixation_02 = calculate_average_fixation_duration(fixation_02)\n", + "avg_fixation_03 = calculate_average_fixation_duration(fixation_03)\n", + "\n", + "# calculate difference\n", + "fixation_difference_01 = avg_fixation_01 - baseline_avg_fixation\n", + "fixation_difference_02 = avg_fixation_02 - baseline_avg_fixation\n", + "fixation_difference_03 = avg_fixation_03 - baseline_avg_fixation\n", + "\n", + "# display results\n", + "print(f'Baseline Average Fixation Duration: {baseline_avg_fixation:.2f} ms')\n", + "print(f'Session 1 Average Fixation Duration: {avg_fixation_01:.2f} ms')\n", + "print(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} ms')\n", + "print(f'Session 2 Average Fixation Duration: {avg_fixation_02:.2f} ms')\n", + "print(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} ms')\n", + "print(f'Session 3 Average Fixation Duration: {avg_fixation_03:.2f} ms')\n", + "print(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} ms')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "619cd60b-6105-4bb7-a655-9e610baeff09", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load data\n", + "data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "\n", + "# fixation duration calc\n", + "def calculate_fixation_duration(df, velocity_threshold=0.1):\n", + " df = df.copy()\n", + " # gaze velocity\n", + " df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n", + " df['gazeDir.y'].diff()**2 +\n", + " df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n", + "\n", + " # identify fixations\n", + " df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n", + "\n", + " # group fixations\n", + " df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n", + "\n", + " # fixation durations\n", + " g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n", + " fixation_durations = g.max() - g.min()\n", + "\n", + " # filter + average\n", + " fixation_durations = fixation_durations[fixation_durations > 0]\n", + " average_fixation_duration = fixation_durations.mean()\n", + "\n", + " return average_fixation_duration\n", + "\n", + "# average fixation\n", + "average_fixation_duration = calculate_fixation_duration(data)\n", + "\n", + "# convert to ms\n", + "average_fixation_duration_ms = average_fixation_duration * 1000\n", + "\n", + "# print result\n", + "print(f\"The average fixation duration is {average_fixation_duration_ms:.2f} milliseconds\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66eff0c8-734b-4313-a502-1960ea3f5c5a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "baseline_data = pd.read_csv(f'{DATA}/sed.csv')\n", + "session_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "session_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "session_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# fixation duration calc\n", + "def calculate_fixation_duration(df, velocity_threshold=0.1):\n", + " df = df.copy()\n", + " # gaze velocity\n", + " df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n", + " df['gazeDir.y'].diff()**2 +\n", + " df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n", + "\n", + " # identify fixations\n", + " df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n", + "\n", + " # group fixations\n", + " df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n", + "\n", + " # fixation durations\n", + " g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n", + " fixation_durations = g.max() - g.min()\n", + "\n", + " # filter + average\n", + " fixation_durations = fixation_durations[fixation_durations > 0]\n", + " average_fixation_duration = fixation_durations.mean()\n", + "\n", + " return average_fixation_duration\n", + "\n", + "# avg per dataset\n", + "baseline_avg_fixation_duration = calculate_fixation_duration(baseline_data)\n", + "session_01_avg_fixation_duration = calculate_fixation_duration(session_01_data)\n", + "session_02_avg_fixation_duration = calculate_fixation_duration(session_02_data)\n", + "session_03_avg_fixation_duration = calculate_fixation_duration(session_03_data)\n", + "\n", + "# convert to ms\n", + "baseline_avg_fixation_duration_ms = baseline_avg_fixation_duration * 1000\n", + "session_01_avg_fixation_duration_ms = session_01_avg_fixation_duration * 1000\n", + "session_02_avg_fixation_duration_ms = session_02_avg_fixation_duration * 1000\n", + "session_03_avg_fixation_duration_ms = session_03_avg_fixation_duration * 1000\n", + "\n", + "# calculate difference\n", + "fixation_difference_01 = session_01_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\n", + "fixation_difference_02 = session_02_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\n", + "fixation_difference_03 = session_03_avg_fixation_duration_ms - baseline_avg_fixation_duration_ms\n", + "\n", + "# anxiety threshold\n", + "fixation_anxiety_threshold = 250\n", + "\n", + "# check fixation anxiety\n", + "anxiety_fixation_baseline = baseline_avg_fixation_duration_ms < fixation_anxiety_threshold\n", + "anxiety_fixation_01 = session_01_avg_fixation_duration_ms < fixation_anxiety_threshold\n", + "anxiety_fixation_02 = session_02_avg_fixation_duration_ms < fixation_anxiety_threshold\n", + "anxiety_fixation_03 = session_03_avg_fixation_duration_ms < fixation_anxiety_threshold\n", + "\n", + "# display results\n", + "print(f'Baseline Average Fixation Duration: {baseline_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_baseline else \"Normal\"}')\n", + "print(f'Session 1 Average Fixation Duration: {session_01_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_01 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 1: {fixation_difference_01:.2f} ms')\n", + "print(f'Session 2 Average Fixation Duration: {session_02_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_02 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 2: {fixation_difference_02:.2f} ms')\n", + "print(f'Session 3 Average Fixation Duration: {session_03_avg_fixation_duration_ms:.2f} ms - {\"Anxiety (<250 ms)\" if anxiety_fixation_03 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 3: {fixation_difference_03:.2f} ms')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71d91f0d-9305-4fe7-becd-da5edd4839f8", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "baseline_data = pd.read_csv(f'{DATA}/sed.csv')\n", + "session_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "session_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "session_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# calculate fixation\n", + "def calculate_fixation_durations(df, velocity_threshold=0.1):\n", + " df = df.copy()\n", + " # gaze velocity\n", + " df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n", + " df['gazeDir.y'].diff()**2 +\n", + " df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n", + "\n", + " # identify fixations\n", + " df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n", + "\n", + " # group fixations\n", + " df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n", + "\n", + " # fixation durations\n", + " g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n", + " fixation_durations = g.max() - g.min()\n", + "\n", + " # filter zero durations\n", + " fixation_durations = fixation_durations[fixation_durations > 0]\n", + "\n", + " return fixation_durations\n", + "\n", + "# calculate fixation durations\n", + "baseline_fixation_durations = calculate_fixation_durations(baseline_data)\n", + "session_01_fixation_durations = calculate_fixation_durations(session_01_data)\n", + "session_02_fixation_durations = calculate_fixation_durations(session_02_data)\n", + "session_03_fixation_durations = calculate_fixation_durations(session_03_data)\n", + "\n", + "# convert to ms\n", + "baseline_fixation_durations_ms = baseline_fixation_durations * 1000\n", + "session_01_fixation_durations_ms = session_01_fixation_durations * 1000\n", + "session_02_fixation_durations_ms = session_02_fixation_durations * 1000\n", + "session_03_fixation_durations_ms = session_03_fixation_durations * 1000\n", + "\n", + "# average fixation\n", + "baseline_avg_fixation_duration_ms = baseline_fixation_durations_ms.mean()\n", + "session_01_avg_fixation_duration_ms = session_01_fixation_durations_ms.mean()\n", + "session_02_avg_fixation_duration_ms = session_02_fixation_durations_ms.mean()\n", + "session_03_avg_fixation_duration_ms = session_03_fixation_durations_ms.mean()\n", + "\n", + "# bar plot average\n", + "average_durations = [baseline_avg_fixation_duration_ms, session_01_avg_fixation_duration_ms, session_02_avg_fixation_duration_ms, session_03_avg_fixation_duration_ms]\n", + "labels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.bar(labels, average_durations, color=['blue', 'orange', 'green', 'red'])\n", + "plt.axhline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\n", + "plt.ylabel('Average Fixation Duration (ms)')\n", + "plt.title('Average Fixation Duration by Dataset')\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fa35079-82f0-4b5b-8136-2d2070eae3e6", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "baseline_data = pd.read_csv(f'{DATA}/sed.csv')\n", + "session_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "session_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "session_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# calculate fixation\n", + "def calculate_fixation_durations(df, velocity_threshold=0.1):\n", + " df = df.copy()\n", + " # gaze velocity\n", + " df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n", + " df['gazeDir.y'].diff()**2 +\n", + " df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n", + "\n", + " # identify fixations\n", + " df['is_fixation'] = df['gaze_velocity'] < velocity_threshold\n", + "\n", + " # group fixations\n", + " df['fixation_id'] = (df['is_fixation'] != df['is_fixation'].shift()).cumsum()\n", + "\n", + " # fixation durations\n", + " g = df[df['is_fixation']].groupby('fixation_id')['reltime']\n", + " fixation_durations = g.max() - g.min()\n", + "\n", + " # filter zero durations\n", + " fixation_durations = fixation_durations[fixation_durations > 0]\n", + "\n", + " return fixation_durations\n", + "\n", + "# calculate fixation durations\n", + "baseline_fixation_durations = calculate_fixation_durations(baseline_data)\n", + "session_01_fixation_durations = calculate_fixation_durations(session_01_data)\n", + "session_02_fixation_durations = calculate_fixation_durations(session_02_data)\n", + "session_03_fixation_durations = calculate_fixation_durations(session_03_data)\n", + "\n", + "# convert to ms\n", + "baseline_fixation_durations_ms = baseline_fixation_durations * 1000\n", + "session_01_fixation_durations_ms = session_01_fixation_durations * 1000\n", + "session_02_fixation_durations_ms = session_02_fixation_durations * 1000\n", + "session_03_fixation_durations_ms = session_03_fixation_durations * 1000\n", + "\n", + "# average fixation\n", + "baseline_avg_fixation_duration_ms = baseline_fixation_durations_ms.mean()\n", + "session_01_avg_fixation_duration_ms = session_01_fixation_durations_ms.mean()\n", + "session_02_avg_fixation_duration_ms = session_02_fixation_durations_ms.mean()\n", + "session_03_avg_fixation_duration_ms = session_03_fixation_durations_ms.mean()\n", + "\n", + "# distribution plot\n", + "plt.figure(figsize=(12, 6))\n", + "plt.hist(baseline_fixation_durations_ms, bins=30, alpha=0.5, label='Baseline')\n", + "plt.hist(session_01_fixation_durations_ms, bins=30, alpha=0.5, label='Session 01')\n", + "plt.hist(session_02_fixation_durations_ms, bins=30, alpha=0.5, label='Session 02')\n", + "plt.hist(session_03_fixation_durations_ms, bins=30, alpha=0.5, label='Session 03')\n", + "plt.axvline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\n", + "plt.xlabel('Fixation Duration (ms)')\n", + "plt.ylabel('Frequency')\n", + "plt.legend()\n", + "plt.title('Distribution of Fixation Durations')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# bar plot average\n", + "average_durations = [baseline_avg_fixation_duration_ms, session_01_avg_fixation_duration_ms, session_02_avg_fixation_duration_ms, session_03_avg_fixation_duration_ms]\n", + "labels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.bar(labels, average_durations, color=['blue', 'orange', 'green', 'red'])\n", + "plt.axhline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\n", + "plt.ylabel('Average Fixation Duration (ms)')\n", + "plt.title('Average Fixation Duration by Dataset')\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# anxiety threshold plot\n", + "plt.figure(figsize=(12, 6))\n", + "plt.hist(baseline_fixation_durations_ms, bins=30, alpha=0.5, label='Baseline')\n", + "plt.hist(session_01_fixation_durations_ms, bins=30, alpha=0.5, label='Session 01')\n", + "plt.hist(session_02_fixation_durations_ms, bins=30, alpha=0.5, label='Session 02')\n", + "plt.hist(session_03_fixation_durations_ms, bins=30, alpha=0.5, label='Session 03')\n", + "plt.axvline(250, color='r', linestyle='dashed', linewidth=1, label='Anxiety Threshold (<250 ms)')\n", + "plt.xlabel('Fixation Duration (ms)')\n", + "plt.ylabel('Frequency')\n", + "plt.legend()\n", + "plt.title('Distribution of Fixation Durations with Anxiety Threshold')\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "316085d1-78a2-414e-8c1f-7561f6c1389a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "baseline_data = pd.read_csv(f'{DATA}/sed.csv')\n", + "session_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "session_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "session_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# clean pupil\n", + "def clean_pupil_data(df):\n", + " # filter invalid rows\n", + " df = df[df['pupil'] > 0]\n", + " return df\n", + "\n", + "# clean pupil data\n", + "baseline_data_clean = clean_pupil_data(baseline_data)\n", + "session_01_data_clean = clean_pupil_data(session_01_data)\n", + "session_02_data_clean = clean_pupil_data(session_02_data)\n", + "session_03_data_clean = clean_pupil_data(session_03_data)\n", + "\n", + "# Calculate average pupil\n", + "baseline_avg_pupil_size = baseline_data_clean['pupil'].mean()\n", + "session_01_avg_pupil_size = session_01_data_clean['pupil'].mean()\n", + "session_02_avg_pupil_size = session_02_data_clean['pupil'].mean()\n", + "session_03_avg_pupil_size = session_03_data_clean['pupil'].mean()\n", + "\n", + "# dilation threshold\n", + "pupil_dilation_threshold = 3.5\n", + "\n", + "# check pupil anxiety\n", + "increased_pupil_baseline = baseline_avg_pupil_size > pupil_dilation_threshold\n", + "increased_pupil_01 = session_01_avg_pupil_size > pupil_dilation_threshold\n", + "increased_pupil_02 = session_02_avg_pupil_size > pupil_dilation_threshold\n", + "increased_pupil_03 = session_03_avg_pupil_size > pupil_dilation_threshold\n", + "\n", + "# display results\n", + "print(f'Baseline Average Pupil Size: {baseline_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_baseline else \"Normal\"}')\n", + "print(f'Session 1 Average Pupil Size: {session_01_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_01 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 1: {session_01_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\n", + "print(f'Session 2 Average Pupil Size: {session_02_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_02 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 2: {session_02_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\n", + "print(f'Session 3 Average Pupil Size: {session_03_avg_pupil_size:.2f} mm - {\"Increased\" if increased_pupil_03 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 3: {session_03_avg_pupil_size - baseline_avg_pupil_size:.2f} mm')\n", + "\n", + "# distribution plot\n", + "plt.figure(figsize=(12, 6))\n", + "plt.hist(baseline_data_clean['pupil'], bins=30, alpha=0.5, label='Baseline')\n", + "plt.hist(session_01_data_clean['pupil'], bins=30, alpha=0.5, label='Session 01')\n", + "plt.hist(session_02_data_clean['pupil'], bins=30, alpha=0.5, label='Session 02')\n", + "plt.hist(session_03_data_clean['pupil'], bins=30, alpha=0.5, label='Session 03')\n", + "plt.axvline(pupil_dilation_threshold, color='r', linestyle='dashed', linewidth=1, label='Pupil Dilation Threshold (3.5 mm)')\n", + "plt.xlabel('Pupil Size (mm)')\n", + "plt.ylabel('Frequency')\n", + "plt.legend()\n", + "plt.title('Distribution of Pupil Sizes')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# Bar plot average\n", + "average_pupil_sizes = [baseline_avg_pupil_size, session_01_avg_pupil_size, session_02_avg_pupil_size, session_03_avg_pupil_size]\n", + "labels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.bar(labels, average_pupil_sizes, color=['blue', 'orange', 'green', 'red'])\n", + "plt.axhline(pupil_dilation_threshold, color='r', linestyle='dashed', linewidth=1, label='Pupil Dilation Threshold (3.5 mm)')\n", + "plt.ylabel('Average Pupil Size (mm)')\n", + "plt.title('Average Pupil Size by Dataset')\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "652e4cf1-d0fd-4224-9a0e-7a7a06b0564c", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "baseline_data = pd.read_csv(f'{DATA}/sed.csv')\n", + "session_01_data = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "session_02_data = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "session_03_data = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# calculate saccade\n", + "def calculate_saccade_frequency(df, velocity_threshold=0.1):\n", + " df = df.copy()\n", + " # gaze velocity\n", + " df['gaze_velocity'] = np.sqrt(df['gazeDir.x'].diff()**2 +\n", + " df['gazeDir.y'].diff()**2 +\n", + " df['gazeDir.z'].diff()**2) / df['reltime'].diff()\n", + "\n", + " # identify saccades\n", + " df['is_saccade'] = df['gaze_velocity'] > velocity_threshold\n", + "\n", + " # count saccade events\n", + " total_time = df['reltime'].iloc[-1] - df['reltime'].iloc[0]\n", + " saccade_onsets = df['is_saccade'] & ~df['is_saccade'].shift(fill_value=False)\n", + " saccade_count = saccade_onsets.sum()\n", + " saccade_frequency = saccade_count / total_time if total_time > 0 else 0.0\n", + "\n", + " return saccade_frequency\n", + "\n", + "# calculate saccade frequency\n", + "baseline_saccade_frequency = calculate_saccade_frequency(baseline_data)\n", + "session_01_saccade_frequency = calculate_saccade_frequency(session_01_data)\n", + "session_02_saccade_frequency = calculate_saccade_frequency(session_02_data)\n", + "session_03_saccade_frequency = calculate_saccade_frequency(session_03_data)\n", + "\n", + "# frequency threshold\n", + "saccade_frequency_threshold = 5\n", + "\n", + "# check saccade anxiety\n", + "increased_saccade_frequency_baseline = baseline_saccade_frequency > saccade_frequency_threshold\n", + "increased_saccade_frequency_01 = session_01_saccade_frequency > saccade_frequency_threshold\n", + "increased_saccade_frequency_02 = session_02_saccade_frequency > saccade_frequency_threshold\n", + "increased_saccade_frequency_03 = session_03_saccade_frequency > saccade_frequency_threshold\n", + "\n", + "# display results\n", + "print(f'Baseline Saccade Frequency: {baseline_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_baseline else \"Normal\"}')\n", + "print(f'Session 1 Saccade Frequency: {session_01_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_01 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 1: {session_01_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\n", + "print(f'Session 2 Saccade Frequency: {session_02_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_02 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 2: {session_02_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\n", + "print(f'Session 3 Saccade Frequency: {session_03_saccade_frequency:.2f} saccades/second - {\"Increased\" if increased_saccade_frequency_03 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 3: {session_03_saccade_frequency - baseline_saccade_frequency:.2f} saccades/second')\n", + "\n", + "# plot saccade frequency\n", + "saccade_frequencies = [baseline_saccade_frequency, session_01_saccade_frequency, session_02_saccade_frequency, session_03_saccade_frequency]\n", + "labels = ['Baseline', 'Session 01', 'Session 02', 'Session 03']\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.bar(labels, saccade_frequencies, color=['blue', 'orange', 'green', 'red'])\n", + "plt.axhline(saccade_frequency_threshold, color='r', linestyle='dashed', linewidth=1, label='Saccade Frequency Threshold (>5 saccades/second)')\n", + "plt.ylabel('Saccade Frequency (saccades/second)')\n", + "plt.title('Saccade Frequency by Dataset')\n", + "plt.legend()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0zomnkga4i", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load fixation data\n", + "sessions = {}\n", + "for s in [0, 1, 2, 3]:\n", + " filename = f'{DATA}/sed_fix.csv' if s == 0 else f'{DATA}/sed_fix_{s:02d}.csv'\n", + " df = pd.read_csv(filename)\n", + " label = 'Baseline' if s == 0 else f'Session {s:02d}'\n", + " durations = df[df['fixation'] == True]['duration'].dropna()\n", + " sessions[label] = durations\n", + "\n", + "# descriptive stats\n", + "print(\"=== Fixation Duration Stats ===\\n\")\n", + "for name, dur in sessions.items():\n", + " print(f\"{name}: n={len(dur)}, mean={dur.mean():.4f}s, median={dur.median():.4f}s, SD={dur.std():.4f}s\")\n", + "\n", + "# Kruskal-Wallis\n", + "print(\"\\n=== Kruskal-Wallis Test ===\")\n", + "h, p = stats.kruskal(*sessions.values())\n", + "print(f\"H={h:.3f}, p={p:.4f}\")\n", + "\n", + "# histograms\n", + "fig, axes = plt.subplots(2, 2, figsize=(12, 10))\n", + "for ax, (name, dur) in zip(axes.flat, sessions.items()):\n", + " ax.hist(dur, bins=50, edgecolor='black', alpha=0.7)\n", + " ax.axvline(dur.mean(), color='red', linestyle='--', label=f'mean={dur.mean():.4f}s')\n", + " ax.axvline(dur.median(), color='blue', linestyle=':', label=f'median={dur.median():.4f}s')\n", + " ax.set_title(name)\n", + " ax.set_xlabel('Fixation Duration (s)')\n", + " ax.set_ylabel('Count')\n", + " ax.legend(fontsize=8)\n", + "\n", + "plt.suptitle('Fixation Duration Distributions')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "yif61xjogm", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "PSY = '../data/case-study/psychometric'\n", + "\n", + "# load all modalities\n", + "hr_sessions = {}\n", + "ibi_sessions = {}\n", + "sed_sessions = {}\n", + "psy_sessions = {}\n", + "\n", + "for s in [1, 2, 3]:\n", + " hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n", + " hr = hr[hr['confidence'] == 1.0]\n", + " hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " hr_sessions[s] = hr\n", + " \n", + " ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n", + " ibi['datetime'] = pd.to_datetime(ibi['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " ibi_sessions[s] = ibi\n", + " \n", + " sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n", + " sed['datetime'] = pd.to_datetime(sed['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " sed_sessions[s] = sed\n", + " \n", + " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{s:02d}.csv')\n", + " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy_sessions[s] = psy\n", + "\n", + "# baseline stats\n", + "hr_bl = pd.read_csv(f'{DATA}/hr.csv')\n", + "hr_bl = hr_bl[hr_bl['confidence'] == 1.0]\n", + "bl_hr_mean, bl_hr_std = hr_bl['heart_rate'].mean(), hr_bl['heart_rate'].std()\n", + "\n", + "ibi_bl = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_clean = ibi_bl['ibi'][(ibi_bl['ibi'] > 300) & (ibi_bl['ibi'] < 2000)]\n", + "bl_sdnn = ibi_clean.std()\n", + "bl_rmssd = np.sqrt(np.mean(np.diff(ibi_clean.values)**2))\n", + "\n", + "sed_bl = pd.read_csv(f'{DATA}/sed.csv')\n", + "bl_pupil_mean = sed_bl[sed_bl['pupil'] > 0]['pupil'].mean()\n", + "bl_pupil_std = sed_bl[sed_bl['pupil'] > 0]['pupil'].std()\n", + "\n", + "# per-question biometrics\n", + "rows = []\n", + "for s in [1, 2, 3]:\n", + " psy = psy_sessions[s]\n", + " for _, q in psy.iterrows():\n", + " start, end = q['Question Start Time'], q['Question Answer Time']\n", + " \n", + " # HR during question\n", + " hr_seg = hr_sessions[s][(hr_sessions[s]['datetime'] >= start) & (hr_sessions[s]['datetime'] <= end)]\n", + " avg_hr = hr_seg['heart_rate'].mean() if len(hr_seg) > 0 else np.nan\n", + " \n", + " # IBI/HRV during question\n", + " ibi_seg = ibi_sessions[s][(ibi_sessions[s]['datetime'] >= start) & (ibi_sessions[s]['datetime'] <= end)]\n", + " ibi_vals = ibi_seg['ibi'][(ibi_seg['ibi'] > 300) & (ibi_seg['ibi'] < 2000)]\n", + " sdnn = ibi_vals.std() if len(ibi_vals) > 2 else np.nan\n", + " rmssd = np.sqrt(np.mean(np.diff(ibi_vals.values)**2)) if len(ibi_vals) > 2 else np.nan\n", + " \n", + " # pupil during question\n", + " sed_seg = sed_sessions[s][(sed_sessions[s]['datetime'] >= start) & (sed_sessions[s]['datetime'] <= end)]\n", + " pupil_seg = sed_seg[sed_seg['pupil'] > 0]['pupil']\n", + " avg_pupil = pupil_seg.mean() if len(pupil_seg) > 0 else np.nan\n", + " \n", + " # extract question number\n", + " test_str = str(q['Test'])\n", + " q_num = ''.join(c for c in test_str.split('.')[0] if c.isdigit())\n", + " label = f\"S{s} {q['Type']} Q{q_num}\" if q_num else f\"S{s} {q['Type']}\"\n", + " \n", + " rows.append({\n", + " 'label': label, 'session': s, 'type': q['Type'],\n", + " 'HR': avg_hr, 'SDNN': sdnn, 'RMSSD': rmssd, 'Pupil': avg_pupil\n", + " })\n", + "\n", + "df = pd.DataFrame(rows)\n", + "\n", + "# z-score relative to baseline\n", + "df['HR_z'] = (df['HR'] - bl_hr_mean) / bl_hr_std if bl_hr_std > 0 else 0\n", + "df['SDNN_z'] = -(df['SDNN'] - bl_sdnn) / bl_sdnn if bl_sdnn > 0 else 0\n", + "df['RMSSD_z'] = -(df['RMSSD'] - bl_rmssd) / bl_rmssd if bl_rmssd > 0 else 0\n", + "df['Pupil_z'] = (df['Pupil'] - bl_pupil_mean) / bl_pupil_std if bl_pupil_std > 0 else 0\n", + "\n", + "# composite stress index\n", + "z_cols = ['HR_z', 'SDNN_z', 'RMSSD_z', 'Pupil_z']\n", + "df['Stress Index'] = df[z_cols].mean(axis=1)\n", + "\n", + "# heatmap matrix\n", + "heatmap_data = df.set_index('label')[z_cols + ['Stress Index']].dropna()\n", + "heatmap_data.columns = ['HR', 'SDNN\\n(inverted)', 'RMSSD\\n(inverted)', 'Pupil', 'Composite\\nStress']\n", + "\n", + "plt.figure(figsize=(10, max(8, len(heatmap_data) * 0.25)))\n", + "sns.heatmap(heatmap_data, cmap='RdYlBu_r', center=0, annot=True, fmt='.1f',\n", + " linewidths=0.5, cbar_kws={'label': 'Z-score (higher = more stress)'})\n", + "plt.title('Multimodal Stress Response per Question\\n(z-scored vs baseline, SDNN/RMSSD inverted)')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# top stressed questions\n", + "top = df.nlargest(10, 'Stress Index')[['label', 'type', 'session', 'Stress Index']]\n", + "print(\"=== Top 10 Highest Stress Questions ===\\n\")\n", + "print(top.to_string(index=False))\n", + "\n", + "# average by question type\n", + "print(\"\\n=== Average Stress Index by Question Type ===\\n\")\n", + "type_stress = df.groupby('type')['Stress Index'].agg(['mean', 'std', 'count'])\n", + "print(type_stress.sort_values('mean', ascending=False).round(3).to_string())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/3_Model.ipynb b/case-study/3_Model.ipynb deleted file mode 100755 index e3d9ef7..0000000 --- a/case-study/3_Model.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "4a4bd179-fa92-49c0-ae9c-ab1122bf01c5", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\n# load and merge\nsession_dfs = []\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n\n hr_clean = hr[hr['confidence'] == 1.0]\n ibi_clean = ibi[ibi['ibi'] > 0]\n\n hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n\n merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n _fmt = '%Y/%m/%d %H:%M:%S.%f'\n merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n merged = merged.sort_values('datetime')\n sed = sed.sort_values('datetime')\n merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n session_dfs.append(merged)\n\nall_data_combined = pd.concat(session_dfs, ignore_index=True)\n\nprint(\"Columns available in DataFrame:\", all_data_combined.columns)\n\n# define features\nfeatures = [\n 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n]\n\nexisting_features = [f for f in features if f in all_data_combined.columns]\n\n# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\nconstant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\nif constant_features:\n print(f'Dropping constant columns: {constant_features}')\n existing_features = [f for f in existing_features if f not in constant_features]\n\nmissing_features = set(features) - set(existing_features)\nif missing_features:\n print(f\"Missing columns in the DataFrame: {missing_features}\")\n\nall_data_combined = all_data_combined.dropna(subset=existing_features)\n\n# standardize features\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(all_data_combined[existing_features])\n\n# pca for visualization\npca = PCA(n_components=2)\nX_pca = pca.fit_transform(X_scaled)\nprint(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n\n# find optimal k\nsilhouette_scores = []\nK = range(2, 11)\nfitted_models = {}\nfor k in K:\n km = KMeans(n_clusters=k, n_init=10, random_state=42)\n km.fit(X_scaled)\n fitted_models[k] = km\n silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n\nplt.figure(figsize=(10, 6))\nplt.plot(K, silhouette_scores, marker='o')\nplt.xlabel('Number of clusters')\nplt.ylabel('Silhouette Score')\nplt.title('Silhouette Score vs. Number of Clusters')\nplt.show()\nplt.close()\n\n# apply optimal k\noptimal_k = list(K)[np.argmax(silhouette_scores)]\nprint(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n\nkmeans = fitted_models[optimal_k]\nclusters = kmeans.labels_\n\n# pca cluster plot\nplt.figure(figsize=(10, 6))\nplt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\nplt.xlabel('PCA Component 1')\nplt.ylabel('PCA Component 2')\nplt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\nplt.colorbar(label='Cluster')\nplt.show()\nplt.close()\n\n# quality metrics\ncluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\ncluster_sizes = pd.Series(clusters).value_counts()\n\ncluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\nprint(\"Cluster Centers:\")\nprint(cluster_df.to_string())\nprint(\"\\nCluster Sizes:\\n\", cluster_sizes)\n\ndbi = davies_bouldin_score(X_scaled, clusters)\nchi = calinski_harabasz_score(X_scaled, clusters)\n\nprint(f\"Davies-Bouldin Index: {dbi}\")\nprint(f\"Calinski-Harabasz Index: {chi}\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/3_Model01.ipynb b/case-study/3_Model01.ipynb deleted file mode 100755 index 38f683d..0000000 --- a/case-study/3_Model01.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "9a746a4a-209f-47fb-a1b7-fbf594f4b218", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import silhouette_score\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\n# load and merge\nsession_dfs = []\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n\n hr_clean = hr[hr['confidence'] == 1.0]\n ibi_clean = ibi[ibi['ibi'] > 0]\n\n hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n\n merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n _fmt = '%Y/%m/%d %H:%M:%S.%f'\n merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n merged = merged.sort_values('datetime')\n sed = sed.sort_values('datetime')\n merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n session_dfs.append(merged)\n\nall_data_combined = pd.concat(session_dfs, ignore_index=True)\n\nprint(\"Columns available in DataFrame:\", all_data_combined.columns)\n\n# define features\nfeatures = [\n 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n]\n\nexisting_features = [feature for feature in features if feature in all_data_combined.columns]\n\n# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\nconstant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\nif constant_features:\n print(f'Dropping constant columns: {constant_features}')\n existing_features = [f for f in existing_features if f not in constant_features]\n\nmissing_features = set(features) - set(existing_features)\nif missing_features:\n print(f\"Missing columns in the DataFrame: {missing_features}\")\n\nall_data_combined = all_data_combined.dropna(subset=existing_features)\n\n# standardize features\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(all_data_combined[existing_features])\n\n# pca for visualization\npca = PCA(n_components=2)\nX_pca = pca.fit_transform(X_scaled)\nprint(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n\n# find optimal k\nsilhouette_scores = []\nK = range(2, 11)\nfitted_models = {}\nfor k in K:\n km = KMeans(n_clusters=k, n_init=10, random_state=42)\n km.fit(X_scaled)\n fitted_models[k] = km\n silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n\nplt.figure(figsize=(10, 6))\nplt.plot(K, silhouette_scores, marker='o')\nplt.xlabel('Number of clusters')\nplt.ylabel('Silhouette Score')\nplt.title('Silhouette Score vs. Number of Clusters')\nplt.show()\nplt.close()\n\n# auto-select optimal k\noptimal_k = list(K)[np.argmax(silhouette_scores)]\nprint(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n\nkmeans = fitted_models[optimal_k]\nclusters = kmeans.labels_\n\n# pca cluster plot\nplt.figure(figsize=(10, 6))\nplt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\nplt.xlabel('PCA Component 1')\nplt.ylabel('PCA Component 2')\nplt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\nplt.colorbar(label='Cluster')\nplt.show()\nplt.close()\n\n# cluster centers\ncluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\ncluster_sizes = pd.Series(clusters).value_counts()\n\ncluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\nprint(\"Cluster Centers:\")\nprint(cluster_df.to_string())\nprint(\"\\nCluster Sizes:\\n\", cluster_sizes)" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/3_clustering.ipynb b/case-study/3_clustering.ipynb new file mode 100755 index 0000000..2fa2ece --- /dev/null +++ b/case-study/3_clustering.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "897c5eb7", + "metadata": { + "mms_tag": "model_caveat" + }, + "source": [ + "## ⚠️ What this clustering does and does not show\n", + "\n", + "The rows clustered below are **per-timestamp samples from a single participant's three sessions**, aligned by matching each ~1 Hz cardiac sample to its nearest eye-tracking sample (`merge_asof`, nearest). They are **not independent observations**, so the silhouette, Davies-Bouldin and Calinski-Harabasz scores are inflated by autocorrelation — they describe *momentary physiological sub-states within this one recording*, not clusters of people or a validated typology. There is **no held-out validation**: `k` is chosen by maximising silhouette on the same data it is scored on. Treat the clusters as exploratory structure in one subject, and read any 'anxiety/stress' labels as hypotheses, not findings." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a4bd179-fa92-49c0-ae9c-ab1122bf01c5", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load and merge\n", + "session_dfs = []\n", + "for s in [1, 2, 3]:\n", + " hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n", + " ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n", + " sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n", + "\n", + " hr_clean = hr[hr['confidence'] == 1.0]\n", + " ibi_clean = ibi[ibi['ibi'] > 0]\n", + "\n", + " hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n", + " ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n", + "\n", + " merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n", + " # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n", + " # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n", + " _fmt = '%Y/%m/%d %H:%M:%S.%f'\n", + " merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n", + " sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n", + " merged = merged.sort_values('datetime')\n", + " sed = sed.sort_values('datetime')\n", + " merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n", + " session_dfs.append(merged)\n", + "\n", + "all_data_combined = pd.concat(session_dfs, ignore_index=True)\n", + "\n", + "print(\"Columns available in DataFrame:\", all_data_combined.columns)\n", + "\n", + "# define features\n", + "features = [\n", + " 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n", + " 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n", + "]\n", + "\n", + "existing_features = [f for f in features if f in all_data_combined.columns]\n", + "\n", + "# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\n", + "constant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\n", + "if constant_features:\n", + " print(f'Dropping constant columns: {constant_features}')\n", + " existing_features = [f for f in existing_features if f not in constant_features]\n", + "\n", + "missing_features = set(features) - set(existing_features)\n", + "if missing_features:\n", + " print(f\"Missing columns in the DataFrame: {missing_features}\")\n", + "\n", + "all_data_combined = all_data_combined.dropna(subset=existing_features)\n", + "\n", + "# standardize features\n", + "scaler = StandardScaler()\n", + "X_scaled = scaler.fit_transform(all_data_combined[existing_features])\n", + "\n", + "# pca for visualization\n", + "pca = PCA(n_components=2)\n", + "X_pca = pca.fit_transform(X_scaled)\n", + "print(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n", + "\n", + "# find optimal k\n", + "silhouette_scores = []\n", + "K = range(2, 11)\n", + "fitted_models = {}\n", + "for k in K:\n", + " km = KMeans(n_clusters=k, n_init=10, random_state=42)\n", + " km.fit(X_scaled)\n", + " fitted_models[k] = km\n", + " silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(K, silhouette_scores, marker='o')\n", + "plt.xlabel('Number of clusters')\n", + "plt.ylabel('Silhouette Score')\n", + "plt.title('Silhouette Score vs. Number of Clusters')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# apply optimal k\n", + "optimal_k = list(K)[np.argmax(silhouette_scores)]\n", + "print(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n", + "\n", + "kmeans = fitted_models[optimal_k]\n", + "clusters = kmeans.labels_\n", + "\n", + "# pca cluster plot\n", + "plt.figure(figsize=(10, 6))\n", + "plt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\n", + "plt.xlabel('PCA Component 1')\n", + "plt.ylabel('PCA Component 2')\n", + "plt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\n", + "plt.colorbar(label='Cluster')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# quality metrics\n", + "cluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\n", + "cluster_sizes = pd.Series(clusters).value_counts()\n", + "\n", + "cluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\n", + "print(\"Cluster Centers:\")\n", + "print(cluster_df.to_string())\n", + "print(\"\\nCluster Sizes:\\n\", cluster_sizes)\n", + "\n", + "dbi = davies_bouldin_score(X_scaled, clusters)\n", + "chi = calinski_harabasz_score(X_scaled, clusters)\n", + "\n", + "print(f\"Davies-Bouldin Index: {dbi}\")\n", + "print(f\"Calinski-Harabasz Index: {chi}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/AVG HR.ipynb b/case-study/AVG HR.ipynb deleted file mode 100755 index 09ba4fc..0000000 --- a/case-study/AVG HR.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "e972a24c-b4d6-468e-891c-371d28f5a8d0", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/case-study/processed'\n\n# load baseline HR\nbaseline_hr = pd.read_csv(f'{DATA}/hr.csv')\n\n# load HR data\nhr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\nhr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n\n# clean HR data\ndef clean_hr_data(hr_data):\n hr_data_clean = hr_data[hr_data['confidence'] == 1.0]\n return hr_data_clean\n\nbaseline_hr_clean = clean_hr_data(baseline_hr)\nhr_01_clean = clean_hr_data(hr_01)\nhr_02_clean = clean_hr_data(hr_02)\nhr_03_clean = clean_hr_data(hr_03)\n\n# average per session\nbaseline_avg_hr = baseline_hr_clean['heart_rate'].mean()\navg_hr_01 = hr_01_clean['heart_rate'].mean()\navg_hr_02 = hr_02_clean['heart_rate'].mean()\navg_hr_03 = hr_03_clean['heart_rate'].mean()\n\n# baseline difference\nhr_difference_01 = avg_hr_01 - baseline_avg_hr\nhr_difference_02 = avg_hr_02 - baseline_avg_hr\nhr_difference_03 = avg_hr_03 - baseline_avg_hr\n\n# anxiety threshold\nhr_anxiety_threshold = 90\n\n# check HR anxiety\nanxiety_hr_baseline = baseline_avg_hr > hr_anxiety_threshold\nanxiety_hr_01 = avg_hr_01 > hr_anxiety_threshold\nanxiety_hr_02 = avg_hr_02 > hr_anxiety_threshold\nanxiety_hr_03 = avg_hr_03 > hr_anxiety_threshold\n\n# display results\nprint(f'Baseline Average HR: {baseline_avg_hr:.2f} BPM - {\"Anxiety\" if anxiety_hr_baseline else \"Normal\"}')\nprint(f'Session 1 Average HR: {avg_hr_01:.2f} BPM - {\"Anxiety\" if anxiety_hr_01 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 1: {hr_difference_01:.2f} BPM')\nprint(f'Session 2 Average HR: {avg_hr_02:.2f} BPM - {\"Anxiety\" if anxiety_hr_02 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 2: {hr_difference_02:.2f} BPM')\nprint(f'Session 3 Average HR: {avg_hr_03:.2f} BPM - {\"Anxiety\" if anxiety_hr_03 else \"Normal\"}')\nprint(f'Difference from Baseline in Session 3: {hr_difference_03:.2f} BPM')" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/AVG HRV.ipynb b/case-study/AVG HRV.ipynb deleted file mode 100755 index 1398e07..0000000 --- a/case-study/AVG HRV.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "ac681000-ac29-47b7-aa25-16e8e14f53a2", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\n# load IBI data\nbaseline_ibi = pd.read_csv(f'{DATA}/ibi.csv')\nibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\nibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\nibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n\n# clean IBI data\ndef clean_ibi_data(ibi_data):\n ibi_data_clean = ibi_data[ibi_data['ibi'] > 0]\n return ibi_data_clean\n\nbaseline_ibi_clean = clean_ibi_data(baseline_ibi)\nibi_01_clean = clean_ibi_data(ibi_01)\nibi_02_clean = clean_ibi_data(ibi_02)\nibi_03_clean = clean_ibi_data(ibi_03)\n\n# calculate RMSSD\ndef calculate_rmssd(ibi_values):\n diff_nn_intervals = np.diff(ibi_values)\n squared_diffs = diff_nn_intervals ** 2\n rmssd = np.sqrt(np.mean(squared_diffs))\n return rmssd\n\n# calculate SDNN\ndef calculate_sdnn(ibi_values):\n sdnn = np.std(ibi_values, ddof=1)\n return sdnn\n\n# compute HRV metrics\nrmssd_baseline = calculate_rmssd(baseline_ibi_clean['ibi'].dropna().values)\nsdnn_baseline = calculate_sdnn(baseline_ibi_clean['ibi'].dropna().values)\n\nrmssd_01 = calculate_rmssd(ibi_01_clean['ibi'].dropna().values)\nsdnn_01 = calculate_sdnn(ibi_01_clean['ibi'].dropna().values)\n\nrmssd_02 = calculate_rmssd(ibi_02_clean['ibi'].dropna().values)\nsdnn_02 = calculate_sdnn(ibi_02_clean['ibi'].dropna().values)\n\nrmssd_03 = calculate_rmssd(ibi_03_clean['ibi'].dropna().values)\nsdnn_03 = calculate_sdnn(ibi_03_clean['ibi'].dropna().values)\n\n# display HRV metrics\nprint(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms')\nprint(f'Session 1 RMSSD: {rmssd_01:.2f} ms, SDNN: {sdnn_01:.2f} ms')\nprint(f'Session 2 RMSSD: {rmssd_02:.2f} ms, SDNN: {sdnn_02:.2f} ms')\nprint(f'Session 3 RMSSD: {rmssd_03:.2f} ms, SDNN: {sdnn_03:.2f} ms')\n\n# anxiety thresholds\nrmssd_threshold = 20\nsdnn_threshold = 50\n\n# check HRV anxiety\nanxiety_rmssd_baseline = rmssd_baseline < rmssd_threshold\nanxiety_sdnn_baseline = sdnn_baseline < sdnn_threshold\n\nanxiety_rmssd_01 = rmssd_01 < rmssd_threshold\nanxiety_sdnn_01 = sdnn_01 < sdnn_threshold\n\nanxiety_rmssd_02 = rmssd_02 < rmssd_threshold\nanxiety_sdnn_02 = sdnn_02 < sdnn_threshold\n\nanxiety_rmssd_03 = rmssd_03 < rmssd_threshold\nanxiety_sdnn_03 = sdnn_03 < sdnn_threshold\n\n# display anxiety results\nprint(f'Baseline RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_baseline else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_baseline else \"No\"}')\nprint(f'Session 1 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_01 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_01 else \"No\"}')\nprint(f'Session 2 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_02 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_02 else \"No\"}')\nprint(f'Session 3 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_03 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_03 else \"No\"}')" - }, - { - "cell_type": "code", - "id": "00jqik0aldvn", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\n\nDATA = '../data/case-study/processed'\n\n# load IBI data\nibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\nibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\nibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\nibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n\ndef clean_ibi(df):\n ibi = df['ibi']\n # physiological bounds\n clean = ibi[(ibi > 300) & (ibi < 2000)]\n removed = len(ibi) - len(clean)\n return clean, removed\n\ndef hrv_metrics(ibi_values):\n nn = ibi_values.values\n sdnn = np.std(nn, ddof=1)\n diffs = np.diff(nn)\n rmssd = np.sqrt(np.mean(diffs**2))\n pnn50 = np.sum(np.abs(diffs) > 50) / len(diffs) * 100\n return sdnn, rmssd, pnn50\n\nsessions = {\n 'Baseline': ibi_baseline,\n 'Session 01': ibi_01,\n 'Session 02': ibi_02,\n 'Session 03': ibi_03\n}\n\n# artifact rejection + HRV\nprint(\"=== IBI Artifact Rejection (300-2000ms bounds) ===\\n\")\nresults = {}\nfor name, df in sessions.items():\n clean, removed = clean_ibi(df)\n sdnn, rmssd, pnn50 = hrv_metrics(clean)\n results[name] = {'N': len(clean), 'Removed': removed, 'SDNN': sdnn, 'RMSSD': rmssd, 'pNN50': pnn50}\n print(f\"{name}: {removed} artifacts removed, {len(clean)} valid beats\")\n\n# summary table\nprint(\"\\n=== HRV Metrics (Time-Domain) ===\\n\")\nhrv_table = pd.DataFrame(results).T.round(2)\nprint(hrv_table.to_string())\n\n# compare sessions\nprint(\"\\n=== Baseline vs Session Comparisons ===\\n\")\nbaseline_ibi, _ = clean_ibi(ibi_baseline)\nfor name in ['Session 01', 'Session 02', 'Session 03']:\n test_ibi, _ = clean_ibi(sessions[name])\n u_stat, p = stats.mannwhitneyu(baseline_ibi, test_ibi, alternative='two-sided')\n diff = test_ibi.mean() - baseline_ibi.mean()\n print(f\"{name} vs Baseline: mean IBI diff={diff:.1f}ms, U p={p:.4f}\")", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/CSV.ipynb b/case-study/CSV.ipynb deleted file mode 100755 index a495906..0000000 --- a/case-study/CSV.ipynb +++ /dev/null @@ -1,45 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "7f81ab37-5d56-431a-b982-2617a458a8ef", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": "import pandas as pd\nimport os" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ba90a5e1-2d6c-4b01-8020-166603f19cbb", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": "RAW = '../data/case-study/raw'\nPROCESSED = '../data/case-study/processed'\n\nbase_names = [\n 'hr', 'hr_01', 'hr_02', 'hr_03',\n 'sed', 'sed_01', 'sed_02', 'sed_03',\n 'ibi', 'ibi_01', 'ibi_02', 'ibi_03',\n]\n\nfor name in base_names:\n txt_path = os.path.join(RAW, f'{name}.txt')\n csv_path = os.path.join(PROCESSED, f'{name}.csv')\n df = pd.read_csv(txt_path, delimiter=';')\n df.to_csv(csv_path, index=False)\n print(f'{txt_path} -> {csv_path} ({len(df)} rows)')" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/CSV_Fix.ipynb b/case-study/CSV_Fix.ipynb deleted file mode 100755 index a165c4f..0000000 --- a/case-study/CSV_Fix.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "d6305819-7ee5-4388-a836-6035322ca88a", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/case-study/processed'\n\n# gaze stability threshold\ngaze_threshold = 0.01\n\nfor s in [0, 1, 2, 3]:\n filename = f'{DATA}/sed_{s:02d}.csv' if s > 0 else f'{DATA}/sed.csv'\n sed_df = pd.read_csv(filename)\n\n # rename columns\n sed_df = sed_df.rename(columns={\n 'gazeDir.x': 'gaze_x',\n 'gazeDir.y': 'gaze_y',\n 'gazeDir.z': 'gaze_z'\n })\n\n # validate data\n null_mask = sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any(axis=1)\n if null_mask.any():\n print(f\"WARNING: Session {s}: dropping {null_mask.sum()} rows with missing values.\")\n sed_df = sed_df.dropna(subset=['reltime', 'gaze_x', 'gaze_y', 'gaze_z'])\n\n # gaze direction diff\n sed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n (sed_df['gaze_y'].diff() ** 2) +\n (sed_df['gaze_z'].diff() ** 2))\n\n # identify fixation points\n sed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n\n # label fixation groups\n sed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n\n # filter fixation points\n fixation_df = sed_df[sed_df['fixation']]\n\n # fixation duration\n fixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\n fixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\n fixation_duration = fixation_duration[['duration']]\n\n # merge durations back\n sed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n\n # save data\n output_path = f'{DATA}/sed_fix_{s:02d}.csv' if s > 0 else f'{DATA}/sed_fix.csv'\n sed_df.to_csv(output_path, index=False)\n label = f\"Session {s}\" if s > 0 else \"Baseline\"\n print(f\"{label}: saved to {output_path}\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/CSV_HRV.ipynb b/case-study/CSV_HRV.ipynb deleted file mode 100755 index 7dad1dc..0000000 --- a/case-study/CSV_HRV.ipynb +++ /dev/null @@ -1,35 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "e12a3de3-d0ba-4103-b55b-4b4420f17041", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/case-study/processed'\n\ndef calculate_hrv_metrics(ibi_series):\n sdnn = ibi_series.std()\n ibi_diff = ibi_series.diff().dropna()\n rmssd = (ibi_diff ** 2).mean() ** 0.5\n return sdnn, rmssd\n\n# process all sessions\nfiles = [('hr', 'ibi', 'hrv')] + [(f'hr_{s:02d}', f'ibi_{s:02d}', f'hrv_{s:02d}') for s in [1, 2, 3]]\n\nfor hr_name, ibi_name, hrv_name in files:\n hr_data = pd.read_csv(f'{DATA}/{hr_name}.csv')\n ibi_data = pd.read_csv(f'{DATA}/{ibi_name}.csv')\n\n combined_data = pd.merge(hr_data, ibi_data, on=['reltime', 'datetime', 'iSensor'], suffixes=('_hr', '_ibi'))\n valid_ibi_data = combined_data[combined_data['ibi'] > 0]\n\n sdnn, rmssd = calculate_hrv_metrics(valid_ibi_data['ibi'])\n\n hrv_data = valid_ibi_data[['reltime', 'datetime']].copy()\n hrv_data['sdnn'] = sdnn\n hrv_data['rmssd'] = rmssd\n\n hrv_data.to_csv(f'{DATA}/{hrv_name}.csv', index=False)\n print(f'{hrv_name}: SDNN = {sdnn:.2f} ms, RMSSD = {rmssd:.2f} ms')" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/KMeans.ipynb b/case-study/KMeans.ipynb deleted file mode 100755 index 48202c0..0000000 --- a/case-study/KMeans.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "5391db33-b306-4875-b0c3-8adde23d5188", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\n# load and merge\nsession_dfs = []\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n\n hr_clean = hr[hr['confidence'] == 1.0]\n ibi_clean = ibi[ibi['ibi'] > 0]\n\n hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n\n merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n _fmt = '%Y/%m/%d %H:%M:%S.%f'\n merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n merged = merged.sort_values('datetime')\n sed = sed.sort_values('datetime')\n merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n session_dfs.append(merged)\n\nall_data_combined = pd.concat(session_dfs, ignore_index=True)\n\nprint(\"Columns available in DataFrame:\", all_data_combined.columns)\n\n# define features\nfeatures = [\n 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n]\n\nexisting_features = [feature for feature in features if feature in all_data_combined.columns]\n\n# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\nconstant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\nif constant_features:\n print(f'Dropping constant columns: {constant_features}')\n existing_features = [f for f in existing_features if f not in constant_features]\n\nmissing_features = set(features) - set(existing_features)\nif missing_features:\n print(f\"Missing columns in the DataFrame: {missing_features}\")\n\nall_data_combined = all_data_combined.dropna(subset=existing_features)\n\n# standardize features\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(all_data_combined[existing_features])\n\n# pca for visualization\npca = PCA(n_components=2)\nX_pca = pca.fit_transform(X_scaled)\nprint(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n\n# find optimal k\nsilhouette_scores = []\nK = range(2, 11)\nfitted_models = {}\nfor k in K:\n km = KMeans(n_clusters=k, random_state=42, n_init=10)\n km.fit(X_scaled)\n fitted_models[k] = km\n silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n\nplt.figure(figsize=(10, 6))\nplt.plot(K, silhouette_scores, marker='o')\nplt.xlabel('Number of clusters')\nplt.ylabel('Silhouette Score')\nplt.title('Silhouette Score vs. Number of Clusters')\nplt.show()\nplt.close()\n\n# auto-select optimal k\noptimal_k = list(K)[np.argmax(silhouette_scores)]\nprint(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n\nkmeans = fitted_models[optimal_k]\nclusters = kmeans.labels_\n\n# pca cluster plot\nplt.figure(figsize=(10, 6))\nplt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\nplt.xlabel('PCA Component 1')\nplt.ylabel('PCA Component 2')\nplt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\nplt.colorbar(label='Cluster')\nplt.show()\nplt.close()\n\n# cluster centers\ncluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\ncluster_sizes = pd.Series(clusters).value_counts()\n\ncluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\nprint(\"Cluster Centers:\")\nprint(cluster_df.to_string())\nprint(\"\\nCluster Sizes:\\n\", cluster_sizes)\n\n# quality metrics\ndbi = davies_bouldin_score(X_scaled, clusters)\nchi = calinski_harabasz_score(X_scaled, clusters)\n\nprint(f\"\\nDavies-Bouldin Index: {dbi:.4f}\")\nprint(f\"Calinski-Harabasz Index: {chi:.4f}\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/Model.ipynb b/case-study/Model.ipynb deleted file mode 100755 index d4208b4..0000000 --- a/case-study/Model.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "40513198-c62e-4319-adc2-ee25adcbe2dc", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score\nimport matplotlib.pyplot as plt\n\nDATA = '../data/case-study/processed'\n\n# load and merge\nsession_dfs = []\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n\n hr_clean = hr[hr['confidence'] == 1.0]\n ibi_clean = ibi[ibi['ibi'] > 0]\n\n hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n\n merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n _fmt = '%Y/%m/%d %H:%M:%S.%f'\n merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n merged = merged.sort_values('datetime')\n sed = sed.sort_values('datetime')\n merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n session_dfs.append(merged)\n\nall_data_combined = pd.concat(session_dfs, ignore_index=True)\n\nprint(\"Columns available in DataFrame:\", all_data_combined.columns)\n\n# define features\nfeatures = [\n 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n]\n\nexisting_features = [feature for feature in features if feature in all_data_combined.columns]\n\n# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\nconstant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\nif constant_features:\n print(f'Dropping constant columns: {constant_features}')\n existing_features = [f for f in existing_features if f not in constant_features]\n\nmissing_features = set(features) - set(existing_features)\nif missing_features:\n print(f\"Missing columns in the DataFrame: {missing_features}\")\n\nall_data_combined = all_data_combined.dropna(subset=existing_features)\n\n# standardize features\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(all_data_combined[existing_features])\n\n# pca for visualization\npca = PCA(n_components=2)\nX_pca = pca.fit_transform(X_scaled)\nprint(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n\n# find optimal k\nsilhouette_scores = []\nK = range(2, 11)\nfitted_models = {}\nfor k in K:\n km = KMeans(n_clusters=k, random_state=42, n_init=10)\n km.fit(X_scaled)\n fitted_models[k] = km\n silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n\nplt.figure(figsize=(10, 6))\nplt.plot(K, silhouette_scores, marker='o')\nplt.xlabel('Number of clusters')\nplt.ylabel('Silhouette Score')\nplt.title('Silhouette Score vs. Number of Clusters')\nplt.show()\nplt.close()\n\n# auto-select optimal k\noptimal_k = list(K)[np.argmax(silhouette_scores)]\nprint(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n\nkmeans = fitted_models[optimal_k]\nclusters = kmeans.labels_\n\n# pca cluster plot\nplt.figure(figsize=(10, 6))\nplt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\nplt.xlabel('PCA Component 1')\nplt.ylabel('PCA Component 2')\nplt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\nplt.colorbar(label='Cluster')\nplt.show()\nplt.close()\n\n# cluster centers\ncluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\ncluster_sizes = pd.Series(clusters).value_counts()\n\ncluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\nprint(\"Cluster Centers:\")\nprint(cluster_df.to_string())\nprint(\"\\nCluster Sizes:\\n\", cluster_sizes)\n\n# quality metrics\nsilhouette_avg = silhouette_score(X_scaled, clusters)\ndbi = davies_bouldin_score(X_scaled, clusters)\nchi = calinski_harabasz_score(X_scaled, clusters)\n\nprint(f\"\\nSilhouette Score: {silhouette_avg:.4f} (range: -1 to 1, higher = better separation)\")\nprint(f\"Davies-Bouldin Index: {dbi:.4f} (lower = better)\")\nprint(f\"Calinski-Harabasz Index: {chi:.4f} (higher = better)\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/Model_02.ipynb b/case-study/Model_02.ipynb deleted file mode 100755 index 728b5d7..0000000 --- a/case-study/Model_02.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "907fb1c2-c722-47fe-863c-8aaf763abcdb", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nDATA = '../data/case-study/processed'\nPSY = '../data/case-study/psychometric'\n\n# load and merge\nsession_dfs = []\nfor s in [1, 2, 3]:\n hr = pd.read_csv(f'{DATA}/hr_{s:02d}.csv')\n ibi = pd.read_csv(f'{DATA}/ibi_{s:02d}.csv')\n sed = pd.read_csv(f'{DATA}/sed_{s:02d}.csv')\n\n hr_clean = hr[hr['confidence'] == 1.0]\n ibi_clean = ibi[ibi['ibi'] > 0]\n\n hr_agg = hr_clean.groupby('datetime')['heart_rate'].mean().reset_index()\n ibi_agg = ibi_clean.groupby('datetime')['ibi'].mean().reset_index()\n\n merged = pd.merge(hr_agg, ibi_agg, on='datetime')\n # eye-tracking ('sed') is ~60 Hz vs ~1 Hz for HR/IBI, so the streams rarely share an\n # exact timestamp; align on nearest time within tolerance (an exact inner join drops ~93% of rows)\n _fmt = '%Y/%m/%d %H:%M:%S.%f'\n merged['datetime'] = pd.to_datetime(merged['datetime'], format=_fmt)\n sed['datetime'] = pd.to_datetime(sed['datetime'], format=_fmt)\n merged = merged.sort_values('datetime')\n sed = sed.sort_values('datetime')\n merged = pd.merge_asof(merged, sed, on='datetime', direction='nearest', tolerance=pd.Timedelta('100ms'))\n session_dfs.append(merged)\n\nall_data_combined = pd.concat(session_dfs, ignore_index=True)\n\nprint(\"Columns available in DataFrame:\", all_data_combined.columns)\n\n# define features\nfeatures = [\n 'heart_rate', 'ibi', 'headPos.x', 'headPos.y', 'headPos.z',\n 'gazeDir.x', 'gazeDir.y', 'gazeDir.z', 'pupil'\n]\n\nexisting_features = [feature for feature in features if feature in all_data_combined.columns]\n\n# drop constant (zero-variance) columns - they carry no clustering signal (e.g. headPos.* are all-zero)\nconstant_features = [f for f in existing_features if all_data_combined[f].nunique(dropna=True) <= 1]\nif constant_features:\n print(f'Dropping constant columns: {constant_features}')\n existing_features = [f for f in existing_features if f not in constant_features]\n\nmissing_features = set(features) - set(existing_features)\nif missing_features:\n print(f\"Missing columns in the DataFrame: {missing_features}\")\n\nall_data_combined = all_data_combined.dropna(subset=existing_features)\n\n# standardize features\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(all_data_combined[existing_features])\n\n# pca for visualization\npca = PCA(n_components=2)\nX_pca = pca.fit_transform(X_scaled)\nprint(f\"PCA explained variance: {pca.explained_variance_ratio_.sum():.1%}\")\n\n# find optimal k\nsilhouette_scores = []\nK = range(2, 11)\nfitted_models = {}\nfor k in K:\n km = KMeans(n_clusters=k, random_state=42, n_init=10)\n km.fit(X_scaled)\n fitted_models[k] = km\n silhouette_scores.append(silhouette_score(X_scaled, km.labels_))\n\n# plot silhouette\nplt.figure(figsize=(10, 6))\nplt.plot(K, silhouette_scores, marker='o')\nplt.xlabel('Number of clusters')\nplt.ylabel('Silhouette Score')\nplt.title('Silhouette Score vs. Number of Clusters')\nplt.show()\nplt.close()\n\n# auto-select k\noptimal_k = list(K)[np.argmax(silhouette_scores)]\nprint(f\"Optimal k selected: {optimal_k} (silhouette score: {max(silhouette_scores):.4f})\")\n\nkmeans = fitted_models[optimal_k]\nclusters = kmeans.labels_\n\n# pca cluster plot\nplt.figure(figsize=(10, 6))\nplt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='tab10', marker='o')\nplt.xlabel('PCA Component 1')\nplt.ylabel('PCA Component 2')\nplt.title(f'K-Means Clusters (k={optimal_k}) in PCA-Reduced Space')\nplt.colorbar(label='Cluster')\nplt.show()\nplt.close()\n\n# cluster profiles\nall_data_combined['cluster'] = clusters\ncluster_profiles = all_data_combined.groupby('cluster')[existing_features].mean()\nprint(\"Cluster Profiles:\\n\", cluster_profiles)\n\n# cluster centers\ncluster_centers = scaler.inverse_transform(kmeans.cluster_centers_)\ncluster_df = pd.DataFrame(cluster_centers, columns=existing_features).round(3)\nprint(\"Cluster Centers:\")\nprint(cluster_df.to_string())\n\n# quality metrics\nsilhouette_avg = silhouette_score(X_scaled, clusters)\ndbi = davies_bouldin_score(X_scaled, clusters)\nchi = calinski_harabasz_score(X_scaled, clusters)\n\nprint(f\"\\nSilhouette Score: {silhouette_avg:.4f} (range: -1 to 1, higher is better)\")\nprint(f\"Davies-Bouldin Index: {dbi:.4f} (lower is better)\")\nprint(f\"Calinski-Harabasz Index: {chi:.4f} (higher is better)\")\n\nprint(\"\\nConclusion:\")\nprint(f\"The silhouette score of {silhouette_avg:.2f} suggests the clusters are {'well' if silhouette_avg > 0.5 else 'moderately'}-defined.\")\nprint(f\"The Davies-Bouldin Index of {dbi:.2f} indicates {'good' if dbi < 1 else 'moderate'} clustering with {'compact' if dbi < 1 else 'somewhat overlapping'} clusters.\")\nprint(f\"The Calinski-Harabasz Index of {chi:.2f} indicates the clusters are dense and well-separated.\")\nprint(\"Heart rate and eye-tracking physiological features show distinct clustering patterns that may relate to anxiety and stress responses.\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/case-study/avg_hr.ipynb b/case-study/avg_hr.ipynb new file mode 100755 index 0000000..0cd15e5 --- /dev/null +++ b/case-study/avg_hr.ipynb @@ -0,0 +1,99 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "226138a4", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Avg Hr\n", + "\n", + "Session-level average heart-rate summaries.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e972a24c-b4d6-468e-891c-371d28f5a8d0", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load baseline HR\n", + "baseline_hr = pd.read_csv(f'{DATA}/hr.csv')\n", + "\n", + "# load HR data\n", + "hr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\n", + "hr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n", + "\n", + "# clean HR data\n", + "def clean_hr_data(hr_data):\n", + " hr_data_clean = hr_data[hr_data['confidence'] == 1.0]\n", + " return hr_data_clean\n", + "\n", + "baseline_hr_clean = clean_hr_data(baseline_hr)\n", + "hr_01_clean = clean_hr_data(hr_01)\n", + "hr_02_clean = clean_hr_data(hr_02)\n", + "hr_03_clean = clean_hr_data(hr_03)\n", + "\n", + "# average per session\n", + "baseline_avg_hr = baseline_hr_clean['heart_rate'].mean()\n", + "avg_hr_01 = hr_01_clean['heart_rate'].mean()\n", + "avg_hr_02 = hr_02_clean['heart_rate'].mean()\n", + "avg_hr_03 = hr_03_clean['heart_rate'].mean()\n", + "\n", + "# baseline difference\n", + "hr_difference_01 = avg_hr_01 - baseline_avg_hr\n", + "hr_difference_02 = avg_hr_02 - baseline_avg_hr\n", + "hr_difference_03 = avg_hr_03 - baseline_avg_hr\n", + "\n", + "# anxiety threshold\n", + "hr_anxiety_threshold = 90\n", + "\n", + "# check HR anxiety\n", + "anxiety_hr_baseline = baseline_avg_hr > hr_anxiety_threshold\n", + "anxiety_hr_01 = avg_hr_01 > hr_anxiety_threshold\n", + "anxiety_hr_02 = avg_hr_02 > hr_anxiety_threshold\n", + "anxiety_hr_03 = avg_hr_03 > hr_anxiety_threshold\n", + "\n", + "# display results\n", + "print(f'Baseline Average HR: {baseline_avg_hr:.2f} BPM - {\"Anxiety\" if anxiety_hr_baseline else \"Normal\"}')\n", + "print(f'Session 1 Average HR: {avg_hr_01:.2f} BPM - {\"Anxiety\" if anxiety_hr_01 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 1: {hr_difference_01:.2f} BPM')\n", + "print(f'Session 2 Average HR: {avg_hr_02:.2f} BPM - {\"Anxiety\" if anxiety_hr_02 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 2: {hr_difference_02:.2f} BPM')\n", + "print(f'Session 3 Average HR: {avg_hr_03:.2f} BPM - {\"Anxiety\" if anxiety_hr_03 else \"Normal\"}')\n", + "print(f'Difference from Baseline in Session 3: {hr_difference_03:.2f} BPM')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/avg_hrv.ipynb b/case-study/avg_hrv.ipynb new file mode 100755 index 0000000..4b73be8 --- /dev/null +++ b/case-study/avg_hrv.ipynb @@ -0,0 +1,188 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "50c33d2e", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Avg Hrv\n", + "\n", + "Session-level average HRV (SDNN/RMSSD) summaries.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac681000-ac29-47b7-aa25-16e8e14f53a2", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load IBI data\n", + "baseline_ibi = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\n", + "ibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\n", + "ibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n", + "\n", + "# clean IBI data\n", + "def clean_ibi_data(ibi_data):\n", + " ibi_data_clean = ibi_data[ibi_data['ibi'] > 0]\n", + " return ibi_data_clean\n", + "\n", + "baseline_ibi_clean = clean_ibi_data(baseline_ibi)\n", + "ibi_01_clean = clean_ibi_data(ibi_01)\n", + "ibi_02_clean = clean_ibi_data(ibi_02)\n", + "ibi_03_clean = clean_ibi_data(ibi_03)\n", + "\n", + "# calculate RMSSD\n", + "def calculate_rmssd(ibi_values):\n", + " diff_nn_intervals = np.diff(ibi_values)\n", + " squared_diffs = diff_nn_intervals ** 2\n", + " rmssd = np.sqrt(np.mean(squared_diffs))\n", + " return rmssd\n", + "\n", + "# calculate SDNN\n", + "def calculate_sdnn(ibi_values):\n", + " sdnn = np.std(ibi_values, ddof=1)\n", + " return sdnn\n", + "\n", + "# compute HRV metrics\n", + "rmssd_baseline = calculate_rmssd(baseline_ibi_clean['ibi'].dropna().values)\n", + "sdnn_baseline = calculate_sdnn(baseline_ibi_clean['ibi'].dropna().values)\n", + "\n", + "rmssd_01 = calculate_rmssd(ibi_01_clean['ibi'].dropna().values)\n", + "sdnn_01 = calculate_sdnn(ibi_01_clean['ibi'].dropna().values)\n", + "\n", + "rmssd_02 = calculate_rmssd(ibi_02_clean['ibi'].dropna().values)\n", + "sdnn_02 = calculate_sdnn(ibi_02_clean['ibi'].dropna().values)\n", + "\n", + "rmssd_03 = calculate_rmssd(ibi_03_clean['ibi'].dropna().values)\n", + "sdnn_03 = calculate_sdnn(ibi_03_clean['ibi'].dropna().values)\n", + "\n", + "# display HRV metrics\n", + "print(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms')\n", + "print(f'Session 1 RMSSD: {rmssd_01:.2f} ms, SDNN: {sdnn_01:.2f} ms')\n", + "print(f'Session 2 RMSSD: {rmssd_02:.2f} ms, SDNN: {sdnn_02:.2f} ms')\n", + "print(f'Session 3 RMSSD: {rmssd_03:.2f} ms, SDNN: {sdnn_03:.2f} ms')\n", + "\n", + "# anxiety thresholds\n", + "rmssd_threshold = 20\n", + "sdnn_threshold = 50\n", + "\n", + "# check HRV anxiety\n", + "anxiety_rmssd_baseline = rmssd_baseline < rmssd_threshold\n", + "anxiety_sdnn_baseline = sdnn_baseline < sdnn_threshold\n", + "\n", + "anxiety_rmssd_01 = rmssd_01 < rmssd_threshold\n", + "anxiety_sdnn_01 = sdnn_01 < sdnn_threshold\n", + "\n", + "anxiety_rmssd_02 = rmssd_02 < rmssd_threshold\n", + "anxiety_sdnn_02 = sdnn_02 < sdnn_threshold\n", + "\n", + "anxiety_rmssd_03 = rmssd_03 < rmssd_threshold\n", + "anxiety_sdnn_03 = sdnn_03 < sdnn_threshold\n", + "\n", + "# display anxiety results\n", + "print(f'Baseline RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_baseline else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_baseline else \"No\"}')\n", + "print(f'Session 1 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_01 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_01 else \"No\"}')\n", + "print(f'Session 2 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_02 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_02 else \"No\"}')\n", + "print(f'Session 3 RMSSD Anxiety: {\"Yes\" if anxiety_rmssd_03 else \"No\"}, SDNN Anxiety: {\"Yes\" if anxiety_sdnn_03 else \"No\"}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00jqik0aldvn", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# load IBI data\n", + "ibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\n", + "ibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\n", + "ibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n", + "\n", + "def clean_ibi(df):\n", + " ibi = df['ibi']\n", + " # physiological bounds\n", + " clean = ibi[(ibi > 300) & (ibi < 2000)]\n", + " removed = len(ibi) - len(clean)\n", + " return clean, removed\n", + "\n", + "def hrv_metrics(ibi_values):\n", + " nn = ibi_values.values\n", + " sdnn = np.std(nn, ddof=1)\n", + " diffs = np.diff(nn)\n", + " rmssd = np.sqrt(np.mean(diffs**2))\n", + " pnn50 = np.sum(np.abs(diffs) > 50) / len(diffs) * 100\n", + " return sdnn, rmssd, pnn50\n", + "\n", + "sessions = {\n", + " 'Baseline': ibi_baseline,\n", + " 'Session 01': ibi_01,\n", + " 'Session 02': ibi_02,\n", + " 'Session 03': ibi_03\n", + "}\n", + "\n", + "# artifact rejection + HRV\n", + "print(\"=== IBI Artifact Rejection (300-2000ms bounds) ===\\n\")\n", + "results = {}\n", + "for name, df in sessions.items():\n", + " clean, removed = clean_ibi(df)\n", + " sdnn, rmssd, pnn50 = hrv_metrics(clean)\n", + " results[name] = {'N': len(clean), 'Removed': removed, 'SDNN': sdnn, 'RMSSD': rmssd, 'pNN50': pnn50}\n", + " print(f\"{name}: {removed} artifacts removed, {len(clean)} valid beats\")\n", + "\n", + "# summary table\n", + "print(\"\\n=== HRV Metrics (Time-Domain) ===\\n\")\n", + "hrv_table = pd.DataFrame(results).T.round(2)\n", + "print(hrv_table.to_string())\n", + "\n", + "# compare sessions\n", + "print(\"\\n=== Baseline vs Session Comparisons ===\\n\")\n", + "baseline_ibi, _ = clean_ibi(ibi_baseline)\n", + "for name in ['Session 01', 'Session 02', 'Session 03']:\n", + " test_ibi, _ = clean_ibi(sessions[name])\n", + " u_stat, p = stats.mannwhitneyu(baseline_ibi, test_ibi, alternative='two-sided')\n", + " diff = test_ibi.mean() - baseline_ibi.mean()\n", + " print(f\"{name} vs Baseline: mean IBI diff={diff:.1f}ms, U p={p:.4f}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/build_hrv.ipynb b/case-study/build_hrv.ipynb new file mode 100755 index 0000000..dacc154 --- /dev/null +++ b/case-study/build_hrv.ipynb @@ -0,0 +1,64 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a4d6fd34", + "metadata": {}, + "source": [ + "## Time-resolved HRV (SDNN / RMSSD)\n", + "\n", + "**Fix:** the previous version computed a *single* SDNN for the whole session and wrote that same number to every row, so the time-resolved HRV plots were flat lines (`nunique(sdnn) == 1`). This computes a **30-beat rolling** SDNN/RMSSD (≈18–20 s at this participant's ~90–100 bpm) that varies over the session, keeping the `reltime, datetime, sdnn, rmssd` schema. A 300–2000 ms normal-to-normal filter removes dropped-beat artifacts.\n", + "\n", + "**Inputs:** `data/case-study/processed/ibi*.csv` · **Outputs:** `data/case-study/processed/hrv*.csv`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "56123851", + "metadata": { + "mms_tag": "csv_hrv_rolling" + }, + "outputs": [], + "source": [ + "import sys, pathlib\n", + "sys.path.insert(0, str(pathlib.Path.cwd().parent)) # repo root -> import mms\n", + "import mms\n", + "import pandas as pd\n", + "\n", + "PROCESSED = mms.paths.CASE_STUDY / 'processed'\n", + "stems = [('ibi', 'hrv')] + [(f'ibi_{s:02d}', f'hrv_{s:02d}') for s in (1, 2, 3)]\n", + "\n", + "for ibi_stem, hrv_stem in stems:\n", + " ibi = pd.read_csv(PROCESSED / f'{ibi_stem}.csv')\n", + " valid = ibi[ibi['ibi'] > 0].copy()\n", + " rolled = mms.hrv.hrv_rolling(valid, window_beats=30)\n", + " out = rolled[['reltime', 'datetime', 'sdnn', 'rmssd']]\n", + " out.to_csv(PROCESSED / f'{hrv_stem}.csv', index=False)\n", + " print(f\"{hrv_stem}: {out['sdnn'].nunique()} distinct SDNN values, \"\n", + " f\"range {out['sdnn'].min():.1f}-{out['sdnn'].max():.1f} ms\")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/preprocess_fixation.ipynb b/case-study/preprocess_fixation.ipynb new file mode 100755 index 0000000..79b4755 --- /dev/null +++ b/case-study/preprocess_fixation.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a30b2c59", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Preprocess Fixation\n", + "\n", + "Derive fixation events and durations from the raw eye-tracking sample stream.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6305819-7ee5-4388-a836-6035322ca88a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/case-study/processed'\n", + "\n", + "# gaze stability threshold\n", + "gaze_threshold = 0.01\n", + "\n", + "for s in [0, 1, 2, 3]:\n", + " filename = f'{DATA}/sed_{s:02d}.csv' if s > 0 else f'{DATA}/sed.csv'\n", + " sed_df = pd.read_csv(filename)\n", + "\n", + " # rename columns\n", + " sed_df = sed_df.rename(columns={\n", + " 'gazeDir.x': 'gaze_x',\n", + " 'gazeDir.y': 'gaze_y',\n", + " 'gazeDir.z': 'gaze_z'\n", + " })\n", + "\n", + " # validate data\n", + " null_mask = sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any(axis=1)\n", + " if null_mask.any():\n", + " print(f\"WARNING: Session {s}: dropping {null_mask.sum()} rows with missing values.\")\n", + " sed_df = sed_df.dropna(subset=['reltime', 'gaze_x', 'gaze_y', 'gaze_z'])\n", + "\n", + " # gaze direction diff\n", + " sed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n", + " (sed_df['gaze_y'].diff() ** 2) +\n", + " (sed_df['gaze_z'].diff() ** 2))\n", + "\n", + " # identify fixation points\n", + " sed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n", + "\n", + " # label fixation groups\n", + " sed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n", + "\n", + " # filter fixation points\n", + " fixation_df = sed_df[sed_df['fixation']]\n", + "\n", + " # fixation duration\n", + " fixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\n", + " fixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\n", + " fixation_duration = fixation_duration[['duration']]\n", + "\n", + " # merge durations back\n", + " sed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n", + "\n", + " # save data\n", + " output_path = f'{DATA}/sed_fix_{s:02d}.csv' if s > 0 else f'{DATA}/sed_fix.csv'\n", + " sed_df.to_csv(output_path, index=False)\n", + " label = f\"Session {s}\" if s > 0 else \"Baseline\"\n", + " print(f\"{label}: saved to {output_path}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/case-study/preprocess_raw_to_csv.ipynb b/case-study/preprocess_raw_to_csv.ipynb new file mode 100755 index 0000000..1bcbd29 --- /dev/null +++ b/case-study/preprocess_raw_to_csv.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7d75f5f3", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Preprocess Raw To Csv\n", + "\n", + "Convert semicolon-delimited raw sensor exports (.txt) into tidy processed CSVs.\n", + "\n", + "**Reads:** `data/case-study/ (one participant, all sessions)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7f81ab37-5d56-431a-b982-2617a458a8ef", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba90a5e1-2d6c-4b01-8020-166603f19cbb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "RAW = '../data/case-study/raw'\n", + "PROCESSED = '../data/case-study/processed'\n", + "\n", + "base_names = [\n", + " 'hr', 'hr_01', 'hr_02', 'hr_03',\n", + " 'sed', 'sed_01', 'sed_02', 'sed_03',\n", + " 'ibi', 'ibi_01', 'ibi_02', 'ibi_03',\n", + "]\n", + "\n", + "for name in base_names:\n", + " txt_path = os.path.join(RAW, f'{name}.txt')\n", + " csv_path = os.path.join(PROCESSED, f'{name}.csv')\n", + " df = pd.read_csv(txt_path, delimiter=';')\n", + " df.to_csv(csv_path, index=False)\n", + " print(f'{txt_path} -> {csv_path} ({len(df)} rows)')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..8e4c274 --- /dev/null +++ b/data/README.md @@ -0,0 +1,63 @@ +# Data dictionary + +Schemas for the committed CSVs. See [`../DATA_PROVENANCE.md`](../DATA_PROVENANCE.md) +for how files are generated and which rows are regenerable, and +[`../DATA_ETHICS.md`](../DATA_ETHICS.md) for consent / de-identification. + +## Layout + +``` +data/ +├── case-study/ one participant (= group row P02), deep dive +│ ├── raw/ sensor exports (.txt, ';'-delimited) +│ ├── processed/ tidy per-session streams (.csv) ← hr, ibi, hrv, sed, sed_fix +│ └── psychometric/ per-session test results +├── individual/ one participant, per-session analyses (same stream schema) +└── group_results/ 10-participant summary tables (one row/participant) +``` + +File suffixes: `_01/_02/_03` = session 1/2/3; no suffix = baseline/resting. + +## Common columns + +| Column | Meaning | +|--------|---------| +| `reltime` | seconds since recording start | +| `datetime` | wall-clock timestamp (processed: `YYYY/MM/DD HH:MM:SS.ffff`; psychometric: ISO-8601 `…Z`) | +| `iSensor` | sensor/channel index (multiple physical channels per device) | +| `*.x` `*.y` `*.z` | 3-D vector components (head position, gaze direction/source) | +| `*Q` (e.g. `pupilQ`, `gazeQ`) | per-sample quality/confidence in **[0, 1]** | + +## Stream schemas (`*/processed/`) + +**`ibi_*.csv`** — cardiac inter-beat intervals · `reltime, datetime, iSensor, ibi` +- `ibi` — inter-beat interval in **ms** (`0` = dropped/invalid beat; a valid NN filter keeps 300–2000 ms). + +**`hr_*.csv`** — heart rate · `reltime, datetime, iSensor, confidence, heart_rate` +- `confidence` — sensor confidence (analyses keep `confidence == 1.0`); `heart_rate` in **bpm**. + +**`hrv_*.csv`** — derived HRV · `reltime, datetime, sdnn, rmssd` +- `sdnn`, `rmssd` — **rolling 30-beat** HRV in ms (generated by `case-study/build_hrv.ipynb` via `mms.hrv.hrv_rolling`; first ~10 rows are NaN warm-up). + +**`sed_*.csv`** — eye tracking (raw) · `reltime, datetime, iSensor, headPos.{x,y,z}, headPosQ, headYaw, headPitch, headRoll, headRotQ, gazeSrc.{x,y,z}, gazeDir.{x,y,z}, gazeQ, leftEyeOpen, leftEyeOpenQ, rightEyeOpen, rightEyeOpenQ, pupil, pupilQ` +- `pupil` — pupil diameter (mm); `leftEyeOpen`/`rightEyeOpen` — eyelid openness. + +**`sed_fix_*.csv`** — eye tracking + derived fixations · all `sed_*` columns, with `gazeDir.{x,y,z}` renamed to `gaze_{x,y,z}`, **plus** derived `gaze_diff, fixation, fixation_id, duration` +- `gaze_{x,y,z}` — gaze direction unit vector (renamed from raw `gazeDir.*`); `fixation` — bool, sample is part of a fixation; `fixation_id` — fixation index; `duration` — fixation duration; `gaze_diff` — angular gaze change between samples. + +## Psychometric (`*/psychometric/`) + +**`Psychometric_Test_Results_*.csv`** · `Type, Test, Question, Answer, Time(s), Question Start Time, Question Answer Time` +- `Type` — instrument (`HADS`, `STAI-S`, `STAI-T`, `BFI`, `FQ`); `Answer` — coded response; `Time(s)` — response duration; the two timestamps bound each question (used to window physiology). +- `*_modified.csv` — analysis-convenience copies: drop `Type`, add parsed `datetime`. Originals are authoritative. +- `individual/…_00.csv` uses a `Score` column and a distinct schema (earlier/screening format). + +Per-question aggregates joining psychometric responses to physiology (individual dataset): +- **`QQ.csv`** · `Type, Question, Start Time, End Time, Score, Average Pupil Dilation, Average Left Blink Rate, Average Right Blink Rate, Sign of Anxiety, Test` — `Sign of Anxiety` is a derived Yes/No flag (see the generating notebook for the threshold rule). +- **`QQHRV.csv`** · `Test, Type, Start Time, End Time, Score, RMSSD, SDNN, RMSSD Decrease, SDNN Decrease` — per-question HRV with baseline-relative decrease flags. +- **`QQ2.csv`** — like `QQ.csv` plus `Pupil Dilation Increase`, `Left/Right Blink Rate Increase`. + +## Summaries (`group_results/`) + +**`{HRV_SDNN, Pupil_Dilation_STD, Psychometric_Test_Duration_STD}.csv`** · `Participant, Session 01, Session 02, Session 03` +- One row per participant `P01`–`P10`; each cell is that session's summary statistic. Regenerate/verify with `python pipeline/build_group_summaries.py`. diff --git a/data/case-study/processed/hrv.csv b/data/case-study/processed/hrv.csv index 5fd2571..b15e2f7 100755 --- a/data/case-study/processed/hrv.csv +++ b/data/case-study/processed/hrv.csv @@ -1,734 +1,734 @@ reltime,datetime,sdnn,rmssd -0.001,2024/05/28 15:34:05.2439,28.627838985862834,30.07674609624028 -0.001,2024/05/28 15:34:05.2439,28.627838985862834,30.07674609624028 -0.037,2024/05/28 15:34:05.2799,28.627838985862834,30.07674609624028 -1.022,2024/05/28 15:34:06.2649,28.627838985862834,30.07674609624028 -1.515,2024/05/28 15:34:06.7579,28.627838985862834,30.07674609624028 -1.607,2024/05/28 15:34:06.8499,28.627838985862834,30.07674609624028 -1.853,2024/05/28 15:34:07.0959,28.627838985862834,30.07674609624028 -2.008,2024/05/28 15:34:07.2509,28.627838985862834,30.07674609624028 -2.099,2024/05/28 15:34:07.3419,28.627838985862834,30.07674609624028 -2.5,2024/05/28 15:34:07.7429,28.627838985862834,30.07674609624028 -3.238,2024/05/28 15:34:08.4809,28.627838985862834,30.07674609624028 -3.731,2024/05/28 15:34:08.9739,28.627838985862834,30.07674609624028 -4.716,2024/05/28 15:34:09.9589,28.627838985862834,30.07674609624028 -4.808,2024/05/28 15:34:10.0509,28.627838985862834,30.07674609624028 -5.054,2024/05/28 15:34:10.2969,28.627838985862834,30.07674609624028 -5.209,2024/05/28 15:34:10.4519,28.627838985862834,30.07674609624028 -5.301,2024/05/28 15:34:10.5439,28.627838985862834,30.07674609624028 -5.951,2024/05/28 15:34:11.1939,28.627838985862834,30.07674609624028 -6.44,2024/05/28 15:34:11.6829,28.627838985862834,30.07674609624028 -6.932,2024/05/28 15:34:12.1749,28.627838985862834,30.07674609624028 -7.918,2024/05/28 15:34:13.1609,28.627838985862834,30.07674609624028 -8.011,2024/05/28 15:34:13.2539,28.627838985862834,30.07674609624028 -8.257,2024/05/28 15:34:13.4999,28.627838985862834,30.07674609624028 -8.41,2024/05/28 15:34:13.6529,28.627838985862834,30.07674609624028 -8.502,2024/05/28 15:34:13.7449,28.627838985862834,30.07674609624028 -8.903,2024/05/28 15:34:14.1459,28.627838985862834,30.07674609624028 -9.241,2024/05/28 15:34:14.4839,28.627838985862834,30.07674609624028 -9.488,2024/05/28 15:34:14.7309,28.627838985862834,30.07674609624028 -9.641,2024/05/28 15:34:14.8839,28.627838985862834,30.07674609624028 -9.737,2024/05/28 15:34:14.9799,28.627838985862834,30.07674609624028 -9.98,2024/05/28 15:34:15.2229,28.627838985862834,30.07674609624028 -10.134,2024/05/28 15:34:15.3769,28.627838985862834,30.07674609624028 -10.227,2024/05/28 15:34:15.4699,28.627838985862834,30.07674609624028 -10.473,2024/05/28 15:34:15.7159,28.627838985862834,30.07674609624028 -10.627,2024/05/28 15:34:15.8699,28.627838985862834,30.07674609624028 -10.719,2024/05/28 15:34:15.9619,28.627838985862834,30.07674609624028 -10.966,2024/05/28 15:34:16.2089,28.627838985862834,30.07674609624028 -11.212,2024/05/28 15:34:16.4549,28.627838985862834,30.07674609624028 -11.366,2024/05/28 15:34:16.6089,28.627838985862834,30.07674609624028 -11.458,2024/05/28 15:34:16.7009,28.627838985862834,30.07674609624028 -11.705,2024/05/28 15:34:16.9479,28.627838985862834,30.07674609624028 -11.858,2024/05/28 15:34:17.1009,28.627838985862834,30.07674609624028 -11.95,2024/05/28 15:34:17.1929,28.627838985862834,30.07674609624028 -12.196,2024/05/28 15:34:17.4389,28.627838985862834,30.07674609624028 -12.443,2024/05/28 15:34:17.6859,28.627838985862834,30.07674609624028 -12.597,2024/05/28 15:34:17.8399,28.627838985862834,30.07674609624028 -12.689,2024/05/28 15:34:17.9319,28.627838985862834,30.07674609624028 -12.935,2024/05/28 15:34:18.1779,28.627838985862834,30.07674609624028 -13.089,2024/05/28 15:34:18.3319,28.627838985862834,30.07674609624028 -13.182,2024/05/28 15:34:18.4249,28.627838985862834,30.07674609624028 -13.428,2024/05/28 15:34:18.6709,28.627838985862834,30.07674609624028 -13.674,2024/05/28 15:34:18.9169,28.627838985862834,30.07674609624028 -13.828,2024/05/28 15:34:19.0709,28.627838985862834,30.07674609624028 -13.921,2024/05/28 15:34:19.1639,28.627838985862834,30.07674609624028 -14.167,2024/05/28 15:34:19.4099,28.627838985862834,30.07674609624028 -14.321,2024/05/28 15:34:19.5639,28.627838985862834,30.07674609624028 -14.813,2024/05/28 15:34:20.0559,28.627838985862834,30.07674609624028 -15.305,2024/05/28 15:34:20.5479,28.627838985862834,30.07674609624028 -16.291,2024/05/28 15:34:21.5339,28.627838985862834,30.07674609624028 -16.383,2024/05/28 15:34:21.6259,28.627838985862834,30.07674609624028 -16.63,2024/05/28 15:34:21.8729,28.627838985862834,30.07674609624028 -16.783,2024/05/28 15:34:22.0259,28.627838985862834,30.07674609624028 -16.876,2024/05/28 15:34:22.1189,28.627838985862834,30.07674609624028 -17.03,2024/05/28 15:34:22.2729,28.627838985862834,30.07674609624028 -17.522,2024/05/28 15:34:22.7649,28.627838985862834,30.07674609624028 -18.508,2024/05/28 15:34:23.7509,28.627838985862834,30.07674609624028 -19.585,2024/05/28 15:34:24.8279,28.627838985862834,30.07674609624028 -19.831,2024/05/28 15:34:25.0739,28.627838985862834,30.07674609624028 -20.078,2024/05/28 15:34:25.3209,28.627838985862834,30.07674609624028 -21.216,2024/05/28 15:34:26.4589,28.627838985862834,30.07674609624028 -21.709,2024/05/28 15:34:26.9519,28.627838985862834,30.07674609624028 -22.201,2024/05/28 15:34:27.4439,28.627838985862834,30.07674609624028 -22.693,2024/05/28 15:34:27.9359,28.627838985862834,30.07674609624028 -22.786,2024/05/28 15:34:28.0289,28.627838985862834,30.07674609624028 -23.033,2024/05/28 15:34:28.2759,28.627838985862834,30.07674609624028 -23.279,2024/05/28 15:34:28.5219,28.627838985862834,30.07674609624028 -23.432,2024/05/28 15:34:28.6749,28.627838985862834,30.07674609624028 -23.925,2024/05/28 15:34:29.1679,28.627838985862834,30.07674609624028 -24.911,2024/05/28 15:34:30.1539,28.627838985862834,30.07674609624028 -25.403,2024/05/28 15:34:30.6459,28.627838985862834,30.07674609624028 -25.895,2024/05/28 15:34:31.1379,28.627838985862834,30.07674609624028 -26.234,2024/05/28 15:34:31.4769,28.627838985862834,30.07674609624028 -26.388,2024/05/28 15:34:31.6309,28.627838985862834,30.07674609624028 -26.48,2024/05/28 15:34:31.7229,28.627838985862834,30.07674609624028 -26.881,2024/05/28 15:34:32.1239,28.627838985862834,30.07674609624028 -27.62,2024/05/28 15:34:32.8629,28.627838985862834,30.07674609624028 -28.112,2024/05/28 15:34:33.3549,28.627838985862834,30.07674609624028 -29.097,2024/05/28 15:34:34.3399,28.627838985862834,30.07674609624028 -29.189,2024/05/28 15:34:34.4319,28.627838985862834,30.07674609624028 -29.436,2024/05/28 15:34:34.6789,28.627838985862834,30.07674609624028 -29.589,2024/05/28 15:34:34.8319,28.627838985862834,30.07674609624028 -29.682,2024/05/28 15:34:34.9249,28.627838985862834,30.07674609624028 -30.082,2024/05/28 15:34:35.3249,28.627838985862834,30.07674609624028 -30.821,2024/05/28 15:34:36.0639,28.627838985862834,30.07674609624028 -31.314,2024/05/28 15:34:36.5569,28.627838985862834,30.07674609624028 -31.806,2024/05/28 15:34:37.0489,28.627838985862834,30.07674609624028 -32.391,2024/05/28 15:34:37.6339,28.627838985862834,30.07674609624028 -32.638,2024/05/28 15:34:37.8809,28.627838985862834,30.07674609624028 -32.791,2024/05/28 15:34:38.0339,28.627838985862834,30.07674609624028 -32.884,2024/05/28 15:34:38.1269,28.627838985862834,30.07674609624028 -33.037,2024/05/28 15:34:38.2799,28.627838985862834,30.07674609624028 -33.53,2024/05/28 15:34:38.7729,28.627838985862834,30.07674609624028 -34.515,2024/05/28 15:34:39.7579,28.627838985862834,30.07674609624028 -35.007,2024/05/28 15:34:40.2499,28.627838985862834,30.07674609624028 -35.5,2024/05/28 15:34:40.7429,28.627838985862834,30.07674609624028 -35.839,2024/05/28 15:34:41.0819,28.627838985862834,30.07674609624028 -35.993,2024/05/28 15:34:41.2359,28.627838985862834,30.07674609624028 -36.086,2024/05/28 15:34:41.3289,28.627838985862834,30.07674609624028 -38.209,2024/05/28 15:34:43.4519,28.627838985862834,30.07674609624028 -38.702,2024/05/28 15:34:43.9449,28.627838985862834,30.07674609624028 -38.795,2024/05/28 15:34:44.0379,28.627838985862834,30.07674609624028 -39.041,2024/05/28 15:34:44.2839,28.627838985862834,30.07674609624028 -39.194,2024/05/28 15:34:44.4369,28.627838985862834,30.07674609624028 -39.287,2024/05/28 15:34:44.5299,28.627838985862834,30.07674609624028 -39.534,2024/05/28 15:34:44.7769,28.627838985862834,30.07674609624028 -39.686,2024/05/28 15:34:44.9289,28.627838985862834,30.07674609624028 -39.78,2024/05/28 15:34:45.0229,28.627838985862834,30.07674609624028 -40.025,2024/05/28 15:34:45.2679,28.627838985862834,30.07674609624028 -40.179,2024/05/28 15:34:45.4219,28.627838985862834,30.07674609624028 -40.272,2024/05/28 15:34:45.5149,28.627838985862834,30.07674609624028 -40.518,2024/05/28 15:34:45.7609,28.627838985862834,30.07674609624028 -40.764,2024/05/28 15:34:46.0069,28.627838985862834,30.07674609624028 -40.918,2024/05/28 15:34:46.1609,28.627838985862834,30.07674609624028 -41.504,2024/05/28 15:34:46.7469,28.627838985862834,30.07674609624028 -41.656,2024/05/28 15:34:46.8989,28.627838985862834,30.07674609624028 -41.903,2024/05/28 15:34:47.1459,28.627838985862834,30.07674609624028 -42.242,2024/05/28 15:34:47.4849,28.627838985862834,30.07674609624028 -42.488,2024/05/28 15:34:47.7309,28.627838985862834,30.07674609624028 -42.642,2024/05/28 15:34:47.8849,28.627838985862834,30.07674609624028 -42.735,2024/05/28 15:34:47.9779,28.627838985862834,30.07674609624028 -42.981,2024/05/28 15:34:48.2239,28.627838985862834,30.07674609624028 -43.135,2024/05/28 15:34:48.3779,28.627838985862834,30.07674609624028 -43.227,2024/05/28 15:34:48.4699,28.627838985862834,30.07674609624028 -43.474,2024/05/28 15:34:48.7169,28.627838985862834,30.07674609624028 -43.627,2024/05/28 15:34:48.8699,28.627838985862834,30.07674609624028 -43.72,2024/05/28 15:34:48.9629,28.627838985862834,30.07674609624028 -43.966,2024/05/28 15:34:49.2089,28.627838985862834,30.07674609624028 -44.213,2024/05/28 15:34:49.4559,28.627838985862834,30.07674609624028 -44.366,2024/05/28 15:34:49.6089,28.627838985862834,30.07674609624028 -44.458,2024/05/28 15:34:49.7009,28.627838985862834,30.07674609624028 -44.858,2024/05/28 15:34:50.1009,28.627838985862834,30.07674609624028 -45.198,2024/05/28 15:34:50.4409,28.627838985862834,30.07674609624028 -45.445,2024/05/28 15:34:50.6879,28.627838985862834,30.07674609624028 -45.597,2024/05/28 15:34:50.8399,28.627838985862834,30.07674609624028 -45.69,2024/05/28 15:34:50.9329,28.627838985862834,30.07674609624028 -45.937,2024/05/28 15:34:51.1799,28.627838985862834,30.07674609624028 -46.089,2024/05/28 15:34:51.3319,28.627838985862834,30.07674609624028 -46.183,2024/05/28 15:34:51.4259,28.627838985862834,30.07674609624028 -46.429,2024/05/28 15:34:51.6719,28.627838985862834,30.07674609624028 -46.676,2024/05/28 15:34:51.9189,28.627838985862834,30.07674609624028 -46.828,2024/05/28 15:34:52.0709,28.627838985862834,30.07674609624028 -46.922,2024/05/28 15:34:52.1649,28.627838985862834,30.07674609624028 -47.167,2024/05/28 15:34:52.4099,28.627838985862834,30.07674609624028 -47.321,2024/05/28 15:34:52.5639,28.627838985862834,30.07674609624028 -47.414,2024/05/28 15:34:52.6569,28.627838985862834,30.07674609624028 -47.66,2024/05/28 15:34:52.9029,28.627838985862834,30.07674609624028 -47.814,2024/05/28 15:34:53.0569,28.627838985862834,30.07674609624028 -47.906,2024/05/28 15:34:53.1489,28.627838985862834,30.07674609624028 -48.153,2024/05/28 15:34:53.3959,28.627838985862834,30.07674609624028 -48.402,2024/05/28 15:34:53.6449,28.627838985862834,30.07674609624028 -48.553,2024/05/28 15:34:53.7959,28.627838985862834,30.07674609624028 -48.645,2024/05/28 15:34:53.8879,28.627838985862834,30.07674609624028 -48.892,2024/05/28 15:34:54.1349,28.627838985862834,30.07674609624028 -49.045,2024/05/28 15:34:54.2879,28.627838985862834,30.07674609624028 -49.138,2024/05/28 15:34:54.3809,28.627838985862834,30.07674609624028 -49.385,2024/05/28 15:34:54.6279,28.627838985862834,30.07674609624028 -49.538,2024/05/28 15:34:54.7809,28.627838985862834,30.07674609624028 -49.631,2024/05/28 15:34:54.8739,28.627838985862834,30.07674609624028 -49.877,2024/05/28 15:34:55.1199,28.627838985862834,30.07674609624028 -50.124,2024/05/28 15:34:55.3669,28.627838985862834,30.07674609624028 -50.276,2024/05/28 15:34:55.5189,28.627838985862834,30.07674609624028 -50.369,2024/05/28 15:34:55.6119,28.627838985862834,30.07674609624028 -50.615,2024/05/28 15:34:55.8579,28.627838985862834,30.07674609624028 -50.769,2024/05/28 15:34:56.0119,28.627838985862834,30.07674609624028 -50.862,2024/05/28 15:34:56.1049,28.627838985862834,30.07674609624028 -51.108,2024/05/28 15:34:56.3509,28.627838985862834,30.07674609624028 -51.354,2024/05/28 15:34:56.5969,28.627838985862834,30.07674609624028 -51.508,2024/05/28 15:34:56.7509,28.627838985862834,30.07674609624028 -51.601,2024/05/28 15:34:56.8439,28.627838985862834,30.07674609624028 -51.847,2024/05/28 15:34:57.0899,28.627838985862834,30.07674609624028 -52.094,2024/05/28 15:34:57.3369,28.627838985862834,30.07674609624028 -52.246,2024/05/28 15:34:57.4889,28.627838985862834,30.07674609624028 -52.34,2024/05/28 15:34:57.5829,28.627838985862834,30.07674609624028 -52.586,2024/05/28 15:34:57.8289,28.627838985862834,30.07674609624028 -52.832,2024/05/28 15:34:58.0749,28.627838985862834,30.07674609624028 -52.985,2024/05/28 15:34:58.2279,28.627838985862834,30.07674609624028 -53.078,2024/05/28 15:34:58.3209,28.627838985862834,30.07674609624028 -53.325,2024/05/28 15:34:58.5679,28.627838985862834,30.07674609624028 -53.477,2024/05/28 15:34:58.7199,28.627838985862834,30.07674609624028 -53.571,2024/05/28 15:34:58.8139,28.627838985862834,30.07674609624028 -53.818,2024/05/28 15:34:59.0609,28.627838985862834,30.07674609624028 -53.97,2024/05/28 15:34:59.2129,28.627838985862834,30.07674609624028 -54.063,2024/05/28 15:34:59.3059,28.627838985862834,30.07674609624028 -54.309,2024/05/28 15:34:59.5519,28.627838985862834,30.07674609624028 -54.556,2024/05/28 15:34:59.7989,28.627838985862834,30.07674609624028 -54.709,2024/05/28 15:34:59.9519,28.627838985862834,30.07674609624028 -54.802,2024/05/28 15:35:00.0449,28.627838985862834,30.07674609624028 -55.048,2024/05/28 15:35:00.2909,28.627838985862834,30.07674609624028 -55.202,2024/05/28 15:35:00.4449,28.627838985862834,30.07674609624028 -55.295,2024/05/28 15:35:00.5379,28.627838985862834,30.07674609624028 -55.541,2024/05/28 15:35:00.7839,28.627838985862834,30.07674609624028 -55.787,2024/05/28 15:35:01.0299,28.627838985862834,30.07674609624028 -55.941,2024/05/28 15:35:01.1839,28.627838985862834,30.07674609624028 -56.034,2024/05/28 15:35:01.2769,28.627838985862834,30.07674609624028 -56.28,2024/05/28 15:35:01.5229,28.627838985862834,30.07674609624028 -56.433,2024/05/28 15:35:01.6759,28.627838985862834,30.07674609624028 -56.527,2024/05/28 15:35:01.7699,28.627838985862834,30.07674609624028 -56.773,2024/05/28 15:35:02.0159,28.627838985862834,30.07674609624028 -56.925,2024/05/28 15:35:02.1679,28.627838985862834,30.07674609624028 -57.511,2024/05/28 15:35:02.7539,28.627838985862834,30.07674609624028 -57.665,2024/05/28 15:35:02.9079,28.627838985862834,30.07674609624028 -57.757,2024/05/28 15:35:02.9999,28.627838985862834,30.07674609624028 -58.004,2024/05/28 15:35:03.2469,28.627838985862834,30.07674609624028 -58.157,2024/05/28 15:35:03.3999,28.627838985862834,30.07674609624028 -58.25,2024/05/28 15:35:03.4929,28.627838985862834,30.07674609624028 -58.496,2024/05/28 15:35:03.7389,28.627838985862834,30.07674609624028 -58.743,2024/05/28 15:35:03.9859,28.627838985862834,30.07674609624028 -58.896,2024/05/28 15:35:04.1389,28.627838985862834,30.07674609624028 -58.989,2024/05/28 15:35:04.2319,28.627838985862834,30.07674609624028 -59.235,2024/05/28 15:35:04.4779,28.627838985862834,30.07674609624028 -59.388,2024/05/28 15:35:04.6309,28.627838985862834,30.07674609624028 -59.482,2024/05/28 15:35:04.7249,28.627838985862834,30.07674609624028 -59.727,2024/05/28 15:35:04.9699,28.627838985862834,30.07674609624028 -59.974,2024/05/28 15:35:05.2169,28.627838985862834,30.07674609624028 -60.127,2024/05/28 15:35:05.3699,28.627838985862834,30.07674609624028 -60.22,2024/05/28 15:35:05.4629,28.627838985862834,30.07674609624028 -60.466,2024/05/28 15:35:05.7089,28.627838985862834,30.07674609624028 -60.62,2024/05/28 15:35:05.8629,28.627838985862834,30.07674609624028 -60.713,2024/05/28 15:35:05.9559,28.627838985862834,30.07674609624028 -60.959,2024/05/28 15:35:06.2019,28.627838985862834,30.07674609624028 -61.205,2024/05/28 15:35:06.4479,28.627838985862834,30.07674609624028 -61.359,2024/05/28 15:35:06.6019,28.627838985862834,30.07674609624028 -61.452,2024/05/28 15:35:06.6949,28.627838985862834,30.07674609624028 -61.698,2024/05/28 15:35:06.9409,28.627838985862834,30.07674609624028 -61.944,2024/05/28 15:35:07.1869,28.627838985862834,30.07674609624028 -62.097,2024/05/28 15:35:07.3399,28.627838985862834,30.07674609624028 -62.191,2024/05/28 15:35:07.4339,28.627838985862834,30.07674609624028 -62.437,2024/05/28 15:35:07.6799,28.627838985862834,30.07674609624028 -62.59,2024/05/28 15:35:07.8329,28.627838985862834,30.07674609624028 -62.684,2024/05/28 15:35:07.9269,28.627838985862834,30.07674609624028 -62.93,2024/05/28 15:35:08.1729,28.627838985862834,30.07674609624028 -63.175,2024/05/28 15:35:08.4179,28.627838985862834,30.07674609624028 -63.329,2024/05/28 15:35:08.5719,28.627838985862834,30.07674609624028 -63.422,2024/05/28 15:35:08.6649,28.627838985862834,30.07674609624028 -63.575,2024/05/28 15:35:08.8179,28.627838985862834,30.07674609624028 -63.668,2024/05/28 15:35:08.9109,28.627838985862834,30.07674609624028 -63.914,2024/05/28 15:35:09.1569,28.627838985862834,30.07674609624028 -64.161,2024/05/28 15:35:09.4039,28.627838985862834,30.07674609624028 -64.314,2024/05/28 15:35:09.5569,28.627838985862834,30.07674609624028 -64.407,2024/05/28 15:35:09.6499,28.627838985862834,30.07674609624028 -64.653,2024/05/28 15:35:09.8959,28.627838985862834,30.07674609624028 -64.806,2024/05/28 15:35:10.0489,28.627838985862834,30.07674609624028 -64.9,2024/05/28 15:35:10.1429,28.627838985862834,30.07674609624028 -65.146,2024/05/28 15:35:10.3889,28.627838985862834,30.07674609624028 -65.299,2024/05/28 15:35:10.5419,28.627838985862834,30.07674609624028 -65.393,2024/05/28 15:35:10.6359,28.627838985862834,30.07674609624028 -65.638,2024/05/28 15:35:10.8809,28.627838985862834,30.07674609624028 -65.884,2024/05/28 15:35:11.1269,28.627838985862834,30.07674609624028 -66.038,2024/05/28 15:35:11.2809,28.627838985862834,30.07674609624028 -66.131,2024/05/28 15:35:11.3739,28.627838985862834,30.07674609624028 -66.377,2024/05/28 15:35:11.6199,28.627838985862834,30.07674609624028 -66.531,2024/05/28 15:35:11.7739,28.627838985862834,30.07674609624028 -66.623,2024/05/28 15:35:11.8659,28.627838985862834,30.07674609624028 -66.87,2024/05/28 15:35:12.1129,28.627838985862834,30.07674609624028 -67.022,2024/05/28 15:35:12.2649,28.627838985862834,30.07674609624028 -67.116,2024/05/28 15:35:12.3589,28.627838985862834,30.07674609624028 -67.363,2024/05/28 15:35:12.6059,28.627838985862834,30.07674609624028 -67.609,2024/05/28 15:35:12.8519,28.627838985862834,30.07674609624028 -67.762,2024/05/28 15:35:13.0049,28.627838985862834,30.07674609624028 -67.854,2024/05/28 15:35:13.0969,28.627838985862834,30.07674609624028 -68.101,2024/05/28 15:35:13.3439,28.627838985862834,30.07674609624028 -68.254,2024/05/28 15:35:13.4969,28.627838985862834,30.07674609624028 -68.347,2024/05/28 15:35:13.5899,28.627838985862834,30.07674609624028 -68.594,2024/05/28 15:35:13.8369,28.627838985862834,30.07674609624028 -68.84,2024/05/28 15:35:14.0829,28.627838985862834,30.07674609624028 -68.993,2024/05/28 15:35:14.2359,28.627838985862834,30.07674609624028 -69.086,2024/05/28 15:35:14.3289,28.627838985862834,30.07674609624028 -69.333,2024/05/28 15:35:14.5759,28.627838985862834,30.07674609624028 -69.485,2024/05/28 15:35:14.7279,28.627838985862834,30.07674609624028 -69.579,2024/05/28 15:35:14.8219,28.627838985862834,30.07674609624028 -69.826,2024/05/28 15:35:15.0689,28.627838985862834,30.07674609624028 -69.978,2024/05/28 15:35:15.2209,28.627838985862834,30.07674609624028 -70.564,2024/05/28 15:35:15.8069,28.627838985862834,30.07674609624028 -70.717,2024/05/28 15:35:15.9599,28.627838985862834,30.07674609624028 -70.81,2024/05/28 15:35:16.0529,28.627838985862834,30.07674609624028 -71.056,2024/05/28 15:35:16.2989,28.627838985862834,30.07674609624028 -71.209,2024/05/28 15:35:16.4519,28.627838985862834,30.07674609624028 -71.303,2024/05/28 15:35:16.5459,28.627838985862834,30.07674609624028 -71.549,2024/05/28 15:35:16.7919,28.627838985862834,30.07674609624028 -71.795,2024/05/28 15:35:17.0379,28.627838985862834,30.07674609624028 -72.042,2024/05/28 15:35:17.2849,28.627838985862834,30.07674609624028 -72.194,2024/05/28 15:35:17.4369,28.627838985862834,30.07674609624028 -72.288,2024/05/28 15:35:17.5309,28.627838985862834,30.07674609624028 -72.534,2024/05/28 15:35:17.7769,28.627838985862834,30.07674609624028 -72.687,2024/05/28 15:35:17.9299,28.627838985862834,30.07674609624028 -72.781,2024/05/28 15:35:18.0239,28.627838985862834,30.07674609624028 -72.933,2024/05/28 15:35:18.1759,28.627838985862834,30.07674609624028 -73.026,2024/05/28 15:35:18.2689,28.627838985862834,30.07674609624028 -73.273,2024/05/28 15:35:18.5159,28.627838985862834,30.07674609624028 -73.519,2024/05/28 15:35:18.7619,28.627838985862834,30.07674609624028 -73.672,2024/05/28 15:35:18.9149,28.627838985862834,30.07674609624028 -73.765,2024/05/28 15:35:19.0079,28.627838985862834,30.07674609624028 -74.012,2024/05/28 15:35:19.2549,28.627838985862834,30.07674609624028 -74.165,2024/05/28 15:35:19.4079,28.627838985862834,30.07674609624028 -74.258,2024/05/28 15:35:19.5009,28.627838985862834,30.07674609624028 -74.504,2024/05/28 15:35:19.7469,28.627838985862834,30.07674609624028 -74.657,2024/05/28 15:35:19.8999,28.627838985862834,30.07674609624028 -74.751,2024/05/28 15:35:19.9939,28.627838985862834,30.07674609624028 -74.997,2024/05/28 15:35:20.2399,28.627838985862834,30.07674609624028 -75.243,2024/05/28 15:35:20.4859,28.627838985862834,30.07674609624028 -75.396,2024/05/28 15:35:20.6389,28.627838985862834,30.07674609624028 -75.49,2024/05/28 15:35:20.7329,28.627838985862834,30.07674609624028 -75.889,2024/05/28 15:35:21.1319,28.627838985862834,30.07674609624028 -76.229,2024/05/28 15:35:21.4719,28.627838985862834,30.07674609624028 -76.381,2024/05/28 15:35:21.6239,28.627838985862834,30.07674609624028 -76.475,2024/05/28 15:35:21.7179,28.627838985862834,30.07674609624028 -76.721,2024/05/28 15:35:21.9639,28.627838985862834,30.07674609624028 -76.874,2024/05/28 15:35:22.1169,28.627838985862834,30.07674609624028 -76.967,2024/05/28 15:35:22.2099,28.627838985862834,30.07674609624028 -77.213,2024/05/28 15:35:22.4559,28.627838985862834,30.07674609624028 -77.46,2024/05/28 15:35:22.7029,28.627838985862834,30.07674609624028 -77.612,2024/05/28 15:35:22.8549,28.627838985862834,30.07674609624028 -77.706,2024/05/28 15:35:22.9489,28.627838985862834,30.07674609624028 -77.952,2024/05/28 15:35:23.1949,28.627838985862834,30.07674609624028 -78.105,2024/05/28 15:35:23.3479,28.627838985862834,30.07674609624028 -78.199,2024/05/28 15:35:23.4419,28.627838985862834,30.07674609624028 -78.445,2024/05/28 15:35:23.6879,28.627838985862834,30.07674609624028 -78.691,2024/05/28 15:35:23.9339,28.627838985862834,30.07674609624028 -78.844,2024/05/28 15:35:24.0869,28.627838985862834,30.07674609624028 -78.938,2024/05/28 15:35:24.1809,28.627838985862834,30.07674609624028 -79.184,2024/05/28 15:35:24.4269,28.627838985862834,30.07674609624028 -79.337,2024/05/28 15:35:24.5799,28.627838985862834,30.07674609624028 -79.429,2024/05/28 15:35:24.6719,28.627838985862834,30.07674609624028 -79.676,2024/05/28 15:35:24.9189,28.627838985862834,30.07674609624028 -79.922,2024/05/28 15:35:25.1649,28.627838985862834,30.07674609624028 -80.075,2024/05/28 15:35:25.3179,28.627838985862834,30.07674609624028 -80.168,2024/05/28 15:35:25.4109,28.627838985862834,30.07674609624028 -80.415,2024/05/28 15:35:25.6579,28.627838985862834,30.07674609624028 -80.568,2024/05/28 15:35:25.8109,28.627838985862834,30.07674609624028 -80.661,2024/05/28 15:35:25.9039,28.627838985862834,30.07674609624028 -80.907,2024/05/28 15:35:26.1499,28.627838985862834,30.07674609624028 -81.154,2024/05/28 15:35:26.3969,28.627838985862834,30.07674609624028 -81.307,2024/05/28 15:35:26.5499,28.627838985862834,30.07674609624028 -81.4,2024/05/28 15:35:26.6429,28.627838985862834,30.07674609624028 -81.647,2024/05/28 15:35:26.8899,28.627838985862834,30.07674609624028 -81.893,2024/05/28 15:35:27.1359,28.627838985862834,30.07674609624028 -82.046,2024/05/28 15:35:27.2889,28.627838985862834,30.07674609624028 -82.139,2024/05/28 15:35:27.3819,28.627838985862834,30.07674609624028 -82.538,2024/05/28 15:35:27.7809,28.627838985862834,30.07674609624028 -82.878,2024/05/28 15:35:28.1209,28.627838985862834,30.07674609624028 -83.124,2024/05/28 15:35:28.3669,28.627838985862834,30.07674609624028 -83.276,2024/05/28 15:35:28.5189,28.627838985862834,30.07674609624028 -83.37,2024/05/28 15:35:28.6129,28.627838985862834,30.07674609624028 -83.617,2024/05/28 15:35:28.8599,28.627838985862834,30.07674609624028 -83.769,2024/05/28 15:35:29.0119,28.627838985862834,30.07674609624028 -83.863,2024/05/28 15:35:29.1059,28.627838985862834,30.07674609624028 -84.109,2024/05/28 15:35:29.3519,28.627838985862834,30.07674609624028 -84.262,2024/05/28 15:35:29.5049,28.627838985862834,30.07674609624028 -84.356,2024/05/28 15:35:29.5989,28.627838985862834,30.07674609624028 -84.602,2024/05/28 15:35:29.8449,28.627838985862834,30.07674609624028 -84.848,2024/05/28 15:35:30.0909,28.627838985862834,30.07674609624028 -85.001,2024/05/28 15:35:30.2439,28.627838985862834,30.07674609624028 -85.094,2024/05/28 15:35:30.3369,28.627838985862834,30.07674609624028 -85.739,2024/05/28 15:35:30.9819,28.627838985862834,30.07674609624028 -85.833,2024/05/28 15:35:31.0759,28.627838985862834,30.07674609624028 -86.232,2024/05/28 15:35:31.4749,28.627838985862834,30.07674609624028 -86.572,2024/05/28 15:35:31.8149,28.627838985862834,30.07674609624028 -86.725,2024/05/28 15:35:31.9679,28.627838985862834,30.07674609624028 -86.819,2024/05/28 15:35:32.0619,28.627838985862834,30.07674609624028 -87.064,2024/05/28 15:35:32.3069,28.627838985862834,30.07674609624028 -87.217,2024/05/28 15:35:32.4599,28.627838985862834,30.07674609624028 -87.311,2024/05/28 15:35:32.5539,28.627838985862834,30.07674609624028 -87.557,2024/05/28 15:35:32.7999,28.627838985862834,30.07674609624028 -87.803,2024/05/28 15:35:33.0459,28.627838985862834,30.07674609624028 -87.956,2024/05/28 15:35:33.1989,28.627838985862834,30.07674609624028 -88.05,2024/05/28 15:35:33.2929,28.627838985862834,30.07674609624028 -88.296,2024/05/28 15:35:33.5389,28.627838985862834,30.07674609624028 -88.449,2024/05/28 15:35:33.6919,28.627838985862834,30.07674609624028 -88.542,2024/05/28 15:35:33.7849,28.627838985862834,30.07674609624028 -88.789,2024/05/28 15:35:34.0319,28.627838985862834,30.07674609624028 -89.035,2024/05/28 15:35:34.2779,28.627838985862834,30.07674609624028 -89.188,2024/05/28 15:35:34.4309,28.627838985862834,30.07674609624028 -89.281,2024/05/28 15:35:34.5239,28.627838985862834,30.07674609624028 -89.527,2024/05/28 15:35:34.7699,28.627838985862834,30.07674609624028 -89.68,2024/05/28 15:35:34.9229,28.627838985862834,30.07674609624028 -89.773,2024/05/28 15:35:35.0159,28.627838985862834,30.07674609624028 -90.019,2024/05/28 15:35:35.2619,28.627838985862834,30.07674609624028 -90.172,2024/05/28 15:35:35.4149,28.627838985862834,30.07674609624028 -90.266,2024/05/28 15:35:35.5089,28.627838985862834,30.07674609624028 -90.512,2024/05/28 15:35:35.7549,28.627838985862834,30.07674609624028 -90.665,2024/05/28 15:35:35.9079,28.627838985862834,30.07674609624028 -90.759,2024/05/28 15:35:36.0019,28.627838985862834,30.07674609624028 -91.005,2024/05/28 15:35:36.2479,28.627838985862834,30.07674609624028 -91.251,2024/05/28 15:35:36.4939,28.627838985862834,30.07674609624028 -91.498,2024/05/28 15:35:36.7409,28.627838985862834,30.07674609624028 -91.65,2024/05/28 15:35:36.8929,28.627838985862834,30.07674609624028 -91.744,2024/05/28 15:35:36.9869,28.627838985862834,30.07674609624028 -91.897,2024/05/28 15:35:37.1399,28.627838985862834,30.07674609624028 -91.99,2024/05/28 15:35:37.2329,28.627838985862834,30.07674609624028 -92.236,2024/05/28 15:35:37.4789,28.627838985862834,30.07674609624028 -92.482,2024/05/28 15:35:37.7249,28.627838985862834,30.07674609624028 -92.635,2024/05/28 15:35:37.8779,28.627838985862834,30.07674609624028 -92.729,2024/05/28 15:35:37.9719,28.627838985862834,30.07674609624028 -92.975,2024/05/28 15:35:38.2179,28.627838985862834,30.07674609624028 -93.221,2024/05/28 15:35:38.4639,28.627838985862834,30.07674609624028 -93.468,2024/05/28 15:35:38.7109,28.627838985862834,30.07674609624028 -93.62,2024/05/28 15:35:38.8629,28.627838985862834,30.07674609624028 -93.714,2024/05/28 15:35:38.9569,28.627838985862834,30.07674609624028 -93.867,2024/05/28 15:35:39.1099,28.627838985862834,30.07674609624028 -93.96,2024/05/28 15:35:39.2029,28.627838985862834,30.07674609624028 -94.207,2024/05/28 15:35:39.4499,28.627838985862834,30.07674609624028 -94.453,2024/05/28 15:35:39.6959,28.627838985862834,30.07674609624028 -94.605,2024/05/28 15:35:39.8479,28.627838985862834,30.07674609624028 -94.699,2024/05/28 15:35:39.9419,28.627838985862834,30.07674609624028 -94.945,2024/05/28 15:35:40.1879,28.627838985862834,30.07674609624028 -95.098,2024/05/28 15:35:40.3409,28.627838985862834,30.07674609624028 -95.191,2024/05/28 15:35:40.4339,28.627838985862834,30.07674609624028 -95.438,2024/05/28 15:35:40.6809,28.627838985862834,30.07674609624028 -95.684,2024/05/28 15:35:40.9269,28.627838985862834,30.07674609624028 -95.837,2024/05/28 15:35:41.0799,28.627838985862834,30.07674609624028 -95.93,2024/05/28 15:35:41.1729,28.627838985862834,30.07674609624028 -96.177,2024/05/28 15:35:41.4199,28.627838985862834,30.07674609624028 -96.33,2024/05/28 15:35:41.5729,28.627838985862834,30.07674609624028 -96.422,2024/05/28 15:35:41.6649,28.627838985862834,30.07674609624028 -96.669,2024/05/28 15:35:41.9119,28.627838985862834,30.07674609624028 -96.821,2024/05/28 15:35:42.0639,28.627838985862834,30.07674609624028 -96.915,2024/05/28 15:35:42.1579,28.627838985862834,30.07674609624028 -97.161,2024/05/28 15:35:42.4039,28.627838985862834,30.07674609624028 -97.408,2024/05/28 15:35:42.6509,28.627838985862834,30.07674609624028 -97.56,2024/05/28 15:35:42.8029,28.627838985862834,30.07674609624028 -97.654,2024/05/28 15:35:42.8969,28.627838985862834,30.07674609624028 -97.9,2024/05/28 15:35:43.1429,28.627838985862834,30.07674609624028 -98.053,2024/05/28 15:35:43.2959,28.627838985862834,30.07674609624028 -98.147,2024/05/28 15:35:43.3899,28.627838985862834,30.07674609624028 -98.791,2024/05/28 15:35:44.0339,28.627838985862834,30.07674609624028 -98.886,2024/05/28 15:35:44.1289,28.627838985862834,30.07674609624028 -99.131,2024/05/28 15:35:44.3739,28.627838985862834,30.07674609624028 -99.284,2024/05/28 15:35:44.5269,28.627838985862834,30.07674609624028 -99.378,2024/05/28 15:35:44.6209,28.627838985862834,30.07674609624028 -99.624,2024/05/28 15:35:44.8669,28.627838985862834,30.07674609624028 -99.871,2024/05/28 15:35:45.1139,28.627838985862834,30.07674609624028 -100.023,2024/05/28 15:35:45.2659,28.627838985862834,30.07674609624028 -100.117,2024/05/28 15:35:45.3599,28.627838985862834,30.07674609624028 -100.363,2024/05/28 15:35:45.6059,28.627838985862834,30.07674609624028 -100.516,2024/05/28 15:35:45.7589,28.627838985862834,30.07674609624028 -100.61,2024/05/28 15:35:45.8529,28.627838985862834,30.07674609624028 -100.856,2024/05/28 15:35:46.0989,28.627838985862834,30.07674609624028 -101.102,2024/05/28 15:35:46.3449,28.627838985862834,30.07674609624028 -101.255,2024/05/28 15:35:46.4979,28.627838985862834,30.07674609624028 -101.348,2024/05/28 15:35:46.5909,28.627838985862834,30.07674609624028 -101.594,2024/05/28 15:35:46.8369,28.627838985862834,30.07674609624028 -101.841,2024/05/28 15:35:47.0839,28.627838985862834,30.07674609624028 -101.993,2024/05/28 15:35:47.2359,28.627838985862834,30.07674609624028 -102.087,2024/05/28 15:35:47.3299,28.627838985862834,30.07674609624028 -102.24,2024/05/28 15:35:47.4829,28.627838985862834,30.07674609624028 -102.333,2024/05/28 15:35:47.5759,28.627838985862834,30.07674609624028 -102.58,2024/05/28 15:35:47.8229,28.627838985862834,30.07674609624028 -102.826,2024/05/28 15:35:48.0689,28.627838985862834,30.07674609624028 -102.979,2024/05/28 15:35:48.2219,28.627838985862834,30.07674609624028 -103.072,2024/05/28 15:35:48.3149,28.627838985862834,30.07674609624028 -103.319,2024/05/28 15:35:48.5619,28.627838985862834,30.07674609624028 -103.471,2024/05/28 15:35:48.7139,28.627838985862834,30.07674609624028 -103.565,2024/05/28 15:35:48.8079,28.627838985862834,30.07674609624028 -103.811,2024/05/28 15:35:49.0539,28.627838985862834,30.07674609624028 -103.963,2024/05/28 15:35:49.2059,28.627838985862834,30.07674609624028 -104.057,2024/05/28 15:35:49.2999,28.627838985862834,30.07674609624028 -104.303,2024/05/28 15:35:49.5459,28.627838985862834,30.07674609624028 -104.55,2024/05/28 15:35:49.7929,28.627838985862834,30.07674609624028 -104.702,2024/05/28 15:35:49.9449,28.627838985862834,30.07674609624028 -104.796,2024/05/28 15:35:50.0389,28.627838985862834,30.07674609624028 -105.042,2024/05/28 15:35:50.2849,28.627838985862834,30.07674609624028 -105.195,2024/05/28 15:35:50.4379,28.627838985862834,30.07674609624028 -105.289,2024/05/28 15:35:50.5319,28.627838985862834,30.07674609624028 -105.535,2024/05/28 15:35:50.7779,28.627838985862834,30.07674609624028 -105.688,2024/05/28 15:35:50.9309,28.627838985862834,30.07674609624028 -105.782,2024/05/28 15:35:51.0249,28.627838985862834,30.07674609624028 -106.028,2024/05/28 15:35:51.2709,28.627838985862834,30.07674609624028 -106.274,2024/05/28 15:35:51.5169,28.627838985862834,30.07674609624028 -106.426,2024/05/28 15:35:51.6689,28.627838985862834,30.07674609624028 -106.52,2024/05/28 15:35:51.7629,28.627838985862834,30.07674609624028 -106.766,2024/05/28 15:35:52.0089,28.627838985862834,30.07674609624028 -107.012,2024/05/28 15:35:52.2549,28.627838985862834,30.07674609624028 -107.165,2024/05/28 15:35:52.4079,28.627838985862834,30.07674609624028 -107.259,2024/05/28 15:35:52.5019,28.627838985862834,30.07674609624028 -107.411,2024/05/28 15:35:52.6539,28.627838985862834,30.07674609624028 -107.505,2024/05/28 15:35:52.7479,28.627838985862834,30.07674609624028 -107.752,2024/05/28 15:35:52.9949,28.627838985862834,30.07674609624028 -107.904,2024/05/28 15:35:53.1469,28.627838985862834,30.07674609624028 -107.998,2024/05/28 15:35:53.2409,28.627838985862834,30.07674609624028 -108.244,2024/05/28 15:35:53.4869,28.627838985862834,30.07674609624028 -108.491,2024/05/28 15:35:53.7339,28.627838985862834,30.07674609624028 -108.643,2024/05/28 15:35:53.8859,28.627838985862834,30.07674609624028 -108.737,2024/05/28 15:35:53.9799,28.627838985862834,30.07674609624028 -108.983,2024/05/28 15:35:54.2259,28.627838985862834,30.07674609624028 -109.135,2024/05/28 15:35:54.3779,28.627838985862834,30.07674609624028 -109.23,2024/05/28 15:35:54.4729,28.627838985862834,30.07674609624028 -109.475,2024/05/28 15:35:54.7179,28.627838985862834,30.07674609624028 -109.722,2024/05/28 15:35:54.9649,28.627838985862834,30.07674609624028 -109.874,2024/05/28 15:35:55.1169,28.627838985862834,30.07674609624028 -109.968,2024/05/28 15:35:55.2109,28.627838985862834,30.07674609624028 -110.214,2024/05/28 15:35:55.4569,28.627838985862834,30.07674609624028 -110.367,2024/05/28 15:35:55.6099,28.627838985862834,30.07674609624028 -110.461,2024/05/28 15:35:55.7039,28.627838985862834,30.07674609624028 -111.106,2024/05/28 15:35:56.3489,28.627838985862834,30.07674609624028 -111.203,2024/05/28 15:35:56.4459,28.627838985862834,30.07674609624028 -111.446,2024/05/28 15:35:56.6889,28.627838985862834,30.07674609624028 -111.598,2024/05/28 15:35:56.8409,28.627838985862834,30.07674609624028 -111.691,2024/05/28 15:35:56.9339,28.627838985862834,30.07674609624028 -111.939,2024/05/28 15:35:57.1819,28.627838985862834,30.07674609624028 -112.09,2024/05/28 15:35:57.3329,28.627838985862834,30.07674609624028 -112.184,2024/05/28 15:35:57.4269,28.627838985862834,30.07674609624028 -112.43,2024/05/28 15:35:57.6729,28.627838985862834,30.07674609624028 -112.677,2024/05/28 15:35:57.9199,28.627838985862834,30.07674609624028 -112.829,2024/05/28 15:35:58.0719,28.627838985862834,30.07674609624028 -112.923,2024/05/28 15:35:58.1659,28.627838985862834,30.07674609624028 -113.169,2024/05/28 15:35:58.4119,28.627838985862834,30.07674609624028 -113.416,2024/05/28 15:35:58.6589,28.627838985862834,30.07674609624028 -113.569,2024/05/28 15:35:58.8119,28.627838985862834,30.07674609624028 -113.662,2024/05/28 15:35:58.9049,28.627838985862834,30.07674609624028 -113.909,2024/05/28 15:35:59.1519,28.627838985862834,30.07674609624028 -114.06,2024/05/28 15:35:59.3029,28.627838985862834,30.07674609624028 -114.155,2024/05/28 15:35:59.3979,28.627838985862834,30.07674609624028 -114.799,2024/05/28 15:36:00.0419,28.627838985862834,30.07674609624028 -114.893,2024/05/28 15:36:00.1359,28.627838985862834,30.07674609624028 -115.292,2024/05/28 15:36:00.5349,28.627838985862834,30.07674609624028 -115.632,2024/05/28 15:36:00.8749,28.627838985862834,30.07674609624028 -116.031,2024/05/28 15:36:01.2739,28.627838985862834,30.07674609624028 -116.371,2024/05/28 15:36:01.6139,28.627838985862834,30.07674609624028 -116.77,2024/05/28 15:36:02.0129,28.627838985862834,30.07674609624028 -117.016,2024/05/28 15:36:02.2589,28.627838985862834,30.07674609624028 -117.602,2024/05/28 15:36:02.8449,28.627838985862834,30.07674609624028 -117.755,2024/05/28 15:36:02.9979,28.627838985862834,30.07674609624028 -117.848,2024/05/28 15:36:03.0909,28.627838985862834,30.07674609624028 -118.095,2024/05/28 15:36:03.3379,28.627838985862834,30.07674609624028 -118.247,2024/05/28 15:36:03.4899,28.627838985862834,30.07674609624028 -118.341,2024/05/28 15:36:03.5839,28.627838985862834,30.07674609624028 -118.587,2024/05/28 15:36:03.8299,28.627838985862834,30.07674609624028 -118.74,2024/05/28 15:36:03.9829,28.627838985862834,30.07674609624028 -118.834,2024/05/28 15:36:04.0769,28.627838985862834,30.07674609624028 -119.08,2024/05/28 15:36:04.3229,28.627838985862834,30.07674609624028 -119.326,2024/05/28 15:36:04.5689,28.627838985862834,30.07674609624028 -119.479,2024/05/28 15:36:04.7219,28.627838985862834,30.07674609624028 -119.573,2024/05/28 15:36:04.8159,28.627838985862834,30.07674609624028 -119.819,2024/05/28 15:36:05.0619,28.627838985862834,30.07674609624028 -119.972,2024/05/28 15:36:05.2149,28.627838985862834,30.07674609624028 -120.065,2024/05/28 15:36:05.3079,28.627838985862834,30.07674609624028 -120.312,2024/05/28 15:36:05.5549,28.627838985862834,30.07674609624028 -120.463,2024/05/28 15:36:05.7059,28.627838985862834,30.07674609624028 -121.051,2024/05/28 15:36:06.2939,28.627838985862834,30.07674609624028 -121.203,2024/05/28 15:36:06.4459,28.627838985862834,30.07674609624028 -121.296,2024/05/28 15:36:06.5389,28.627838985862834,30.07674609624028 -121.543,2024/05/28 15:36:06.7859,28.627838985862834,30.07674609624028 -121.695,2024/05/28 15:36:06.9379,28.627838985862834,30.07674609624028 -121.789,2024/05/28 15:36:07.0319,28.627838985862834,30.07674609624028 -122.035,2024/05/28 15:36:07.2779,28.627838985862834,30.07674609624028 -122.282,2024/05/28 15:36:07.5249,28.627838985862834,30.07674609624028 -122.434,2024/05/28 15:36:07.6769,28.627838985862834,30.07674609624028 -122.528,2024/05/28 15:36:07.7709,28.627838985862834,30.07674609624028 -122.775,2024/05/28 15:36:08.0179,28.627838985862834,30.07674609624028 -122.926,2024/05/28 15:36:08.1689,28.627838985862834,30.07674609624028 -123.021,2024/05/28 15:36:08.2639,28.627838985862834,30.07674609624028 -123.266,2024/05/28 15:36:08.5089,28.627838985862834,30.07674609624028 -123.513,2024/05/28 15:36:08.7559,28.627838985862834,30.07674609624028 -123.666,2024/05/28 15:36:08.9089,28.627838985862834,30.07674609624028 -123.759,2024/05/28 15:36:09.0019,28.627838985862834,30.07674609624028 -124.006,2024/05/28 15:36:09.2489,28.627838985862834,30.07674609624028 -124.158,2024/05/28 15:36:09.4009,28.627838985862834,30.07674609624028 -124.252,2024/05/28 15:36:09.4949,28.627838985862834,30.07674609624028 -124.498,2024/05/28 15:36:09.7409,28.627838985862834,30.07674609624028 -124.745,2024/05/28 15:36:09.9879,28.627838985862834,30.07674609624028 -124.896,2024/05/28 15:36:10.1389,28.627838985862834,30.07674609624028 -125.389,2024/05/28 15:36:10.6319,28.627838985862834,30.07674609624028 -125.483,2024/05/28 15:36:10.7259,28.627838985862834,30.07674609624028 -125.729,2024/05/28 15:36:10.9719,28.627838985862834,30.07674609624028 -125.882,2024/05/28 15:36:11.1249,28.627838985862834,30.07674609624028 -125.976,2024/05/28 15:36:11.2189,28.627838985862834,30.07674609624028 -126.222,2024/05/28 15:36:11.4649,28.627838985862834,30.07674609624028 -126.468,2024/05/28 15:36:11.7109,28.627838985862834,30.07674609624028 -126.621,2024/05/28 15:36:11.8639,28.627838985862834,30.07674609624028 -126.715,2024/05/28 15:36:11.9579,28.627838985862834,30.07674609624028 -126.961,2024/05/28 15:36:12.2039,28.627838985862834,30.07674609624028 -127.207,2024/05/28 15:36:12.4499,28.627838985862834,30.07674609624028 -127.359,2024/05/28 15:36:12.6019,28.627838985862834,30.07674609624028 -127.454,2024/05/28 15:36:12.6969,28.627838985862834,30.07674609624028 -127.605,2024/05/28 15:36:12.8479,28.627838985862834,30.07674609624028 -127.7,2024/05/28 15:36:12.9429,28.627838985862834,30.07674609624028 -127.946,2024/05/28 15:36:13.1889,28.627838985862834,30.07674609624028 -128.193,2024/05/28 15:36:13.4359,28.627838985862834,30.07674609624028 -128.344,2024/05/28 15:36:13.5869,28.627838985862834,30.07674609624028 -128.438,2024/05/28 15:36:13.6809,28.627838985862834,30.07674609624028 -128.685,2024/05/28 15:36:13.9279,28.627838985862834,30.07674609624028 -128.837,2024/05/28 15:36:14.0799,28.627838985862834,30.07674609624028 -128.931,2024/05/28 15:36:14.1739,28.627838985862834,30.07674609624028 -129.177,2024/05/28 15:36:14.4199,28.627838985862834,30.07674609624028 -129.424,2024/05/28 15:36:14.6669,28.627838985862834,30.07674609624028 -129.576,2024/05/28 15:36:14.8189,28.627838985862834,30.07674609624028 -130.068,2024/05/28 15:36:15.3109,28.627838985862834,30.07674609624028 -130.163,2024/05/28 15:36:15.4059,28.627838985862834,30.07674609624028 -130.807,2024/05/28 15:36:16.0499,28.627838985862834,30.07674609624028 -130.902,2024/05/28 15:36:16.1449,28.627838985862834,30.07674609624028 -131.147,2024/05/28 15:36:16.3899,28.627838985862834,30.07674609624028 -131.3,2024/05/28 15:36:16.5429,28.627838985862834,30.07674609624028 -131.394,2024/05/28 15:36:16.6369,28.627838985862834,30.07674609624028 -131.64,2024/05/28 15:36:16.8829,28.627838985862834,30.07674609624028 -131.886,2024/05/28 15:36:17.1289,28.627838985862834,30.07674609624028 -132.039,2024/05/28 15:36:17.2819,28.627838985862834,30.07674609624028 -132.133,2024/05/28 15:36:17.3759,28.627838985862834,30.07674609624028 -132.379,2024/05/28 15:36:17.6219,28.627838985862834,30.07674609624028 -132.531,2024/05/28 15:36:17.7739,28.627838985862834,30.07674609624028 -132.625,2024/05/28 15:36:17.8679,28.627838985862834,30.07674609624028 -132.872,2024/05/28 15:36:18.1149,28.627838985862834,30.07674609624028 -133.118,2024/05/28 15:36:18.3609,28.627838985862834,30.07674609624028 -133.27,2024/05/28 15:36:18.5129,28.627838985862834,30.07674609624028 -133.364,2024/05/28 15:36:18.6069,28.627838985862834,30.07674609624028 -133.611,2024/05/28 15:36:18.8539,28.627838985862834,30.07674609624028 -133.762,2024/05/28 15:36:19.0049,28.627838985862834,30.07674609624028 -133.857,2024/05/28 15:36:19.0999,28.627838985862834,30.07674609624028 -134.103,2024/05/28 15:36:19.3459,28.627838985862834,30.07674609624028 -134.255,2024/05/28 15:36:19.4979,28.627838985862834,30.07674609624028 -134.349,2024/05/28 15:36:19.5919,28.627838985862834,30.07674609624028 -134.596,2024/05/28 15:36:19.8389,28.627838985862834,30.07674609624028 -134.842,2024/05/28 15:36:20.0849,28.627838985862834,30.07674609624028 -134.994,2024/05/28 15:36:20.2369,28.627838985862834,30.07674609624028 -135.088,2024/05/28 15:36:20.3309,28.627838985862834,30.07674609624028 -135.486,2024/05/28 15:36:20.7289,28.627838985862834,30.07674609624028 -135.827,2024/05/28 15:36:21.0699,28.627838985862834,30.07674609624028 -135.979,2024/05/28 15:36:21.2219,28.627838985862834,30.07674609624028 -136.566,2024/05/28 15:36:21.8089,28.627838985862834,30.07674609624028 -136.717,2024/05/28 15:36:21.9599,28.627838985862834,30.07674609624028 -136.812,2024/05/28 15:36:22.0549,28.627838985862834,30.07674609624028 -137.058,2024/05/28 15:36:22.3009,28.627838985862834,30.07674609624028 -137.21,2024/05/28 15:36:22.4529,28.627838985862834,30.07674609624028 -137.305,2024/05/28 15:36:22.5479,28.627838985862834,30.07674609624028 -137.551,2024/05/28 15:36:22.7939,28.627838985862834,30.07674609624028 -137.797,2024/05/28 15:36:23.0399,28.627838985862834,30.07674609624028 -137.949,2024/05/28 15:36:23.1919,28.627838985862834,30.07674609624028 -138.044,2024/05/28 15:36:23.2869,28.627838985862834,30.07674609624028 -138.289,2024/05/28 15:36:23.5319,28.627838985862834,30.07674609624028 -138.442,2024/05/28 15:36:23.6849,28.627838985862834,30.07674609624028 -138.535,2024/05/28 15:36:23.7779,28.627838985862834,30.07674609624028 -138.782,2024/05/28 15:36:24.0249,28.627838985862834,30.07674609624028 -139.028,2024/05/28 15:36:24.2709,28.627838985862834,30.07674609624028 -139.181,2024/05/28 15:36:24.4239,28.627838985862834,30.07674609624028 -139.275,2024/05/28 15:36:24.5179,28.627838985862834,30.07674609624028 -139.521,2024/05/28 15:36:24.7639,28.627838985862834,30.07674609624028 -139.673,2024/05/28 15:36:24.9159,28.627838985862834,30.07674609624028 -140.26,2024/05/28 15:36:25.5029,28.627838985862834,30.07674609624028 -140.412,2024/05/28 15:36:25.6549,28.627838985862834,30.07674609624028 -140.506,2024/05/28 15:36:25.7489,28.627838985862834,30.07674609624028 -140.753,2024/05/28 15:36:25.9959,28.627838985862834,30.07674609624028 -140.904,2024/05/28 15:36:26.1469,28.627838985862834,30.07674609624028 -140.998,2024/05/28 15:36:26.2409,28.627838985862834,30.07674609624028 -141.244,2024/05/28 15:36:26.4869,28.627838985862834,30.07674609624028 -141.397,2024/05/28 15:36:26.6399,28.627838985862834,30.07674609624028 -141.491,2024/05/28 15:36:26.7339,28.627838985862834,30.07674609624028 -141.737,2024/05/28 15:36:26.9799,28.627838985862834,30.07674609624028 -141.983,2024/05/28 15:36:27.2259,28.627838985862834,30.07674609624028 -142.136,2024/05/28 15:36:27.3789,28.627838985862834,30.07674609624028 -142.23,2024/05/28 15:36:27.4729,28.627838985862834,30.07674609624028 -142.476,2024/05/28 15:36:27.7189,28.627838985862834,30.07674609624028 -142.629,2024/05/28 15:36:27.8719,28.627838985862834,30.07674609624028 -143.121,2024/05/28 15:36:28.3639,28.627838985862834,30.07674609624028 -143.215,2024/05/28 15:36:28.4579,28.627838985862834,30.07674609624028 -143.462,2024/05/28 15:36:28.7049,28.627838985862834,30.07674609624028 -143.708,2024/05/28 15:36:28.9509,28.627838985862834,30.07674609624028 -143.86,2024/05/28 15:36:29.1029,28.627838985862834,30.07674609624028 -143.953,2024/05/28 15:36:29.1959,28.627838985862834,30.07674609624028 -144.2,2024/05/28 15:36:29.4429,28.627838985862834,30.07674609624028 -144.352,2024/05/28 15:36:29.5949,28.627838985862834,30.07674609624028 -144.447,2024/05/28 15:36:29.6899,28.627838985862834,30.07674609624028 -144.693,2024/05/28 15:36:29.9359,28.627838985862834,30.07674609624028 -144.939,2024/05/28 15:36:30.1819,28.627838985862834,30.07674609624028 -145.091,2024/05/28 15:36:30.3339,28.627838985862834,30.07674609624028 -145.186,2024/05/28 15:36:30.4289,28.627838985862834,30.07674609624028 -145.432,2024/05/28 15:36:30.6749,28.627838985862834,30.07674609624028 -145.583,2024/05/28 15:36:30.8259,28.627838985862834,30.07674609624028 -145.678,2024/05/28 15:36:30.9209,28.627838985862834,30.07674609624028 -145.925,2024/05/28 15:36:31.1679,28.627838985862834,30.07674609624028 -146.17,2024/05/28 15:36:31.4129,28.627838985862834,30.07674609624028 -146.323,2024/05/28 15:36:31.5659,28.627838985862834,30.07674609624028 -146.909,2024/05/28 15:36:32.1519,28.627838985862834,30.07674609624028 -147.061,2024/05/28 15:36:32.3039,28.627838985862834,30.07674609624028 -147.155,2024/05/28 15:36:32.3979,28.627838985862834,30.07674609624028 -147.402,2024/05/28 15:36:32.6449,28.627838985862834,30.07674609624028 -147.553,2024/05/28 15:36:32.7959,28.627838985862834,30.07674609624028 -148.141,2024/05/28 15:36:33.3839,28.627838985862834,30.07674609624028 -148.292,2024/05/28 15:36:33.5349,28.627838985862834,30.07674609624028 -148.387,2024/05/28 15:36:33.6299,28.627838985862834,30.07674609624028 -148.633,2024/05/28 15:36:33.8759,28.627838985862834,30.07674609624028 -148.88,2024/05/28 15:36:34.1229,28.627838985862834,30.07674609624028 -149.031,2024/05/28 15:36:34.2739,28.627838985862834,30.07674609624028 -149.126,2024/05/28 15:36:34.3689,28.627838985862834,30.07674609624028 -149.372,2024/05/28 15:36:34.6149,28.627838985862834,30.07674609624028 -149.524,2024/05/28 15:36:34.7669,28.627838985862834,30.07674609624028 -149.618,2024/05/28 15:36:34.8609,28.627838985862834,30.07674609624028 -149.865,2024/05/28 15:36:35.1079,28.627838985862834,30.07674609624028 -150.016,2024/05/28 15:36:35.2589,28.627838985862834,30.07674609624028 -150.111,2024/05/28 15:36:35.3539,28.627838985862834,30.07674609624028 -150.357,2024/05/28 15:36:35.5999,28.627838985862834,30.07674609624028 -150.509,2024/05/28 15:36:35.7519,28.627838985862834,30.07674609624028 -150.604,2024/05/28 15:36:35.8469,28.627838985862834,30.07674609624028 -150.849,2024/05/28 15:36:36.0919,28.627838985862834,30.07674609624028 -151.096,2024/05/28 15:36:36.3389,28.627838985862834,30.07674609624028 -151.247,2024/05/28 15:36:36.4899,28.627838985862834,30.07674609624028 -151.342,2024/05/28 15:36:36.5849,28.627838985862834,30.07674609624028 -151.588,2024/05/28 15:36:36.8309,28.627838985862834,30.07674609624028 -151.74,2024/05/28 15:36:36.9829,28.627838985862834,30.07674609624028 -151.835,2024/05/28 15:36:37.0779,28.627838985862834,30.07674609624028 -152.233,2024/05/28 15:36:37.4759,28.627838985862834,30.07674609624028 -152.574,2024/05/28 15:36:37.8169,28.627838985862834,30.07674609624028 -152.725,2024/05/28 15:36:37.9679,28.627838985862834,30.07674609624028 -152.82,2024/05/28 15:36:38.0629,28.627838985862834,30.07674609624028 -153.066,2024/05/28 15:36:38.3089,28.627838985862834,30.07674609624028 -153.313,2024/05/28 15:36:38.5559,28.627838985862834,30.07674609624028 -153.464,2024/05/28 15:36:38.7069,28.627838985862834,30.07674609624028 -153.559,2024/05/28 15:36:38.8019,28.627838985862834,30.07674609624028 -153.804,2024/05/28 15:36:39.0469,28.627838985862834,30.07674609624028 -154.051,2024/05/28 15:36:39.2939,28.627838985862834,30.07674609624028 -154.203,2024/05/28 15:36:39.4459,28.627838985862834,30.07674609624028 -154.297,2024/05/28 15:36:39.5399,28.627838985862834,30.07674609624028 -154.544,2024/05/28 15:36:39.7869,28.627838985862834,30.07674609624028 -154.79,2024/05/28 15:36:40.0329,28.627838985862834,30.07674609624028 -154.942,2024/05/28 15:36:40.1849,28.627838985862834,30.07674609624028 -155.036,2024/05/28 15:36:40.2789,28.627838985862834,30.07674609624028 -155.283,2024/05/28 15:36:40.5259,28.627838985862834,30.07674609624028 -155.529,2024/05/28 15:36:40.7719,28.627838985862834,30.07674609624028 -155.681,2024/05/28 15:36:40.9239,28.627838985862834,30.07674609624028 -156.267,2024/05/28 15:36:41.5099,28.627838985862834,30.07674609624028 -156.42,2024/05/28 15:36:41.6629,28.627838985862834,30.07674609624028 -156.514,2024/05/28 15:36:41.7569,28.627838985862834,30.07674609624028 -156.76,2024/05/28 15:36:42.0029,28.627838985862834,30.07674609624028 -156.912,2024/05/28 15:36:42.1549,28.627838985862834,30.07674609624028 -157.006,2024/05/28 15:36:42.2489,28.627838985862834,30.07674609624028 +0.001,2024/05/28 15:34:05.2439,, +0.001,2024/05/28 15:34:05.2439,, +0.037,2024/05/28 15:34:05.2799,, +1.022,2024/05/28 15:34:06.2649,, +1.515,2024/05/28 15:34:06.7579,, +1.607,2024/05/28 15:34:06.8499,, +1.853,2024/05/28 15:34:07.0959,, +2.008,2024/05/28 15:34:07.2509,, +2.099,2024/05/28 15:34:07.3419,, +2.5,2024/05/28 15:34:07.7429,53.62886867681953, +3.238,2024/05/28 15:34:08.4809,53.558124755005444,77.88067796315077 +3.731,2024/05/28 15:34:08.9739,51.21316118721709,75.08964339677307 +4.716,2024/05/28 15:34:09.9589,49.335325670095244,72.48390625971166 +4.808,2024/05/28 15:34:10.0509,49.56026412580728,70.3524096137548 +5.054,2024/05/28 15:34:10.2969,49.49093231039783,67.79327821715492 +5.209,2024/05/28 15:34:10.4519,48.098336769580705,65.83767918145354 +5.301,2024/05/28 15:34:10.5439,47.86761769222917,64.07758968625458 +5.951,2024/05/28 15:34:11.1939,46.45371580851525,63.24508816082549 +6.44,2024/05/28 15:34:11.6829,45.150948906246725,61.49209524628168 +6.932,2024/05/28 15:34:12.1749,44.00296042672343,59.92627048913391 +7.918,2024/05/28 15:34:13.1609,43.87775225392866,58.87316876132964 +8.011,2024/05/28 15:34:13.2539,43.908725675840216,60.4416286692415 +8.257,2024/05/28 15:34:13.4999,43.84760709800871,59.05198018387159 +8.41,2024/05/28 15:34:13.6529,44.56447860822774,61.473925189960575 +8.502,2024/05/28 15:34:13.7449,44.50816404511274,63.61308827592008 +8.903,2024/05/28 15:34:14.1459,45.00333320988568,65.39724764850583 +9.241,2024/05/28 15:34:14.4839,44.952713363560584,67.00200915472035 +9.488,2024/05/28 15:34:14.7309,44.84958695167046,65.74952471311104 +9.641,2024/05/28 15:34:14.8839,45.07481465581591,66.91412406958638 +9.737,2024/05/28 15:34:14.9799,44.984543961257394,67.98047386997392 +9.98,2024/05/28 15:34:15.2229,44.663865926946244,66.83786352061233 +10.134,2024/05/28 15:34:15.3769,45.29591085550532,67.6941651843052 +10.227,2024/05/28 15:34:15.4699,45.59225836683796,69.29333782310293 +10.473,2024/05/28 15:34:15.7159,45.48463173576249,69.27385269108876 +10.627,2024/05/28 15:34:15.8699,44.89113267788472,70.8201948599409 +10.719,2024/05/28 15:34:15.9619,44.59948198245636,69.75026881668629 +10.966,2024/05/28 15:34:16.2089,44.3038100642247,69.75026881668629 +11.212,2024/05/28 15:34:16.4549,42.536745440191844,66.15940346365485 +11.366,2024/05/28 15:34:16.6089,42.74034138386352,64.308371668599 +11.458,2024/05/28 15:34:16.7009,40.58000470193663,62.13909129257256 +11.705,2024/05/28 15:34:16.9479,38.690579209159374,62.10662873907529 +11.858,2024/05/28 15:34:17.1009,39.383598313155176,63.658725508239115 +11.95,2024/05/28 15:34:17.1929,39.7610824571078,65.2620359269716 +12.196,2024/05/28 15:34:17.4389,39.7610824571078,64.93021895337588 +12.443,2024/05/28 15:34:17.6859,39.7610824571078,64.93021895337588 +12.597,2024/05/28 15:34:17.8399,41.21075632382417,66.76401226209622 +12.689,2024/05/28 15:34:17.9319,41.21075632382417,68.54876609635897 +12.935,2024/05/28 15:34:18.1779,41.48030968970734,67.98627312431042 +13.089,2024/05/28 15:34:18.3319,43.073260233309966,70.10373266334207 +13.182,2024/05/28 15:34:18.4249,43.2574357437706,72.13482746450104 +13.428,2024/05/28 15:34:18.6709,42.254034698190296,71.88277494179904 +13.674,2024/05/28 15:34:18.9169,42.254034698190296,70.14698853122634 +13.828,2024/05/28 15:34:19.0709,44.06323825500399,72.57685581505994 +13.921,2024/05/28 15:34:19.1639,42.314694059313965,72.62345810181905 +14.167,2024/05/28 15:34:19.4099,42.314694059313965,70.24338640280189 +14.321,2024/05/28 15:34:19.5639,43.409954364535345,71.10532094482568 +14.813,2024/05/28 15:34:20.0559,46.47660392760731,68.78517282089214 +15.305,2024/05/28 15:34:20.5479,50.06048066227423,68.8471737497868 +16.291,2024/05/28 15:34:21.5339,53.47751702899272,66.76276407299706 +16.383,2024/05/28 15:34:21.6259,53.21260761506995,66.44922873894023 +16.63,2024/05/28 15:34:21.8729,52.84883017224421,66.44922873894023 +16.783,2024/05/28 15:34:22.0259,56.36677916205116,66.71056887780226 +16.876,2024/05/28 15:34:22.1189,55.83070674899208,66.97088919821806 +17.03,2024/05/28 15:34:22.2729,58.6923500468586,69.0897966417618 +17.522,2024/05/28 15:34:22.7649,61.85206674735722,67.45047565930626 +18.508,2024/05/28 15:34:23.7509,63.86350386908608,65.76828009509346 +19.585,2024/05/28 15:34:24.8279,63.06504578607702,66.9298139845017 +19.831,2024/05/28 15:34:25.0739,62.092996625102955,66.9298139845017 +20.078,2024/05/28 15:34:25.3209,62.19302544331714,65.06202169212594 +21.216,2024/05/28 15:34:26.4589,60.878020116732785,63.376125894009434 +21.709,2024/05/28 15:34:26.9519,59.44045605555144,63.41398373650195 +22.201,2024/05/28 15:34:27.4439,59.49117581625016,61.6289975038807 +22.693,2024/05/28 15:34:27.9359,58.47232374104991,59.77820115504759 +22.786,2024/05/28 15:34:28.0289,56.96731266826325,60.8747347701272 +23.033,2024/05/28 15:34:28.2759,55.2378867982024,60.8747347701272 +23.279,2024/05/28 15:34:28.5219,55.27818883537637,58.666003784133785 +23.432,2024/05/28 15:34:28.6749,54.229874703384816,57.7612903826314 +23.925,2024/05/28 15:34:29.1679,52.942866624662194,57.77167702833861 +24.911,2024/05/28 15:34:30.1539,52.88983345368569,55.7455528869045 +25.403,2024/05/28 15:34:30.6459,50.88576342691752,53.35884806352801 +25.895,2024/05/28 15:34:31.1379,48.64504322009635,53.37415104711268 +26.234,2024/05/28 15:34:31.4769,45.77160943079279,53.601305954239585 +26.388,2024/05/28 15:34:31.6309,45.930744968194404,50.50346522764552 +26.48,2024/05/28 15:34:31.7229,42.6442649524331,47.20275415693453 +26.881,2024/05/28 15:34:32.1239,38.841795240066375,47.30468616673546 +27.62,2024/05/28 15:34:32.8629,38.674533484320975,42.32414598468979 +28.112,2024/05/28 15:34:33.3549,38.33549719030087,42.31823877872676 +29.097,2024/05/28 15:34:34.3399,37.399505190653635,42.217689815210555 +29.189,2024/05/28 15:34:34.4319,35.93840516101436,42.32493354985924 +29.436,2024/05/28 15:34:34.6789,35.93840516101436,39.30479190463507 +29.589,2024/05/28 15:34:34.8319,35.66349754961291,39.568927203046584 +29.682,2024/05/28 15:34:34.9249,33.85603394496676,36.46687995062552 +30.082,2024/05/28 15:34:35.3249,33.62301141408525,33.04340579702199 +30.821,2024/05/28 15:34:36.0639,30.855782445836823,28.35254250797742 +31.314,2024/05/28 15:34:36.5569,27.790451514904976,28.55871145552614 +31.806,2024/05/28 15:34:37.0489,24.422620003105276,28.560462181134255 +32.391,2024/05/28 15:34:37.6339,24.914658935755952,28.02855686616776 +32.638,2024/05/28 15:34:37.8809,25.32465065967287,28.02855686616776 +32.791,2024/05/28 15:34:38.0339,25.73894138165481,29.77303030148818 +32.884,2024/05/28 15:34:38.1269,26.03377558604119,30.939726350869147 +33.037,2024/05/28 15:34:38.2799,26.40987711435607,32.2893171188243 +33.53,2024/05/28 15:34:38.7729,26.148317015796767,32.01562118716424 +34.515,2024/05/28 15:34:39.7579,24.323962925760657,31.77577693778706 +35.007,2024/05/28 15:34:40.2499,24.335986314202334,29.635001827793655 +35.5,2024/05/28 15:34:40.7429,24.294647251142734,29.715876788904165 +35.839,2024/05/28 15:34:41.0819,24.332467312568763,29.761272374233823 +35.993,2024/05/28 15:34:41.2359,21.869019707990823,27.668875413841214 +36.086,2024/05/28 15:34:41.3289,19.275498115125117,28.335490113989557 +38.209,2024/05/28 15:34:43.4519,19.265984556194507,27.71942760351784 +38.702,2024/05/28 15:34:43.9449,19.018925843219172,27.158178633087065 +38.795,2024/05/28 15:34:44.0379,18.481926555296866,27.128091221708416 +39.041,2024/05/28 15:34:44.2839,18.49911461068598,26.67645653630432 +39.194,2024/05/28 15:34:44.4369,17.912976096775864,26.21958555482269 +39.287,2024/05/28 15:34:44.5299,17.937439174472935,25.754611237601704 +39.534,2024/05/28 15:34:44.7769,17.73703185007458,25.566905692059542 +39.686,2024/05/28 15:34:44.9289,17.73703185007458,25.52776266472772 +39.78,2024/05/28 15:34:45.0229,17.861697284553973,25.506208394558897 +40.025,2024/05/28 15:34:45.2679,17.976389368074695,25.505554950507022 +40.179,2024/05/28 15:34:45.4219,17.556116922010272,25.216396781988237 +40.272,2024/05/28 15:34:45.5149,17.07306812416558,25.21705771893303 +40.518,2024/05/28 15:34:45.7609,17.145087430179256,24.800537628581093 +40.764,2024/05/28 15:34:46.0069,16.122376824858787,24.102558647026115 +40.918,2024/05/28 15:34:46.1609,16.748340113327924,23.65797962633327 +41.504,2024/05/28 15:34:46.7469,16.78535897328544,23.878860944358298 +41.656,2024/05/28 15:34:46.8989,17.995018467763728,24.42744358298674 +41.903,2024/05/28 15:34:47.1459,19.105394315585542,24.425396619093007 +42.242,2024/05/28 15:34:47.4849,17.43559577416228,22.658331800907145 +42.488,2024/05/28 15:34:47.7309,15.431122455280791,22.658331800907145 +42.642,2024/05/28 15:34:47.8849,16.7158813604057,21.29319140006965 +42.735,2024/05/28 15:34:47.9779,14.35013716943486,19.834313701260246 +42.981,2024/05/28 15:34:48.2239,14.318864656719745,17.414553300807537 +43.135,2024/05/28 15:34:48.3779,15.472630637695765,18.426430292743447 +43.227,2024/05/28 15:34:48.4699,15.472630637695765,19.364916731037084 +43.474,2024/05/28 15:34:48.7169,15.425199564646881,19.343388189938874 +43.627,2024/05/28 15:34:48.8699,15.770953950403076,19.934894030317793 +43.72,2024/05/28 15:34:48.9629,14.785088791573086,20.560479890638092 +43.966,2024/05/28 15:34:49.2089,14.786954486590306,19.601020381602584 +44.213,2024/05/28 15:34:49.4559,13.691384991610358,18.59211302317912 +44.366,2024/05/28 15:34:49.6089,13.868678015046896,18.03607496103296 +44.458,2024/05/28 15:34:49.7009,13.743295125970624,18.20988742414406 +44.858,2024/05/28 15:34:50.1009,13.577195214220243,18.26836975029062 +45.198,2024/05/28 15:34:50.4409,13.438835472263298,18.326665454104482 +45.445,2024/05/28 15:34:50.6879,13.22641036088289,18.323027406335815 +45.597,2024/05/28 15:34:50.8399,13.259956137996712,18.363913889292046 +45.69,2024/05/28 15:34:50.9329,13.11141469873813,18.40833144711021 +45.937,2024/05/28 15:34:51.1799,13.02027596508169,18.404709542215908 +46.089,2024/05/28 15:34:51.3319,13.322222381997301,18.480620480203942 +46.183,2024/05/28 15:34:51.4259,13.322222381997301,18.57058606147546 +46.429,2024/05/28 15:34:51.6719,13.304393881410444,18.569688563175564 +46.676,2024/05/28 15:34:51.9189,13.304393881410444,18.568791021496256 +46.828,2024/05/28 15:34:52.0709,13.289050025291505,18.569688563175564 +46.922,2024/05/28 15:34:52.1649,13.289050025291505,18.57058606147546 +47.167,2024/05/28 15:34:52.4099,13.15447565982945,18.277490710342782 +47.321,2024/05/28 15:34:52.5639,13.557879331001967,18.549932614432862 +47.414,2024/05/28 15:34:52.6569,12.580042578002503,18.066543665017942 +47.66,2024/05/28 15:34:52.9029,11.31213365444737,18.065621125958184 +47.814,2024/05/28 15:34:53.0569,12.203683257830786,17.763257959432256 +47.906,2024/05/28 15:34:53.1489,12.203683257830786,18.58852692747151 +48.153,2024/05/28 15:34:53.3959,10.873568078538415,17.455658108475888 +48.402,2024/05/28 15:34:53.6449,10.873568078538415,16.243973241379916 +48.553,2024/05/28 15:34:53.7959,11.741712655824207,17.085081211396098 +48.645,2024/05/28 15:34:53.8879,10.500191569133136,16.57709262808168 +48.892,2024/05/28 15:34:54.1349,10.470319298229894,15.443445211480501 +49.045,2024/05/28 15:34:54.2879,11.213138845060696,15.957234513954269 +49.138,2024/05/28 15:34:54.3809,10.281385925628552,15.579901582915513 +49.385,2024/05/28 15:34:54.6279,10.24638988849805,14.652644812456213 +49.538,2024/05/28 15:34:54.7809,11.431002409760133,15.518805795979707 +49.631,2024/05/28 15:34:54.8739,11.380362194506324,16.33911462309591 +49.877,2024/05/28 15:34:55.1199,11.187225884395732,16.041612554021285 +50.124,2024/05/28 15:34:55.3669,11.13908929602486,15.738487856207787 +50.276,2024/05/28 15:34:55.5189,11.39550223835508,15.87765725792064 +50.369,2024/05/28 15:34:55.6119,11.340143322493786,16.015617378046965 +50.615,2024/05/28 15:34:55.8579,11.309440670335983,16.05303709582707 +50.769,2024/05/28 15:34:56.0119,11.015610657648848,16.028100324118263 +50.862,2024/05/28 15:34:56.1049,10.956339685786125,16.00312469488381 +51.108,2024/05/28 15:34:56.3509,10.88397535554987,16.00312469488381 +51.354,2024/05/28 15:34:56.5969,10.364838882368504,15.898637258163564 +51.508,2024/05/28 15:34:56.7509,10.637225893654344,16.131749233524967 +51.601,2024/05/28 15:34:56.8439,10.53270767820267,16.46309002992249 +51.847,2024/05/28 15:34:57.0899,10.413795006469458,16.46309002992249 +52.094,2024/05/28 15:34:57.3369,10.309520206902857,16.46207763315433 +52.246,2024/05/28 15:34:57.4889,11.423911200916411,17.34839089560374 +52.34,2024/05/28 15:34:57.5829,11.31213365444727,18.19248929274569 +52.586,2024/05/28 15:34:57.8289,10.912452024883729,17.610602866833755 +52.832,2024/05/28 15:34:58.0749,10.798893089294367,17.008821240756223 +52.985,2024/05/28 15:34:58.2279,12.272012827998571,18.169571633182038 +53.078,2024/05/28 15:34:58.3209,11.575092164673098,18.465282739960053 +53.325,2024/05/28 15:34:58.5679,11.503322858269954,17.63424698326148 +53.477,2024/05/28 15:34:58.7199,14.512182753667666,20.0274811197015 +53.571,2024/05/28 15:34:58.8139,14.481220498508538,22.163784273750124 +53.818,2024/05/28 15:34:59.0609,13.893519534569293,21.52208168370337 +53.97,2024/05/28 15:34:59.2129,15.47173916027754,22.423202269078338 +54.063,2024/05/28 15:34:59.3059,15.509581762148489,23.6981011897578 +54.309,2024/05/28 15:34:59.5519,15.003294657331104,23.355227823052093 +54.556,2024/05/28 15:34:59.7989,15.046899860180044,23.007245235649865 +54.709,2024/05/28 15:34:59.9519,15.94707482274685,23.878162966749905 +54.802,2024/05/28 15:35:00.0449,15.046326927957411,24.18401676038674 +55.048,2024/05/28 15:35:00.2909,15.110360303637199,23.63754076322944 +55.202,2024/05/28 15:35:00.4449,15.558898108311386,24.18401676038674 +55.295,2024/05/28 15:35:00.5379,15.62789283565595,24.71841418861655 +55.541,2024/05/28 15:35:00.7839,15.410438319379185,24.585903820414387 +55.787,2024/05/28 15:35:01.0299,15.48098574187761,24.452675381915437 +55.941,2024/05/28 15:35:01.1839,15.812151590818457,24.95729686217373 +56.034,2024/05/28 15:35:01.2769,15.883049592814482,25.45911755475171 +56.28,2024/05/28 15:35:01.5229,15.883049592814482,25.442746183015178 +56.433,2024/05/28 15:35:01.6759,15.893358693954557,25.678135965577148 +56.527,2024/05/28 15:35:01.7699,15.893358693954557,25.911387458027022 +56.773,2024/05/28 15:35:02.0159,15.903769523526789,25.702139988724674 +56.925,2024/05/28 15:35:02.1679,16.057404207562495,25.514701644346147 +57.511,2024/05/28 15:35:02.7539,16.057404207562495,25.538206671573477 +57.665,2024/05/28 15:35:02.9079,16.27299434116458,25.579940057266228 +57.757,2024/05/28 15:35:02.9999,15.821744094975266,25.029316144606643 +58.004,2024/05/28 15:35:03.2469,15.821744094975266,24.422667067023344 +58.157,2024/05/28 15:35:03.3999,15.773140271454402,24.43358344574123 +58.25,2024/05/28 15:35:03.4929,15.773140271454402,24.444494949442774 +58.496,2024/05/28 15:35:03.7389,14.952184325105888,23.594490882407275 +58.743,2024/05/28 15:35:03.9859,14.952184325105888,22.712698357233265 +58.896,2024/05/28 15:35:04.1389,15.099059877866253,23.004347415216976 +58.989,2024/05/28 15:35:04.2319,12.538492457366495,21.26969675383267 +59.235,2024/05/28 15:35:04.4779,12.538492457366495,19.033304144752865 +59.388,2024/05/28 15:35:04.6309,13.20784336811918,19.756011743264377 +59.482,2024/05/28 15:35:04.7249,11.403215920665607,18.96136422658806 +59.727,2024/05/28 15:35:04.9699,11.365657082612007,17.37622897332253 +59.974,2024/05/28 15:35:05.2169,11.32432028357754,17.37622897332253 +60.127,2024/05/28 15:35:05.3699,12.129995119915893,17.92019345133677 +60.22,2024/05/28 15:35:05.4629,10.858335428409378,17.30606829987678 +60.466,2024/05/28 15:35:05.7089,10.810595058424374,16.08311744241976 +60.62,2024/05/28 15:35:05.8629,10.760987434929042,16.084153692376855 +60.713,2024/05/28 15:35:05.9559,9.972145113309763,15.267612779999366 +60.959,2024/05/28 15:35:06.2019,9.974046781291456,14.386336109887974 +61.205,2024/05/28 15:35:06.4479,9.961996753178196,14.386336109887974 +61.359,2024/05/28 15:35:06.6019,9.935944268449532,14.386336109887974 +61.452,2024/05/28 15:35:06.6949,9.110055073832648,13.44742850262954 +61.698,2024/05/28 15:35:06.9409,9.264255867666709,12.485992151206888 +61.944,2024/05/28 15:35:07.1869,9.380586458150585,12.485992151206888 +62.097,2024/05/28 15:35:07.3399,9.154422334361124,12.029131306956458 +62.191,2024/05/28 15:35:07.4339,9.251032871814342,11.554220008291344 +62.437,2024/05/28 15:35:07.6799,9.311036585624462,11.554220008291344 +62.59,2024/05/28 15:35:07.8329,8.950438247793919,11.554220008291344 +62.684,2024/05/28 15:35:07.9269,9.241585175266701,11.744502259922868 +62.93,2024/05/28 15:35:08.1729,9.032253827001654,11.653325705565772 +63.175,2024/05/28 15:35:08.4179,9.153606160804003,11.561430130683084 +63.329,2024/05/28 15:35:08.5719,8.912151074885973,11.802542099056458 +63.422,2024/05/28 15:35:08.6649,9.083330697035375,12.016655108639842 +63.575,2024/05/28 15:35:08.8179,9.293985201167551,13.038404810405298 +63.668,2024/05/28 15:35:08.9109,9.261277685492217,14.004761095189497 +63.914,2024/05/28 15:35:09.1569,9.156431067017111,14.004761095189497 +64.161,2024/05/28 15:35:09.4039,9.28160955126035,13.520355024924458 +64.314,2024/05/28 15:35:09.5569,9.64454464343906,14.12326685532305 +64.407,2024/05/28 15:35:09.6499,9.480106212120248,15.14815720365572 +64.653,2024/05/28 15:35:09.8959,9.254014351035616,14.192721139137953 +64.806,2024/05/28 15:35:10.0489,9.627307903627184,14.261837188805655 +64.9,2024/05/28 15:35:10.1429,9.676610026717652,15.238110119040353 +65.146,2024/05/28 15:35:10.3889,9.687294677096178,15.238110119040353 +65.299,2024/05/28 15:35:10.5419,10.076774251233525,15.653540600558498 +65.393,2024/05/28 15:35:10.6359,10.125931204516352,16.058227382456217 +65.638,2024/05/28 15:35:10.8809,10.138183201178899,16.058227382456217 +65.884,2024/05/28 15:35:11.1269,10.144926822301903,16.05718945934603 +66.038,2024/05/28 15:35:11.2809,10.798254435349776,16.89181261242657 +66.131,2024/05/28 15:35:11.3739,10.887143108155,17.702165592567106 +66.377,2024/05/28 15:35:11.6199,10.957598528747814,17.702165592567106 +66.531,2024/05/28 15:35:11.7739,11.916809339230126,18.758997841036177 +66.623,2024/05/28 15:35:11.8659,11.991184501420275,19.75938595537152 +66.87,2024/05/28 15:35:12.1129,12.08442523802056,19.728997271360075 +67.022,2024/05/28 15:35:12.2649,14.207048598672252,21.662563714082104 +67.116,2024/05/28 15:35:12.3589,14.300912276984288,23.41936520631306 +67.363,2024/05/28 15:35:12.6059,14.3920476125788,23.401566899105994 +67.609,2024/05/28 15:35:12.8519,14.478720017090925,23.401566899105994 +67.762,2024/05/28 15:35:13.0049,16.589049150693256,25.29953886272765 +67.854,2024/05/28 15:35:13.0969,16.589049150693256,26.982710513709826 +68.101,2024/05/28 15:35:13.3439,16.589049150693256,26.982710513709826 +68.254,2024/05/28 15:35:13.4969,17.86684465514312,28.370172129662286 +68.347,2024/05/28 15:35:13.5899,17.98645722976434,29.59786028302271 +68.594,2024/05/28 15:35:13.8369,17.98645722976434,29.50254226333724 +68.84,2024/05/28 15:35:14.0829,17.803008915258143,29.056267252809103 +68.993,2024/05/28 15:35:14.2359,18.61170068260374,29.61306018184094 +69.086,2024/05/28 15:35:14.3289,18.61170068260374,30.58975863476751 +69.333,2024/05/28 15:35:14.5759,18.61170068260374,30.58975863476751 +69.485,2024/05/28 15:35:14.7279,18.84772616548685,30.80476153670619 +69.579,2024/05/28 15:35:14.8219,18.740484175346683,30.7728235081974 +69.826,2024/05/28 15:35:15.0689,18.62960195402737,30.7728235081974 +69.978,2024/05/28 15:35:15.2209,18.775136407664796,30.68006953490599 +70.564,2024/05/28 15:35:15.8069,18.659717507809386,30.587034290147628 +70.717,2024/05/28 15:35:15.9599,18.683818064604722,30.804220490056228 +70.81,2024/05/28 15:35:16.0529,18.41913048479965,30.49918031685442 +71.056,2024/05/28 15:35:16.2989,18.297069673056228,29.969428867875788 +71.209,2024/05/28 15:35:16.4519,18.219605456444206,30.111459612579395 +71.303,2024/05/28 15:35:16.5459,18.082855282626138,30.252823559683375 +71.549,2024/05/28 15:35:16.7919,17.89448640442485,29.785902705810344 +71.795,2024/05/28 15:35:17.0379,17.76202846446315,29.311544938243475 +72.042,2024/05/28 15:35:17.2849,17.62538008068171,29.311544938243475 +72.194,2024/05/28 15:35:17.4369,17.248854701276027,28.744854612028682 +72.288,2024/05/28 15:35:17.5309,17.111399708965525,28.16676528582341 +72.534,2024/05/28 15:35:17.7769,16.96951289271669,28.16676528582341 +72.687,2024/05/28 15:35:17.9299,15.678120049159155,26.830331094987752 +72.781,2024/05/28 15:35:18.0239,15.49356559067759,25.337061129236492 +72.933,2024/05/28 15:35:18.1759,15.435032552121287,25.431607630400926 +73.026,2024/05/28 15:35:18.2689,15.21025062705799,25.525803937715004 +73.273,2024/05/28 15:35:18.5159,13.349243381201774,23.620612467362765 +73.519,2024/05/28 15:35:18.7619,13.11947749169752,21.547621678505497 +73.672,2024/05/28 15:35:18.9149,14.061441531045908,22.32562055875118 +73.765,2024/05/28 15:35:19.0079,12.627282996038986,21.117133643876322 +74.012,2024/05/28 15:35:19.2549,12.364018987256078,19.212842926889643 +74.165,2024/05/28 15:35:19.4079,13.897365995367108,20.24763360658886 +74.258,2024/05/28 15:35:19.5009,13.550628776181451,21.23205124334434 +74.504,2024/05/28 15:35:19.7469,12.703741868884721,19.79898987322333 +74.657,2024/05/28 15:35:19.8999,13.997372495636549,19.33994139942863 +74.751,2024/05/28 15:35:19.9939,13.58176600505569,20.36827598660885 +74.997,2024/05/28 15:35:20.2399,13.175037350815963,19.27865832122834 +75.243,2024/05/28 15:35:20.4859,13.01232837178521,18.537349684713114 +75.396,2024/05/28 15:35:20.6389,13.978184974180657,19.382122346808842 +75.49,2024/05/28 15:35:20.7329,13.716547603566825,19.580602646496864 +75.889,2024/05/28 15:35:21.1319,14.128311838372479,19.449935732541636 +76.229,2024/05/28 15:35:21.4719,14.090063344693245,19.384701872008932 +76.381,2024/05/28 15:35:21.6239,14.40210712552754,19.31924774242862 +76.475,2024/05/28 15:35:21.7179,14.148189437797884,19.59676844108062 +76.721,2024/05/28 15:35:21.9639,14.151885459858876,19.3778223750761 +76.874,2024/05/28 15:35:22.1169,14.360866365182217,19.467922333931785 +76.967,2024/05/28 15:35:22.2099,14.031204960504287,19.774562784884356 +77.213,2024/05/28 15:35:22.4559,13.669329709705822,19.774562784884356 +77.46,2024/05/28 15:35:22.7029,13.272605959852815,19.774562784884356 +77.612,2024/05/28 15:35:22.8549,14.323680256552741,20.431185313958984 +77.706,2024/05/28 15:35:22.9489,13.872531363698087,21.067352309517524 +77.952,2024/05/28 15:35:23.1949,13.38140758535975,21.067352309517524 +78.105,2024/05/28 15:35:23.3479,14.52401894920237,21.866260158823074 +78.199,2024/05/28 15:35:23.4419,14.256476648765293,22.733968710573468 +78.445,2024/05/28 15:35:23.6879,14.266913737252894,22.62815355554521 +78.691,2024/05/28 15:35:23.9339,13.98541933668767,22.521841250957554 +78.844,2024/05/28 15:35:24.0869,14.591762752659317,23.361649485142667 +78.938,2024/05/28 15:35:24.1809,14.267115150325761,24.17229819442082 +79.184,2024/05/28 15:35:24.4269,14.072064116744118,23.455631875237696 +79.337,2024/05/28 15:35:24.5799,14.056740519160188,23.192671256239546 +79.429,2024/05/28 15:35:24.6719,13.904807735489591,23.450657417934647 +79.676,2024/05/28 15:35:24.9189,13.291428402001337,22.58982071642004 +79.922,2024/05/28 15:35:25.1649,13.07801524538918,21.667179481110747 +80.075,2024/05/28 15:35:25.3179,13.85578430189717,22.22086106942453 +80.168,2024/05/28 15:35:25.4109,13.188117256895259,21.845670814450475 +80.415,2024/05/28 15:35:25.6579,13.000618906576442,20.890189084831185 +80.568,2024/05/28 15:35:25.8109,16.216069793271064,23.099783548769455 +80.661,2024/05/28 15:35:25.9039,16.08969113810296,25.115732121520963 +80.907,2024/05/28 15:35:26.1499,15.648620077976064,24.469709165959998 +81.154,2024/05/28 15:35:26.3969,15.523841508222837,23.80616166737791 +81.307,2024/05/28 15:35:26.5499,18.885651063491554,25.99358895317587 +81.4,2024/05/28 15:35:26.6429,18.890762809908864,28.160255680657446 +81.647,2024/05/28 15:35:26.8899,18.680034211984868,27.967838672303586 +81.893,2024/05/28 15:35:27.1359,18.687416628038527,27.774088643914133 +82.046,2024/05/28 15:35:27.2889,21.612150690555243,30.0616034169836 +82.139,2024/05/28 15:35:27.3819,21.357950954282103,31.999479162428045 +82.538,2024/05/28 15:35:27.7809,23.306947314126074,33.46988696325898 +82.878,2024/05/28 15:35:28.1209,23.346859790322252,35.050439845076596 +83.124,2024/05/28 15:35:28.3669,23.396261613156604,35.05091534705858 +83.276,2024/05/28 15:35:28.5189,23.620174505666956,35.639397675419076 +83.37,2024/05/28 15:35:28.6129,23.67645903938502,36.175498153676706 +83.617,2024/05/28 15:35:28.8599,23.83554768268043,36.1920801649569 +83.769,2024/05/28 15:35:29.0119,22.892452201895907,36.07030172685927 +83.863,2024/05/28 15:35:29.1059,23.08206249873264,35.948110752397916 +84.109,2024/05/28 15:35:29.3519,23.26301390817518,35.948110752397916 +84.262,2024/05/28 15:35:29.5049,23.29777257371506,35.977770914830174 +84.356,2024/05/28 15:35:29.5989,22.39570976977401,35.4682957019364 +84.602,2024/05/28 15:35:29.8449,22.585826091376042,34.92086291411864 +84.848,2024/05/28 15:35:30.0909,22.767086548020494,34.92086291411864 +85.001,2024/05/28 15:35:30.2439,22.475043630811804,34.75581486120944 +85.094,2024/05/28 15:35:30.3369,22.6565815968599,34.589979281096234 +85.739,2024/05/28 15:35:30.9819,22.68902717224754,34.580341236025994 +85.833,2024/05/28 15:35:31.0759,22.803029643438588,34.58805188693537 +86.232,2024/05/28 15:35:31.4749,22.594781210072263,34.26611543006687 +86.572,2024/05/28 15:35:31.8149,22.699840497692712,33.94112549695428 +86.725,2024/05/28 15:35:31.9679,22.646432821533505,34.02401112939704 +86.819,2024/05/28 15:35:32.0619,21.098264895701703,32.650676358487075 +87.064,2024/05/28 15:35:32.3069,21.191545700948904,31.126623116982458 +87.217,2024/05/28 15:35:32.4599,21.225364353858,31.38470965295043 +87.311,2024/05/28 15:35:32.5539,21.321323846673213,31.640691100754 +87.557,2024/05/28 15:35:32.7999,18.700451774000822,29.546573405388315 +87.803,2024/05/28 15:35:33.0459,18.782144859340423,27.29224554093464 +87.956,2024/05/28 15:35:33.1989,18.88272944424014,27.586228448267445 +88.05,2024/05/28 15:35:33.2929,18.967273690870122,27.877111280283927 +88.296,2024/05/28 15:35:33.5389,15.51491681183532,25.393568739610693 +88.449,2024/05/28 15:35:33.6919,15.735639320586714,23.025348350604094 +88.542,2024/05/28 15:35:33.7849,12.035579438224191,20.96425529323663 +88.789,2024/05/28 15:35:34.0319,12.099016773959935,18.19890106572372 +89.035,2024/05/28 15:35:34.2779,12.15612044888617,18.197985236466884 +89.188,2024/05/28 15:35:34.4309,8.585205130132396,16.073788186568425 +89.281,2024/05/28 15:35:34.5239,8.627675330540118,13.73559851869101 +89.527,2024/05/28 15:35:34.7699,8.627675330540118,13.69184672228939 +89.68,2024/05/28 15:35:34.9229,7.614339164993737,12.658330590300338 +89.773,2024/05/28 15:35:35.0159,7.752567242571416,12.14084016862095 +90.019,2024/05/28 15:35:35.2619,7.867363109636324,12.14084016862095 +90.172,2024/05/28 15:35:35.4149,8.48589092715688,12.953763931769021 +90.266,2024/05/28 15:35:35.5089,8.60693385270528,13.718600511714014 +90.512,2024/05/28 15:35:35.7549,8.707309652201776,13.718600511714014 +90.665,2024/05/28 15:35:35.9079,9.054179196346661,14.294521094927712 +90.759,2024/05/28 15:35:36.0019,9.178247647839616,14.830149471038157 +91.005,2024/05/28 15:35:36.2479,9.257553610462642,14.812157169028419 +91.251,2024/05/28 15:35:36.4939,9.359302950762551,14.794142985204202 +91.498,2024/05/28 15:35:36.7409,9.407810401561992,14.776106839534334 +91.65,2024/05/28 15:35:36.8929,9.567665853544016,15.027752105133134 +91.744,2024/05/28 15:35:36.9869,9.616556604084135,15.275252316519467 +91.897,2024/05/28 15:35:37.1399,9.524318541406286,15.222789932641563 +91.99,2024/05/28 15:35:37.2329,9.573430665788395,15.17014612102775 +92.236,2024/05/28 15:35:37.4789,9.605075286762778,15.17014612102775 +92.482,2024/05/28 15:35:37.7249,9.175429458458076,14.628738838327793 +92.635,2024/05/28 15:35:37.8779,9.293985201169253,14.07716827585245 +92.729,2024/05/28 15:35:37.9719,9.496581357060869,14.087819798203931 +92.975,2024/05/28 15:35:38.2179,9.656455169304735,14.087819798203931 +93.221,2024/05/28 15:35:38.4639,9.465545505893926,13.503086067019396 +93.468,2024/05/28 15:35:38.7109,9.595796493508871,12.891857895586655 +93.62,2024/05/28 15:35:38.8629,10.203729315991806,13.020496662314127 +93.714,2024/05/28 15:35:38.9569,9.992871022102497,12.459266966131407 +93.867,2024/05/28 15:35:39.1099,12.13852042717415,12.869861434115494 +93.96,2024/05/28 15:35:39.2029,12.090701281202332,13.916417163432069 +94.207,2024/05/28 15:35:39.4499,12.011727985406784,13.916417163432069 +94.453,2024/05/28 15:35:39.6959,12.028510193339226,13.886444229295465 +94.605,2024/05/28 15:35:39.8479,14.876850797637566,15.925869939608742 +94.699,2024/05/28 15:35:39.9419,14.683676134659947,17.7557502422924 +94.945,2024/05/28 15:35:40.1879,13.857277435738544,17.620064320730123 +95.098,2024/05/28 15:35:40.3409,16.788611356046054,19.269146322554096 +95.191,2024/05/28 15:35:40.4339,16.76600282043108,21.24460715883759 +95.438,2024/05/28 15:35:40.6809,15.715136564515355,20.707486568871655 +95.684,2024/05/28 15:35:40.9269,15.674270592939163,20.156057815621253 +95.837,2024/05/28 15:35:41.0799,17.708235631913933,21.83575050232989 +95.93,2024/05/28 15:35:41.1729,16.79025442565248,23.047776465420693 +96.177,2024/05/28 15:35:41.4199,16.71656897096114,22.695080230452298 +96.33,2024/05/28 15:35:41.5729,17.133820825838374,23.186202793903103 +96.422,2024/05/28 15:35:41.6649,17.04625215827973,23.667136145578183 +96.669,2024/05/28 15:35:41.9119,16.955791063076074,23.667136145578183 +96.821,2024/05/28 15:35:42.0639,16.212808899563626,23.469128658729534 +96.915,2024/05/28 15:35:42.1579,16.106541827938994,23.269436320346625 +97.161,2024/05/28 15:35:42.4039,15.581782761383993,23.18260842384509 +97.408,2024/05/28 15:35:42.6509,15.460925906459543,23.095454098155333 +97.56,2024/05/28 15:35:42.8029,15.551767464321939,23.153833375922872 +97.654,2024/05/28 15:35:42.8969,15.429334652410198,23.212065827926647 +97.9,2024/05/28 15:35:43.1429,15.376837335315594,23.205602771744587 +98.053,2024/05/28 15:35:43.2959,15.828244796354031,23.360222601679123 +98.147,2024/05/28 15:35:43.3899,15.828244796354031,23.52020408074726 +98.791,2024/05/28 15:35:44.0339,16.130359752562946,23.62202362203543 +98.886,2024/05/28 15:35:44.1289,16.237320428956874,23.647410006171924 +99.131,2024/05/28 15:35:44.3739,16.33893875195717,23.576824779148414 +99.284,2024/05/28 15:35:44.5269,16.458411537715477,23.50673662307609 +99.378,2024/05/28 15:35:44.6209,15.892599304193736,22.90342041413611 +99.624,2024/05/28 15:35:44.8669,15.973541341496173,22.2830279211182 +99.871,2024/05/28 15:35:45.1139,16.05149758473102,22.2830279211182 +100.023,2024/05/28 15:35:45.2659,16.1462069849232,22.28377586197336 +100.117,2024/05/28 15:35:45.3599,14.3019972883779,20.855854493802614 +100.363,2024/05/28 15:35:45.6059,14.3592655016583,19.32183566158592 +100.516,2024/05/28 15:35:45.7589,14.36250706511193,19.343388189938874 +100.61,2024/05/28 15:35:45.8529,11.154093109860673,17.174593639054947 +100.856,2024/05/28 15:35:46.0989,11.189280584559206,14.660604807897023 +101.102,2024/05/28 15:35:46.3449,11.220670580489218,14.660604807897023 +101.255,2024/05/28 15:35:46.4979,11.220670580489218,14.701473849017088 +101.348,2024/05/28 15:35:46.5909,6.786057376167879,12.116104984688768 +101.594,2024/05/28 15:35:46.8369,6.786057376167879,8.801515021101007 +101.841,2024/05/28 15:35:47.0839,6.786057376167879,8.801515021101007 +101.993,2024/05/28 15:35:47.2359,4.1267281298229666,7.420691791650336 +102.087,2024/05/28 15:35:47.3299,4.1267281298229666,5.715476066494082 +102.24,2024/05/28 15:35:47.4829,4.25197722769413,6.058052492344384 +102.333,2024/05/28 15:35:47.5759,4.318364952394667,6.358721045409472 +102.58,2024/05/28 15:35:47.8229,4.574919131249475,6.400520812142295 +102.826,2024/05/28 15:35:48.0689,4.811862735833858,6.400520812142295 +102.979,2024/05/28 15:35:48.2219,5.315451343819066,7.556454194925025 +103.072,2024/05/28 15:35:48.3149,5.511638678246361,8.398412548412548 +103.319,2024/05/28 15:35:48.5619,5.707828864360623,8.23609940040389 +103.471,2024/05/28 15:35:48.7139,6.377402634914806,9.41629792788369 +103.565,2024/05/28 15:35:48.8079,6.282981940843555,10.099504938362077 +103.811,2024/05/28 15:35:49.0539,6.451320812816969,9.72111104761179 +103.963,2024/05/28 15:35:49.2059,6.451320812816969,9.966610925150702 +104.057,2024/05/28 15:35:49.2999,6.622497358577598,10.381072520056232 +104.303,2024/05/28 15:35:49.5459,6.768843429959723,10.381072520056232 +104.55,2024/05/28 15:35:49.7929,6.871982096239199,10.3794669098819 +104.702,2024/05/28 15:35:49.9449,6.871982096239199,10.570398920255249 +104.796,2024/05/28 15:35:50.0389,6.971534899186223,10.759491933482114 +105.042,2024/05/28 15:35:50.2849,7.0499857340685885,10.759491933482114 +105.195,2024/05/28 15:35:50.4379,7.054467892149933,10.759491933482114 +105.289,2024/05/28 15:35:50.5319,7.092897532200291,10.759491933482114 +105.535,2024/05/28 15:35:50.7779,7.111590022187121,10.759491933482114 +105.688,2024/05/28 15:35:50.9309,7.459931280691393,11.213087591441232 +105.782,2024/05/28 15:35:51.0249,7.47939698841679,11.64903429473877 +106.028,2024/05/28 15:35:51.2709,7.480242174455192,11.64903429473877 +106.274,2024/05/28 15:35:51.5169,7.462473165587795,11.64903429473877 +106.426,2024/05/28 15:35:51.6689,9.369797407002459,13.330416347586446 +106.52,2024/05/28 15:35:51.7629,9.382608024069135,14.822280526288793 +106.766,2024/05/28 15:35:52.0089,9.438488092446644,14.781745499094482 +107.012,2024/05/28 15:35:52.2549,9.491012082218623,14.781745499094482 +107.165,2024/05/28 15:35:52.4079,11.707596512177469,16.73320053068151 +107.259,2024/05/28 15:35:52.5019,11.767088332127345,18.479718612576328 +107.411,2024/05/28 15:35:52.6539,13.81590787262371,20.275601100830524 +107.505,2024/05/28 15:35:52.7479,13.877129121099793,21.924871721403527 +107.752,2024/05/28 15:35:52.9949,13.877129121099793,21.905859185767326 +107.904,2024/05/28 15:35:53.1469,16.012782250511663,23.874672772626646 +107.998,2024/05/28 15:35:53.2409,15.903444288263016,25.37715508089904 +108.244,2024/05/28 15:35:53.4869,15.903444288263016,25.05726774144912 +108.491,2024/05/28 15:35:53.7339,15.903444288263016,25.05726774144912 +108.643,2024/05/28 15:35:53.8859,16.864435816305896,25.858589804292627 +108.737,2024/05/28 15:35:53.9799,16.79768046384738,26.381180160611972 +108.983,2024/05/28 15:35:54.2259,16.728941128008397,26.381180160611972 +109.135,2024/05/28 15:35:54.3779,17.142271473301673,26.624550074445704 +109.23,2024/05/28 15:35:54.4729,17.06852315692912,26.865715450489432 +109.475,2024/05/28 15:35:54.7179,16.99276384195671,26.865715450489432 +109.722,2024/05/28 15:35:54.9649,16.905280410189373,26.866335812685733 +109.874,2024/05/28 15:35:55.1169,16.94968890637805,26.866335812685733 +109.968,2024/05/28 15:35:55.2109,16.86760480785669,26.88060019171199 +110.214,2024/05/28 15:35:55.4569,16.783407241102665,26.88060019171199 +110.367,2024/05/28 15:35:55.6099,16.71863163294679,26.879980158722834 +110.461,2024/05/28 15:35:55.7039,16.630570106552995,26.879360111431225 +111.106,2024/05/28 15:35:56.3489,16.608542324988317,26.889279152356117 +111.203,2024/05/28 15:35:56.4459,16.592790291424162,26.697690287114103 +111.446,2024/05/28 15:35:56.6889,16.506494716204887,26.49465354871935 +111.598,2024/05/28 15:35:56.8409,16.629187744970647,26.797387932408636 +111.691,2024/05/28 15:35:56.9339,16.481407148942328,26.956137210908636 +111.939,2024/05/28 15:35:57.1819,15.853097162863213,26.142557895763247 +112.09,2024/05/28 15:35:57.3329,15.765377459382089,25.34495347533048 +112.184,2024/05/28 15:35:57.4269,15.60537042837846,25.387004549572207 +112.43,2024/05/28 15:35:57.6729,15.434697439777846,25.387004549572207 +112.677,2024/05/28 15:35:57.9199,14.332504653938983,24.14263172619478 +112.829,2024/05/28 15:35:58.0719,14.259056408303563,22.877208454413022 +112.923,2024/05/28 15:35:58.1659,12.60473364830985,21.257155657958254 +113.169,2024/05/28 15:35:58.4119,12.447775963471935,19.448221855309377 +113.416,2024/05/28 15:35:58.6589,12.277490851521925,19.448221855309377 +113.569,2024/05/28 15:35:58.8119,11.190153717884607,18.01110768387108 +113.662,2024/05/28 15:35:58.9049,11.0725922371673,16.448910804872966 +113.909,2024/05/28 15:35:59.1519,10.941064690044021,16.448910804872966 +114.06,2024/05/28 15:35:59.3029,14.115492426294642,18.901499058716656 +114.155,2024/05/28 15:35:59.3979,12.510271641803808,19.55334583474995 +114.799,2024/05/28 15:36:00.0419,15.287324777428061,20.5993527406405 +114.893,2024/05/28 15:36:00.1359,15.3188712407914,22.681857654669 +115.292,2024/05/28 15:36:00.5349,15.891731385747963,23.408687845897443 +115.632,2024/05/28 15:36:00.8749,16.074682027923203,24.475838426224886 +116.031,2024/05/28 15:36:01.2739,16.57268906932396,25.296244780599352 +116.371,2024/05/28 15:36:01.6139,16.753658032538734,26.090228055729984 +116.77,2024/05/28 15:36:02.0129,16.60480473326525,26.267851073127396 +117.016,2024/05/28 15:36:02.2589,16.601793283554283,26.207505286336076 +117.602,2024/05/28 15:36:02.8449,16.79425873436413,26.31476138342635 +117.755,2024/05/28 15:36:02.9979,17.292081770394493,26.366013476949195 +117.848,2024/05/28 15:36:03.0909,17.45088345423581,26.417166136182484 +118.095,2024/05/28 15:36:03.3379,17.58316854528625,26.407069760451147 +118.247,2024/05/28 15:36:03.4899,18.524416940581396,26.64832702691359 +118.341,2024/05/28 15:36:03.5839,18.628367935866457,26.897335679703794 +118.587,2024/05/28 15:36:03.8299,18.33669770592879,26.595739007091595 +118.74,2024/05/28 15:36:03.9829,19.27788322428559,26.73823728919566 +118.834,2024/05/28 15:36:04.0769,19.35036903031031,27.038244518952535 +119.08,2024/05/28 15:36:04.3229,19.31219613457327,26.998765403872326 +119.326,2024/05/28 15:36:04.5689,19.383130477980956,26.959228475607382 +119.479,2024/05/28 15:36:04.7219,19.808305468091937,27.063505562534452 +119.573,2024/05/28 15:36:04.8159,19.86879376100224,27.16738240365948 +119.819,2024/05/28 15:36:05.0619,19.90439794294884,27.128091221708416 +119.972,2024/05/28 15:36:05.2149,20.09529023565411,27.11887411625588 +120.065,2024/05/28 15:36:05.3079,20.143622247286682,27.148971742345356 +120.312,2024/05/28 15:36:05.5549,20.189789157068997,27.148971742345356 +120.463,2024/05/28 15:36:05.7059,19.71291075855422,26.632686683847727 +121.051,2024/05/28 15:36:06.2939,19.7387826430582,26.10619339033045 +121.203,2024/05/28 15:36:06.4459,19.990831231675834,26.197964297504747 +121.296,2024/05/28 15:36:06.5389,17.395467767513278,24.585225915848998 +121.543,2024/05/28 15:36:06.7859,17.392692348410467,22.753754268984565 +121.695,2024/05/28 15:36:06.9379,13.903443714650766,20.67849124090053 +121.789,2024/05/28 15:36:07.0319,14.189238272671465,18.630619957478604 +122.035,2024/05/28 15:36:07.2779,11.677712340919705,17.060676031935742 +122.282,2024/05/28 15:36:07.5249,12.078288681402253,14.745620818851044 +122.434,2024/05/28 15:36:07.6769,10.626847371516089,13.290347374441849 +122.528,2024/05/28 15:36:07.7709,11.069062197451963,11.654755824698059 +122.775,2024/05/28 15:36:08.0179,10.900015817768894,11.067971810589327 +122.926,2024/05/28 15:36:08.1689,11.880100235655418,11.210114480533491 +123.021,2024/05/28 15:36:08.2639,12.22941620395995,11.172883841396246 +123.266,2024/05/28 15:36:08.5089,12.372754643622619,11.051395085387787 +123.513,2024/05/28 15:36:08.7559,12.642248090495153,10.928555866780082 +123.666,2024/05/28 15:36:08.9089,14.061278043972417,11.522441870830448 +123.759,2024/05/28 15:36:09.0019,13.469633791709814,11.522441870830448 +124.006,2024/05/28 15:36:09.2489,13.587350439067716,10.928555866780082 +124.158,2024/05/28 15:36:09.4009,14.519151047029037,11.411982007229652 +124.252,2024/05/28 15:36:09.4949,13.523245206663393,11.175866856758809 +124.498,2024/05/28 15:36:09.7409,13.509511336526089,10.429125882194857 +124.745,2024/05/28 15:36:09.9879,13.471127063754446,10.429125882194857 +124.896,2024/05/28 15:36:10.1389,13.702965531877224,10.58772874605314 +125.389,2024/05/28 15:36:10.6319,12.96041719209303,10.67551716155553 +125.483,2024/05/28 15:36:10.7259,12.815624443820642,10.448285345771653 +125.729,2024/05/28 15:36:10.9719,12.642929967413158,10.448285345771653 +125.882,2024/05/28 15:36:11.1249,12.541242307709537,11.120551545074852 +125.976,2024/05/28 15:36:11.2189,12.334653548475199,11.75443178833697 +126.222,2024/05/28 15:36:11.4649,12.097116593843678,11.75443178833697 +126.468,2024/05/28 15:36:11.7109,10.722465405297575,11.385663499916609 +126.621,2024/05/28 15:36:11.8639,11.337304916011075,12.058192235986288 +126.715,2024/05/28 15:36:11.9579,10.191781679033808,12.519318405301997 +126.961,2024/05/28 15:36:12.2039,9.798486864183197,12.326124019063467 +127.207,2024/05/28 15:36:12.4499,9.371085389606348,12.326124019063467 +127.359,2024/05/28 15:36:12.6019,10.581701838224708,13.275290329530776 +127.454,2024/05/28 15:36:12.6969,10.598254031005881,13.816656614391198 +127.605,2024/05/28 15:36:12.8479,11.491176024966704,14.338758663147937 +127.7,2024/05/28 15:36:12.9429,11.585960588514439,14.597945060863875 +127.946,2024/05/28 15:36:13.1889,11.675891262837258,14.596803303006677 +128.193,2024/05/28 15:36:13.4359,11.746606259710976,14.595661455834515 +128.344,2024/05/28 15:36:13.5869,12.149641686216185,14.709407420649775 +128.438,2024/05/28 15:36:13.6809,11.813152615311466,14.659467930317254 +128.685,2024/05/28 15:36:13.9279,11.824385478916897,14.49482666333061 +128.837,2024/05/28 15:36:14.0799,11.999808427589606,14.551059526142188 +128.931,2024/05/28 15:36:14.1739,11.980299921408388,14.607075910895604 +129.177,2024/05/28 15:36:14.4199,10.923979738782855,14.143314085932381 +129.424,2024/05/28 15:36:14.6669,10.853729694251111,13.663820841916802 +129.576,2024/05/28 15:36:14.8189,11.548797021494835,14.143314085932381 +130.068,2024/05/28 15:36:15.3109,10.628307463573137,13.854000625571421 +130.163,2024/05/28 15:36:15.4059,10.457412264245095,13.607595917966798 +130.807,2024/05/28 15:36:16.0499,10.424551039149462,13.729530217745982 +130.902,2024/05/28 15:36:16.1449,10.235446634910922,13.850391089544487 +131.147,2024/05/28 15:36:16.3899,9.449441995324825,13.729530217745982 +131.3,2024/05/28 15:36:16.5429,11.017697362535914,14.595661455834515 +131.394,2024/05/28 15:36:16.6369,10.830777771076972,15.627966385084571 +131.64,2024/05/28 15:36:16.8829,10.692192876382562,15.666312052724258 +131.886,2024/05/28 15:36:17.1289,10.55146119423041,15.142654985173506 +132.039,2024/05/28 15:36:17.2819,12.270186276678192,15.593802187621423 +132.133,2024/05/28 15:36:17.3759,12.165525060597039,16.527754435090895 +132.379,2024/05/28 15:36:17.6219,12.05757261936579,16.527754435090895 +132.531,2024/05/28 15:36:17.7739,13.59804752719055,16.952875862224673 +132.625,2024/05/28 15:36:17.8679,13.59804752719055,17.60113632695344 +132.872,2024/05/28 15:36:18.1149,13.59804752719055,17.60113632695344 +133.118,2024/05/28 15:36:18.3609,13.59804752719055,17.60113632695344 +133.27,2024/05/28 15:36:18.5129,13.373674604004574,17.21336689901194 +133.364,2024/05/28 15:36:18.6069,13.373674604004574,16.816658407662327 +133.611,2024/05/28 15:36:18.8539,12.874326229440916,16.373759494996865 +133.762,2024/05/28 15:36:19.0049,12.888736952466932,16.1936201429246 +133.857,2024/05/28 15:36:19.0999,12.857128261257941,16.243973241379916 +134.103,2024/05/28 15:36:19.3459,12.822214917957782,16.243973241379916 +134.255,2024/05/28 15:36:19.4979,12.574559245949118,16.206994374857626 +134.349,2024/05/28 15:36:19.5919,12.531156573017114,16.169930941926335 +134.596,2024/05/28 15:36:19.8389,12.484288977125049,16.169930941926335 +134.842,2024/05/28 15:36:20.0849,12.243177785969104,16.11934655416693 +134.994,2024/05/28 15:36:20.2369,12.471622962162641,16.27062793297583 +135.088,2024/05/28 15:36:20.3309,12.418423465935895,16.470175064845748 +135.486,2024/05/28 15:36:20.7289,12.916397846664982,16.870091878825082 +135.827,2024/05/28 15:36:21.0699,12.022249488287,16.667333320000534 +135.979,2024/05/28 15:36:21.2219,12.72177967742395,17.06555985994404 +136.566,2024/05/28 15:36:21.8089,12.72177967742395,17.416467303484175 +136.717,2024/05/28 15:36:21.9599,13.691007200382305,17.780138732117173 +136.812,2024/05/28 15:36:22.0549,13.691007200382305,18.136519327956325 +137.058,2024/05/28 15:36:22.3009,13.691007200382305,18.136519327956325 +137.21,2024/05/28 15:36:22.4529,13.12140481685635,17.369513522260778 +137.305,2024/05/28 15:36:22.5479,13.12140481685635,16.56703554250629 +137.551,2024/05/28 15:36:22.7939,13.129811652228453,16.53077937263294 +137.797,2024/05/28 15:36:23.0399,13.135063191986452,16.53077937263294 +137.949,2024/05/28 15:36:23.1919,11.620236015566984,15.64928113364956 +138.044,2024/05/28 15:36:23.2869,11.605389156390824,14.71507163874282 +138.289,2024/05/28 15:36:23.5319,11.5869526306263,14.71507163874282 +138.442,2024/05/28 15:36:23.6849,10.457632091708337,14.353861269126622 +138.535,2024/05/28 15:36:23.7779,10.425929215183238,13.983323400870528 +138.782,2024/05/28 15:36:24.0249,10.390147853317826,13.983323400870528 +139.028,2024/05/28 15:36:24.2709,10.350245707562168,13.983323400870528 +139.181,2024/05/28 15:36:24.4239,10.678639114294736,14.521248798456236 +139.275,2024/05/28 15:36:24.5179,10.638522497017757,15.039946808416577 +139.521,2024/05/28 15:36:24.7639,10.594348959944199,15.039946808416577 +139.673,2024/05/28 15:36:24.9159,10.8651081316596,15.201973556088038 +140.26,2024/05/28 15:36:25.5029,10.827593528074825,15.362291495737216 +140.412,2024/05/28 15:36:25.6549,10.807032618762733,15.372052563011877 +140.506,2024/05/28 15:36:25.7489,10.796391478893783,15.312304420519684 +140.753,2024/05/28 15:36:25.9959,10.796391478893783,15.281797450998143 +140.904,2024/05/28 15:36:26.1469,10.781476238673042,15.390473243752664 +140.998,2024/05/28 15:36:26.2409,10.781476238673042,15.498387012847498 +141.244,2024/05/28 15:36:26.4869,10.709593937160419,15.286159317064135 +141.397,2024/05/28 15:36:26.6399,10.698855884691262,15.181128636128035 +141.491,2024/05/28 15:36:26.7339,10.382622528760464,14.84811997077969 +141.737,2024/05/28 15:36:26.9799,10.417105737873362,14.626460041080799 +141.983,2024/05/28 15:36:27.2259,9.461901828221695,14.064138793399332 +142.136,2024/05/28 15:36:27.3789,9.809741815296068,13.873235623554683 +142.23,2024/05/28 15:36:27.4729,8.729985319470353,13.67966861197059 +142.476,2024/05/28 15:36:27.7189,8.731565145211015,13.076696830622021 +142.629,2024/05/28 15:36:27.8719,9.19745092122179,13.528981237821764 +143.121,2024/05/28 15:36:28.3639,9.313443503080123,13.351654079801 +143.215,2024/05/28 15:36:28.4579,9.321585381414247,13.66747965061591 +143.462,2024/05/28 15:36:28.7049,9.325283885235695,13.66747965061591 +143.708,2024/05/28 15:36:28.9509,9.324544301829855,13.66747965061591 +143.86,2024/05/28 15:36:29.1029,9.594119367445321,13.917614738165444 +143.953,2024/05/28 15:36:29.1959,9.601304987931147,14.163332941084171 +144.2,2024/05/28 15:36:29.4429,9.60417773081402,14.163332941084171 +144.352,2024/05/28 15:36:29.5949,8.452436226374632,13.382824813917276 +144.447,2024/05/28 15:36:29.6899,8.480945512242087,12.553883861180172 +144.693,2024/05/28 15:36:29.9359,8.504495092691778,12.553883861180172 +144.939,2024/05/28 15:36:30.1819,8.52312607914069,12.553883861180172 +145.091,2024/05/28 15:36:30.3339,7.057155820574916,11.583033569262703 +145.186,2024/05/28 15:36:30.4289,7.103908589036809,10.52299070290064 +145.432,2024/05/28 15:36:30.6749,7.144566297979035,10.52299070290064 +145.583,2024/05/28 15:36:30.8259,6.757626598251165,10.233930492891446 +145.678,2024/05/28 15:36:30.9209,6.806437115474456,9.936464830780277 +145.925,2024/05/28 15:36:31.1679,6.799594308385718,9.921357434007371 +146.17,2024/05/28 15:36:31.4129,6.832982889809104,9.906226997870245 +146.323,2024/05/28 15:36:31.5659,7.555465404015374,10.17185659880568 +146.909,2024/05/28 15:36:32.1519,7.480549491157923,10.327955589886445 +147.061,2024/05/28 15:36:32.3039,10.47651999780329,12.205190152827061 +147.155,2024/05/28 15:36:32.3979,10.47651999780329,13.949910393977447 +147.402,2024/05/28 15:36:32.6449,10.370659319090912,13.82991925741675 +147.553,2024/05/28 15:36:32.7959,11.871389348238559,14.762565269401295 +148.141,2024/05/28 15:36:33.3839,11.871389348238559,15.745898936971917 +148.292,2024/05/28 15:36:33.5349,13.717846417890263,17.13378728322103 +148.387,2024/05/28 15:36:33.6299,13.262339732204465,18.121810064118872 +148.633,2024/05/28 15:36:33.8759,13.262339732204465,17.82133552795637 +148.88,2024/05/28 15:36:34.1229,13.262339732204465,17.82133552795637 +149.031,2024/05/28 15:36:34.2739,14.39524187034511,18.875027593798816 +149.126,2024/05/28 15:36:34.3689,13.734929044667721,20.172588662175546 +149.372,2024/05/28 15:36:34.6149,13.734929044667721,19.83935482821959 +149.524,2024/05/28 15:36:34.7669,15.215086282196923,21.140797840510498 +149.618,2024/05/28 15:36:34.8609,15.215086282196923,22.366641828103447 +149.865,2024/05/28 15:36:35.1079,14.721163122462292,22.175061067183858 +150.016,2024/05/28 15:36:35.2589,14.876850797637026,22.253838620187157 +150.111,2024/05/28 15:36:35.3539,14.876850797637026,22.522581261184666 +150.357,2024/05/28 15:36:35.5999,14.431009077278183,22.377071598699715 +150.509,2024/05/28 15:36:35.7519,14.467919327088888,22.233608194203057 +150.604,2024/05/28 15:36:35.8469,14.467919327088888,22.23660645572221 +150.849,2024/05/28 15:36:36.0919,14.467919327088888,22.23660645572221 +151.096,2024/05/28 15:36:36.3389,14.222371886184963,22.175812649521248 +151.247,2024/05/28 15:36:36.4899,15.0702950569466,22.444746972658585 +151.342,2024/05/28 15:36:36.5849,15.0702950569466,22.76986312358216 +151.588,2024/05/28 15:36:36.8309,14.993523506048112,22.75814872377218 +151.74,2024/05/28 15:36:36.9829,16.6056353819047,23.530830839560256 +151.835,2024/05/28 15:36:37.0779,16.6056353819047,24.289915602982237 +152.233,2024/05/28 15:36:37.4759,18.380899631529335,25.261301101355276 +152.574,2024/05/28 15:36:37.8169,18.29754081837198,26.071696019502326 +152.725,2024/05/28 15:36:37.9679,19.738782643057736,26.81106736654349 +152.82,2024/05/28 15:36:38.0629,18.62466539080732,26.81106736654349 +153.066,2024/05/28 15:36:38.3089,18.62466539080732,25.946097972527586 +153.313,2024/05/28 15:36:38.5559,18.62466539080732,25.946097972527586 +153.464,2024/05/28 15:36:38.7069,18.750509571619748,26.025628394590846 +153.559,2024/05/28 15:36:38.8019,18.750509571619748,26.104916522882558 +153.804,2024/05/28 15:36:39.0469,17.37814719698289,25.232254490367417 +154.051,2024/05/28 15:36:39.2939,17.421911161114068,24.311177127677986 +154.203,2024/05/28 15:36:39.4459,17.839514451410242,24.842839343896795 +154.297,2024/05/28 15:36:39.5399,17.88793338872732,25.36335939894398 +154.544,2024/05/28 15:36:39.7869,16.16655409369531,24.343376922686794 +154.79,2024/05/28 15:36:40.0329,16.230239975280117,23.278745670675644 +154.942,2024/05/28 15:36:40.1849,17.398936418808834,23.757805734817627 +155.036,2024/05/28 15:36:40.2789,15.53357505608407,23.100505044984047 +155.283,2024/05/28 15:36:40.5259,15.599476855360495,21.915747762739013 +155.529,2024/05/28 15:36:40.7719,15.663266933640966,21.915747762739013 +155.681,2024/05/28 15:36:40.9239,25.852010304454225,29.03101789465881 +156.267,2024/05/28 15:36:41.5099,25.93185144836803,34.11890971294364 +156.42,2024/05/28 15:36:41.6629,36.125340550436896,41.252070655099644 +156.514,2024/05/28 15:36:41.7569,36.118515008742584,47.32053817670857 +156.76,2024/05/28 15:36:42.0029,36.11904009620472,47.31912932419615 +156.912,2024/05/28 15:36:42.1549,40.554263350010906,50.46087593373702 +157.006,2024/05/28 15:36:42.2489,40.5179256484157,53.4181617055473 diff --git a/data/case-study/processed/hrv_01.csv b/data/case-study/processed/hrv_01.csv index 9614286..3d2af2d 100755 --- a/data/case-study/processed/hrv_01.csv +++ b/data/case-study/processed/hrv_01.csv @@ -1,1902 +1,1902 @@ reltime,datetime,sdnn,rmssd -0.001,2024/05/28 15:36:54.8549,36.228287730953,42.82785615878869 -0.001,2024/05/28 15:36:54.8549,36.228287730953,42.82785615878869 -0.202,2024/05/28 15:36:55.0559,36.228287730953,42.82785615878869 -0.354,2024/05/28 15:36:55.2079,36.228287730953,42.82785615878869 -0.448,2024/05/28 15:36:55.3019,36.228287730953,42.82785615878869 -0.695,2024/05/28 15:36:55.5489,36.228287730953,42.82785615878869 -0.941,2024/05/28 15:36:55.7949,36.228287730953,42.82785615878869 -1.093,2024/05/28 15:36:55.9469,36.228287730953,42.82785615878869 -1.186,2024/05/28 15:36:56.0399,36.228287730953,42.82785615878869 -1.584,2024/05/28 15:36:56.4379,36.228287730953,42.82785615878869 -1.926,2024/05/28 15:36:56.7799,36.228287730953,42.82785615878869 -2.323,2024/05/28 15:36:57.1769,36.228287730953,42.82785615878869 -2.665,2024/05/28 15:36:57.5189,36.228287730953,42.82785615878869 -2.911,2024/05/28 15:36:57.7649,36.228287730953,42.82785615878869 -3.063,2024/05/28 15:36:57.9169,36.228287730953,42.82785615878869 -3.157,2024/05/28 15:36:58.0109,36.228287730953,42.82785615878869 -3.404,2024/05/28 15:36:58.2579,36.228287730953,42.82785615878869 -3.555,2024/05/28 15:36:58.4089,36.228287730953,42.82785615878869 -3.65,2024/05/28 15:36:58.5039,36.228287730953,42.82785615878869 -3.895,2024/05/28 15:36:58.7489,36.228287730953,42.82785615878869 -4.142,2024/05/28 15:36:58.9959,36.228287730953,42.82785615878869 -4.294,2024/05/28 15:36:59.1479,36.228287730953,42.82785615878869 -4.388,2024/05/28 15:36:59.2419,36.228287730953,42.82785615878869 -4.786,2024/05/28 15:36:59.6399,36.228287730953,42.82785615878869 -5.525,2024/05/28 15:37:00.3789,36.228287730953,42.82785615878869 -5.62,2024/05/28 15:37:00.4739,36.228287730953,42.82785615878869 -5.867,2024/05/28 15:37:00.7209,36.228287730953,42.82785615878869 -6.113,2024/05/28 15:37:00.9669,36.228287730953,42.82785615878869 -6.263,2024/05/28 15:37:01.1169,36.228287730953,42.82785615878869 -6.358,2024/05/28 15:37:01.2119,36.228287730953,42.82785615878869 -6.605,2024/05/28 15:37:01.4589,36.228287730953,42.82785615878869 -6.756,2024/05/28 15:37:01.6099,36.228287730953,42.82785615878869 -6.851,2024/05/28 15:37:01.7049,36.228287730953,42.82785615878869 -7.097,2024/05/28 15:37:01.9509,36.228287730953,42.82785615878869 -7.344,2024/05/28 15:37:02.1979,36.228287730953,42.82785615878869 -7.495,2024/05/28 15:37:02.3489,36.228287730953,42.82785615878869 -7.59,2024/05/28 15:37:02.4439,36.228287730953,42.82785615878869 -7.836,2024/05/28 15:37:02.6899,36.228287730953,42.82785615878869 -7.988,2024/05/28 15:37:02.8419,36.228287730953,42.82785615878869 -8.083,2024/05/28 15:37:02.9369,36.228287730953,42.82785615878869 -8.329,2024/05/28 15:37:03.1829,36.228287730953,42.82785615878869 -8.481,2024/05/28 15:37:03.3349,36.228287730953,42.82785615878869 -8.575,2024/05/28 15:37:03.4289,36.228287730953,42.82785615878869 -8.822,2024/05/28 15:37:03.6759,36.228287730953,42.82785615878869 -9.068,2024/05/28 15:37:03.9219,36.228287730953,42.82785615878869 -9.22,2024/05/28 15:37:04.0739,36.228287730953,42.82785615878869 -9.314,2024/05/28 15:37:04.1679,36.228287730953,42.82785615878869 -9.561,2024/05/28 15:37:04.4149,36.228287730953,42.82785615878869 -9.711,2024/05/28 15:37:04.5649,36.228287730953,42.82785615878869 -9.807,2024/05/28 15:37:04.6609,36.228287730953,42.82785615878869 -10.052,2024/05/28 15:37:04.9059,36.228287730953,42.82785615878869 -10.299,2024/05/28 15:37:05.1529,36.228287730953,42.82785615878869 -10.45,2024/05/28 15:37:05.3039,36.228287730953,42.82785615878869 -10.545,2024/05/28 15:37:05.3989,36.228287730953,42.82785615878869 -10.697,2024/05/28 15:37:05.5509,36.228287730953,42.82785615878869 -11.284,2024/05/28 15:37:06.1379,36.228287730953,42.82785615878869 -11.436,2024/05/28 15:37:06.2899,36.228287730953,42.82785615878869 -11.531,2024/05/28 15:37:06.3849,36.228287730953,42.82785615878869 -11.777,2024/05/28 15:37:06.6309,36.228287730953,42.82785615878869 -11.929,2024/05/28 15:37:06.7829,36.228287730953,42.82785615878869 -12.023,2024/05/28 15:37:06.8769,36.228287730953,42.82785615878869 -12.27,2024/05/28 15:37:07.1239,36.228287730953,42.82785615878869 -12.421,2024/05/28 15:37:07.2749,36.228287730953,42.82785615878869 -12.516,2024/05/28 15:37:07.3699,36.228287730953,42.82785615878869 -12.762,2024/05/28 15:37:07.6159,36.228287730953,42.82785615878869 -12.913,2024/05/28 15:37:07.7669,36.228287730953,42.82785615878869 -13.008,2024/05/28 15:37:07.8619,36.228287730953,42.82785615878869 -13.254,2024/05/28 15:37:08.1079,36.228287730953,42.82785615878869 -13.501,2024/05/28 15:37:08.3549,36.228287730953,42.82785615878869 -13.652,2024/05/28 15:37:08.5059,36.228287730953,42.82785615878869 -14.145,2024/05/28 15:37:08.9989,36.228287730953,42.82785615878869 -14.24,2024/05/28 15:37:09.0939,36.228287730953,42.82785615878869 -14.638,2024/05/28 15:37:09.4919,36.228287730953,42.82785615878869 -15.376,2024/05/28 15:37:10.2299,36.228287730953,42.82785615878869 -15.471,2024/05/28 15:37:10.3249,36.228287730953,42.82785615878869 -15.717,2024/05/28 15:37:10.5709,36.228287730953,42.82785615878869 -15.868,2024/05/28 15:37:10.7219,36.228287730953,42.82785615878869 -15.963,2024/05/28 15:37:10.8169,36.228287730953,42.82785615878869 -16.21,2024/05/28 15:37:11.0639,36.228287730953,42.82785615878869 -16.361,2024/05/28 15:37:11.2149,36.228287730953,42.82785615878869 -16.456,2024/05/28 15:37:11.3099,36.228287730953,42.82785615878869 -16.702,2024/05/28 15:37:11.5559,36.228287730953,42.82785615878869 -16.854,2024/05/28 15:37:11.7079,36.228287730953,42.82785615878869 -16.949,2024/05/28 15:37:11.8029,36.228287730953,42.82785615878869 -17.195,2024/05/28 15:37:12.0489,36.228287730953,42.82785615878869 -17.346,2024/05/28 15:37:12.1999,36.228287730953,42.82785615878869 -17.838,2024/05/28 15:37:12.6919,36.228287730953,42.82785615878869 -17.933,2024/05/28 15:37:12.7869,36.228287730953,42.82785615878869 -18.18,2024/05/28 15:37:13.0339,36.228287730953,42.82785615878869 -18.426,2024/05/28 15:37:13.2799,36.228287730953,42.82785615878869 -18.578,2024/05/28 15:37:13.4319,36.228287730953,42.82785615878869 -18.672,2024/05/28 15:37:13.5259,36.228287730953,42.82785615878869 -18.919,2024/05/28 15:37:13.7729,36.228287730953,42.82785615878869 -19.07,2024/05/28 15:37:13.9239,36.228287730953,42.82785615878869 -19.165,2024/05/28 15:37:14.0189,36.228287730953,42.82785615878869 -19.411,2024/05/28 15:37:14.2649,36.228287730953,42.82785615878869 -19.563,2024/05/28 15:37:14.4169,36.228287730953,42.82785615878869 -19.658,2024/05/28 15:37:14.5119,36.228287730953,42.82785615878869 -19.904,2024/05/28 15:37:14.7579,36.228287730953,42.82785615878869 -20.056,2024/05/28 15:37:14.9099,36.228287730953,42.82785615878869 -20.15,2024/05/28 15:37:15.0039,36.228287730953,42.82785615878869 -20.396,2024/05/28 15:37:15.2499,36.228287730953,42.82785615878869 -20.642,2024/05/28 15:37:15.4959,36.228287730953,42.82785615878869 -20.794,2024/05/28 15:37:15.6479,36.228287730953,42.82785615878869 -20.889,2024/05/28 15:37:15.7429,36.228287730953,42.82785615878869 -21.135,2024/05/28 15:37:15.9889,36.228287730953,42.82785615878869 -21.287,2024/05/28 15:37:16.1409,36.228287730953,42.82785615878869 -21.381,2024/05/28 15:37:16.2349,36.228287730953,42.82785615878869 -21.628,2024/05/28 15:37:16.4819,36.228287730953,42.82785615878869 -21.779,2024/05/28 15:37:16.6329,36.228287730953,42.82785615878869 -21.874,2024/05/28 15:37:16.7279,36.228287730953,42.82785615878869 -22.121,2024/05/28 15:37:16.9749,36.228287730953,42.82785615878869 -22.367,2024/05/28 15:37:17.2209,36.228287730953,42.82785615878869 -22.517,2024/05/28 15:37:17.3709,36.228287730953,42.82785615878869 -22.613,2024/05/28 15:37:17.4669,36.228287730953,42.82785615878869 -22.86,2024/05/28 15:37:17.7139,36.228287730953,42.82785615878869 -23.01,2024/05/28 15:37:17.8639,36.228287730953,42.82785615878869 -23.106,2024/05/28 15:37:17.9599,36.228287730953,42.82785615878869 -23.351,2024/05/28 15:37:18.2049,36.228287730953,42.82785615878869 -23.598,2024/05/28 15:37:18.4519,36.228287730953,42.82785615878869 -23.749,2024/05/28 15:37:18.6029,36.228287730953,42.82785615878869 -23.844,2024/05/28 15:37:18.6979,36.228287730953,42.82785615878869 -24.242,2024/05/28 15:37:19.0959,36.228287730953,42.82785615878869 -24.583,2024/05/28 15:37:19.4369,36.228287730953,42.82785615878869 -24.829,2024/05/28 15:37:19.6829,36.228287730953,42.82785615878869 -24.981,2024/05/28 15:37:19.8349,36.228287730953,42.82785615878869 -25.076,2024/05/28 15:37:19.9299,36.228287730953,42.82785615878869 -25.322,2024/05/28 15:37:20.1759,36.228287730953,42.82785615878869 -25.473,2024/05/28 15:37:20.3269,36.228287730953,42.82785615878869 -25.568,2024/05/28 15:37:20.4219,36.228287730953,42.82785615878869 -25.815,2024/05/28 15:37:20.6689,36.228287730953,42.82785615878869 -26.061,2024/05/28 15:37:20.9149,36.228287730953,42.82785615878869 -26.212,2024/05/28 15:37:21.0659,36.228287730953,42.82785615878869 -26.307,2024/05/28 15:37:21.1609,36.228287730953,42.82785615878869 -26.553,2024/05/28 15:37:21.4069,36.228287730953,42.82785615878869 -26.951,2024/05/28 15:37:21.8049,36.228287730953,42.82785615878869 -27.292,2024/05/28 15:37:22.1459,36.228287730953,42.82785615878869 -27.444,2024/05/28 15:37:22.2979,36.228287730953,42.82785615878869 -27.538,2024/05/28 15:37:22.3919,36.228287730953,42.82785615878869 -27.785,2024/05/28 15:37:22.6389,36.228287730953,42.82785615878869 -28.031,2024/05/28 15:37:22.8849,36.228287730953,42.82785615878869 -28.182,2024/05/28 15:37:23.0359,36.228287730953,42.82785615878869 -28.277,2024/05/28 15:37:23.1309,36.228287730953,42.82785615878869 -28.523,2024/05/28 15:37:23.3769,36.228287730953,42.82785615878869 -28.769,2024/05/28 15:37:23.6229,36.228287730953,42.82785615878869 -28.921,2024/05/28 15:37:23.7749,36.228287730953,42.82785615878869 -29.016,2024/05/28 15:37:23.8699,36.228287730953,42.82785615878869 -29.262,2024/05/28 15:37:24.1159,36.228287730953,42.82785615878869 -29.508,2024/05/28 15:37:24.3619,36.228287730953,42.82785615878869 -29.66,2024/05/28 15:37:24.5139,36.228287730953,42.82785615878869 -30.153,2024/05/28 15:37:25.0069,36.228287730953,42.82785615878869 -30.247,2024/05/28 15:37:25.1009,36.228287730953,42.82785615878869 -30.494,2024/05/28 15:37:25.3479,36.228287730953,42.82785615878869 -30.645,2024/05/28 15:37:25.4989,36.228287730953,42.82785615878869 -30.74,2024/05/28 15:37:25.5939,36.228287730953,42.82785615878869 -30.987,2024/05/28 15:37:25.8409,36.228287730953,42.82785615878869 -31.232,2024/05/28 15:37:26.0859,36.228287730953,42.82785615878869 -31.384,2024/05/28 15:37:26.2379,36.228287730953,42.82785615878869 -31.478,2024/05/28 15:37:26.3319,36.228287730953,42.82785615878869 -31.725,2024/05/28 15:37:26.5789,36.228287730953,42.82785615878869 -31.876,2024/05/28 15:37:26.7299,36.228287730953,42.82785615878869 -31.971,2024/05/28 15:37:26.8249,36.228287730953,42.82785615878869 -32.218,2024/05/28 15:37:27.0719,36.228287730953,42.82785615878869 -32.464,2024/05/28 15:37:27.3179,36.228287730953,42.82785615878869 -32.711,2024/05/28 15:37:27.5649,36.228287730953,42.82785615878869 -32.861,2024/05/28 15:37:27.7149,36.228287730953,42.82785615878869 -32.957,2024/05/28 15:37:27.8109,36.228287730953,42.82785615878869 -33.202,2024/05/28 15:37:28.0559,36.228287730953,42.82785615878869 -33.354,2024/05/28 15:37:28.2079,36.228287730953,42.82785615878869 -33.449,2024/05/28 15:37:28.3029,36.228287730953,42.82785615878869 -33.695,2024/05/28 15:37:28.5489,36.228287730953,42.82785615878869 -33.847,2024/05/28 15:37:28.7009,36.228287730953,42.82785615878869 -33.942,2024/05/28 15:37:28.7959,36.228287730953,42.82785615878869 -34.188,2024/05/28 15:37:29.0419,36.228287730953,42.82785615878869 -34.585,2024/05/28 15:37:29.4389,36.228287730953,42.82785615878869 -34.927,2024/05/28 15:37:29.7809,36.228287730953,42.82785615878869 -35.173,2024/05/28 15:37:30.0269,36.228287730953,42.82785615878869 -35.324,2024/05/28 15:37:30.1779,36.228287730953,42.82785615878869 -35.419,2024/05/28 15:37:30.2729,36.228287730953,42.82785615878869 -35.666,2024/05/28 15:37:30.5199,36.228287730953,42.82785615878869 -35.817,2024/05/28 15:37:30.6709,36.228287730953,42.82785615878869 -35.911,2024/05/28 15:37:30.7649,36.228287730953,42.82785615878869 -36.158,2024/05/28 15:37:31.0119,36.228287730953,42.82785615878869 -36.404,2024/05/28 15:37:31.2579,36.228287730953,42.82785615878869 -36.556,2024/05/28 15:37:31.4099,36.228287730953,42.82785615878869 -36.65,2024/05/28 15:37:31.5039,36.228287730953,42.82785615878869 -36.897,2024/05/28 15:37:31.7509,36.228287730953,42.82785615878869 -37.048,2024/05/28 15:37:31.9019,36.228287730953,42.82785615878869 -37.143,2024/05/28 15:37:31.9969,36.228287730953,42.82785615878869 -37.389,2024/05/28 15:37:32.2429,36.228287730953,42.82785615878869 -37.636,2024/05/28 15:37:32.4899,36.228287730953,42.82785615878869 -37.786,2024/05/28 15:37:32.6399,36.228287730953,42.82785615878869 -37.882,2024/05/28 15:37:32.7359,36.228287730953,42.82785615878869 -38.128,2024/05/28 15:37:32.9819,36.228287730953,42.82785615878869 -38.279,2024/05/28 15:37:33.1329,36.228287730953,42.82785615878869 -38.375,2024/05/28 15:37:33.2289,36.228287730953,42.82785615878869 -38.621,2024/05/28 15:37:33.4749,36.228287730953,42.82785615878869 -38.867,2024/05/28 15:37:33.7209,36.228287730953,42.82785615878869 -39.018,2024/05/28 15:37:33.8719,36.228287730953,42.82785615878869 -39.511,2024/05/28 15:37:34.3649,36.228287730953,42.82785615878869 -39.606,2024/05/28 15:37:34.4599,36.228287730953,42.82785615878869 -39.853,2024/05/28 15:37:34.7069,36.228287730953,42.82785615878869 -40.098,2024/05/28 15:37:34.9519,36.228287730953,42.82785615878869 -40.25,2024/05/28 15:37:35.1039,36.228287730953,42.82785615878869 -40.345,2024/05/28 15:37:35.1989,36.228287730953,42.82785615878869 -40.591,2024/05/28 15:37:35.4449,36.228287730953,42.82785615878869 -40.837,2024/05/28 15:37:35.6909,36.228287730953,42.82785615878869 -41.084,2024/05/28 15:37:35.9379,36.228287730953,42.82785615878869 -41.234,2024/05/28 15:37:36.0879,36.228287730953,42.82785615878869 -41.33,2024/05/28 15:37:36.1839,36.228287730953,42.82785615878869 -41.481,2024/05/28 15:37:36.3349,36.228287730953,42.82785615878869 -41.576,2024/05/28 15:37:36.4299,36.228287730953,42.82785615878869 -41.823,2024/05/28 15:37:36.6769,36.228287730953,42.82785615878869 -42.466,2024/05/28 15:37:37.3199,36.228287730953,42.82785615878869 -42.562,2024/05/28 15:37:37.4159,36.228287730953,42.82785615878869 -42.807,2024/05/28 15:37:37.6609,36.228287730953,42.82785615878869 -42.959,2024/05/28 15:37:37.8129,36.228287730953,42.82785615878869 -43.053,2024/05/28 15:37:37.9069,36.228287730953,42.82785615878869 -43.3,2024/05/28 15:37:38.1539,36.228287730953,42.82785615878869 -43.451,2024/05/28 15:37:38.3049,36.228287730953,42.82785615878869 -43.546,2024/05/28 15:37:38.3999,36.228287730953,42.82785615878869 -43.793,2024/05/28 15:37:38.6469,36.228287730953,42.82785615878869 -43.943,2024/05/28 15:37:38.7969,36.228287730953,42.82785615878869 -44.039,2024/05/28 15:37:38.8929,36.228287730953,42.82785615878869 -44.285,2024/05/28 15:37:39.1389,36.228287730953,42.82785615878869 -44.532,2024/05/28 15:37:39.3859,36.228287730953,42.82785615878869 -44.683,2024/05/28 15:37:39.5369,36.228287730953,42.82785615878869 -44.777,2024/05/28 15:37:39.6309,36.228287730953,42.82785615878869 -45.024,2024/05/28 15:37:39.8779,36.228287730953,42.82785615878869 -45.175,2024/05/28 15:37:40.0289,36.228287730953,42.82785615878869 -45.27,2024/05/28 15:37:40.1239,36.228287730953,42.82785615878869 -45.516,2024/05/28 15:37:40.3699,36.228287730953,42.82785615878869 -45.763,2024/05/28 15:37:40.6169,36.228287730953,42.82785615878869 -45.913,2024/05/28 15:37:40.7669,36.228287730953,42.82785615878869 -46.009,2024/05/28 15:37:40.8629,36.228287730953,42.82785615878869 -46.256,2024/05/28 15:37:41.1099,36.228287730953,42.82785615878869 -46.406,2024/05/28 15:37:41.2599,36.228287730953,42.82785615878869 -46.502,2024/05/28 15:37:41.3559,36.228287730953,42.82785615878869 -46.748,2024/05/28 15:37:41.6019,36.228287730953,42.82785615878869 -46.899,2024/05/28 15:37:41.7529,36.228287730953,42.82785615878869 -46.995,2024/05/28 15:37:41.8489,36.228287730953,42.82785615878869 -47.241,2024/05/28 15:37:42.0949,36.228287730953,42.82785615878869 -47.486,2024/05/28 15:37:42.3399,36.228287730953,42.82785615878869 -47.638,2024/05/28 15:37:42.4919,36.228287730953,42.82785615878869 -47.733,2024/05/28 15:37:42.5869,36.228287730953,42.82785615878869 -47.979,2024/05/28 15:37:42.8329,36.228287730953,42.82785615878869 -48.13,2024/05/28 15:37:42.9839,36.228287730953,42.82785615878869 -48.226,2024/05/28 15:37:43.0799,36.228287730953,42.82785615878869 -48.472,2024/05/28 15:37:43.3259,36.228287730953,42.82785615878869 -48.719,2024/05/28 15:37:43.5729,36.228287730953,42.82785615878869 -48.869,2024/05/28 15:37:43.7229,36.228287730953,42.82785615878869 -48.965,2024/05/28 15:37:43.8189,36.228287730953,42.82785615878869 -49.211,2024/05/28 15:37:44.0649,36.228287730953,42.82785615878869 -49.362,2024/05/28 15:37:44.2159,36.228287730953,42.82785615878869 -49.457,2024/05/28 15:37:44.3109,36.228287730953,42.82785615878869 -49.703,2024/05/28 15:37:44.5569,36.228287730953,42.82785615878869 -49.854,2024/05/28 15:37:44.7079,36.228287730953,42.82785615878869 -49.949,2024/05/28 15:37:44.8029,36.228287730953,42.82785615878869 -50.196,2024/05/28 15:37:45.0499,36.228287730953,42.82785615878869 -50.346,2024/05/28 15:37:45.1999,36.228287730953,42.82785615878869 -50.442,2024/05/28 15:37:45.2959,36.228287730953,42.82785615878869 -50.688,2024/05/28 15:37:45.5419,36.228287730953,42.82785615878869 -50.935,2024/05/28 15:37:45.7889,36.228287730953,42.82785615878869 -51.085,2024/05/28 15:37:45.9389,36.228287730953,42.82785615878869 -51.181,2024/05/28 15:37:46.0349,36.228287730953,42.82785615878869 -51.427,2024/05/28 15:37:46.2809,36.228287730953,42.82785615878869 -51.578,2024/05/28 15:37:46.4319,36.228287730953,42.82785615878869 -51.674,2024/05/28 15:37:46.5279,36.228287730953,42.82785615878869 -51.919,2024/05/28 15:37:46.7729,36.228287730953,42.82785615878869 -52.071,2024/05/28 15:37:46.9249,36.228287730953,42.82785615878869 -52.166,2024/05/28 15:37:47.0199,36.228287730953,42.82785615878869 -52.412,2024/05/28 15:37:47.2659,36.228287730953,42.82785615878869 -52.564,2024/05/28 15:37:47.4179,36.228287730953,42.82785615878869 -52.658,2024/05/28 15:37:47.5119,36.228287730953,42.82785615878869 -52.905,2024/05/28 15:37:47.7589,36.228287730953,42.82785615878869 -53.151,2024/05/28 15:37:48.0049,36.228287730953,42.82785615878869 -53.301,2024/05/28 15:37:48.1549,36.228287730953,42.82785615878869 -53.397,2024/05/28 15:37:48.2509,36.228287730953,42.82785615878869 -53.644,2024/05/28 15:37:48.4979,36.228287730953,42.82785615878869 -53.794,2024/05/28 15:37:48.6479,36.228287730953,42.82785615878869 -54.287,2024/05/28 15:37:49.1409,36.228287730953,42.82785615878869 -54.383,2024/05/28 15:37:49.2369,36.228287730953,42.82785615878869 -54.629,2024/05/28 15:37:49.4829,36.228287730953,42.82785615878869 -54.78,2024/05/28 15:37:49.6339,36.228287730953,42.82785615878869 -54.875,2024/05/28 15:37:49.7289,36.228287730953,42.82785615878869 -55.122,2024/05/28 15:37:49.9759,36.228287730953,42.82785615878869 -55.368,2024/05/28 15:37:50.2219,36.228287730953,42.82785615878869 -55.519,2024/05/28 15:37:50.3729,36.228287730953,42.82785615878869 -55.613,2024/05/28 15:37:50.4669,36.228287730953,42.82785615878869 -55.86,2024/05/28 15:37:50.7139,36.228287730953,42.82785615878869 -56.011,2024/05/28 15:37:50.8649,36.228287730953,42.82785615878869 -56.106,2024/05/28 15:37:50.9599,36.228287730953,42.82785615878869 -56.352,2024/05/28 15:37:51.2059,36.228287730953,42.82785615878869 -56.503,2024/05/28 15:37:51.3569,36.228287730953,42.82785615878869 -56.599,2024/05/28 15:37:51.4529,36.228287730953,42.82785615878869 -56.845,2024/05/28 15:37:51.6989,36.228287730953,42.82785615878869 -56.996,2024/05/28 15:37:51.8499,36.228287730953,42.82785615878869 -57.091,2024/05/28 15:37:51.9449,36.228287730953,42.82785615878869 -57.338,2024/05/28 15:37:52.1919,36.228287730953,42.82785615878869 -57.584,2024/05/28 15:37:52.4379,36.228287730953,42.82785615878869 -57.735,2024/05/28 15:37:52.5889,36.228287730953,42.82785615878869 -57.831,2024/05/28 15:37:52.6849,36.228287730953,42.82785615878869 -58.077,2024/05/28 15:37:52.9309,36.228287730953,42.82785615878869 -58.227,2024/05/28 15:37:53.0809,36.228287730953,42.82785615878869 -58.323,2024/05/28 15:37:53.1769,36.228287730953,42.82785615878869 -58.57,2024/05/28 15:37:53.4239,36.228287730953,42.82785615878869 -58.719,2024/05/28 15:37:53.5729,36.228287730953,42.82785615878869 -58.815,2024/05/28 15:37:53.6689,36.228287730953,42.82785615878869 -59.061,2024/05/28 15:37:53.9149,36.228287730953,42.82785615878869 -59.308,2024/05/28 15:37:54.1619,36.228287730953,42.82785615878869 -59.458,2024/05/28 15:37:54.3119,36.228287730953,42.82785615878869 -59.554,2024/05/28 15:37:54.4079,36.228287730953,42.82785615878869 -59.801,2024/05/28 15:37:54.6549,36.228287730953,42.82785615878869 -59.951,2024/05/28 15:37:54.8049,36.228287730953,42.82785615878869 -60.047,2024/05/28 15:37:54.9009,36.228287730953,42.82785615878869 -60.293,2024/05/28 15:37:55.1469,36.228287730953,42.82785615878869 -60.54,2024/05/28 15:37:55.3939,36.228287730953,42.82785615878869 -60.69,2024/05/28 15:37:55.5439,36.228287730953,42.82785615878869 -60.785,2024/05/28 15:37:55.6389,36.228287730953,42.82785615878869 -61.032,2024/05/28 15:37:55.8859,36.228287730953,42.82785615878869 -61.183,2024/05/28 15:37:56.0369,36.228287730953,42.82785615878869 -61.278,2024/05/28 15:37:56.1319,36.228287730953,42.82785615878869 -61.524,2024/05/28 15:37:56.3779,36.228287730953,42.82785615878869 -61.771,2024/05/28 15:37:56.6249,36.228287730953,42.82785615878869 -62.017,2024/05/28 15:37:56.8709,36.228287730953,42.82785615878869 -62.168,2024/05/28 15:37:57.0219,36.228287730953,42.82785615878869 -62.263,2024/05/28 15:37:57.1169,36.228287730953,42.82785615878869 -62.414,2024/05/28 15:37:57.2679,36.228287730953,42.82785615878869 -62.51,2024/05/28 15:37:57.3639,36.228287730953,42.82785615878869 -62.756,2024/05/28 15:37:57.6099,36.228287730953,42.82785615878869 -63.002,2024/05/28 15:37:57.8559,36.228287730953,42.82785615878869 -63.153,2024/05/28 15:37:58.0069,36.228287730953,42.82785615878869 -63.249,2024/05/28 15:37:58.1029,36.228287730953,42.82785615878869 -63.495,2024/05/28 15:37:58.3489,36.228287730953,42.82785615878869 -63.646,2024/05/28 15:37:58.4999,36.228287730953,42.82785615878869 -63.741,2024/05/28 15:37:58.5949,36.228287730953,42.82785615878869 -63.987,2024/05/28 15:37:58.8409,36.228287730953,42.82785615878869 -64.233,2024/05/28 15:37:59.0869,36.228287730953,42.82785615878869 -64.63,2024/05/28 15:37:59.4839,36.228287730953,42.82785615878869 -64.876,2024/05/28 15:37:59.7299,36.228287730953,42.82785615878869 -64.972,2024/05/28 15:37:59.8259,36.228287730953,42.82785615878869 -65.218,2024/05/28 15:38:00.0719,36.228287730953,42.82785615878869 -65.465,2024/05/28 15:38:00.3189,36.228287730953,42.82785615878869 -65.615,2024/05/28 15:38:00.4689,36.228287730953,42.82785615878869 -65.711,2024/05/28 15:38:00.5649,36.228287730953,42.82785615878869 -65.957,2024/05/28 15:38:00.8109,36.228287730953,42.82785615878869 -66.108,2024/05/28 15:38:00.9619,36.228287730953,42.82785615878869 -66.204,2024/05/28 15:38:01.0579,36.228287730953,42.82785615878869 -66.45,2024/05/28 15:38:01.3039,36.228287730953,42.82785615878869 -66.697,2024/05/28 15:38:01.5509,36.228287730953,42.82785615878869 -66.847,2024/05/28 15:38:01.7009,36.228287730953,42.82785615878869 -66.943,2024/05/28 15:38:01.7969,36.228287730953,42.82785615878869 -67.189,2024/05/28 15:38:02.0429,36.228287730953,42.82785615878869 -67.34,2024/05/28 15:38:02.1939,36.228287730953,42.82785615878869 -67.927,2024/05/28 15:38:02.7809,36.228287730953,42.82785615878869 -68.078,2024/05/28 15:38:02.9319,36.228287730953,42.82785615878869 -68.571,2024/05/28 15:38:03.4249,36.228287730953,42.82785615878869 -68.666,2024/05/28 15:38:03.5199,36.228287730953,42.82785615878869 -68.913,2024/05/28 15:38:03.7669,36.228287730953,42.82785615878869 -69.063,2024/05/28 15:38:03.9169,36.228287730953,42.82785615878869 -69.159,2024/05/28 15:38:04.0129,36.228287730953,42.82785615878869 -69.406,2024/05/28 15:38:04.2599,36.228287730953,42.82785615878869 -69.652,2024/05/28 15:38:04.5059,36.228287730953,42.82785615878869 -69.897,2024/05/28 15:38:04.7509,36.228287730953,42.82785615878869 -70.144,2024/05/28 15:38:04.9979,36.228287730953,42.82785615878869 -70.294,2024/05/28 15:38:05.1479,36.228287730953,42.82785615878869 -70.39,2024/05/28 15:38:05.2439,36.228287730953,42.82785615878869 -70.541,2024/05/28 15:38:05.3949,36.228287730953,42.82785615878869 -70.636,2024/05/28 15:38:05.4899,36.228287730953,42.82785615878869 -70.883,2024/05/28 15:38:05.7369,36.228287730953,42.82785615878869 -71.034,2024/05/28 15:38:05.8879,36.228287730953,42.82785615878869 -71.622,2024/05/28 15:38:06.4759,36.228287730953,42.82785615878869 -71.773,2024/05/28 15:38:06.6269,36.228287730953,42.82785615878869 -71.868,2024/05/28 15:38:06.7219,36.228287730953,42.82785615878869 -72.114,2024/05/28 15:38:06.9679,36.228287730953,42.82785615878869 -72.264,2024/05/28 15:38:07.1179,36.228287730953,42.82785615878869 -72.36,2024/05/28 15:38:07.2139,36.228287730953,42.82785615878869 -72.606,2024/05/28 15:38:07.4599,36.228287730953,42.82785615878869 -72.853,2024/05/28 15:38:07.7069,36.228287730953,42.82785615878869 -73.003,2024/05/28 15:38:07.8569,36.228287730953,42.82785615878869 -73.099,2024/05/28 15:38:07.9529,36.228287730953,42.82785615878869 -73.742,2024/05/28 15:38:08.5959,36.228287730953,42.82785615878869 -73.838,2024/05/28 15:38:08.6919,36.228287730953,42.82785615878869 -74.085,2024/05/28 15:38:08.9389,36.228287730953,42.82785615878869 -74.235,2024/05/28 15:38:09.0889,36.228287730953,42.82785615878869 -74.331,2024/05/28 15:38:09.1849,36.228287730953,42.82785615878869 -74.577,2024/05/28 15:38:09.4309,36.228287730953,42.82785615878869 -74.824,2024/05/28 15:38:09.6779,36.228287730953,42.82785615878869 -75.069,2024/05/28 15:38:09.9229,36.228287730953,42.82785615878869 -75.22,2024/05/28 15:38:10.0739,36.228287730953,42.82785615878869 -75.315,2024/05/28 15:38:10.1689,36.228287730953,42.82785615878869 -75.466,2024/05/28 15:38:10.3199,36.228287730953,42.82785615878869 -75.562,2024/05/28 15:38:10.4159,36.228287730953,42.82785615878869 -75.808,2024/05/28 15:38:10.6619,36.228287730953,42.82785615878869 -76.055,2024/05/28 15:38:10.9089,36.228287730953,42.82785615878869 -76.205,2024/05/28 15:38:11.0589,36.228287730953,42.82785615878869 -76.301,2024/05/28 15:38:11.1549,36.228287730953,42.82785615878869 -76.547,2024/05/28 15:38:11.4009,36.228287730953,42.82785615878869 -76.698,2024/05/28 15:38:11.5519,36.228287730953,42.82785615878869 -77.191,2024/05/28 15:38:12.0449,36.228287730953,42.82785615878869 -77.286,2024/05/28 15:38:12.1399,36.228287730953,42.82785615878869 -77.533,2024/05/28 15:38:12.3869,36.228287730953,42.82785615878869 -77.779,2024/05/28 15:38:12.6329,36.228287730953,42.82785615878869 -77.929,2024/05/28 15:38:12.7829,36.228287730953,42.82785615878869 -78.025,2024/05/28 15:38:12.8789,36.228287730953,42.82785615878869 -78.271,2024/05/28 15:38:13.1249,36.228287730953,42.82785615878869 -78.421,2024/05/28 15:38:13.2749,36.228287730953,42.82785615878869 -78.517,2024/05/28 15:38:13.3709,36.228287730953,42.82785615878869 -78.763,2024/05/28 15:38:13.6169,36.228287730953,42.82785615878869 -78.914,2024/05/28 15:38:13.7679,36.228287730953,42.82785615878869 -79.01,2024/05/28 15:38:13.8639,36.228287730953,42.82785615878869 -79.256,2024/05/28 15:38:14.1099,36.228287730953,42.82785615878869 -79.407,2024/05/28 15:38:14.2609,36.228287730953,42.82785615878869 -79.502,2024/05/28 15:38:14.3559,36.228287730953,42.82785615878869 -79.749,2024/05/28 15:38:14.6029,36.228287730953,42.82785615878869 -79.995,2024/05/28 15:38:14.8489,36.228287730953,42.82785615878869 -80.146,2024/05/28 15:38:14.9999,36.228287730953,42.82785615878869 -80.241,2024/05/28 15:38:15.0949,36.228287730953,42.82785615878869 -80.488,2024/05/28 15:38:15.3419,36.228287730953,42.82785615878869 -80.638,2024/05/28 15:38:15.4919,36.228287730953,42.82785615878869 -80.734,2024/05/28 15:38:15.5879,36.228287730953,42.82785615878869 -80.98,2024/05/28 15:38:15.8339,36.228287730953,42.82785615878869 -81.131,2024/05/28 15:38:15.9849,36.228287730953,42.82785615878869 -81.227,2024/05/28 15:38:16.0809,36.228287730953,42.82785615878869 -81.473,2024/05/28 15:38:16.3269,36.228287730953,42.82785615878869 -81.718,2024/05/28 15:38:16.5719,36.228287730953,42.82785615878869 -81.869,2024/05/28 15:38:16.7229,36.228287730953,42.82785615878869 -81.965,2024/05/28 15:38:16.8189,36.228287730953,42.82785615878869 -82.211,2024/05/28 15:38:17.0649,36.228287730953,42.82785615878869 -82.362,2024/05/28 15:38:17.2159,36.228287730953,42.82785615878869 -82.457,2024/05/28 15:38:17.3109,36.228287730953,42.82785615878869 -82.704,2024/05/28 15:38:17.5579,36.228287730953,42.82785615878869 -82.95,2024/05/28 15:38:17.8039,36.228287730953,42.82785615878869 -83.101,2024/05/28 15:38:17.9549,36.228287730953,42.82785615878869 -83.197,2024/05/28 15:38:18.0509,36.228287730953,42.82785615878869 -83.594,2024/05/28 15:38:18.4479,36.228287730953,42.82785615878869 -84.086,2024/05/28 15:38:18.9399,36.228287730953,42.82785615878869 -84.182,2024/05/28 15:38:19.0359,36.228287730953,42.82785615878869 -84.428,2024/05/28 15:38:19.2819,36.228287730953,42.82785615878869 -84.675,2024/05/28 15:38:19.5289,36.228287730953,42.82785615878869 -84.824,2024/05/28 15:38:19.6779,36.228287730953,42.82785615878869 -84.92,2024/05/28 15:38:19.7739,36.228287730953,42.82785615878869 -85.166,2024/05/28 15:38:20.0199,36.228287730953,42.82785615878869 -85.317,2024/05/28 15:38:20.1709,36.228287730953,42.82785615878869 -85.413,2024/05/28 15:38:20.2669,36.228287730953,42.82785615878869 -85.659,2024/05/28 15:38:20.5129,36.228287730953,42.82785615878869 -85.81,2024/05/28 15:38:20.6639,36.228287730953,42.82785615878869 -85.905,2024/05/28 15:38:20.7589,36.228287730953,42.82785615878869 -86.152,2024/05/28 15:38:21.0059,36.228287730953,42.82785615878869 -86.398,2024/05/28 15:38:21.2519,36.228287730953,42.82785615878869 -86.549,2024/05/28 15:38:21.4029,36.228287730953,42.82785615878869 -86.645,2024/05/28 15:38:21.4989,36.228287730953,42.82785615878869 -86.891,2024/05/28 15:38:21.7449,36.228287730953,42.82785615878869 -87.041,2024/05/28 15:38:21.8949,36.228287730953,42.82785615878869 -87.629,2024/05/28 15:38:22.4829,36.228287730953,42.82785615878869 -87.78,2024/05/28 15:38:22.6339,36.228287730953,42.82785615878869 -87.875,2024/05/28 15:38:22.7289,36.228287730953,42.82785615878869 -88.122,2024/05/28 15:38:22.9759,36.228287730953,42.82785615878869 -88.273,2024/05/28 15:38:23.1269,36.228287730953,42.82785615878869 -88.369,2024/05/28 15:38:23.2229,36.228287730953,42.82785615878869 -88.615,2024/05/28 15:38:23.4689,36.228287730953,42.82785615878869 -88.861,2024/05/28 15:38:23.7149,36.228287730953,42.82785615878869 -89.011,2024/05/28 15:38:23.8649,36.228287730953,42.82785615878869 -89.107,2024/05/28 15:38:23.9609,36.228287730953,42.82785615878869 -89.353,2024/05/28 15:38:24.2069,36.228287730953,42.82785615878869 -89.504,2024/05/28 15:38:24.3579,36.228287730953,42.82785615878869 -89.599,2024/05/28 15:38:24.4529,36.228287730953,42.82785615878869 -89.846,2024/05/28 15:38:24.6999,36.228287730953,42.82785615878869 -90.092,2024/05/28 15:38:24.9459,36.228287730953,42.82785615878869 -90.339,2024/05/28 15:38:25.1929,36.228287730953,42.82785615878869 -90.488,2024/05/28 15:38:25.3419,36.228287730953,42.82785615878869 -90.585,2024/05/28 15:38:25.4389,36.228287730953,42.82785615878869 -90.832,2024/05/28 15:38:25.6859,36.228287730953,42.82785615878869 -90.981,2024/05/28 15:38:25.8349,36.228287730953,42.82785615878869 -91.078,2024/05/28 15:38:25.9319,36.228287730953,42.82785615878869 -91.323,2024/05/28 15:38:26.1769,36.228287730953,42.82785615878869 -91.474,2024/05/28 15:38:26.3279,36.228287730953,42.82785615878869 -91.57,2024/05/28 15:38:26.4239,36.228287730953,42.82785615878869 -91.816,2024/05/28 15:38:26.6699,36.228287730953,42.82785615878869 -92.062,2024/05/28 15:38:26.9159,36.228287730953,42.82785615878869 -92.213,2024/05/28 15:38:27.0669,36.228287730953,42.82785615878869 -92.309,2024/05/28 15:38:27.1629,36.228287730953,42.82785615878869 -92.555,2024/05/28 15:38:27.4089,36.228287730953,42.82785615878869 -92.706,2024/05/28 15:38:27.5599,36.228287730953,42.82785615878869 -93.294,2024/05/28 15:38:28.1479,36.228287730953,42.82785615878869 -93.445,2024/05/28 15:38:28.2989,36.228287730953,42.82785615878869 -93.54,2024/05/28 15:38:28.3939,36.228287730953,42.82785615878869 -93.787,2024/05/28 15:38:28.6409,36.228287730953,42.82785615878869 -93.936,2024/05/28 15:38:28.7899,36.228287730953,42.82785615878869 -94.526,2024/05/28 15:38:29.3799,36.228287730953,42.82785615878869 -94.675,2024/05/28 15:38:29.5289,36.228287730953,42.82785615878869 -94.771,2024/05/28 15:38:29.6249,36.228287730953,42.82785615878869 -95.017,2024/05/28 15:38:29.8709,36.228287730953,42.82785615878869 -95.168,2024/05/28 15:38:30.0219,36.228287730953,42.82785615878869 -95.264,2024/05/28 15:38:30.1179,36.228287730953,42.82785615878869 -95.51,2024/05/28 15:38:30.3639,36.228287730953,42.82785615878869 -95.757,2024/05/28 15:38:30.6109,36.228287730953,42.82785615878869 -96.003,2024/05/28 15:38:30.8569,36.228287730953,42.82785615878869 -96.249,2024/05/28 15:38:31.1029,36.228287730953,42.82785615878869 -96.4,2024/05/28 15:38:31.2539,36.228287730953,42.82785615878869 -96.645,2024/05/28 15:38:31.4989,36.228287730953,42.82785615878869 -96.988,2024/05/28 15:38:31.8419,36.228287730953,42.82785615878869 -97.138,2024/05/28 15:38:31.9919,36.228287730953,42.82785615878869 -97.235,2024/05/28 15:38:32.0889,36.228287730953,42.82785615878869 -97.48,2024/05/28 15:38:32.3339,36.228287730953,42.82785615878869 -97.631,2024/05/28 15:38:32.4849,36.228287730953,42.82785615878869 -97.726,2024/05/28 15:38:32.5799,36.228287730953,42.82785615878869 -97.973,2024/05/28 15:38:32.8269,36.228287730953,42.82785615878869 -98.219,2024/05/28 15:38:33.0729,36.228287730953,42.82785615878869 -98.37,2024/05/28 15:38:33.2239,36.228287730953,42.82785615878869 -98.466,2024/05/28 15:38:33.3199,36.228287730953,42.82785615878869 -98.712,2024/05/28 15:38:33.5659,36.228287730953,42.82785615878869 -98.862,2024/05/28 15:38:33.7159,36.228287730953,42.82785615878869 -98.958,2024/05/28 15:38:33.8119,36.228287730953,42.82785615878869 -99.205,2024/05/28 15:38:34.0589,36.228287730953,42.82785615878869 -99.601,2024/05/28 15:38:34.4549,36.228287730953,42.82785615878869 -99.944,2024/05/28 15:38:34.7979,36.228287730953,42.82785615878869 -100.093,2024/05/28 15:38:34.9469,36.228287730953,42.82785615878869 -100.19,2024/05/28 15:38:35.0439,36.228287730953,42.82785615878869 -100.436,2024/05/28 15:38:35.2899,36.228287730953,42.82785615878869 -100.683,2024/05/28 15:38:35.5369,36.228287730953,42.82785615878869 -100.832,2024/05/28 15:38:35.6859,36.228287730953,42.82785615878869 -100.928,2024/05/28 15:38:35.7819,36.228287730953,42.82785615878869 -101.174,2024/05/28 15:38:36.0279,36.228287730953,42.82785615878869 -101.325,2024/05/28 15:38:36.1789,36.228287730953,42.82785615878869 -101.423,2024/05/28 15:38:36.2769,36.228287730953,42.82785615878869 -101.667,2024/05/28 15:38:36.5209,36.228287730953,42.82785615878869 -101.913,2024/05/28 15:38:36.7669,36.228287730953,42.82785615878869 -102.064,2024/05/28 15:38:36.9179,36.228287730953,42.82785615878869 -102.16,2024/05/28 15:38:37.0139,36.228287730953,42.82785615878869 -102.406,2024/05/28 15:38:37.2599,36.228287730953,42.82785615878869 -102.653,2024/05/28 15:38:37.5069,36.228287730953,42.82785615878869 -102.802,2024/05/28 15:38:37.6559,36.228287730953,42.82785615878869 -102.899,2024/05/28 15:38:37.7529,36.228287730953,42.82785615878869 -103.295,2024/05/28 15:38:38.1489,36.228287730953,42.82785615878869 -103.637,2024/05/28 15:38:38.4909,36.228287730953,42.82785615878869 -103.884,2024/05/28 15:38:38.7379,36.228287730953,42.82785615878869 -104.034,2024/05/28 15:38:38.8879,36.228287730953,42.82785615878869 -104.13,2024/05/28 15:38:38.9839,36.228287730953,42.82785615878869 -104.527,2024/05/28 15:38:39.3809,36.228287730953,42.82785615878869 -104.869,2024/05/28 15:38:39.7229,36.228287730953,42.82785615878869 -105.115,2024/05/28 15:38:39.9689,36.228287730953,42.82785615878869 -105.266,2024/05/28 15:38:40.1199,36.228287730953,42.82785615878869 -105.361,2024/05/28 15:38:40.2149,36.228287730953,42.82785615878869 -105.608,2024/05/28 15:38:40.4619,36.228287730953,42.82785615878869 -105.854,2024/05/28 15:38:40.7079,36.228287730953,42.82785615878869 -106.004,2024/05/28 15:38:40.8579,36.228287730953,42.82785615878869 -106.1,2024/05/28 15:38:40.9539,36.228287730953,42.82785615878869 -106.347,2024/05/28 15:38:41.2009,36.228287730953,42.82785615878869 -106.497,2024/05/28 15:38:41.3509,36.228287730953,42.82785615878869 -106.592,2024/05/28 15:38:41.4459,36.228287730953,42.82785615878869 -106.839,2024/05/28 15:38:41.6929,36.228287730953,42.82785615878869 -106.989,2024/05/28 15:38:41.8429,36.228287730953,42.82785615878869 -107.085,2024/05/28 15:38:41.9389,36.228287730953,42.82785615878869 -107.331,2024/05/28 15:38:42.1849,36.228287730953,42.82785615878869 -107.578,2024/05/28 15:38:42.4319,36.228287730953,42.82785615878869 -107.728,2024/05/28 15:38:42.5819,36.228287730953,42.82785615878869 -107.824,2024/05/28 15:38:42.6779,36.228287730953,42.82785615878869 -108.07,2024/05/28 15:38:42.9239,36.228287730953,42.82785615878869 -108.22,2024/05/28 15:38:43.0739,36.228287730953,42.82785615878869 -108.317,2024/05/28 15:38:43.1709,36.228287730953,42.82785615878869 -108.563,2024/05/28 15:38:43.4169,36.228287730953,42.82785615878869 -108.81,2024/05/28 15:38:43.6639,36.228287730953,42.82785615878869 -108.959,2024/05/28 15:38:43.8129,36.228287730953,42.82785615878869 -109.056,2024/05/28 15:38:43.9099,36.228287730953,42.82785615878869 -109.302,2024/05/28 15:38:44.1559,36.228287730953,42.82785615878869 -109.452,2024/05/28 15:38:44.3059,36.228287730953,42.82785615878869 -109.549,2024/05/28 15:38:44.4029,36.228287730953,42.82785615878869 -109.794,2024/05/28 15:38:44.6479,36.228287730953,42.82785615878869 -110.04,2024/05/28 15:38:44.8939,36.228287730953,42.82785615878869 -110.191,2024/05/28 15:38:45.0449,36.228287730953,42.82785615878869 -110.287,2024/05/28 15:38:45.1409,36.228287730953,42.82785615878869 -110.533,2024/05/28 15:38:45.3869,36.228287730953,42.82785615878869 -110.779,2024/05/28 15:38:45.6329,36.228287730953,42.82785615878869 -110.93,2024/05/28 15:38:45.7839,36.228287730953,42.82785615878869 -111.026,2024/05/28 15:38:45.8799,36.228287730953,42.82785615878869 -111.272,2024/05/28 15:38:46.1259,36.228287730953,42.82785615878869 -111.423,2024/05/28 15:38:46.2769,36.228287730953,42.82785615878869 -111.518,2024/05/28 15:38:46.3719,36.228287730953,42.82785615878869 -112.161,2024/05/28 15:38:47.0149,36.228287730953,42.82785615878869 -112.257,2024/05/28 15:38:47.1109,36.228287730953,42.82785615878869 -112.653,2024/05/28 15:38:47.5069,36.228287730953,42.82785615878869 -112.996,2024/05/28 15:38:47.8499,36.228287730953,42.82785615878869 -113.242,2024/05/28 15:38:48.0959,36.228287730953,42.82785615878869 -113.392,2024/05/28 15:38:48.2459,36.228287730953,42.82785615878869 -113.885,2024/05/28 15:38:48.7389,36.228287730953,42.82785615878869 -113.981,2024/05/28 15:38:48.8349,36.228287730953,42.82785615878869 -114.227,2024/05/28 15:38:49.0809,36.228287730953,42.82785615878869 -114.474,2024/05/28 15:38:49.3279,36.228287730953,42.82785615878869 -114.623,2024/05/28 15:38:49.4769,36.228287730953,42.82785615878869 -114.72,2024/05/28 15:38:49.5739,36.228287730953,42.82785615878869 -114.966,2024/05/28 15:38:49.8199,36.228287730953,42.82785615878869 -115.116,2024/05/28 15:38:49.9699,36.228287730953,42.82785615878869 -115.213,2024/05/28 15:38:50.0669,36.228287730953,42.82785615878869 -115.609,2024/05/28 15:38:50.4629,36.228287730953,42.82785615878869 -115.951,2024/05/28 15:38:50.8049,36.228287730953,42.82785615878869 -116.197,2024/05/28 15:38:51.0509,36.228287730953,42.82785615878869 -116.348,2024/05/28 15:38:51.2019,36.228287730953,42.82785615878869 -116.443,2024/05/28 15:38:51.2969,36.228287730953,42.82785615878869 -116.69,2024/05/28 15:38:51.5439,36.228287730953,42.82785615878869 -116.84,2024/05/28 15:38:51.6939,36.228287730953,42.82785615878869 -116.936,2024/05/28 15:38:51.7899,36.228287730953,42.82785615878869 -117.183,2024/05/28 15:38:52.0369,36.228287730953,42.82785615878869 -117.429,2024/05/28 15:38:52.2829,36.228287730953,42.82785615878869 -117.578,2024/05/28 15:38:52.4319,36.228287730953,42.82785615878869 -117.675,2024/05/28 15:38:52.5289,36.228287730953,42.82785615878869 -117.922,2024/05/28 15:38:52.7759,36.228287730953,42.82785615878869 -118.071,2024/05/28 15:38:52.9249,36.228287730953,42.82785615878869 -118.168,2024/05/28 15:38:53.0219,36.228287730953,42.82785615878869 -118.414,2024/05/28 15:38:53.2679,36.228287730953,42.82785615878869 -118.661,2024/05/28 15:38:53.5149,36.228287730953,42.82785615878869 -118.81,2024/05/28 15:38:53.6639,36.228287730953,42.82785615878869 -118.907,2024/05/28 15:38:53.7609,36.228287730953,42.82785615878869 -119.152,2024/05/28 15:38:54.0059,36.228287730953,42.82785615878869 -119.4,2024/05/28 15:38:54.2539,36.228287730953,42.82785615878869 -119.549,2024/05/28 15:38:54.4029,36.228287730953,42.82785615878869 -119.645,2024/05/28 15:38:54.4989,36.228287730953,42.82785615878869 -119.891,2024/05/28 15:38:54.7449,36.228287730953,42.82785615878869 -120.138,2024/05/28 15:38:54.9919,36.228287730953,42.82785615878869 -120.288,2024/05/28 15:38:55.1419,36.228287730953,42.82785615878869 -120.384,2024/05/28 15:38:55.2379,36.228287730953,42.82785615878869 -120.534,2024/05/28 15:38:55.3879,36.228287730953,42.82785615878869 -120.63,2024/05/28 15:38:55.4839,36.228287730953,42.82785615878869 -120.877,2024/05/28 15:38:55.7309,36.228287730953,42.82785615878869 -121.273,2024/05/28 15:38:56.1269,36.228287730953,42.82785615878869 -121.616,2024/05/28 15:38:56.4699,36.228287730953,42.82785615878869 -121.765,2024/05/28 15:38:56.6189,36.228287730953,42.82785615878869 -121.862,2024/05/28 15:38:56.7159,36.228287730953,42.82785615878869 -122.108,2024/05/28 15:38:56.9619,36.228287730953,42.82785615878869 -122.355,2024/05/28 15:38:57.2089,36.228287730953,42.82785615878869 -122.504,2024/05/28 15:38:57.3579,36.228287730953,42.82785615878869 -122.997,2024/05/28 15:38:57.8509,36.228287730953,42.82785615878869 -123.093,2024/05/28 15:38:57.9469,36.228287730953,42.82785615878869 -123.339,2024/05/28 15:38:58.1929,36.228287730953,42.82785615878869 -123.49,2024/05/28 15:38:58.3439,36.228287730953,42.82785615878869 -123.585,2024/05/28 15:38:58.4389,36.228287730953,42.82785615878869 -123.832,2024/05/28 15:38:58.6859,36.228287730953,42.82785615878869 -124.078,2024/05/28 15:38:58.9319,36.228287730953,42.82785615878869 -124.228,2024/05/28 15:38:59.0819,36.228287730953,42.82785615878869 -124.324,2024/05/28 15:38:59.1779,36.228287730953,42.82785615878869 -124.571,2024/05/28 15:38:59.4249,36.228287730953,42.82785615878869 -124.817,2024/05/28 15:38:59.6709,36.228287730953,42.82785615878869 -124.967,2024/05/28 15:38:59.8209,36.228287730953,42.82785615878869 -125.064,2024/05/28 15:38:59.9179,36.228287730953,42.82785615878869 -125.31,2024/05/28 15:39:00.1639,36.228287730953,42.82785615878869 -125.459,2024/05/28 15:39:00.3129,36.228287730953,42.82785615878869 -125.556,2024/05/28 15:39:00.4099,36.228287730953,42.82785615878869 -125.803,2024/05/28 15:39:00.6569,36.228287730953,42.82785615878869 -126.049,2024/05/28 15:39:00.9029,36.228287730953,42.82785615878869 -126.198,2024/05/28 15:39:01.0519,36.228287730953,42.82785615878869 -126.295,2024/05/28 15:39:01.1489,36.228287730953,42.82785615878869 -126.541,2024/05/28 15:39:01.3949,36.228287730953,42.82785615878869 -126.691,2024/05/28 15:39:01.5449,36.228287730953,42.82785615878869 -126.787,2024/05/28 15:39:01.6409,36.228287730953,42.82785615878869 -127.033,2024/05/28 15:39:01.8869,36.228287730953,42.82785615878869 -127.28,2024/05/28 15:39:02.1339,36.228287730953,42.82785615878869 -127.429,2024/05/28 15:39:02.2829,36.228287730953,42.82785615878869 -127.526,2024/05/28 15:39:02.3799,36.228287730953,42.82785615878869 -127.772,2024/05/28 15:39:02.6259,36.228287730953,42.82785615878869 -127.922,2024/05/28 15:39:02.7759,36.228287730953,42.82785615878869 -128.019,2024/05/28 15:39:02.8729,36.228287730953,42.82785615878869 -128.265,2024/05/28 15:39:03.1189,36.228287730953,42.82785615878869 -128.511,2024/05/28 15:39:03.3649,36.228287730953,42.82785615878869 -128.661,2024/05/28 15:39:03.5149,36.228287730953,42.82785615878869 -128.758,2024/05/28 15:39:03.6119,36.228287730953,42.82785615878869 -129.004,2024/05/28 15:39:03.8579,36.228287730953,42.82785615878869 -129.154,2024/05/28 15:39:04.0079,36.228287730953,42.82785615878869 -129.25,2024/05/28 15:39:04.1039,36.228287730953,42.82785615878869 -129.497,2024/05/28 15:39:04.3509,36.228287730953,42.82785615878869 -129.743,2024/05/28 15:39:04.5969,36.228287730953,42.82785615878869 -129.893,2024/05/28 15:39:04.7469,36.228287730953,42.82785615878869 -130.385,2024/05/28 15:39:05.2389,36.228287730953,42.82785615878869 -130.481,2024/05/28 15:39:05.3349,36.228287730953,42.82785615878869 -130.727,2024/05/28 15:39:05.5809,36.228287730953,42.82785615878869 -130.974,2024/05/28 15:39:05.8279,36.228287730953,42.82785615878869 -131.123,2024/05/28 15:39:05.9769,36.228287730953,42.82785615878869 -131.22,2024/05/28 15:39:06.0739,36.228287730953,42.82785615878869 -131.862,2024/05/28 15:39:06.7159,36.228287730953,42.82785615878869 -131.959,2024/05/28 15:39:06.8129,36.228287730953,42.82785615878869 -132.206,2024/05/28 15:39:07.0599,36.228287730953,42.82785615878869 -132.355,2024/05/28 15:39:07.2089,36.228287730953,42.82785615878869 -132.452,2024/05/28 15:39:07.3059,36.228287730953,42.82785615878869 -132.698,2024/05/28 15:39:07.5519,36.228287730953,42.82785615878869 -133.094,2024/05/28 15:39:07.9479,36.228287730953,42.82785615878869 -133.437,2024/05/28 15:39:08.2909,36.228287730953,42.82785615878869 -133.683,2024/05/28 15:39:08.5369,36.228287730953,42.82785615878869 -133.832,2024/05/28 15:39:08.6859,36.228287730953,42.82785615878869 -133.929,2024/05/28 15:39:08.7829,36.228287730953,42.82785615878869 -134.325,2024/05/28 15:39:09.1789,36.228287730953,42.82785615878869 -134.668,2024/05/28 15:39:09.5219,36.228287730953,42.82785615878869 -134.915,2024/05/28 15:39:09.7689,36.228287730953,42.82785615878869 -135.064,2024/05/28 15:39:09.9179,36.228287730953,42.82785615878869 -135.161,2024/05/28 15:39:10.0149,36.228287730953,42.82785615878869 -135.407,2024/05/28 15:39:10.2609,36.228287730953,42.82785615878869 -135.557,2024/05/28 15:39:10.4109,36.228287730953,42.82785615878869 -135.653,2024/05/28 15:39:10.5069,36.228287730953,42.82785615878869 -135.899,2024/05/28 15:39:10.7529,36.228287730953,42.82785615878869 -136.146,2024/05/28 15:39:10.9999,36.228287730953,42.82785615878869 -136.295,2024/05/28 15:39:11.1489,36.228287730953,42.82785615878869 -136.392,2024/05/28 15:39:11.2459,36.228287730953,42.82785615878869 -136.638,2024/05/28 15:39:11.4919,36.228287730953,42.82785615878869 -136.788,2024/05/28 15:39:11.6419,36.228287730953,42.82785615878869 -136.885,2024/05/28 15:39:11.7389,36.228287730953,42.82785615878869 -137.527,2024/05/28 15:39:12.3809,36.228287730953,42.82785615878869 -137.624,2024/05/28 15:39:12.4779,36.228287730953,42.82785615878869 -137.87,2024/05/28 15:39:12.7239,36.228287730953,42.82785615878869 -138.02,2024/05/28 15:39:12.8739,36.228287730953,42.82785615878869 -138.116,2024/05/28 15:39:12.9699,36.228287730953,42.82785615878869 -138.363,2024/05/28 15:39:13.2169,36.228287730953,42.82785615878869 -138.609,2024/05/28 15:39:13.4629,36.228287730953,42.82785615878869 -138.759,2024/05/28 15:39:13.6129,36.228287730953,42.82785615878869 -138.855,2024/05/28 15:39:13.7089,36.228287730953,42.82785615878869 -139.101,2024/05/28 15:39:13.9549,36.228287730953,42.82785615878869 -139.347,2024/05/28 15:39:14.2009,36.228287730953,42.82785615878869 -139.594,2024/05/28 15:39:14.4479,36.228287730953,42.82785615878869 -139.743,2024/05/28 15:39:14.5969,36.228287730953,42.82785615878869 -139.84,2024/05/28 15:39:14.6939,36.228287730953,42.82785615878869 -139.99,2024/05/28 15:39:14.8439,36.228287730953,42.82785615878869 -140.579,2024/05/28 15:39:15.4329,36.228287730953,42.82785615878869 -140.729,2024/05/28 15:39:15.5829,36.228287730953,42.82785615878869 -140.825,2024/05/28 15:39:15.6789,36.228287730953,42.82785615878869 -141.072,2024/05/28 15:39:15.9259,36.228287730953,42.82785615878869 -141.317,2024/05/28 15:39:16.1709,36.228287730953,42.82785615878869 -141.467,2024/05/28 15:39:16.3209,36.228287730953,42.82785615878869 -141.564,2024/05/28 15:39:16.4179,36.228287730953,42.82785615878869 -141.81,2024/05/28 15:39:16.6639,36.228287730953,42.82785615878869 -141.96,2024/05/28 15:39:16.8139,36.228287730953,42.82785615878869 -142.056,2024/05/28 15:39:16.9099,36.228287730953,42.82785615878869 -142.303,2024/05/28 15:39:17.1569,36.228287730953,42.82785615878869 -142.549,2024/05/28 15:39:17.4029,36.228287730953,42.82785615878869 -142.699,2024/05/28 15:39:17.5529,36.228287730953,42.82785615878869 -142.795,2024/05/28 15:39:17.6489,36.228287730953,42.82785615878869 -143.042,2024/05/28 15:39:17.8959,36.228287730953,42.82785615878869 -143.288,2024/05/28 15:39:18.1419,36.228287730953,42.82785615878869 -143.438,2024/05/28 15:39:18.2919,36.228287730953,42.82785615878869 -143.534,2024/05/28 15:39:18.3879,36.228287730953,42.82785615878869 -143.781,2024/05/28 15:39:18.6349,36.228287730953,42.82785615878869 -143.93,2024/05/28 15:39:18.7839,36.228287730953,42.82785615878869 -144.027,2024/05/28 15:39:18.8809,36.228287730953,42.82785615878869 -144.273,2024/05/28 15:39:19.1269,36.228287730953,42.82785615878869 -144.668,2024/05/28 15:39:19.5219,36.228287730953,42.82785615878869 -145.012,2024/05/28 15:39:19.8659,36.228287730953,42.82785615878869 -145.161,2024/05/28 15:39:20.0149,36.228287730953,42.82785615878869 -145.258,2024/05/28 15:39:20.1119,36.228287730953,42.82785615878869 -145.504,2024/05/28 15:39:20.3579,36.228287730953,42.82785615878869 -145.753,2024/05/28 15:39:20.6069,36.228287730953,42.82785615878869 -145.9,2024/05/28 15:39:20.7539,36.228287730953,42.82785615878869 -145.997,2024/05/28 15:39:20.8509,36.228287730953,42.82785615878869 -146.243,2024/05/28 15:39:21.0969,36.228287730953,42.82785615878869 -146.393,2024/05/28 15:39:21.2469,36.228287730953,42.82785615878869 -146.49,2024/05/28 15:39:21.3439,36.228287730953,42.82785615878869 -146.736,2024/05/28 15:39:21.5899,36.228287730953,42.82785615878869 -146.982,2024/05/28 15:39:21.8359,36.228287730953,42.82785615878869 -147.132,2024/05/28 15:39:21.9859,36.228287730953,42.82785615878869 -147.229,2024/05/28 15:39:22.0829,36.228287730953,42.82785615878869 -147.475,2024/05/28 15:39:22.3289,36.228287730953,42.82785615878869 -147.624,2024/05/28 15:39:22.4779,36.228287730953,42.82785615878869 -147.72,2024/05/28 15:39:22.5739,36.228287730953,42.82785615878869 -147.968,2024/05/28 15:39:22.8219,36.228287730953,42.82785615878869 -148.213,2024/05/28 15:39:23.0669,36.228287730953,42.82785615878869 -148.363,2024/05/28 15:39:23.2169,36.228287730953,42.82785615878869 -148.459,2024/05/28 15:39:23.3129,36.228287730953,42.82785615878869 -148.706,2024/05/28 15:39:23.5599,36.228287730953,42.82785615878869 -148.855,2024/05/28 15:39:23.7089,36.228287730953,42.82785615878869 -148.952,2024/05/28 15:39:23.8059,36.228287730953,42.82785615878869 -149.198,2024/05/28 15:39:24.0519,36.228287730953,42.82785615878869 -149.445,2024/05/28 15:39:24.2989,36.228287730953,42.82785615878869 -149.594,2024/05/28 15:39:24.4479,36.228287730953,42.82785615878869 -149.691,2024/05/28 15:39:24.5449,36.228287730953,42.82785615878869 -149.937,2024/05/28 15:39:24.7909,36.228287730953,42.82785615878869 -150.087,2024/05/28 15:39:24.9409,36.228287730953,42.82785615878869 -150.184,2024/05/28 15:39:25.0379,36.228287730953,42.82785615878869 -150.43,2024/05/28 15:39:25.2839,36.228287730953,42.82785615878869 -150.825,2024/05/28 15:39:25.6789,36.228287730953,42.82785615878869 -151.168,2024/05/28 15:39:26.0219,36.228287730953,42.82785615878869 -151.318,2024/05/28 15:39:26.1719,36.228287730953,42.82785615878869 -151.415,2024/05/28 15:39:26.2689,36.228287730953,42.82785615878869 -151.661,2024/05/28 15:39:26.5149,36.228287730953,42.82785615878869 -151.907,2024/05/28 15:39:26.7609,36.228287730953,42.82785615878869 -152.057,2024/05/28 15:39:26.9109,36.228287730953,42.82785615878869 -152.154,2024/05/28 15:39:27.0079,36.228287730953,42.82785615878869 -152.796,2024/05/28 15:39:27.6499,36.228287730953,42.82785615878869 -152.893,2024/05/28 15:39:27.7469,36.228287730953,42.82785615878869 -153.289,2024/05/28 15:39:28.1429,36.228287730953,42.82785615878869 -153.632,2024/05/28 15:39:28.4859,36.228287730953,42.82785615878869 -153.878,2024/05/28 15:39:28.7319,36.228287730953,42.82785615878869 -154.027,2024/05/28 15:39:28.8809,36.228287730953,42.82785615878869 -154.124,2024/05/28 15:39:28.9779,36.228287730953,42.82785615878869 -154.37,2024/05/28 15:39:29.2239,36.228287730953,42.82785615878869 -154.52,2024/05/28 15:39:29.3739,36.228287730953,42.82785615878869 -154.616,2024/05/28 15:39:29.4699,36.228287730953,42.82785615878869 -154.862,2024/05/28 15:39:29.7159,36.228287730953,42.82785615878869 -155.012,2024/05/28 15:39:29.8659,36.228287730953,42.82785615878869 -155.109,2024/05/28 15:39:29.9629,36.228287730953,42.82785615878869 -155.751,2024/05/28 15:39:30.6049,36.228287730953,42.82785615878869 -155.848,2024/05/28 15:39:30.7019,36.228287730953,42.82785615878869 -156.094,2024/05/28 15:39:30.9479,36.228287730953,42.82785615878869 -156.244,2024/05/28 15:39:31.0979,36.228287730953,42.82785615878869 -156.341,2024/05/28 15:39:31.1949,36.228287730953,42.82785615878869 -156.587,2024/05/28 15:39:31.4409,36.228287730953,42.82785615878869 -156.982,2024/05/28 15:39:31.8359,36.228287730953,42.82785615878869 -157.325,2024/05/28 15:39:32.1789,36.228287730953,42.82785615878869 -157.571,2024/05/28 15:39:32.4249,36.228287730953,42.82785615878869 -157.721,2024/05/28 15:39:32.5749,36.228287730953,42.82785615878869 -157.818,2024/05/28 15:39:32.6719,36.228287730953,42.82785615878869 -158.064,2024/05/28 15:39:32.9179,36.228287730953,42.82785615878869 -158.46,2024/05/28 15:39:33.3139,36.228287730953,42.82785615878869 -158.803,2024/05/28 15:39:33.6569,36.228287730953,42.82785615878869 -159.049,2024/05/28 15:39:33.9029,36.228287730953,42.82785615878869 -159.199,2024/05/28 15:39:34.0529,36.228287730953,42.82785615878869 -159.296,2024/05/28 15:39:34.1499,36.228287730953,42.82785615878869 -159.542,2024/05/28 15:39:34.3959,36.228287730953,42.82785615878869 -160.183,2024/05/28 15:39:35.0369,36.228287730953,42.82785615878869 -160.281,2024/05/28 15:39:35.1349,36.228287730953,42.82785615878869 -160.528,2024/05/28 15:39:35.3819,36.228287730953,42.82785615878869 -160.676,2024/05/28 15:39:35.5299,36.228287730953,42.82785615878869 -160.773,2024/05/28 15:39:35.6269,36.228287730953,42.82785615878869 -161.02,2024/05/28 15:39:35.8739,36.228287730953,42.82785615878869 -161.266,2024/05/28 15:39:36.1199,36.228287730953,42.82785615878869 -161.416,2024/05/28 15:39:36.2699,36.228287730953,42.82785615878869 -161.512,2024/05/28 15:39:36.3659,36.228287730953,42.82785615878869 -161.759,2024/05/28 15:39:36.6129,36.228287730953,42.82785615878869 -162.005,2024/05/28 15:39:36.8589,36.228287730953,42.82785615878869 -162.154,2024/05/28 15:39:37.0079,36.228287730953,42.82785615878869 -162.251,2024/05/28 15:39:37.1049,36.228287730953,42.82785615878869 -162.497,2024/05/28 15:39:37.3509,36.228287730953,42.82785615878869 -162.893,2024/05/28 15:39:37.7469,36.228287730953,42.82785615878869 -163.236,2024/05/28 15:39:38.0899,36.228287730953,42.82785615878869 -163.482,2024/05/28 15:39:38.3359,36.228287730953,42.82785615878869 -163.632,2024/05/28 15:39:38.4859,36.228287730953,42.82785615878869 -163.729,2024/05/28 15:39:38.5829,36.228287730953,42.82785615878869 -163.975,2024/05/28 15:39:38.8289,36.228287730953,42.82785615878869 -164.221,2024/05/28 15:39:39.0749,36.228287730953,42.82785615878869 -164.371,2024/05/28 15:39:39.2249,36.228287730953,42.82785615878869 -164.468,2024/05/28 15:39:39.3219,36.228287730953,42.82785615878869 -164.714,2024/05/28 15:39:39.5679,36.228287730953,42.82785615878869 -164.96,2024/05/28 15:39:39.8139,36.228287730953,42.82785615878869 -165.207,2024/05/28 15:39:40.0609,36.228287730953,42.82785615878869 -165.355,2024/05/28 15:39:40.2089,36.228287730953,42.82785615878869 -165.453,2024/05/28 15:39:40.3069,36.228287730953,42.82785615878869 -165.699,2024/05/28 15:39:40.5529,36.228287730953,42.82785615878869 -165.945,2024/05/28 15:39:40.7989,36.228287730953,42.82785615878869 -166.191,2024/05/28 15:39:41.0449,36.228287730953,42.82785615878869 -166.341,2024/05/28 15:39:41.1949,36.228287730953,42.82785615878869 -166.437,2024/05/28 15:39:41.2909,36.228287730953,42.82785615878869 -166.684,2024/05/28 15:39:41.5379,36.228287730953,42.82785615878869 -166.93,2024/05/28 15:39:41.7839,36.228287730953,42.82785615878869 -167.08,2024/05/28 15:39:41.9339,36.228287730953,42.82785615878869 -167.176,2024/05/28 15:39:42.0299,36.228287730953,42.82785615878869 -167.423,2024/05/28 15:39:42.2769,36.228287730953,42.82785615878869 -167.669,2024/05/28 15:39:42.5229,36.228287730953,42.82785615878869 -167.819,2024/05/28 15:39:42.6729,36.228287730953,42.82785615878869 -167.916,2024/05/28 15:39:42.7699,36.228287730953,42.82785615878869 -168.162,2024/05/28 15:39:43.0159,36.228287730953,42.82785615878869 -168.408,2024/05/28 15:39:43.2619,36.228287730953,42.82785615878869 -168.557,2024/05/28 15:39:43.4109,36.228287730953,42.82785615878869 -168.655,2024/05/28 15:39:43.5089,36.228287730953,42.82785615878869 -168.901,2024/05/28 15:39:43.7549,36.228287730953,42.82785615878869 -169.545,2024/05/28 15:39:44.3989,36.228287730953,42.82785615878869 -169.639,2024/05/28 15:39:44.4929,36.228287730953,42.82785615878869 -169.885,2024/05/28 15:39:44.7389,36.228287730953,42.82785615878869 -170.132,2024/05/28 15:39:44.9859,36.228287730953,42.82785615878869 -170.281,2024/05/28 15:39:45.1349,36.228287730953,42.82785615878869 -170.378,2024/05/28 15:39:45.2319,36.228287730953,42.82785615878869 -170.624,2024/05/28 15:39:45.4779,36.228287730953,42.82785615878869 -170.774,2024/05/28 15:39:45.6279,36.228287730953,42.82785615878869 -170.871,2024/05/28 15:39:45.7249,36.228287730953,42.82785615878869 -171.117,2024/05/28 15:39:45.9709,36.228287730953,42.82785615878869 -171.363,2024/05/28 15:39:46.2169,36.228287730953,42.82785615878869 -171.512,2024/05/28 15:39:46.3659,36.228287730953,42.82785615878869 -171.61,2024/05/28 15:39:46.4639,36.228287730953,42.82785615878869 -172.349,2024/05/28 15:39:47.2029,36.228287730953,42.82785615878869 -172.497,2024/05/28 15:39:47.3509,36.228287730953,42.82785615878869 -172.595,2024/05/28 15:39:47.4489,36.228287730953,42.82785615878869 -172.84,2024/05/28 15:39:47.6939,36.228287730953,42.82785615878869 -172.99,2024/05/28 15:39:47.8439,36.228287730953,42.82785615878869 -173.087,2024/05/28 15:39:47.9409,36.228287730953,42.82785615878869 -173.333,2024/05/28 15:39:48.1869,36.228287730953,42.82785615878869 -173.483,2024/05/28 15:39:48.3369,36.228287730953,42.82785615878869 -174.072,2024/05/28 15:39:48.9259,36.228287730953,42.82785615878869 -174.222,2024/05/28 15:39:49.0759,36.228287730953,42.82785615878869 -174.318,2024/05/28 15:39:49.1719,36.228287730953,42.82785615878869 -174.565,2024/05/28 15:39:49.4189,36.228287730953,42.82785615878869 -174.811,2024/05/28 15:39:49.6649,36.228287730953,42.82785615878869 -174.96,2024/05/28 15:39:49.8139,36.228287730953,42.82785615878869 -175.057,2024/05/28 15:39:49.9109,36.228287730953,42.82785615878869 -175.304,2024/05/28 15:39:50.1579,36.228287730953,42.82785615878869 -175.55,2024/05/28 15:39:50.4039,36.228287730953,42.82785615878869 -175.7,2024/05/28 15:39:50.5539,36.228287730953,42.82785615878869 -175.796,2024/05/28 15:39:50.6499,36.228287730953,42.82785615878869 -176.043,2024/05/28 15:39:50.8969,36.228287730953,42.82785615878869 -176.289,2024/05/28 15:39:51.1429,36.228287730953,42.82785615878869 -176.438,2024/05/28 15:39:51.2919,36.228287730953,42.82785615878869 -176.535,2024/05/28 15:39:51.3889,36.228287730953,42.82785615878869 -176.781,2024/05/28 15:39:51.6349,36.228287730953,42.82785615878869 -176.93,2024/05/28 15:39:51.7839,36.228287730953,42.82785615878869 -177.027,2024/05/28 15:39:51.8809,36.228287730953,42.82785615878869 -177.274,2024/05/28 15:39:52.1279,36.228287730953,42.82785615878869 -177.52,2024/05/28 15:39:52.3739,36.228287730953,42.82785615878869 -177.669,2024/05/28 15:39:52.5229,36.228287730953,42.82785615878869 -177.766,2024/05/28 15:39:52.6199,36.228287730953,42.82785615878869 -178.013,2024/05/28 15:39:52.8669,36.228287730953,42.82785615878869 -178.162,2024/05/28 15:39:53.0159,36.228287730953,42.82785615878869 -178.259,2024/05/28 15:39:53.1129,36.228287730953,42.82785615878869 -178.505,2024/05/28 15:39:53.3589,36.228287730953,42.82785615878869 -178.752,2024/05/28 15:39:53.6059,36.228287730953,42.82785615878869 -178.9,2024/05/28 15:39:53.7539,36.228287730953,42.82785615878869 -178.998,2024/05/28 15:39:53.8519,36.228287730953,42.82785615878869 -179.244,2024/05/28 15:39:54.0979,36.228287730953,42.82785615878869 -179.393,2024/05/28 15:39:54.2469,36.228287730953,42.82785615878869 -179.49,2024/05/28 15:39:54.3439,36.228287730953,42.82785615878869 -179.736,2024/05/28 15:39:54.5899,36.228287730953,42.82785615878869 -179.983,2024/05/28 15:39:54.8369,36.228287730953,42.82785615878869 -180.229,2024/05/28 15:39:55.0829,36.228287730953,42.82785615878869 -180.379,2024/05/28 15:39:55.2329,36.228287730953,42.82785615878869 -180.475,2024/05/28 15:39:55.3289,36.228287730953,42.82785615878869 -180.625,2024/05/28 15:39:55.4789,36.228287730953,42.82785615878869 -180.722,2024/05/28 15:39:55.5759,36.228287730953,42.82785615878869 -180.968,2024/05/28 15:39:55.8219,36.228287730953,42.82785615878869 -181.214,2024/05/28 15:39:56.0679,36.228287730953,42.82785615878869 -181.363,2024/05/28 15:39:56.2169,36.228287730953,42.82785615878869 -181.953,2024/05/28 15:39:56.8069,36.228287730953,42.82785615878869 -182.102,2024/05/28 15:39:56.9559,36.228287730953,42.82785615878869 -182.595,2024/05/28 15:39:57.4489,36.228287730953,42.82785615878869 -182.692,2024/05/28 15:39:57.5459,36.228287730953,42.82785615878869 -182.938,2024/05/28 15:39:57.7919,36.228287730953,42.82785615878869 -183.087,2024/05/28 15:39:57.9409,36.228287730953,42.82785615878869 -183.184,2024/05/28 15:39:58.0379,36.228287730953,42.82785615878869 -183.431,2024/05/28 15:39:58.2849,36.228287730953,42.82785615878869 -183.677,2024/05/28 15:39:58.5309,36.228287730953,42.82785615878869 -183.826,2024/05/28 15:39:58.6799,36.228287730953,42.82785615878869 -183.923,2024/05/28 15:39:58.7769,36.228287730953,42.82785615878869 -184.17,2024/05/28 15:39:59.0239,36.228287730953,42.82785615878869 -184.416,2024/05/28 15:39:59.2699,36.228287730953,42.82785615878869 -184.565,2024/05/28 15:39:59.4189,36.228287730953,42.82785615878869 -184.662,2024/05/28 15:39:59.5159,36.228287730953,42.82785615878869 -184.908,2024/05/28 15:39:59.7619,36.228287730953,42.82785615878869 -185.057,2024/05/28 15:39:59.9109,36.228287730953,42.82785615878869 -185.796,2024/05/28 15:40:00.6499,36.228287730953,42.82785615878869 -185.893,2024/05/28 15:40:00.7469,36.228287730953,42.82785615878869 -186.14,2024/05/28 15:40:00.9939,36.228287730953,42.82785615878869 -186.289,2024/05/28 15:40:01.1429,36.228287730953,42.82785615878869 -186.386,2024/05/28 15:40:01.2399,36.228287730953,42.82785615878869 -186.632,2024/05/28 15:40:01.4859,36.228287730953,42.82785615878869 -186.879,2024/05/28 15:40:01.7329,36.228287730953,42.82785615878869 -187.027,2024/05/28 15:40:01.8809,36.228287730953,42.82785615878869 -187.125,2024/05/28 15:40:01.9789,36.228287730953,42.82785615878869 -187.371,2024/05/28 15:40:02.2249,36.228287730953,42.82785615878869 -187.52,2024/05/28 15:40:02.3739,36.228287730953,42.82785615878869 -187.618,2024/05/28 15:40:02.4719,36.228287730953,42.82785615878869 -187.863,2024/05/28 15:40:02.7169,36.228287730953,42.82785615878869 -188.11,2024/05/28 15:40:02.9639,36.228287730953,42.82785615878869 -188.259,2024/05/28 15:40:03.1129,36.228287730953,42.82785615878869 -188.356,2024/05/28 15:40:03.2099,36.228287730953,42.82785615878869 -188.602,2024/05/28 15:40:03.4559,36.228287730953,42.82785615878869 -188.752,2024/05/28 15:40:03.6059,36.228287730953,42.82785615878869 -188.849,2024/05/28 15:40:03.7029,36.228287730953,42.82785615878869 -189.096,2024/05/28 15:40:03.9499,36.228287730953,42.82785615878869 -189.244,2024/05/28 15:40:04.0979,36.228287730953,42.82785615878869 -189.341,2024/05/28 15:40:04.1949,36.228287730953,42.82785615878869 -189.588,2024/05/28 15:40:04.4419,36.228287730953,42.82785615878869 -189.834,2024/05/28 15:40:04.6879,36.228287730953,42.82785615878869 -189.983,2024/05/28 15:40:04.8369,36.228287730953,42.82785615878869 -190.08,2024/05/28 15:40:04.9339,36.228287730953,42.82785615878869 -190.327,2024/05/28 15:40:05.1809,36.228287730953,42.82785615878869 -190.572,2024/05/28 15:40:05.4259,36.228287730953,42.82785615878869 -190.722,2024/05/28 15:40:05.5759,36.228287730953,42.82785615878869 -191.214,2024/05/28 15:40:06.0679,36.228287730953,42.82785615878869 -191.804,2024/05/28 15:40:06.6579,36.228287730953,42.82785615878869 -191.953,2024/05/28 15:40:06.8069,36.228287730953,42.82785615878869 -192.05,2024/05/28 15:40:06.9039,36.228287730953,42.82785615878869 -192.297,2024/05/28 15:40:07.1509,36.228287730953,42.82785615878869 -192.692,2024/05/28 15:40:07.5459,36.228287730953,42.82785615878869 -193.036,2024/05/28 15:40:07.8899,36.228287730953,42.82785615878869 -193.184,2024/05/28 15:40:08.0379,36.228287730953,42.82785615878869 -193.282,2024/05/28 15:40:08.1359,36.228287730953,42.82785615878869 -193.527,2024/05/28 15:40:08.3809,36.228287730953,42.82785615878869 -193.677,2024/05/28 15:40:08.5309,36.228287730953,42.82785615878869 -194.266,2024/05/28 15:40:09.1199,36.228287730953,42.82785615878869 -194.661,2024/05/28 15:40:09.5149,36.228287730953,42.82785615878869 -195.006,2024/05/28 15:40:09.8599,36.228287730953,42.82785615878869 -195.154,2024/05/28 15:40:10.0079,36.228287730953,42.82785615878869 -195.252,2024/05/28 15:40:10.1059,36.228287730953,42.82785615878869 -195.498,2024/05/28 15:40:10.3519,36.228287730953,42.82785615878869 -195.647,2024/05/28 15:40:10.5009,36.228287730953,42.82785615878869 -195.745,2024/05/28 15:40:10.5989,36.228287730953,42.82785615878869 -195.991,2024/05/28 15:40:10.8449,36.228287730953,42.82785615878869 -196.237,2024/05/28 15:40:11.0909,36.228287730953,42.82785615878869 -196.386,2024/05/28 15:40:11.2399,36.228287730953,42.82785615878869 -196.484,2024/05/28 15:40:11.3379,36.228287730953,42.82785615878869 -196.73,2024/05/28 15:40:11.5839,36.228287730953,42.82785615878869 -196.879,2024/05/28 15:40:11.7329,36.228287730953,42.82785615878869 -196.976,2024/05/28 15:40:11.8299,36.228287730953,42.82785615878869 -197.222,2024/05/28 15:40:12.0759,36.228287730953,42.82785615878869 -197.618,2024/05/28 15:40:12.4719,36.228287730953,42.82785615878869 -197.961,2024/05/28 15:40:12.8149,36.228287730953,42.82785615878869 -198.109,2024/05/28 15:40:12.9629,36.228287730953,42.82785615878869 -198.207,2024/05/28 15:40:13.0609,36.228287730953,42.82785615878869 -198.454,2024/05/28 15:40:13.3079,36.228287730953,42.82785615878869 -198.7,2024/05/28 15:40:13.5539,36.228287730953,42.82785615878869 -198.848,2024/05/28 15:40:13.7019,36.228287730953,42.82785615878869 -198.946,2024/05/28 15:40:13.7999,36.228287730953,42.82785615878869 -199.193,2024/05/28 15:40:14.0469,36.228287730953,42.82785615878869 -199.341,2024/05/28 15:40:14.1949,36.228287730953,42.82785615878869 -199.439,2024/05/28 15:40:14.2929,36.228287730953,42.82785615878869 -199.685,2024/05/28 15:40:14.5389,36.228287730953,42.82785615878869 -199.931,2024/05/28 15:40:14.7849,36.228287730953,42.82785615878869 -200.08,2024/05/28 15:40:14.9339,36.228287730953,42.82785615878869 -200.177,2024/05/28 15:40:15.0309,36.228287730953,42.82785615878869 -200.423,2024/05/28 15:40:15.2769,36.228287730953,42.82785615878869 -200.572,2024/05/28 15:40:15.4259,36.228287730953,42.82785615878869 -200.67,2024/05/28 15:40:15.5239,36.228287730953,42.82785615878869 -200.916,2024/05/28 15:40:15.7699,36.228287730953,42.82785615878869 -201.162,2024/05/28 15:40:16.0159,36.228287730953,42.82785615878869 -201.311,2024/05/28 15:40:16.1649,36.228287730953,42.82785615878869 -201.409,2024/05/28 15:40:16.2629,36.228287730953,42.82785615878869 -201.804,2024/05/28 15:40:16.6579,36.228287730953,42.82785615878869 -202.148,2024/05/28 15:40:17.0019,36.228287730953,42.82785615878869 -202.394,2024/05/28 15:40:17.2479,36.228287730953,42.82785615878869 -202.543,2024/05/28 15:40:17.3969,36.228287730953,42.82785615878869 -202.64,2024/05/28 15:40:17.4939,36.228287730953,42.82785615878869 -202.887,2024/05/28 15:40:17.7409,36.228287730953,42.82785615878869 -203.133,2024/05/28 15:40:17.9869,36.228287730953,42.82785615878869 -203.282,2024/05/28 15:40:18.1359,36.228287730953,42.82785615878869 -203.379,2024/05/28 15:40:18.2329,36.228287730953,42.82785615878869 -203.625,2024/05/28 15:40:18.4789,36.228287730953,42.82785615878869 -203.774,2024/05/28 15:40:18.6279,36.228287730953,42.82785615878869 -203.871,2024/05/28 15:40:18.7249,36.228287730953,42.82785615878869 -204.117,2024/05/28 15:40:18.9709,36.228287730953,42.82785615878869 -204.267,2024/05/28 15:40:19.1209,36.228287730953,42.82785615878869 -204.364,2024/05/28 15:40:19.2179,36.228287730953,42.82785615878869 -204.61,2024/05/28 15:40:19.4639,36.228287730953,42.82785615878869 -204.856,2024/05/28 15:40:19.7099,36.228287730953,42.82785615878869 -205.005,2024/05/28 15:40:19.8589,36.228287730953,42.82785615878869 -205.103,2024/05/28 15:40:19.9569,36.228287730953,42.82785615878869 -205.349,2024/05/28 15:40:20.2029,36.228287730953,42.82785615878869 -205.595,2024/05/28 15:40:20.4489,36.228287730953,42.82785615878869 -205.744,2024/05/28 15:40:20.5979,36.228287730953,42.82785615878869 -205.842,2024/05/28 15:40:20.6959,36.228287730953,42.82785615878869 -206.088,2024/05/28 15:40:20.9419,36.228287730953,42.82785615878869 -206.237,2024/05/28 15:40:21.0909,36.228287730953,42.82785615878869 -206.335,2024/05/28 15:40:21.1889,36.228287730953,42.82785615878869 -206.581,2024/05/28 15:40:21.4349,36.228287730953,42.82785615878869 -206.827,2024/05/28 15:40:21.6809,36.228287730953,42.82785615878869 -206.976,2024/05/28 15:40:21.8299,36.228287730953,42.82785615878869 -207.073,2024/05/28 15:40:21.9269,36.228287730953,42.82785615878869 -207.319,2024/05/28 15:40:22.1729,36.228287730953,42.82785615878869 -207.468,2024/05/28 15:40:22.3219,36.228287730953,42.82785615878869 -207.565,2024/05/28 15:40:22.4189,36.228287730953,42.82785615878869 -207.812,2024/05/28 15:40:22.6659,36.228287730953,42.82785615878869 -208.058,2024/05/28 15:40:22.9119,36.228287730953,42.82785615878869 -208.207,2024/05/28 15:40:23.0609,36.228287730953,42.82785615878869 -208.305,2024/05/28 15:40:23.1589,36.228287730953,42.82785615878869 -208.551,2024/05/28 15:40:23.4049,36.228287730953,42.82785615878869 -208.699,2024/05/28 15:40:23.5529,36.228287730953,42.82785615878869 -208.797,2024/05/28 15:40:23.6509,36.228287730953,42.82785615878869 -209.044,2024/05/28 15:40:23.8979,36.228287730953,42.82785615878869 -209.29,2024/05/28 15:40:24.1439,36.228287730953,42.82785615878869 -209.536,2024/05/28 15:40:24.3899,36.228287730953,42.82785615878869 -209.685,2024/05/28 15:40:24.5389,36.228287730953,42.82785615878869 -209.783,2024/05/28 15:40:24.6369,36.228287730953,42.82785615878869 -210.028,2024/05/28 15:40:24.8819,36.228287730953,42.82785615878869 -210.178,2024/05/28 15:40:25.0319,36.228287730953,42.82785615878869 -210.274,2024/05/28 15:40:25.1279,36.228287730953,42.82785615878869 -210.916,2024/05/28 15:40:25.7699,36.228287730953,42.82785615878869 -211.013,2024/05/28 15:40:25.8669,36.228287730953,42.82785615878869 -211.26,2024/05/28 15:40:26.1139,36.228287730953,42.82785615878869 -211.408,2024/05/28 15:40:26.2619,36.228287730953,42.82785615878869 -211.506,2024/05/28 15:40:26.3599,36.228287730953,42.82785615878869 -211.752,2024/05/28 15:40:26.6059,36.228287730953,42.82785615878869 -211.999,2024/05/28 15:40:26.8529,36.228287730953,42.82785615878869 -212.148,2024/05/28 15:40:27.0019,36.228287730953,42.82785615878869 -212.245,2024/05/28 15:40:27.0989,36.228287730953,42.82785615878869 -212.491,2024/05/28 15:40:27.3449,36.228287730953,42.82785615878869 -212.738,2024/05/28 15:40:27.5919,36.228287730953,42.82785615878869 -212.886,2024/05/28 15:40:27.7399,36.228287730953,42.82785615878869 -212.984,2024/05/28 15:40:27.8379,36.228287730953,42.82785615878869 -213.23,2024/05/28 15:40:28.0839,36.228287730953,42.82785615878869 -213.477,2024/05/28 15:40:28.3309,36.228287730953,42.82785615878869 -213.722,2024/05/28 15:40:28.5759,36.228287730953,42.82785615878869 -213.871,2024/05/28 15:40:28.7249,36.228287730953,42.82785615878869 -213.968,2024/05/28 15:40:28.8219,36.228287730953,42.82785615878869 -214.215,2024/05/28 15:40:29.0689,36.228287730953,42.82785615878869 -214.461,2024/05/28 15:40:29.3149,36.228287730953,42.82785615878869 -214.61,2024/05/28 15:40:29.4639,36.228287730953,42.82785615878869 -214.707,2024/05/28 15:40:29.5609,36.228287730953,42.82785615878869 -214.856,2024/05/28 15:40:29.7099,36.228287730953,42.82785615878869 -214.954,2024/05/28 15:40:29.8079,36.228287730953,42.82785615878869 -215.2,2024/05/28 15:40:30.0539,36.228287730953,42.82785615878869 -215.447,2024/05/28 15:40:30.3009,36.228287730953,42.82785615878869 -215.595,2024/05/28 15:40:30.4489,36.228287730953,42.82785615878869 -215.693,2024/05/28 15:40:30.5469,36.228287730953,42.82785615878869 -215.939,2024/05/28 15:40:30.7929,36.228287730953,42.82785615878869 -216.087,2024/05/28 15:40:30.9409,36.228287730953,42.82785615878869 -216.186,2024/05/28 15:40:31.0399,36.228287730953,42.82785615878869 -216.431,2024/05/28 15:40:31.2849,36.228287730953,42.82785615878869 -216.677,2024/05/28 15:40:31.5309,36.228287730953,42.82785615878869 -216.826,2024/05/28 15:40:31.6799,36.228287730953,42.82785615878869 -216.924,2024/05/28 15:40:31.7779,36.228287730953,42.82785615878869 -217.17,2024/05/28 15:40:32.0239,36.228287730953,42.82785615878869 -217.319,2024/05/28 15:40:32.1729,36.228287730953,42.82785615878869 -217.416,2024/05/28 15:40:32.2699,36.228287730953,42.82785615878869 -217.663,2024/05/28 15:40:32.5169,36.228287730953,42.82785615878869 -217.909,2024/05/28 15:40:32.7629,36.228287730953,42.82785615878869 -218.058,2024/05/28 15:40:32.9119,36.228287730953,42.82785615878869 -218.155,2024/05/28 15:40:33.0089,36.228287730953,42.82785615878869 -218.402,2024/05/28 15:40:33.2559,36.228287730953,42.82785615878869 -218.648,2024/05/28 15:40:33.5019,36.228287730953,42.82785615878869 -218.797,2024/05/28 15:40:33.6509,36.228287730953,42.82785615878869 -218.895,2024/05/28 15:40:33.7489,36.228287730953,42.82785615878869 -219.141,2024/05/28 15:40:33.9949,36.228287730953,42.82785615878869 -219.29,2024/05/28 15:40:34.1439,36.228287730953,42.82785615878869 -219.387,2024/05/28 15:40:34.2409,36.228287730953,42.82785615878869 -219.633,2024/05/28 15:40:34.4869,36.228287730953,42.82785615878869 -219.879,2024/05/28 15:40:34.7329,36.228287730953,42.82785615878869 -220.028,2024/05/28 15:40:34.8819,36.228287730953,42.82785615878869 -220.125,2024/05/28 15:40:34.9789,36.228287730953,42.82785615878869 -220.372,2024/05/28 15:40:35.2259,36.228287730953,42.82785615878869 -220.52,2024/05/28 15:40:35.3739,36.228287730953,42.82785615878869 -220.618,2024/05/28 15:40:35.4719,36.228287730953,42.82785615878869 -221.259,2024/05/28 15:40:36.1129,36.228287730953,42.82785615878869 -221.603,2024/05/28 15:40:36.4569,36.228287730953,42.82785615878869 -221.752,2024/05/28 15:40:36.6059,36.228287730953,42.82785615878869 -221.85,2024/05/28 15:40:36.7039,36.228287730953,42.82785615878869 -222.491,2024/05/28 15:40:37.3449,36.228287730953,42.82785615878869 -222.589,2024/05/28 15:40:37.4429,36.228287730953,42.82785615878869 -222.835,2024/05/28 15:40:37.6889,36.228287730953,42.82785615878869 -222.984,2024/05/28 15:40:37.8379,36.228287730953,42.82785615878869 -223.08,2024/05/28 15:40:37.9339,36.228287730953,42.82785615878869 -223.328,2024/05/28 15:40:38.1819,36.228287730953,42.82785615878869 -223.573,2024/05/28 15:40:38.4269,36.228287730953,42.82785615878869 -223.722,2024/05/28 15:40:38.5759,36.228287730953,42.82785615878869 -223.819,2024/05/28 15:40:38.6729,36.228287730953,42.82785615878869 -224.066,2024/05/28 15:40:38.9199,36.228287730953,42.82785615878869 -224.214,2024/05/28 15:40:39.0679,36.228287730953,42.82785615878869 -224.312,2024/05/28 15:40:39.1659,36.228287730953,42.82785615878869 -224.558,2024/05/28 15:40:39.4119,36.228287730953,42.82785615878869 -224.805,2024/05/28 15:40:39.6589,36.228287730953,42.82785615878869 -225.051,2024/05/28 15:40:39.9049,36.228287730953,42.82785615878869 -225.2,2024/05/28 15:40:40.0539,36.228287730953,42.82785615878869 -225.298,2024/05/28 15:40:40.1519,36.228287730953,42.82785615878869 -225.446,2024/05/28 15:40:40.2999,36.228287730953,42.82785615878869 -225.544,2024/05/28 15:40:40.3979,36.228287730953,42.82785615878869 -225.79,2024/05/28 15:40:40.6439,36.228287730953,42.82785615878869 -225.939,2024/05/28 15:40:40.7929,36.228287730953,42.82785615878869 -226.037,2024/05/28 15:40:40.8909,36.228287730953,42.82785615878869 -226.283,2024/05/28 15:40:41.1369,36.228287730953,42.82785615878869 -226.431,2024/05/28 15:40:41.2849,36.228287730953,42.82785615878869 -226.529,2024/05/28 15:40:41.3829,36.228287730953,42.82785615878869 -226.775,2024/05/28 15:40:41.6289,36.228287730953,42.82785615878869 -227.022,2024/05/28 15:40:41.8759,36.228287730953,42.82785615878869 -227.17,2024/05/28 15:40:42.0239,36.228287730953,42.82785615878869 -227.267,2024/05/28 15:40:42.1209,36.228287730953,42.82785615878869 -227.514,2024/05/28 15:40:42.3679,36.228287730953,42.82785615878869 -227.662,2024/05/28 15:40:42.5159,36.228287730953,42.82785615878869 -227.76,2024/05/28 15:40:42.6139,36.228287730953,42.82785615878869 -228.006,2024/05/28 15:40:42.8599,36.228287730953,42.82785615878869 -228.253,2024/05/28 15:40:43.1069,36.228287730953,42.82785615878869 -228.401,2024/05/28 15:40:43.2549,36.228287730953,42.82785615878869 -228.499,2024/05/28 15:40:43.3529,36.228287730953,42.82785615878869 -228.745,2024/05/28 15:40:43.5989,36.228287730953,42.82785615878869 -228.992,2024/05/28 15:40:43.8459,36.228287730953,42.82785615878869 -229.14,2024/05/28 15:40:43.9939,36.228287730953,42.82785615878869 -229.238,2024/05/28 15:40:44.0919,36.228287730953,42.82785615878869 -229.387,2024/05/28 15:40:44.2409,36.228287730953,42.82785615878869 -229.484,2024/05/28 15:40:44.3379,36.228287730953,42.82785615878869 -229.731,2024/05/28 15:40:44.5849,36.228287730953,42.82785615878869 -229.878,2024/05/28 15:40:44.7319,36.228287730953,42.82785615878869 -229.977,2024/05/28 15:40:44.8309,36.228287730953,42.82785615878869 -230.223,2024/05/28 15:40:45.0769,36.228287730953,42.82785615878869 -230.47,2024/05/28 15:40:45.3239,36.228287730953,42.82785615878869 -230.617,2024/05/28 15:40:45.4709,36.228287730953,42.82785615878869 -230.715,2024/05/28 15:40:45.5689,36.228287730953,42.82785615878869 -230.961,2024/05/28 15:40:45.8149,36.228287730953,42.82785615878869 -231.11,2024/05/28 15:40:45.9639,36.228287730953,42.82785615878869 -231.208,2024/05/28 15:40:46.0619,36.228287730953,42.82785615878869 -231.603,2024/05/28 15:40:46.4569,36.228287730953,42.82785615878869 -231.947,2024/05/28 15:40:46.8009,36.228287730953,42.82785615878869 -232.193,2024/05/28 15:40:47.0469,36.228287730953,42.82785615878869 -232.342,2024/05/28 15:40:47.1959,36.228287730953,42.82785615878869 -232.439,2024/05/28 15:40:47.2929,36.228287730953,42.82785615878869 -232.686,2024/05/28 15:40:47.5399,36.228287730953,42.82785615878869 -232.834,2024/05/28 15:40:47.6879,36.228287730953,42.82785615878869 -232.932,2024/05/28 15:40:47.7859,36.228287730953,42.82785615878869 -233.178,2024/05/28 15:40:48.0319,36.228287730953,42.82785615878869 -233.326,2024/05/28 15:40:48.1799,36.228287730953,42.82785615878869 -233.425,2024/05/28 15:40:48.2789,36.228287730953,42.82785615878869 -233.671,2024/05/28 15:40:48.5249,36.228287730953,42.82785615878869 -233.819,2024/05/28 15:40:48.6729,36.228287730953,42.82785615878869 -233.918,2024/05/28 15:40:48.7719,36.228287730953,42.82785615878869 -234.163,2024/05/28 15:40:49.0169,36.228287730953,42.82785615878869 -234.409,2024/05/28 15:40:49.2629,36.228287730953,42.82785615878869 -234.558,2024/05/28 15:40:49.4119,36.228287730953,42.82785615878869 -234.656,2024/05/28 15:40:49.5099,36.228287730953,42.82785615878869 -234.902,2024/05/28 15:40:49.7559,36.228287730953,42.82785615878869 -235.148,2024/05/28 15:40:50.0019,36.228287730953,42.82785615878869 -235.297,2024/05/28 15:40:50.1509,36.228287730953,42.82785615878869 -235.395,2024/05/28 15:40:50.2489,36.228287730953,42.82785615878869 -235.543,2024/05/28 15:40:50.3969,36.228287730953,42.82785615878869 -235.641,2024/05/28 15:40:50.4949,36.228287730953,42.82785615878869 -236.284,2024/05/28 15:40:51.1379,36.228287730953,42.82785615878869 -236.38,2024/05/28 15:40:51.2339,36.228287730953,42.82785615878869 -236.626,2024/05/28 15:40:51.4799,36.228287730953,42.82785615878869 -236.774,2024/05/28 15:40:51.6279,36.228287730953,42.82785615878869 -236.872,2024/05/28 15:40:51.7259,36.228287730953,42.82785615878869 -237.118,2024/05/28 15:40:51.9719,36.228287730953,42.82785615878869 -237.267,2024/05/28 15:40:52.1209,36.228287730953,42.82785615878869 -237.365,2024/05/28 15:40:52.2189,36.228287730953,42.82785615878869 -237.611,2024/05/28 15:40:52.4649,36.228287730953,42.82785615878869 -237.858,2024/05/28 15:40:52.7119,36.228287730953,42.82785615878869 -238.006,2024/05/28 15:40:52.8599,36.228287730953,42.82785615878869 -238.104,2024/05/28 15:40:52.9579,36.228287730953,42.82785615878869 -238.35,2024/05/28 15:40:53.2039,36.228287730953,42.82785615878869 -238.498,2024/05/28 15:40:53.3519,36.228287730953,42.82785615878869 -238.597,2024/05/28 15:40:53.4509,36.228287730953,42.82785615878869 -238.843,2024/05/28 15:40:53.6969,36.228287730953,42.82785615878869 -238.991,2024/05/28 15:40:53.8449,36.228287730953,42.82785615878869 -239.088,2024/05/28 15:40:53.9419,36.228287730953,42.82785615878869 -239.336,2024/05/28 15:40:54.1899,36.228287730953,42.82785615878869 -239.581,2024/05/28 15:40:54.4349,36.228287730953,42.82785615878869 -239.73,2024/05/28 15:40:54.5839,36.228287730953,42.82785615878869 -239.827,2024/05/28 15:40:54.6809,36.228287730953,42.82785615878869 -240.074,2024/05/28 15:40:54.9279,36.228287730953,42.82785615878869 -240.222,2024/05/28 15:40:55.0759,36.228287730953,42.82785615878869 -240.32,2024/05/28 15:40:55.1739,36.228287730953,42.82785615878869 -240.964,2024/05/28 15:40:55.8179,36.228287730953,42.82785615878869 -241.059,2024/05/28 15:40:55.9129,36.228287730953,42.82785615878869 -241.305,2024/05/28 15:40:56.1589,36.228287730953,42.82785615878869 -241.453,2024/05/28 15:40:56.3069,36.228287730953,42.82785615878869 -241.552,2024/05/28 15:40:56.4059,36.228287730953,42.82785615878869 -242.192,2024/05/28 15:40:57.0459,36.228287730953,42.82785615878869 -242.291,2024/05/28 15:40:57.1449,36.228287730953,42.82785615878869 -242.537,2024/05/28 15:40:57.3909,36.228287730953,42.82785615878869 -242.685,2024/05/28 15:40:57.5389,36.228287730953,42.82785615878869 -242.784,2024/05/28 15:40:57.6379,36.228287730953,42.82785615878869 -243.029,2024/05/28 15:40:57.8829,36.228287730953,42.82785615878869 -243.275,2024/05/28 15:40:58.1289,36.228287730953,42.82785615878869 -243.424,2024/05/28 15:40:58.2779,36.228287730953,42.82785615878869 -243.522,2024/05/28 15:40:58.3759,36.228287730953,42.82785615878869 -243.768,2024/05/28 15:40:58.6219,36.228287730953,42.82785615878869 -243.916,2024/05/28 15:40:58.7699,36.228287730953,42.82785615878869 -244.014,2024/05/28 15:40:58.8679,36.228287730953,42.82785615878869 -244.261,2024/05/28 15:40:59.1149,36.228287730953,42.82785615878869 -244.507,2024/05/28 15:40:59.3609,36.228287730953,42.82785615878869 -244.655,2024/05/28 15:40:59.5089,36.228287730953,42.82785615878869 -244.753,2024/05/28 15:40:59.6069,36.228287730953,42.82785615878869 -245.0,2024/05/28 15:40:59.8539,36.228287730953,42.82785615878869 -245.147,2024/05/28 15:41:00.0009,36.228287730953,42.82785615878869 -245.246,2024/05/28 15:41:00.0999,36.228287730953,42.82785615878869 -245.492,2024/05/28 15:41:00.3459,36.228287730953,42.82785615878869 -245.738,2024/05/28 15:41:00.5919,36.228287730953,42.82785615878869 -245.984,2024/05/28 15:41:00.8379,36.228287730953,42.82785615878869 -246.133,2024/05/28 15:41:00.9869,36.228287730953,42.82785615878869 -246.231,2024/05/28 15:41:01.0849,36.228287730953,42.82785615878869 -246.379,2024/05/28 15:41:01.2329,36.228287730953,42.82785615878869 -246.477,2024/05/28 15:41:01.3309,36.228287730953,42.82785615878869 -246.723,2024/05/28 15:41:01.5769,36.228287730953,42.82785615878869 -246.97,2024/05/28 15:41:01.8239,36.228287730953,42.82785615878869 -247.118,2024/05/28 15:41:01.9719,36.228287730953,42.82785615878869 -247.216,2024/05/28 15:41:02.0699,36.228287730953,42.82785615878869 -247.462,2024/05/28 15:41:02.3159,36.228287730953,42.82785615878869 -247.61,2024/05/28 15:41:02.4639,36.228287730953,42.82785615878869 -247.709,2024/05/28 15:41:02.5629,36.228287730953,42.82785615878869 -247.955,2024/05/28 15:41:02.8089,36.228287730953,42.82785615878869 -248.103,2024/05/28 15:41:02.9569,36.228287730953,42.82785615878869 -248.201,2024/05/28 15:41:03.0549,36.228287730953,42.82785615878869 -248.448,2024/05/28 15:41:03.3019,36.228287730953,42.82785615878869 -248.694,2024/05/28 15:41:03.5479,36.228287730953,42.82785615878869 -248.842,2024/05/28 15:41:03.6959,36.228287730953,42.82785615878869 -248.939,2024/05/28 15:41:03.7929,36.228287730953,42.82785615878869 -249.187,2024/05/28 15:41:04.0409,36.228287730953,42.82785615878869 -249.334,2024/05/28 15:41:04.1879,36.228287730953,42.82785615878869 -249.432,2024/05/28 15:41:04.2859,36.228287730953,42.82785615878869 -249.678,2024/05/28 15:41:04.5319,36.228287730953,42.82785615878869 -249.925,2024/05/28 15:41:04.7789,36.228287730953,42.82785615878869 -250.073,2024/05/28 15:41:04.9269,36.228287730953,42.82785615878869 -250.171,2024/05/28 15:41:05.0249,36.228287730953,42.82785615878869 -250.417,2024/05/28 15:41:05.2709,36.228287730953,42.82785615878869 -250.664,2024/05/28 15:41:05.5179,36.228287730953,42.82785615878869 -250.811,2024/05/28 15:41:05.6649,36.228287730953,42.82785615878869 -251.304,2024/05/28 15:41:06.1579,36.228287730953,42.82785615878869 -251.403,2024/05/28 15:41:06.2569,36.228287730953,42.82785615878869 -251.649,2024/05/28 15:41:06.5029,36.228287730953,42.82785615878869 -251.896,2024/05/28 15:41:06.7499,36.228287730953,42.82785615878869 -252.043,2024/05/28 15:41:06.8969,36.228287730953,42.82785615878869 -252.142,2024/05/28 15:41:06.9959,36.228287730953,42.82785615878869 -252.388,2024/05/28 15:41:07.2419,36.228287730953,42.82785615878869 -252.635,2024/05/28 15:41:07.4889,36.228287730953,42.82785615878869 -252.782,2024/05/28 15:41:07.6359,36.228287730953,42.82785615878869 -252.88,2024/05/28 15:41:07.7339,36.228287730953,42.82785615878869 -253.126,2024/05/28 15:41:07.9799,36.228287730953,42.82785615878869 -253.373,2024/05/28 15:41:08.2269,36.228287730953,42.82785615878869 -253.521,2024/05/28 15:41:08.3749,36.228287730953,42.82785615878869 -253.619,2024/05/28 15:41:08.4729,36.228287730953,42.82785615878869 -253.865,2024/05/28 15:41:08.7189,36.228287730953,42.82785615878869 -254.014,2024/05/28 15:41:08.8679,36.228287730953,42.82785615878869 -254.112,2024/05/28 15:41:08.9659,36.228287730953,42.82785615878869 -254.358,2024/05/28 15:41:09.2119,36.228287730953,42.82785615878869 -254.604,2024/05/28 15:41:09.4579,36.228287730953,42.82785615878869 -254.752,2024/05/28 15:41:09.6059,36.228287730953,42.82785615878869 -254.851,2024/05/28 15:41:09.7049,36.228287730953,42.82785615878869 -255.097,2024/05/28 15:41:09.9509,36.228287730953,42.82785615878869 -255.245,2024/05/28 15:41:10.0989,36.228287730953,42.82785615878869 -255.343,2024/05/28 15:41:10.1969,36.228287730953,42.82785615878869 -255.59,2024/05/28 15:41:10.4439,36.228287730953,42.82785615878869 -255.836,2024/05/28 15:41:10.6899,36.228287730953,42.82785615878869 -256.081,2024/05/28 15:41:10.9349,36.228287730953,42.82785615878869 -256.328,2024/05/28 15:41:11.1819,36.228287730953,42.82785615878869 -256.574,2024/05/28 15:41:11.4279,36.228287730953,42.82785615878869 -256.821,2024/05/28 15:41:11.6749,36.228287730953,42.82785615878869 -257.067,2024/05/28 15:41:11.9209,36.228287730953,42.82785615878869 -257.215,2024/05/28 15:41:12.0689,36.228287730953,42.82785615878869 -257.313,2024/05/28 15:41:12.1669,36.228287730953,42.82785615878869 -257.56,2024/05/28 15:41:12.4139,36.228287730953,42.82785615878869 -257.806,2024/05/28 15:41:12.6599,36.228287730953,42.82785615878869 -257.954,2024/05/28 15:41:12.8079,36.228287730953,42.82785615878869 -258.052,2024/05/28 15:41:12.9059,36.228287730953,42.82785615878869 -258.299,2024/05/28 15:41:13.1529,36.228287730953,42.82785615878869 -258.446,2024/05/28 15:41:13.2999,36.228287730953,42.82785615878869 -258.545,2024/05/28 15:41:13.3989,36.228287730953,42.82785615878869 -258.791,2024/05/28 15:41:13.6449,36.228287730953,42.82785615878869 -259.038,2024/05/28 15:41:13.8919,36.228287730953,42.82785615878869 -259.187,2024/05/28 15:41:14.0409,36.228287730953,42.82785615878869 -259.283,2024/05/28 15:41:14.1369,36.228287730953,42.82785615878869 -259.529,2024/05/28 15:41:14.3829,36.228287730953,42.82785615878869 -259.678,2024/05/28 15:41:14.5319,36.228287730953,42.82785615878869 -259.776,2024/05/28 15:41:14.6299,36.228287730953,42.82785615878869 -260.417,2024/05/28 15:41:15.2709,36.228287730953,42.82785615878869 -260.515,2024/05/28 15:41:15.3689,36.228287730953,42.82785615878869 -260.761,2024/05/28 15:41:15.6149,36.228287730953,42.82785615878869 -261.007,2024/05/28 15:41:15.8609,36.228287730953,42.82785615878869 -261.155,2024/05/28 15:41:16.0089,36.228287730953,42.82785615878869 -261.254,2024/05/28 15:41:16.1079,36.228287730953,42.82785615878869 -261.5,2024/05/28 15:41:16.3539,36.228287730953,42.82785615878869 -261.648,2024/05/28 15:41:16.5019,36.228287730953,42.82785615878869 -261.746,2024/05/28 15:41:16.5999,36.228287730953,42.82785615878869 -261.993,2024/05/28 15:41:16.8469,36.228287730953,42.82785615878869 -262.14,2024/05/28 15:41:16.9939,36.228287730953,42.82785615878869 -262.239,2024/05/28 15:41:17.0929,36.228287730953,42.82785615878869 -262.485,2024/05/28 15:41:17.3389,36.228287730953,42.82785615878869 -262.731,2024/05/28 15:41:17.5849,36.228287730953,42.82785615878869 -262.88,2024/05/28 15:41:17.7339,36.228287730953,42.82785615878869 -262.977,2024/05/28 15:41:17.8309,36.228287730953,42.82785615878869 -263.224,2024/05/28 15:41:18.0779,36.228287730953,42.82785615878869 -263.371,2024/05/28 15:41:18.2249,36.228287730953,42.82785615878869 -263.47,2024/05/28 15:41:18.3239,36.228287730953,42.82785615878869 -263.716,2024/05/28 15:41:18.5699,36.228287730953,42.82785615878869 -263.864,2024/05/28 15:41:18.7179,36.228287730953,42.82785615878869 -263.963,2024/05/28 15:41:18.8169,36.228287730953,42.82785615878869 -264.209,2024/05/28 15:41:19.0629,36.228287730953,42.82785615878869 -264.455,2024/05/28 15:41:19.3089,36.228287730953,42.82785615878869 -264.603,2024/05/28 15:41:19.4569,36.228287730953,42.82785615878869 -264.702,2024/05/28 15:41:19.5559,36.228287730953,42.82785615878869 -264.948,2024/05/28 15:41:19.8019,36.228287730953,42.82785615878869 -265.195,2024/05/28 15:41:20.0489,36.228287730953,42.82785615878869 -265.342,2024/05/28 15:41:20.1959,36.228287730953,42.82785615878869 -265.44,2024/05/28 15:41:20.2939,36.228287730953,42.82785615878869 -265.588,2024/05/28 15:41:20.4419,36.228287730953,42.82785615878869 -265.686,2024/05/28 15:41:20.5399,36.228287730953,42.82785615878869 -265.933,2024/05/28 15:41:20.7869,36.228287730953,42.82785615878869 -266.179,2024/05/28 15:41:21.0329,36.228287730953,42.82785615878869 -266.327,2024/05/28 15:41:21.1809,36.228287730953,42.82785615878869 -266.426,2024/05/28 15:41:21.2799,36.228287730953,42.82785615878869 -266.672,2024/05/28 15:41:21.5259,36.228287730953,42.82785615878869 -266.819,2024/05/28 15:41:21.6729,36.228287730953,42.82785615878869 -266.918,2024/05/28 15:41:21.7719,36.228287730953,42.82785615878869 -267.312,2024/05/28 15:41:22.1659,36.228287730953,42.82785615878869 -267.656,2024/05/28 15:41:22.5099,36.228287730953,42.82785615878869 -267.904,2024/05/28 15:41:22.7579,36.228287730953,42.82785615878869 -268.051,2024/05/28 15:41:22.9049,36.228287730953,42.82785615878869 -268.149,2024/05/28 15:41:23.0029,36.228287730953,42.82785615878869 -268.395,2024/05/28 15:41:23.2489,36.228287730953,42.82785615878869 -268.544,2024/05/28 15:41:23.3979,36.228287730953,42.82785615878869 -268.642,2024/05/28 15:41:23.4959,36.228287730953,42.82785615878869 -268.888,2024/05/28 15:41:23.7419,36.228287730953,42.82785615878869 -269.036,2024/05/28 15:41:23.8899,36.228287730953,42.82785615878869 -269.134,2024/05/28 15:41:23.9879,36.228287730953,42.82785615878869 -269.381,2024/05/28 15:41:24.2349,36.228287730953,42.82785615878869 -269.627,2024/05/28 15:41:24.4809,36.228287730953,42.82785615878869 -269.775,2024/05/28 15:41:24.6289,36.228287730953,42.82785615878869 -269.873,2024/05/28 15:41:24.7269,36.228287730953,42.82785615878869 -270.12,2024/05/28 15:41:24.9739,36.228287730953,42.82785615878869 -270.514,2024/05/28 15:41:25.3679,36.228287730953,42.82785615878869 -270.859,2024/05/28 15:41:25.7129,36.228287730953,42.82785615878869 -271.006,2024/05/28 15:41:25.8599,36.228287730953,42.82785615878869 -271.105,2024/05/28 15:41:25.9589,36.228287730953,42.82785615878869 -271.351,2024/05/28 15:41:26.2049,36.228287730953,42.82785615878869 -271.499,2024/05/28 15:41:26.3529,36.228287730953,42.82785615878869 -271.598,2024/05/28 15:41:26.4519,36.228287730953,42.82785615878869 -271.843,2024/05/28 15:41:26.6969,36.228287730953,42.82785615878869 -272.089,2024/05/28 15:41:26.9429,36.228287730953,42.82785615878869 -272.238,2024/05/28 15:41:27.0919,36.228287730953,42.82785615878869 -272.336,2024/05/28 15:41:27.1899,36.228287730953,42.82785615878869 -272.582,2024/05/28 15:41:27.4359,36.228287730953,42.82785615878869 -272.73,2024/05/28 15:41:27.5839,36.228287730953,42.82785615878869 -272.829,2024/05/28 15:41:27.6829,36.228287730953,42.82785615878869 -273.075,2024/05/28 15:41:27.9289,36.228287730953,42.82785615878869 -273.223,2024/05/28 15:41:28.0769,36.228287730953,42.82785615878869 -273.321,2024/05/28 15:41:28.1749,36.228287730953,42.82785615878869 -273.567,2024/05/28 15:41:28.4209,36.228287730953,42.82785615878869 -273.716,2024/05/28 15:41:28.5699,36.228287730953,42.82785615878869 -273.813,2024/05/28 15:41:28.6669,36.228287730953,42.82785615878869 -274.06,2024/05/28 15:41:28.9139,36.228287730953,42.82785615878869 -274.306,2024/05/28 15:41:29.1599,36.228287730953,42.82785615878869 -274.454,2024/05/28 15:41:29.3079,36.228287730953,42.82785615878869 -274.552,2024/05/28 15:41:29.4059,36.228287730953,42.82785615878869 -274.799,2024/05/28 15:41:29.6529,36.228287730953,42.82785615878869 -274.946,2024/05/28 15:41:29.7999,36.228287730953,42.82785615878869 -275.045,2024/05/28 15:41:29.8989,36.228287730953,42.82785615878869 -275.292,2024/05/28 15:41:30.1459,36.228287730953,42.82785615878869 -275.538,2024/05/28 15:41:30.3919,36.228287730953,42.82785615878869 -275.686,2024/05/28 15:41:30.5399,36.228287730953,42.82785615878869 -275.784,2024/05/28 15:41:30.6379,36.228287730953,42.82785615878869 -276.031,2024/05/28 15:41:30.8849,36.228287730953,42.82785615878869 -276.178,2024/05/28 15:41:31.0319,36.228287730953,42.82785615878869 -276.277,2024/05/28 15:41:31.1309,36.228287730953,42.82785615878869 -276.522,2024/05/28 15:41:31.3759,36.228287730953,42.82785615878869 -276.769,2024/05/28 15:41:31.6229,36.228287730953,42.82785615878869 -277.015,2024/05/28 15:41:31.8689,36.228287730953,42.82785615878869 -277.164,2024/05/28 15:41:32.0179,36.228287730953,42.82785615878869 -277.265,2024/05/28 15:41:32.1189,36.228287730953,42.82785615878869 -277.508,2024/05/28 15:41:32.3619,36.228287730953,42.82785615878869 -277.655,2024/05/28 15:41:32.5089,36.228287730953,42.82785615878869 -277.754,2024/05/28 15:41:32.6079,36.228287730953,42.82785615878869 -278.0,2024/05/28 15:41:32.8539,36.228287730953,42.82785615878869 -278.247,2024/05/28 15:41:33.1009,36.228287730953,42.82785615878869 -278.394,2024/05/28 15:41:33.2479,36.228287730953,42.82785615878869 -278.493,2024/05/28 15:41:33.3469,36.228287730953,42.82785615878869 -278.739,2024/05/28 15:41:33.5929,36.228287730953,42.82785615878869 -278.887,2024/05/28 15:41:33.7409,36.228287730953,42.82785615878869 -278.986,2024/05/28 15:41:33.8399,36.228287730953,42.82785615878869 -279.232,2024/05/28 15:41:34.0859,36.228287730953,42.82785615878869 -279.478,2024/05/28 15:41:34.3319,36.228287730953,42.82785615878869 -279.626,2024/05/28 15:41:34.4799,36.228287730953,42.82785615878869 -279.725,2024/05/28 15:41:34.5789,36.228287730953,42.82785615878869 -279.97,2024/05/28 15:41:34.8239,36.228287730953,42.82785615878869 -280.118,2024/05/28 15:41:34.9719,36.228287730953,42.82785615878869 -280.857,2024/05/28 15:41:35.7109,36.228287730953,42.82785615878869 -281.202,2024/05/28 15:41:36.0559,36.228287730953,42.82785615878869 -281.35,2024/05/28 15:41:36.2039,36.228287730953,42.82785615878869 -281.448,2024/05/28 15:41:36.3019,36.228287730953,42.82785615878869 -281.695,2024/05/28 15:41:36.5489,36.228287730953,42.82785615878869 -281.941,2024/05/28 15:41:36.7949,36.228287730953,42.82785615878869 -282.089,2024/05/28 15:41:36.9429,36.228287730953,42.82785615878869 -282.187,2024/05/28 15:41:37.0409,36.228287730953,42.82785615878869 -282.434,2024/05/28 15:41:37.2879,36.228287730953,42.82785615878869 -282.581,2024/05/28 15:41:37.4349,36.228287730953,42.82785615878869 -282.679,2024/05/28 15:41:37.5329,36.228287730953,42.82785615878869 -282.925,2024/05/28 15:41:37.7789,36.228287730953,42.82785615878869 -283.319,2024/05/28 15:41:38.1729,36.228287730953,42.82785615878869 -283.665,2024/05/28 15:41:38.5189,36.228287730953,42.82785615878869 -283.911,2024/05/28 15:41:38.7649,36.228287730953,42.82785615878869 -284.059,2024/05/28 15:41:38.9129,36.228287730953,42.82785615878869 -284.157,2024/05/28 15:41:39.0109,36.228287730953,42.82785615878869 -284.404,2024/05/28 15:41:39.2579,36.228287730953,42.82785615878869 -284.551,2024/05/28 15:41:39.4049,36.228287730953,42.82785615878869 -284.65,2024/05/28 15:41:39.5039,36.228287730953,42.82785615878869 -284.896,2024/05/28 15:41:39.7499,36.228287730953,42.82785615878869 -285.143,2024/05/28 15:41:39.9969,36.228287730953,42.82785615878869 -285.29,2024/05/28 15:41:40.1439,36.228287730953,42.82785615878869 -285.389,2024/05/28 15:41:40.2429,36.228287730953,42.82785615878869 -285.635,2024/05/28 15:41:40.4889,36.228287730953,42.82785615878869 -285.881,2024/05/28 15:41:40.7349,36.228287730953,42.82785615878869 -286.028,2024/05/28 15:41:40.8819,36.228287730953,42.82785615878869 -286.127,2024/05/28 15:41:40.9809,36.228287730953,42.82785615878869 -286.275,2024/05/28 15:41:41.1289,36.228287730953,42.82785615878869 -286.373,2024/05/28 15:41:41.2269,36.228287730953,42.82785615878869 -286.62,2024/05/28 15:41:41.4739,36.228287730953,42.82785615878869 -286.866,2024/05/28 15:41:41.7199,36.228287730953,42.82785615878869 -287.014,2024/05/28 15:41:41.8679,36.228287730953,42.82785615878869 -287.112,2024/05/28 15:41:41.9659,36.228287730953,42.82785615878869 -287.359,2024/05/28 15:41:42.2129,36.228287730953,42.82785615878869 -287.506,2024/05/28 15:41:42.3599,36.228287730953,42.82785615878869 -287.605,2024/05/28 15:41:42.4589,36.228287730953,42.82785615878869 -287.851,2024/05/28 15:41:42.7049,36.228287730953,42.82785615878869 -287.999,2024/05/28 15:41:42.8529,36.228287730953,42.82785615878869 -288.098,2024/05/28 15:41:42.9519,36.228287730953,42.82785615878869 -288.344,2024/05/28 15:41:43.1979,36.228287730953,42.82785615878869 -288.59,2024/05/28 15:41:43.4439,36.228287730953,42.82785615878869 -288.738,2024/05/28 15:41:43.5919,36.228287730953,42.82785615878869 -288.837,2024/05/28 15:41:43.6909,36.228287730953,42.82785615878869 -289.083,2024/05/28 15:41:43.9369,36.228287730953,42.82785615878869 -289.231,2024/05/28 15:41:44.0849,36.228287730953,42.82785615878869 -289.328,2024/05/28 15:41:44.1819,36.228287730953,42.82785615878869 -289.576,2024/05/28 15:41:44.4299,36.228287730953,42.82785615878869 -289.969,2024/05/28 15:41:44.8229,36.228287730953,42.82785615878869 -290.314,2024/05/28 15:41:45.1679,36.228287730953,42.82785615878869 -290.461,2024/05/28 15:41:45.3149,36.228287730953,42.82785615878869 -290.56,2024/05/28 15:41:45.4139,36.228287730953,42.82785615878869 -290.807,2024/05/28 15:41:45.6609,36.228287730953,42.82785615878869 -291.201,2024/05/28 15:41:46.0549,36.228287730953,42.82785615878869 -291.546,2024/05/28 15:41:46.3999,36.228287730953,42.82785615878869 -291.792,2024/05/28 15:41:46.6459,36.228287730953,42.82785615878869 -291.94,2024/05/28 15:41:46.7939,36.228287730953,42.82785615878869 -292.038,2024/05/28 15:41:46.8919,36.228287730953,42.82785615878869 -292.285,2024/05/28 15:41:47.1389,36.228287730953,42.82785615878869 -292.432,2024/05/28 15:41:47.2859,36.228287730953,42.82785615878869 -293.024,2024/05/28 15:41:47.8779,36.228287730953,42.82785615878869 -293.17,2024/05/28 15:41:48.0239,36.228287730953,42.82785615878869 -293.27,2024/05/28 15:41:48.1239,36.228287730953,42.82785615878869 -293.909,2024/05/28 15:41:48.7629,36.228287730953,42.82785615878869 -294.008,2024/05/28 15:41:48.8619,36.228287730953,42.82785615878869 -294.254,2024/05/28 15:41:49.1079,36.228287730953,42.82785615878869 -294.501,2024/05/28 15:41:49.3549,36.228287730953,42.82785615878869 -294.648,2024/05/28 15:41:49.5019,36.228287730953,42.82785615878869 -294.747,2024/05/28 15:41:49.6009,36.228287730953,42.82785615878869 -294.993,2024/05/28 15:41:49.8469,36.228287730953,42.82785615878869 -295.141,2024/05/28 15:41:49.9949,36.228287730953,42.82785615878869 -295.24,2024/05/28 15:41:50.0939,36.228287730953,42.82785615878869 -295.486,2024/05/28 15:41:50.3399,36.228287730953,42.82785615878869 -295.732,2024/05/28 15:41:50.5859,36.228287730953,42.82785615878869 -295.88,2024/05/28 15:41:50.7339,36.228287730953,42.82785615878869 -295.979,2024/05/28 15:41:50.8329,36.228287730953,42.82785615878869 -296.225,2024/05/28 15:41:51.0789,36.228287730953,42.82785615878869 -296.471,2024/05/28 15:41:51.3249,36.228287730953,42.82785615878869 -296.618,2024/05/28 15:41:51.4719,36.228287730953,42.82785615878869 -296.718,2024/05/28 15:41:51.5719,36.228287730953,42.82785615878869 -296.963,2024/05/28 15:41:51.8169,36.228287730953,42.82785615878869 -297.111,2024/05/28 15:41:51.9649,36.228287730953,42.82785615878869 -297.209,2024/05/28 15:41:52.0629,36.228287730953,42.82785615878869 -297.456,2024/05/28 15:41:52.3099,36.228287730953,42.82785615878869 -297.702,2024/05/28 15:41:52.5559,36.228287730953,42.82785615878869 -297.85,2024/05/28 15:41:52.7039,36.228287730953,42.82785615878869 -297.948,2024/05/28 15:41:52.8019,36.228287730953,42.82785615878869 -298.195,2024/05/28 15:41:53.0489,36.228287730953,42.82785615878869 -298.342,2024/05/28 15:41:53.1959,36.228287730953,42.82785615878869 -298.441,2024/05/28 15:41:53.2949,36.228287730953,42.82785615878869 -299.081,2024/05/28 15:41:53.9349,36.228287730953,42.82785615878869 -299.18,2024/05/28 15:41:54.0339,36.228287730953,42.82785615878869 -299.426,2024/05/28 15:41:54.2799,36.228287730953,42.82785615878869 -299.673,2024/05/28 15:41:54.5269,36.228287730953,42.82785615878869 -299.821,2024/05/28 15:41:54.6749,36.228287730953,42.82785615878869 -299.919,2024/05/28 15:41:54.7729,36.228287730953,42.82785615878869 -300.312,2024/05/28 15:41:55.1659,36.228287730953,42.82785615878869 -301.051,2024/05/28 15:41:55.9049,36.228287730953,42.82785615878869 -301.15,2024/05/28 15:41:56.0039,36.228287730953,42.82785615878869 -301.396,2024/05/28 15:41:56.2499,36.228287730953,42.82785615878869 -301.643,2024/05/28 15:41:56.4969,36.228287730953,42.82785615878869 -301.889,2024/05/28 15:41:56.7429,36.228287730953,42.82785615878869 -302.037,2024/05/28 15:41:56.8909,36.228287730953,42.82785615878869 -302.135,2024/05/28 15:41:56.9889,36.228287730953,42.82785615878869 -302.283,2024/05/28 15:41:57.1369,36.228287730953,42.82785615878869 -302.382,2024/05/28 15:41:57.2359,36.228287730953,42.82785615878869 -302.628,2024/05/28 15:41:57.4819,36.228287730953,42.82785615878869 -302.874,2024/05/28 15:41:57.7279,36.228287730953,42.82785615878869 -303.022,2024/05/28 15:41:57.8759,36.228287730953,42.82785615878869 -303.121,2024/05/28 15:41:57.9749,36.228287730953,42.82785615878869 -303.366,2024/05/28 15:41:58.2199,36.228287730953,42.82785615878869 -303.613,2024/05/28 15:41:58.4669,36.228287730953,42.82785615878869 -303.76,2024/05/28 15:41:58.6139,36.228287730953,42.82785615878869 -303.859,2024/05/28 15:41:58.7129,36.228287730953,42.82785615878869 -304.105,2024/05/28 15:41:58.9589,36.228287730953,42.82785615878869 -304.253,2024/05/28 15:41:59.1069,36.228287730953,42.82785615878869 -304.352,2024/05/28 15:41:59.2059,36.228287730953,42.82785615878869 -304.598,2024/05/28 15:41:59.4519,36.228287730953,42.82785615878869 -304.844,2024/05/28 15:41:59.6979,36.228287730953,42.82785615878869 -304.992,2024/05/28 15:41:59.8459,36.228287730953,42.82785615878869 -305.091,2024/05/28 15:41:59.9449,36.228287730953,42.82785615878869 -305.337,2024/05/28 15:42:00.1909,36.228287730953,42.82785615878869 -305.485,2024/05/28 15:42:00.3389,36.228287730953,42.82785615878869 -305.583,2024/05/28 15:42:00.4369,36.228287730953,42.82785615878869 -305.83,2024/05/28 15:42:00.6839,36.228287730953,42.82785615878869 -306.076,2024/05/28 15:42:00.9299,36.228287730953,42.82785615878869 -306.223,2024/05/28 15:42:01.0769,36.228287730953,42.82785615878869 -306.322,2024/05/28 15:42:01.1759,36.228287730953,42.82785615878869 -306.568,2024/05/28 15:42:01.4219,36.228287730953,42.82785615878869 -306.715,2024/05/28 15:42:01.5689,36.228287730953,42.82785615878869 -306.814,2024/05/28 15:42:01.6679,36.228287730953,42.82785615878869 -307.061,2024/05/28 15:42:01.9149,36.228287730953,42.82785615878869 -307.307,2024/05/28 15:42:02.1609,36.228287730953,42.82785615878869 -307.454,2024/05/28 15:42:02.3079,36.228287730953,42.82785615878869 -307.553,2024/05/28 15:42:02.4069,36.228287730953,42.82785615878869 -307.8,2024/05/28 15:42:02.6539,36.228287730953,42.82785615878869 -308.046,2024/05/28 15:42:02.8999,36.228287730953,42.82785615878869 -308.193,2024/05/28 15:42:03.0469,36.228287730953,42.82785615878869 -308.292,2024/05/28 15:42:03.1459,36.228287730953,42.82785615878869 -308.539,2024/05/28 15:42:03.3929,36.228287730953,42.82785615878869 -308.785,2024/05/28 15:42:03.6389,36.228287730953,42.82785615878869 -308.933,2024/05/28 15:42:03.7869,36.228287730953,42.82785615878869 -309.031,2024/05/28 15:42:03.8849,36.228287730953,42.82785615878869 -309.671,2024/05/28 15:42:04.5249,36.228287730953,42.82785615878869 -309.77,2024/05/28 15:42:04.6239,36.228287730953,42.82785615878869 -310.017,2024/05/28 15:42:04.8709,36.228287730953,42.82785615878869 -310.163,2024/05/28 15:42:05.0169,36.228287730953,42.82785615878869 -310.263,2024/05/28 15:42:05.1169,36.228287730953,42.82785615878869 -310.508,2024/05/28 15:42:05.3619,36.228287730953,42.82785615878869 -310.902,2024/05/28 15:42:05.7559,36.228287730953,42.82785615878869 -311.247,2024/05/28 15:42:06.1009,36.228287730953,42.82785615878869 -311.494,2024/05/28 15:42:06.3479,36.228287730953,42.82785615878869 -311.641,2024/05/28 15:42:06.4949,36.228287730953,42.82785615878869 -311.74,2024/05/28 15:42:06.5939,36.228287730953,42.82785615878869 -311.986,2024/05/28 15:42:06.8399,36.228287730953,42.82785615878869 -312.233,2024/05/28 15:42:07.0869,36.228287730953,42.82785615878869 -312.379,2024/05/28 15:42:07.2329,36.228287730953,42.82785615878869 -312.479,2024/05/28 15:42:07.3329,36.228287730953,42.82785615878869 -312.726,2024/05/28 15:42:07.5799,36.228287730953,42.82785615878869 -312.972,2024/05/28 15:42:07.8259,36.228287730953,42.82785615878869 -313.119,2024/05/28 15:42:07.9729,36.228287730953,42.82785615878869 -313.217,2024/05/28 15:42:08.0709,36.228287730953,42.82785615878869 -313.464,2024/05/28 15:42:08.3179,36.228287730953,42.82785615878869 -313.611,2024/05/28 15:42:08.4649,36.228287730953,42.82785615878869 -313.71,2024/05/28 15:42:08.5639,36.228287730953,42.82785615878869 -313.956,2024/05/28 15:42:08.8099,36.228287730953,42.82785615878869 -314.203,2024/05/28 15:42:09.0569,36.228287730953,42.82785615878869 -314.35,2024/05/28 15:42:09.2039,36.228287730953,42.82785615878869 -314.449,2024/05/28 15:42:09.3029,36.228287730953,42.82785615878869 -314.695,2024/05/28 15:42:09.5489,36.228287730953,42.82785615878869 -314.843,2024/05/28 15:42:09.6969,36.228287730953,42.82785615878869 -314.942,2024/05/28 15:42:09.7959,36.228287730953,42.82785615878869 -315.188,2024/05/28 15:42:10.0419,36.228287730953,42.82785615878869 -315.434,2024/05/28 15:42:10.2879,36.228287730953,42.82785615878869 -315.583,2024/05/28 15:42:10.4369,36.228287730953,42.82785615878869 -315.681,2024/05/28 15:42:10.5349,36.228287730953,42.82785615878869 -315.927,2024/05/28 15:42:10.7809,36.228287730953,42.82785615878869 -316.074,2024/05/28 15:42:10.9279,36.228287730953,42.82785615878869 -316.173,2024/05/28 15:42:11.0269,36.228287730953,42.82785615878869 -316.42,2024/05/28 15:42:11.2739,36.228287730953,42.82785615878869 -316.666,2024/05/28 15:42:11.5199,36.228287730953,42.82785615878869 -316.813,2024/05/28 15:42:11.6669,36.228287730953,42.82785615878869 -316.912,2024/05/28 15:42:11.7659,36.228287730953,42.82785615878869 -317.159,2024/05/28 15:42:12.0129,36.228287730953,42.82785615878869 -317.305,2024/05/28 15:42:12.1589,36.228287730953,42.82785615878869 -317.404,2024/05/28 15:42:12.2579,36.228287730953,42.82785615878869 -317.65,2024/05/28 15:42:12.5039,36.228287730953,42.82785615878869 -317.897,2024/05/28 15:42:12.7509,36.228287730953,42.82785615878869 -318.044,2024/05/28 15:42:12.8979,36.228287730953,42.82785615878869 -318.143,2024/05/28 15:42:12.9969,36.228287730953,42.82785615878869 -318.389,2024/05/28 15:42:13.2429,36.228287730953,42.82785615878869 -318.636,2024/05/28 15:42:13.4899,36.228287730953,42.82785615878869 -318.882,2024/05/28 15:42:13.7359,36.228287730953,42.82785615878869 -319.029,2024/05/28 15:42:13.8829,36.228287730953,42.82785615878869 -319.129,2024/05/28 15:42:13.9829,36.228287730953,42.82785615878869 -319.375,2024/05/28 15:42:14.2289,36.228287730953,42.82785615878869 -319.768,2024/05/28 15:42:14.6219,36.228287730953,42.82785615878869 -320.507,2024/05/28 15:42:15.3609,36.228287730953,42.82785615878869 -320.606,2024/05/28 15:42:15.4599,36.228287730953,42.82785615878869 -321.246,2024/05/28 15:42:16.0999,36.228287730953,42.82785615878869 -321.344,2024/05/28 15:42:16.1979,36.228287730953,42.82785615878869 -321.591,2024/05/28 15:42:16.4449,36.228287730953,42.82785615878869 -321.837,2024/05/28 15:42:16.6909,36.228287730953,42.82785615878869 -321.985,2024/05/28 15:42:16.8389,36.228287730953,42.82785615878869 -322.083,2024/05/28 15:42:16.9369,36.228287730953,42.82785615878869 -322.724,2024/05/28 15:42:17.5779,36.228287730953,42.82785615878869 -322.822,2024/05/28 15:42:17.6759,36.228287730953,42.82785615878869 -323.069,2024/05/28 15:42:17.9229,36.228287730953,42.82785615878869 -323.215,2024/05/28 15:42:18.0689,36.228287730953,42.82785615878869 -323.315,2024/05/28 15:42:18.1689,36.228287730953,42.82785615878869 -323.561,2024/05/28 15:42:18.4149,36.228287730953,42.82785615878869 -323.955,2024/05/28 15:42:18.8089,36.228287730953,42.82785615878869 -324.301,2024/05/28 15:42:19.1549,36.228287730953,42.82785615878869 -324.548,2024/05/28 15:42:19.4019,36.228287730953,42.82785615878869 -324.694,2024/05/28 15:42:19.5479,36.228287730953,42.82785615878869 -324.792,2024/05/28 15:42:19.6459,36.228287730953,42.82785615878869 -325.039,2024/05/28 15:42:19.8929,36.228287730953,42.82785615878869 -325.186,2024/05/28 15:42:20.0399,36.228287730953,42.82785615878869 -325.285,2024/05/28 15:42:20.1389,36.228287730953,42.82785615878869 -325.531,2024/05/28 15:42:20.3849,36.228287730953,42.82785615878869 -325.778,2024/05/28 15:42:20.6319,36.228287730953,42.82785615878869 -325.925,2024/05/28 15:42:20.7789,36.228287730953,42.82785615878869 -326.024,2024/05/28 15:42:20.8779,36.228287730953,42.82785615878869 -326.27,2024/05/28 15:42:21.1239,36.228287730953,42.82785615878869 -326.517,2024/05/28 15:42:21.3709,36.228287730953,42.82785615878869 -326.663,2024/05/28 15:42:21.5169,36.228287730953,42.82785615878869 -326.763,2024/05/28 15:42:21.6169,36.228287730953,42.82785615878869 -327.009,2024/05/28 15:42:21.8629,36.228287730953,42.82785615878869 -327.156,2024/05/28 15:42:22.0099,36.228287730953,42.82785615878869 -327.256,2024/05/28 15:42:22.1099,36.228287730953,42.82785615878869 -327.895,2024/05/28 15:42:22.7489,36.228287730953,42.82785615878869 -327.995,2024/05/28 15:42:22.8489,36.228287730953,42.82785615878869 -328.24,2024/05/28 15:42:23.0939,36.228287730953,42.82785615878869 -328.487,2024/05/28 15:42:23.3409,36.228287730953,42.82785615878869 -328.733,2024/05/28 15:42:23.5869,36.228287730953,42.82785615878869 -328.88,2024/05/28 15:42:23.7339,36.228287730953,42.82785615878869 -328.979,2024/05/28 15:42:23.8329,36.228287730953,42.82785615878869 -329.127,2024/05/28 15:42:23.9809,36.228287730953,42.82785615878869 -329.226,2024/05/28 15:42:24.0799,36.228287730953,42.82785615878869 -329.865,2024/05/28 15:42:24.7189,36.228287730953,42.82785615878869 -329.965,2024/05/28 15:42:24.8189,36.228287730953,42.82785615878869 -330.358,2024/05/28 15:42:25.2119,36.228287730953,42.82785615878869 -330.704,2024/05/28 15:42:25.5579,36.228287730953,42.82785615878869 -330.95,2024/05/28 15:42:25.8039,36.228287730953,42.82785615878869 -331.097,2024/05/28 15:42:25.9509,36.228287730953,42.82785615878869 -331.195,2024/05/28 15:42:26.0489,36.228287730953,42.82785615878869 -331.443,2024/05/28 15:42:26.2969,36.228287730953,42.82785615878869 -331.589,2024/05/28 15:42:26.4429,36.228287730953,42.82785615878869 -331.688,2024/05/28 15:42:26.5419,36.228287730953,42.82785615878869 -331.934,2024/05/28 15:42:26.7879,36.228287730953,42.82785615878869 -332.181,2024/05/28 15:42:27.0349,36.228287730953,42.82785615878869 -332.328,2024/05/28 15:42:27.1819,36.228287730953,42.82785615878869 -332.427,2024/05/28 15:42:27.2809,36.228287730953,42.82785615878869 -332.674,2024/05/28 15:42:27.5279,36.228287730953,42.82785615878869 -332.92,2024/05/28 15:42:27.7739,36.228287730953,42.82785615878869 -333.067,2024/05/28 15:42:27.9209,36.228287730953,42.82785615878869 -333.166,2024/05/28 15:42:28.0199,36.228287730953,42.82785615878869 -333.413,2024/05/28 15:42:28.2669,36.228287730953,42.82785615878869 -333.561,2024/05/28 15:42:28.4149,36.228287730953,42.82785615878869 -333.659,2024/05/28 15:42:28.5129,36.228287730953,42.82785615878869 -333.904,2024/05/28 15:42:28.7579,36.228287730953,42.82785615878869 -334.151,2024/05/28 15:42:29.0049,36.228287730953,42.82785615878869 -334.298,2024/05/28 15:42:29.1519,36.228287730953,42.82785615878869 -334.397,2024/05/28 15:42:29.2509,36.228287730953,42.82785615878869 -334.644,2024/05/28 15:42:29.4979,36.228287730953,42.82785615878869 -334.89,2024/05/28 15:42:29.7439,36.228287730953,42.82785615878869 -335.037,2024/05/28 15:42:29.8909,36.228287730953,42.82785615878869 -335.136,2024/05/28 15:42:29.9899,36.228287730953,42.82785615878869 -335.382,2024/05/28 15:42:30.2359,36.228287730953,42.82785615878869 -335.53,2024/05/28 15:42:30.3839,36.228287730953,42.82785615878869 -335.628,2024/05/28 15:42:30.4819,36.228287730953,42.82785615878869 -335.875,2024/05/28 15:42:30.7289,36.228287730953,42.82785615878869 -336.121,2024/05/28 15:42:30.9749,36.228287730953,42.82785615878869 -336.269,2024/05/28 15:42:31.1229,36.228287730953,42.82785615878869 -336.367,2024/05/28 15:42:31.2209,36.228287730953,42.82785615878869 -336.614,2024/05/28 15:42:31.4679,36.228287730953,42.82785615878869 -336.86,2024/05/28 15:42:31.7139,36.228287730953,42.82785615878869 -337.007,2024/05/28 15:42:31.8609,36.228287730953,42.82785615878869 -337.106,2024/05/28 15:42:31.9599,36.228287730953,42.82785615878869 -337.353,2024/05/28 15:42:32.2069,36.228287730953,42.82785615878869 -337.499,2024/05/28 15:42:32.3529,36.228287730953,42.82785615878869 -337.599,2024/05/28 15:42:32.4529,36.228287730953,42.82785615878869 -337.846,2024/05/28 15:42:32.6999,36.228287730953,42.82785615878869 -338.092,2024/05/28 15:42:32.9459,36.228287730953,42.82785615878869 -338.239,2024/05/28 15:42:33.0929,36.228287730953,42.82785615878869 -338.338,2024/05/28 15:42:33.1919,36.228287730953,42.82785615878869 -338.584,2024/05/28 15:42:33.4379,36.228287730953,42.82785615878869 -338.83,2024/05/28 15:42:33.6839,36.228287730953,42.82785615878869 -338.978,2024/05/28 15:42:33.8319,36.228287730953,42.82785615878869 -339.469,2024/05/28 15:42:34.3229,36.228287730953,42.82785615878869 -339.569,2024/05/28 15:42:34.4229,36.228287730953,42.82785615878869 -339.816,2024/05/28 15:42:34.6699,36.228287730953,42.82785615878869 -340.062,2024/05/28 15:42:34.9159,36.228287730953,42.82785615878869 -340.209,2024/05/28 15:42:35.0629,36.228287730953,42.82785615878869 -340.308,2024/05/28 15:42:35.1619,36.228287730953,42.82785615878869 -340.948,2024/05/28 15:42:35.8019,36.228287730953,42.82785615878869 -341.047,2024/05/28 15:42:35.9009,36.228287730953,42.82785615878869 -341.293,2024/05/28 15:42:36.1469,36.228287730953,42.82785615878869 -341.44,2024/05/28 15:42:36.2939,36.228287730953,42.82785615878869 -341.539,2024/05/28 15:42:36.3929,36.228287730953,42.82785615878869 -341.785,2024/05/28 15:42:36.6389,36.228287730953,42.82785615878869 -341.933,2024/05/28 15:42:36.7869,36.228287730953,42.82785615878869 -342.032,2024/05/28 15:42:36.8859,36.228287730953,42.82785615878869 -342.278,2024/05/28 15:42:37.1319,36.228287730953,42.82785615878869 -342.524,2024/05/28 15:42:37.3779,36.228287730953,42.82785615878869 -342.671,2024/05/28 15:42:37.5249,36.228287730953,42.82785615878869 -342.771,2024/05/28 15:42:37.6249,36.228287730953,42.82785615878869 -343.017,2024/05/28 15:42:37.8709,36.228287730953,42.82785615878869 -343.263,2024/05/28 15:42:38.1169,36.228287730953,42.82785615878869 -343.41,2024/05/28 15:42:38.2639,36.228287730953,42.82785615878869 -343.51,2024/05/28 15:42:38.3639,36.228287730953,42.82785615878869 -343.756,2024/05/28 15:42:38.6099,36.228287730953,42.82785615878869 -343.903,2024/05/28 15:42:38.7569,36.228287730953,42.82785615878869 -344.002,2024/05/28 15:42:38.8559,36.228287730953,42.82785615878869 -344.249,2024/05/28 15:42:39.1029,36.228287730953,42.82785615878869 -344.495,2024/05/28 15:42:39.3489,36.228287730953,42.82785615878869 -344.642,2024/05/28 15:42:39.4959,36.228287730953,42.82785615878869 -344.74,2024/05/28 15:42:39.5939,36.228287730953,42.82785615878869 -344.988,2024/05/28 15:42:39.8419,36.228287730953,42.82785615878869 -345.233,2024/05/28 15:42:40.0869,36.228287730953,42.82785615878869 -345.381,2024/05/28 15:42:40.2349,36.228287730953,42.82785615878869 -345.479,2024/05/28 15:42:40.3329,36.228287730953,42.82785615878869 -345.726,2024/05/28 15:42:40.5799,36.228287730953,42.82785615878869 -345.872,2024/05/28 15:42:40.7259,36.228287730953,42.82785615878869 -345.972,2024/05/28 15:42:40.8259,36.228287730953,42.82785615878869 -346.612,2024/05/28 15:42:41.4659,36.228287730953,42.82785615878869 -346.958,2024/05/28 15:42:41.8119,36.228287730953,42.82785615878869 -347.104,2024/05/28 15:42:41.9579,36.228287730953,42.82785615878869 -347.204,2024/05/28 15:42:42.0579,36.228287730953,42.82785615878869 -347.843,2024/05/28 15:42:42.6969,36.228287730953,42.82785615878869 -347.943,2024/05/28 15:42:42.7969,36.228287730953,42.82785615878869 -348.188,2024/05/28 15:42:43.0419,36.228287730953,42.82785615878869 -348.336,2024/05/28 15:42:43.1899,36.228287730953,42.82785615878869 -348.436,2024/05/28 15:42:43.2899,36.228287730953,42.82785615878869 -348.681,2024/05/28 15:42:43.5349,36.228287730953,42.82785615878869 -348.928,2024/05/28 15:42:43.7819,36.228287730953,42.82785615878869 -349.074,2024/05/28 15:42:43.9279,36.228287730953,42.82785615878869 -349.174,2024/05/28 15:42:44.0279,36.228287730953,42.82785615878869 -349.567,2024/05/28 15:42:44.4209,36.228287730953,42.82785615878869 -349.913,2024/05/28 15:42:44.7669,36.228287730953,42.82785615878869 -350.16,2024/05/28 15:42:45.0139,36.228287730953,42.82785615878869 -350.306,2024/05/28 15:42:45.1599,36.228287730953,42.82785615878869 -350.405,2024/05/28 15:42:45.2589,36.228287730953,42.82785615878869 -350.651,2024/05/28 15:42:45.5049,36.228287730953,42.82785615878869 -350.799,2024/05/28 15:42:45.6529,36.228287730953,42.82785615878869 -350.897,2024/05/28 15:42:45.7509,36.228287730953,42.82785615878869 -351.144,2024/05/28 15:42:45.9979,36.228287730953,42.82785615878869 -351.29,2024/05/28 15:42:46.1439,36.228287730953,42.82785615878869 -351.39,2024/05/28 15:42:46.2439,36.228287730953,42.82785615878869 -351.637,2024/05/28 15:42:46.4909,36.228287730953,42.82785615878869 -351.883,2024/05/28 15:42:46.7369,36.228287730953,42.82785615878869 -352.029,2024/05/28 15:42:46.8829,36.228287730953,42.82785615878869 -352.522,2024/05/28 15:42:47.3759,36.228287730953,42.82785615878869 -352.622,2024/05/28 15:42:47.4759,36.228287730953,42.82785615878869 -352.868,2024/05/28 15:42:47.7219,36.228287730953,42.82785615878869 -353.115,2024/05/28 15:42:47.9689,36.228287730953,42.82785615878869 -353.261,2024/05/28 15:42:48.1149,36.228287730953,42.82785615878869 -353.361,2024/05/28 15:42:48.2149,36.228287730953,42.82785615878869 -353.607,2024/05/28 15:42:48.4609,36.228287730953,42.82785615878869 -353.753,2024/05/28 15:42:48.6069,36.228287730953,42.82785615878869 -354.346,2024/05/28 15:42:49.1999,36.228287730953,42.82785615878869 -354.592,2024/05/28 15:42:49.4459,36.228287730953,42.82785615878869 -354.739,2024/05/28 15:42:49.5929,36.228287730953,42.82785615878869 -354.985,2024/05/28 15:42:49.8389,36.228287730953,42.82785615878869 -355.33,2024/05/28 15:42:50.1839,36.228287730953,42.82785615878869 -355.577,2024/05/28 15:42:50.4309,36.228287730953,42.82785615878869 -355.723,2024/05/28 15:42:50.5769,36.228287730953,42.82785615878869 -356.216,2024/05/28 15:42:51.0699,36.228287730953,42.82785615878869 -356.316,2024/05/28 15:42:51.1699,36.228287730953,42.82785615878869 -356.562,2024/05/28 15:42:51.4159,36.228287730953,42.82785615878869 -356.709,2024/05/28 15:42:51.5629,36.228287730953,42.82785615878869 -356.809,2024/05/28 15:42:51.6629,36.228287730953,42.82785615878869 -357.055,2024/05/28 15:42:51.9089,36.228287730953,42.82785615878869 -357.301,2024/05/28 15:42:52.1549,36.228287730953,42.82785615878869 -357.448,2024/05/28 15:42:52.3019,36.228287730953,42.82785615878869 -357.548,2024/05/28 15:42:52.4019,36.228287730953,42.82785615878869 -357.794,2024/05/28 15:42:52.6479,36.228287730953,42.82785615878869 -357.941,2024/05/28 15:42:52.7949,36.228287730953,42.82785615878869 -358.04,2024/05/28 15:42:52.8939,36.228287730953,42.82785615878869 -358.286,2024/05/28 15:42:53.1399,36.228287730953,42.82785615878869 -358.532,2024/05/28 15:42:53.3859,36.228287730953,42.82785615878869 -358.679,2024/05/28 15:42:53.5329,36.228287730953,42.82785615878869 -358.778,2024/05/28 15:42:53.6319,36.228287730953,42.82785615878869 -359.025,2024/05/28 15:42:53.8789,36.228287730953,42.82785615878869 -359.171,2024/05/28 15:42:54.0249,36.228287730953,42.82785615878869 -359.271,2024/05/28 15:42:54.1249,36.228287730953,42.82785615878869 -359.517,2024/05/28 15:42:54.3709,36.228287730953,42.82785615878869 -359.764,2024/05/28 15:42:54.6179,36.228287730953,42.82785615878869 -359.911,2024/05/28 15:42:54.7649,36.228287730953,42.82785615878869 -360.01,2024/05/28 15:42:54.8639,36.228287730953,42.82785615878869 -360.257,2024/05/28 15:42:55.1109,36.228287730953,42.82785615878869 -360.403,2024/05/28 15:42:55.2569,36.228287730953,42.82785615878869 -360.503,2024/05/28 15:42:55.3569,36.228287730953,42.82785615878869 -360.749,2024/05/28 15:42:55.6029,36.228287730953,42.82785615878869 -360.996,2024/05/28 15:42:55.8499,36.228287730953,42.82785615878869 -361.141,2024/05/28 15:42:55.9949,36.228287730953,42.82785615878869 -361.241,2024/05/28 15:42:56.0949,36.228287730953,42.82785615878869 -361.634,2024/05/28 15:42:56.4879,36.228287730953,42.82785615878869 -361.98,2024/05/28 15:42:56.8339,36.228287730953,42.82785615878869 -362.619,2024/05/28 15:42:57.4729,36.228287730953,42.82785615878869 -362.719,2024/05/28 15:42:57.5729,36.228287730953,42.82785615878869 -362.866,2024/05/28 15:42:57.7199,36.228287730953,42.82785615878869 -362.965,2024/05/28 15:42:57.8189,36.228287730953,42.82785615878869 -363.212,2024/05/28 15:42:58.0659,36.228287730953,42.82785615878869 -363.458,2024/05/28 15:42:58.3119,36.228287730953,42.82785615878869 -363.605,2024/05/28 15:42:58.4589,36.228287730953,42.82785615878869 -363.704,2024/05/28 15:42:58.5579,36.228287730953,42.82785615878869 -363.951,2024/05/28 15:42:58.8049,36.228287730953,42.82785615878869 -364.096,2024/05/28 15:42:58.9499,36.228287730953,42.82785615878869 -364.197,2024/05/28 15:42:59.0509,36.228287730953,42.82785615878869 -364.443,2024/05/28 15:42:59.2969,36.228287730953,42.82785615878869 -364.589,2024/05/28 15:42:59.4429,36.228287730953,42.82785615878869 -364.689,2024/05/28 15:42:59.5429,36.228287730953,42.82785615878869 -364.935,2024/05/28 15:42:59.7889,36.228287730953,42.82785615878869 -365.328,2024/05/28 15:43:00.1819,36.228287730953,42.82785615878869 -365.674,2024/05/28 15:43:00.5279,36.228287730953,42.82785615878869 -365.821,2024/05/28 15:43:00.6749,36.228287730953,42.82785615878869 -365.921,2024/05/28 15:43:00.7749,36.228287730953,42.82785615878869 -366.167,2024/05/28 15:43:01.0209,36.228287730953,42.82785615878869 -366.413,2024/05/28 15:43:01.2669,36.228287730953,42.82785615878869 -366.56,2024/05/28 15:43:01.4139,36.228287730953,42.82785615878869 -366.66,2024/05/28 15:43:01.5139,36.228287730953,42.82785615878869 -366.906,2024/05/28 15:43:01.7599,36.228287730953,42.82785615878869 -367.053,2024/05/28 15:43:01.9069,36.228287730953,42.82785615878869 -367.152,2024/05/28 15:43:02.0059,36.228287730953,42.82785615878869 -367.398,2024/05/28 15:43:02.2519,36.228287730953,42.82785615878869 -367.644,2024/05/28 15:43:02.4979,36.228287730953,42.82785615878869 -367.791,2024/05/28 15:43:02.6449,36.228287730953,42.82785615878869 -367.891,2024/05/28 15:43:02.7449,36.228287730953,42.82785615878869 -368.284,2024/05/28 15:43:03.1379,36.228287730953,42.82785615878869 -368.63,2024/05/28 15:43:03.4839,36.228287730953,42.82785615878869 -369.023,2024/05/28 15:43:03.8769,36.228287730953,42.82785615878869 -369.369,2024/05/28 15:43:04.2229,36.228287730953,42.82785615878869 -369.515,2024/05/28 15:43:04.3689,36.228287730953,42.82785615878869 -369.615,2024/05/28 15:43:04.4689,36.228287730953,42.82785615878869 -369.861,2024/05/28 15:43:04.7149,36.228287730953,42.82785615878869 -370.007,2024/05/28 15:43:04.8609,36.228287730953,42.82785615878869 -370.108,2024/05/28 15:43:04.9619,36.228287730953,42.82785615878869 -370.353,2024/05/28 15:43:05.2069,36.228287730953,42.82785615878869 -370.6,2024/05/28 15:43:05.4539,36.228287730953,42.82785615878869 -370.746,2024/05/28 15:43:05.5999,36.228287730953,42.82785615878869 -371.239,2024/05/28 15:43:06.0929,36.228287730953,42.82785615878869 -371.339,2024/05/28 15:43:06.1929,36.228287730953,42.82785615878869 -371.585,2024/05/28 15:43:06.4389,36.228287730953,42.82785615878869 -371.732,2024/05/28 15:43:06.5859,36.228287730953,42.82785615878869 -371.831,2024/05/28 15:43:06.6849,36.228287730953,42.82785615878869 -372.078,2024/05/28 15:43:06.9319,36.228287730953,42.82785615878869 -372.324,2024/05/28 15:43:07.1779,36.228287730953,42.82785615878869 -372.571,2024/05/28 15:43:07.4249,36.228287730953,42.82785615878869 -372.716,2024/05/28 15:43:07.5699,36.228287730953,42.82785615878869 -372.816,2024/05/28 15:43:07.6699,36.228287730953,42.82785615878869 -372.963,2024/05/28 15:43:07.8169,36.228287730953,42.82785615878869 -373.062,2024/05/28 15:43:07.9159,36.228287730953,42.82785615878869 -373.309,2024/05/28 15:43:08.1629,36.228287730953,42.82785615878869 -373.455,2024/05/28 15:43:08.3089,36.228287730953,42.82785615878869 -373.555,2024/05/28 15:43:08.4089,36.228287730953,42.82785615878869 -374.194,2024/05/28 15:43:09.0479,36.228287730953,42.82785615878869 -374.294,2024/05/28 15:43:09.1479,36.228287730953,42.82785615878869 -374.54,2024/05/28 15:43:09.3939,36.228287730953,42.82785615878869 -374.686,2024/05/28 15:43:09.5399,36.228287730953,42.82785615878869 -374.787,2024/05/28 15:43:09.6409,36.228287730953,42.82785615878869 -375.033,2024/05/28 15:43:09.8869,36.228287730953,42.82785615878869 -375.28,2024/05/28 15:43:10.1339,36.228287730953,42.82785615878869 -375.425,2024/05/28 15:43:10.2789,36.228287730953,42.82785615878869 +0.001,2024/05/28 15:36:54.8549,, +0.001,2024/05/28 15:36:54.8549,, +0.202,2024/05/28 15:36:55.0559,, +0.354,2024/05/28 15:36:55.2079,, +0.448,2024/05/28 15:36:55.3019,, +0.695,2024/05/28 15:36:55.5489,, +0.941,2024/05/28 15:36:55.7949,, +1.093,2024/05/28 15:36:55.9469,, +1.186,2024/05/28 15:36:56.0399,, +1.584,2024/05/28 15:36:56.4379,28.721072403376567, +1.926,2024/05/28 15:36:56.7799,27.887110088550024,47.985414450643226 +2.323,2024/05/28 15:36:57.1769,28.06324027166951,48.078534238737504 +2.665,2024/05/28 15:36:57.5189,27.463495584932176,48.155996511338024 +2.911,2024/05/28 15:36:57.7649,26.866376715184305,46.266784896028646 +3.063,2024/05/28 15:36:57.9169,25.914327715616714,44.96983115696249 +3.157,2024/05/28 15:36:58.0109,25.430952269495005,43.81476159165234 +3.404,2024/05/28 15:36:58.2579,24.956285309929207,42.42346049062947 +3.555,2024/05/28 15:36:58.4089,24.49463059743044,41.15680202519599 +3.65,2024/05/28 15:36:58.5039,24.048318806662994,39.99722212576491 +3.895,2024/05/28 15:36:58.7489,23.61845843714973,38.93043728714617 +4.142,2024/05/28 15:36:58.9959,23.062750837453827,37.97696670351649 +4.294,2024/05/28 15:36:59.1479,23.46301316994449,37.46109092556346 +4.388,2024/05/28 15:36:59.2419,22.94433890411831,36.98586953762944 +4.786,2024/05/28 15:36:59.6399,22.52325690146247,36.18791535017324 +5.525,2024/05/28 15:37:00.3789,22.12103071739654,35.61600763701625 +5.62,2024/05/28 15:37:00.4739,21.691579365841868,34.993142185291106 +5.867,2024/05/28 15:37:00.7209,21.28620595837984,34.313599008601194 +6.113,2024/05/28 15:37:00.9669,20.902741522934367,33.672166767447784 +6.263,2024/05/28 15:37:01.1169,20.71510954706248,33.259799844771855 +6.358,2024/05/28 15:37:01.2119,20.371266670168733,32.87122208527256 +6.605,2024/05/28 15:37:01.4589,20.062116183172883,32.31872522238462 +6.756,2024/05/28 15:37:01.6099,20.09414622828447,31.867956738182425 +6.851,2024/05/28 15:37:01.7049,19.991981151072256,31.698054619592455 +7.097,2024/05/28 15:37:01.9509,18.75335985222722,30.444484995917843 +7.344,2024/05/28 15:37:02.1979,18.650567770470705,29.100400913618586 +7.495,2024/05/28 15:37:02.3489,18.65648326496965,29.146755108130534 +7.59,2024/05/28 15:37:02.4439,18.51687642783411,29.193035699175468 +7.836,2024/05/28 15:37:02.6899,16.028853294326325,26.909106265351884 +7.988,2024/05/28 15:37:02.8419,15.946209869288788,24.423349483639626 +8.083,2024/05/28 15:37:02.9369,12.57090236247576,21.459263733874934 +8.329,2024/05/28 15:37:03.1829,12.448930157606606,17.99907405025788 +8.481,2024/05/28 15:37:03.3349,11.484572360295026,16.22138506211271 +8.575,2024/05/28 15:37:03.4289,11.343335680822353,14.223220451079285 +8.822,2024/05/28 15:37:03.6759,11.177203812111157,14.223220451079285 +9.068,2024/05/28 15:37:03.9219,11.01952290516574,13.644290625263984 +9.22,2024/05/28 15:37:04.0739,15.588862809010795,16.797817318528818 +9.314,2024/05/28 15:37:04.1679,15.377846433084798,19.856988694160048 +9.561,2024/05/28 15:37:04.4149,15.146829264952036,19.856988694160048 +9.711,2024/05/28 15:37:04.5649,21.765970487537732,25.42833065696606 +9.807,2024/05/28 15:37:04.6609,21.509794614728694,29.98166106138884 +10.052,2024/05/28 15:37:04.9059,21.412103140969954,29.954409803343925 +10.299,2024/05/28 15:37:05.1529,20.277528471673627,29.6046167570758 +10.45,2024/05/28 15:37:05.3039,26.659711736720805,34.5779313050005 +10.545,2024/05/28 15:37:05.3989,26.403173790415572,39.176949004910185 +10.697,2024/05/28 15:37:05.5509,31.679084074765807,43.49176167199178 +11.284,2024/05/28 15:37:06.1379,31.536240783558988,47.469990520327684 +11.436,2024/05/28 15:37:06.2899,35.41642258198494,51.12664015299004 +11.531,2024/05/28 15:37:06.3849,35.2574276840574,54.538671295390635 +11.777,2024/05/28 15:37:06.6309,35.37360532972253,54.42824021896476 +11.929,2024/05/28 15:37:06.7829,38.287193621396206,57.36229888466233 +12.023,2024/05/28 15:37:06.8769,38.11460334971007,60.25335398686671 +12.27,2024/05/28 15:37:07.1239,38.28455166972323,60.09381554425269 +12.421,2024/05/28 15:37:07.2749,40.360857901866915,62.444108342314145 +12.516,2024/05/28 15:37:07.3699,40.360857901866915,64.84083075758154 +12.762,2024/05/28 15:37:07.6159,40.360857901866915,64.84083075758154 +12.913,2024/05/28 15:37:07.7669,41.8130073805613,66.65183168275772 +13.008,2024/05/28 15:37:07.8619,41.8130073805613,68.41491065549965 +13.254,2024/05/28 15:37:08.1079,41.8130073805613,68.41491065549965 +13.501,2024/05/28 15:37:08.3549,41.890236977402814,68.41101275866822 +13.652,2024/05/28 15:37:08.5059,58.18835843595548,82.13545722362136 +14.145,2024/05/28 15:37:08.9989,59.26779280830175,97.23031077464132 +14.24,2024/05/28 15:37:09.0939,59.5473345958594,97.35365084748149 +14.638,2024/05/28 15:37:09.4919,59.52015016666235,97.95441116492236 +15.376,2024/05/28 15:37:10.2299,60.02378838771971,98.06936320788465 +15.471,2024/05/28 15:37:10.3249,60.02378838771971,99.43641184194048 +15.717,2024/05/28 15:37:10.5709,60.251045681772965,98.87095967303375 +15.868,2024/05/28 15:37:10.7219,60.8814185645895,99.85255797090694 +15.963,2024/05/28 15:37:10.8169,60.8814185645895,101.37915630608362 +16.21,2024/05/28 15:37:11.0639,60.54128447957432,100.12708591252085 +16.361,2024/05/28 15:37:11.2149,61.50365842777127,100.73562759355136 +16.456,2024/05/28 15:37:11.3099,61.50365842777127,102.57777537069128 +16.702,2024/05/28 15:37:11.5559,61.4822280648323,102.57793784890265 +16.854,2024/05/28 15:37:11.7079,61.93864223809568,102.95792020691431 +16.949,2024/05/28 15:37:11.8029,61.93864223809568,103.37278816658343 +17.195,2024/05/28 15:37:12.0489,61.04858626583777,101.57968957096361 +17.346,2024/05/28 15:37:12.1999,62.458639187828624,102.05423394777243 +17.838,2024/05/28 15:37:12.6919,63.09289811938747,100.27296079535432 +17.933,2024/05/28 15:37:12.7869,63.09289811938747,100.8669090105042 +18.18,2024/05/28 15:37:13.0339,63.2848422955116,100.87748344733163 +18.426,2024/05/28 15:37:13.2799,62.77897737300252,99.17778649139802 +18.578,2024/05/28 15:37:13.4319,63.95149023633643,99.96165931662667 +18.672,2024/05/28 15:37:13.5259,64.14043500241333,102.41321529307957 +18.919,2024/05/28 15:37:13.7729,63.804082310932046,100.9022629412575 +19.07,2024/05/28 15:37:13.9239,64.76394803837394,101.63841137417815 +19.165,2024/05/28 15:37:14.0189,64.95010463389556,103.85887861259944 +19.411,2024/05/28 15:37:14.2649,64.92952855335453,102.69290790182804 +19.563,2024/05/28 15:37:14.4169,65.46053474571806,103.30779254247959 +19.658,2024/05/28 15:37:14.5119,65.64415566075743,105.07140429250958 +19.904,2024/05/28 15:37:14.7579,65.8261468505894,105.07140429250958 +20.056,2024/05/28 15:37:14.9099,53.77342846792795,96.54066500703215 +20.15,2024/05/28 15:37:15.0039,52.748590437123624,83.4230184061929 +20.396,2024/05/28 15:37:15.2499,52.95146335337985,83.16369400164955 +20.642,2024/05/28 15:37:15.4959,53.210274697029114,82.33873126704508 +20.794,2024/05/28 15:37:15.6479,53.44525612529903,84.3662649799472 +20.889,2024/05/28 15:37:15.7429,53.632808624194794,84.9011189561127 +21.135,2024/05/28 15:37:15.9889,53.818340675864505,84.9011189561127 +21.287,2024/05/28 15:37:16.1409,53.77762855810302,85.1741353541868 +21.381,2024/05/28 15:37:16.2349,53.96112904930573,85.44627941968372 +21.628,2024/05/28 15:37:16.4819,54.14264896347032,85.44627941968372 +21.779,2024/05/28 15:37:16.6329,53.57431190926944,85.24415913519627 +21.874,2024/05/28 15:37:16.7279,53.75354572640659,85.04155846800238 +22.121,2024/05/28 15:37:16.9749,53.949966177697256,85.04136248516562 +22.367,2024/05/28 15:37:17.2209,52.05408328082311,82.54635061588125 +22.517,2024/05/28 15:37:17.3709,52.94834828591789,81.78691826936628 +22.613,2024/05/28 15:37:17.4669,53.120866303003545,83.60582116894334 +22.86,2024/05/28 15:37:17.7139,50.7733865485568,80.78242383092996 +23.01,2024/05/28 15:37:17.8639,48.55256660711055,82.25873813765928 +23.106,2024/05/28 15:37:17.9599,49.649761838045954,79.30447654451797 +23.351,2024/05/28 15:37:18.2049,50.3735015178852,79.2910251331553 +23.598,2024/05/28 15:37:18.4519,50.88779633754953,79.2910251331553 +23.749,2024/05/28 15:37:18.6029,48.884863557725495,76.21395322817645 +23.844,2024/05/28 15:37:18.6979,49.32054431931979,73.0073055705158 +24.242,2024/05/28 15:37:19.0959,48.68667121526128,73.48877465300399 +24.583,2024/05/28 15:37:19.4369,48.06442037252805,71.05514290558659 +24.829,2024/05/28 15:37:19.6829,48.593741614922905,67.7682324790409 +24.981,2024/05/28 15:37:19.8349,47.79116447941824,68.48162770651216 +25.076,2024/05/28 15:37:19.9299,47.96018463626662,66.62031722130018 +25.322,2024/05/28 15:37:20.1759,48.29470116813534,63.802560032232776 +25.473,2024/05/28 15:37:20.3269,47.37244215640587,65.10606730558989 +25.568,2024/05/28 15:37:20.4219,47.6370859102752,63.718390856434326 +25.815,2024/05/28 15:37:20.6689,47.569972659762186,60.93630554384909 +26.061,2024/05/28 15:37:20.9149,47.39888208585143,60.943142901122734 +26.212,2024/05/28 15:37:21.0659,46.775140759845826,63.515352474815096 +26.307,2024/05/28 15:37:21.1609,47.12279142054627,63.196518891470596 +26.553,2024/05/28 15:37:21.4069,46.5577011914229,60.27658472961675 +26.951,2024/05/28 15:37:21.8049,46.46181227631931,63.65060879520321 +27.292,2024/05/28 15:37:22.1459,46.80843818220607,64.15528037504005 +27.444,2024/05/28 15:37:22.2979,47.32786110507789,65.38195469699572 +27.538,2024/05/28 15:37:22.3919,46.436262088819554,69.19055812271883 +27.785,2024/05/28 15:37:22.6389,46.79926563919296,66.68807989438592 +28.031,2024/05/28 15:37:22.8849,45.53337793033867,64.08796038778786 +28.182,2024/05/28 15:37:23.0359,45.880416777510725,67.7293634007191 +28.277,2024/05/28 15:37:23.1309,44.26992700221599,71.18473619159283 +28.523,2024/05/28 15:37:23.3769,44.66503685480738,69.03936075408964 +28.769,2024/05/28 15:37:23.6229,42.60192645797785,66.82514496804328 +28.921,2024/05/28 15:37:23.7749,41.5770853113638,69.13199934424965 +29.016,2024/05/28 15:37:23.8699,41.85943912283199,69.43006073260582 +29.262,2024/05/28 15:37:24.1159,42.08229485460366,69.41061398182077 +29.508,2024/05/28 15:37:24.3619,42.297862775821365,69.41061398182077 +29.66,2024/05/28 15:37:24.5139,43.6920256276611,71.16436374103732 +30.153,2024/05/28 15:37:25.0069,45.18962600919038,71.04622908125855 +30.247,2024/05/28 15:37:25.1009,45.33285581222381,72.63929147965766 +30.494,2024/05/28 15:37:25.3479,45.106527804461194,72.15215404499946 +30.645,2024/05/28 15:37:25.4989,46.5778423963452,73.28983558447923 +30.74,2024/05/28 15:37:25.5939,46.5778423963452,75.10925375744323 +30.987,2024/05/28 15:37:25.8409,46.45241045178957,74.4593849021062 +31.232,2024/05/28 15:37:26.0859,46.26709066021809,73.68423621553437 +31.384,2024/05/28 15:37:26.2379,47.40484722293501,75.18975994109836 +31.478,2024/05/28 15:37:26.3319,46.941403923389124,75.56189515886959 +31.725,2024/05/28 15:37:26.5789,46.74612283387705,74.44169978356665 +31.876,2024/05/28 15:37:26.7299,47.30149082727398,75.53078842432402 +31.971,2024/05/28 15:37:26.8249,46.95300903532372,76.5989556064572 +32.218,2024/05/28 15:37:27.0719,45.60284574705627,74.50234895625775 +32.464,2024/05/28 15:37:27.3179,45.14707765392551,72.32196531252913 +32.711,2024/05/28 15:37:27.5649,44.66926995330061,72.32196531252913 +32.861,2024/05/28 15:37:27.7149,42.844492933311365,69.81379997297573 +32.957,2024/05/28 15:37:27.8109,42.352706219766596,67.21210208486762 +33.202,2024/05/28 15:37:28.0559,39.04527286795744,63.28454260981376 +33.354,2024/05/28 15:37:28.2079,39.294950101103325,59.82557981332066 +33.449,2024/05/28 15:37:28.3029,38.75429527547593,60.54585039455636 +33.695,2024/05/28 15:37:28.5489,38.1856475414631,60.54585039455636 +33.847,2024/05/28 15:37:28.7009,36.51497881912086,57.792156330537914 +33.942,2024/05/28 15:37:28.7959,35.91088907313373,54.90051608743461 +34.188,2024/05/28 15:37:29.0419,35.22414271327247,54.90810504834418 +34.585,2024/05/28 15:37:29.4389,36.92535184930994,56.91250594845858 +34.927,2024/05/28 15:37:29.7809,35.51365287083006,56.120703250523626 +35.173,2024/05/28 15:37:30.0269,34.93160805601773,53.54810921031666 +35.324,2024/05/28 15:37:30.1779,35.8759837063249,55.05209653894512 +35.419,2024/05/28 15:37:30.2729,35.19647644328802,56.51607440955773 +35.666,2024/05/28 15:37:30.5199,34.20474189079678,54.29119020000697 +35.817,2024/05/28 15:37:30.6709,34.20474189079678,55.56557687393638 +35.911,2024/05/28 15:37:30.7649,33.70964594719136,54.606165708034595 +36.158,2024/05/28 15:37:31.0119,33.19190110328894,54.606165708034595 +36.404,2024/05/28 15:37:31.2579,31.584296985873994,52.07526604188723 +36.556,2024/05/28 15:37:31.4099,32.16989740192707,50.614556535974245 +36.65,2024/05/28 15:37:31.5039,31.60176046310959,51.7864203564345 +36.897,2024/05/28 15:37:31.7509,31.229388605024262,51.77483301115836 +37.048,2024/05/28 15:37:31.9019,30.854199214942252,50.75923561284193 +37.143,2024/05/28 15:37:31.9969,30.468166918970372,49.72289881600496 +37.389,2024/05/28 15:37:32.2429,30.068580615483455,49.72289881600496 +37.636,2024/05/28 15:37:32.4899,29.28357195095633,48.05240195175818 +37.786,2024/05/28 15:37:32.6399,30.04519584065632,47.7283982551269 +37.882,2024/05/28 15:37:32.7359,29.933182294884624,49.060846575111874 +38.128,2024/05/28 15:37:32.9819,29.819784375978127,49.060846575111874 +38.279,2024/05/28 15:37:33.1329,30.32687818140588,50.114868053303304 +38.375,2024/05/28 15:37:33.2289,30.31103133662067,50.541072406509144 +38.621,2024/05/28 15:37:33.4749,30.193723181154308,49.9276142697272 +38.867,2024/05/28 15:37:33.7209,30.075002030363727,49.9276142697272 +39.018,2024/05/28 15:37:33.8719,30.01371334083293,49.70513051989704 +39.511,2024/05/28 15:37:34.3649,29.93519821136936,48.83065976754086 +39.606,2024/05/28 15:37:34.4599,29.80619391002896,49.3737447097814 +39.853,2024/05/28 15:37:34.7069,28.871992553735062,47.787376296814344 +40.098,2024/05/28 15:37:34.9519,28.871992553735062,46.15553415716617 +40.25,2024/05/28 15:37:35.1039,29.28425884484533,47.265561811252525 +40.345,2024/05/28 15:37:35.1989,27.112134111720085,45.982967861299834 +40.591,2024/05/28 15:37:35.4449,27.233009044340598,43.47758042945812 +40.837,2024/05/28 15:37:35.6909,27.352299279256396,43.47758042945812 +41.084,2024/05/28 15:37:35.9379,25.53899430057874,41.56681368592017 +41.234,2024/05/28 15:37:36.0879,26.96530337687372,41.24318125460256 +41.33,2024/05/28 15:37:36.1839,26.96530337687372,42.86645930483801 +41.481,2024/05/28 15:37:36.3349,28.02166649404332,43.703928122462095 +41.576,2024/05/28 15:37:36.4299,28.02166649404332,44.52564803945399 +41.823,2024/05/28 15:37:36.6769,28.02166649404332,44.52564803945399 +42.466,2024/05/28 15:37:37.3199,29.978613066305417,46.74754895535523 +42.562,2024/05/28 15:37:37.4159,29.152867014624082,47.62492344700759 +42.807,2024/05/28 15:37:37.6609,29.152867014624082,46.34795932221108 +42.959,2024/05/28 15:37:37.8129,30.226140015387895,47.843146496302545 +43.053,2024/05/28 15:37:37.9069,29.77965053869578,46.66369038128039 +43.3,2024/05/28 15:37:38.1539,30.04420115410721,45.3596737201669 +43.451,2024/05/28 15:37:38.3049,30.38112314708125,45.36885862938733 +43.546,2024/05/28 15:37:38.3999,30.42286269752737,45.38208163287944 +43.793,2024/05/28 15:37:38.6469,29.907539509966174,43.900645401482045 +43.943,2024/05/28 15:37:38.7969,30.132675966788984,42.386318547380355 +44.039,2024/05/28 15:37:38.8929,30.452620067335484,42.40047169548943 +44.285,2024/05/28 15:37:39.1389,30.665211109884112,41.14932158209497 +44.532,2024/05/28 15:37:39.3859,30.822834497118407,39.8589178645549 +44.683,2024/05/28 15:37:39.5369,30.626335298123376,39.87940153345667 +44.777,2024/05/28 15:37:39.6309,30.512104249741686,39.89987468652001 +45.024,2024/05/28 15:37:39.8779,30.89686217003277,39.08281804919736 +45.175,2024/05/28 15:37:40.0289,30.997979170321052,39.14800974081143 +45.27,2024/05/28 15:37:40.1239,30.67907669937966,38.53396769950723 +45.516,2024/05/28 15:37:40.3699,30.21092517616742,38.53396769950723 +45.763,2024/05/28 15:37:40.6169,29.332732491233898,38.523153211196686 +45.913,2024/05/28 15:37:40.7669,29.31299582331905,37.54330832518626 +46.009,2024/05/28 15:37:40.8629,28.276630211040818,36.53719565958322 +46.256,2024/05/28 15:37:41.1099,27.01044923388146,36.53719565958322 +46.406,2024/05/28 15:37:41.2599,26.00742599521429,37.5734835577787 +46.502,2024/05/28 15:37:41.3559,24.706181459279577,38.57114638344748 +46.748,2024/05/28 15:37:41.6019,24.662689955924684,36.75867244610447 +46.899,2024/05/28 15:37:41.7529,24.532502484681803,36.533090023520685 +46.995,2024/05/28 15:37:41.8489,23.921903587807687,35.23256069793016 +47.241,2024/05/28 15:37:42.0949,22.360576967038483,32.0624390837628 +47.486,2024/05/28 15:37:42.3399,20.46696244497805,32.0624390837628 +47.638,2024/05/28 15:37:42.4919,21.904940921664444,30.943496893531602 +47.733,2024/05/28 15:37:42.5869,20.028743712790547,29.782545223670862 +47.979,2024/05/28 15:37:42.8329,17.70982583298008,29.782545223670862 +48.13,2024/05/28 15:37:42.9839,18.6213324708118,28.472794032198525 +48.226,2024/05/28 15:37:43.0799,18.725758275394625,29.439769020833026 +48.472,2024/05/28 15:37:43.3259,18.819285779258053,29.439769020833026 +48.719,2024/05/28 15:37:43.5729,18.908004751378883,29.425612426365348 +48.869,2024/05/28 15:37:43.7229,19.84135354114814,30.435177016077958 +48.965,2024/05/28 15:37:43.8189,19.935643582725792,31.430876538843137 +49.211,2024/05/28 15:37:44.0649,20.011950452655665,31.404882847523357 +49.362,2024/05/28 15:37:44.2159,21.572225651059576,33.00908965724441 +49.457,2024/05/28 15:37:44.3109,21.572225651059576,34.55623436275043 +49.703,2024/05/28 15:37:44.5569,21.572225651059576,34.55623436275043 +49.854,2024/05/28 15:37:44.7079,23.453549102795556,36.39780213144744 +49.949,2024/05/28 15:37:44.8029,23.453549102795556,38.15057885100391 +50.196,2024/05/28 15:37:45.0499,23.453549102795556,38.15057885100391 +50.346,2024/05/28 15:37:45.1999,25.960093158184318,40.463975747982715 +50.442,2024/05/28 15:37:45.2959,25.960093158184318,42.65208084021224 +50.688,2024/05/28 15:37:45.5419,25.960093158184318,42.65208084021224 +50.935,2024/05/28 15:37:45.7889,25.960093158184318,42.65208084021224 +51.085,2024/05/28 15:37:45.9389,28.228541845313966,44.63182720884279 +51.181,2024/05/28 15:37:46.0349,28.228541845313966,46.52741127550511 +51.427,2024/05/28 15:37:46.2809,28.228541845313966,46.52741127550511 +51.578,2024/05/28 15:37:46.4319,30.181158010430476,48.141804425398654 +51.674,2024/05/28 15:37:46.5279,30.181158010430476,49.70378925863366 +51.919,2024/05/28 15:37:46.7729,30.181158010430476,49.70378925863366 +52.071,2024/05/28 15:37:46.9249,31.66563821681409,50.904813131962285 +52.166,2024/05/28 15:37:47.0199,31.66563821681409,52.07814640838644 +52.412,2024/05/28 15:37:47.2659,31.66563821681409,52.07814640838644 +52.564,2024/05/28 15:37:47.4179,33.78593871971604,54.50015290498428 +52.658,2024/05/28 15:37:47.5119,33.13998522464442,55.64260957216151 +52.905,2024/05/28 15:37:47.7589,33.13998522464442,54.44079352838274 +53.151,2024/05/28 15:37:48.0049,33.13998522464442,54.44079352838274 +53.301,2024/05/28 15:37:48.1549,35.195023159140106,56.243221813832825 +53.397,2024/05/28 15:37:48.2509,35.195023159140106,57.98965424970216 +53.644,2024/05/28 15:37:48.4979,35.195023159140106,57.98965424970216 +53.794,2024/05/28 15:37:48.6479,37.042380202066866,60.272713560947295 +54.287,2024/05/28 15:37:49.1409,38.6716950753389,59.76035475128975 +54.383,2024/05/28 15:37:49.2369,38.6716950753389,61.38240790324212 +54.629,2024/05/28 15:37:49.4829,38.6716950753389,61.38240790324212 +54.78,2024/05/28 15:37:49.6339,39.68288087428569,62.393108593818276 +54.875,2024/05/28 15:37:49.7289,39.68288087428569,63.387695966961914 +55.122,2024/05/28 15:37:49.9759,39.86968715732517,63.40057833595316 +55.368,2024/05/28 15:37:50.2219,39.748418605136834,62.34848300747448 +55.519,2024/05/28 15:37:50.3729,40.609734974666296,63.21286788832371 +55.613,2024/05/28 15:37:50.4669,40.792494238608256,65.08993777843085 +55.86,2024/05/28 15:37:50.7139,40.22242755181383,63.633324602758265 +56.011,2024/05/28 15:37:50.8649,41.05545730731342,64.00703086380433 +56.106,2024/05/28 15:37:50.9599,41.05545730731342,65.53268904396747 +56.352,2024/05/28 15:37:51.2059,41.05545730731342,65.53268904396747 +56.503,2024/05/28 15:37:51.3569,41.2790336695234,65.73710266407143 +56.599,2024/05/28 15:37:51.4529,41.2790336695234,65.9408826146572 +56.845,2024/05/28 15:37:51.6989,41.2790336695234,65.9408826146572 +56.996,2024/05/28 15:37:51.8499,41.4222578848118,66.06890342664997 +57.091,2024/05/28 15:37:51.9449,41.4222578848118,66.19667665374146 +57.338,2024/05/28 15:37:52.1919,41.4222578848118,66.19667665374146 +57.584,2024/05/28 15:37:52.4379,40.22928538140894,64.35189714893157 +57.735,2024/05/28 15:37:52.5889,41.4222578848118,64.35189714893157 +57.831,2024/05/28 15:37:52.6849,41.4222578848118,66.19667665374146 +58.077,2024/05/28 15:37:52.9309,40.199230849850004,65.0261485865494 +58.227,2024/05/28 15:37:53.0809,41.00103727311365,63.149821852480315 +58.323,2024/05/28 15:37:53.1769,40.91617447090238,63.28928292636387 +58.57,2024/05/28 15:37:53.4239,40.742759035110666,63.28928292636387 +58.719,2024/05/28 15:37:53.5729,40.04349646566083,61.23751573450162 +58.815,2024/05/28 15:37:53.6689,39.80326619763745,59.11457801027876 +59.061,2024/05/28 15:37:53.9149,39.71513507496828,59.148682712860705 +59.308,2024/05/28 15:37:54.1619,38.852047683428346,56.820477529379026 +59.458,2024/05/28 15:37:54.3119,37.96793868273704,56.82194411786113 +59.554,2024/05/28 15:37:54.4079,37.83484983542227,54.50596297654047 +59.801,2024/05/28 15:37:54.6549,37.56418262243889,54.50596297654047 +59.951,2024/05/28 15:37:54.8049,36.80712387318627,52.38893012841549 +60.047,2024/05/28 15:37:54.9009,36.60940146823019,50.23445033042563 +60.293,2024/05/28 15:37:55.1469,35.92994460808719,50.21819059530786 +60.54,2024/05/28 15:37:55.3939,35.0280019347409,50.21819059530786 +60.69,2024/05/28 15:37:55.5439,34.50885277056038,47.960747839596216 +60.785,2024/05/28 15:37:55.6389,33.428754227392076,45.59166590507524 +61.032,2024/05/28 15:37:55.8859,32.08410284194329,45.59166590507524 +61.183,2024/05/28 15:37:56.0369,31.753359854808217,43.40775660332302 +61.278,2024/05/28 15:37:56.1319,30.646688895048086,41.56240288209205 +61.524,2024/05/28 15:37:56.3779,29.290145845969047,41.56240288209205 +61.771,2024/05/28 15:37:56.6249,29.002655447191085,38.701421162536136 +62.017,2024/05/28 15:37:56.8709,27.372882797463145,35.61132778578562 +62.168,2024/05/28 15:37:57.0219,26.229228234797127,36.950868280280865 +62.263,2024/05/28 15:37:57.1169,25.831127084135474,34.87166949449558 +62.414,2024/05/28 15:37:57.2679,24.832311172359585,32.88819443711274 +62.51,2024/05/28 15:37:57.3639,22.56079908098087,34.55092859340638 +62.756,2024/05/28 15:37:57.6099,19.725239097948496,34.55092859340638 +63.002,2024/05/28 15:37:57.8559,19.351081825470736,30.869618289401203 +63.153,2024/05/28 15:37:58.0069,17.763452082436828,28.642625577973817 +63.249,2024/05/28 15:37:58.1029,17.847405555358538,28.70830309625887 +63.495,2024/05/28 15:37:58.3489,17.685925308644727,28.39953051255132 +63.646,2024/05/28 15:37:58.4999,19.260614329968504,29.70746258658476 +63.741,2024/05/28 15:37:58.5949,19.363314050917385,31.243666024758788 +63.987,2024/05/28 15:37:58.8409,19.383041527338957,31.10680525758525 +64.233,2024/05/28 15:37:59.0869,19.467036683618574,30.969339676525234 +64.63,2024/05/28 15:37:59.4839,20.346876966719545,31.93117598836598 +64.876,2024/05/28 15:37:59.7299,21.436246025788485,31.949960876345372 +64.972,2024/05/28 15:37:59.8259,21.56734973780078,33.223987318401946 +65.218,2024/05/28 15:38:00.0719,21.666251101230706,33.21947220130587 +65.465,2024/05/28 15:38:00.3189,21.762801755055726,33.21947220130587 +65.615,2024/05/28 15:38:00.4689,23.324891740640844,34.874537033964096 +65.711,2024/05/28 15:38:00.5649,23.324891740640844,36.38314628139427 +65.957,2024/05/28 15:38:00.8109,23.324891740640844,36.38314628139427 +66.108,2024/05/28 15:38:00.9619,25.106577422759752,38.44303144481021 +66.204,2024/05/28 15:38:01.0579,25.249012726800487,40.15968127363563 +66.45,2024/05/28 15:38:01.3039,25.249012726800487,39.919919839598876 +66.697,2024/05/28 15:38:01.5509,25.249012726800487,39.919919839598876 +66.847,2024/05/28 15:38:01.7009,25.971713171399447,40.6197817161376 +66.943,2024/05/28 15:38:01.7969,25.971713171399447,41.30778780488412 +67.189,2024/05/28 15:38:02.0429,25.971713171399447,41.30778780488412 +67.34,2024/05/28 15:38:02.1939,26.118232500793194,41.94838097789552 +67.927,2024/05/28 15:38:02.7809,26.118232500793194,42.579337712087536 +68.078,2024/05/28 15:38:02.9319,25.28322327770566,41.714505870260524 +68.571,2024/05/28 15:38:03.4249,25.09799185995309,40.5392813618265 +68.666,2024/05/28 15:38:03.5199,23.994946786028503,39.25472370726017 +68.913,2024/05/28 15:38:03.7669,23.881436064561086,37.79947089576784 +69.063,2024/05/28 15:38:03.9169,23.731157074443853,37.958310464683926 +69.159,2024/05/28 15:38:04.0129,23.60732401451739,38.116488120846945 +69.406,2024/05/28 15:38:04.2599,22.45560114956794,36.668333295456264 +69.652,2024/05/28 15:38:04.5059,22.354407624221594,35.161058004559536 +69.897,2024/05/28 15:38:04.7509,22.235314151193602,35.16153201061258 +70.144,2024/05/28 15:38:04.9979,21.163539455838208,33.80384593504118 +70.294,2024/05/28 15:38:05.1479,21.170055842339842,32.68434895583307 +70.39,2024/05/28 15:38:05.2439,21.047865537344457,32.97675949311373 +70.541,2024/05/28 15:38:05.3949,22.138643595077333,34.26611543006687 +70.636,2024/05/28 15:38:05.4899,21.649878553453423,34.58805188693537 +70.883,2024/05/28 15:38:05.7369,20.752952981954998,34.57070050394312 +71.034,2024/05/28 15:38:05.8879,22.48271366612751,35.04045281290374 +71.622,2024/05/28 15:38:06.4759,22.48360833314207,35.465946107968605 +71.773,2024/05/28 15:38:06.6269,23.97747985568671,35.97406473187779 +71.868,2024/05/28 15:38:06.7219,23.024324967952072,34.848242423399206 +72.114,2024/05/28 15:38:06.9679,23.209589773868096,33.202409551115416 +72.264,2024/05/28 15:38:07.1179,24.129535485761043,33.36465195382682 +72.36,2024/05/28 15:38:07.2139,23.03031485453098,31.14268239356826 +72.606,2024/05/28 15:38:07.4599,23.014238471298043,28.56104573248909 +72.853,2024/05/28 15:38:07.7069,22.892150941155077,28.56104573248909 +73.003,2024/05/28 15:38:07.8569,24.00574643848743,29.014938681077144 +73.099,2024/05/28 15:38:07.9529,23.750039322411197,27.763285108214408 +73.742,2024/05/28 15:38:08.5959,25.649023642101717,27.115186396802315 +73.838,2024/05/28 15:38:08.6919,25.119965041340162,28.228826873723722 +74.085,2024/05/28 15:38:08.9389,25.207666230367305,27.26780763708981 +74.235,2024/05/28 15:38:09.0889,27.215529711384608,27.997023651333606 +74.331,2024/05/28 15:38:09.1849,27.226360620613118,29.209016872648533 +74.577,2024/05/28 15:38:09.4309,27.16073907548232,29.199885844525717 +74.824,2024/05/28 15:38:09.6779,26.55473635697599,29.03446228191595 +75.069,2024/05/28 15:38:09.9229,25.863567772661078,29.03446228191595 +75.22,2024/05/28 15:38:10.0739,27.32688457709103,29.97443355038868 +75.315,2024/05/28 15:38:10.1689,26.47228001505356,30.88581119759255 +75.466,2024/05/28 15:38:10.3199,25.785788654833265,31.080004290003995 +75.562,2024/05/28 15:38:10.4159,24.637136719739406,31.272458596449795 +75.808,2024/05/28 15:38:10.6619,23.41234569697128,31.271925641593185 +76.055,2024/05/28 15:38:10.9089,22.03654227419327,31.271925641593185 +76.205,2024/05/28 15:38:11.0589,21.732675753397412,30.96826332446386 +76.301,2024/05/28 15:38:11.1549,20.108584545258367,30.661593783320093 +76.547,2024/05/28 15:38:11.4009,20.101352387740036,29.2135813164585 +76.698,2024/05/28 15:38:11.5519,18.439992769340897,27.738661347176315 +77.191,2024/05/28 15:38:12.0449,17.139756835142908,27.84001915708153 +77.286,2024/05/28 15:38:12.1399,17.015071074731726,25.98396941705918 +77.533,2024/05/28 15:38:12.3869,16.754103974847826,25.40013123325678 +77.779,2024/05/28 15:38:12.6329,16.523094252535504,24.675223740964675 +77.929,2024/05/28 15:38:12.7829,17.44643691186113,24.507141816213494 +78.025,2024/05/28 15:38:12.8789,17.44643691186113,24.991998719590235 +78.271,2024/05/28 15:38:13.1249,17.29158322926858,24.774987386475093 +78.421,2024/05/28 15:38:13.2749,18.5140207820249,25.241500219545852 +78.517,2024/05/28 15:38:13.3709,18.5140207820249,25.908814458918545 +78.763,2024/05/28 15:38:13.6169,18.5140207820249,25.908814458918545 +78.914,2024/05/28 15:38:13.7679,19.66878032670649,26.531741995830828 +79.01,2024/05/28 15:38:13.8639,19.66878032670649,27.14037582643247 +79.256,2024/05/28 15:38:14.1099,17.995657202806587,25.98012060531411 +79.407,2024/05/28 15:38:14.2609,20.221332766427096,26.458143043935138 +79.502,2024/05/28 15:38:14.3559,20.221332766427096,28.048767055493425 +79.749,2024/05/28 15:38:14.6029,17.34623746012346,26.326792436603437 +79.995,2024/05/28 15:38:14.8489,17.34623746012346,24.484008386427796 +80.146,2024/05/28 15:38:14.9999,19.842627977600934,26.603884428155723 +80.241,2024/05/28 15:38:15.0949,19.842627977600934,28.566880590408655 +80.488,2024/05/28 15:38:15.3419,19.842627977600934,28.566880590408655 +80.638,2024/05/28 15:38:15.4919,19.485449920920132,29.20787565024201 +80.734,2024/05/28 15:38:15.5879,19.485449920920132,29.83510236840714 +80.98,2024/05/28 15:38:15.8339,18.835189614550952,29.632752150281284 +81.131,2024/05/28 15:38:15.9849,20.1044685374274,30.812335192257013 +81.227,2024/05/28 15:38:16.0809,20.1044685374274,32.13616861626995 +81.473,2024/05/28 15:38:16.3269,20.1044685374274,32.13616861626995 +81.718,2024/05/28 15:38:16.5719,20.037206770715528,32.13150063929996 +81.869,2024/05/28 15:38:16.7229,20.656467635401917,33.02927993967373 +81.965,2024/05/28 15:38:16.8189,20.656467635401917,33.907717902172855 +82.211,2024/05/28 15:38:17.0649,20.78154021705554,33.867880555673 +82.362,2024/05/28 15:38:17.2159,20.855964719183078,34.11646718717126 +82.457,2024/05/28 15:38:17.3109,20.855964719183078,34.21013495052794 +82.704,2024/05/28 15:38:17.5579,20.855964719183078,34.21013495052794 +82.95,2024/05/28 15:38:17.8039,20.855964719183078,34.21013495052794 +83.101,2024/05/28 15:38:17.9549,20.633640649114138,33.89444398914567 +83.197,2024/05/28 15:38:18.0509,20.633640649114138,33.575784925051764 +83.594,2024/05/28 15:38:18.4479,20.502200610789338,33.647189085172236 +84.086,2024/05/28 15:38:18.9399,20.275147575181688,33.19688740429339 +84.182,2024/05/28 15:38:19.0359,20.72726562356644,33.369646886554456 +84.428,2024/05/28 15:38:19.2819,21.159085437506945,33.369646886554456 +84.675,2024/05/28 15:38:19.5289,20.843395271327022,32.4766582845793 +84.824,2024/05/28 15:38:19.6779,21.11599056334463,32.610325563130054 +84.92,2024/05/28 15:38:19.7739,21.51086333412274,33.62935225860488 +85.166,2024/05/28 15:38:20.0199,20.50985185193944,32.31459938376667 +85.317,2024/05/28 15:38:20.1709,21.411781051937,32.64710298530841 +85.413,2024/05/28 15:38:20.2669,21.774708517784564,34.26562903746746 +85.659,2024/05/28 15:38:20.5129,22.12150355514352,34.26562903746746 +85.81,2024/05/28 15:38:20.6639,21.49367723121239,34.55382275040877 +85.905,2024/05/28 15:38:20.7589,21.827984779640747,34.83963260426263 +86.152,2024/05/28 15:38:21.0059,22.14707889199554,34.83963260426263 +86.398,2024/05/28 15:38:21.2519,20.462721923188706,33.305655175460316 +86.549,2024/05/28 15:38:21.4029,21.76005514698893,33.53704419493962 +86.645,2024/05/28 15:38:21.4989,22.052419264160083,35.280778525045804 +86.891,2024/05/28 15:38:21.7449,20.707070256815456,34.079319242027125 +87.041,2024/05/28 15:38:21.8949,21.501162759255617,34.079319242027125 +87.629,2024/05/28 15:38:22.4829,21.765970487537853,35.280778525045804 +87.78,2024/05/28 15:38:22.6339,21.948738606962863,35.854799771671665 +87.875,2024/05/28 15:38:22.7289,21.087229888437644,35.60337062695048 +88.122,2024/05/28 15:38:22.9759,21.320218670030876,34.76780119593415 +88.273,2024/05/28 15:38:23.1269,21.3330459750762,34.836762191684805 +88.369,2024/05/28 15:38:23.2229,21.090282122342586,34.581305161411514 +88.615,2024/05/28 15:38:23.4689,21.280934211625762,34.25395354310701 +88.861,2024/05/28 15:38:23.7149,21.459397641276905,34.25395354310701 +89.011,2024/05/28 15:38:23.8649,21.625974165819535,34.25395354310701 +89.107,2024/05/28 15:38:23.9609,21.61406523752436,34.158454297582026 +89.353,2024/05/28 15:38:24.2069,21.748404618460665,34.0626873083535 +89.504,2024/05/28 15:38:24.3579,21.687434785751236,33.99411713811671 +89.599,2024/05/28 15:38:24.4529,21.26464336572027,33.93670579181191 +89.846,2024/05/28 15:38:24.6999,21.26464336572027,33.25758058949368 +90.092,2024/05/28 15:38:24.9459,21.26464336572027,33.25758058949368 +90.339,2024/05/28 15:38:25.1929,21.26464336572027,33.25758058949368 +90.488,2024/05/28 15:38:25.3419,20.510720493742333,32.259882206852524 +90.585,2024/05/28 15:38:25.4389,20.510720493742333,31.23032714099123 +90.832,2024/05/28 15:38:25.6859,20.510720493742333,31.23032714099123 +90.981,2024/05/28 15:38:25.8349,18.845286614594546,29.572509757092536 +91.078,2024/05/28 15:38:25.9319,19.314963528103355,28.926919411971035 +91.323,2024/05/28 15:38:26.1769,19.71754571936909,28.926919411971035 +91.474,2024/05/28 15:38:26.3279,17.695411444973704,28.262460378860624 +91.57,2024/05/28 15:38:26.4239,18.235874709944422,27.581998960674817 +91.816,2024/05/28 15:38:26.6699,18.701803957489666,27.581998960674817 +92.062,2024/05/28 15:38:26.9159,19.098654944515403,27.581998960674817 +92.213,2024/05/28 15:38:27.0669,17.39140361041165,27.165541899006296 +92.309,2024/05/28 15:38:27.1629,17.921155545666213,26.742600222616097 +92.555,2024/05/28 15:38:27.4089,18.375677327418096,26.742600222616097 +92.706,2024/05/28 15:38:27.5599,16.91955272363385,26.27990360205557 +93.294,2024/05/28 15:38:28.1479,17.461583449152972,25.80891318905157 +93.445,2024/05/28 15:38:28.2989,16.69964553275158,25.6378626254218 +93.54,2024/05/28 15:38:28.3939,17.256849381469422,25.465663156493687 +93.787,2024/05/28 15:38:28.6409,17.734439512643032,25.465663156493687 +93.936,2024/05/28 15:38:28.7899,17.781043761303433,25.994871289031867 +94.526,2024/05/28 15:38:29.3799,18.490413794689896,26.768762890105076 +94.675,2024/05/28 15:38:29.5289,18.490413794689896,27.607969863791144 +94.771,2024/05/28 15:38:29.6249,19.091311136733054,28.42240899947317 +95.017,2024/05/28 15:38:29.8709,19.593718205166038,28.42240899947317 +95.168,2024/05/28 15:38:30.0219,19.637549066350925,29.30073946734678 +95.264,2024/05/28 15:38:30.1179,20.05223064955604,30.153496204144112 +95.51,2024/05/28 15:38:30.3639,20.464828252450705,30.151837976039428 +95.757,2024/05/28 15:38:30.6109,20.71373024565253,30.150179656733943 +96.003,2024/05/28 15:38:30.8569,20.88446598647509,30.150179656733943 +96.249,2024/05/28 15:38:31.1029,20.815251923617996,30.17007347245501 +96.4,2024/05/28 15:38:31.2539,20.670958026833947,30.513385041103955 +96.645,2024/05/28 15:38:31.4989,20.099207967468377,30.55705046848163 +96.988,2024/05/28 15:38:31.8419,19.914876320243078,30.614266826650173 +97.138,2024/05/28 15:38:31.9919,19.61259857817187,30.622976123601486 +97.235,2024/05/28 15:38:32.0889,18.51997989125304,30.509015061125783 +97.48,2024/05/28 15:38:32.3339,18.51997989125304,29.330302873762943 +97.631,2024/05/28 15:38:32.4849,18.44186267302134,29.366647748764244 +97.726,2024/05/28 15:38:32.5799,16.65363858623461,27.828043409481737 +97.973,2024/05/28 15:38:32.8269,16.65363858623461,26.158491291866714 +98.219,2024/05/28 15:38:33.0729,16.849605200190947,26.522946040488538 +98.37,2024/05/28 15:38:33.2239,16.81324054045702,26.573796617470123 +98.466,2024/05/28 15:38:33.3199,14.813631498080488,24.73189573539939 +98.712,2024/05/28 15:38:33.5659,15.017078400213673,22.681857654669 +98.862,2024/05/28 15:38:33.7159,15.112756277359006,22.684796670898333 +98.958,2024/05/28 15:38:33.8119,14.099971468137872,21.352595470652584 +99.205,2024/05/28 15:38:34.0589,14.25949975747174,19.928204468374297 +99.601,2024/05/28 15:38:34.4549,13.917490855902914,19.108462348743117 +99.944,2024/05/28 15:38:34.7979,14.047701984114203,18.251940536100083 +100.093,2024/05/28 15:38:34.9469,13.915219485632871,18.405615085257722 +100.19,2024/05/28 15:38:35.0439,14.257927820939823,18.14570656289434 +100.436,2024/05/28 15:38:35.2899,14.669696656713919,16.841417200857336 +100.683,2024/05/28 15:38:35.5369,14.972618686950897,15.427248620541512 +100.832,2024/05/28 15:38:35.6859,14.637418590329016,15.049916943292411 +100.928,2024/05/28 15:38:35.7819,14.84029928130241,16.144142384571975 +101.174,2024/05/28 15:38:36.0279,15.031767127936423,14.489076345072288 +101.325,2024/05/28 15:38:36.1789,14.534145289983492,13.299122778088286 +101.423,2024/05/28 15:38:36.2769,14.457388835956108,13.945130571875858 +101.667,2024/05/28 15:38:36.5209,14.283701828694152,13.943935360339754 +101.913,2024/05/28 15:38:36.7669,13.95641820795756,13.943935360339754 +102.064,2024/05/28 15:38:36.9179,13.647280896283943,13.93078126548065 +102.16,2024/05/28 15:38:37.0139,13.959053421124269,13.19343270974869 +102.406,2024/05/28 15:38:37.2599,14.18255363417377,13.010252367524108 +102.653,2024/05/28 15:38:37.5069,13.844165541492192,12.791924535945846 +102.802,2024/05/28 15:38:37.6559,16.675710190119048,14.803152817333656 +102.899,2024/05/28 15:38:37.7529,16.098261489630474,16.572064848211685 +103.295,2024/05/28 15:38:38.1489,16.839881507760623,17.397317800933184 +103.637,2024/05/28 15:38:38.4909,16.436187996676292,18.126407991289025 +103.884,2024/05/28 15:38:38.7379,15.491784993953035,18.06746615697213 +104.034,2024/05/28 15:38:38.8879,15.00206882285029,18.397463593296404 +104.13,2024/05/28 15:38:38.9839,14.914661459007418,18.44180034595321 +104.527,2024/05/28 15:38:39.3809,14.542209669406702,18.412857826348777 +104.869,2024/05/28 15:38:39.7229,14.435309519354293,18.383869741343 +105.115,2024/05/28 15:38:39.9689,14.323680256553295,18.383869741343 +105.266,2024/05/28 15:38:40.1199,14.197943836887914,18.489636737012077 +105.361,2024/05/28 15:38:40.2149,14.069000732433587,18.594802141100256 +105.608,2024/05/28 15:38:40.4619,13.934823656754652,18.594802141100256 +105.854,2024/05/28 15:38:40.7079,13.76485613320524,18.593905811672094 +106.004,2024/05/28 15:38:40.8579,13.588407838530207,18.625251676151922 +106.1,2024/05/28 15:38:40.9539,12.781137322804682,18.50585492936402 +106.347,2024/05/28 15:38:41.2009,12.824231732944186,17.886680332955397 +106.497,2024/05/28 15:38:41.3509,12.839414889809682,17.96199691942222 +106.592,2024/05/28 15:38:41.4459,12.880708197850907,18.036999011291577 +106.839,2024/05/28 15:38:41.6929,11.490125695821215,17.064583206161235 +106.989,2024/05/28 15:38:41.8429,11.784657861794859,16.099689437998485 +107.085,2024/05/28 15:38:41.9389,11.833130967997016,16.165807537309522 +107.331,2024/05/28 15:38:42.1849,11.094215123001085,15.61089363233252 +107.578,2024/05/28 15:38:42.4319,11.152495726050004,15.03551351523009 +107.728,2024/05/28 15:38:42.5819,12.427675826026501,15.660991880039612 +107.824,2024/05/28 15:38:42.6779,12.459820481724575,16.26243114256496 +108.07,2024/05/28 15:38:42.9239,12.471761206270287,16.236789502033133 +108.22,2024/05/28 15:38:43.0739,14.615729206232063,17.56227016456965 +108.317,2024/05/28 15:38:43.1709,14.619503584509664,18.81665928550195 +108.563,2024/05/28 15:38:43.4169,14.620447026831538,18.81665928550195 +108.81,2024/05/28 15:38:43.6639,12.027554571297296,17.263641948712134 +108.959,2024/05/28 15:38:43.8129,13.789051128866626,16.88786546606764 +109.056,2024/05/28 15:38:43.9099,12.103243604387213,17.33108959836821 +109.302,2024/05/28 15:38:44.1559,12.03008680375002,16.502525059315417 +109.452,2024/05/28 15:38:44.3059,12.363461182605985,16.86317486912434 +109.549,2024/05/28 15:38:44.4029,11.260193338615414,16.86317486912434 +109.794,2024/05/28 15:38:44.6479,11.260193338615414,16.233709783451637 +110.04,2024/05/28 15:38:44.8939,11.230909728661508,16.220357579289058 +110.191,2024/05/28 15:38:45.0449,12.191432831409527,16.465114636709945 +110.287,2024/05/28 15:38:45.1409,12.279363119506707,16.75509872645737 +110.533,2024/05/28 15:38:45.3869,12.128431496888798,16.63430190900718 +110.779,2024/05/28 15:38:45.6329,12.216250718170745,16.51262143533445 +110.93,2024/05/28 15:38:45.7839,15.26034602882759,18.20622604129331 +111.026,2024/05/28 15:38:45.8799,15.305922525866583,19.75516810018752 +111.272,2024/05/28 15:38:46.1259,15.305922525866583,19.72477291800001 +111.423,2024/05/28 15:38:46.2769,16.401009220419667,20.25833161936096 +111.518,2024/05/28 15:38:46.3719,16.42747908126906,20.807050087250076 +112.161,2024/05/28 15:38:47.0149,16.593898615587097,20.8222637257976 +112.257,2024/05/28 15:38:47.1109,16.614666004370882,20.837466256721328 +112.653,2024/05/28 15:38:47.5069,16.624867124177797,20.838266082698276 +112.996,2024/05/28 15:38:47.8499,16.5423872132368,20.78781694486781 +113.242,2024/05/28 15:38:48.0959,16.656261119554287,20.775787189257915 +113.392,2024/05/28 15:38:48.2459,16.655398489696733,20.827065723876387 +113.885,2024/05/28 15:38:48.7389,16.655398489696733,20.847062143141418 +113.981,2024/05/28 15:38:48.8349,15.968395510270682,20.519096796236752 +114.227,2024/05/28 15:38:49.0809,15.955433622092032,20.086479698211598 +114.474,2024/05/28 15:38:49.3279,15.939865443122384,20.086479698211598 +114.623,2024/05/28 15:38:49.4769,14.272552228892254,19.199826388103965 +114.72,2024/05/28 15:38:49.5739,14.24014077161539,18.270194306574847 +114.966,2024/05/28 15:38:49.8199,14.204742610962686,18.270194306574847 +115.116,2024/05/28 15:38:49.9699,14.982940490676269,18.923530326025322 +115.213,2024/05/28 15:38:50.0669,12.84572472374302,18.41738309315414 +115.609,2024/05/28 15:38:50.4629,14.591171949181984,18.550831068535267 +115.951,2024/05/28 15:38:50.8049,14.558996112923193,19.80572307861207 +116.197,2024/05/28 15:38:51.0509,13.812538032402784,19.499572644889767 +116.348,2024/05/28 15:38:51.2019,16.556972348027674,21.249313714408128 +116.443,2024/05/28 15:38:51.2969,16.534047073953133,23.127184581497737 +116.69,2024/05/28 15:38:51.5439,16.534047073953133,23.101226518664905 +116.84,2024/05/28 15:38:51.6939,18.426274344178022,24.6448101365514 +116.936,2024/05/28 15:38:51.7899,18.426274344178022,26.097254006248754 +117.183,2024/05/28 15:38:52.0369,18.426274344178022,26.097254006248754 +117.429,2024/05/28 15:38:52.2829,18.426274344178022,26.097254006248754 +117.578,2024/05/28 15:38:52.4319,17.742863224471723,26.151481793581027 +117.675,2024/05/28 15:38:52.5289,17.742863224471723,26.20559736646607 +117.922,2024/05/28 15:38:52.7759,17.742863224471723,26.20559736646607 +118.071,2024/05/28 15:38:52.9249,17.058418894271036,26.239283526803852 +118.168,2024/05/28 15:38:53.0219,17.058418894271036,26.272926496046583 +118.414,2024/05/28 15:38:53.2679,16.792205361999027,26.209413067318643 +118.661,2024/05/28 15:38:53.5149,16.792205361999027,26.145745351777602 +118.81,2024/05/28 15:38:53.6639,16.738729266920856,26.17632518135424 +118.907,2024/05/28 15:38:53.7609,16.738729266920856,26.206869328479506 +119.152,2024/05/28 15:38:54.0059,16.56405192252071,26.175688465953797 +119.4,2024/05/28 15:38:54.2539,16.581009771949336,26.134906415239627 +119.549,2024/05/28 15:38:54.4029,16.576537913430847,26.150207137484273 +119.645,2024/05/28 15:38:54.4989,16.396698574345344,26.073613737518883 +119.891,2024/05/28 15:38:54.7449,16.396698574345344,26.042273326267047 +120.138,2024/05/28 15:38:54.9919,16.396698574345344,26.042273326267047 +120.288,2024/05/28 15:38:55.1419,16.416840246471562,26.06594201891298 +120.384,2024/05/28 15:38:55.2379,16.416840246471562,26.08958923913266 +120.534,2024/05/28 15:38:55.3879,16.495210032703277,26.39696952303427 +120.63,2024/05/28 15:38:55.4839,16.234063803811257,26.21449980449751 +120.877,2024/05/28 15:38:55.7309,16.234063803811257,25.747491787227222 +121.273,2024/05/28 15:38:56.1269,15.381882162160254,25.011997121381572 +121.616,2024/05/28 15:38:56.4699,15.381882162160254,24.254209256676802 +121.765,2024/05/28 15:38:56.6189,15.352149873784281,24.408331910777243 +121.862,2024/05/28 15:38:56.7159,13.280743989684888,22.802046691762854 +122.108,2024/05/28 15:38:56.9619,13.467542932684106,20.934023343192617 +122.355,2024/05/28 15:38:57.2089,13.647659897933675,20.934023343192617 +122.504,2024/05/28 15:38:57.3579,11.614299549391756,19.835153978059594 +122.997,2024/05/28 15:38:57.8509,12.648383659401436,17.65597160547483 +123.093,2024/05/28 15:38:57.9469,12.842503068229444,19.177243458502232 +123.339,2024/05/28 15:38:58.1929,13.029409704257178,19.177243458502232 +123.49,2024/05/28 15:38:58.3439,12.568936347979184,19.32959734017585 +123.585,2024/05/28 15:38:58.4389,12.752281743091508,19.480759738778158 +123.832,2024/05/28 15:38:58.6859,12.928672581230321,19.480759738778158 +124.078,2024/05/28 15:38:58.9319,12.48580803548036,18.846750383023593 +124.228,2024/05/28 15:38:59.0819,13.278147288018465,19.404466839708153 +124.324,2024/05/28 15:38:59.1779,13.441059071573603,20.546694786915648 +124.571,2024/05/28 15:38:59.4249,13.597878468738756,20.546694786915648 +124.817,2024/05/28 15:38:59.6709,13.771910442687126,20.50690940471853 +124.967,2024/05/28 15:38:59.8209,14.018419738117307,21.05231578710523 +125.064,2024/05/28 15:38:59.9179,14.168282531241104,21.621748310439653 +125.31,2024/05/28 15:39:00.1639,14.312642108917064,21.621748310439653 +125.459,2024/05/28 15:39:00.3129,14.312642108917064,21.73476477903545 +125.556,2024/05/28 15:39:00.4099,14.451663389127878,21.847196616499794 +125.803,2024/05/28 15:39:00.6569,14.585499018175938,21.847196616499794 +126.049,2024/05/28 15:39:00.9029,14.71429049691498,21.847196616499794 +126.198,2024/05/28 15:39:01.0519,14.4546854353355,21.619435700313733 +126.295,2024/05/28 15:39:01.1489,14.57083372365208,21.38924963620744 +126.541,2024/05/28 15:39:01.3949,14.250468836813239,21.008728344825315 +126.691,2024/05/28 15:39:01.5449,14.314569380590648,20.887795479657495 +126.787,2024/05/28 15:39:01.6409,14.416784598548288,21.1163443805977 +127.033,2024/05/28 15:39:01.8869,14.208990192792436,20.859050793360662 +127.28,2024/05/28 15:39:02.1339,14.293958212452276,20.59854363784003 +127.429,2024/05/28 15:39:02.2829,14.327892578713309,20.843064394021656 +127.526,2024/05/28 15:39:02.3799,14.408809565799325,21.084749623049042 +127.772,2024/05/28 15:39:02.6259,14.408809565799325,21.04598140580128 +127.922,2024/05/28 15:39:02.7759,14.39092945485918,21.247744978389274 +128.019,2024/05/28 15:39:02.8729,13.609031821788758,20.328141413649536 +128.265,2024/05/28 15:39:03.1189,12.152337649392882,20.287927444665215 +128.511,2024/05/28 15:39:03.3649,12.122174987880882,18.85647545716502 +128.661,2024/05/28 15:39:03.5149,12.110079396458472,18.86001060445089 +128.758,2024/05/28 15:39:03.6119,9.96020818690359,16.98038083593337 +129.004,2024/05/28 15:39:03.8579,9.92940599675023,14.860462083439174 +129.154,2024/05/28 15:39:04.0079,9.898566017127173,14.861583585428125 +129.25,2024/05/28 15:39:04.1039,9.826600071517053,14.862705002791383 +129.497,2024/05/28 15:39:04.3509,8.26187755232904,13.238831771220099 +129.743,2024/05/28 15:39:04.5969,8.195597360289028,11.385663499916609 +129.893,2024/05/28 15:39:04.7469,8.441822541140807,11.503622617824933 +130.385,2024/05/28 15:39:05.2389,8.981206431517798,11.555662392668511 +130.481,2024/05/28 15:39:05.3349,8.596243499277483,10.553040636075778 +130.727,2024/05/28 15:39:05.5809,8.62027815109916,9.330952077181978 +130.974,2024/05/28 15:39:05.8279,8.590893333983361,9.330952077181978 +131.123,2024/05/28 15:39:05.9769,8.911377204348279,9.003702941938204 +131.22,2024/05/28 15:39:06.0739,8.804975082696878,8.66410218468519 +131.862,2024/05/28 15:39:06.7159,8.541985556145319,8.893818077743664 +131.959,2024/05/28 15:39:06.8129,8.351474506744111,9.11774826003292 +132.206,2024/05/28 15:39:07.0599,8.40744060170984,9.0 +132.355,2024/05/28 15:39:07.2089,9.676610026719626,11.048378463225573 +132.452,2024/05/28 15:39:07.3059,9.470098131524525,12.855608374039194 +132.698,2024/05/28 15:39:07.5519,9.527274821125712,12.475308947410213 +133.094,2024/05/28 15:39:07.9479,12.177282410150761,15.14375558880073 +133.437,2024/05/28 15:39:08.2909,12.02722008564409,17.682382946499793 +133.683,2024/05/28 15:39:08.5369,11.836481692233932,17.682382946499793 +133.832,2024/05/28 15:39:08.6859,12.65097333950226,18.20256392196806 +133.929,2024/05/28 15:39:08.7829,12.499241356289327,18.708286933869708 +134.325,2024/05/28 15:39:09.1789,13.461908798746272,19.890533761901246 +134.668,2024/05/28 15:39:09.5219,13.517124090507417,20.80224346875436 +134.915,2024/05/28 15:39:09.7689,13.58333157041155,20.79503145785871 +135.064,2024/05/28 15:39:09.9179,15.243954897583361,22.359189013319185 +135.161,2024/05/28 15:39:10.0149,15.318983790311663,23.82085920644621 +135.407,2024/05/28 15:39:10.2609,15.381321707554253,23.818060374430157 +135.557,2024/05/28 15:39:10.4109,16.388564838669687,24.856923918028688 +135.653,2024/05/28 15:39:10.5069,16.468151080191603,25.85665613853939 +135.899,2024/05/28 15:39:10.7529,16.539607634090686,25.856011551152534 +136.146,2024/05/28 15:39:10.9999,16.61217528850775,25.855366947695792 +136.295,2024/05/28 15:39:11.1489,16.79436139639312,26.165498912371866 +136.392,2024/05/28 15:39:11.2459,16.86964900261058,26.471997783821806 +136.638,2024/05/28 15:39:11.4919,16.830083901690653,26.420951282394558 +136.788,2024/05/28 15:39:11.6419,16.585168557840166,26.40075756488817 +136.885,2024/05/28 15:39:11.7389,16.585168557840166,26.362852652928137 +137.527,2024/05/28 15:39:12.3809,16.70377478158871,26.378652985574025 +137.624,2024/05/28 15:39:12.4779,16.624348574222612,26.469479279603014 +137.87,2024/05/28 15:39:12.7239,16.44580091744115,26.45940286552212 +138.02,2024/05/28 15:39:12.8739,16.541136460422393,26.525459468216567 +138.116,2024/05/28 15:39:12.9699,16.543359955604718,26.525459468216567 +138.363,2024/05/28 15:39:13.2169,16.45827186079068,26.449322612624066 +138.609,2024/05/28 15:39:13.4629,16.369301237026647,26.449322612624066 +138.759,2024/05/28 15:39:13.6129,15.603565758115423,25.620304447839803 +138.855,2024/05/28 15:39:13.7089,15.521620071860685,24.763548480242758 +139.101,2024/05/28 15:39:13.9549,15.445863933224791,24.787765799549852 +139.347,2024/05/28 15:39:14.2009,13.432718676221075,23.045606956641432 +139.594,2024/05/28 15:39:14.4479,13.371955556399175,21.160497788725735 +139.743,2024/05/28 15:39:14.5969,13.490567160014692,21.224200024186228 +139.84,2024/05/28 15:39:14.6939,12.75120007874913,20.417312914942226 +139.99,2024/05/28 15:39:14.8439,12.98456200935284,19.630758178599894 +140.579,2024/05/28 15:39:15.4329,12.366110530606973,18.435473052424413 +140.729,2024/05/28 15:39:15.5829,12.324165589251104,17.250120772524077 +140.825,2024/05/28 15:39:15.6789,12.577164126752962,17.34646938140439 +141.072,2024/05/28 15:39:15.9259,11.23566775430256,15.27743433957417 +141.317,2024/05/28 15:39:16.1709,11.488324908158692,12.880217389469792 +141.467,2024/05/28 15:39:16.3209,11.865191048639161,12.900904361064512 +141.564,2024/05/28 15:39:16.4179,11.097530014098195,10.782702196883056 +141.81,2024/05/28 15:39:16.6639,11.226815189997653,8.097324661063471 +141.96,2024/05/28 15:39:16.8139,12.71979180050889,8.959166627910582 +142.056,2024/05/28 15:39:16.9099,12.650064740192116,9.745084230865666 +142.303,2024/05/28 15:39:17.1569,12.779113706609476,8.878813734578134 +142.549,2024/05/28 15:39:17.4029,12.631333053667028,7.918333157931662 +142.699,2024/05/28 15:39:17.5529,13.322869457242703,8.573214099741124 +142.795,2024/05/28 15:39:17.6489,13.10211880733026,9.17423929634859 +143.042,2024/05/28 15:39:17.8959,12.723586568748296,9.166969691961096 +143.288,2024/05/28 15:39:18.1419,11.94219795322627,9.121403400793104 +143.438,2024/05/28 15:39:18.2919,12.048560747739677,9.04064894425911 +143.534,2024/05/28 15:39:18.3879,11.78231677157624,9.223159256278006 +143.781,2024/05/28 15:39:18.6349,10.743027677437171,9.001851661371305 +143.93,2024/05/28 15:39:18.7839,10.344024873072044,8.895691841185448 +144.027,2024/05/28 15:39:18.8809,9.887237797503849,9.014802641581603 +144.273,2024/05/28 15:39:19.1269,9.359302950762915,9.014802641581603 +144.668,2024/05/28 15:39:19.5219,8.955573619294098,9.368386556214825 +145.012,2024/05/28 15:39:19.8659,8.294576541332429,9.709102258533827 +145.161,2024/05/28 15:39:20.0149,7.965153994803996,9.674709297958259 +145.258,2024/05/28 15:39:20.1119,7.582193295639243,9.702233419854077 +145.504,2024/05/28 15:39:20.3579,7.14738116174642,9.702233419854077 +145.753,2024/05/28 15:39:20.6069,7.090547374426664,9.563820714895625 +145.9,2024/05/28 15:39:20.7539,6.584900875507056,9.437513796899408 +145.997,2024/05/28 15:39:20.8509,6.568472241414335,9.186947262284681 +146.243,2024/05/28 15:39:21.0969,6.568472241414335,9.179687721631202 +146.393,2024/05/28 15:39:21.2469,6.422750511887792,9.086620200419222 +146.49,2024/05/28 15:39:21.3439,6.422750511887792,8.9925895417653 +146.736,2024/05/28 15:39:21.5899,6.422750511887792,8.9925895417653 +146.982,2024/05/28 15:39:21.8359,6.422750511887792,8.9925895417653 +147.132,2024/05/28 15:39:21.9859,8.02646484643504,10.142320576015464 +147.229,2024/05/28 15:39:22.0829,8.02646484643504,11.17437544861755 +147.475,2024/05/28 15:39:22.3289,8.02646484643504,11.17437544861755 +147.624,2024/05/28 15:39:22.4779,9.68444658961717,12.581732790041283 +147.72,2024/05/28 15:39:22.5739,9.68444658961717,13.846780612594875 +147.968,2024/05/28 15:39:22.8219,9.68444658961717,13.846780612594875 +148.213,2024/05/28 15:39:23.0669,9.68444658961717,13.846780612594875 +148.363,2024/05/28 15:39:23.2169,10.747680851150195,14.97108323847454 +148.459,2024/05/28 15:39:23.3129,10.747680851150195,16.0166579951416 +148.706,2024/05/28 15:39:23.5599,10.747680851150195,16.0166579951416 +148.855,2024/05/28 15:39:23.7089,11.499575204548924,16.758082626999226 +148.952,2024/05/28 15:39:23.8059,11.191591671337449,17.372391890583174 +149.198,2024/05/28 15:39:24.0519,11.191591671337449,17.27618785110496 +149.445,2024/05/28 15:39:24.2989,11.191591671337449,17.27618785110496 +149.594,2024/05/28 15:39:24.4479,11.694629870847148,17.763257959432256 +149.691,2024/05/28 15:39:24.5449,11.694629870847148,18.237324365158393 +149.937,2024/05/28 15:39:24.7909,11.694629870847148,18.237324365158393 +150.087,2024/05/28 15:39:24.9409,12.55795759073078,18.97893569197177 +150.184,2024/05/28 15:39:25.0379,12.55795759073078,19.692638218379983 +150.43,2024/05/28 15:39:25.2839,12.605827880458401,19.679092119980197 +150.825,2024/05/28 15:39:25.6789,13.321834121765423,20.463789157110337 +151.168,2024/05/28 15:39:26.0219,13.321834121765423,21.23205124334434 +151.318,2024/05/28 15:39:26.1719,13.833824946257451,21.881499034572563 +151.415,2024/05/28 15:39:26.2689,13.78738387160542,22.50629541557947 +151.661,2024/05/28 15:39:26.5149,13.78738387160542,22.503333086456326 +151.907,2024/05/28 15:39:26.7609,13.78738387160542,22.503333086456326 +152.057,2024/05/28 15:39:26.9109,13.785257826147108,22.514439810930227 +152.154,2024/05/28 15:39:27.0079,13.785257826147108,22.525541058984576 +152.796,2024/05/28 15:39:27.6499,14.204135709869323,22.631835983852483 +152.893,2024/05/28 15:39:27.7469,14.204135709869323,22.737634001804146 +153.289,2024/05/28 15:39:28.1429,14.108935784301224,22.297234507146097 +153.632,2024/05/28 15:39:28.4859,14.108935784301224,21.84795947756525 +153.878,2024/05/28 15:39:28.7319,14.108935784301224,21.84795947756525 +154.027,2024/05/28 15:39:28.8809,12.85556366875442,20.81425793376582 +154.124,2024/05/28 15:39:28.9779,12.85556366875442,19.726462767899704 +154.37,2024/05/28 15:39:29.2239,12.85556366875442,19.726462767899704 +154.52,2024/05/28 15:39:29.3739,13.472150926067108,20.424658299875343 +154.616,2024/05/28 15:39:29.4699,12.343735904983294,20.049937655763422 +154.862,2024/05/28 15:39:29.7159,12.343735904983294,18.94201678808252 +155.012,2024/05/28 15:39:29.8659,14.315171599776658,20.72036035722674 +155.109,2024/05/28 15:39:29.9629,13.869216719548803,21.807491067673663 +155.751,2024/05/28 15:39:30.6049,16.027992754058584,23.194108447333488 +155.848,2024/05/28 15:39:30.7019,16.027992754058584,24.99333244420733 +156.094,2024/05/28 15:39:30.9479,15.95831495152199,25.025986494042545 +156.244,2024/05/28 15:39:31.0979,18.26358728973226,26.405176260220898 +156.341,2024/05/28 15:39:31.1949,18.183894604526284,27.7158197906298 +156.587,2024/05/28 15:39:31.4409,18.100739808339586,27.7158197906298 +156.982,2024/05/28 15:39:31.8359,19.66293555099979,28.589625157855195 +157.325,2024/05/28 15:39:32.1789,19.572911142053577,29.43750442321269 +157.571,2024/05/28 15:39:32.4249,19.479579640960374,29.43750442321269 +157.721,2024/05/28 15:39:32.5749,19.963299660460567,29.586596064208987 +157.818,2024/05/28 15:39:32.6719,19.864512341729508,29.734940165849782 +158.064,2024/05/28 15:39:32.9179,19.602838171240105,29.287653826598447 +158.46,2024/05/28 15:39:33.3139,19.623496355018247,28.934984591897287 +158.803,2024/05/28 15:39:33.6569,19.513302270944628,29.06429653945427 +159.049,2024/05/28 15:39:33.9029,19.390867621807118,29.06429653945427 +159.199,2024/05/28 15:39:34.0529,23.342920854576064,31.941091611485874 +159.296,2024/05/28 15:39:34.1499,23.277338395070725,34.579377283770356 +159.542,2024/05/28 15:39:34.3959,22.89546459128066,34.50990196064505 +160.183,2024/05/28 15:39:35.0369,26.942446108304004,37.481106351511734 +160.281,2024/05/28 15:39:35.1349,26.738065336352374,40.25957443060388 +160.528,2024/05/28 15:39:35.3819,26.683241975046133,40.2260280581284 +160.676,2024/05/28 15:39:35.5299,31.43321692790604,43.80601176398813 +160.773,2024/05/28 15:39:35.6269,31.44928411370257,47.07193077266607 +161.02,2024/05/28 15:39:35.8739,31.435465731354178,47.02906902473547 +161.266,2024/05/28 15:39:36.1199,31.414470638819573,47.02906902473547 +161.416,2024/05/28 15:39:36.2699,39.50620495422309,53.176435884076824 +161.512,2024/05/28 15:39:36.3659,39.54650979266858,58.683330966581416 +161.759,2024/05/28 15:39:36.6129,39.58108221064123,58.683330966581416 +162.005,2024/05/28 15:39:36.8589,38.84570125183931,58.07925619358429 +162.154,2024/05/28 15:39:37.0079,48.21266347693581,65.0561296112826 +162.251,2024/05/28 15:39:37.1049,47.28052744906831,71.24067190399971 +162.497,2024/05/28 15:39:37.3509,47.3801452184306,70.6295500009262 +162.893,2024/05/28 15:39:37.7469,55.265461767435326,77.35976559771451 +163.236,2024/05/28 15:39:38.0899,53.97808197160561,83.01827108133085 +163.482,2024/05/28 15:39:38.3359,54.06722082571041,82.47363214991807 +163.632,2024/05/28 15:39:38.4859,59.73313256842329,87.74071650797784 +163.729,2024/05/28 15:39:38.5829,58.458945216811095,92.25851360895282 +163.975,2024/05/28 15:39:38.8289,58.56778173596228,91.80577323894178 +164.221,2024/05/28 15:39:39.0749,58.78970900640284,91.81230854302706 +164.371,2024/05/28 15:39:39.2249,59.28826908060962,93.76566535784833 +164.468,2024/05/28 15:39:39.3219,59.537383214246645,95.67915133402887 +164.714,2024/05/28 15:39:39.5679,59.66304811476602,95.67061548180124 +164.96,2024/05/28 15:39:39.8139,60.00494232518128,95.63141046051065 +165.207,2024/05/28 15:39:40.0609,60.126533244484136,95.59218936014943 +165.355,2024/05/28 15:39:40.2089,60.255480983108974,96.67419510913965 +165.453,2024/05/28 15:39:40.3069,60.24719195058879,96.83129659361171 +165.699,2024/05/28 15:39:40.5529,60.36692403329356,95.90967973393856 +165.945,2024/05/28 15:39:40.7989,60.48573499537796,95.90967973393856 +166.191,2024/05/28 15:39:41.0449,60.12008098739628,94.76268604607336 +166.341,2024/05/28 15:39:41.1949,60.751434399602864,95.09679279555121 +166.437,2024/05/28 15:39:41.2909,60.86870173229233,96.56880103497885 +166.684,2024/05/28 15:39:41.5379,60.014940668539595,94.99842103950992 +166.93,2024/05/28 15:39:41.7839,60.12137149421061,93.40164167008344 +167.08,2024/05/28 15:39:41.9339,83.57140246726084,113.58286255710703 +167.176,2024/05/28 15:39:42.0299,83.67605845533568,130.68384240856506 +167.423,2024/05/28 15:39:42.2769,81.88110949391246,128.19607378283212 +167.669,2024/05/28 15:39:42.5229,81.97522053406904,125.65906254624058 +167.819,2024/05/28 15:39:42.6729,89.93384541830847,133.50592995568897 +167.916,2024/05/28 15:39:42.7699,90.0375400635186,140.91652375313078 +168.162,2024/05/28 15:39:43.0159,87.2525795817993,137.57846246172883 +168.408,2024/05/28 15:39:43.2619,87.34532470101931,134.1573702783414 +168.557,2024/05/28 15:39:43.4109,89.82594280050759,137.45811483260394 +168.655,2024/05/28 15:39:43.5089,86.6655614429973,137.0898731975974 +168.901,2024/05/28 15:39:43.7549,86.75678780294434,133.40164916521834 +169.545,2024/05/28 15:39:44.3989,88.03774007867865,135.56105635469206 +169.639,2024/05/28 15:39:44.4929,85.16083498940114,134.39146798315235 +169.885,2024/05/28 15:39:44.7389,85.2496266887707,131.01348531099129 +170.132,2024/05/28 15:39:44.9859,85.33784111656936,131.01348531099129 +170.281,2024/05/28 15:39:45.1349,85.49165449624779,132.03534880225573 +170.378,2024/05/28 15:39:45.2319,84.85878059268948,131.552397672309 +170.624,2024/05/28 15:39:45.4779,84.85878059268948,130.0105123954726 +170.774,2024/05/28 15:39:45.6279,84.89431563765775,130.8696552553978 +170.871,2024/05/28 15:39:45.7249,84.89431563765775,131.72319461658984 +171.117,2024/05/28 15:39:45.9709,84.89431563765775,131.72319461658984 +171.363,2024/05/28 15:39:46.2169,84.90982370090985,130.93115239188367 +171.512,2024/05/28 15:39:46.3659,86.78063240677379,132.8362400351149 +171.61,2024/05/28 15:39:46.4639,86.78063240677379,135.4843164355196 +172.349,2024/05/28 15:39:47.2029,86.78063240677379,135.4843164355196 +172.497,2024/05/28 15:39:47.3509,87.6767902025955,137.45411355551835 +172.595,2024/05/28 15:39:47.4489,87.68523250810286,138.38039360159854 +172.84,2024/05/28 15:39:47.6939,87.68523250810286,137.35719857364595 +172.99,2024/05/28 15:39:47.8439,88.39581828149583,139.18081764381182 +173.087,2024/05/28 15:39:47.9409,88.39581828149583,140.98084976336324 +173.333,2024/05/28 15:39:48.1869,67.37901034063061,125.29325600366525 +173.483,2024/05/28 15:39:48.3369,67.78349577036158,108.70019932517756 +174.072,2024/05/28 15:39:48.9259,67.78349577036158,110.04665677187411 +174.222,2024/05/28 15:39:49.0759,67.48329720974594,110.6652610352499 +174.318,2024/05/28 15:39:49.1719,55.67856229151953,101.73347531663312 +174.565,2024/05/28 15:39:49.4189,55.67856229151953,91.19247044941083 +174.811,2024/05/28 15:39:49.6649,55.67856229151953,91.19247044941083 +174.96,2024/05/28 15:39:49.8139,55.35557993450258,91.61259011002072 +175.057,2024/05/28 15:39:49.9109,50.08894387837117,87.02375154711116 +175.304,2024/05/28 15:39:50.1579,50.08894387837117,81.71046444611608 +175.55,2024/05/28 15:39:50.4039,50.08894387837117,81.71046444611608 +175.7,2024/05/28 15:39:50.5539,46.72275775202126,78.91831219685328 +175.796,2024/05/28 15:39:50.6499,46.72275775202126,76.02368052126916 +176.043,2024/05/28 15:39:50.8969,46.72275775202126,76.02368052126916 +176.289,2024/05/28 15:39:51.1429,46.72275775202126,76.02368052126916 +176.438,2024/05/28 15:39:51.2919,45.87895117501684,75.25777922137574 +176.535,2024/05/28 15:39:51.3889,45.85816464238244,74.4434908728314 +176.781,2024/05/28 15:39:51.6349,45.85816464238244,74.44326698902998 +176.93,2024/05/28 15:39:51.7839,44.9009254186182,73.49149610669251 +177.027,2024/05/28 15:39:51.8809,44.9009254186182,72.52723626335144 +177.274,2024/05/28 15:39:52.1279,44.9009254186182,72.52723626335144 +177.52,2024/05/28 15:39:52.3739,44.9009254186182,72.52723626335144 +177.669,2024/05/28 15:39:52.5229,38.79982521586461,67.67323449242446 +177.766,2024/05/28 15:39:52.6199,38.79982521586461,62.44304071178255 +178.013,2024/05/28 15:39:52.8669,38.79982521586461,62.44304071178255 +178.162,2024/05/28 15:39:53.0159,33.38566007810246,58.03475969910906 +178.259,2024/05/28 15:39:53.1129,33.54326422268222,53.33947881260183 +178.505,2024/05/28 15:39:53.3589,33.698460007789386,53.33947881260183 +178.752,2024/05/28 15:39:53.6059,27.523448728040623,48.38181476546741 +178.9,2024/05/28 15:39:53.7539,27.41819598851084,42.9538512049075 +178.998,2024/05/28 15:39:53.8519,27.57051565229343,43.053068028500206 +179.244,2024/05/28 15:39:54.0979,23.260864474304757,39.48459615259264 +179.393,2024/05/28 15:39:54.2469,23.201862786889084,35.627236771885634 +179.49,2024/05/28 15:39:54.3439,21.084531563788264,33.72783222602168 +179.736,2024/05/28 15:39:54.5899,21.21634589964419,31.639110817678382 +179.983,2024/05/28 15:39:54.8369,21.344707815384893,31.639110817678382 +180.229,2024/05/28 15:39:55.0829,21.344707815384893,31.664912232101113 +180.379,2024/05/28 15:39:55.2329,19.959844746361732,30.494261755287667 +180.475,2024/05/28 15:39:55.3289,19.959844746361732,29.27683953799203 +180.625,2024/05/28 15:39:55.4789,19.94601910559933,29.358701152015108 +180.722,2024/05/28 15:39:55.5759,19.94601910559933,29.440335143019915 +180.968,2024/05/28 15:39:55.8219,16.91904320546872,27.10043050088565 +181.214,2024/05/28 15:39:56.0679,16.896201028497916,24.562844569254054 +181.363,2024/05/28 15:39:56.2169,16.887048699909503,24.579802006254376 +181.953,2024/05/28 15:39:56.8069,16.861300313910373,24.596747752497688 +182.102,2024/05/28 15:39:56.9559,12.428230748591618,21.576993920995267 +182.595,2024/05/28 15:39:57.4489,13.264766224419978,17.70781371786666 +182.692,2024/05/28 15:39:57.5459,13.28398915296529,18.482424083436676 +182.938,2024/05/28 15:39:57.7919,9.743609753807286,16.070677231114644 +183.087,2024/05/28 15:39:57.9409,10.791706053272332,14.386336109887974 +183.184,2024/05/28 15:39:58.0379,10.855423984583123,15.459624833740307 +183.431,2024/05/28 15:39:58.2849,10.914979688904635,15.459624833740307 +183.677,2024/05/28 15:39:58.5309,9.41416150178089,14.45683229480096 +183.826,2024/05/28 15:39:58.6799,9.670193569839462,13.821480866149377 +183.923,2024/05/28 15:39:58.7769,9.75893342580014,14.250146198080449 +184.17,2024/05/28 15:39:59.0239,12.148742898876154,15.406708495543969 +184.416,2024/05/28 15:39:59.2699,14.204621232817997,14.922019523732928 +184.565,2024/05/28 15:39:59.4189,14.177406341595816,16.024980499208105 +184.662,2024/05/28 15:39:59.5159,15.751701239994185,17.056767962698366 +184.908,2024/05/28 15:39:59.7619,17.15343201476226,16.804761230080004 +185.057,2024/05/28 15:39:59.9109,17.109149263062783,17.216271373325874 +185.796,2024/05/28 15:40:00.6499,16.959078537102243,17.25108692227826 +185.893,2024/05/28 15:40:00.7469,18.12666163608135,18.08129788851822 +186.14,2024/05/28 15:40:00.9939,18.939376969689913,17.94807324849476 +186.289,2024/05/28 15:40:01.1429,18.861381819420124,19.739132030900784 +186.386,2024/05/28 15:40:01.2399,19.499955791285593,21.380676634132357 +186.632,2024/05/28 15:40:01.4859,20.171135630987763,21.342445970413046 +186.879,2024/05/28 15:40:01.7329,20.86356886410266,21.247744978389274 +187.027,2024/05/28 15:40:01.8809,21.228613308186965,23.260839767013287 +187.125,2024/05/28 15:40:01.9789,21.592383714698727,24.63331078032346 +187.371,2024/05/28 15:40:02.2249,21.772623324643533,24.535688292770594 +187.52,2024/05/28 15:40:02.3739,22.150088866224404,25.93324764338885 +187.618,2024/05/28 15:40:02.4719,22.397172440586427,27.237229423468655 +187.863,2024/05/28 15:40:02.7169,22.507827501796065,27.221927436045622 +188.11,2024/05/28 15:40:02.9639,22.664570558930162,27.206616842231597 +188.259,2024/05/28 15:40:03.1129,22.399199493086112,28.055896587586243 +188.356,2024/05/28 15:40:03.2099,21.278692596603005,29.096964331925303 +188.602,2024/05/28 15:40:03.4559,21.307410615240794,28.611186623417073 +188.752,2024/05/28 15:40:03.6059,21.769138758777046,29.62093854016108 +188.849,2024/05/28 15:40:03.7029,20.23369217050157,30.06936425444786 +189.096,2024/05/28 15:40:03.9499,20.147616156301282,29.531903652377938 +189.244,2024/05/28 15:40:04.0979,21.01657802127121,30.80476153670619 +189.341,2024/05/28 15:40:04.1949,20.92141838228184,32.02707188197718 +189.588,2024/05/28 15:40:04.4419,19.903820461548666,31.83865575051811 +189.834,2024/05/28 15:40:04.6879,19.681048705822736,31.649117944528353 +189.983,2024/05/28 15:40:04.8369,20.871280383043853,32.365619619178204 +190.08,2024/05/28 15:40:04.9339,20.702712354921502,33.67838080034925 +190.327,2024/05/28 15:40:05.1809,20.628320004473032,33.16775542601579 +190.572,2024/05/28 15:40:05.4259,20.464828252451674,32.649144960728556 +190.722,2024/05/28 15:40:05.5759,21.46646676568693,33.95094500402996 +191.214,2024/05/28 15:40:06.0679,22.201506627969316,33.64173994707566 +191.804,2024/05/28 15:40:06.6579,22.21638620685184,34.570218396764574 +191.953,2024/05/28 15:40:06.8069,22.37529939438903,34.772115264964825 +192.05,2024/05/28 15:40:06.9039,22.184803745839616,35.457486280520975 +192.297,2024/05/28 15:40:07.1509,21.861528692697846,34.49251126452427 +192.692,2024/05/28 15:40:07.5459,21.853982514044844,34.070025927003144 +193.036,2024/05/28 15:40:07.8899,21.655187056149412,34.63091104779082 +193.184,2024/05/28 15:40:08.0379,21.782203006494292,35.43068350079255 +193.282,2024/05/28 15:40:08.1359,21.21905454684794,34.89603606906282 +193.527,2024/05/28 15:40:08.3809,21.21905454684794,33.87034100802648 +193.677,2024/05/28 15:40:08.5309,21.7356373505476,34.85254653536811 +194.266,2024/05/28 15:40:09.1199,21.168752725516498,34.809002666934695 +194.661,2024/05/28 15:40:09.5149,21.47709284892666,34.561057082599 +195.006,2024/05/28 15:40:09.8599,21.4523261874001,35.286919200557406 +195.154,2024/05/28 15:40:10.0079,21.26407579793362,35.49460052834327 +195.252,2024/05/28 15:40:10.1059,20.873483150892977,34.84776415592063 +195.498,2024/05/28 15:40:10.3519,20.873483150892977,33.95192679853874 +195.647,2024/05/28 15:40:10.5009,20.75087589897715,33.969594247405034 +195.745,2024/05/28 15:40:10.5989,20.30879431273116,33.1109246825475 +195.991,2024/05/28 15:40:10.8449,20.30879431273116,32.21076424634059 +196.237,2024/05/28 15:40:11.0909,20.17022387170064,32.24386246507491 +196.386,2024/05/28 15:40:11.2399,19.162613264544014,31.030092920690176 +196.484,2024/05/28 15:40:11.3379,19.031160171447915,29.76687196644395 +196.73,2024/05/28 15:40:11.5839,18.894899877462993,29.76687196644395 +196.879,2024/05/28 15:40:11.7329,18.744623750298903,29.834543737084367 +196.976,2024/05/28 15:40:11.8299,17.426001183330072,28.415371426981793 +197.222,2024/05/28 15:40:12.0759,17.28559961421732,26.8464771121526 +197.618,2024/05/28 15:40:12.4719,17.377121965853036,27.145288111690153 +197.961,2024/05/28 15:40:12.8149,17.21603769811824,27.440845468024488 +198.109,2024/05/28 15:40:12.9629,16.093869754605375,26.152119098331845 +198.207,2024/05/28 15:40:13.0609,15.111995691937755,26.18460107264064 +198.454,2024/05/28 15:40:13.3079,14.984474724149045,24.9218779388713 +198.7,2024/05/28 15:40:13.5539,14.333306602489222,23.936722137056833 +198.848,2024/05/28 15:40:13.7019,14.48538700834912,22.981876917838253 +198.946,2024/05/28 15:40:13.7999,14.29331489105141,23.054283766797006 +199.193,2024/05/28 15:40:14.0469,14.053428427780611,22.239604313026796 +199.341,2024/05/28 15:40:14.1949,14.17302764562731,21.375219297120672 +199.439,2024/05/28 15:40:14.2929,13.553809321606797,20.042454939452902 +199.685,2024/05/28 15:40:14.5389,13.439348643221523,18.59211302317912 +199.931,2024/05/28 15:40:14.7849,13.256098141273332,18.59211302317912 +200.08,2024/05/28 15:40:14.9339,13.04726157026043,16.87305544351704 +200.177,2024/05/28 15:40:15.0309,13.005259767080005,14.809906594348709 +200.423,2024/05/28 15:40:15.2769,12.698311952256347,12.884098726725126 +200.572,2024/05/28 15:40:15.4259,13.502703007390034,11.081516141756055 +200.67,2024/05/28 15:40:15.5239,13.756712050370679,10.75174404457249 +200.916,2024/05/28 15:40:15.7699,13.463829791099895,9.973297682645729 +201.162,2024/05/28 15:40:16.0159,13.063109414922483,9.973297682645729 +201.311,2024/05/28 15:40:16.1649,14.009684663397802,10.628577828979127 +201.409,2024/05/28 15:40:16.2629,13.38484303189738,11.245739934155807 +201.804,2024/05/28 15:40:16.6579,13.486860357357994,11.76860229593982 +202.148,2024/05/28 15:40:17.0019,13.07735605462103,12.181953866272849 +202.394,2024/05/28 15:40:17.2479,12.593055922661753,12.181953866272849 +202.543,2024/05/28 15:40:17.3969,12.29713544814017,12.318008497047456 +202.64,2024/05/28 15:40:17.4939,11.62246140864411,12.452576707921404 +202.887,2024/05/28 15:40:17.7409,11.434772537681912,12.28956196669895 +203.133,2024/05/28 15:40:17.9869,10.60448831456808,12.17374223482656 +203.282,2024/05/28 15:40:18.1359,9.92900082945317,12.28413611126155 +203.379,2024/05/28 15:40:18.2329,9.949354510340418,11.72461797529739 +203.625,2024/05/28 15:40:18.4789,8.908281049921161,11.015141094572204 +203.774,2024/05/28 15:40:18.6279,9.294912710664246,10.345691534804878 +203.871,2024/05/28 15:40:18.7249,9.091425795139212,10.345691534804878 +204.117,2024/05/28 15:40:18.9709,8.876936408469795,10.345691534804878 +204.267,2024/05/28 15:40:19.1209,8.610071621847844,10.36018017861337 +204.364,2024/05/28 15:40:19.2179,8.650626181574932,10.21273714534943 +204.61,2024/05/28 15:40:19.4639,8.411541059076026,10.048217088949993 +204.856,2024/05/28 15:40:19.7099,8.411541059076026,9.966610925150702 +205.005,2024/05/28 15:40:19.8589,8.509967110976485,9.931431585291888 +205.103,2024/05/28 15:40:19.9569,8.739920302643984,9.931431585291888 +205.349,2024/05/28 15:40:20.2029,8.957691102347448,9.931431585291888 +205.595,2024/05/28 15:40:20.4489,9.164148034346667,9.931431585291888 +205.744,2024/05/28 15:40:20.5979,9.271697137855119,9.603818684946802 +205.842,2024/05/28 15:40:20.6959,9.446522196513117,9.499122766515512 +206.088,2024/05/28 15:40:20.9419,9.442871178406172,9.584710046040342 +206.237,2024/05/28 15:40:21.0909,9.328241632485991,9.584710046040342 +206.335,2024/05/28 15:40:21.1889,9.293428651040275,9.584710046040342 +206.581,2024/05/28 15:40:21.4349,9.254014351038037,9.584710046040342 +206.827,2024/05/28 15:40:21.6809,9.209939658096024,9.584710046040342 +206.976,2024/05/28 15:40:21.8299,7.861224495887199,8.852494940222595 +207.073,2024/05/28 15:40:21.9269,7.774775008757886,8.053984521134037 +207.319,2024/05/28 15:40:22.1729,6.127383420860219,7.268654162452175 +207.468,2024/05/28 15:40:22.3219,6.858588038735281,7.101643002385669 +207.565,2024/05/28 15:40:22.4189,6.738890389239643,7.7502688125423544 +207.812,2024/05/28 15:40:22.6659,5.928792011250689,7.5321532999092184 +208.058,2024/05/28 15:40:22.9119,5.763639495137744,7.307530362578044 +208.207,2024/05/28 15:40:23.0609,7.6920618882052505,8.814760348415605 +208.305,2024/05/28 15:40:23.1589,7.6920618882052505,10.039920318408907 +208.551,2024/05/28 15:40:23.4049,7.5461035084966115,9.904544411531507 +208.699,2024/05/28 15:40:23.5529,9.09237396766325,10.940749517286282 +208.797,2024/05/28 15:40:23.6509,9.09237396766325,12.0 +209.044,2024/05/28 15:40:23.8979,8.889099614361786,11.86029791643813 +209.29,2024/05/28 15:40:24.1439,8.889099614361786,11.718930554164631 +209.536,2024/05/28 15:40:24.3899,8.889099614361786,11.718930554164631 +209.685,2024/05/28 15:40:24.5389,9.085544916888868,11.877148928369412 +209.783,2024/05/28 15:40:24.6369,9.085544916888868,12.033287165193059 +210.028,2024/05/28 15:40:24.8819,9.085544916888868,12.033287165193059 +210.178,2024/05/28 15:40:25.0319,10.58523152495052,13.14660919527668 +210.274,2024/05/28 15:40:25.1279,10.580018034446823,14.168039149202452 +210.916,2024/05/28 15:40:25.7699,14.042996372799603,16.92926460304759 +211.013,2024/05/28 15:40:25.8669,14.00886418886609,19.32097306038182 +211.26,2024/05/28 15:40:26.1139,13.970617771579244,19.32097306038182 +211.408,2024/05/28 15:40:26.2619,16.435348784105535,21.288494545176274 +211.506,2024/05/28 15:40:26.3599,16.41894056251587,23.08895840006647 +211.752,2024/05/28 15:40:26.6059,16.41894056251587,23.05356082401733 +211.999,2024/05/28 15:40:26.8529,16.245282250620487,22.890318186225954 +212.148,2024/05/28 15:40:27.0019,17.746749742891204,23.926972228010797 +212.245,2024/05/28 15:40:27.0989,17.746749742891204,25.070567072432432 +212.491,2024/05/28 15:40:27.3449,17.746749742891204,25.070567072432432 +212.738,2024/05/28 15:40:27.5919,17.747138347921254,25.046623192225603 +212.886,2024/05/28 15:40:27.7399,20.291128235204177,27.10043050088565 +212.984,2024/05/28 15:40:27.8379,20.291128235204177,29.029869674756263 +213.23,2024/05/28 15:40:28.0839,19.89385626874309,28.863471724655717 +213.477,2024/05/28 15:40:28.3309,19.89385626874309,28.69610891160449 +213.722,2024/05/28 15:40:28.5759,19.89385626874309,28.69610891160449 +213.871,2024/05/28 15:40:28.7249,23.467855246807037,31.71750305430741 +213.968,2024/05/28 15:40:28.8219,22.585749754082876,34.12086360767167 +214.215,2024/05/28 15:40:29.0689,22.585749754082876,33.76289876970479 +214.461,2024/05/28 15:40:29.3149,22.585749754082876,33.76289876970479 +214.61,2024/05/28 15:40:29.4639,24.176078230778533,35.76264345188519 +214.707,2024/05/28 15:40:29.5609,24.176078230778533,37.656340767525464 +214.856,2024/05/28 15:40:29.7099,24.59090571081504,38.35796310198618 +214.954,2024/05/28 15:40:29.8079,24.59090571081504,39.04698025029166 +215.2,2024/05/28 15:40:30.0539,24.59090571081504,39.04698025029166 +215.447,2024/05/28 15:40:30.3009,24.295806364403443,38.995298861956854 +215.595,2024/05/28 15:40:30.4489,24.158575736355626,39.01580876174853 +215.693,2024/05/28 15:40:30.5469,24.158575736355626,39.087935052477086 +215.939,2024/05/28 15:40:30.7929,24.12336588474399,38.727681744888024 +216.087,2024/05/28 15:40:30.9409,24.003950824238263,38.40746455226293 +216.186,2024/05/28 15:40:31.0399,22.954953388266883,37.265712569778316 +216.431,2024/05/28 15:40:31.2849,22.863814707710954,36.08369899737738 +216.677,2024/05/28 15:40:31.5309,22.769837883511897,36.08369899737738 +216.826,2024/05/28 15:40:31.6799,21.701236788739774,34.964744147974734 +216.924,2024/05/28 15:40:31.7779,21.613746158140632,33.808775980998384 +217.17,2024/05/28 15:40:32.0239,21.52328330292487,33.808775980998384 +217.319,2024/05/28 15:40:32.1729,21.412988860830634,33.81321240777535 +217.416,2024/05/28 15:40:32.2699,20.7153949083026,32.97878105691598 +217.663,2024/05/28 15:40:32.5169,20.627623483444367,32.11801156153143 +217.909,2024/05/28 15:40:32.7629,20.536734678726337,32.11801156153143 +218.058,2024/05/28 15:40:32.9119,20.486721239048233,32.126313202731495 +218.155,2024/05/28 15:40:33.0089,18.60181674479479,30.40285074352952 +218.402,2024/05/28 15:40:33.2559,18.518366155185042,28.566297158248098 +218.648,2024/05/28 15:40:33.5019,18.431482312334975,28.566297158248098 +218.797,2024/05/28 15:40:33.6509,18.749436773150716,28.754709759156558 +218.895,2024/05/28 15:40:33.7489,18.66535299154244,28.941895814430218 +219.141,2024/05/28 15:40:33.9949,14.2450233294018,25.59492137124082 +219.29,2024/05/28 15:40:34.1439,14.784894434804205,22.106560112328648 +219.387,2024/05/28 15:40:34.2409,14.719171953222592,22.468496463567234 +219.633,2024/05/28 15:40:34.4869,14.649310524751797,22.468496463567234 +219.879,2024/05/28 15:40:34.7329,8.768805735276327,18.480620480203942 +220.028,2024/05/28 15:40:34.8819,9.016268820765164,13.558515159608493 +220.125,2024/05/28 15:40:34.9789,6.477991032420228,12.049896265113654 +220.372,2024/05/28 15:40:35.2259,6.635068796256756,9.584710046040342 +220.52,2024/05/28 15:40:35.3739,6.621195502708219,9.612491872558333 +220.618,2024/05/28 15:40:35.4719,6.717706915825023,9.640193635676274 +221.259,2024/05/28 15:40:36.1129,6.900691286379361,9.359487165438072 +221.603,2024/05/28 15:40:36.4569,6.807365855092908,9.235799911215054 +221.752,2024/05/28 15:40:36.6059,6.718990071895806,9.252026804976301 +221.85,2024/05/28 15:40:36.7039,6.685805860180759,9.086620200419222 +222.491,2024/05/28 15:40:37.3449,7.242991063107594,9.528903399657276 +222.589,2024/05/28 15:40:37.4429,7.3952454436915565,10.413132733876648 +222.835,2024/05/28 15:40:37.6889,7.53695874517461,10.413132733876648 +222.984,2024/05/28 15:40:37.8379,7.751084462502917,10.951407824263205 +223.08,2024/05/28 15:40:37.9339,7.895582935102659,11.46443776786866 +223.328,2024/05/28 15:40:38.1819,8.030473569295497,11.46443776786866 +223.573,2024/05/28 15:40:38.4269,8.128918153411,11.451346354614087 +223.722,2024/05/28 15:40:38.5759,8.138457025668187,11.583033569262703 +223.819,2024/05/28 15:40:38.6729,8.26159929968364,11.726039399558575 +224.066,2024/05/28 15:40:38.9199,8.37621152671407,11.726039399558575 +224.214,2024/05/28 15:40:39.0679,8.357253027218187,11.738824472663351 +224.312,2024/05/28 15:40:39.1659,8.45821371865083,11.75159563633807 +224.558,2024/05/28 15:40:39.4119,8.55139969722137,11.75159563633807 +224.805,2024/05/28 15:40:39.6589,8.637062612644502,11.75159563633807 +225.051,2024/05/28 15:40:39.9049,7.9637107968083765,11.282730166054668 +225.2,2024/05/28 15:40:40.0539,9.605075286763588,12.54325848148452 +225.298,2024/05/28 15:40:40.1519,9.678094711326626,14.07716827585245 +225.446,2024/05/28 15:40:40.2999,12.791924535946938,17.03917055884274 +225.544,2024/05/28 15:40:40.3979,12.859988738130987,19.557607215607945 +225.79,2024/05/28 15:40:40.6439,12.923337172657432,19.557607215607945 +225.939,2024/05/28 15:40:40.7929,17.578101580444905,23.56409698390046 +226.037,2024/05/28 15:40:40.8909,17.49758604040586,26.87811997393667 +226.283,2024/05/28 15:40:41.1369,17.49758604040586,26.60325794584816 +226.431,2024/05/28 15:40:41.2849,21.998328045140905,30.526491227566044 +226.529,2024/05/28 15:40:41.3829,22.053852583916655,33.99215595790692 +226.775,2024/05/28 15:40:41.6289,22.053852583916655,33.98431010530203 +227.022,2024/05/28 15:40:41.8759,21.995846002810033,33.97989601710596 +227.17,2024/05/28 15:40:42.0239,25.334089522894715,36.94094386088874 +227.267,2024/05/28 15:40:42.1209,25.445004929496285,39.719852299154724 +227.514,2024/05/28 15:40:42.3679,25.533863023827042,39.716075670522464 +227.662,2024/05/28 15:40:42.5159,27.341623357366906,41.45439261003189 +227.76,2024/05/28 15:40:42.6139,27.341623357366906,43.01705088295415 +228.006,2024/05/28 15:40:42.8599,27.341623357366906,43.01705088295415 +228.253,2024/05/28 15:40:43.1069,27.447253489884037,42.87695573770756 +228.401,2024/05/28 15:40:43.2549,28.985232070158364,44.452596474596774 +228.499,2024/05/28 15:40:43.3529,28.985232070158364,46.10495273467555 +228.745,2024/05/28 15:40:43.5989,28.985232070158364,46.10495273467555 +228.992,2024/05/28 15:40:43.8459,29.11185325601958,46.068789145508624 +229.14,2024/05/28 15:40:43.9939,30.594211006764848,47.77377244193024 +229.238,2024/05/28 15:40:44.0919,30.594211006764848,49.453682033461035 +229.387,2024/05/28 15:40:44.2409,32.32772199205216,51.40492842779442 +229.484,2024/05/28 15:40:44.3379,32.32772199205216,53.284769556287536 +229.731,2024/05/28 15:40:44.5849,32.32772199205216,53.284769556287536 +229.878,2024/05/28 15:40:44.7319,34.16585645240646,55.49864863219644 +229.977,2024/05/28 15:40:44.8309,34.16585645240646,57.627539712652435 +230.223,2024/05/28 15:40:45.0769,34.34143973042815,57.272157284320976 +230.47,2024/05/28 15:40:45.3239,34.34143973042815,56.91455584177625 +230.617,2024/05/28 15:40:45.4709,36.057887685883976,58.36951259004995 +230.715,2024/05/28 15:40:45.5689,36.057887685883976,59.7890736952274 +230.961,2024/05/28 15:40:45.8149,36.057887685883976,59.7890736952274 +231.11,2024/05/28 15:40:45.9639,37.03724438000719,60.59647954570738 +231.208,2024/05/28 15:40:46.0619,37.03724438000719,61.39326781767959 +231.603,2024/05/28 15:40:46.4569,38.55464848160638,63.46074902383888 +231.947,2024/05/28 15:40:46.8009,37.377923904389135,63.72806812281906 +232.193,2024/05/28 15:40:47.0469,37.377923904389135,61.944598903644 +232.342,2024/05/28 15:40:47.1959,38.60462720166215,63.77120562343688 +232.439,2024/05/28 15:40:47.2929,38.60462720166215,65.5469297526589 +232.686,2024/05/28 15:40:47.5399,37.53704683452705,63.898878446078115 +232.834,2024/05/28 15:40:47.6879,38.70162906072593,63.98333116262912 +232.932,2024/05/28 15:40:47.7859,38.70162906072593,65.71149062378664 +233.178,2024/05/28 15:40:48.0319,38.22409723192174,64.56288923729069 +233.326,2024/05/28 15:40:48.1799,39.191777228123414,65.0135883232626 +233.425,2024/05/28 15:40:48.2789,39.191777228123414,66.59429404986587 +233.671,2024/05/28 15:40:48.5249,39.191777228123414,66.59429404986587 +233.819,2024/05/28 15:40:48.6729,39.809618776451984,67.15132165490118 +233.918,2024/05/28 15:40:48.7719,39.809618776451984,67.70376651265423 +234.163,2024/05/28 15:40:49.0169,39.809618776451984,67.70376651265423 +234.409,2024/05/28 15:40:49.2629,39.809618776451984,67.70376651265423 +234.558,2024/05/28 15:40:49.4119,40.2169547364773,68.07202068397852 +234.656,2024/05/28 15:40:49.5099,40.2169547364773,68.43829337439676 +234.902,2024/05/28 15:40:49.7559,39.42459702488684,66.97885238391792 +235.148,2024/05/28 15:40:50.0019,39.149580523581825,65.58861689856455 +235.297,2024/05/28 15:40:50.1509,39.90305781501597,66.40908572376725 +235.395,2024/05/28 15:40:50.2489,38.47220223521899,65.40361865625887 +235.543,2024/05/28 15:40:50.3969,39.04911437322663,64.26844741654597 +235.641,2024/05/28 15:40:50.4949,38.709127498874714,64.99282011627643 +236.284,2024/05/28 15:40:51.1379,38.97840545679136,65.63078545926446 +236.38,2024/05/28 15:40:51.2339,37.83115847716189,63.50590523722971 +236.626,2024/05/28 15:40:51.4799,37.80530887733022,61.2940997704238 +236.774,2024/05/28 15:40:51.6279,37.79703813731995,61.30089722018757 +236.872,2024/05/28 15:40:51.7259,36.755936263067895,59.064653840798336 +237.118,2024/05/28 15:40:51.9719,36.523712971101354,56.7330003907191 +237.267,2024/05/28 15:40:52.1209,35.82173295255456,54.4300774694776 +237.365,2024/05/28 15:40:52.2189,35.4896779554183,52.02531435112462 +237.611,2024/05/28 15:40:52.4649,35.02447420166989,52.02531435112462 +237.858,2024/05/28 15:40:52.7119,34.36385765078872,49.76946855251722 +238.006,2024/05/28 15:40:52.8599,34.19215477672987,47.475256713365965 +238.104,2024/05/28 15:40:52.9579,33.72375948827437,47.4784161488144 +238.35,2024/05/28 15:40:53.2039,33.44723069821025,45.05626112613725 +238.498,2024/05/28 15:40:53.3519,32.98770234113179,42.51039088662128 +238.597,2024/05/28 15:40:53.4509,32.1176000019466,42.524502740576914 +238.843,2024/05/28 15:40:53.6969,31.970981814153006,40.00374982423523 +238.991,2024/05/28 15:40:53.8449,30.96263970450913,37.31710957009756 +239.088,2024/05/28 15:40:53.9419,29.617562357492876,37.321128957557896 +239.336,2024/05/28 15:40:54.1899,29.393798704808976,34.18674206959963 +239.581,2024/05/28 15:40:54.4349,27.771977938574466,30.734345608781066 +239.73,2024/05/28 15:40:54.5839,25.661926715634507,30.799891774701635 +239.827,2024/05/28 15:40:54.6809,23.29197484014604,30.865298745786774 +240.074,2024/05/28 15:40:54.9279,23.29197484014604,27.21274211345364 +240.222,2024/05/28 15:40:55.0759,20.458087235450552,23.73815494093844 +240.32,2024/05/28 15:40:55.1739,16.936799355656383,24.49081460466352 +240.964,2024/05/28 15:40:55.8179,15.668843086779887,25.514701644346147 +241.059,2024/05/28 15:40:55.9129,15.752576873670174,24.64210488844923 +241.305,2024/05/28 15:40:56.1589,13.359959047358402,22.33681564890872 +241.453,2024/05/28 15:40:56.3069,13.951517035296726,21.12186860420577 +241.552,2024/05/28 15:40:56.4059,10.980704078925541,19.83263304085802 +242.192,2024/05/28 15:40:57.0459,12.024352684083722,18.924411043235487 +242.291,2024/05/28 15:40:57.1449,12.181765155297377,20.115499828076192 +242.537,2024/05/28 15:40:57.3909,12.310214429907846,20.115499828076192 +242.685,2024/05/28 15:40:57.5389,12.955094857182152,20.978560484456505 +242.784,2024/05/28 15:40:57.6379,13.081925760726593,21.807491067673663 +243.029,2024/05/28 15:40:57.8829,13.182363697138863,21.807491067673663 +243.275,2024/05/28 15:40:58.1289,13.318598179659547,21.758523234202578 +243.424,2024/05/28 15:40:58.2779,14.347734011485384,22.904875754592805 +243.522,2024/05/28 15:40:58.3759,14.435309519352419,24.04093730840515 +243.768,2024/05/28 15:40:58.6219,14.49946491283684,24.04093730840515 +243.916,2024/05/28 15:40:58.7699,16.099546648859945,25.523845060387487 +244.014,2024/05/28 15:40:58.8679,16.205008449567114,27.040710049848915 +244.261,2024/05/28 15:40:59.1149,16.205008449567114,27.062889720057612 +244.507,2024/05/28 15:40:59.3609,16.099546648859945,27.040710049848915 +244.655,2024/05/28 15:40:59.5089,17.68641273413766,28.293697767052883 +244.753,2024/05/28 15:40:59.6069,17.68641273413766,29.513838562048594 +245.0,2024/05/28 15:40:59.8539,17.63711473262909,29.508755762767542 +245.147,2024/05/28 15:41:00.0009,18.762765769212002,30.53031280547253 +245.246,2024/05/28 15:41:00.0999,18.762765769212002,31.52353618065926 +245.492,2024/05/28 15:41:00.3459,18.7790847217982,31.524064881716424 +245.738,2024/05/28 15:41:00.5919,18.833206184088315,31.460557316529957 +245.984,2024/05/28 15:41:00.8379,18.833206184088315,31.396390450708395 +246.133,2024/05/28 15:41:00.9869,19.68280070716895,32.344499790020976 +246.231,2024/05/28 15:41:01.0849,19.421548643815896,32.526911934581186 +246.379,2024/05/28 15:41:01.2329,20.285207792191436,32.787700946137306 +246.477,2024/05/28 15:41:01.3309,19.63239757346841,32.616458013299564 +246.723,2024/05/28 15:41:01.5769,19.434653254596714,31.611706692299926 +246.97,2024/05/28 15:41:01.8239,19.22764413157641,31.611706692299926 +247.118,2024/05/28 15:41:01.9719,19.64632690656222,31.575306807693888 +247.216,2024/05/28 15:41:02.0699,19.395579541408324,31.34166555880526 +247.462,2024/05/28 15:41:02.3159,18.991256306309076,30.564140208202595 +247.61,2024/05/28 15:41:02.4639,19.37355111378893,30.171730698343 +247.709,2024/05/28 15:41:02.5629,19.078302052210372,30.57177347379987 +247.955,2024/05/28 15:41:02.8089,18.880629251153465,29.972209350218634 +248.103,2024/05/28 15:41:02.9569,18.71286360682909,29.47145511620807 +248.201,2024/05/28 15:41:03.0549,18.377147227735275,29.507626132916894 +248.448,2024/05/28 15:41:03.3019,18.00143672427023,29.507626132916894 +248.694,2024/05/28 15:41:03.5479,17.630172673735235,28.589625157855195 +248.842,2024/05/28 15:41:03.6959,17.276121318631287,27.656222928423663 +248.939,2024/05/28 15:41:03.7929,16.822569678104706,27.67128475513922 +249.187,2024/05/28 15:41:04.0409,16.014397258098853,26.185237571323782 +249.334,2024/05/28 15:41:04.1879,15.529134650342913,24.609618715724412 +249.432,2024/05/28 15:41:04.2859,15.250438094328354,24.585225915848998 +249.678,2024/05/28 15:41:04.5319,14.944341180972481,24.585225915848998 +249.925,2024/05/28 15:41:04.7789,13.88164255410632,23.1062762036638 +250.073,2024/05/28 15:41:04.9269,14.183526141022918,21.89748844045819 +250.171,2024/05/28 15:41:05.0249,13.971605030432793,21.973468850714795 +250.417,2024/05/28 15:41:05.2709,13.325500572857253,20.523157651784484 +250.664,2024/05/28 15:41:05.5179,13.06148149524216,18.96224318657122 +250.811,2024/05/28 15:41:05.6649,15.81869256552955,20.522345544958224 +251.304,2024/05/28 15:41:06.1579,19.64641466515931,20.754919095642524 +251.403,2024/05/28 15:41:06.2569,19.32552359106866,22.60088493842664 +251.649,2024/05/28 15:41:06.5029,19.237804018345276,21.19355247868244 +251.896,2024/05/28 15:41:06.7499,19.037047969742737,20.025816670821026 +252.043,2024/05/28 15:41:06.8969,22.09178866540169,20.761342281589922 +252.142,2024/05/28 15:41:06.9959,21.929484691860985,20.960279896349984 +252.388,2024/05/28 15:41:07.2419,21.67261633607181,20.960279896349984 +252.635,2024/05/28 15:41:07.4889,21.317765512285167,20.960279896349984 +252.782,2024/05/28 15:41:07.6359,23.87055609481808,21.571586249817916 +252.88,2024/05/28 15:41:07.7339,23.59332167343553,22.444004396126225 +253.126,2024/05/28 15:41:07.9799,23.24880419616719,22.444004396126225 +253.373,2024/05/28 15:41:08.2269,23.33208535250437,21.895966142952755 +253.521,2024/05/28 15:41:08.3749,25.30358204618107,23.20488454327379 +253.619,2024/05/28 15:41:08.4729,24.764732060391665,24.935917869611295 +253.865,2024/05/28 15:41:08.7189,24.61622677604467,24.804569471503967 +254.014,2024/05/28 15:41:08.8679,26.550515721120714,26.72015469017099 +254.112,2024/05/28 15:41:08.9659,26.057606386134562,28.5447017850949 +254.358,2024/05/28 15:41:09.2119,25.51467911957197,28.5447017850949 +254.604,2024/05/28 15:41:09.4579,25.10767616285627,28.53010106302932 +254.752,2024/05/28 15:41:09.6059,25.933247643389105,29.831750423555995 +254.851,2024/05/28 15:41:09.7049,25.206366646945458,31.092335604346825 +255.097,2024/05/28 15:41:09.9509,24.415559388019368,31.092335604346825 +255.245,2024/05/28 15:41:10.0989,23.98239296679568,31.603269873015776 +255.343,2024/05/28 15:41:10.1969,23.013863887546172,32.10607419165414 +255.59,2024/05/28 15:41:10.4439,21.955676353461563,32.10607419165414 +255.836,2024/05/28 15:41:10.6899,21.79636688063914,31.85383284106744 +256.081,2024/05/28 15:41:10.9349,21.275667392317615,31.801467471381464 +256.328,2024/05/28 15:41:11.1819,20.878851423908138,31.827137267851576 +256.574,2024/05/28 15:41:11.4279,20.467552116831033,31.827137267851576 +256.821,2024/05/28 15:41:11.6749,20.4980795287714,30.84369195367723 +257.067,2024/05/28 15:41:11.9209,19.71801207018647,30.687130853176875 +257.215,2024/05/28 15:41:12.0689,19.542497163932726,29.42278029010855 +257.313,2024/05/28 15:41:12.1669,19.542497163932726,29.49124163770209 +257.56,2024/05/28 15:41:12.4139,19.542497163932726,29.49124163770209 +257.806,2024/05/28 15:41:12.6599,18.540449721139108,28.042824394129774 +257.954,2024/05/28 15:41:12.8079,18.516876427834603,27.099815497526915 +258.052,2024/05/28 15:41:12.9059,18.644403801233942,27.276974416773818 +258.299,2024/05/28 15:41:13.1529,18.768064095294314,27.276974416773818 +258.446,2024/05/28 15:41:13.2999,17.422702853250428,26.347675419285096 +258.545,2024/05/28 15:41:13.3989,17.53800470964183,25.38437839827217 +258.791,2024/05/28 15:41:13.6449,17.649362594723257,25.38437839827217 +259.038,2024/05/28 15:41:13.8919,17.75685070969661,25.38437839827217 +259.187,2024/05/28 15:41:14.0409,15.676360415035248,24.02429326050335 +259.283,2024/05/28 15:41:14.1369,15.676360415035248,22.390474164995553 +259.529,2024/05/28 15:41:14.3829,15.676360415035248,22.390474164995553 +259.678,2024/05/28 15:41:14.5319,12.60742346543477,20.280532537386684 +259.776,2024/05/28 15:41:14.6299,12.60742346543477,17.9239132631986 +260.417,2024/05/28 15:41:15.2709,13.287666046583645,18.495945501649814 +260.515,2024/05/28 15:41:15.3689,13.287666046583645,19.05080925665189 +260.761,2024/05/28 15:41:15.6149,10.168748609139422,16.915476148584567 +261.007,2024/05/28 15:41:15.8609,10.168748609139422,14.46835627614047 +261.155,2024/05/28 15:41:16.0089,12.092554943331267,15.967675681409197 +261.254,2024/05/28 15:41:16.1079,10.815537992581714,16.388003742575442 +261.5,2024/05/28 15:41:16.3539,10.815537992581714,15.379640221192865 +261.648,2024/05/28 15:41:16.5019,12.527899898310306,16.725230441860386 +261.746,2024/05/28 15:41:16.5999,12.527899898310306,17.970345943618707 +261.993,2024/05/28 15:41:16.8469,12.527899898310306,17.970345943618707 +262.14,2024/05/28 15:41:16.9939,12.400593237571057,17.939713858736244 +262.239,2024/05/28 15:41:17.0929,12.279316316286414,17.94807324849476 +262.485,2024/05/28 15:41:17.3389,12.13828369393708,17.94807324849476 +262.731,2024/05/28 15:41:17.5849,11.976797491856335,17.94807324849476 +262.88,2024/05/28 15:41:17.7339,13.041930609499651,18.71185007778048 +262.977,2024/05/28 15:41:17.8309,12.909232194909388,19.44565075623167 +263.224,2024/05/28 15:41:18.0779,12.848543009667722,19.476481543988722 +263.371,2024/05/28 15:41:18.2249,14.887354813174458,21.58780519954109 +263.47,2024/05/28 15:41:18.3239,14.942956669381198,23.304506002058915 +263.716,2024/05/28 15:41:18.5699,14.902904137253062,23.09689733853157 +263.864,2024/05/28 15:41:18.7179,17.308425959497793,25.408659941051596 +263.963,2024/05/28 15:41:18.8169,17.28732842685491,27.25863777471892 +264.209,2024/05/28 15:41:19.0629,17.724876991613574,27.108424274875638 +264.455,2024/05/28 15:41:19.3089,18.07853238881273,27.108424274875638 +264.603,2024/05/28 15:41:19.4569,20.4271624440904,30.370490062998105 +264.702,2024/05/28 15:41:19.5559,20.768676679906665,33.07163941103212 +264.948,2024/05/28 15:41:19.8019,21.16169278151744,32.95805414968143 +265.195,2024/05/28 15:41:20.0489,21.73730307162331,32.97625408279924 +265.342,2024/05/28 15:41:20.1959,23.902002994026525,36.14231130775489 +265.44,2024/05/28 15:41:20.2939,24.467407361396564,39.052528727343635 +265.588,2024/05/28 15:41:20.4419,25.673927917493632,41.19223227745736 +265.686,2024/05/28 15:41:20.5399,26.251743237136115,43.22614949310197 +265.933,2024/05/28 15:41:20.7869,26.770394524334574,43.22614949310197 +266.179,2024/05/28 15:41:21.0329,27.2332622855335,43.22614949310197 +266.327,2024/05/28 15:41:21.1809,27.443588954665888,44.313654780439855 +266.426,2024/05/28 15:41:21.2799,27.94419726740342,45.37510330566753 +266.672,2024/05/28 15:41:21.5259,28.391940737656384,45.37510330566753 +266.819,2024/05/28 15:41:21.6729,28.50093767362537,46.3015478502969 +266.918,2024/05/28 15:41:21.7719,28.981980132727468,47.209815363615505 +267.312,2024/05/28 15:41:22.1659,29.5173629012433,48.4231349666665 +267.656,2024/05/28 15:41:22.5099,29.987353656339224,49.60141127024512 +267.904,2024/05/28 15:41:22.7579,30.41974555350927,49.59838707054898 +268.051,2024/05/28 15:41:22.9049,31.276023647075565,51.08457040372693 +268.149,2024/05/28 15:41:23.0029,31.54316509749509,52.28447825757341 +268.395,2024/05/28 15:41:23.2489,31.290334889088065,51.977238608195925 +268.544,2024/05/28 15:41:23.3979,32.74493906671342,53.35947276101342 +268.642,2024/05/28 15:41:23.4959,32.96046046436556,54.98787745191358 +268.888,2024/05/28 15:41:23.7419,32.12361182653077,54.1937880819072 +269.036,2024/05/28 15:41:23.8899,33.84100756631612,55.25456240589248 +269.134,2024/05/28 15:41:23.9879,34.04250217041934,57.06020212605864 +269.381,2024/05/28 15:41:24.2349,32.83473070134586,56.069005103830165 +269.627,2024/05/28 15:41:24.4809,33.00045280079489,55.05996730838114 +269.775,2024/05/28 15:41:24.6289,34.28858259758986,56.59240231691883 +269.873,2024/05/28 15:41:24.7269,34.28858259758986,58.14063409813599 +270.12,2024/05/28 15:41:24.9739,32.88328366856945,56.505162006079885 +270.514,2024/05/28 15:41:25.3679,33.83163180139033,56.129611911479785 +270.859,2024/05/28 15:41:25.7129,33.81152969372879,57.37043373260016 +271.006,2024/05/28 15:41:25.8599,33.980403412731434,58.17043922818531 +271.105,2024/05/28 15:41:25.9589,32.580228120254695,57.02075645470399 +271.351,2024/05/28 15:41:26.2049,32.43532911367885,54.97029500860745 +271.499,2024/05/28 15:41:26.3529,31.326900782613304,53.74011537017761 +271.598,2024/05/28 15:41:26.4519,31.181043460160012,52.48110771188683 +271.843,2024/05/28 15:41:26.6969,31.03316727735645,52.48110771188683 +272.089,2024/05/28 15:41:26.9429,30.883243233891374,52.48110771188683 +272.238,2024/05/28 15:41:27.0919,30.146405210679053,51.542539065642984 +272.336,2024/05/28 15:41:27.1899,30.407292682445156,50.981696061756644 +272.582,2024/05/28 15:41:27.4359,30.663561811839912,50.981696061756644 +272.73,2024/05/28 15:41:27.5839,30.11832985249133,50.677411141454336 +272.829,2024/05/28 15:41:27.6829,30.369770965645582,50.37128811800098 +273.075,2024/05/28 15:41:27.9289,30.12662930205557,49.206029440845285 +273.223,2024/05/28 15:41:28.0769,30.538105083141424,49.45738906708818 +273.321,2024/05/28 15:41:28.1749,30.78074110525165,50.86124916541735 +273.567,2024/05/28 15:41:28.4209,30.108233875909477,49.36834343314887 +273.716,2024/05/28 15:41:28.5699,31.408030307806875,50.26463302694384 +273.813,2024/05/28 15:41:28.6669,31.764145188250446,52.34373569651546 +274.06,2024/05/28 15:41:28.9139,30.325911685228167,50.61850781417142 +274.306,2024/05/28 15:41:29.1599,30.877659967321044,48.849087333678334 +274.454,2024/05/28 15:41:29.3079,33.068737189532506,52.14946468245543 +274.552,2024/05/28 15:41:29.4059,31.476756613358088,53.38632783775262 +274.799,2024/05/28 15:41:29.6529,31.97774010259319,51.45191930336516 +274.946,2024/05/28 15:41:29.7999,34.47711218138554,54.84371735516597 +275.045,2024/05/28 15:41:29.8989,34.977907641660536,58.037631470164825 +275.292,2024/05/28 15:41:30.1459,33.616994197140954,56.48657657650473 +275.538,2024/05/28 15:41:30.3919,34.048984321611826,54.89171157834304 +275.686,2024/05/28 15:41:30.5399,36.15803435304377,57.7341608870635 +275.784,2024/05/28 15:41:30.6379,35.144038588015135,59.22977854649354 +276.031,2024/05/28 15:41:30.8849,35.54398279095512,58.02872851728989 +276.178,2024/05/28 15:41:31.0319,35.54398279095512,58.831964101158476 +276.277,2024/05/28 15:41:31.1309,35.91722604039486,59.594462830031446 +276.522,2024/05/28 15:41:31.3759,36.27265839618699,59.594462830031446 +276.769,2024/05/28 15:41:31.6229,35.991074883426414,59.09906936661524 +277.015,2024/05/28 15:41:31.8689,36.28995617991665,58.59948805237124 +277.164,2024/05/28 15:41:32.0179,36.56310872368855,59.306267234865935 +277.265,2024/05/28 15:41:32.1189,36.718578716891344,59.82362966810579 +277.508,2024/05/28 15:41:32.3619,36.37576874409914,59.46147211990859 +277.655,2024/05/28 15:41:32.5089,36.23556391108139,58.838479472762266 +277.754,2024/05/28 15:41:32.6079,36.23556391108139,58.92028513169297 +278.0,2024/05/28 15:41:32.8539,35.695390732421934,58.08958598578578 +278.247,2024/05/28 15:41:33.1009,35.695390732421934,57.24683397359193 +278.394,2024/05/28 15:41:33.2479,35.631333879368476,57.25411193384571 +278.493,2024/05/28 15:41:33.3469,34.49670982145679,56.01815182004252 +278.739,2024/05/28 15:41:33.5929,34.49670982145679,54.74668939762476 +278.887,2024/05/28 15:41:33.7409,34.403972638830226,54.83459978274058 +278.986,2024/05/28 15:41:33.8399,32.15767547497909,52.944625160004044 +279.232,2024/05/28 15:41:34.0859,32.15767547497909,50.89007761833342 +279.478,2024/05/28 15:41:34.3319,32.15767547497909,50.89007761833342 +279.626,2024/05/28 15:41:34.4799,32.064948456847354,51.09500954105009 +279.725,2024/05/28 15:41:34.5789,28.30582166675145,47.95727264972436 +279.97,2024/05/28 15:41:34.8239,28.193175990190316,44.3459881687923 +280.118,2024/05/28 15:41:34.9719,28.02675240863205,44.43047002527282 +280.857,2024/05/28 15:41:35.7109,22.785859700676284,40.1754485558863 +281.202,2024/05/28 15:41:36.0559,22.904725206421073,35.5410560713475 +281.35,2024/05/28 15:41:36.2039,22.865021220247083,35.54855833926321 +281.448,2024/05/28 15:41:36.3019,22.867660244492015,35.556059024213205 +281.695,2024/05/28 15:41:36.5489,17.543902238304284,30.726210309766483 +281.941,2024/05/28 15:41:36.7949,17.611418709620402,24.979324784042237 +282.089,2024/05/28 15:41:36.9429,17.458028486078796,24.99599967994879 +282.187,2024/05/28 15:41:37.0409,14.487767333129733,21.007935008784973 +282.434,2024/05/28 15:41:37.2879,14.763266000060913,15.932147794109033 +282.581,2024/05/28 15:41:37.4349,14.578404750092465,15.998958299422705 +282.679,2024/05/28 15:41:37.5329,14.615532597325824,16.065490966665166 +282.925,2024/05/28 15:41:37.7789,14.520101009751171,16.065490966665166 +283.319,2024/05/28 15:41:38.1729,14.391927814123454,13.281566172707194 +283.665,2024/05/28 15:41:38.5189,14.286437584318122,10.972693379476162 +283.911,2024/05/28 15:41:38.7649,14.116469553104267,10.972693379476162 +284.059,2024/05/28 15:41:38.9129,14.729593325692004,10.750193796702767 +284.157,2024/05/28 15:41:39.0109,14.351939273825671,10.861246091801192 +284.404,2024/05/28 15:41:39.2579,13.927728070128333,10.861246091801192 +284.551,2024/05/28 15:41:39.4049,13.772369473680868,11.201190412927845 +284.65,2024/05/28 15:41:39.5039,13.464470060979895,11.494926417047363 +284.896,2024/05/28 15:41:39.7499,12.875219002714106,11.458621208504974 +285.143,2024/05/28 15:41:39.9969,12.216250718171622,11.458621208504974 +285.29,2024/05/28 15:41:40.1439,12.275384208703892,11.180339887498949 +285.389,2024/05/28 15:41:40.2429,11.509166761336864,10.894952959971878 +285.635,2024/05/28 15:41:40.4889,10.640629140505624,10.894952959971878 +285.881,2024/05/28 15:41:40.7349,9.642160772764859,10.894952959971878 +286.028,2024/05/28 15:41:40.8819,9.755399330216221,10.048217088949993 +286.127,2024/05/28 15:41:40.9809,8.576967285475684,9.123230422023404 +286.275,2024/05/28 15:41:41.1289,7.1070630240355195,9.30412095077588 +286.373,2024/05/28 15:41:41.2269,6.843068478900601,9.077444574328174 +286.62,2024/05/28 15:41:41.4739,6.255112851231003,9.048020041239225 +286.866,2024/05/28 15:41:41.7199,6.359082562328398,8.499019551297275 +287.014,2024/05/28 15:41:41.8679,6.532412555337371,8.899438184514796 +287.112,2024/05/28 15:41:41.9659,6.638099714234344,9.282600210429546 +287.359,2024/05/28 15:41:42.2129,7.0632609446657515,9.370165420097983 +287.506,2024/05/28 15:41:42.3599,7.805759736085738,10.94684124911535 +287.605,2024/05/28 15:41:42.4589,8.144951189852755,12.28956196669895 +287.851,2024/05/28 15:41:42.7049,8.373192033365369,12.12435565298214 +287.999,2024/05/28 15:41:42.8529,10.200349329155726,14.64581851587681 +288.098,2024/05/28 15:41:42.9519,10.481784966883293,16.729215960907034 +288.344,2024/05/28 15:41:43.1979,10.64500314485864,16.665333279995732 +288.59,2024/05/28 15:41:43.4439,10.763123505109238,16.665333279995732 +288.738,2024/05/28 15:41:43.5919,14.558048688241913,20.633306408167677 +288.837,2024/05/28 15:41:43.6909,14.742580444445494,23.869087400513102 +289.083,2024/05/28 15:41:43.9369,14.909728367747942,23.869087400513102 +289.231,2024/05/28 15:41:44.0849,18.936554687912523,27.61460965986423 +289.328,2024/05/28 15:41:44.1819,19.063384895610408,30.79231505857698 +289.576,2024/05/28 15:41:44.4299,19.186441572889734,30.79231505857698 +289.969,2024/05/28 15:41:44.8229,22.514363231594242,33.81518396618103 +290.314,2024/05/28 15:41:45.1679,22.636076383132604,36.589160507815244 +290.461,2024/05/28 15:41:45.3149,24.71734464777324,38.75693486332478 +290.56,2024/05/28 15:41:45.4139,24.846401714553007,40.809721064145165 +290.807,2024/05/28 15:41:45.6609,25.030923403598305,40.76886066595435 +291.201,2024/05/28 15:41:46.0549,25.44084868099368,41.47770485453601 +291.546,2024/05/28 15:41:46.3999,25.570030050463995,42.21413665270597 +291.792,2024/05/28 15:41:46.6459,25.69637033271207,42.21413665270597 +291.94,2024/05/28 15:41:46.7939,25.97011987721284,42.16357037380334 +292.038,2024/05/28 15:41:46.8919,26.085271309886142,42.11294337849113 +292.285,2024/05/28 15:41:47.1389,26.242481134450284,42.07334865050162 +292.432,2024/05/28 15:41:47.2859,28.22275921895415,42.72743068958551 +293.024,2024/05/28 15:41:47.8779,28.30801438040024,43.4100602779279 +293.17,2024/05/28 15:41:48.0239,29.98698951595365,44.05072833298749 +293.27,2024/05/28 15:41:48.1239,29.93548618835784,44.83042121892975 +293.909,2024/05/28 15:41:48.7629,30.910326362917946,45.28134273627495 +294.008,2024/05/28 15:41:48.8619,30.858613432695524,45.79192068476709 +294.254,2024/05/28 15:41:49.1079,30.619278729014646,45.458772530722825 +294.501,2024/05/28 15:41:49.3549,30.573521712179122,45.10506253921689 +294.648,2024/05/28 15:41:49.5019,31.271539703096337,45.721985958617324 +294.747,2024/05/28 15:41:49.6009,30.552837217990056,45.59641798796626 +294.993,2024/05/28 15:41:49.8469,30.53018103488777,44.85012077278425 +295.141,2024/05/28 15:41:49.9949,31.719115669428874,45.882095273283525 +295.24,2024/05/28 15:41:50.0939,31.717213137276666,46.929379568311646 +295.486,2024/05/28 15:41:50.3399,29.72326384825762,45.30746811141257 +295.732,2024/05/28 15:41:50.5859,29.7340897280219,43.62491642780916 +295.88,2024/05/28 15:41:50.7339,30.37976110928963,44.29371663490583 +295.979,2024/05/28 15:41:50.8329,27.297509464941,42.69777511768031 +296.225,2024/05/28 15:41:51.0789,27.35463145555068,40.31707661359721 +296.471,2024/05/28 15:41:51.3249,27.40341450324792,40.31707661359721 +296.618,2024/05/28 15:41:51.4719,23.759910213074757,38.015786194684964 +296.718,2024/05/28 15:41:51.5719,23.86735374340197,35.5659012726141 +296.963,2024/05/28 15:41:51.8169,20.280674227610856,33.19036004625439 +297.111,2024/05/28 15:41:51.9649,20.280674227610856,30.737599125501003 +297.209,2024/05/28 15:41:52.0629,20.439537975299736,30.84369195367723 +297.456,2024/05/28 15:41:52.3099,18.996702678194477,29.827839345148686 +297.702,2024/05/28 15:41:52.5559,19.178801755627273,28.776147529971183 +297.85,2024/05/28 15:41:52.7039,19.182397342775865,28.924038445555972 +297.948,2024/05/28 15:41:52.8019,19.33494840657971,29.06200268391702 +298.195,2024/05/28 15:41:53.0489,19.37008002048627,29.080921580995334 +298.342,2024/05/28 15:41:53.1959,19.373551113790725,29.090089950588556 +298.441,2024/05/28 15:41:53.2949,17.618041954169854,28.070743963540878 +299.081,2024/05/28 15:41:53.9349,17.618041954169854,27.033312782565144 +299.18,2024/05/28 15:41:54.0339,16.238311446105694,26.257697284161587 +299.426,2024/05/28 15:41:54.2799,16.80708662795486,24.752104287649296 +299.673,2024/05/28 15:41:54.5269,16.213234270720932,23.759910213073898 +299.821,2024/05/28 15:41:54.6749,16.213234270720932,23.29234495136403 +299.919,2024/05/28 15:41:54.7729,16.618816367939807,23.812461723503795 +300.312,2024/05/28 15:41:55.1659,16.45250915426898,24.212255849741332 +301.051,2024/05/28 15:41:55.9049,15.662239531001822,23.098340488730642 +301.15,2024/05/28 15:41:56.0039,16.44877104727155,22.21786068309308 +301.396,2024/05/28 15:41:56.2499,17.075356982856835,22.21786068309308 +301.643,2024/05/28 15:41:56.4969,16.394700573557145,20.0 +301.889,2024/05/28 15:41:56.7429,16.893037401359283,17.401149387324963 +302.037,2024/05/28 15:41:56.8909,16.976115743808226,17.44706279005151 +302.135,2024/05/28 15:41:56.9889,17.263375623877373,17.49380842850788 +302.283,2024/05/28 15:41:57.1369,16.750364552562026,16.063415992040216 +302.382,2024/05/28 15:41:57.2359,16.965854823294574,14.492526809819374 +302.628,2024/05/28 15:41:57.4819,17.054476609202798,14.492526809819374 +302.874,2024/05/28 15:41:57.7279,17.018212016247162,14.492526809819374 +303.022,2024/05/28 15:41:57.8759,17.047904108212613,14.553350129781116 +303.121,2024/05/28 15:41:57.9749,16.915476148586215,14.61392030451332 +303.366,2024/05/28 15:41:58.2199,16.654880890337285,14.61392030451332 +303.613,2024/05/28 15:41:58.4669,16.82513172225773,14.38865293671834 +303.76,2024/05/28 15:41:58.6139,16.349100998169146,15.317745700113099 +303.859,2024/05/28 15:41:58.7129,15.822143656442984,16.39410463144196 +304.105,2024/05/28 15:41:58.9589,15.13726466734524,16.39410463144196 +304.253,2024/05/28 15:41:59.1069,15.276042395346737,17.095808453146248 +304.352,2024/05/28 15:41:59.2059,14.432562162512154,17.769824609901658 +304.598,2024/05/28 15:41:59.4519,13.883091510363379,17.723806965021183 +304.844,2024/05/28 15:41:59.6979,13.447043857510637,17.708754896942924 +304.992,2024/05/28 15:41:59.8459,13.03598027036184,18.46889276594566 +305.091,2024/05/28 15:41:59.9449,12.634745015601386,19.170289512680814 +305.337,2024/05/28 15:42:00.1909,12.737671524346114,18.782971010998235 +305.485,2024/05/28 15:42:00.3389,13.553809321607892,19.782146833277054 +305.583,2024/05/28 15:42:00.4369,13.66192797017088,20.733226151920174 +305.83,2024/05/28 15:42:00.6839,12.77929359658254,20.09311656596192 +306.076,2024/05/28 15:42:00.9299,12.862491133563088,19.43193248238579 +306.223,2024/05/28 15:42:01.0769,13.535351754812512,20.357635750089777 +306.322,2024/05/28 15:42:01.1759,13.276069561002435,21.151832071950647 +306.568,2024/05/28 15:42:01.4219,13.198963735014592,20.76696093959505 +306.715,2024/05/28 15:42:01.5689,15.969115306685872,22.684796670898333 +306.814,2024/05/28 15:42:01.6679,15.86686709040054,24.452675381915437 +307.061,2024/05/28 15:42:01.9149,15.759288448843774,24.452675381915437 +307.307,2024/05/28 15:42:02.1609,15.753124120005452,24.419254697881343 +307.454,2024/05/28 15:42:02.3079,18.912654645691415,26.80858071588274 +307.553,2024/05/28 15:42:02.4069,18.90292807094285,28.843254555152637 +307.8,2024/05/28 15:42:02.6539,18.77945196463466,28.65542415204028 +308.046,2024/05/28 15:42:02.8999,18.651214869064713,28.65542415204028 +308.193,2024/05/28 15:42:03.0469,20.68229850051568,30.424770609926817 +308.292,2024/05/28 15:42:03.1459,20.557209211728576,31.327304384514157 +308.539,2024/05/28 15:42:03.3929,20.372282274147306,30.937032824755512 +308.785,2024/05/28 15:42:03.6389,20.17284506858129,30.937032824755512 +308.933,2024/05/28 15:42:03.7869,20.468534865502566,31.299094768592482 +309.031,2024/05/28 15:42:03.8849,20.271405601426256,31.113234054551985 +309.671,2024/05/28 15:42:04.5249,20.586124106960764,30.872317697251045 +309.77,2024/05/28 15:42:04.6239,20.36339402192126,31.181725417301717 +310.017,2024/05/28 15:42:04.8709,20.18104835343652,30.66376797894653 +310.163,2024/05/28 15:42:05.0169,23.75258001715456,32.66394546489039 +310.263,2024/05/28 15:42:05.1169,23.600019481777878,35.00904644992967 +310.508,2024/05/28 15:42:05.3619,23.435433433797424,35.00904644992967 +310.902,2024/05/28 15:42:05.7559,26.458468865614847,36.827978494617376 +311.247,2024/05/28 15:42:06.1009,26.356290008052575,38.56120675843362 +311.494,2024/05/28 15:42:06.3479,26.24386080372176,38.56120675843362 +311.641,2024/05/28 15:42:06.4949,27.814574861261335,39.455460120664334 +311.74,2024/05/28 15:42:06.5939,27.745994844033337,40.329889660151565 +311.986,2024/05/28 15:42:06.8399,27.667899155487532,40.329889660151565 +312.233,2024/05/28 15:42:07.0869,27.580206962458067,40.329889660151565 +312.379,2024/05/28 15:42:07.2329,28.75381034220457,40.97275517544148 +312.479,2024/05/28 15:42:07.3329,28.768217616454002,41.84216374264919 +312.726,2024/05/28 15:42:07.5799,28.780660812109183,41.84216374264919 +312.972,2024/05/28 15:42:07.8259,27.349777783880718,40.83421767749853 +313.119,2024/05/28 15:42:07.9729,27.9187861607507,40.36995582525863 +313.217,2024/05/28 15:42:08.0709,28.05831366132524,41.19749183303922 +313.464,2024/05/28 15:42:08.3179,28.187977383373685,41.19749183303922 +313.611,2024/05/28 15:42:08.4649,25.98472141714256,40.14639875920795 +313.71,2024/05/28 15:42:08.5639,26.16754153307352,39.06703640325605 +313.956,2024/05/28 15:42:08.8099,26.33927620995759,39.06703640325605 +314.203,2024/05/28 15:42:09.0569,26.5001409668786,39.06703640325605 +314.35,2024/05/28 15:42:09.2039,24.307985538082143,37.741224145488445 +314.449,2024/05/28 15:42:09.3029,24.455072576312546,36.70240682389462 +314.695,2024/05/28 15:42:09.5489,24.598289820006507,36.70240682389462 +314.843,2024/05/28 15:42:09.6969,25.225990064073077,36.80443813817386 +314.942,2024/05/28 15:42:09.7959,24.59980842837427,36.599635699462 +315.188,2024/05/28 15:42:10.0419,24.737355994715067,36.29049462324811 +315.434,2024/05/28 15:42:10.2879,24.72099484662715,36.02499132546738 +315.583,2024/05/28 15:42:10.4369,25.922098148372598,36.121092637589655 +315.681,2024/05/28 15:42:10.5349,26.025827136922825,36.481045306661194 +315.927,2024/05/28 15:42:10.7809,23.205132210776302,34.236919643371344 +316.074,2024/05/28 15:42:10.9279,25.290496147809467,32.83291031876401 +316.173,2024/05/28 15:42:11.0269,25.347152915457915,33.801380642413605 +316.42,2024/05/28 15:42:11.2739,21.894338742368575,31.366117600578708 +316.666,2024/05/28 15:42:11.5199,21.924137750251848,28.725134174331256 +316.813,2024/05/28 15:42:11.6669,24.35893001066407,30.253374467432003 +316.912,2024/05/28 15:42:11.7659,21.489264895458568,29.951627668625957 +317.159,2024/05/28 15:42:12.0129,21.489264895458568,28.12353699898598 +317.305,2024/05/28 15:42:12.1589,23.240397844143796,29.86246250172056 +317.404,2024/05/28 15:42:12.2579,23.240397844143796,31.505555065734043 +317.65,2024/05/28 15:42:12.5039,19.844800123812856,29.73718211263468 +317.897,2024/05/28 15:42:12.7509,19.844800123812856,27.85677655436824 +318.044,2024/05/28 15:42:12.8979,21.47128528882428,29.673781918274813 +318.143,2024/05/28 15:42:12.9969,21.91910414311773,32.38157912558723 +318.389,2024/05/28 15:42:13.2429,20.584030189703704,31.66912271177295 +318.636,2024/05/28 15:42:13.4899,21.14971264172743,30.584854639728686 +318.882,2024/05/28 15:42:13.7359,21.672616336073357,30.584854639728686 +319.029,2024/05/28 15:42:13.8829,20.670401961293308,30.07324392213118 +319.129,2024/05/28 15:42:13.9829,21.53321412016531,29.698484809834994 +319.375,2024/05/28 15:42:14.2289,22.365202857354866,29.699046000390876 +319.768,2024/05/28 15:42:14.6219,29.468393354518195,32.552521663715495 +320.507,2024/05/28 15:42:15.3609,37.569873599719664,32.85574531189332 +320.606,2024/05/28 15:42:15.4599,37.98379872415744,36.863712961845465 +321.246,2024/05/28 15:42:16.0999,45.86587141785933,42.06701003557697 +321.344,2024/05/28 15:42:16.1979,45.78411359272265,46.61366037261323 +321.591,2024/05/28 15:42:16.4449,45.89654783802746,46.53314231097373 +321.837,2024/05/28 15:42:16.6909,45.97261803721287,46.53314231097373 +321.985,2024/05/28 15:42:16.8389,50.39669073244471,49.59704292260444 +322.083,2024/05/28 15:42:16.9369,49.601643002080266,52.23281216502388 +322.724,2024/05/28 15:42:17.5779,52.09844792181569,53.849481582153295 +322.822,2024/05/28 15:42:17.6759,51.870750068258616,55.65429004128972 +323.069,2024/05/28 15:42:17.9229,50.03764100396273,55.07146871717393 +323.215,2024/05/28 15:42:18.0689,50.672137484434714,55.212015600471126 +323.315,2024/05/28 15:42:18.1689,50.258424123746394,55.932101694822805 +323.561,2024/05/28 15:42:18.4149,49.80796455722125,55.932101694822805 +323.955,2024/05/28 15:42:18.8089,47.00090485800608,55.2295210915322 +324.301,2024/05/28 15:42:19.1549,46.63392529592402,54.94512413915057 +324.548,2024/05/28 15:42:19.4019,46.48054839726421,54.92570739948038 +324.694,2024/05/28 15:42:19.5479,43.56583075295911,54.01974947492198 +324.792,2024/05/28 15:42:19.6459,43.38733593504336,53.09833644600679 +325.039,2024/05/28 15:42:19.8929,43.206800231062836,53.09833644600679 +325.186,2024/05/28 15:42:20.0399,43.56800734906166,53.199937343321494 +325.285,2024/05/28 15:42:20.1389,41.1284642882848,52.21110992882645 +325.531,2024/05/28 15:42:20.3849,41.9958399691293,50.57634493186184 +325.778,2024/05/28 15:42:20.6319,42.823092384592975,50.57634493186184 +325.925,2024/05/28 15:42:20.7789,43.77056167066619,50.5816172141619 +326.024,2024/05/28 15:42:20.8779,44.51848382749491,50.58688894697255 +326.27,2024/05/28 15:42:21.1239,44.94800316483283,50.51270467252108 +326.517,2024/05/28 15:42:21.3709,45.71386519716358,50.35275563462242 +326.663,2024/05/28 15:42:21.5169,46.92484820764391,50.40833264451424 +326.763,2024/05/28 15:42:21.6169,45.850945414488216,48.67237409455183 +327.009,2024/05/28 15:42:21.8629,42.64670420220567,48.44034131451456 +327.156,2024/05/28 15:42:22.0099,43.27544763276487,45.44813894246202 +327.256,2024/05/28 15:42:22.1099,37.1263762854933,40.694389457679954 +327.895,2024/05/28 15:42:22.7489,37.14527243631284,35.346381238631295 +327.995,2024/05/28 15:42:22.8489,37.34217362493204,35.40338966822245 +328.24,2024/05/28 15:42:23.0939,37.478714265414624,35.40338966822245 +328.487,2024/05/28 15:42:23.3409,30.992194048729665,30.965572280625892 +328.733,2024/05/28 15:42:23.5869,30.85973085601752,25.77466456296441 +328.88,2024/05/28 15:42:23.7339,24.04500091423606,21.82506204649447 +328.979,2024/05/28 15:42:23.8329,23.55841358357582,16.98038083593337 +329.127,2024/05/28 15:42:23.9809,22.85810804612608,17.22981911299903 +329.226,2024/05/28 15:42:24.0799,17.117041317014365,14.838014242703323 +329.865,2024/05/28 15:42:24.7189,15.871647532704383,11.906580813426947 +329.965,2024/05/28 15:42:24.8189,14.412039985783688,11.974973903938164 +330.358,2024/05/28 15:42:25.2119,10.009420849741113,11.554220008291344 +330.704,2024/05/28 15:42:25.5579,9.721938693189177,8.64291617453276 +330.95,2024/05/28 15:42:25.8039,9.419715201791659,8.64291617453276 +331.097,2024/05/28 15:42:25.9509,8.77273728891604,9.664367542679656 +331.195,2024/05/28 15:42:26.0489,8.39163513446536,10.58772874605314 +331.443,2024/05/28 15:42:26.2969,7.985331379566412,10.58772874605314 +331.589,2024/05/28 15:42:26.4429,9.853000009921459,12.653062870309308 +331.688,2024/05/28 15:42:26.5419,10.056678458084699,14.785127662620976 +331.934,2024/05/28 15:42:26.7879,10.234323588320514,14.785127662620976 +332.181,2024/05/28 15:42:27.0349,10.387271167104423,14.785127662620976 +332.328,2024/05/28 15:42:27.1819,12.323232894237888,17.079227148791013 +332.427,2024/05/28 15:42:27.2809,12.469917825503966,19.099738218101315 +332.674,2024/05/28 15:42:27.5279,12.597025739093048,19.099738218101315 +332.92,2024/05/28 15:42:27.7739,12.705144220168469,19.099738218101315 +333.067,2024/05/28 15:42:27.9209,13.836691186429446,20.583974348992957 +333.166,2024/05/28 15:42:28.0199,13.938658719427048,21.968158775828257 +333.413,2024/05/28 15:42:28.2669,14.023830293185288,21.968158775828257 +333.561,2024/05/28 15:42:28.4149,14.184984776289182,22.410562985639906 +333.659,2024/05/28 15:42:28.5129,14.258532432425985,22.84440121050816 +333.904,2024/05/28 15:42:28.7579,14.311999627356062,22.7559516024563 +334.151,2024/05/28 15:42:29.0049,14.365867913900859,22.66715685744465 +334.298,2024/05/28 15:42:29.1519,14.370667762986113,22.670097779527403 +334.397,2024/05/28 15:42:29.2509,14.395281794085829,22.673038320142865 +334.644,2024/05/28 15:42:29.4979,14.404221922599838,22.673038320142865 +334.89,2024/05/28 15:42:29.7439,14.342445646630162,22.45959334746142 +335.037,2024/05/28 15:42:29.8909,14.476457304605173,22.271057451320086 +335.136,2024/05/28 15:42:29.9899,14.440683271003346,22.105806175452337 +335.382,2024/05/28 15:42:30.2359,14.48645820290349,22.03028218914441 +335.53,2024/05/28 15:42:30.3839,14.500138723081504,21.993180761317813 +335.628,2024/05/28 15:42:30.4819,14.540035889854684,21.95601663933298 +335.875,2024/05/28 15:42:30.7289,14.540035889854684,21.90738079582617 +336.121,2024/05/28 15:42:30.9749,14.540035889854684,21.90738079582617 +336.269,2024/05/28 15:42:31.1229,14.79394874738758,21.98332701541481 +336.367,2024/05/28 15:42:31.2209,14.363267325924173,21.581627989256663 +336.614,2024/05/28 15:42:31.4679,14.363267325924173,21.093442898999047 +336.86,2024/05/28 15:42:31.7139,14.363267325924173,21.093442898999047 +337.007,2024/05/28 15:42:31.8609,12.929339352497836,19.8158185969358 +337.106,2024/05/28 15:42:31.9599,12.929339352497836,18.4499322491981 +337.353,2024/05/28 15:42:32.2069,12.929339352497836,18.4499322491981 +337.499,2024/05/28 15:42:32.3529,13.529406032280233,18.773207859429174 +337.599,2024/05/28 15:42:32.4529,10.573008358419909,17.053836323048646 +337.846,2024/05/28 15:42:32.6999,10.573008358419909,14.737706741552431 +338.092,2024/05/28 15:42:32.9459,10.573008358419909,14.737706741552431 +338.239,2024/05/28 15:42:33.0929,10.62425115684718,14.765951826188969 +338.338,2024/05/28 15:42:33.1919,6.945518690864316,12.614806115566475 +338.584,2024/05/28 15:42:33.4379,7.1220073368282755,9.726253132630262 +338.83,2024/05/28 15:42:33.6839,7.284134862133212,9.726253132630262 +338.978,2024/05/28 15:42:33.8319,5.577561779342877,8.637129152675673 +339.469,2024/05/28 15:42:34.3229,6.856828126335976,8.035338615557322 +339.569,2024/05/28 15:42:34.4229,7.015909670587046,8.378544026261364 +339.816,2024/05/28 15:42:34.6699,7.161198127463025,8.378544026261364 +340.062,2024/05/28 15:42:34.9159,7.290049902867442,8.370583412562512 +340.209,2024/05/28 15:42:35.0629,8.54070712300872,8.920014947670584 +340.308,2024/05/28 15:42:35.1619,8.618944650979296,9.444575162494075 +340.948,2024/05/28 15:42:35.8019,10.133363581326746,10.336021155809101 +341.047,2024/05/28 15:42:35.9009,10.03923338191953,11.102552259127929 +341.293,2024/05/28 15:42:36.1469,10.057535631982713,11.048378463225573 +341.44,2024/05/28 15:42:36.2939,11.21498381938482,11.819475453673906 +341.539,2024/05/28 15:42:36.3929,11.199394482815018,12.54325848148452 +341.785,2024/05/28 15:42:36.6389,11.177203812115533,12.54325848148452 +341.933,2024/05/28 15:42:36.7869,11.708332822027415,12.921558213569549 +342.032,2024/05/28 15:42:36.8859,11.661115263794576,13.289093272304171 +342.278,2024/05/28 15:42:37.1319,11.258508914976588,13.163079680176166 +342.524,2024/05/28 15:42:37.3779,11.188047809747934,13.035848009751163 +342.671,2024/05/28 15:42:37.5249,11.680664837011058,13.489502091132447 +342.771,2024/05/28 15:42:37.6249,11.585018069829035,13.92838827718412 +343.017,2024/05/28 15:42:37.8709,10.802085792631447,13.693063937629153 +343.263,2024/05/28 15:42:38.1169,10.671909631013563,13.45362404707371 +343.41,2024/05/28 15:42:38.2639,11.301307014234826,14.149204924659195 +343.51,2024/05/28 15:42:38.3639,9.875372828701561,14.400231479620967 +343.756,2024/05/28 15:42:38.6099,9.669302058523202,13.976170195491086 +343.903,2024/05/28 15:42:38.7569,9.992008300895765,14.54189350348388 +344.002,2024/05/28 15:42:38.8559,9.75263006083801,15.086417732516887 +344.249,2024/05/28 15:42:39.1029,9.478590515526705,15.129441496631658 +344.495,2024/05/28 15:42:39.3489,9.729443404719001,14.942110515809562 +344.642,2024/05/28 15:42:39.4959,9.721465761490778,15.261061562027722 +344.74,2024/05/28 15:42:39.5939,9.967129885831346,15.573481734452747 +344.988,2024/05/28 15:42:39.8419,10.081506911633204,15.546703830716014 +345.233,2024/05/28 15:42:40.0869,10.201701458275938,15.195394038984313 +345.381,2024/05/28 15:42:40.2349,10.306788299833375,15.018877010837617 +345.479,2024/05/28 15:42:40.3329,10.506484040660897,15.028861123407411 +345.726,2024/05/28 15:42:40.5799,10.695578633199814,15.028861123407411 +345.872,2024/05/28 15:42:40.7259,10.51872987394522,14.706007842601835 +345.972,2024/05/28 15:42:40.8259,10.680092125829226,14.375905768565216 +346.612,2024/05/28 15:42:41.4659,10.019291736278475,14.094916341243982 +346.958,2024/05/28 15:42:41.8119,10.168692091448168,13.808210118138652 +347.104,2024/05/28 15:42:41.9579,11.042498884279011,15.065412927187447 +347.204,2024/05/28 15:42:42.0579,10.460874010214274,15.672693876080567 +347.843,2024/05/28 15:42:42.6969,11.327364892260084,16.25730604989646 +347.943,2024/05/28 15:42:42.7969,11.468547693888851,17.337819932159867 +348.188,2024/05/28 15:42:43.0419,11.100585052412884,17.120163550620656 +348.336,2024/05/28 15:42:43.1899,12.20613186773441,17.649362594722792 +348.436,2024/05/28 15:42:43.2899,12.20613186773441,18.426430292743447 +348.681,2024/05/28 15:42:43.5349,12.20613186773441,18.426430292743447 +348.928,2024/05/28 15:42:43.7819,11.78465786179838,18.096961070853858 +349.074,2024/05/28 15:42:43.9279,13.108784454905281,18.75544365422121 +349.174,2024/05/28 15:42:44.0279,13.11417588701292,19.69856170722455 +349.567,2024/05/28 15:42:44.4209,14.692440780621375,20.945166506857852 +349.913,2024/05/28 15:42:44.7669,14.201707846144297,21.68409555411523 +350.16,2024/05/28 15:42:45.0139,14.201707846144297,21.236760581595302 +350.306,2024/05/28 15:42:45.1599,16.293853294188203,22.904875754592805 +350.405,2024/05/28 15:42:45.2589,15.975699937901288,24.127439427617123 +350.651,2024/05/28 15:42:45.5049,15.975699937901288,23.790754506740637 +350.799,2024/05/28 15:42:45.6529,18.329330806557273,25.781776509775273 +350.897,2024/05/28 15:42:45.7509,18.17668710252522,27.66827304573477 +351.144,2024/05/28 15:42:45.9979,18.203700520602823,27.49363562717743 +351.29,2024/05/28 15:42:46.1439,19.84236730407962,28.92058090702882 +351.39,2024/05/28 15:42:46.2439,19.67389308107678,30.43901005836644 +351.637,2024/05/28 15:42:46.4909,19.500191569943414,30.43901005836644 +351.883,2024/05/28 15:42:46.7369,19.40224539678092,30.434081772469057 +352.029,2024/05/28 15:42:46.8829,20.290448463518608,31.566860259878027 +352.522,2024/05/28 15:42:47.3759,20.629740834452726,31.592720680561843 +352.622,2024/05/28 15:42:47.4759,20.446200782466086,32.38466715386568 +352.868,2024/05/28 15:42:47.7219,20.224174677337174,32.384152502934725 +353.115,2024/05/28 15:42:47.9689,20.344278192468487,32.23507406537171 +353.261,2024/05/28 15:42:48.1149,20.677713028574846,32.98888701770138 +353.361,2024/05/28 15:42:48.2149,20.615834780049507,33.093302444250966 +353.607,2024/05/28 15:42:48.4609,20.27424049345243,32.54023150911294 +353.753,2024/05/28 15:42:48.6069,20.92570327304212,32.721552530404175 +354.346,2024/05/28 15:42:49.1999,20.563442620678472,32.90187431337816 +354.592,2024/05/28 15:42:49.4459,20.4433616238353,32.86943869310822 +354.739,2024/05/28 15:42:49.5929,20.79867922420577,33.028775333033465 +354.985,2024/05/28 15:42:49.8389,20.952491416341683,32.60623662225782 +355.33,2024/05/28 15:42:50.1839,20.816770427581485,33.09380606699689 +355.577,2024/05/28 15:42:50.4309,20.678157724920773,33.09380606699689 +355.723,2024/05/28 15:42:50.5769,20.831149310812037,33.06105463129289 +356.216,2024/05/28 15:42:51.0699,21.21344726412329,32.54023150911294 +356.316,2024/05/28 15:42:51.1699,20.86728727365087,32.10451681617401 +356.562,2024/05/28 15:42:51.4159,20.587799087433353,31.304951684997057 +356.709,2024/05/28 15:42:51.5629,21.037896839951323,31.78049716414141 +356.809,2024/05/28 15:42:51.6629,20.42944122989351,31.08643862951603 +357.055,2024/05/28 15:42:51.9089,20.094746840278187,29.878643431945388 +357.301,2024/05/28 15:42:52.1549,19.731094545264902,29.878643431945388 +357.448,2024/05/28 15:42:52.3019,19.731094545264902,28.857119283347277 +357.548,2024/05/28 15:42:52.4019,19.336850651117143,27.79808146857141 +357.794,2024/05/28 15:42:52.6479,18.910101904092205,27.79808146857141 +357.941,2024/05/28 15:42:52.7949,19.140406798549414,26.940675566882135 +358.04,2024/05/28 15:42:52.8939,18.679665014599074,26.055069884125558 +358.286,2024/05/28 15:42:53.1399,18.173651509687595,26.078087864463274 +358.532,2024/05/28 15:42:53.3859,17.609068980073822,26.078087864463274 +358.679,2024/05/28 15:42:53.5329,18.234771634212912,25.37058664411737 +358.778,2024/05/28 15:42:53.6319,18.046555375464614,26.00320493067473 +359.025,2024/05/28 15:42:53.8789,17.435068373699465,25.00933159176124 +359.171,2024/05/28 15:42:54.0249,17.90527437865423,25.812787528664934 +359.271,2024/05/28 15:42:54.1249,17.15112006664323,26.314128017727157 +359.517,2024/05/28 15:42:54.3709,16.987791424180063,25.172074474173424 +359.764,2024/05/28 15:42:54.6179,16.46926779214484,24.298833991229564 +359.911,2024/05/28 15:42:54.7649,16.72801353364464,24.75816363680204 +360.01,2024/05/28 15:42:54.8639,16.553639735899026,24.235648674352966 +360.257,2024/05/28 15:42:55.1109,15.886848461012622,23.22139817783015 +360.403,2024/05/28 15:42:55.2569,16.007756740476317,23.777440288362975 +360.503,2024/05/28 15:42:55.3569,15.959179248916467,23.51524328316989 +360.749,2024/05/28 15:42:55.6029,15.942749586191558,23.50886357667394 +360.996,2024/05/28 15:42:55.8499,15.104083333109989,22.817391028190173 +361.141,2024/05/28 15:42:55.9949,14.297174385258803,22.940502755316125 +361.241,2024/05/28 15:42:56.0949,14.293355099492949,22.310685033558844 +361.634,2024/05/28 15:42:56.4879,14.144411186623921,22.265818347113736 +361.98,2024/05/28 15:42:56.8339,13.874022695214526,21.756991213554016 +362.619,2024/05/28 15:42:57.4729,13.741831429423245,21.81895200660808 +362.719,2024/05/28 15:42:57.5729,13.462421090182678,21.1841135445094 +362.866,2024/05/28 15:42:57.7199,13.50134092957998,20.622802913280243 +362.965,2024/05/28 15:42:57.8189,13.218934521558788,20.780599927175665 +363.212,2024/05/28 15:42:58.0659,12.91532992713075,20.780599927175665 +363.458,2024/05/28 15:42:58.3119,12.38765607323298,19.77371993328519 +363.605,2024/05/28 15:42:58.4589,12.106092320173715,18.720754970531146 +363.704,2024/05/28 15:42:58.5579,11.772557217889341,18.728765753958978 +363.951,2024/05/28 15:42:58.8049,11.129591910405084,17.53757870022731 +364.096,2024/05/28 15:42:58.9499,10.83952961613432,16.342174477916537 +364.197,2024/05/28 15:42:59.0509,10.714100709961258,16.30950643030009 +364.443,2024/05/28 15:42:59.2969,10.56588524614421,16.30950643030009 +364.589,2024/05/28 15:42:59.4429,10.788243920896354,15.702441423761679 +364.689,2024/05/28 15:42:59.5429,10.615321826090394,15.070943345833841 +364.935,2024/05/28 15:42:59.7889,10.417933256339344,15.070943345833841 +365.328,2024/05/28 15:43:00.1819,11.417922994899305,14.846997451785777 +365.674,2024/05/28 15:43:00.5279,11.385814929525464,15.114011159627127 +365.821,2024/05/28 15:43:00.6749,12.734648183912613,16.075861822413543 +365.921,2024/05/28 15:43:00.7749,12.677974384063566,16.983325155379124 +366.167,2024/05/28 15:43:01.0209,12.138520427182682,16.306440445419103 +366.413,2024/05/28 15:43:01.2669,12.087040652051694,15.600213673750327 +366.56,2024/05/28 15:43:01.4139,12.65928399494152,16.064453512854605 +366.66,2024/05/28 15:43:01.5139,12.030660065408227,15.704564092432918 +366.906,2024/05/28 15:43:01.7599,11.969309412673123,14.849242404917497 +367.053,2024/05/28 15:43:01.9069,11.954944151077699,14.889593681494468 +367.152,2024/05/28 15:43:02.0059,11.879664842992172,14.929835899968895 +367.398,2024/05/28 15:43:02.2519,11.831382387346665,14.739968340083593 +367.644,2024/05/28 15:43:02.4979,11.75462735981159,14.547622944430932 +367.791,2024/05/28 15:43:02.6449,11.969357428099215,14.735444795910754 +367.891,2024/05/28 15:43:02.7449,11.894604205084649,14.951031179598727 +368.284,2024/05/28 15:43:03.1379,12.225138976253824,15.442365967256011 +368.63,2024/05/28 15:43:03.4839,12.150209307131778,15.871357849913158 +369.023,2024/05/28 15:43:03.8769,11.49657620198433,15.681198933755034 +369.369,2024/05/28 15:43:04.2229,11.39993950378124,15.488705562441298 +369.515,2024/05/28 15:43:04.3689,11.601080013148913,15.76176809032963 +369.615,2024/05/28 15:43:04.4689,11.484322146850166,16.03017987006592 +369.861,2024/05/28 15:43:04.7149,11.260958902443393,16.020819787597222 +370.007,2024/05/28 15:43:04.8609,11.828078807485381,16.649324310613927 +370.108,2024/05/28 15:43:04.9619,11.679877577702102,17.263641948712134 +370.353,2024/05/28 15:43:05.2069,11.696398895671262,17.18526500620032 +370.6,2024/05/28 15:43:05.4539,11.696398895671262,17.181385275931625 +370.746,2024/05/28 15:43:05.5999,12.680150113337666,18.089591850932774 +371.239,2024/05/28 15:43:06.0929,13.60311830377261,17.702165592567106 +371.339,2024/05/28 15:43:06.1929,13.60311830377261,18.489636737012077 +371.585,2024/05/28 15:43:06.4389,13.60311830377261,18.489636737012077 +371.732,2024/05/28 15:43:06.5859,14.743048235171564,19.449078812804135 +371.831,2024/05/28 15:43:06.6849,14.743048235171564,20.36336579906835 +372.078,2024/05/28 15:43:06.9319,14.043487466797927,19.61292091114087 +372.324,2024/05/28 15:43:07.1779,14.043487466797927,18.83259585576738 +372.571,2024/05/28 15:43:07.4249,14.043487466797927,18.83259585576738 +372.716,2024/05/28 15:43:07.5699,16.25164889955022,20.92844953645635 +372.816,2024/05/28 15:43:07.6699,16.053645699033986,22.508516906569685 +372.963,2024/05/28 15:43:07.8169,17.68527538709737,23.78164558365688 +373.062,2024/05/28 15:43:07.9159,17.68527538709737,25.282404948896772 +373.309,2024/05/28 15:43:08.1629,17.73434229262406,25.25866188063018 +373.455,2024/05/28 15:43:08.3089,18.720693571989386,26.32172740025497 +373.555,2024/05/28 15:43:08.4089,18.720693571989386,27.36542831140537 +374.194,2024/05/28 15:43:09.0479,19.051171261552824,27.908182790476822 +374.294,2024/05/28 15:43:09.1479,18.66649219951939,28.34137140883153 +374.54,2024/05/28 15:43:09.3939,18.683818064611415,28.22587465429548 +374.686,2024/05/28 15:43:09.5399,17.696158424605684,27.949955277245078 +374.787,2024/05/28 15:43:09.6409,17.696158424605684,27.698375403622503 +375.033,2024/05/28 15:43:09.8869,17.595062003209566,27.688746209726915 +375.28,2024/05/28 15:43:10.1339,17.595062003209566,27.67911366596361 +375.425,2024/05/28 15:43:10.2789,18.191478363720385,27.660441066620756 diff --git a/data/case-study/processed/hrv_02.csv b/data/case-study/processed/hrv_02.csv index 6f9d9f3..ba18235 100755 --- a/data/case-study/processed/hrv_02.csv +++ b/data/case-study/processed/hrv_02.csv @@ -1,1212 +1,1212 @@ reltime,datetime,sdnn,rmssd -0.001,2024/06/05 13:46:18.4069,29.914950611461705,26.756616544802892 -0.001,2024/06/05 13:46:18.4069,29.914950611461705,26.756616544802892 -0.046,2024/06/05 13:46:18.4519,29.914950611461705,26.756616544802892 -0.505,2024/06/05 13:46:18.9109,29.914950611461705,26.756616544802892 -0.784,2024/06/05 13:46:19.1899,29.914950611461705,26.756616544802892 -0.998,2024/06/05 13:46:19.4039,29.914950611461705,26.756616544802892 -1.031,2024/06/05 13:46:19.4369,29.914950611461705,26.756616544802892 -1.277,2024/06/05 13:46:19.6829,29.914950611461705,26.756616544802892 -1.737,2024/06/05 13:46:20.1429,29.914950611461705,26.756616544802892 -2.475,2024/06/05 13:46:20.8809,29.914950611461705,26.756616544802892 -2.508,2024/06/05 13:46:20.9139,29.914950611461705,26.756616544802892 -2.755,2024/06/05 13:46:21.1609,29.914950611461705,26.756616544802892 -3.001,2024/06/05 13:46:21.4069,29.914950611461705,26.756616544802892 -3.214,2024/06/05 13:46:21.6199,29.914950611461705,26.756616544802892 -3.707,2024/06/05 13:46:22.1129,29.914950611461705,26.756616544802892 -4.692,2024/06/05 13:46:23.0979,29.914950611461705,26.756616544802892 -5.185,2024/06/05 13:46:23.5909,29.914950611461705,26.756616544802892 -5.677,2024/06/05 13:46:24.0829,29.914950611461705,26.756616544802892 -5.711,2024/06/05 13:46:24.1169,29.914950611461705,26.756616544802892 -5.956,2024/06/05 13:46:24.3619,29.914950611461705,26.756616544802892 -6.203,2024/06/05 13:46:24.6089,29.914950611461705,26.756616544802892 -6.416,2024/06/05 13:46:24.8219,29.914950611461705,26.756616544802892 -6.908,2024/06/05 13:46:25.3139,29.914950611461705,26.756616544802892 -7.4,2024/06/05 13:46:25.8059,29.914950611461705,26.756616544802892 -7.893,2024/06/05 13:46:26.2989,29.914950611461705,26.756616544802892 -8.386,2024/06/05 13:46:26.7919,29.914950611461705,26.756616544802892 -8.912,2024/06/05 13:46:27.3179,29.914950611461705,26.756616544802892 -9.125,2024/06/05 13:46:27.5309,29.914950611461705,26.756616544802892 -9.158,2024/06/05 13:46:27.5639,29.914950611461705,26.756616544802892 -9.405,2024/06/05 13:46:27.8109,29.914950611461705,26.756616544802892 -9.617,2024/06/05 13:46:28.0229,29.914950611461705,26.756616544802892 -10.11,2024/06/05 13:46:28.5159,29.914950611461705,26.756616544802892 -11.095,2024/06/05 13:46:29.5009,29.914950611461705,26.756616544802892 -11.587,2024/06/05 13:46:29.9929,29.914950611461705,26.756616544802892 -12.08,2024/06/05 13:46:30.4859,29.914950611461705,26.756616544802892 -12.113,2024/06/05 13:46:30.5189,29.914950611461705,26.756616544802892 -12.36,2024/06/05 13:46:30.7659,29.914950611461705,26.756616544802892 -12.606,2024/06/05 13:46:31.0119,29.914950611461705,26.756616544802892 -12.819,2024/06/05 13:46:31.2249,29.914950611461705,26.756616544802892 -13.312,2024/06/05 13:46:31.7179,29.914950611461705,26.756616544802892 -15.281,2024/06/05 13:46:33.6869,29.914950611461705,26.756616544802892 -15.315,2024/06/05 13:46:33.7209,29.914950611461705,26.756616544802892 -15.562,2024/06/05 13:46:33.9679,29.914950611461705,26.756616544802892 -15.807,2024/06/05 13:46:34.2129,29.914950611461705,26.756616544802892 -16.021,2024/06/05 13:46:34.4269,29.914950611461705,26.756616544802892 -16.513,2024/06/05 13:46:34.9189,29.914950611461705,26.756616544802892 -17.006,2024/06/05 13:46:35.4119,29.914950611461705,26.756616544802892 -17.498,2024/06/05 13:46:35.9039,29.914950611461705,26.756616544802892 -17.991,2024/06/05 13:46:36.3969,29.914950611461705,26.756616544802892 -18.517,2024/06/05 13:46:36.9229,29.914950611461705,26.756616544802892 -18.729,2024/06/05 13:46:37.1349,29.914950611461705,26.756616544802892 -18.763,2024/06/05 13:46:37.1689,29.914950611461705,26.756616544802892 -19.714,2024/06/05 13:46:38.1199,29.914950611461705,26.756616544802892 -20.207,2024/06/05 13:46:38.6129,29.914950611461705,26.756616544802892 -20.7,2024/06/05 13:46:39.1059,29.914950611461705,26.756616544802892 -21.192,2024/06/05 13:46:39.5979,29.914950611461705,26.756616544802892 -21.718,2024/06/05 13:46:40.1239,29.914950611461705,26.756616544802892 -21.93,2024/06/05 13:46:40.3359,29.914950611461705,26.756616544802892 -21.964,2024/06/05 13:46:40.3699,29.914950611461705,26.756616544802892 -22.211,2024/06/05 13:46:40.6169,29.914950611461705,26.756616544802892 -22.423,2024/06/05 13:46:40.8289,29.914950611461705,26.756616544802892 -24.398,2024/06/05 13:46:42.8039,29.914950611461705,26.756616544802892 -25.132,2024/06/05 13:46:43.5379,29.914950611461705,26.756616544802892 -25.166,2024/06/05 13:46:43.5719,29.914950611461705,26.756616544802892 -25.413,2024/06/05 13:46:43.8189,29.914950611461705,26.756616544802892 -25.625,2024/06/05 13:46:44.0309,29.914950611461705,26.756616544802892 -26.61,2024/06/05 13:46:45.0159,29.914950611461705,26.756616544802892 -27.102,2024/06/05 13:46:45.5079,29.914950611461705,26.756616544802892 -27.136,2024/06/05 13:46:45.5419,29.914950611461705,26.756616544802892 -27.349,2024/06/05 13:46:45.7549,29.914950611461705,26.756616544802892 -27.383,2024/06/05 13:46:45.7889,29.914950611461705,26.756616544802892 -27.629,2024/06/05 13:46:46.0349,29.914950611461705,26.756616544802892 -27.875,2024/06/05 13:46:46.2809,29.914950611461705,26.756616544802892 -28.088,2024/06/05 13:46:46.4939,29.914950611461705,26.756616544802892 -28.121,2024/06/05 13:46:46.5269,29.914950611461705,26.756616544802892 -28.367,2024/06/05 13:46:46.7729,29.914950611461705,26.756616544802892 -28.614,2024/06/05 13:46:47.0199,29.914950611461705,26.756616544802892 -28.827,2024/06/05 13:46:47.2329,29.914950611461705,26.756616544802892 -28.86,2024/06/05 13:46:47.2659,29.914950611461705,26.756616544802892 -29.106,2024/06/05 13:46:47.5119,29.914950611461705,26.756616544802892 -29.319,2024/06/05 13:46:47.7249,29.914950611461705,26.756616544802892 -29.352,2024/06/05 13:46:47.7579,29.914950611461705,26.756616544802892 -29.599,2024/06/05 13:46:48.0049,29.914950611461705,26.756616544802892 -29.845,2024/06/05 13:46:48.2509,29.914950611461705,26.756616544802892 -30.058,2024/06/05 13:46:48.4639,29.914950611461705,26.756616544802892 -30.092,2024/06/05 13:46:48.4979,29.914950611461705,26.756616544802892 -30.338,2024/06/05 13:46:48.7439,29.914950611461705,26.756616544802892 -30.55,2024/06/05 13:46:48.9559,29.914950611461705,26.756616544802892 -30.584,2024/06/05 13:46:48.9899,29.914950611461705,26.756616544802892 -30.831,2024/06/05 13:46:49.2369,29.914950611461705,26.756616544802892 -31.076,2024/06/05 13:46:49.4819,29.914950611461705,26.756616544802892 -31.289,2024/06/05 13:46:49.6949,29.914950611461705,26.756616544802892 -31.323,2024/06/05 13:46:49.7289,29.914950611461705,26.756616544802892 -31.782,2024/06/05 13:46:50.1879,29.914950611461705,26.756616544802892 -32.062,2024/06/05 13:46:50.4679,29.914950611461705,26.756616544802892 -32.274,2024/06/05 13:46:50.6799,29.914950611461705,26.756616544802892 -33.013,2024/06/05 13:46:51.4189,29.914950611461705,26.756616544802892 -33.293,2024/06/05 13:46:51.6989,29.914950611461705,26.756616544802892 -33.539,2024/06/05 13:46:51.9449,29.914950611461705,26.756616544802892 -33.752,2024/06/05 13:46:52.1579,29.914950611461705,26.756616544802892 -33.786,2024/06/05 13:46:52.1919,29.914950611461705,26.756616544802892 -34.491,2024/06/05 13:46:52.8969,29.914950611461705,26.756616544802892 -36.461,2024/06/05 13:46:54.8669,29.914950611461705,26.756616544802892 -36.494,2024/06/05 13:46:54.8999,29.914950611461705,26.756616544802892 -36.707,2024/06/05 13:46:55.1129,29.914950611461705,26.756616544802892 -37.2,2024/06/05 13:46:55.6059,29.914950611461705,26.756616544802892 -38.185,2024/06/05 13:46:56.5909,29.914950611461705,26.756616544802892 -38.677,2024/06/05 13:46:57.0829,29.914950611461705,26.756616544802892 -39.17,2024/06/05 13:46:57.5759,29.914950611461705,26.756616544802892 -39.663,2024/06/05 13:46:58.0689,29.914950611461705,26.756616544802892 -39.697,2024/06/05 13:46:58.1029,29.914950611461705,26.756616544802892 -39.942,2024/06/05 13:46:58.3479,29.914950611461705,26.756616544802892 -40.189,2024/06/05 13:46:58.5949,29.914950611461705,26.756616544802892 -40.401,2024/06/05 13:46:58.8069,29.914950611461705,26.756616544802892 -40.894,2024/06/05 13:46:59.2999,29.914950611461705,26.756616544802892 -41.879,2024/06/05 13:47:00.2849,29.914950611461705,26.756616544802892 -42.372,2024/06/05 13:47:00.7779,29.914950611461705,26.756616544802892 -42.863,2024/06/05 13:47:01.2689,29.914950611461705,26.756616544802892 -42.898,2024/06/05 13:47:01.3039,29.914950611461705,26.756616544802892 -43.144,2024/06/05 13:47:01.5499,29.914950611461705,26.756616544802892 -43.357,2024/06/05 13:47:01.7629,29.914950611461705,26.756616544802892 -43.391,2024/06/05 13:47:01.7969,29.914950611461705,26.756616544802892 -44.095,2024/06/05 13:47:02.5009,29.914950611461705,26.756616544802892 -44.588,2024/06/05 13:47:02.9939,29.914950611461705,26.756616544802892 -45.08,2024/06/05 13:47:03.4859,29.914950611461705,26.756616544802892 -46.066,2024/06/05 13:47:04.4719,29.914950611461705,26.756616544802892 -46.311,2024/06/05 13:47:04.7169,29.914950611461705,26.756616544802892 -46.345,2024/06/05 13:47:04.7509,29.914950611461705,26.756616544802892 -46.592,2024/06/05 13:47:04.9979,29.914950611461705,26.756616544802892 -47.296,2024/06/05 13:47:05.7019,29.914950611461705,26.756616544802892 -47.789,2024/06/05 13:47:06.1949,29.914950611461705,26.756616544802892 -48.282,2024/06/05 13:47:06.6879,29.914950611461705,26.756616544802892 -48.774,2024/06/05 13:47:07.1799,29.914950611461705,26.756616544802892 -49.3,2024/06/05 13:47:07.7059,29.914950611461705,26.756616544802892 -49.513,2024/06/05 13:47:07.9189,29.914950611461705,26.756616544802892 -49.548,2024/06/05 13:47:07.9539,29.914950611461705,26.756616544802892 -49.793,2024/06/05 13:47:08.1989,29.914950611461705,26.756616544802892 -50.006,2024/06/05 13:47:08.4119,29.914950611461705,26.756616544802892 -50.498,2024/06/05 13:47:08.9039,29.914950611461705,26.756616544802892 -51.484,2024/06/05 13:47:09.8899,29.914950611461705,26.756616544802892 -51.976,2024/06/05 13:47:10.3819,29.914950611461705,26.756616544802892 -52.469,2024/06/05 13:47:10.8749,29.914950611461705,26.756616544802892 -52.503,2024/06/05 13:47:10.9089,29.914950611461705,26.756616544802892 -52.749,2024/06/05 13:47:11.1549,29.914950611461705,26.756616544802892 -52.961,2024/06/05 13:47:11.3669,29.914950611461705,26.756616544802892 -52.995,2024/06/05 13:47:11.4009,29.914950611461705,26.756616544802892 -53.7,2024/06/05 13:47:12.1059,29.914950611461705,26.756616544802892 -54.192,2024/06/05 13:47:12.5979,29.914950611461705,26.756616544802892 -54.685,2024/06/05 13:47:13.0909,29.914950611461705,26.756616544802892 -55.178,2024/06/05 13:47:13.5839,29.914950611461705,26.756616544802892 -55.704,2024/06/05 13:47:14.1099,29.914950611461705,26.756616544802892 -55.916,2024/06/05 13:47:14.3219,29.914950611461705,26.756616544802892 -55.95,2024/06/05 13:47:14.3559,29.914950611461705,26.756616544802892 -56.409,2024/06/05 13:47:14.8149,29.914950611461705,26.756616544802892 -57.394,2024/06/05 13:47:15.7999,29.914950611461705,26.756616544802892 -57.64,2024/06/05 13:47:16.0459,29.914950611461705,26.756616544802892 -57.921,2024/06/05 13:47:16.3269,29.914950611461705,26.756616544802892 -58.132,2024/06/05 13:47:16.5379,29.914950611461705,26.756616544802892 -58.167,2024/06/05 13:47:16.5729,29.914950611461705,26.756616544802892 -58.413,2024/06/05 13:47:16.8189,29.914950611461705,26.756616544802892 -58.659,2024/06/05 13:47:17.0649,29.914950611461705,26.756616544802892 -58.871,2024/06/05 13:47:17.2769,29.914950611461705,26.756616544802892 -58.905,2024/06/05 13:47:17.3109,29.914950611461705,26.756616544802892 -59.152,2024/06/05 13:47:17.5579,29.914950611461705,26.756616544802892 -59.364,2024/06/05 13:47:17.7699,29.914950611461705,26.756616544802892 -59.399,2024/06/05 13:47:17.8049,29.914950611461705,26.756616544802892 -59.645,2024/06/05 13:47:18.0509,29.914950611461705,26.756616544802892 -59.891,2024/06/05 13:47:18.2969,29.914950611461705,26.756616544802892 -60.103,2024/06/05 13:47:18.5089,29.914950611461705,26.756616544802892 -60.137,2024/06/05 13:47:18.5429,29.914950611461705,26.756616544802892 -60.383,2024/06/05 13:47:18.7889,29.914950611461705,26.756616544802892 -60.596,2024/06/05 13:47:19.0019,29.914950611461705,26.756616544802892 -61.334,2024/06/05 13:47:19.7399,29.914950611461705,26.756616544802892 -61.369,2024/06/05 13:47:19.7749,29.914950611461705,26.756616544802892 -61.614,2024/06/05 13:47:20.0199,29.914950611461705,26.756616544802892 -61.827,2024/06/05 13:47:20.2329,29.914950611461705,26.756616544802892 -61.861,2024/06/05 13:47:20.2669,29.914950611461705,26.756616544802892 -62.107,2024/06/05 13:47:20.5129,29.914950611461705,26.756616544802892 -62.353,2024/06/05 13:47:20.7589,29.914950611461705,26.756616544802892 -62.565,2024/06/05 13:47:20.9709,29.914950611461705,26.756616544802892 -62.599,2024/06/05 13:47:21.0049,29.914950611461705,26.756616544802892 -62.846,2024/06/05 13:47:21.2519,29.914950611461705,26.756616544802892 -63.059,2024/06/05 13:47:21.4649,29.914950611461705,26.756616544802892 -63.093,2024/06/05 13:47:21.4989,29.914950611461705,26.756616544802892 -63.339,2024/06/05 13:47:21.7449,29.914950611461705,26.756616544802892 -64.044,2024/06/05 13:47:22.4499,29.914950611461705,26.756616544802892 -64.077,2024/06/05 13:47:22.4829,29.914950611461705,26.756616544802892 -64.289,2024/06/05 13:47:22.6949,29.914950611461705,26.756616544802892 -65.275,2024/06/05 13:47:23.6809,29.914950611461705,26.756616544802892 -65.768,2024/06/05 13:47:24.1739,29.914950611461705,26.756616544802892 -66.26,2024/06/05 13:47:24.6659,29.914950611461705,26.756616544802892 -66.752,2024/06/05 13:47:25.1579,29.914950611461705,26.756616544802892 -67.491,2024/06/05 13:47:25.8969,29.914950611461705,26.756616544802892 -67.772,2024/06/05 13:47:26.1779,29.914950611461705,26.756616544802892 -68.476,2024/06/05 13:47:26.8819,29.914950611461705,26.756616544802892 -68.968,2024/06/05 13:47:27.3739,29.914950611461705,26.756616544802892 -69.461,2024/06/05 13:47:27.8669,29.914950611461705,26.756616544802892 -70.446,2024/06/05 13:47:28.8519,29.914950611461705,26.756616544802892 -70.48,2024/06/05 13:47:28.8859,29.914950611461705,26.756616544802892 -70.693,2024/06/05 13:47:29.0989,29.914950611461705,26.756616544802892 -70.726,2024/06/05 13:47:29.1319,29.914950611461705,26.756616544802892 -71.677,2024/06/05 13:47:30.0829,29.914950611461705,26.756616544802892 -73.648,2024/06/05 13:47:32.0539,29.914950611461705,26.756616544802892 -73.895,2024/06/05 13:47:32.3009,29.914950611461705,26.756616544802892 -74.175,2024/06/05 13:47:32.5809,29.914950611461705,26.756616544802892 -74.879,2024/06/05 13:47:33.2849,29.914950611461705,26.756616544802892 -75.372,2024/06/05 13:47:33.7779,29.914950611461705,26.756616544802892 -75.864,2024/06/05 13:47:34.2699,29.914950611461705,26.756616544802892 -76.357,2024/06/05 13:47:34.7629,29.914950611461705,26.756616544802892 -77.13,2024/06/05 13:47:35.5359,29.914950611461705,26.756616544802892 -77.376,2024/06/05 13:47:35.7819,29.914950611461705,26.756616544802892 -77.588,2024/06/05 13:47:35.9939,29.914950611461705,26.756616544802892 -78.081,2024/06/05 13:47:36.4869,29.914950611461705,26.756616544802892 -78.574,2024/06/05 13:47:36.9799,29.914950611461705,26.756616544802892 -79.065,2024/06/05 13:47:37.4709,29.914950611461705,26.756616544802892 -80.051,2024/06/05 13:47:38.4569,29.914950611461705,26.756616544802892 -80.297,2024/06/05 13:47:38.7029,29.914950611461705,26.756616544802892 -81.036,2024/06/05 13:47:39.4419,29.914950611461705,26.756616544802892 -81.775,2024/06/05 13:47:40.1809,29.914950611461705,26.756616544802892 -82.268,2024/06/05 13:47:40.6739,29.914950611461705,26.756616544802892 -82.76,2024/06/05 13:47:41.1659,29.914950611461705,26.756616544802892 -83.252,2024/06/05 13:47:41.6579,29.914950611461705,26.756616544802892 -83.287,2024/06/05 13:47:41.6929,29.914950611461705,26.756616544802892 -83.533,2024/06/05 13:47:41.9389,29.914950611461705,26.756616544802892 -83.779,2024/06/05 13:47:42.1849,29.914950611461705,26.756616544802892 -83.991,2024/06/05 13:47:42.3969,29.914950611461705,26.756616544802892 -84.977,2024/06/05 13:47:43.3829,29.914950611461705,26.756616544802892 -85.469,2024/06/05 13:47:43.8749,29.914950611461705,26.756616544802892 -86.454,2024/06/05 13:47:44.8599,29.914950611461705,26.756616544802892 -86.489,2024/06/05 13:47:44.8949,29.914950611461705,26.756616544802892 -86.735,2024/06/05 13:47:45.1409,29.914950611461705,26.756616544802892 -86.981,2024/06/05 13:47:45.3869,29.914950611461705,26.756616544802892 -87.193,2024/06/05 13:47:45.5989,29.914950611461705,26.756616544802892 -87.44,2024/06/05 13:47:45.8459,29.914950611461705,26.756616544802892 -88.178,2024/06/05 13:47:46.5839,29.914950611461705,26.756616544802892 -88.67,2024/06/05 13:47:47.0759,29.914950611461705,26.756616544802892 -89.197,2024/06/05 13:47:47.6029,29.914950611461705,26.756616544802892 -89.41,2024/06/05 13:47:47.8159,29.914950611461705,26.756616544802892 -89.444,2024/06/05 13:47:47.8499,29.914950611461705,26.756616544802892 -90.183,2024/06/05 13:47:48.5889,29.914950611461705,26.756616544802892 -90.394,2024/06/05 13:47:48.7999,29.914950611461705,26.756616544802892 -90.429,2024/06/05 13:47:48.8349,29.914950611461705,26.756616544802892 -90.64,2024/06/05 13:47:49.0459,29.914950611461705,26.756616544802892 -90.675,2024/06/05 13:47:49.0809,29.914950611461705,26.756616544802892 -90.922,2024/06/05 13:47:49.3279,29.914950611461705,26.756616544802892 -91.168,2024/06/05 13:47:49.5739,29.914950611461705,26.756616544802892 -91.379,2024/06/05 13:47:49.7849,29.914950611461705,26.756616544802892 -91.414,2024/06/05 13:47:49.8199,29.914950611461705,26.756616544802892 -91.661,2024/06/05 13:47:50.0669,29.914950611461705,26.756616544802892 -91.872,2024/06/05 13:47:50.2779,29.914950611461705,26.756616544802892 -91.906,2024/06/05 13:47:50.3119,29.914950611461705,26.756616544802892 -92.152,2024/06/05 13:47:50.5579,29.914950611461705,26.756616544802892 -92.399,2024/06/05 13:47:50.8049,29.914950611461705,26.756616544802892 -92.611,2024/06/05 13:47:51.0169,29.914950611461705,26.756616544802892 -93.103,2024/06/05 13:47:51.5089,29.914950611461705,26.756616544802892 -93.138,2024/06/05 13:47:51.5439,29.914950611461705,26.756616544802892 -93.384,2024/06/05 13:47:51.7899,29.914950611461705,26.756616544802892 -93.63,2024/06/05 13:47:52.0359,29.914950611461705,26.756616544802892 -93.842,2024/06/05 13:47:52.2479,29.914950611461705,26.756616544802892 -93.877,2024/06/05 13:47:52.2829,29.914950611461705,26.756616544802892 -94.581,2024/06/05 13:47:52.9869,29.914950611461705,26.756616544802892 -94.615,2024/06/05 13:47:53.0209,29.914950611461705,26.756616544802892 -94.862,2024/06/05 13:47:53.2679,29.914950611461705,26.756616544802892 -95.073,2024/06/05 13:47:53.4789,29.914950611461705,26.756616544802892 -95.812,2024/06/05 13:47:54.2179,29.914950611461705,26.756616544802892 -96.093,2024/06/05 13:47:54.4989,29.914950611461705,26.756616544802892 -96.34,2024/06/05 13:47:54.7459,29.914950611461705,26.756616544802892 -96.551,2024/06/05 13:47:54.9569,29.914950611461705,26.756616544802892 -96.585,2024/06/05 13:47:54.9909,29.914950611461705,26.756616544802892 -96.832,2024/06/05 13:47:55.2379,29.914950611461705,26.756616544802892 -97.043,2024/06/05 13:47:55.4489,29.914950611461705,26.756616544802892 -97.078,2024/06/05 13:47:55.4839,29.914950611461705,26.756616544802892 -97.325,2024/06/05 13:47:55.7309,29.914950611461705,26.756616544802892 -97.571,2024/06/05 13:47:55.9769,29.914950611461705,26.756616544802892 -97.783,2024/06/05 13:47:56.1889,29.914950611461705,26.756616544802892 -97.817,2024/06/05 13:47:56.2229,29.914950611461705,26.756616544802892 -98.063,2024/06/05 13:47:56.4689,29.914950611461705,26.756616544802892 -98.276,2024/06/05 13:47:56.6819,29.914950611461705,26.756616544802892 -98.802,2024/06/05 13:47:57.2079,29.914950611461705,26.756616544802892 -99.014,2024/06/05 13:47:57.4199,29.914950611461705,26.756616544802892 -99.049,2024/06/05 13:47:57.4549,29.914950611461705,26.756616544802892 -99.295,2024/06/05 13:47:57.7009,29.914950611461705,26.756616544802892 -99.507,2024/06/05 13:47:57.9129,29.914950611461705,26.756616544802892 -99.541,2024/06/05 13:47:57.9469,29.914950611461705,26.756616544802892 -99.788,2024/06/05 13:47:58.1939,29.914950611461705,26.756616544802892 -100.033,2024/06/05 13:47:58.4389,29.914950611461705,26.756616544802892 -100.246,2024/06/05 13:47:58.6519,29.914950611461705,26.756616544802892 -100.28,2024/06/05 13:47:58.6859,29.914950611461705,26.756616544802892 -100.526,2024/06/05 13:47:58.9319,29.914950611461705,26.756616544802892 -100.737,2024/06/05 13:47:59.1429,29.914950611461705,26.756616544802892 -100.772,2024/06/05 13:47:59.1779,29.914950611461705,26.756616544802892 -101.019,2024/06/05 13:47:59.4249,29.914950611461705,26.756616544802892 -101.265,2024/06/05 13:47:59.6709,29.914950611461705,26.756616544802892 -101.477,2024/06/05 13:47:59.8829,29.914950611461705,26.756616544802892 -101.512,2024/06/05 13:47:59.9179,29.914950611461705,26.756616544802892 -101.758,2024/06/05 13:48:00.1639,29.914950611461705,26.756616544802892 -102.004,2024/06/05 13:48:00.4099,29.914950611461705,26.756616544802892 -102.215,2024/06/05 13:48:00.6209,29.914950611461705,26.756616544802892 -102.25,2024/06/05 13:48:00.6559,29.914950611461705,26.756616544802892 -102.496,2024/06/05 13:48:00.9019,29.914950611461705,26.756616544802892 -102.708,2024/06/05 13:48:01.1139,29.914950611461705,26.756616544802892 -102.742,2024/06/05 13:48:01.1479,29.914950611461705,26.756616544802892 -102.989,2024/06/05 13:48:01.3949,29.914950611461705,26.756616544802892 -103.2,2024/06/05 13:48:01.6059,29.914950611461705,26.756616544802892 -103.235,2024/06/05 13:48:01.6409,29.914950611461705,26.756616544802892 -103.481,2024/06/05 13:48:01.8869,29.914950611461705,26.756616544802892 -103.728,2024/06/05 13:48:02.1339,29.914950611461705,26.756616544802892 -103.939,2024/06/05 13:48:02.3449,29.914950611461705,26.756616544802892 -103.974,2024/06/05 13:48:02.3799,29.914950611461705,26.756616544802892 -104.22,2024/06/05 13:48:02.6259,29.914950611461705,26.756616544802892 -104.432,2024/06/05 13:48:02.8379,29.914950611461705,26.756616544802892 -104.467,2024/06/05 13:48:02.8729,29.914950611461705,26.756616544802892 -104.712,2024/06/05 13:48:03.1179,29.914950611461705,26.756616544802892 -104.924,2024/06/05 13:48:03.3299,29.914950611461705,26.756616544802892 -104.959,2024/06/05 13:48:03.3649,29.914950611461705,26.756616544802892 -105.206,2024/06/05 13:48:03.6119,29.914950611461705,26.756616544802892 -105.663,2024/06/05 13:48:04.0689,29.914950611461705,26.756616544802892 -106.156,2024/06/05 13:48:04.5619,29.914950611461705,26.756616544802892 -106.191,2024/06/05 13:48:04.5969,29.914950611461705,26.756616544802892 -106.436,2024/06/05 13:48:04.8419,29.914950611461705,26.756616544802892 -106.683,2024/06/05 13:48:05.0889,29.914950611461705,26.756616544802892 -106.894,2024/06/05 13:48:05.2999,29.914950611461705,26.756616544802892 -106.929,2024/06/05 13:48:05.3349,29.914950611461705,26.756616544802892 -107.175,2024/06/05 13:48:05.5809,29.914950611461705,26.756616544802892 -107.387,2024/06/05 13:48:05.7929,29.914950611461705,26.756616544802892 -107.422,2024/06/05 13:48:05.8279,29.914950611461705,26.756616544802892 -107.668,2024/06/05 13:48:06.0739,29.914950611461705,26.756616544802892 -107.914,2024/06/05 13:48:06.3199,29.914950611461705,26.756616544802892 -108.126,2024/06/05 13:48:06.5319,29.914950611461705,26.756616544802892 -108.161,2024/06/05 13:48:06.5669,29.914950611461705,26.756616544802892 -108.407,2024/06/05 13:48:06.8129,29.914950611461705,26.756616544802892 -108.654,2024/06/05 13:48:07.0599,29.914950611461705,26.756616544802892 -108.865,2024/06/05 13:48:07.2709,29.914950611461705,26.756616544802892 -108.9,2024/06/05 13:48:07.3059,29.914950611461705,26.756616544802892 -109.146,2024/06/05 13:48:07.5519,29.914950611461705,26.756616544802892 -109.392,2024/06/05 13:48:07.7979,29.914950611461705,26.756616544802892 -109.604,2024/06/05 13:48:08.0099,29.914950611461705,26.756616544802892 -109.638,2024/06/05 13:48:08.0439,29.914950611461705,26.756616544802892 -109.884,2024/06/05 13:48:08.2899,29.914950611461705,26.756616544802892 -110.097,2024/06/05 13:48:08.5029,29.914950611461705,26.756616544802892 -110.149,2024/06/05 13:48:08.5549,29.914950611461705,26.756616544802892 -110.377,2024/06/05 13:48:08.7829,29.914950611461705,26.756616544802892 -110.624,2024/06/05 13:48:09.0299,29.914950611461705,26.756616544802892 -110.835,2024/06/05 13:48:09.2409,29.914950611461705,26.756616544802892 -110.87,2024/06/05 13:48:09.2759,29.914950611461705,26.756616544802892 -111.116,2024/06/05 13:48:09.5219,29.914950611461705,26.756616544802892 -111.327,2024/06/05 13:48:09.7329,29.914950611461705,26.756616544802892 -111.362,2024/06/05 13:48:09.7679,29.914950611461705,26.756616544802892 -111.608,2024/06/05 13:48:10.0139,29.914950611461705,26.756616544802892 -111.855,2024/06/05 13:48:10.2609,29.914950611461705,26.756616544802892 -112.066,2024/06/05 13:48:10.4719,29.914950611461705,26.756616544802892 -112.101,2024/06/05 13:48:10.5069,29.914950611461705,26.756616544802892 -112.348,2024/06/05 13:48:10.7539,29.914950611461705,26.756616544802892 -112.593,2024/06/05 13:48:10.9989,29.914950611461705,26.756616544802892 -112.806,2024/06/05 13:48:11.2119,29.914950611461705,26.756616544802892 -112.84,2024/06/05 13:48:11.2459,29.914950611461705,26.756616544802892 -113.086,2024/06/05 13:48:11.4919,29.914950611461705,26.756616544802892 -113.297,2024/06/05 13:48:11.7029,29.914950611461705,26.756616544802892 -113.332,2024/06/05 13:48:11.7379,29.914950611461705,26.756616544802892 -113.579,2024/06/05 13:48:11.9849,29.914950611461705,26.756616544802892 -113.825,2024/06/05 13:48:12.2309,29.914950611461705,26.756616544802892 -114.037,2024/06/05 13:48:12.4429,29.914950611461705,26.756616544802892 -114.072,2024/06/05 13:48:12.4779,29.914950611461705,26.756616544802892 -114.317,2024/06/05 13:48:12.7229,29.914950611461705,26.756616544802892 -114.775,2024/06/05 13:48:13.1809,29.914950611461705,26.756616544802892 -115.056,2024/06/05 13:48:13.4619,29.914950611461705,26.756616544802892 -115.268,2024/06/05 13:48:13.6739,29.914950611461705,26.756616544802892 -115.303,2024/06/05 13:48:13.7089,29.914950611461705,26.756616544802892 -115.549,2024/06/05 13:48:13.9549,29.914950611461705,26.756616544802892 -115.795,2024/06/05 13:48:14.2009,29.914950611461705,26.756616544802892 -116.007,2024/06/05 13:48:14.4129,29.914950611461705,26.756616544802892 -116.042,2024/06/05 13:48:14.4479,29.914950611461705,26.756616544802892 -116.288,2024/06/05 13:48:14.6939,29.914950611461705,26.756616544802892 -116.535,2024/06/05 13:48:14.9409,29.914950611461705,26.756616544802892 -116.745,2024/06/05 13:48:15.1509,29.914950611461705,26.756616544802892 -116.78,2024/06/05 13:48:15.1859,29.914950611461705,26.756616544802892 -117.027,2024/06/05 13:48:15.4329,29.914950611461705,26.756616544802892 -117.238,2024/06/05 13:48:15.6439,29.914950611461705,26.756616544802892 -117.273,2024/06/05 13:48:15.6789,29.914950611461705,26.756616544802892 -117.52,2024/06/05 13:48:15.9259,29.914950611461705,26.756616544802892 -117.765,2024/06/05 13:48:16.1709,29.914950611461705,26.756616544802892 -117.977,2024/06/05 13:48:16.3829,29.914950611461705,26.756616544802892 -118.505,2024/06/05 13:48:16.9109,29.914950611461705,26.756616544802892 -118.715,2024/06/05 13:48:17.1209,29.914950611461705,26.756616544802892 -118.75,2024/06/05 13:48:17.1559,29.914950611461705,26.756616544802892 -118.996,2024/06/05 13:48:17.4019,29.914950611461705,26.756616544802892 -119.208,2024/06/05 13:48:17.6139,29.914950611461705,26.756616544802892 -119.243,2024/06/05 13:48:17.6489,29.914950611461705,26.756616544802892 -119.489,2024/06/05 13:48:17.8949,29.914950611461705,26.756616544802892 -119.735,2024/06/05 13:48:18.1409,29.914950611461705,26.756616544802892 -119.947,2024/06/05 13:48:18.3529,29.914950611461705,26.756616544802892 -119.982,2024/06/05 13:48:18.3879,29.914950611461705,26.756616544802892 -120.228,2024/06/05 13:48:18.6339,29.914950611461705,26.756616544802892 -120.439,2024/06/05 13:48:18.8449,29.914950611461705,26.756616544802892 -120.474,2024/06/05 13:48:18.8799,29.914950611461705,26.756616544802892 -120.721,2024/06/05 13:48:19.1269,29.914950611461705,26.756616544802892 -121.179,2024/06/05 13:48:19.5849,29.914950611461705,26.756616544802892 -121.459,2024/06/05 13:48:19.8649,29.914950611461705,26.756616544802892 -121.706,2024/06/05 13:48:20.1119,29.914950611461705,26.756616544802892 -121.917,2024/06/05 13:48:20.3229,29.914950611461705,26.756616544802892 -122.409,2024/06/05 13:48:20.8149,29.914950611461705,26.756616544802892 -122.444,2024/06/05 13:48:20.8499,29.914950611461705,26.756616544802892 -122.691,2024/06/05 13:48:21.0969,29.914950611461705,26.756616544802892 -122.938,2024/06/05 13:48:21.3439,29.914950611461705,26.756616544802892 -123.148,2024/06/05 13:48:21.5539,29.914950611461705,26.756616544802892 -123.184,2024/06/05 13:48:21.5899,29.914950611461705,26.756616544802892 -123.429,2024/06/05 13:48:21.8349,29.914950611461705,26.756616544802892 -123.676,2024/06/05 13:48:22.0819,29.914950611461705,26.756616544802892 -123.887,2024/06/05 13:48:22.2929,29.914950611461705,26.756616544802892 -123.922,2024/06/05 13:48:22.3279,29.914950611461705,26.756616544802892 -124.169,2024/06/05 13:48:22.5749,29.914950611461705,26.756616544802892 -124.38,2024/06/05 13:48:22.7859,29.914950611461705,26.756616544802892 -124.415,2024/06/05 13:48:22.8209,29.914950611461705,26.756616544802892 -124.661,2024/06/05 13:48:23.0669,29.914950611461705,26.756616544802892 -125.365,2024/06/05 13:48:23.7709,29.914950611461705,26.756616544802892 -125.4,2024/06/05 13:48:23.8059,29.914950611461705,26.756616544802892 -125.646,2024/06/05 13:48:24.0519,29.914950611461705,26.756616544802892 -125.858,2024/06/05 13:48:24.2639,29.914950611461705,26.756616544802892 -125.892,2024/06/05 13:48:24.2979,29.914950611461705,26.756616544802892 -126.139,2024/06/05 13:48:24.5449,29.914950611461705,26.756616544802892 -126.35,2024/06/05 13:48:24.7559,29.914950611461705,26.756616544802892 -126.385,2024/06/05 13:48:24.7909,29.914950611461705,26.756616544802892 -126.632,2024/06/05 13:48:25.0379,29.914950611461705,26.756616544802892 -126.842,2024/06/05 13:48:25.2479,29.914950611461705,26.756616544802892 -126.878,2024/06/05 13:48:25.2839,29.914950611461705,26.756616544802892 -127.124,2024/06/05 13:48:25.5299,29.914950611461705,26.756616544802892 -127.37,2024/06/05 13:48:25.7759,29.914950611461705,26.756616544802892 -127.582,2024/06/05 13:48:25.9879,29.914950611461705,26.756616544802892 -128.109,2024/06/05 13:48:26.5149,29.914950611461705,26.756616544802892 -128.32,2024/06/05 13:48:26.7259,29.914950611461705,26.756616544802892 -128.355,2024/06/05 13:48:26.7609,29.914950611461705,26.756616544802892 -128.601,2024/06/05 13:48:27.0069,29.914950611461705,26.756616544802892 -128.812,2024/06/05 13:48:27.2179,29.914950611461705,26.756616544802892 -128.847,2024/06/05 13:48:27.2529,29.914950611461705,26.756616544802892 -129.094,2024/06/05 13:48:27.4999,29.914950611461705,26.756616544802892 -129.34,2024/06/05 13:48:27.7459,29.914950611461705,26.756616544802892 -129.551,2024/06/05 13:48:27.9569,29.914950611461705,26.756616544802892 -129.586,2024/06/05 13:48:27.9919,29.914950611461705,26.756616544802892 -129.833,2024/06/05 13:48:28.2389,29.914950611461705,26.756616544802892 -130.044,2024/06/05 13:48:28.4499,29.914950611461705,26.756616544802892 -130.079,2024/06/05 13:48:28.4849,29.914950611461705,26.756616544802892 -130.329,2024/06/05 13:48:28.7349,29.914950611461705,26.756616544802892 -130.572,2024/06/05 13:48:28.9779,29.914950611461705,26.756616544802892 -130.783,2024/06/05 13:48:29.1889,29.914950611461705,26.756616544802892 -130.818,2024/06/05 13:48:29.2239,29.914950611461705,26.756616544802892 -131.065,2024/06/05 13:48:29.4709,29.914950611461705,26.756616544802892 -131.31,2024/06/05 13:48:29.7159,29.914950611461705,26.756616544802892 -131.521,2024/06/05 13:48:29.9269,29.914950611461705,26.756616544802892 -131.557,2024/06/05 13:48:29.9629,29.914950611461705,26.756616544802892 -131.803,2024/06/05 13:48:30.2089,29.914950611461705,26.756616544802892 -132.014,2024/06/05 13:48:30.4199,29.914950611461705,26.756616544802892 -132.049,2024/06/05 13:48:30.4549,29.914950611461705,26.756616544802892 -132.295,2024/06/05 13:48:30.7009,29.914950611461705,26.756616544802892 -132.542,2024/06/05 13:48:30.9479,29.914950611461705,26.756616544802892 -132.753,2024/06/05 13:48:31.1589,29.914950611461705,26.756616544802892 -132.788,2024/06/05 13:48:31.1939,29.914950611461705,26.756616544802892 -133.035,2024/06/05 13:48:31.4409,29.914950611461705,26.756616544802892 -133.492,2024/06/05 13:48:31.8979,29.914950611461705,26.756616544802892 -133.773,2024/06/05 13:48:32.1789,29.914950611461705,26.756616544802892 -133.985,2024/06/05 13:48:32.3909,29.914950611461705,26.756616544802892 -134.513,2024/06/05 13:48:32.9189,29.914950611461705,26.756616544802892 -134.723,2024/06/05 13:48:33.1289,29.914950611461705,26.756616544802892 -134.758,2024/06/05 13:48:33.1639,29.914950611461705,26.756616544802892 -135.005,2024/06/05 13:48:33.4109,29.914950611461705,26.756616544802892 -135.251,2024/06/05 13:48:33.6569,29.914950611461705,26.756616544802892 -135.463,2024/06/05 13:48:33.8689,29.914950611461705,26.756616544802892 -135.497,2024/06/05 13:48:33.9029,29.914950611461705,26.756616544802892 -135.744,2024/06/05 13:48:34.1499,29.914950611461705,26.756616544802892 -135.955,2024/06/05 13:48:34.3609,29.914950611461705,26.756616544802892 -135.99,2024/06/05 13:48:34.3959,29.914950611461705,26.756616544802892 -136.236,2024/06/05 13:48:34.6419,29.914950611461705,26.756616544802892 -136.482,2024/06/05 13:48:34.8879,29.914950611461705,26.756616544802892 -136.693,2024/06/05 13:48:35.0989,29.914950611461705,26.756616544802892 -136.728,2024/06/05 13:48:35.1339,29.914950611461705,26.756616544802892 -137.186,2024/06/05 13:48:35.5919,29.914950611461705,26.756616544802892 -137.467,2024/06/05 13:48:35.8729,29.914950611461705,26.756616544802892 -137.713,2024/06/05 13:48:36.1189,29.914950611461705,26.756616544802892 -137.925,2024/06/05 13:48:36.3309,29.914950611461705,26.756616544802892 -138.452,2024/06/05 13:48:36.8579,29.914950611461705,26.756616544802892 -138.664,2024/06/05 13:48:37.0699,29.914950611461705,26.756616544802892 -138.699,2024/06/05 13:48:37.1049,29.914950611461705,26.756616544802892 -138.945,2024/06/05 13:48:37.3509,29.914950611461705,26.756616544802892 -139.156,2024/06/05 13:48:37.5619,29.914950611461705,26.756616544802892 -139.192,2024/06/05 13:48:37.5979,29.914950611461705,26.756616544802892 -139.437,2024/06/05 13:48:37.8429,29.914950611461705,26.756616544802892 -139.684,2024/06/05 13:48:38.0899,29.914950611461705,26.756616544802892 -139.895,2024/06/05 13:48:38.3009,29.914950611461705,26.756616544802892 -139.93,2024/06/05 13:48:38.3359,29.914950611461705,26.756616544802892 -140.176,2024/06/05 13:48:38.5819,29.914950611461705,26.756616544802892 -140.423,2024/06/05 13:48:38.8289,29.914950611461705,26.756616544802892 -140.633,2024/06/05 13:48:39.0389,29.914950611461705,26.756616544802892 -140.669,2024/06/05 13:48:39.0749,29.914950611461705,26.756616544802892 -140.915,2024/06/05 13:48:39.3209,29.914950611461705,26.756616544802892 -141.161,2024/06/05 13:48:39.5669,29.914950611461705,26.756616544802892 -141.407,2024/06/05 13:48:39.8129,29.914950611461705,26.756616544802892 -141.619,2024/06/05 13:48:40.0249,29.914950611461705,26.756616544802892 -141.654,2024/06/05 13:48:40.0599,29.914950611461705,26.756616544802892 -141.9,2024/06/05 13:48:40.3059,29.914950611461705,26.756616544802892 -142.147,2024/06/05 13:48:40.5529,29.914950611461705,26.756616544802892 -142.358,2024/06/05 13:48:40.7639,29.914950611461705,26.756616544802892 -142.393,2024/06/05 13:48:40.7989,29.914950611461705,26.756616544802892 -142.604,2024/06/05 13:48:41.0099,29.914950611461705,26.756616544802892 -142.639,2024/06/05 13:48:41.0449,29.914950611461705,26.756616544802892 -142.886,2024/06/05 13:48:41.2919,29.914950611461705,26.756616544802892 -143.132,2024/06/05 13:48:41.5379,29.914950611461705,26.756616544802892 -143.342,2024/06/05 13:48:41.7479,29.914950611461705,26.756616544802892 -143.378,2024/06/05 13:48:41.7839,29.914950611461705,26.756616544802892 -143.625,2024/06/05 13:48:42.0309,29.914950611461705,26.756616544802892 -143.87,2024/06/05 13:48:42.2759,29.914950611461705,26.756616544802892 -144.081,2024/06/05 13:48:42.4869,29.914950611461705,26.756616544802892 -144.117,2024/06/05 13:48:42.5229,29.914950611461705,26.756616544802892 -144.363,2024/06/05 13:48:42.7689,29.914950611461705,26.756616544802892 -144.609,2024/06/05 13:48:43.0149,29.914950611461705,26.756616544802892 -144.821,2024/06/05 13:48:43.2269,29.914950611461705,26.756616544802892 -144.856,2024/06/05 13:48:43.2619,29.914950611461705,26.756616544802892 -145.102,2024/06/05 13:48:43.5079,29.914950611461705,26.756616544802892 -145.313,2024/06/05 13:48:43.7189,29.914950611461705,26.756616544802892 -145.349,2024/06/05 13:48:43.7549,29.914950611461705,26.756616544802892 -145.806,2024/06/05 13:48:44.2119,29.914950611461705,26.756616544802892 -146.088,2024/06/05 13:48:44.4939,29.914950611461705,26.756616544802892 -146.545,2024/06/05 13:48:44.9509,29.914950611461705,26.756616544802892 -146.826,2024/06/05 13:48:45.2319,29.914950611461705,26.756616544802892 -147.037,2024/06/05 13:48:45.4429,29.914950611461705,26.756616544802892 -147.072,2024/06/05 13:48:45.4779,29.914950611461705,26.756616544802892 -147.318,2024/06/05 13:48:45.7239,29.914950611461705,26.756616544802892 -147.564,2024/06/05 13:48:45.9699,29.914950611461705,26.756616544802892 -147.776,2024/06/05 13:48:46.1819,29.914950611461705,26.756616544802892 -147.811,2024/06/05 13:48:46.2169,29.914950611461705,26.756616544802892 -148.057,2024/06/05 13:48:46.4629,29.914950611461705,26.756616544802892 -148.304,2024/06/05 13:48:46.7099,29.914950611461705,26.756616544802892 -148.514,2024/06/05 13:48:46.9199,29.914950611461705,26.756616544802892 -148.549,2024/06/05 13:48:46.9549,29.914950611461705,26.756616544802892 -148.796,2024/06/05 13:48:47.2019,29.914950611461705,26.756616544802892 -149.007,2024/06/05 13:48:47.4129,29.914950611461705,26.756616544802892 -149.042,2024/06/05 13:48:47.4479,29.914950611461705,26.756616544802892 -149.745,2024/06/05 13:48:48.1509,29.914950611461705,26.756616544802892 -149.781,2024/06/05 13:48:48.1869,29.914950611461705,26.756616544802892 -150.028,2024/06/05 13:48:48.4339,29.914950611461705,26.756616544802892 -150.273,2024/06/05 13:48:48.6789,29.914950611461705,26.756616544802892 -150.485,2024/06/05 13:48:48.8909,29.914950611461705,26.756616544802892 -150.52,2024/06/05 13:48:48.9259,29.914950611461705,26.756616544802892 -150.767,2024/06/05 13:48:49.1729,29.914950611461705,26.756616544802892 -150.977,2024/06/05 13:48:49.3829,29.914950611461705,26.756616544802892 -151.012,2024/06/05 13:48:49.4179,29.914950611461705,26.756616544802892 -151.259,2024/06/05 13:48:49.6649,29.914950611461705,26.756616544802892 -151.506,2024/06/05 13:48:49.9119,29.914950611461705,26.756616544802892 -151.716,2024/06/05 13:48:50.1219,29.914950611461705,26.756616544802892 -151.751,2024/06/05 13:48:50.1569,29.914950611461705,26.756616544802892 -151.998,2024/06/05 13:48:50.4039,29.914950611461705,26.756616544802892 -152.244,2024/06/05 13:48:50.6499,29.914950611461705,26.756616544802892 -152.455,2024/06/05 13:48:50.8609,29.914950611461705,26.756616544802892 -152.491,2024/06/05 13:48:50.8969,29.914950611461705,26.756616544802892 -152.736,2024/06/05 13:48:51.1419,29.914950611461705,26.756616544802892 -152.948,2024/06/05 13:48:51.3539,29.914950611461705,26.756616544802892 -153.475,2024/06/05 13:48:51.8809,29.914950611461705,26.756616544802892 -153.686,2024/06/05 13:48:52.0919,29.914950611461705,26.756616544802892 -153.722,2024/06/05 13:48:52.1279,29.914950611461705,26.756616544802892 -153.968,2024/06/05 13:48:52.3739,29.914950611461705,26.756616544802892 -154.178,2024/06/05 13:48:52.5839,29.914950611461705,26.756616544802892 -154.214,2024/06/05 13:48:52.6199,29.914950611461705,26.756616544802892 -154.46,2024/06/05 13:48:52.8659,29.914950611461705,26.756616544802892 -154.918,2024/06/05 13:48:53.3239,29.914950611461705,26.756616544802892 -155.199,2024/06/05 13:48:53.6049,29.914950611461705,26.756616544802892 -155.446,2024/06/05 13:48:53.8519,29.914950611461705,26.756616544802892 -155.656,2024/06/05 13:48:54.0619,29.914950611461705,26.756616544802892 -155.692,2024/06/05 13:48:54.0979,29.914950611461705,26.756616544802892 -155.938,2024/06/05 13:48:54.3439,29.914950611461705,26.756616544802892 -156.149,2024/06/05 13:48:54.5549,29.914950611461705,26.756616544802892 -156.185,2024/06/05 13:48:54.5909,29.914950611461705,26.756616544802892 -156.431,2024/06/05 13:48:54.8369,29.914950611461705,26.756616544802892 -156.677,2024/06/05 13:48:55.0829,29.914950611461705,26.756616544802892 -156.888,2024/06/05 13:48:55.2939,29.914950611461705,26.756616544802892 -157.416,2024/06/05 13:48:55.8219,29.914950611461705,26.756616544802892 -157.627,2024/06/05 13:48:56.0329,29.914950611461705,26.756616544802892 -157.662,2024/06/05 13:48:56.0679,29.914950611461705,26.756616544802892 -157.908,2024/06/05 13:48:56.3139,29.914950611461705,26.756616544802892 -158.155,2024/06/05 13:48:56.5609,29.914950611461705,26.756616544802892 -158.365,2024/06/05 13:48:56.7709,29.914950611461705,26.756616544802892 -158.401,2024/06/05 13:48:56.8069,29.914950611461705,26.756616544802892 -158.647,2024/06/05 13:48:57.0529,29.914950611461705,26.756616544802892 -158.893,2024/06/05 13:48:57.2989,29.914950611461705,26.756616544802892 -159.104,2024/06/05 13:48:57.5099,29.914950611461705,26.756616544802892 -159.14,2024/06/05 13:48:57.5459,29.914950611461705,26.756616544802892 -159.386,2024/06/05 13:48:57.7919,29.914950611461705,26.756616544802892 -159.597,2024/06/05 13:48:58.0029,29.914950611461705,26.756616544802892 -159.633,2024/06/05 13:48:58.0389,29.914950611461705,26.756616544802892 -159.879,2024/06/05 13:48:58.2849,29.914950611461705,26.756616544802892 -160.125,2024/06/05 13:48:58.5309,29.914950611461705,26.756616544802892 -160.335,2024/06/05 13:48:58.7409,29.914950611461705,26.756616544802892 -160.371,2024/06/05 13:48:58.7769,29.914950611461705,26.756616544802892 -160.617,2024/06/05 13:48:59.0229,29.914950611461705,26.756616544802892 -160.828,2024/06/05 13:48:59.2339,29.914950611461705,26.756616544802892 -160.863,2024/06/05 13:48:59.2689,29.914950611461705,26.756616544802892 -161.11,2024/06/05 13:48:59.5159,29.914950611461705,26.756616544802892 -161.356,2024/06/05 13:48:59.7619,29.914950611461705,26.756616544802892 -161.813,2024/06/05 13:49:00.2189,29.914950611461705,26.756616544802892 -162.059,2024/06/05 13:49:00.4649,29.914950611461705,26.756616544802892 -162.095,2024/06/05 13:49:00.5009,29.914950611461705,26.756616544802892 -162.834,2024/06/05 13:49:01.2399,29.914950611461705,26.756616544802892 -163.044,2024/06/05 13:49:01.4499,29.914950611461705,26.756616544802892 -163.08,2024/06/05 13:49:01.4859,29.914950611461705,26.756616544802892 -163.538,2024/06/05 13:49:01.9439,29.914950611461705,26.756616544802892 -164.276,2024/06/05 13:49:02.6819,29.914950611461705,26.756616544802892 -164.312,2024/06/05 13:49:02.7179,29.914950611461705,26.756616544802892 -164.557,2024/06/05 13:49:02.9629,29.914950611461705,26.756616544802892 -164.769,2024/06/05 13:49:03.1749,29.914950611461705,26.756616544802892 -164.804,2024/06/05 13:49:03.2099,29.914950611461705,26.756616544802892 -165.05,2024/06/05 13:49:03.4559,29.914950611461705,26.756616544802892 -165.261,2024/06/05 13:49:03.6669,29.914950611461705,26.756616544802892 -165.789,2024/06/05 13:49:04.1949,29.914950611461705,26.756616544802892 -166.0,2024/06/05 13:49:04.4059,29.914950611461705,26.756616544802892 -166.035,2024/06/05 13:49:04.4409,29.914950611461705,26.756616544802892 -166.281,2024/06/05 13:49:04.6869,29.914950611461705,26.756616544802892 -166.493,2024/06/05 13:49:04.8989,29.914950611461705,26.756616544802892 -166.528,2024/06/05 13:49:04.9339,29.914950611461705,26.756616544802892 -166.774,2024/06/05 13:49:05.1799,29.914950611461705,26.756616544802892 -167.02,2024/06/05 13:49:05.4259,29.914950611461705,26.756616544802892 -167.232,2024/06/05 13:49:05.6379,29.914950611461705,26.756616544802892 -167.267,2024/06/05 13:49:05.6729,29.914950611461705,26.756616544802892 -167.513,2024/06/05 13:49:05.9189,29.914950611461705,26.756616544802892 -167.76,2024/06/05 13:49:06.1659,29.914950611461705,26.756616544802892 -167.97,2024/06/05 13:49:06.3759,29.914950611461705,26.756616544802892 -168.005,2024/06/05 13:49:06.4109,29.914950611461705,26.756616544802892 -168.252,2024/06/05 13:49:06.6579,29.914950611461705,26.756616544802892 -168.462,2024/06/05 13:49:06.8679,29.914950611461705,26.756616544802892 -168.498,2024/06/05 13:49:06.9039,29.914950611461705,26.756616544802892 -168.744,2024/06/05 13:49:07.1499,29.914950611461705,26.756616544802892 -168.991,2024/06/05 13:49:07.3969,29.914950611461705,26.756616544802892 -169.201,2024/06/05 13:49:07.6069,29.914950611461705,26.756616544802892 -169.237,2024/06/05 13:49:07.6429,29.914950611461705,26.756616544802892 -169.484,2024/06/05 13:49:07.8899,29.914950611461705,26.756616544802892 -169.73,2024/06/05 13:49:08.1359,29.914950611461705,26.756616544802892 -169.94,2024/06/05 13:49:08.3459,29.914950611461705,26.756616544802892 -169.976,2024/06/05 13:49:08.3819,29.914950611461705,26.756616544802892 -170.222,2024/06/05 13:49:08.6279,29.914950611461705,26.756616544802892 -170.679,2024/06/05 13:49:09.0849,29.914950611461705,26.756616544802892 -170.961,2024/06/05 13:49:09.3669,29.914950611461705,26.756616544802892 -171.171,2024/06/05 13:49:09.5769,29.914950611461705,26.756616544802892 -171.207,2024/06/05 13:49:09.6129,29.914950611461705,26.756616544802892 -171.454,2024/06/05 13:49:09.8599,29.914950611461705,26.756616544802892 -171.911,2024/06/05 13:49:10.3169,29.914950611461705,26.756616544802892 -172.192,2024/06/05 13:49:10.5979,29.914950611461705,26.756616544802892 -172.438,2024/06/05 13:49:10.8439,29.914950611461705,26.756616544802892 -172.649,2024/06/05 13:49:11.0549,29.914950611461705,26.756616544802892 -172.685,2024/06/05 13:49:11.0909,29.914950611461705,26.756616544802892 -172.932,2024/06/05 13:49:11.3379,29.914950611461705,26.756616544802892 -173.142,2024/06/05 13:49:11.5479,29.914950611461705,26.756616544802892 -173.67,2024/06/05 13:49:12.0759,29.914950611461705,26.756616544802892 -173.917,2024/06/05 13:49:12.3229,29.914950611461705,26.756616544802892 -174.126,2024/06/05 13:49:12.5319,29.914950611461705,26.756616544802892 -174.62,2024/06/05 13:49:13.0259,29.914950611461705,26.756616544802892 -175.148,2024/06/05 13:49:13.5539,29.914950611461705,26.756616544802892 -175.358,2024/06/05 13:49:13.7639,29.914950611461705,26.756616544802892 -175.394,2024/06/05 13:49:13.7999,29.914950611461705,26.756616544802892 -175.64,2024/06/05 13:49:14.0459,29.914950611461705,26.756616544802892 -175.851,2024/06/05 13:49:14.2569,29.914950611461705,26.756616544802892 -175.887,2024/06/05 13:49:14.2929,29.914950611461705,26.756616544802892 -176.133,2024/06/05 13:49:14.5389,29.914950611461705,26.756616544802892 -176.379,2024/06/05 13:49:14.7849,29.914950611461705,26.756616544802892 -176.59,2024/06/05 13:49:14.9959,29.914950611461705,26.756616544802892 -176.625,2024/06/05 13:49:15.0309,29.914950611461705,26.756616544802892 -176.871,2024/06/05 13:49:15.2769,29.914950611461705,26.756616544802892 -177.118,2024/06/05 13:49:15.5239,29.914950611461705,26.756616544802892 -177.328,2024/06/05 13:49:15.7339,29.914950611461705,26.756616544802892 -177.364,2024/06/05 13:49:15.7699,29.914950611461705,26.756616544802892 -178.068,2024/06/05 13:49:16.4739,29.914950611461705,26.756616544802892 -178.103,2024/06/05 13:49:16.5089,29.914950611461705,26.756616544802892 -178.349,2024/06/05 13:49:16.7549,29.914950611461705,26.756616544802892 -178.595,2024/06/05 13:49:17.0009,29.914950611461705,26.756616544802892 -178.806,2024/06/05 13:49:17.2119,29.914950611461705,26.756616544802892 -178.842,2024/06/05 13:49:17.2479,29.914950611461705,26.756616544802892 -179.088,2024/06/05 13:49:17.4939,29.914950611461705,26.756616544802892 -179.334,2024/06/05 13:49:17.7399,29.914950611461705,26.756616544802892 -179.545,2024/06/05 13:49:17.9509,29.914950611461705,26.756616544802892 -179.581,2024/06/05 13:49:17.9869,29.914950611461705,26.756616544802892 -179.826,2024/06/05 13:49:18.2319,29.914950611461705,26.756616544802892 -180.073,2024/06/05 13:49:18.4789,29.914950611461705,26.756616544802892 -180.283,2024/06/05 13:49:18.6889,29.914950611461705,26.756616544802892 -180.319,2024/06/05 13:49:18.7249,29.914950611461705,26.756616544802892 -180.565,2024/06/05 13:49:18.9709,29.914950611461705,26.756616544802892 -180.776,2024/06/05 13:49:19.1819,29.914950611461705,26.756616544802892 -180.811,2024/06/05 13:49:19.2169,29.914950611461705,26.756616544802892 -181.058,2024/06/05 13:49:19.4639,29.914950611461705,26.756616544802892 -181.304,2024/06/05 13:49:19.7099,29.914950611461705,26.756616544802892 -181.515,2024/06/05 13:49:19.9209,29.914950611461705,26.756616544802892 -181.551,2024/06/05 13:49:19.9569,29.914950611461705,26.756616544802892 -181.797,2024/06/05 13:49:20.2029,29.914950611461705,26.756616544802892 -182.008,2024/06/05 13:49:20.4139,29.914950611461705,26.756616544802892 -182.043,2024/06/05 13:49:20.4489,29.914950611461705,26.756616544802892 -182.289,2024/06/05 13:49:20.6949,29.914950611461705,26.756616544802892 -182.536,2024/06/05 13:49:20.9419,29.914950611461705,26.756616544802892 -182.747,2024/06/05 13:49:21.1529,29.914950611461705,26.756616544802892 -182.782,2024/06/05 13:49:21.1879,29.914950611461705,26.756616544802892 -183.028,2024/06/05 13:49:21.4339,29.914950611461705,26.756616544802892 -183.239,2024/06/05 13:49:21.6449,29.914950611461705,26.756616544802892 -183.767,2024/06/05 13:49:22.1729,29.914950611461705,26.756616544802892 -184.013,2024/06/05 13:49:22.4189,29.914950611461705,26.756616544802892 -184.224,2024/06/05 13:49:22.6299,29.914950611461705,26.756616544802892 -184.26,2024/06/05 13:49:22.6659,29.914950611461705,26.756616544802892 -184.506,2024/06/05 13:49:22.9119,29.914950611461705,26.756616544802892 -184.717,2024/06/05 13:49:23.1229,29.914950611461705,26.756616544802892 -184.752,2024/06/05 13:49:23.1579,29.914950611461705,26.756616544802892 -184.998,2024/06/05 13:49:23.4039,29.914950611461705,26.756616544802892 -185.209,2024/06/05 13:49:23.6149,29.914950611461705,26.756616544802892 -185.245,2024/06/05 13:49:23.6509,29.914950611461705,26.756616544802892 -185.491,2024/06/05 13:49:23.8969,29.914950611461705,26.756616544802892 -185.737,2024/06/05 13:49:24.1429,29.914950611461705,26.756616544802892 -185.948,2024/06/05 13:49:24.3539,29.914950611461705,26.756616544802892 -185.984,2024/06/05 13:49:24.3899,29.914950611461705,26.756616544802892 -186.229,2024/06/05 13:49:24.6349,29.914950611461705,26.756616544802892 -186.476,2024/06/05 13:49:24.8819,29.914950611461705,26.756616544802892 -186.687,2024/06/05 13:49:25.0929,29.914950611461705,26.756616544802892 -186.722,2024/06/05 13:49:25.1279,29.914950611461705,26.756616544802892 -186.969,2024/06/05 13:49:25.3749,29.914950611461705,26.756616544802892 -187.215,2024/06/05 13:49:25.6209,29.914950611461705,26.756616544802892 -187.426,2024/06/05 13:49:25.8319,29.914950611461705,26.756616544802892 -187.462,2024/06/05 13:49:25.8679,29.914950611461705,26.756616544802892 -187.918,2024/06/05 13:49:26.3239,29.914950611461705,26.756616544802892 -188.2,2024/06/05 13:49:26.6059,29.914950611461705,26.756616544802892 -188.446,2024/06/05 13:49:26.8519,29.914950611461705,26.756616544802892 -188.657,2024/06/05 13:49:27.0629,29.914950611461705,26.756616544802892 -188.693,2024/06/05 13:49:27.0989,29.914950611461705,26.756616544802892 -188.939,2024/06/05 13:49:27.3449,29.914950611461705,26.756616544802892 -189.185,2024/06/05 13:49:27.5909,29.914950611461705,26.756616544802892 -189.396,2024/06/05 13:49:27.8019,29.914950611461705,26.756616544802892 -189.432,2024/06/05 13:49:27.8379,29.914950611461705,26.756616544802892 -189.677,2024/06/05 13:49:28.0829,29.914950611461705,26.756616544802892 -189.888,2024/06/05 13:49:28.2939,29.914950611461705,26.756616544802892 -189.924,2024/06/05 13:49:28.3299,29.914950611461705,26.756616544802892 -190.17,2024/06/05 13:49:28.5759,29.914950611461705,26.756616544802892 -190.416,2024/06/05 13:49:28.8219,29.914950611461705,26.756616544802892 -190.627,2024/06/05 13:49:29.0329,29.914950611461705,26.756616544802892 -191.156,2024/06/05 13:49:29.5619,29.914950611461705,26.756616544802892 -191.401,2024/06/05 13:49:29.8069,29.914950611461705,26.756616544802892 -191.612,2024/06/05 13:49:30.0179,29.914950611461705,26.756616544802892 -191.648,2024/06/05 13:49:30.0539,29.914950611461705,26.756616544802892 -191.858,2024/06/05 13:49:30.2639,29.914950611461705,26.756616544802892 -191.894,2024/06/05 13:49:30.2999,29.914950611461705,26.756616544802892 -192.141,2024/06/05 13:49:30.5469,29.914950611461705,26.756616544802892 -192.387,2024/06/05 13:49:30.7929,29.914950611461705,26.756616544802892 -192.597,2024/06/05 13:49:31.0029,29.914950611461705,26.756616544802892 -192.633,2024/06/05 13:49:31.0389,29.914950611461705,26.756616544802892 -192.879,2024/06/05 13:49:31.2849,29.914950611461705,26.756616544802892 -193.125,2024/06/05 13:49:31.5309,29.914950611461705,26.756616544802892 -193.336,2024/06/05 13:49:31.7419,29.914950611461705,26.756616544802892 -193.372,2024/06/05 13:49:31.7779,29.914950611461705,26.756616544802892 -194.075,2024/06/05 13:49:32.4809,29.914950611461705,26.756616544802892 -194.111,2024/06/05 13:49:32.5169,29.914950611461705,26.756616544802892 -194.357,2024/06/05 13:49:32.7629,29.914950611461705,26.756616544802892 -194.813,2024/06/05 13:49:33.2189,29.914950611461705,26.756616544802892 -195.095,2024/06/05 13:49:33.5009,29.914950611461705,26.756616544802892 -195.342,2024/06/05 13:49:33.7479,29.914950611461705,26.756616544802892 -195.552,2024/06/05 13:49:33.9579,29.914950611461705,26.756616544802892 -195.588,2024/06/05 13:49:33.9939,29.914950611461705,26.756616544802892 -195.835,2024/06/05 13:49:34.2409,29.914950611461705,26.756616544802892 -196.081,2024/06/05 13:49:34.4869,29.914950611461705,26.756616544802892 -196.291,2024/06/05 13:49:34.6969,29.914950611461705,26.756616544802892 -196.327,2024/06/05 13:49:34.7329,29.914950611461705,26.756616544802892 -196.574,2024/06/05 13:49:34.9799,29.914950611461705,26.756616544802892 -196.784,2024/06/05 13:49:35.1899,29.914950611461705,26.756616544802892 -196.82,2024/06/05 13:49:35.2259,29.914950611461705,26.756616544802892 -197.066,2024/06/05 13:49:35.4719,29.914950611461705,26.756616544802892 -197.276,2024/06/05 13:49:35.6819,29.914950611461705,26.756616544802892 -197.312,2024/06/05 13:49:35.7179,29.914950611461705,26.756616544802892 -197.558,2024/06/05 13:49:35.9639,29.914950611461705,26.756616544802892 -197.805,2024/06/05 13:49:36.2109,29.914950611461705,26.756616544802892 -198.015,2024/06/05 13:49:36.4209,29.914950611461705,26.756616544802892 -198.051,2024/06/05 13:49:36.4569,29.914950611461705,26.756616544802892 -198.298,2024/06/05 13:49:36.7039,29.914950611461705,26.756616544802892 -198.508,2024/06/05 13:49:36.9139,29.914950611461705,26.756616544802892 -198.544,2024/06/05 13:49:36.9499,29.914950611461705,26.756616544802892 -198.79,2024/06/05 13:49:37.1959,29.914950611461705,26.756616544802892 -199.036,2024/06/05 13:49:37.4419,29.914950611461705,26.756616544802892 -199.246,2024/06/05 13:49:37.6519,29.914950611461705,26.756616544802892 -199.282,2024/06/05 13:49:37.6879,29.914950611461705,26.756616544802892 -199.529,2024/06/05 13:49:37.9349,29.914950611461705,26.756616544802892 -199.775,2024/06/05 13:49:38.1809,29.914950611461705,26.756616544802892 -199.986,2024/06/05 13:49:38.3919,29.914950611461705,26.756616544802892 -200.514,2024/06/05 13:49:38.9199,29.914950611461705,26.756616544802892 -200.724,2024/06/05 13:49:39.1299,29.914950611461705,26.756616544802892 -201.217,2024/06/05 13:49:39.6229,29.914950611461705,26.756616544802892 -201.253,2024/06/05 13:49:39.6589,29.914950611461705,26.756616544802892 -201.955,2024/06/05 13:49:40.3609,29.914950611461705,26.756616544802892 -202.484,2024/06/05 13:49:40.8899,29.914950611461705,26.756616544802892 -202.694,2024/06/05 13:49:41.0999,29.914950611461705,26.756616544802892 -202.73,2024/06/05 13:49:41.1359,29.914950611461705,26.756616544802892 -202.976,2024/06/05 13:49:41.3819,29.914950611461705,26.756616544802892 -203.187,2024/06/05 13:49:41.5929,29.914950611461705,26.756616544802892 -203.223,2024/06/05 13:49:41.6289,29.914950611461705,26.756616544802892 -203.469,2024/06/05 13:49:41.8749,29.914950611461705,26.756616544802892 -203.715,2024/06/05 13:49:42.1209,29.914950611461705,26.756616544802892 -203.926,2024/06/05 13:49:42.3319,29.914950611461705,26.756616544802892 -204.454,2024/06/05 13:49:42.8599,29.914950611461705,26.756616544802892 -204.665,2024/06/05 13:49:43.0709,29.914950611461705,26.756616544802892 -204.701,2024/06/05 13:49:43.1069,29.914950611461705,26.756616544802892 -204.947,2024/06/05 13:49:43.3529,29.914950611461705,26.756616544802892 -205.157,2024/06/05 13:49:43.5629,29.914950611461705,26.756616544802892 -205.193,2024/06/05 13:49:43.5989,29.914950611461705,26.756616544802892 -205.439,2024/06/05 13:49:43.8449,29.914950611461705,26.756616544802892 -205.685,2024/06/05 13:49:44.0909,29.914950611461705,26.756616544802892 -205.896,2024/06/05 13:49:44.3019,29.914950611461705,26.756616544802892 -205.932,2024/06/05 13:49:44.3379,29.914950611461705,26.756616544802892 -206.178,2024/06/05 13:49:44.5839,29.914950611461705,26.756616544802892 -206.425,2024/06/05 13:49:44.8309,29.914950611461705,26.756616544802892 -206.634,2024/06/05 13:49:45.0399,29.914950611461705,26.756616544802892 -207.127,2024/06/05 13:49:45.5329,29.914950611461705,26.756616544802892 -207.163,2024/06/05 13:49:45.5689,29.914950611461705,26.756616544802892 -207.41,2024/06/05 13:49:45.8159,29.914950611461705,26.756616544802892 -207.656,2024/06/05 13:49:46.0619,29.914950611461705,26.756616544802892 -207.866,2024/06/05 13:49:46.2719,29.914950611461705,26.756616544802892 -207.903,2024/06/05 13:49:46.3089,29.914950611461705,26.756616544802892 -208.148,2024/06/05 13:49:46.5539,29.914950611461705,26.756616544802892 -208.394,2024/06/05 13:49:46.7999,29.914950611461705,26.756616544802892 -208.605,2024/06/05 13:49:47.0109,29.914950611461705,26.756616544802892 -208.642,2024/06/05 13:49:47.0479,29.914950611461705,26.756616544802892 -208.887,2024/06/05 13:49:47.2929,29.914950611461705,26.756616544802892 -209.097,2024/06/05 13:49:47.5029,29.914950611461705,26.756616544802892 -209.134,2024/06/05 13:49:47.5399,29.914950611461705,26.756616544802892 -209.38,2024/06/05 13:49:47.7859,29.914950611461705,26.756616544802892 -209.626,2024/06/05 13:49:48.0319,29.914950611461705,26.756616544802892 -209.837,2024/06/05 13:49:48.2429,29.914950611461705,26.756616544802892 -209.872,2024/06/05 13:49:48.2779,29.914950611461705,26.756616544802892 -210.575,2024/06/05 13:49:48.9809,29.914950611461705,26.756616544802892 -210.611,2024/06/05 13:49:49.0169,29.914950611461705,26.756616544802892 -210.858,2024/06/05 13:49:49.2639,29.914950611461705,26.756616544802892 -211.104,2024/06/05 13:49:49.5099,29.914950611461705,26.756616544802892 -211.314,2024/06/05 13:49:49.7199,29.914950611461705,26.756616544802892 -211.35,2024/06/05 13:49:49.7559,29.914950611461705,26.756616544802892 -211.596,2024/06/05 13:49:50.0019,29.914950611461705,26.756616544802892 -211.843,2024/06/05 13:49:50.2489,29.914950611461705,26.756616544802892 -212.053,2024/06/05 13:49:50.4589,29.914950611461705,26.756616544802892 -212.089,2024/06/05 13:49:50.4949,29.914950611461705,26.756616544802892 -212.791,2024/06/05 13:49:51.1969,29.914950611461705,26.756616544802892 -212.828,2024/06/05 13:49:51.2339,29.914950611461705,26.756616544802892 -213.284,2024/06/05 13:49:51.6899,29.914950611461705,26.756616544802892 -213.567,2024/06/05 13:49:51.9729,29.914950611461705,26.756616544802892 -213.813,2024/06/05 13:49:52.2189,29.914950611461705,26.756616544802892 -214.023,2024/06/05 13:49:52.4289,29.914950611461705,26.756616544802892 -214.059,2024/06/05 13:49:52.4649,29.914950611461705,26.756616544802892 -214.305,2024/06/05 13:49:52.7109,29.914950611461705,26.756616544802892 -214.551,2024/06/05 13:49:52.9569,29.914950611461705,26.756616544802892 -214.762,2024/06/05 13:49:53.1679,29.914950611461705,26.756616544802892 -214.798,2024/06/05 13:49:53.2039,29.914950611461705,26.756616544802892 -215.044,2024/06/05 13:49:53.4499,29.914950611461705,26.756616544802892 -215.255,2024/06/05 13:49:53.6609,29.914950611461705,26.756616544802892 -215.783,2024/06/05 13:49:54.1889,29.914950611461705,26.756616544802892 -215.993,2024/06/05 13:49:54.3989,29.914950611461705,26.756616544802892 -216.522,2024/06/05 13:49:54.9279,29.914950611461705,26.756616544802892 -216.769,2024/06/05 13:49:55.1749,29.914950611461705,26.756616544802892 -216.978,2024/06/05 13:49:55.3839,29.914950611461705,26.756616544802892 -217.014,2024/06/05 13:49:55.4199,29.914950611461705,26.756616544802892 -217.261,2024/06/05 13:49:55.6669,29.914950611461705,26.756616544802892 -217.507,2024/06/05 13:49:55.9129,29.914950611461705,26.756616544802892 -217.717,2024/06/05 13:49:56.1229,29.914950611461705,26.756616544802892 -217.753,2024/06/05 13:49:56.1589,29.914950611461705,26.756616544802892 -217.999,2024/06/05 13:49:56.4049,29.914950611461705,26.756616544802892 -218.209,2024/06/05 13:49:56.6149,29.914950611461705,26.756616544802892 -218.245,2024/06/05 13:49:56.6509,29.914950611461705,26.756616544802892 -218.492,2024/06/05 13:49:56.8979,29.914950611461705,26.756616544802892 -218.702,2024/06/05 13:49:57.1079,29.914950611461705,26.756616544802892 -218.738,2024/06/05 13:49:57.1439,29.914950611461705,26.756616544802892 -218.984,2024/06/05 13:49:57.3899,29.914950611461705,26.756616544802892 -219.231,2024/06/05 13:49:57.6369,29.914950611461705,26.756616544802892 -219.441,2024/06/05 13:49:57.8469,29.914950611461705,26.756616544802892 -219.477,2024/06/05 13:49:57.8829,29.914950611461705,26.756616544802892 -219.723,2024/06/05 13:49:58.1289,29.914950611461705,26.756616544802892 -219.97,2024/06/05 13:49:58.3759,29.914950611461705,26.756616544802892 -220.18,2024/06/05 13:49:58.5859,29.914950611461705,26.756616544802892 -220.216,2024/06/05 13:49:58.6219,29.914950611461705,26.756616544802892 -220.462,2024/06/05 13:49:58.8679,29.914950611461705,26.756616544802892 -220.708,2024/06/05 13:49:59.1139,29.914950611461705,26.756616544802892 -220.919,2024/06/05 13:49:59.3249,29.914950611461705,26.756616544802892 -220.955,2024/06/05 13:49:59.3609,29.914950611461705,26.756616544802892 -221.201,2024/06/05 13:49:59.6069,29.914950611461705,26.756616544802892 -221.447,2024/06/05 13:49:59.8529,29.914950611461705,26.756616544802892 -221.657,2024/06/05 13:50:00.0629,29.914950611461705,26.756616544802892 -221.693,2024/06/05 13:50:00.0989,29.914950611461705,26.756616544802892 -221.94,2024/06/05 13:50:00.3459,29.914950611461705,26.756616544802892 -222.186,2024/06/05 13:50:00.5919,29.914950611461705,26.756616544802892 -222.396,2024/06/05 13:50:00.8019,29.914950611461705,26.756616544802892 -222.432,2024/06/05 13:50:00.8379,29.914950611461705,26.756616544802892 -222.643,2024/06/05 13:50:01.0489,29.914950611461705,26.756616544802892 -223.171,2024/06/05 13:50:01.5769,29.914950611461705,26.756616544802892 -223.381,2024/06/05 13:50:01.7869,29.914950611461705,26.756616544802892 -223.874,2024/06/05 13:50:02.2799,29.914950611461705,26.756616544802892 -223.91,2024/06/05 13:50:02.3159,29.914950611461705,26.756616544802892 -224.156,2024/06/05 13:50:02.5619,29.914950611461705,26.756616544802892 -224.402,2024/06/05 13:50:02.8079,29.914950611461705,26.756616544802892 -224.613,2024/06/05 13:50:03.0189,29.914950611461705,26.756616544802892 -224.649,2024/06/05 13:50:03.0549,29.914950611461705,26.756616544802892 -224.895,2024/06/05 13:50:03.3009,29.914950611461705,26.756616544802892 -225.141,2024/06/05 13:50:03.5469,29.914950611461705,26.756616544802892 -225.351,2024/06/05 13:50:03.7569,29.914950611461705,26.756616544802892 -225.388,2024/06/05 13:50:03.7939,29.914950611461705,26.756616544802892 -226.127,2024/06/05 13:50:04.5329,29.914950611461705,26.756616544802892 -226.336,2024/06/05 13:50:04.7419,29.914950611461705,26.756616544802892 -226.372,2024/06/05 13:50:04.7779,29.914950611461705,26.756616544802892 -226.619,2024/06/05 13:50:05.0249,29.914950611461705,26.756616544802892 -226.829,2024/06/05 13:50:05.2349,29.914950611461705,26.756616544802892 -226.865,2024/06/05 13:50:05.2709,29.914950611461705,26.756616544802892 -227.112,2024/06/05 13:50:05.5179,29.914950611461705,26.756616544802892 -227.358,2024/06/05 13:50:05.7639,29.914950611461705,26.756616544802892 -227.568,2024/06/05 13:50:05.9739,29.914950611461705,26.756616544802892 -227.604,2024/06/05 13:50:06.0099,29.914950611461705,26.756616544802892 -227.85,2024/06/05 13:50:06.2559,29.914950611461705,26.756616544802892 -228.061,2024/06/05 13:50:06.4669,29.914950611461705,26.756616544802892 -228.097,2024/06/05 13:50:06.5029,29.914950611461705,26.756616544802892 -228.343,2024/06/05 13:50:06.7489,29.914950611461705,26.756616544802892 -228.589,2024/06/05 13:50:06.9949,29.914950611461705,26.756616544802892 -228.799,2024/06/05 13:50:07.2049,29.914950611461705,26.756616544802892 -228.836,2024/06/05 13:50:07.2419,29.914950611461705,26.756616544802892 -229.082,2024/06/05 13:50:07.4879,29.914950611461705,26.756616544802892 -229.328,2024/06/05 13:50:07.7339,29.914950611461705,26.756616544802892 -229.538,2024/06/05 13:50:07.9439,29.914950611461705,26.756616544802892 -229.575,2024/06/05 13:50:07.9809,29.914950611461705,26.756616544802892 -229.821,2024/06/05 13:50:08.2269,29.914950611461705,26.756616544802892 -230.031,2024/06/05 13:50:08.4369,29.914950611461705,26.756616544802892 -230.066,2024/06/05 13:50:08.4719,29.914950611461705,26.756616544802892 -230.313,2024/06/05 13:50:08.7189,29.914950611461705,26.756616544802892 -230.559,2024/06/05 13:50:08.9649,29.914950611461705,26.756616544802892 -230.769,2024/06/05 13:50:09.1749,29.914950611461705,26.756616544802892 -230.806,2024/06/05 13:50:09.2119,29.914950611461705,26.756616544802892 -231.052,2024/06/05 13:50:09.4579,29.914950611461705,26.756616544802892 -231.298,2024/06/05 13:50:09.7039,29.914950611461705,26.756616544802892 -231.508,2024/06/05 13:50:09.9139,29.914950611461705,26.756616544802892 -231.545,2024/06/05 13:50:09.9509,29.914950611461705,26.756616544802892 -231.791,2024/06/05 13:50:10.1969,29.914950611461705,26.756616544802892 -232.247,2024/06/05 13:50:10.6529,29.914950611461705,26.756616544802892 -232.986,2024/06/05 13:50:11.3919,29.914950611461705,26.756616544802892 -233.022,2024/06/05 13:50:11.4279,29.914950611461705,26.756616544802892 -233.269,2024/06/05 13:50:11.6749,29.914950611461705,26.756616544802892 -233.515,2024/06/05 13:50:11.9209,29.914950611461705,26.756616544802892 -233.724,2024/06/05 13:50:12.1299,29.914950611461705,26.756616544802892 -233.761,2024/06/05 13:50:12.1669,29.914950611461705,26.756616544802892 -234.008,2024/06/05 13:50:12.4139,29.914950611461705,26.756616544802892 -234.254,2024/06/05 13:50:12.6599,29.914950611461705,26.756616544802892 -234.463,2024/06/05 13:50:12.8689,29.914950611461705,26.756616544802892 -234.5,2024/06/05 13:50:12.9059,29.914950611461705,26.756616544802892 -234.746,2024/06/05 13:50:13.1519,29.914950611461705,26.756616544802892 -234.993,2024/06/05 13:50:13.3989,29.914950611461705,26.756616544802892 -235.203,2024/06/05 13:50:13.6089,29.914950611461705,26.756616544802892 -235.239,2024/06/05 13:50:13.6449,29.914950611461705,26.756616544802892 -235.485,2024/06/05 13:50:13.8909,29.914950611461705,26.756616544802892 -235.731,2024/06/05 13:50:14.1369,29.914950611461705,26.756616544802892 -235.941,2024/06/05 13:50:14.3469,29.914950611461705,26.756616544802892 -235.978,2024/06/05 13:50:14.3839,29.914950611461705,26.756616544802892 -236.224,2024/06/05 13:50:14.6299,29.914950611461705,26.756616544802892 -236.47,2024/06/05 13:50:14.8759,29.914950611461705,26.756616544802892 -236.68,2024/06/05 13:50:15.0859,29.914950611461705,26.756616544802892 -236.717,2024/06/05 13:50:15.1229,29.914950611461705,26.756616544802892 -236.963,2024/06/05 13:50:15.3689,29.914950611461705,26.756616544802892 -237.208,2024/06/05 13:50:15.6139,29.914950611461705,26.756616544802892 -237.419,2024/06/05 13:50:15.8249,29.914950611461705,26.756616544802892 -237.455,2024/06/05 13:50:15.8609,29.914950611461705,26.756616544802892 -237.701,2024/06/05 13:50:16.1069,29.914950611461705,26.756616544802892 -237.911,2024/06/05 13:50:16.3169,29.914950611461705,26.756616544802892 -237.947,2024/06/05 13:50:16.3529,29.914950611461705,26.756616544802892 -238.194,2024/06/05 13:50:16.5999,29.914950611461705,26.756616544802892 -238.44,2024/06/05 13:50:16.8459,29.914950611461705,26.756616544802892 -238.65,2024/06/05 13:50:17.0559,29.914950611461705,26.756616544802892 -238.687,2024/06/05 13:50:17.0929,29.914950611461705,26.756616544802892 -238.933,2024/06/05 13:50:17.3389,29.914950611461705,26.756616544802892 -239.18,2024/06/05 13:50:17.5859,29.914950611461705,26.756616544802892 -239.389,2024/06/05 13:50:17.7949,29.914950611461705,26.756616544802892 -239.425,2024/06/05 13:50:17.8309,29.914950611461705,26.756616544802892 -239.671,2024/06/05 13:50:18.0769,29.914950611461705,26.756616544802892 -239.881,2024/06/05 13:50:18.2869,29.914950611461705,26.756616544802892 -240.411,2024/06/05 13:50:18.8169,29.914950611461705,26.756616544802892 -240.657,2024/06/05 13:50:19.0629,29.914950611461705,26.756616544802892 -240.866,2024/06/05 13:50:19.2719,29.914950611461705,26.756616544802892 -240.903,2024/06/05 13:50:19.3089,29.914950611461705,26.756616544802892 -241.15,2024/06/05 13:50:19.5559,29.914950611461705,26.756616544802892 -241.359,2024/06/05 13:50:19.7649,29.914950611461705,26.756616544802892 -241.888,2024/06/05 13:50:20.2939,29.914950611461705,26.756616544802892 -242.097,2024/06/05 13:50:20.5029,29.914950611461705,26.756616544802892 -242.134,2024/06/05 13:50:20.5399,29.914950611461705,26.756616544802892 -242.38,2024/06/05 13:50:20.7859,29.914950611461705,26.756616544802892 -242.627,2024/06/05 13:50:21.0329,29.914950611461705,26.756616544802892 -242.836,2024/06/05 13:50:21.2419,29.914950611461705,26.756616544802892 -243.366,2024/06/05 13:50:21.7719,29.914950611461705,26.756616544802892 -243.575,2024/06/05 13:50:21.9809,29.914950611461705,26.756616544802892 -243.612,2024/06/05 13:50:22.0179,29.914950611461705,26.756616544802892 -243.859,2024/06/05 13:50:22.2649,29.914950611461705,26.756616544802892 -244.105,2024/06/05 13:50:22.5109,29.914950611461705,26.756616544802892 -244.315,2024/06/05 13:50:22.7209,29.914950611461705,26.756616544802892 -244.843,2024/06/05 13:50:23.2489,29.914950611461705,26.756616544802892 -245.053,2024/06/05 13:50:23.4589,29.914950611461705,26.756616544802892 -245.09,2024/06/05 13:50:23.4959,29.914950611461705,26.756616544802892 -245.336,2024/06/05 13:50:23.7419,29.914950611461705,26.756616544802892 -245.582,2024/06/05 13:50:23.9879,29.914950611461705,26.756616544802892 -245.792,2024/06/05 13:50:24.1979,29.914950611461705,26.756616544802892 -245.828,2024/06/05 13:50:24.2339,29.914950611461705,26.756616544802892 -246.075,2024/06/05 13:50:24.4809,29.914950611461705,26.756616544802892 -246.321,2024/06/05 13:50:24.7269,29.914950611461705,26.756616544802892 -246.567,2024/06/05 13:50:24.9729,29.914950611461705,26.756616544802892 -246.777,2024/06/05 13:50:25.1829,29.914950611461705,26.756616544802892 -246.814,2024/06/05 13:50:25.2199,29.914950611461705,26.756616544802892 -247.06,2024/06/05 13:50:25.4659,29.914950611461705,26.756616544802892 -247.269,2024/06/05 13:50:25.6749,29.914950611461705,26.756616544802892 -247.762,2024/06/05 13:50:26.1679,29.914950611461705,26.756616544802892 -247.799,2024/06/05 13:50:26.2049,29.914950611461705,26.756616544802892 -248.045,2024/06/05 13:50:26.4509,29.914950611461705,26.756616544802892 -248.291,2024/06/05 13:50:26.6969,29.914950611461705,26.756616544802892 -248.501,2024/06/05 13:50:26.9069,29.914950611461705,26.756616544802892 -248.537,2024/06/05 13:50:26.9429,29.914950611461705,26.756616544802892 -248.784,2024/06/05 13:50:27.1899,29.914950611461705,26.756616544802892 -249.03,2024/06/05 13:50:27.4359,29.914950611461705,26.756616544802892 -249.276,2024/06/05 13:50:27.6819,29.914950611461705,26.756616544802892 -249.486,2024/06/05 13:50:27.8919,29.914950611461705,26.756616544802892 -249.523,2024/06/05 13:50:27.9289,29.914950611461705,26.756616544802892 -249.732,2024/06/05 13:50:28.1379,29.914950611461705,26.756616544802892 -249.769,2024/06/05 13:50:28.1749,29.914950611461705,26.756616544802892 -250.016,2024/06/05 13:50:28.4219,29.914950611461705,26.756616544802892 -250.262,2024/06/05 13:50:28.6679,29.914950611461705,26.756616544802892 -250.471,2024/06/05 13:50:28.8769,29.914950611461705,26.756616544802892 -250.508,2024/06/05 13:50:28.9139,29.914950611461705,26.756616544802892 -250.754,2024/06/05 13:50:29.1599,29.914950611461705,26.756616544802892 -251.001,2024/06/05 13:50:29.4069,29.914950611461705,26.756616544802892 -251.209,2024/06/05 13:50:29.6149,29.914950611461705,26.756616544802892 -251.247,2024/06/05 13:50:29.6529,29.914950611461705,26.756616544802892 -251.493,2024/06/05 13:50:29.8989,29.914950611461705,26.756616544802892 -251.703,2024/06/05 13:50:30.1089,29.914950611461705,26.756616544802892 -251.739,2024/06/05 13:50:30.1449,29.914950611461705,26.756616544802892 -251.985,2024/06/05 13:50:30.3909,29.914950611461705,26.756616544802892 -252.231,2024/06/05 13:50:30.6369,29.914950611461705,26.756616544802892 -252.441,2024/06/05 13:50:30.8469,29.914950611461705,26.756616544802892 -252.478,2024/06/05 13:50:30.8839,29.914950611461705,26.756616544802892 -252.725,2024/06/05 13:50:31.1309,29.914950611461705,26.756616544802892 -252.97,2024/06/05 13:50:31.3759,29.914950611461705,26.756616544802892 -253.18,2024/06/05 13:50:31.5859,29.914950611461705,26.756616544802892 -253.217,2024/06/05 13:50:31.6229,29.914950611461705,26.756616544802892 -253.464,2024/06/05 13:50:31.8699,29.914950611461705,26.756616544802892 -253.709,2024/06/05 13:50:32.1149,29.914950611461705,26.756616544802892 -253.919,2024/06/05 13:50:32.3249,29.914950611461705,26.756616544802892 -253.956,2024/06/05 13:50:32.3619,29.914950611461705,26.756616544802892 -254.202,2024/06/05 13:50:32.6079,29.914950611461705,26.756616544802892 -254.448,2024/06/05 13:50:32.8539,29.914950611461705,26.756616544802892 -254.658,2024/06/05 13:50:33.0639,29.914950611461705,26.756616544802892 -254.695,2024/06/05 13:50:33.1009,29.914950611461705,26.756616544802892 -254.941,2024/06/05 13:50:33.3469,29.914950611461705,26.756616544802892 -255.15,2024/06/05 13:50:33.5559,29.914950611461705,26.756616544802892 -255.187,2024/06/05 13:50:33.5929,29.914950611461705,26.756616544802892 -255.434,2024/06/05 13:50:33.8399,29.914950611461705,26.756616544802892 -255.679,2024/06/05 13:50:34.0849,29.914950611461705,26.756616544802892 -255.889,2024/06/05 13:50:34.2949,29.914950611461705,26.756616544802892 -255.926,2024/06/05 13:50:34.3319,29.914950611461705,26.756616544802892 -256.172,2024/06/05 13:50:34.5779,29.914950611461705,26.756616544802892 -256.418,2024/06/05 13:50:34.8239,29.914950611461705,26.756616544802892 -256.628,2024/06/05 13:50:35.0339,29.914950611461705,26.756616544802892 -257.157,2024/06/05 13:50:35.5629,29.914950611461705,26.756616544802892 -257.366,2024/06/05 13:50:35.7719,29.914950611461705,26.756616544802892 -257.403,2024/06/05 13:50:35.8089,29.914950611461705,26.756616544802892 -257.65,2024/06/05 13:50:36.0559,29.914950611461705,26.756616544802892 -257.859,2024/06/05 13:50:36.2649,29.914950611461705,26.756616544802892 -257.896,2024/06/05 13:50:36.3019,29.914950611461705,26.756616544802892 -258.142,2024/06/05 13:50:36.5479,29.914950611461705,26.756616544802892 -258.389,2024/06/05 13:50:36.7949,29.914950611461705,26.756616544802892 -258.598,2024/06/05 13:50:37.0039,29.914950611461705,26.756616544802892 -258.635,2024/06/05 13:50:37.0409,29.914950611461705,26.756616544802892 -258.881,2024/06/05 13:50:37.2869,29.914950611461705,26.756616544802892 -259.091,2024/06/05 13:50:37.4969,29.914950611461705,26.756616544802892 -259.128,2024/06/05 13:50:37.5339,29.914950611461705,26.756616544802892 -259.374,2024/06/05 13:50:37.7799,29.914950611461705,26.756616544802892 -260.114,2024/06/05 13:50:38.5199,29.914950611461705,26.756616544802892 -260.322,2024/06/05 13:50:38.7279,29.914950611461705,26.756616544802892 -260.569,2024/06/05 13:50:38.9749,29.914950611461705,26.756616544802892 -260.851,2024/06/05 13:50:39.2569,29.914950611461705,26.756616544802892 -261.098,2024/06/05 13:50:39.5039,29.914950611461705,26.756616544802892 -261.307,2024/06/05 13:50:39.7129,29.914950611461705,26.756616544802892 -261.344,2024/06/05 13:50:39.7499,29.914950611461705,26.756616544802892 -261.59,2024/06/05 13:50:39.9959,29.914950611461705,26.756616544802892 -261.837,2024/06/05 13:50:40.2429,29.914950611461705,26.756616544802892 -262.046,2024/06/05 13:50:40.4519,29.914950611461705,26.756616544802892 -262.083,2024/06/05 13:50:40.4889,29.914950611461705,26.756616544802892 -262.785,2024/06/05 13:50:41.1909,29.914950611461705,26.756616544802892 -262.822,2024/06/05 13:50:41.2279,29.914950611461705,26.756616544802892 -263.068,2024/06/05 13:50:41.4739,29.914950611461705,26.756616544802892 -263.277,2024/06/05 13:50:41.6829,29.914950611461705,26.756616544802892 -263.314,2024/06/05 13:50:41.7199,29.914950611461705,26.756616544802892 -263.56,2024/06/05 13:50:41.9659,29.914950611461705,26.756616544802892 -263.807,2024/06/05 13:50:42.2129,29.914950611461705,26.756616544802892 -264.016,2024/06/05 13:50:42.4219,29.914950611461705,26.756616544802892 -264.053,2024/06/05 13:50:42.4589,29.914950611461705,26.756616544802892 -264.3,2024/06/05 13:50:42.7059,29.914950611461705,26.756616544802892 -264.545,2024/06/05 13:50:42.9509,29.914950611461705,26.756616544802892 -264.754,2024/06/05 13:50:43.1599,29.914950611461705,26.756616544802892 -264.791,2024/06/05 13:50:43.1969,29.914950611461705,26.756616544802892 -265.038,2024/06/05 13:50:43.4439,29.914950611461705,26.756616544802892 -265.247,2024/06/05 13:50:43.6529,29.914950611461705,26.756616544802892 -265.284,2024/06/05 13:50:43.6899,29.914950611461705,26.756616544802892 -265.987,2024/06/05 13:50:44.3929,29.914950611461705,26.756616544802892 -266.023,2024/06/05 13:50:44.4289,29.914950611461705,26.756616544802892 -266.269,2024/06/05 13:50:44.6749,29.914950611461705,26.756616544802892 -266.516,2024/06/05 13:50:44.9219,29.914950611461705,26.756616544802892 -266.724,2024/06/05 13:50:45.1299,29.914950611461705,26.756616544802892 -266.762,2024/06/05 13:50:45.1679,29.914950611461705,26.756616544802892 -267.008,2024/06/05 13:50:45.4139,29.914950611461705,26.756616544802892 -267.222,2024/06/05 13:50:45.6279,29.914950611461705,26.756616544802892 -267.255,2024/06/05 13:50:45.6609,29.914950611461705,26.756616544802892 -267.501,2024/06/05 13:50:45.9069,29.914950611461705,26.756616544802892 -267.747,2024/06/05 13:50:46.1529,29.914950611461705,26.756616544802892 -267.956,2024/06/05 13:50:46.3619,29.914950611461705,26.756616544802892 -267.993,2024/06/05 13:50:46.3989,29.914950611461705,26.756616544802892 -268.239,2024/06/05 13:50:46.6449,29.914950611461705,26.756616544802892 -268.486,2024/06/05 13:50:46.8919,29.914950611461705,26.756616544802892 -268.695,2024/06/05 13:50:47.1009,29.914950611461705,26.756616544802892 -268.732,2024/06/05 13:50:47.1379,29.914950611461705,26.756616544802892 -268.979,2024/06/05 13:50:47.3849,29.914950611461705,26.756616544802892 -269.225,2024/06/05 13:50:47.6309,29.914950611461705,26.756616544802892 -269.434,2024/06/05 13:50:47.8399,29.914950611461705,26.756616544802892 -269.47,2024/06/05 13:50:47.8759,29.914950611461705,26.756616544802892 -269.718,2024/06/05 13:50:48.1239,29.914950611461705,26.756616544802892 -269.963,2024/06/05 13:50:48.3689,29.914950611461705,26.756616544802892 -270.21,2024/06/05 13:50:48.6159,29.914950611461705,26.756616544802892 -270.456,2024/06/05 13:50:48.8619,29.914950611461705,26.756616544802892 -270.702,2024/06/05 13:50:49.1079,29.914950611461705,26.756616544802892 -270.949,2024/06/05 13:50:49.3549,29.914950611461705,26.756616544802892 -271.158,2024/06/05 13:50:49.5639,29.914950611461705,26.756616544802892 -271.195,2024/06/05 13:50:49.6009,29.914950611461705,26.756616544802892 -271.442,2024/06/05 13:50:49.8479,29.914950611461705,26.756616544802892 -271.688,2024/06/05 13:50:50.0939,29.914950611461705,26.756616544802892 -271.897,2024/06/05 13:50:50.3029,29.914950611461705,26.756616544802892 -271.934,2024/06/05 13:50:50.3399,29.914950611461705,26.756616544802892 -272.18,2024/06/05 13:50:50.5859,29.914950611461705,26.756616544802892 -272.427,2024/06/05 13:50:50.8329,29.914950611461705,26.756616544802892 -272.635,2024/06/05 13:50:51.0409,29.914950611461705,26.756616544802892 -273.128,2024/06/05 13:50:51.5339,29.914950611461705,26.756616544802892 -273.165,2024/06/05 13:50:51.5709,29.914950611461705,26.756616544802892 -273.411,2024/06/05 13:50:51.8169,29.914950611461705,26.756616544802892 -273.658,2024/06/05 13:50:52.0639,29.914950611461705,26.756616544802892 -273.867,2024/06/05 13:50:52.2729,29.914950611461705,26.756616544802892 -273.904,2024/06/05 13:50:52.3099,29.914950611461705,26.756616544802892 -274.15,2024/06/05 13:50:52.5559,29.914950611461705,26.756616544802892 -274.396,2024/06/05 13:50:52.8019,29.914950611461705,26.756616544802892 -274.605,2024/06/05 13:50:53.0109,29.914950611461705,26.756616544802892 -274.644,2024/06/05 13:50:53.0499,29.914950611461705,26.756616544802892 -274.889,2024/06/05 13:50:53.2949,29.914950611461705,26.756616544802892 -275.135,2024/06/05 13:50:53.5409,29.914950611461705,26.756616544802892 -275.344,2024/06/05 13:50:53.7499,29.914950611461705,26.756616544802892 -275.381,2024/06/05 13:50:53.7869,29.914950611461705,26.756616544802892 -275.628,2024/06/05 13:50:54.0339,29.914950611461705,26.756616544802892 -275.837,2024/06/05 13:50:54.2429,29.914950611461705,26.756616544802892 -275.874,2024/06/05 13:50:54.2799,29.914950611461705,26.756616544802892 -276.121,2024/06/05 13:50:54.5269,29.914950611461705,26.756616544802892 -276.367,2024/06/05 13:50:54.7729,29.914950611461705,26.756616544802892 -276.576,2024/06/05 13:50:54.9819,29.914950611461705,26.756616544802892 -276.613,2024/06/05 13:50:55.0189,29.914950611461705,26.756616544802892 -276.86,2024/06/05 13:50:55.2659,29.914950611461705,26.756616544802892 -277.106,2024/06/05 13:50:55.5119,29.914950611461705,26.756616544802892 -277.315,2024/06/05 13:50:55.7209,29.914950611461705,26.756616544802892 -277.352,2024/06/05 13:50:55.7579,29.914950611461705,26.756616544802892 -277.598,2024/06/05 13:50:56.0039,29.914950611461705,26.756616544802892 -277.807,2024/06/05 13:50:56.2129,29.914950611461705,26.756616544802892 -277.844,2024/06/05 13:50:56.2499,29.914950611461705,26.756616544802892 -278.091,2024/06/05 13:50:56.4969,29.914950611461705,26.756616544802892 -278.337,2024/06/05 13:50:56.7429,29.914950611461705,26.756616544802892 -278.546,2024/06/05 13:50:56.9519,29.914950611461705,26.756616544802892 -278.583,2024/06/05 13:50:56.9889,29.914950611461705,26.756616544802892 -278.83,2024/06/05 13:50:57.2359,29.914950611461705,26.756616544802892 -279.075,2024/06/05 13:50:57.4809,29.914950611461705,26.756616544802892 -279.285,2024/06/05 13:50:57.6909,29.914950611461705,26.756616544802892 -279.778,2024/06/05 13:50:58.1839,29.914950611461705,26.756616544802892 -279.815,2024/06/05 13:50:58.2209,29.914950611461705,26.756616544802892 -280.061,2024/06/05 13:50:58.4669,29.914950611461705,26.756616544802892 -280.307,2024/06/05 13:50:58.7129,29.914950611461705,26.756616544802892 -280.553,2024/06/05 13:50:58.9589,29.914950611461705,26.756616544802892 -280.8,2024/06/05 13:50:59.2059,29.914950611461705,26.756616544802892 -281.009,2024/06/05 13:50:59.4149,29.914950611461705,26.756616544802892 -281.046,2024/06/05 13:50:59.4519,29.914950611461705,26.756616544802892 -281.255,2024/06/05 13:50:59.6609,29.914950611461705,26.756616544802892 -281.292,2024/06/05 13:50:59.6979,29.914950611461705,26.756616544802892 -281.539,2024/06/05 13:50:59.9449,29.914950611461705,26.756616544802892 -281.747,2024/06/05 13:51:00.1529,29.914950611461705,26.756616544802892 -282.24,2024/06/05 13:51:00.6459,29.914950611461705,26.756616544802892 -282.277,2024/06/05 13:51:00.6829,29.914950611461705,26.756616544802892 -282.523,2024/06/05 13:51:00.9289,29.914950611461705,26.756616544802892 -282.733,2024/06/05 13:51:01.1389,29.914950611461705,26.756616544802892 -282.77,2024/06/05 13:51:01.1759,29.914950611461705,26.756616544802892 -283.016,2024/06/05 13:51:01.4219,29.914950611461705,26.756616544802892 -283.226,2024/06/05 13:51:01.6319,29.914950611461705,26.756616544802892 -283.263,2024/06/05 13:51:01.6689,29.914950611461705,26.756616544802892 -283.509,2024/06/05 13:51:01.9149,29.914950611461705,26.756616544802892 -283.755,2024/06/05 13:51:02.1609,29.914950611461705,26.756616544802892 -283.964,2024/06/05 13:51:02.3699,29.914950611461705,26.756616544802892 -284.001,2024/06/05 13:51:02.4069,29.914950611461705,26.756616544802892 -284.247,2024/06/05 13:51:02.6529,29.914950611461705,26.756616544802892 -284.457,2024/06/05 13:51:02.8629,29.914950611461705,26.756616544802892 -284.494,2024/06/05 13:51:02.8999,29.914950611461705,26.756616544802892 -284.74,2024/06/05 13:51:03.1459,29.914950611461705,26.756616544802892 -284.949,2024/06/05 13:51:03.3549,29.914950611461705,26.756616544802892 -284.986,2024/06/05 13:51:03.3919,29.914950611461705,26.756616544802892 -285.233,2024/06/05 13:51:03.6389,29.914950611461705,26.756616544802892 -285.688,2024/06/05 13:51:04.0939,29.914950611461705,26.756616544802892 -286.18,2024/06/05 13:51:04.5859,29.914950611461705,26.756616544802892 -286.218,2024/06/05 13:51:04.6239,29.914950611461705,26.756616544802892 -286.463,2024/06/05 13:51:04.8689,29.914950611461705,26.756616544802892 -286.711,2024/06/05 13:51:05.1169,29.914950611461705,26.756616544802892 -286.919,2024/06/05 13:51:05.3249,29.914950611461705,26.756616544802892 -286.956,2024/06/05 13:51:05.3619,29.914950611461705,26.756616544802892 -287.203,2024/06/05 13:51:05.6089,29.914950611461705,26.756616544802892 -287.411,2024/06/05 13:51:05.8169,29.914950611461705,26.756616544802892 -287.449,2024/06/05 13:51:05.8549,29.914950611461705,26.756616544802892 -287.696,2024/06/05 13:51:06.1019,29.914950611461705,26.756616544802892 -287.942,2024/06/05 13:51:06.3479,29.914950611461705,26.756616544802892 -288.151,2024/06/05 13:51:06.5569,29.914950611461705,26.756616544802892 -288.187,2024/06/05 13:51:06.5929,29.914950611461705,26.756616544802892 -288.434,2024/06/05 13:51:06.8399,29.914950611461705,26.756616544802892 -288.643,2024/06/05 13:51:07.0489,29.914950611461705,26.756616544802892 -288.68,2024/06/05 13:51:07.0859,29.914950611461705,26.756616544802892 -288.927,2024/06/05 13:51:07.3329,29.914950611461705,26.756616544802892 -289.173,2024/06/05 13:51:07.5789,29.914950611461705,26.756616544802892 +0.001,2024/06/05 13:46:18.4069,, +0.001,2024/06/05 13:46:18.4069,, +0.046,2024/06/05 13:46:18.4519,, +0.505,2024/06/05 13:46:18.9109,, +0.784,2024/06/05 13:46:19.1899,, +0.998,2024/06/05 13:46:19.4039,, +1.031,2024/06/05 13:46:19.4369,, +1.277,2024/06/05 13:46:19.6829,, +1.737,2024/06/05 13:46:20.1429,, +2.475,2024/06/05 13:46:20.8809,14.306564149989974, +2.508,2024/06/05 13:46:20.9139,13.82356354529864,16.546903033498445 +2.755,2024/06/05 13:46:21.1609,13.376539843390688,15.776853010315172 +3.001,2024/06/05 13:46:21.4069,12.963953971073137,15.10518674716293 +3.214,2024/06/05 13:46:21.6199,17.186117576772176,20.265544840746514 +3.707,2024/06/05 13:46:22.1129,17.787903862162167,19.991069434696513 +4.692,2024/06/05 13:46:23.0979,17.196414354936515,20.44667862188543 +5.185,2024/06/05 13:46:23.5909,16.660317418062245,19.79741144695437 +5.677,2024/06/05 13:46:24.0829,17.03024990317833,20.140681687160676 +5.711,2024/06/05 13:46:24.1169,16.582594976069053,20.51016008388688 +5.956,2024/06/05 13:46:24.3619,16.168439041930775,19.963123898565417 +6.203,2024/06/05 13:46:24.6089,15.783807253909664,19.45764631192581 +6.416,2024/06/05 13:46:24.8219,17.223323057495513,20.898849364544088 +6.908,2024/06/05 13:46:25.3139,19.420864050662303,20.57801121232432 +7.4,2024/06/05 13:46:25.8059,21.80641941117869,20.19470442855061 +7.893,2024/06/05 13:46:26.2989,23.950156575688577,19.78635893740938 +8.386,2024/06/05 13:46:26.7919,27.2984643129637,19.755505561741515 +8.912,2024/06/05 13:46:27.3179,26.91571734982814,25.30278184766982 +9.125,2024/06/05 13:46:27.5309,30.426509605481954,30.720966419983892 +9.158,2024/06/05 13:46:27.5639,30.04315451155096,35.009182468930305 +9.405,2024/06/05 13:46:27.8109,29.671070317619183,34.400280672471666 +9.617,2024/06/05 13:46:28.0229,33.299839494280256,38.69840651327476 +10.11,2024/06/05 13:46:28.5159,36.706102095353074,38.69840651327476 +11.095,2024/06/05 13:46:29.5009,38.58635635236536,38.73972982180783 +11.587,2024/06/05 13:46:29.9929,39.33734150627889,38.84584919911006 +12.08,2024/06/05 13:46:30.4859,39.16233529486119,38.9657969677682 +12.113,2024/06/05 13:46:30.5189,38.9857622109972,40.30508652763321 +12.36,2024/06/05 13:46:30.7659,38.54612105356213,40.27861301815973 +12.606,2024/06/05 13:46:31.0119,38.131427289395305,40.27819923151149 +12.819,2024/06/05 13:46:31.2249,38.13038731486495,40.52694576862823 +13.312,2024/06/05 13:46:31.7179,38.13257273576332,40.5121380987641 +15.281,2024/06/05 13:46:33.6869,37.363529454982405,39.8990392532619 +15.315,2024/06/05 13:46:33.7209,36.4701893694519,40.06577924696669 +15.562,2024/06/05 13:46:33.9679,35.512487685449464,40.06577924696669 +15.807,2024/06/05 13:46:34.2129,35.505366277265225,39.04100408544842 +16.021,2024/06/05 13:46:34.4269,35.71800473247309,39.13821661752104 +16.513,2024/06/05 13:46:34.9189,35.45988505728504,38.89215859270349 +17.006,2024/06/05 13:46:35.4119,35.183002688243164,38.90287050248777 +17.498,2024/06/05 13:46:35.9039,35.79706531347895,38.66178130057296 +17.991,2024/06/05 13:46:36.3969,35.42498955620847,38.36969290121219 +18.517,2024/06/05 13:46:36.9229,34.388935002042764,38.467302132243866 +18.729,2024/06/05 13:46:37.1349,33.56429753421823,38.57805939477343 +18.763,2024/06/05 13:46:37.1689,33.58949274681766,37.99298180804801 +19.714,2024/06/05 13:46:38.1199,33.94457957846336,37.98289088523937 +20.207,2024/06/05 13:46:38.6129,34.069587341340174,37.99868418774524 +20.7,2024/06/05 13:46:39.1059,34.09452715039771,38.28707353663897 +21.192,2024/06/05 13:46:39.5979,34.42708436581647,38.49545427709615 +21.718,2024/06/05 13:46:40.1239,32.899166743457265,36.45636661361999 +21.93,2024/06/05 13:46:40.3359,32.972227951595315,33.48482243245936 +21.964,2024/06/05 13:46:40.3699,31.40495604785696,30.222508168581903 +22.211,2024/06/05 13:46:40.6169,29.58649894023021,30.222508168581903 +22.423,2024/06/05 13:46:40.8289,29.528108564591616,25.631360999109404 +24.398,2024/06/05 13:46:42.8039,28.97767670339433,25.62095496528834 +25.132,2024/06/05 13:46:43.5379,27.791588903715223,26.122786987609114 +25.166,2024/06/05 13:46:43.5719,27.34977778387951,26.422843652163305 +25.413,2024/06/05 13:46:43.8189,27.388247332642994,26.239918699061043 +25.625,2024/06/05 13:46:44.0309,26.213293986242928,24.451312166562076 +26.61,2024/06/05 13:46:45.0159,24.91142931155965,24.451993783738782 +27.102,2024/06/05 13:46:45.5079,23.40340873099242,24.507141816213494 +27.136,2024/06/05 13:46:45.5419,23.447201631918126,23.624140195994435 +27.349,2024/06/05 13:46:45.7549,23.21553185994752,23.649524308112415 +27.383,2024/06/05 13:46:45.7889,23.259159609649174,23.634720222587784 +27.629,2024/06/05 13:46:46.0349,22.729190305728732,23.350945733881243 +27.875,2024/06/05 13:46:46.2809,22.06961295745725,23.368782595591068 +28.088,2024/06/05 13:46:46.4939,21.8353293814271,23.24865587512534 +28.121,2024/06/05 13:46:46.5269,21.824693385688644,22.89978165834775 +28.367,2024/06/05 13:46:46.7729,21.661024906499946,22.826884734160874 +28.614,2024/06/05 13:46:47.0199,21.345246314575427,22.808624099961254 +28.827,2024/06/05 13:46:47.2329,20.69763160419565,22.850237052016187 +28.86,2024/06/05 13:46:47.2659,19.902665448477812,22.937596502975925 +29.106,2024/06/05 13:46:47.5119,19.68966121142512,22.77352263777682 +29.319,2024/06/05 13:46:47.7249,18.74768951281661,22.7508241608958 +29.352,2024/06/05 13:46:47.7579,18.485191339301384,22.728103015136718 +29.599,2024/06/05 13:46:48.0049,17.691123821537545,22.639199043546867 +29.845,2024/06/05 13:46:48.2509,17.348655915343215,22.565460332109335 +30.058,2024/06/05 13:46:48.4639,17.611418709619183,22.565460332109335 +30.092,2024/06/05 13:46:48.4979,16.47010527641217,22.44326179502436 +30.338,2024/06/05 13:46:48.7439,16.362453515823333,20.661558508495915 +30.55,2024/06/05 13:46:48.9559,14.711790564346817,18.553526169796765 +30.584,2024/06/05 13:46:48.9899,14.602983477248413,16.1730228054828 +30.831,2024/06/05 13:46:49.2369,14.432721443853561,16.210079169043766 +31.076,2024/06/05 13:46:49.4819,12.08214223221815,12.867271142968375 +31.289,2024/06/05 13:46:49.6949,8.379572863775369,12.860793132618221 +31.323,2024/06/05 13:46:49.7289,7.695423330129129,11.641878428043016 +31.782,2024/06/05 13:46:50.1879,7.534213151756613,10.548301601047756 +32.062,2024/06/05 13:46:50.4679,7.495669247723937,10.605030252982152 +32.274,2024/06/05 13:46:50.6799,7.073424441763943,9.821744583660617 +33.013,2024/06/05 13:46:51.4189,6.669539610850216,9.82004752194883 +33.293,2024/06/05 13:46:51.6989,6.833403419882431,9.765585833254791 +33.539,2024/06/05 13:46:51.9449,6.790883002528688,9.472767986883946 +33.752,2024/06/05 13:46:52.1579,6.816477669302673,9.33987865731313 +33.786,2024/06/05 13:46:52.1919,7.576506337083852,9.731392500562292 +34.491,2024/06/05 13:46:52.8969,7.291626436671285,10.393908472433905 +36.461,2024/06/05 13:46:54.8669,7.801340880915223,10.808946911393974 +36.494,2024/06/05 13:46:54.8999,9.037660667719079,10.96053526673462 +36.707,2024/06/05 13:46:55.1129,9.156431067018755,11.213087591441232 +37.2,2024/06/05 13:46:55.6059,9.007085333608494,11.360751148875089 +38.185,2024/06/05 13:46:56.5909,9.224903824686807,11.68617416722285 +38.677,2024/06/05 13:46:57.0829,10.273780935597784,11.68617416722285 +39.17,2024/06/05 13:46:57.5759,11.016393218301477,11.513759884011247 +39.663,2024/06/05 13:46:58.0689,11.396914282928634,11.549891774384728 +39.697,2024/06/05 13:46:58.1029,11.550439111919935,12.485992151206888 +39.942,2024/06/05 13:46:58.3479,11.686961002385225,12.181953866272849 +40.189,2024/06/05 13:46:58.5949,11.782950862771658,12.181953866272849 +40.401,2024/06/05 13:46:58.8069,11.839394594649875,12.827054741184094 +40.894,2024/06/05 13:46:59.2999,11.389448635903921,11.984712484383316 +41.879,2024/06/05 13:47:00.2849,11.311676400450745,11.078507721409654 +42.372,2024/06/05 13:47:00.7779,11.368235641875302,11.369549976435597 +42.863,2024/06/05 13:47:01.2689,11.734074558614966,11.244257793795612 +42.898,2024/06/05 13:47:01.3039,11.852978674083763,12.187425213445756 +43.144,2024/06/05 13:47:01.5499,12.033525964007614,12.138094304022083 +43.357,2024/06/05 13:47:01.7629,12.184642680086599,12.785408349625234 +43.391,2024/06/05 13:47:01.7969,12.36332172751076,13.396516960264957 +44.095,2024/06/05 13:47:02.5009,12.3848721217166,13.706446172026748 +44.588,2024/06/05 13:47:02.9939,12.385985777408656,13.764689123502452 +45.08,2024/06/05 13:47:03.4859,12.385985777408656,13.725887949418793 +46.066,2024/06/05 13:47:04.4719,12.373312029312169,13.685759021698432 +46.311,2024/06/05 13:47:04.7169,12.428924366957459,13.745302227791623 +46.345,2024/06/05 13:47:04.7509,12.428924366957459,13.832329280830953 +46.592,2024/06/05 13:47:04.9979,12.428924366957459,13.832329280830953 +47.296,2024/06/05 13:47:05.7019,12.535008447608558,14.004761095189497 +47.789,2024/06/05 13:47:06.1949,12.369595650292416,13.65772064926404 +48.282,2024/06/05 13:47:06.6879,13.49925498157141,13.48085061608997 +48.774,2024/06/05 13:47:07.1799,14.389851149055156,13.139000469340631 +49.3,2024/06/05 13:47:07.7059,13.484303348027272,14.832396974191326 +49.513,2024/06/05 13:47:07.9189,13.801382572755202,15.763882770434446 +49.548,2024/06/05 13:47:07.9539,13.864077454997561,16.71227094083865 +49.793,2024/06/05 13:47:08.1989,13.887934066796568,16.486357996840905 +50.006,2024/06/05 13:47:08.4119,13.445676141293976,16.622274212634082 +50.498,2024/06/05 13:47:08.9039,13.054483529802894,16.90857770482189 +51.484,2024/06/05 13:47:09.8899,12.874683346178946,16.88786546606764 +51.976,2024/06/05 13:47:10.3819,12.808222933438259,16.517667309076465 +52.469,2024/06/05 13:47:10.8749,12.778574021501736,16.526745999540662 +52.503,2024/06/05 13:47:10.9089,12.540554901653673,17.051881616603684 +52.749,2024/06/05 13:47:11.1549,12.59611324836069,16.572064848211685 +52.961,2024/06/05 13:47:11.3669,12.989120115670692,17.191082959875835 +52.995,2024/06/05 13:47:11.4009,13.012151703466788,17.788573111223208 +53.7,2024/06/05 13:47:12.1059,13.150280797666717,18.016658957753517 +54.192,2024/06/05 13:47:12.5979,13.028880386968854,18.00648031496809 +54.685,2024/06/05 13:47:13.0909,12.893195211375328,17.312808360671394 +55.178,2024/06/05 13:47:13.5839,13.36318497378861,17.500476183997584 +55.704,2024/06/05 13:47:14.1099,13.350965353190025,17.587874611030557 +55.916,2024/06/05 13:47:14.3219,14.051465338566336,17.977764043395386 +55.95,2024/06/05 13:47:14.3559,14.028542333400562,18.565200420859092 +56.409,2024/06/05 13:47:14.8149,14.72541785602346,19.21371038260613 +57.394,2024/06/05 13:47:15.7999,14.998697261437135,19.224116798091575 +57.64,2024/06/05 13:47:16.0459,15.101343473766024,19.23191791441162 +57.921,2024/06/05 13:47:16.3269,15.078949321610247,19.500427345744672 +58.132,2024/06/05 13:47:16.5379,15.20299426043338,19.926531726988184 +58.167,2024/06/05 13:47:16.5729,14.847461952697273,20.442602574036407 +58.413,2024/06/05 13:47:16.8189,14.847461952697273,20.304350929460085 +58.659,2024/06/05 13:47:17.0649,14.882721602545088,20.27477907812232 +58.871,2024/06/05 13:47:17.2769,15.053200675428604,20.617144968852177 +58.905,2024/06/05 13:47:17.3109,14.577143185421756,21.143951065651535 +59.152,2024/06/05 13:47:17.5579,14.221725326569194,19.908959457155632 +59.364,2024/06/05 13:47:17.7699,14.189238272671036,19.314070863837415 +59.399,2024/06/05 13:47:17.8049,13.810873610495065,18.700267377767624 +59.645,2024/06/05 13:47:18.0509,13.407366306041576,18.700267377767624 +59.891,2024/06/05 13:47:18.2969,13.39707465066211,18.49324200890693 +60.103,2024/06/05 13:47:18.5089,12.894086678178429,18.245547402037573 +60.137,2024/06/05 13:47:18.5429,12.178792571751814,18.256505689753446 +60.383,2024/06/05 13:47:18.7889,12.185585982920005,17.76701062831524 +60.596,2024/06/05 13:47:19.0019,13.588746188979945,18.63866948041088 +61.334,2024/06/05 13:47:19.7399,14.11121670096596,18.17415747703315 +61.369,2024/06/05 13:47:19.7749,13.665797561376237,18.83082579177026 +61.614,2024/06/05 13:47:20.0199,13.607807089796454,18.222696470793412 +61.827,2024/06/05 13:47:20.2329,13.200313475901993,17.6276298274423 +61.861,2024/06/05 13:47:20.2669,13.199137902882946,17.240456297132432 +62.107,2024/06/05 13:47:20.5129,13.186940596622911,17.216271373325874 +62.353,2024/06/05 13:47:20.7589,13.171023577117177,17.168770097670556 +62.565,2024/06/05 13:47:20.9709,12.830862577503138,17.04014866914801 +62.599,2024/06/05 13:47:21.0049,12.792059318546297,16.531787562148264 +62.846,2024/06/05 13:47:21.2519,11.923559215596182,15.59807680452946 +63.059,2024/06/05 13:47:21.4649,12.053568174907344,14.742229591663987 +63.093,2024/06/05 13:47:21.4989,11.204473654976871,13.972592219532256 +63.339,2024/06/05 13:47:21.7449,10.532325719302692,13.9534941860453 +64.044,2024/06/05 13:47:22.4499,10.479810913447993,14.30617582258329 +64.077,2024/06/05 13:47:22.4829,10.60036867717195,14.554495296413865 +64.289,2024/06/05 13:47:22.6949,9.964534812172797,14.392127477664076 +65.275,2024/06/05 13:47:23.6809,9.970127796366361,13.77074193111371 +65.768,2024/06/05 13:47:24.1739,10.200518355096394,14.005951116102992 +66.26,2024/06/05 13:47:24.6659,11.128094300401793,14.205632685663812 +66.752,2024/06/05 13:47:25.1579,10.920243776488933,13.400248753910006 +67.491,2024/06/05 13:47:25.8969,10.931605554538368,12.909944487358056 +67.772,2024/06/05 13:47:26.1779,10.930291138292251,12.911235417263523 +68.476,2024/06/05 13:47:26.8819,10.896007916010417,12.911235417263523 +68.968,2024/06/05 13:47:27.3739,13.39308450819651,13.491972922198345 +69.461,2024/06/05 13:47:27.8669,16.66036662537682,13.69914839202301 +70.446,2024/06/05 13:47:28.8519,23.270424226433388,15.246857599737288 +70.48,2024/06/05 13:47:28.8859,23.262643330298058,22.538115863280733 +70.693,2024/06/05 13:47:29.0989,29.38988801001797,29.461274016353514 +70.726,2024/06/05 13:47:29.1319,29.32538424163542,35.04996433664377 +71.677,2024/06/05 13:47:30.0829,33.456593941418184,38.94354888810212 +73.648,2024/06/05 13:47:32.0539,34.047026301866964,40.03456839615817 +73.895,2024/06/05 13:47:32.3009,34.2200620057618,39.7638864633057 +74.175,2024/06/05 13:47:32.5809,34.07658716924965,40.19079496601181 +74.879,2024/06/05 13:47:33.2849,34.02448408486749,40.281923158326656 +75.372,2024/06/05 13:47:33.7779,33.832990768890625,40.30839449378586 +75.864,2024/06/05 13:47:34.2699,33.7766327442546,40.389355033226266 +76.357,2024/06/05 13:47:34.7629,33.819347655773775,40.39966996564865 +77.13,2024/06/05 13:47:35.5359,33.86015866512749,40.393481322279385 +77.376,2024/06/05 13:47:35.7819,33.7715278297273,40.367065783878814 +77.588,2024/06/05 13:47:35.9939,33.61665227747775,40.3773864103824 +78.081,2024/06/05 13:47:36.4869,33.940854573734946,40.919840338561116 +78.574,2024/06/05 13:47:36.9799,35.360881691821696,41.31222579334113 +79.065,2024/06/05 13:47:37.4709,36.78581998167447,41.32231035812656 +80.051,2024/06/05 13:47:38.4569,37.195414375628836,41.48533877568476 +80.297,2024/06/05 13:47:38.7029,36.91252474105022,41.25974632334361 +81.036,2024/06/05 13:47:39.4419,36.86553697007515,41.55799161011834 +81.775,2024/06/05 13:47:40.1809,37.20556440895003,41.78835563487353 +82.268,2024/06/05 13:47:40.6739,37.602595288275204,41.76761105609624 +82.76,2024/06/05 13:47:41.1659,37.746340311301374,41.714505870260524 +83.252,2024/06/05 13:47:41.6579,37.57836256854942,41.7508482947752 +83.287,2024/06/05 13:47:41.6929,37.13758204299283,42.239791666152904 +83.533,2024/06/05 13:47:41.9389,36.70054338913111,42.23939709165682 +83.779,2024/06/05 13:47:42.1849,36.6259282570378,42.17819341792628 +83.991,2024/06/05 13:47:42.3969,36.71331932816724,42.135495725100945 +84.977,2024/06/05 13:47:43.3829,36.68762201608911,42.898717929560554 +85.469,2024/06/05 13:47:43.8749,36.68762201608911,42.927846440276966 +86.454,2024/06/05 13:47:44.8599,37.393972714895156,39.69004913073301 +86.489,2024/06/05 13:47:44.8949,34.67260669710943,35.43444651747787 +86.735,2024/06/05 13:47:45.1409,34.3863278096093,29.917664793005933 +86.981,2024/06/05 13:47:45.3869,31.841579842975378,23.977767480174908 +87.193,2024/06/05 13:47:45.5989,32.977892281199075,23.105554887659952 +87.44,2024/06/05 13:47:45.8459,34.544008246686595,23.082460874005612 +88.178,2024/06/05 13:47:46.5839,35.203186898576625,22.420972325035326 +88.67,2024/06/05 13:47:47.0759,36.03216953472737,22.230609528305784 +89.197,2024/06/05 13:47:47.6029,35.82558323032758,23.38589318371227 +89.41,2024/06/05 13:47:47.8159,35.33849452654037,23.47693903954829 +89.444,2024/06/05 13:47:47.8499,34.447761550819145,23.68825306630553 +90.183,2024/06/05 13:47:48.5889,33.77220852958157,23.65375234502974 +90.394,2024/06/05 13:47:48.7999,33.03575214128255,23.656570616497508 +90.429,2024/06/05 13:47:48.8349,32.44794239265821,23.641770943254933 +90.64,2024/06/05 13:47:49.0459,32.46800370161123,22.60162236064777 +90.675,2024/06/05 13:47:49.0809,31.72032960649766,21.784551100875746 +90.922,2024/06/05 13:47:49.3279,30.64817033409352,21.76541599265526 +91.168,2024/06/05 13:47:49.5739,30.462130249054624,21.199842766712525 +91.379,2024/06/05 13:47:49.7849,30.368692287689825,21.21556032726923 +91.414,2024/06/05 13:47:49.8199,30.14646240278157,20.25997696609418 +91.661,2024/06/05 13:47:50.0669,28.86602027361593,19.73744326569849 +91.872,2024/06/05 13:47:50.2779,26.650677677869286,19.75854245636555 +91.906,2024/06/05 13:47:50.3119,23.404096311072497,19.870413516918397 +92.152,2024/06/05 13:47:50.5579,20.505143733713673,19.78635893740938 +92.399,2024/06/05 13:47:50.8049,20.0597097193109,18.46076921474292 +92.611,2024/06/05 13:47:51.0169,19.846798288360727,18.636880997992485 +93.103,2024/06/05 13:47:51.5089,20.22528291435116,18.517559234413156 +93.138,2024/06/05 13:47:51.5439,19.051925416319303,18.26745740380965 +93.384,2024/06/05 13:47:51.7899,18.994978162723076,16.222412479858434 +93.63,2024/06/05 13:47:52.0359,16.78481114154993,14.664014911794563 +93.842,2024/06/05 13:47:52.2479,15.941019162966038,14.701473849017088 +93.877,2024/06/05 13:47:52.2829,15.973001646817131,13.890044396377332 +94.581,2024/06/05 13:47:52.9869,16.22627357168047,14.40948761522537 +94.615,2024/06/05 13:47:53.0209,16.261512279281497,14.910846164230028 +94.862,2024/06/05 13:47:53.2679,14.96359567090499,13.372858083945008 +95.073,2024/06/05 13:47:53.4789,12.409905202154643,13.490737563232042 +95.812,2024/06/05 13:47:54.2179,11.081516141757326,13.583077707206124 +96.093,2024/06/05 13:47:54.4989,9.787688724859455,13.612494260788505 +96.34,2024/06/05 13:47:54.7459,10.671748071266473,11.369549976435597 +96.551,2024/06/05 13:47:54.9569,11.096701384160218,10.890362712049585 +96.585,2024/06/05 13:47:54.9909,11.785876995444669,10.389096848780135 +96.832,2024/06/05 13:47:55.2379,12.364251398435153,10.389096848780135 +97.043,2024/06/05 13:47:55.4489,12.325144843056664,11.00605893739141 +97.078,2024/06/05 13:47:55.4839,12.794080887158477,11.590225767142474 +97.325,2024/06/05 13:47:55.7309,13.152509484777184,11.588787684654509 +97.571,2024/06/05 13:47:55.9769,13.457297298296561,11.587349423689037 +97.783,2024/06/05 13:47:56.1889,13.317346737918868,12.044362443345296 +97.817,2024/06/05 13:47:56.2229,13.528344021130238,12.484657250668384 +98.063,2024/06/05 13:47:56.4689,13.432675891616787,12.436505404118419 +98.276,2024/06/05 13:47:56.6819,13.432675891616787,13.401492454200763 +98.802,2024/06/05 13:47:57.2079,13.672230434625462,14.286357128393508 +99.014,2024/06/05 13:47:57.4199,13.255274378548418,14.649232061783989 +99.049,2024/06/05 13:47:57.4549,13.438835472264781,15.003332963045244 +99.295,2024/06/05 13:47:57.7009,13.582654591321749,15.003332963045244 +99.507,2024/06/05 13:47:57.9129,13.865694041929356,15.971850237214221 +99.541,2024/06/05 13:47:57.9469,13.427925953114501,16.690316553818466 +99.788,2024/06/05 13:47:58.1939,12.419672937001835,16.654328766620008 +100.033,2024/06/05 13:47:58.4389,12.405087943927624,16.249102539319928 +100.246,2024/06/05 13:47:58.6519,13.752324777347136,18.126407991289025 +100.28,2024/06/05 13:47:58.6859,13.742667846537534,19.826749607537792 +100.526,2024/06/05 13:47:58.9319,12.787790513099711,19.582304937536506 +100.737,2024/06/05 13:47:59.1429,14.725261740741995,21.115555087817764 +100.772,2024/06/05 13:47:59.1779,13.966668038296765,22.609732417700126 +101.019,2024/06/05 13:47:59.4249,13.999343170142968,22.282279955157193 +101.265,2024/06/05 13:47:59.6709,14.077004971425685,22.234357797486904 +101.477,2024/06/05 13:47:59.8829,16.796311855703596,24.60894146443524 +101.512,2024/06/05 13:47:59.9179,16.864435816306603,26.741353742845558 +101.758,2024/06/05 13:48:00.1639,16.864435816306603,26.7257678405442 +102.004,2024/06/05 13:48:00.4099,16.864435816306603,26.7257678405442 +102.215,2024/06/05 13:48:00.6209,18.849189744469516,28.61235164516658 +102.25,2024/06/05 13:48:00.6559,18.830184865502297,30.321059787986744 +102.496,2024/06/05 13:48:00.9019,18.830184865502297,30.32160945596391 +102.708,2024/06/05 13:48:01.1139,20.084905981255876,31.45472937413387 +102.742,2024/06/05 13:48:01.1479,19.964796604230703,31.888869531546582 +102.989,2024/06/05 13:48:01.3949,19.830923257413033,31.888869531546582 +103.2,2024/06/05 13:48:01.6059,20.970148460056432,32.634848449676205 +103.235,2024/06/05 13:48:01.6409,20.960855690176235,33.2019075757202 +103.481,2024/06/05 13:48:01.8869,20.77952130697798,33.03886600152412 +103.728,2024/06/05 13:48:02.1339,20.58403018970289,33.03886600152412 +103.939,2024/06/05 13:48:02.3449,21.528623021350604,33.332666659999866 +103.974,2024/06/05 13:48:02.3799,21.30846251404987,33.62390022984643 +104.22,2024/06/05 13:48:02.6259,21.28862952673238,33.383129471835524 +104.432,2024/06/05 13:48:02.8379,23.390144304273473,34.791282433008035 +104.467,2024/06/05 13:48:02.8729,23.127358531481757,36.36710968260561 +104.712,2024/06/05 13:48:03.1179,23.056053634467162,35.95228319128935 +104.924,2024/06/05 13:48:03.3299,24.622226198874245,36.97431540948392 +104.959,2024/06/05 13:48:03.3649,24.322450723465874,38.36187343357117 +105.206,2024/06/05 13:48:03.6119,24.008164320143504,38.36187343357117 +105.663,2024/06/05 13:48:04.0689,25.06460617601329,38.694099464044044 +106.156,2024/06/05 13:48:04.5619,26.312883082094526,37.872593432894625 +106.191,2024/06/05 13:48:04.5969,25.94833505167615,39.37469576602042 +106.436,2024/06/05 13:48:04.8419,25.65753681479033,38.344925783385385 +106.683,2024/06/05 13:48:05.0889,25.29649469152165,37.28672686090856 +106.894,2024/06/05 13:48:05.2999,26.6239240784178,39.074714756903 +106.929,2024/06/05 13:48:05.3349,26.214412110495104,40.78439243959222 +107.175,2024/06/05 13:48:05.5809,25.68429011323287,39.3361580906592 +107.387,2024/06/05 13:48:05.7929,27.29270880698745,39.99166579843022 +107.422,2024/06/05 13:48:05.8279,26.85681488462748,42.040060260026586 +107.668,2024/06/05 13:48:06.0739,26.300561595333026,42.05432993957538 +107.914,2024/06/05 13:48:06.3199,25.93938557749494,40.79256468197769 +108.126,2024/06/05 13:48:06.5319,26.699455416548314,40.8378909021185 +108.161,2024/06/05 13:48:06.5669,26.08253918955618,42.09790176877386 +108.407,2024/06/05 13:48:06.8129,25.98073999282418,41.09622853742178 +108.654,2024/06/05 13:48:07.0599,25.865278728020353,40.596387359796765 +108.865,2024/06/05 13:48:07.2709,25.742335094003717,40.83217685437144 +108.9,2024/06/05 13:48:07.3059,25.495007399466896,40.35798144935728 +109.146,2024/06/05 13:48:07.5519,25.292882102629044,39.75717964510729 +109.392,2024/06/05 13:48:07.7979,25.08138477175826,39.75717964510729 +109.604,2024/06/05 13:48:08.0099,25.74811677077376,40.15802119958934 +109.638,2024/06/05 13:48:08.0439,25.509159950483117,39.98833163144803 +109.884,2024/06/05 13:48:08.2899,25.304672232250525,39.434333602416395 +110.097,2024/06/05 13:48:08.5029,26.417710012392675,40.35715549936591 +110.149,2024/06/05 13:48:08.5549,25.26842107153309,39.877311845208425 +110.377,2024/06/05 13:48:08.7829,25.103212232059818,38.4456326084858 +110.624,2024/06/05 13:48:09.0299,24.918464741181243,38.4456326084858 +110.835,2024/06/05 13:48:09.2409,24.4998006090882,37.63951823992084 +110.87,2024/06/05 13:48:09.2759,24.359590619968046,36.815757495941874 +111.116,2024/06/05 13:48:09.5219,24.19957727378531,36.815757495941874 +111.327,2024/06/05 13:48:09.7329,23.473168835341234,35.839456841122285 +111.362,2024/06/05 13:48:09.7679,21.92998262496018,36.08369899737738 +111.608,2024/06/05 13:48:10.0139,21.831223026907946,34.438350715445125 +111.855,2024/06/05 13:48:10.2609,21.960282853108406,34.520042487420746 +112.066,2024/06/05 13:48:10.4719,22.22600734047552,35.361466787073944 +112.101,2024/06/05 13:48:10.5069,20.48663708007235,34.24470762030244 +112.348,2024/06/05 13:48:10.7539,20.636982760841892,32.18954281543412 +112.593,2024/06/05 13:48:10.9989,20.725934666888087,32.18954281543412 +112.806,2024/06/05 13:48:11.2119,18.38089963153023,30.492075473254797 +112.84,2024/06/05 13:48:11.2459,18.578970932739008,28.694366462193702 +113.086,2024/06/05 13:48:11.4919,18.83857622069698,28.67344881012165 +113.297,2024/06/05 13:48:11.7029,19.71159877931779,30.14741558851549 +113.332,2024/06/05 13:48:11.7379,17.90103702126785,29.850181462318336 +113.579,2024/06/05 13:48:11.9849,18.214683984184273,28.044607324760317 +113.825,2024/06/05 13:48:12.2309,18.477728128252956,28.044607324760317 +114.037,2024/06/05 13:48:12.4429,18.557428725972827,28.610021554226996 +114.072,2024/06/05 13:48:12.4779,18.65093754384452,28.83342967228607 +114.317,2024/06/05 13:48:12.7229,18.94201678808309,28.665891462386675 +114.775,2024/06/05 13:48:13.1809,18.999818510930503,29.056267252809103 +115.056,2024/06/05 13:48:13.4619,19.268937542662027,29.441467354736243 +115.268,2024/06/05 13:48:13.6739,18.191225622678488,29.122156513555105 +115.303,2024/06/05 13:48:13.7089,18.408549987538404,28.799305547182904 +115.549,2024/06/05 13:48:13.9549,18.61960405520042,28.770934407256686 +115.795,2024/06/05 13:48:14.2009,16.747619491160894,27.461488184971575 +116.007,2024/06/05 13:48:14.4129,16.756573594285683,26.249444438565426 +116.042,2024/06/05 13:48:14.4479,16.926480647980533,26.411487399740793 +116.288,2024/06/05 13:48:14.6939,17.083331931595783,26.411487399740793 +116.535,2024/06/05 13:48:14.9409,15.736187155944709,25.58059160118598 +116.745,2024/06/05 13:48:15.1509,16.168082649211897,25.361387974635775 +116.78,2024/06/05 13:48:15.1859,16.29191323269406,25.985252227625832 +117.027,2024/06/05 13:48:15.4329,15.624325272788827,25.61314766547316 +117.238,2024/06/05 13:48:15.6439,16.908679672756374,26.539279065817393 +117.273,2024/06/05 13:48:15.6789,17.011321449884104,27.781888584711684 +117.52,2024/06/05 13:48:15.9259,17.011321449884104,27.680317917249432 +117.765,2024/06/05 13:48:16.1709,15.92958643963972,26.702684009914307 +117.977,2024/06/05 13:48:16.3829,17.55258110501981,26.502201166444017 +118.505,2024/06/05 13:48:16.9109,17.4342772430786,27.39525506360545 +118.715,2024/06/05 13:48:17.1209,18.462170082034067,28.089737153154946 +118.75,2024/06/05 13:48:17.1559,17.78120536881116,27.216416614487173 +118.996,2024/06/05 13:48:17.4019,17.816949182195653,26.05954719483821 +119.208,2024/06/05 13:48:17.6139,20.32271250788595,27.16431482662502 +119.243,2024/06/05 13:48:17.6489,19.327813322156103,26.645825188948457 +119.489,2024/06/05 13:48:17.8949,19.2449426107738,24.965976848503242 +119.735,2024/06/05 13:48:18.1409,19.261688494993997,24.9899979991996 +119.947,2024/06/05 13:48:18.3529,20.674961257243726,25.544732007467474 +119.982,2024/06/05 13:48:18.3879,20.718723832355185,25.466317624135087 +120.228,2024/06/05 13:48:18.6339,20.55606295324945,24.829418035870273 +120.439,2024/06/05 13:48:18.8449,20.424264361603516,24.840155662421548 +120.474,2024/06/05 13:48:18.8799,20.520357147751795,24.39330509244972 +120.721,2024/06/05 13:48:19.1269,20.212122230421407,23.926972228010797 +121.179,2024/06/05 13:48:19.5849,20.206406176624697,23.717082451262844 +121.459,2024/06/05 13:48:19.8649,19.824546493632205,23.50531854708632 +121.706,2024/06/05 13:48:20.1119,19.540820815946898,23.550654626428823 +121.917,2024/06/05 13:48:20.3229,19.179251240883822,24.221202832779934 +122.409,2024/06/05 13:48:20.8149,19.179251240883822,24.069344264714264 +122.444,2024/06/05 13:48:20.8499,18.758139995532016,24.323514000516727 +122.691,2024/06/05 13:48:21.0969,18.22162413746152,24.323514000516727 +122.938,2024/06/05 13:48:21.3439,17.559128352676584,24.323514000516727 +123.148,2024/06/05 13:48:21.5539,17.563055529726412,23.793556550741492 +123.184,2024/06/05 13:48:21.5899,16.77107526419415,23.251523247592477 +123.429,2024/06/05 13:48:21.8349,15.818111255083021,23.251523247592477 +123.676,2024/06/05 13:48:22.0819,15.72277797103489,21.75162829154023 +123.887,2024/06/05 13:48:22.2929,14.52924122501708,20.153577019146418 +123.922,2024/06/05 13:48:22.3279,13.15552416637122,20.166804407243106 +124.169,2024/06/05 13:48:22.5749,12.546969226934147,20.02664891255316 +124.38,2024/06/05 13:48:22.7859,12.20368325783222,18.818430682002507 +124.415,2024/06/05 13:48:22.8209,11.511563401816733,17.527121840165314 +124.661,2024/06/05 13:48:23.0669,11.364443440515117,16.391054470858997 +125.365,2024/06/05 13:48:23.7709,11.244871116949502,16.0166579951416 +125.4,2024/06/05 13:48:23.8059,11.147135088877274,16.05407528739458 +125.646,2024/06/05 13:48:24.0519,9.361267720418889,14.10437284438175 +125.858,2024/06/05 13:48:24.2639,9.267977249587643,11.837792587021168 +125.892,2024/06/05 13:48:24.2979,9.149147312823635,11.837792587021168 +126.139,2024/06/05 13:48:24.5449,9.160196253482933,11.78699848703364 +126.35,2024/06/05 13:48:24.7559,7.873715914285578,10.687999500997993 +126.385,2024/06/05 13:48:24.7909,7.913323553046213,9.462205521617744 +126.632,2024/06/05 13:48:25.0379,7.943478493376582,9.462205521617744 +126.842,2024/06/05 13:48:25.2479,8.83852590819919,10.560934302102885 +126.878,2024/06/05 13:48:25.2839,8.861708924214033,11.481869766433224 +127.124,2024/06/05 13:48:25.5299,8.895885656258121,11.48332123850355 +127.37,2024/06/05 13:48:25.7759,8.588217001473113,11.337254223723367 +127.582,2024/06/05 13:48:25.9879,10.877795584659253,13.462293019145488 +128.109,2024/06/05 13:48:26.5149,10.877795584659253,15.334057953892483 +128.32,2024/06/05 13:48:26.7259,12.681600392133864,16.826566296583902 +128.355,2024/06/05 13:48:26.7609,12.207073509985277,19.025421589722175 +128.601,2024/06/05 13:48:27.0069,12.207073509985277,18.469795162192064 +128.812,2024/06/05 13:48:27.2179,13.387290249707272,19.60442127004348 +128.847,2024/06/05 13:48:27.2529,13.387290249707272,20.676879197145137 +129.094,2024/06/05 13:48:27.4999,13.358410325963353,20.518284528683193 +129.34,2024/06/05 13:48:27.7459,13.358410325963353,20.358454427256177 +129.551,2024/06/05 13:48:27.9569,13.894553634056663,20.99047402990223 +129.586,2024/06/05 13:48:27.9919,13.894553634056663,21.604011973088085 +129.833,2024/06/05 13:48:28.2389,13.942451506926988,21.5916650585359 +130.044,2024/06/05 13:48:28.4499,14.267397123851172,22.056745000112777 +130.079,2024/06/05 13:48:28.4849,14.267397123851172,22.524061208701536 +130.329,2024/06/05 13:48:28.7349,14.332504653939383,22.49740725802272 +130.572,2024/06/05 13:48:28.9779,14.332504653939383,22.47072169142178 +130.783,2024/06/05 13:48:29.1889,15.302317456524374,23.51736946740997 +130.818,2024/06/05 13:48:29.2239,15.377397953363657,24.49489742783178 +131.065,2024/06/05 13:48:29.4709,15.377397953363657,24.470390270692455 +131.31,2024/06/05 13:48:29.7159,15.377397953363657,24.470390270692455 +131.521,2024/06/05 13:48:29.9269,16.387723187324944,25.58971147421036 +131.557,2024/06/05 13:48:29.9629,16.387723187324944,26.662082939385414 +131.803,2024/06/05 13:48:30.2089,16.387723187324944,26.662082939385414 +132.014,2024/06/05 13:48:30.4199,16.75736242379206,27.12133231732296 +132.049,2024/06/05 13:48:30.4549,16.75736242379206,27.572933588333807 +132.295,2024/06/05 13:48:30.7009,16.75736242379206,27.572933588333807 +132.542,2024/06/05 13:48:30.9479,16.597881044652468,27.16124690314002 +132.753,2024/06/05 13:48:31.1589,16.58433688409268,26.975915183733804 +132.788,2024/06/05 13:48:31.1939,16.479210169668658,27.03701166919155 +133.035,2024/06/05 13:48:31.4409,16.368915031557943,27.03701166919155 +133.492,2024/06/05 13:48:31.8979,15.671043653676124,26.143832924802744 +133.773,2024/06/05 13:48:32.1789,15.600029472416063,25.369272752682527 +133.985,2024/06/05 13:48:32.3909,14.143923596819445,24.17436658942691 +134.513,2024/06/05 13:48:32.9189,14.117731575136565,22.91724241700995 +134.723,2024/06/05 13:48:33.1289,14.427782904530135,23.332380932943813 +134.758,2024/06/05 13:48:33.1639,13.464982254962672,22.812277396174192 +135.005,2024/06/05 13:48:33.4109,13.459005445657167,21.844907873461036 +135.251,2024/06/05 13:48:33.6569,13.436269323489883,21.844907873461036 +135.463,2024/06/05 13:48:33.8689,13.436269323489883,21.993938558915122 +135.497,2024/06/05 13:48:33.9029,12.947107252468365,21.543753928536535 +135.744,2024/06/05 13:48:34.1499,13.100013161352468,20.967435068060503 +135.955,2024/06/05 13:48:34.3609,13.034922147919426,21.195911555454902 +135.99,2024/06/05 13:48:34.3959,12.877004363567329,20.93004220413009 +136.236,2024/06/05 13:48:34.6419,12.991774586120735,20.426290248925117 +136.482,2024/06/05 13:48:34.8879,13.066804479686871,20.426290248925117 +136.693,2024/06/05 13:48:35.0989,12.947329196917527,20.5637221014744 +136.728,2024/06/05 13:48:35.1339,12.308346854832731,19.699407774516132 +137.186,2024/06/05 13:48:35.5919,12.216250718171061,18.589423516254254 +137.467,2024/06/05 13:48:35.8729,12.497539987819398,18.740330840195966 +137.713,2024/06/05 13:48:36.1189,12.701886908428213,18.740330840195966 +137.925,2024/06/05 13:48:36.3309,11.693450372290183,17.19592975096142 +138.452,2024/06/05 13:48:36.8579,11.881841646796895,15.498387012847498 +138.664,2024/06/05 13:48:37.0699,11.758293722491539,15.550991393905836 +138.699,2024/06/05 13:48:37.1049,11.712308095313935,14.677647404585427 +138.945,2024/06/05 13:48:37.3509,11.769871921881146,13.689411966918083 +139.156,2024/06/05 13:48:37.5619,11.730890550314719,14.549914089093447 +139.192,2024/06/05 13:48:37.5979,11.708921836562329,15.362291495737216 +139.437,2024/06/05 13:48:37.8429,11.945085075933005,15.006665185843255 +139.684,2024/06/05 13:48:38.0899,11.91565183364729,14.949916387726054 +139.895,2024/06/05 13:48:38.3009,13.01903999144576,16.258331197676263 +139.93,2024/06/05 13:48:38.3359,12.3286415431248,17.223046575252976 +140.176,2024/06/05 13:48:38.5819,12.360904255878703,16.748134224444225 +140.423,2024/06/05 13:48:38.8289,11.287720924888736,16.11417595369576 +140.633,2024/06/05 13:48:39.0389,12.465354285830625,16.58714361586507 +140.669,2024/06/05 13:48:39.0749,11.466292429071194,17.09483352751156 +140.915,2024/06/05 13:48:39.3209,11.470151167970782,16.523720323623653 +141.161,2024/06/05 13:48:39.5669,11.469098913387512,16.523720323623653 +141.407,2024/06/05 13:48:39.8129,11.463134312912453,16.523720323623653 +141.619,2024/06/05 13:48:40.0249,13.217238830363192,18.114450953129474 +141.654,2024/06/05 13:48:40.0599,13.221195104831091,19.576346271287022 +141.9,2024/06/05 13:48:40.3059,13.217238830363192,19.576346271287022 +142.147,2024/06/05 13:48:40.5529,12.998010457838477,19.328735085359313 +142.358,2024/06/05 13:48:40.7639,15.599292645325134,20.700241544484452 +142.393,2024/06/05 13:48:40.7989,15.571156653898333,22.204353927402018 +142.604,2024/06/05 13:48:41.0099,18.14944348597473,24.007637673596015 +142.639,2024/06/05 13:48:41.0449,18.117877118039612,25.574727108351844 +142.886,2024/06/05 13:48:41.2919,17.94704855189718,25.336403322755448 +143.132,2024/06/05 13:48:41.5379,17.968331017104703,25.22498761149349 +143.342,2024/06/05 13:48:41.7479,19.990831231676044,26.48018126826174 +143.378,2024/06/05 13:48:41.7839,19.728065078059736,27.780088792754665 +143.625,2024/06/05 13:48:42.0309,19.55484477113055,27.77048793233565 +143.87,2024/06/05 13:48:42.2759,19.311392623461835,27.799280566230486 +144.081,2024/06/05 13:48:42.4869,19.320675602761746,27.784887978899608 +144.117,2024/06/05 13:48:42.5229,18.982902167810696,27.77048793233565 +144.363,2024/06/05 13:48:42.7689,18.590598291276596,27.77048793233565 +144.609,2024/06/05 13:48:43.0149,18.60058088327976,27.32947127187059 +144.821,2024/06/05 13:48:43.2269,18.146783382364713,26.94315002618167 +144.856,2024/06/05 13:48:43.2619,17.65050225588752,27.004937820085175 +145.102,2024/06/05 13:48:43.5079,17.381090266453622,26.974679485275324 +145.313,2024/06/05 13:48:43.7189,17.557786365854817,26.666458332519525 +145.349,2024/06/05 13:48:43.7549,17.31483318648768,26.35463273632677 +145.806,2024/06/05 13:48:44.2119,17.73848987339504,26.955518915428062 +146.088,2024/06/05 13:48:44.4939,17.48286517458386,27.54329924561205 +146.545,2024/06/05 13:48:44.9509,17.74908124544769,27.358118843711946 +146.826,2024/06/05 13:48:45.2319,17.519808165643603,27.171676429694212 +147.037,2024/06/05 13:48:45.4429,17.62508661428227,27.52271788904577 +147.072,2024/06/05 13:48:45.4779,17.369182644763686,27.869337989984622 +147.318,2024/06/05 13:48:45.7239,17.07979918587803,27.869337989984622 +147.564,2024/06/05 13:48:45.9699,16.416980275901647,26.740730481171727 +147.776,2024/06/05 13:48:46.1819,17.101589628339365,26.348940522659856 +147.811,2024/06/05 13:48:46.2169,17.12768143282685,27.41228435087695 +148.057,2024/06/05 13:48:46.4629,17.124157836496085,27.41228435087695 +148.304,2024/06/05 13:48:46.7099,16.07543281625471,26.208777155754518 +148.514,2024/06/05 13:48:46.9199,16.904906449578423,26.04611295375953 +148.549,2024/06/05 13:48:46.9549,15.258086230007024,25.51666122360055 +148.796,2024/06/05 13:48:47.2019,15.20208697106729,23.862103846894975 +149.007,2024/06/05 13:48:47.4129,15.67251052661722,24.3050063430013 +149.042,2024/06/05 13:48:47.4479,15.69830505529902,24.764221503343624 +149.745,2024/06/05 13:48:48.1509,13.400162977222383,23.31451622201642 +149.781,2024/06/05 13:48:48.1869,13.454264802631926,21.7684787402948 +150.028,2024/06/05 13:48:48.4339,13.502703007389943,21.7684787402948 +150.273,2024/06/05 13:48:48.6789,13.502703007389943,21.719422951205065 +150.485,2024/06/05 13:48:48.8909,14.07222747850984,21.947665023869853 +150.52,2024/06/05 13:48:48.9259,14.07222747850984,22.173557826083453 +150.767,2024/06/05 13:48:49.1729,14.07222747850984,22.173557826083453 +150.977,2024/06/05 13:48:49.3829,14.810837908108429,22.47220505424423 +151.012,2024/06/05 13:48:49.4179,14.800007766386127,22.723702749918786 +151.259,2024/06/05 13:48:49.6649,14.800007766386127,22.65097496062072 +151.506,2024/06/05 13:48:49.9119,14.800007766386127,22.65097496062072 +151.716,2024/06/05 13:48:50.1219,14.19551491416194,22.1201265819163 +151.751,2024/06/05 13:48:50.1569,14.191627773113538,21.57622147952077 +151.998,2024/06/05 13:48:50.4039,13.294238662263783,20.820662813657012 +152.244,2024/06/05 13:48:50.6499,13.30046235476828,20.036633117035073 +152.455,2024/06/05 13:48:50.8609,12.557957590731421,19.376962266223945 +152.491,2024/06/05 13:48:50.8969,12.571862397352463,18.694027566756894 +152.736,2024/06/05 13:48:51.1419,11.998515233816496,18.173240400838445 +152.948,2024/06/05 13:48:51.3539,12.052042322277382,17.640861656959956 +153.475,2024/06/05 13:48:51.8809,12.065005918611302,17.644640357154728 +153.686,2024/06/05 13:48:52.0919,12.050134734784939,17.678612313565036 +153.722,2024/06/05 13:48:52.1279,10.540343949546779,16.519685227025363 +153.968,2024/06/05 13:48:52.3739,10.417767757898302,14.632156368765337 +154.178,2024/06/05 13:48:52.5839,10.246389888500246,14.63671183474394 +154.214,2024/06/05 13:48:52.6199,10.072438780580343,14.64126588334037 +154.46,2024/06/05 13:48:52.8659,8.396017118152507,12.583057392117917 +154.918,2024/06/05 13:48:53.3239,9.298621823481401,10.753294068950842 +155.199,2024/06/05 13:48:53.6049,9.280804562825663,11.284207253207171 +155.446,2024/06/05 13:48:53.8519,8.398412548414512,10.237187113655782 +155.656,2024/06/05 13:48:54.0619,9.774703452598374,10.073066398404542 +155.692,2024/06/05 13:48:54.0979,9.78792359368899,10.94684124911535 +155.938,2024/06/05 13:48:54.3439,9.747442930235195,10.908712114635714 +156.149,2024/06/05 13:48:54.5549,10.976935066233452,11.896778275370746 +156.185,2024/06/05 13:48:54.5909,10.905497927994881,12.808851106428971 +156.431,2024/06/05 13:48:54.8369,9.833382037675484,12.380091545165032 +156.677,2024/06/05 13:48:55.0829,9.721465761486387,11.93594012496153 +156.888,2024/06/05 13:48:55.2939,9.700633940655733,12.02497401244593 +157.416,2024/06/05 13:48:55.8219,8.058764059143652,11.549891774384728 +157.627,2024/06/05 13:48:56.0329,8.058764059143652,10.969655114602888 +157.662,2024/06/05 13:48:56.0679,7.861224495887277,11.04234274659745 +157.908,2024/06/05 13:48:56.3139,7.648980098794171,11.04234274659745 +158.155,2024/06/05 13:48:56.5609,7.57347154641732,11.018166816671457 +158.365,2024/06/05 13:48:56.7709,10.680092125825453,13.098345951556887 +158.401,2024/06/05 13:48:56.8069,10.680092125825453,14.908610487455451 +158.647,2024/06/05 13:48:57.0529,10.680092125825453,14.908610487455451 +158.893,2024/06/05 13:48:57.2989,10.67944636732966,14.904138127826558 +159.104,2024/06/05 13:48:57.5099,11.992382639798445,15.81244235826121 +159.14,2024/06/05 13:48:57.5459,11.992382639798445,16.675331081170974 +159.386,2024/06/05 13:48:57.7919,11.985863320606438,16.671332680182868 +159.597,2024/06/05 13:48:58.0029,13.742960580503473,17.98425237070847 +159.633,2024/06/05 13:48:58.0389,13.717343665644961,19.1798505381733 +159.879,2024/06/05 13:48:58.2849,13.717343665644961,19.148542155126762 +160.125,2024/06/05 13:48:58.5309,13.717343665644961,19.148542155126762 +160.335,2024/06/05 13:48:58.7409,15.972677821255969,20.906139449134713 +160.371,2024/06/05 13:48:58.7769,15.972677821255969,22.527020812052946 +160.617,2024/06/05 13:48:59.0229,15.972677821255969,22.527020812052946 +160.828,2024/06/05 13:48:59.2339,16.562698708416555,23.232879000818357 +160.863,2024/06/05 13:48:59.2689,16.562698708416555,23.917915182278467 +161.11,2024/06/05 13:48:59.5159,16.562698708416555,23.917915182278467 +161.356,2024/06/05 13:48:59.7619,15.692043521641628,23.513116906668643 +161.813,2024/06/05 13:49:00.2189,15.659597328979594,23.119256043393783 +162.059,2024/06/05 13:49:00.4649,16.213943197847502,23.497517599383414 +162.095,2024/06/05 13:49:00.5009,15.164386591276724,23.246505113672463 +162.834,2024/06/05 13:49:01.2399,15.164386591276724,22.756683999798096 +163.044,2024/06/05 13:49:01.4499,16.56478053048168,23.449946695035365 +163.08,2024/06/05 13:49:01.4859,16.56478053048168,24.123294412938986 +163.538,2024/06/05 13:49:01.9439,18.777707497205537,25.442091109026396 +164.276,2024/06/05 13:49:02.6819,20.31762159128053,25.423742184553923 +164.312,2024/06/05 13:49:02.7179,20.30118053302601,26.37107000736476 +164.557,2024/06/05 13:49:02.9629,20.30118053302601,26.34008352302627 +164.769,2024/06/05 13:49:03.1749,21.125242296101487,26.903531366718383 +164.804,2024/06/05 13:49:03.2099,21.125242296101487,27.45541840875859 +165.05,2024/06/05 13:49:03.4559,19.868793761002923,26.516032885784405 +165.261,2024/06/05 13:49:03.6669,20.1912977727325,25.801808722129024 +165.789,2024/06/05 13:49:04.1949,20.1912977727325,26.058907626120224 +166.0,2024/06/05 13:49:04.4059,20.400698658309505,26.243094329747017 +166.035,2024/06/05 13:49:04.4409,19.574349859288198,25.89015256810975 +166.281,2024/06/05 13:49:04.6869,19.574349859288198,25.342980619229984 +166.493,2024/06/05 13:49:04.8989,19.855338898106023,25.631360999109404 +166.528,2024/06/05 13:49:04.9339,18.365416024341656,25.020658131498724 +166.774,2024/06/05 13:49:05.1799,18.365416024341656,24.091492274244864 +167.02,2024/06/05 13:49:05.4259,18.365416024341656,24.091492274244864 +167.232,2024/06/05 13:49:05.6379,18.35239343594194,24.094259343946085 +167.267,2024/06/05 13:49:05.6729,15.72058464590967,22.586131437971694 +167.513,2024/06/05 13:49:05.9189,15.72058464590967,20.966640169564602 +167.76,2024/06/05 13:49:06.1659,15.72058464590967,20.966640169564602 +167.97,2024/06/05 13:49:06.3759,13.790259764334737,19.91649232838621 +168.005,2024/06/05 13:49:06.4109,13.790259764334737,18.807799800437408 +168.252,2024/06/05 13:49:06.6579,13.790259764334737,18.807799800437408 +168.462,2024/06/05 13:49:06.8679,14.478243685955132,19.0927560434143 +168.498,2024/06/05 13:49:06.9039,14.371267631400775,19.352002480363627 +168.744,2024/06/05 13:49:07.1499,14.251275401686968,18.89091492402278 +168.991,2024/06/05 13:49:07.3969,14.251275401686968,18.60286716252811 +169.201,2024/06/05 13:49:07.6069,14.351939273824842,18.625251676151922 +169.237,2024/06/05 13:49:07.6429,13.567032387965671,17.767948671695333 +169.484,2024/06/05 13:49:07.8899,13.567032387965671,16.842406795546374 +169.73,2024/06/05 13:49:08.1359,11.24548440665184,14.743360087397535 +169.94,2024/06/05 13:49:08.3459,9.209190811484,14.923136399564267 +169.976,2024/06/05 13:49:08.3819,9.232376812566608,13.361636626301934 +170.222,2024/06/05 13:49:08.6279,9.251032871816216,13.361636626301934 +170.679,2024/06/05 13:49:09.0849,8.060475443039316,12.671490309614992 +170.961,2024/06/05 13:49:09.3669,8.113349294935643,11.941524190822543 +171.171,2024/06/05 13:49:09.5769,8.62527694041616,12.541929676090518 +171.207,2024/06/05 13:49:09.6129,7.882470002058882,12.596295751794122 +171.454,2024/06/05 13:49:09.8599,7.956490880184638,12.055427546683417 +171.911,2024/06/05 13:49:10.3169,7.717795528265695,12.207920925912541 +172.192,2024/06/05 13:49:10.5979,8.11696109829841,12.794530081249565 +172.438,2024/06/05 13:49:10.8439,8.474505376677447,12.794530081249565 +172.649,2024/06/05 13:49:11.0549,7.568917078892591,12.293629786736435 +172.685,2024/06/05 13:49:11.0909,7.956779802634413,11.771434350437787 +172.932,2024/06/05 13:49:11.3379,8.3032329944994,11.771434350437787 +173.142,2024/06/05 13:49:11.5479,8.315889789344824,11.91217864204529 +173.67,2024/06/05 13:49:12.0759,8.61974477580532,12.045746137122432 +173.917,2024/06/05 13:49:12.3229,8.895304198375204,12.040210407906777 +174.126,2024/06/05 13:49:12.5319,8.945813892928866,12.433824833895642 +174.62,2024/06/05 13:49:13.0259,9.747619809679012,12.772366003733737 +175.148,2024/06/05 13:49:13.5539,9.832856018028881,14.026166024018584 +175.358,2024/06/05 13:49:13.7639,11.371268492409328,15.989579940281942 +175.394,2024/06/05 13:49:13.7999,11.643951614268488,17.894133116750865 +175.64,2024/06/05 13:49:14.0459,11.294439685797313,17.590717248973487 +175.851,2024/06/05 13:49:14.2569,12.306245494095375,18.621671962169955 +175.887,2024/06/05 13:49:14.2929,12.339265426450254,19.462785001124583 +176.133,2024/06/05 13:49:14.5389,12.368852240493,19.462785001124583 +176.379,2024/06/05 13:49:14.7849,12.337635161542575,19.441364835491015 +176.59,2024/06/05 13:49:14.9959,14.311035850925022,21.01586702153082 +176.625,2024/06/05 13:49:15.0309,14.346652459080241,22.49888886145269 +176.871,2024/06/05 13:49:15.2769,14.346652459080241,22.47220505424423 +177.118,2024/06/05 13:49:15.5239,14.283701828694733,22.326367072738606 +177.328,2024/06/05 13:49:15.7339,17.858608150063073,25.069237456824784 +177.364,2024/06/05 13:49:15.7699,17.858608150063073,27.65863337187866 +178.068,2024/06/05 13:49:16.4739,23.35719633624055,31.983850091361212 +178.103,2024/06/05 13:49:16.5089,23.299548611878205,35.300613781255045 +178.349,2024/06/05 13:49:16.7549,23.207237277819143,35.09178441363923 +178.595,2024/06/05 13:49:17.0009,23.151897218751206,34.881704851301826 +178.806,2024/06/05 13:49:17.2119,28.27036952541458,38.794759096214705 +178.842,2024/06/05 13:49:17.2479,28.259552346960746,42.190046219457976 +179.088,2024/06/05 13:49:17.4939,28.054974767328577,41.90107397191628 +179.334,2024/06/05 13:49:17.7399,27.841918285081316,41.90107397191628 +179.545,2024/06/05 13:49:17.9509,28.867991262647216,42.89832941580204 +179.581,2024/06/05 13:49:17.9869,28.624983059775964,43.872922552906516 +179.826,2024/06/05 13:49:18.2319,28.31595139578264,43.89722846224653 +180.073,2024/06/05 13:49:18.4789,28.21284047762901,43.85924455953766 +180.283,2024/06/05 13:49:18.6889,28.622975258413174,44.395945760846224 +180.319,2024/06/05 13:49:18.7249,28.235381733018087,44.96331838287739 +180.565,2024/06/05 13:49:18.9709,28.200513568325274,44.85606610779267 +180.776,2024/06/05 13:49:19.1819,28.287542443120106,44.89506283174873 +180.811,2024/06/05 13:49:19.2169,27.86758509183445,44.6239845822849 +181.058,2024/06/05 13:49:19.4639,27.724755525803545,43.92797134704341 +181.304,2024/06/05 13:49:19.7099,27.262116361460386,43.18718945860373 +181.515,2024/06/05 13:49:19.9209,26.899044977279686,43.20570949924713 +181.551,2024/06/05 13:49:19.9569,26.851421760770346,42.664192636604916 +181.797,2024/06/05 13:49:20.2029,26.61183299159368,42.28711387645177 +182.008,2024/06/05 13:49:20.4139,27.592040331501945,42.85246006162696 +182.043,2024/06/05 13:49:20.4489,27.364819263671233,43.41044421180998 +182.289,2024/06/05 13:49:20.6949,27.009683235939722,42.660676662862876 +182.536,2024/06/05 13:49:20.9419,26.78713449984341,41.89749395846964 +182.747,2024/06/05 13:49:21.1529,28.19596857137941,42.73094117069426 +182.782,2024/06/05 13:49:21.1879,27.993205251095144,43.548440461934646 +183.028,2024/06/05 13:49:21.4339,26.681368073974426,41.95155936712405 +183.239,2024/06/05 13:49:21.6449,28.316844424493475,41.3533553656774 +183.767,2024/06/05 13:49:22.1729,24.641708404724877,39.07428822128434 +184.013,2024/06/05 13:49:22.4189,24.59987851572741,35.93883693165375 +184.224,2024/06/05 13:49:22.6299,25.523124515966096,36.602367865116776 +184.26,2024/06/05 13:49:22.6659,25.49067893649985,37.25408255032818 +184.506,2024/06/05 13:49:22.9119,19.678712461387338,33.159714514251576 +184.717,2024/06/05 13:49:23.1229,19.737472383564814,28.581462523810778 +184.752,2024/06/05 13:49:23.1579,19.81897964131907,28.813769856326218 +184.998,2024/06/05 13:49:23.4039,19.887152902684324,28.813769856326218 +185.209,2024/06/05 13:49:23.6149,18.022846293129618,27.26780763708981 +185.245,2024/06/05 13:49:23.6509,18.117781955541258,25.628759886762634 +185.491,2024/06/05 13:49:23.8969,18.21013990617124,25.58710612789184 +185.737,2024/06/05 13:49:24.1429,18.50830816861447,25.628759886762634 +185.948,2024/06/05 13:49:24.3539,17.515182248421905,24.674548290360523 +185.984,2024/06/05 13:49:24.3899,17.824979244237692,23.68191996720987 +186.229,2024/06/05 13:49:24.6349,18.115212379110133,23.68191996720987 +186.476,2024/06/05 13:49:24.8819,17.96689164553328,23.426480742954116 +186.687,2024/06/05 13:49:25.0929,18.862021685625425,23.308796622734516 +186.722,2024/06/05 13:49:25.1279,18.924411043236525,23.65234308336773 +186.969,2024/06/05 13:49:25.3749,18.98362876058158,23.65234308336773 +187.215,2024/06/05 13:49:25.6209,19.003962079331917,23.61778990506944 +187.426,2024/06/05 13:49:25.8319,20.89547055357262,24.68805379125702 +187.462,2024/06/05 13:49:25.8679,20.922984117182352,25.745549777259242 +187.918,2024/06/05 13:49:26.3239,20.607469910011105,25.43095226949501 +188.2,2024/06/05 13:49:26.6059,20.607469910011105,25.43095226949501 +188.446,2024/06/05 13:49:26.8519,20.607469910011105,25.43095226949501 +188.657,2024/06/05 13:49:27.0629,20.598097222691752,25.433573611796408 +188.693,2024/06/05 13:49:27.0989,18.35001331078026,24.009720253819424 +188.939,2024/06/05 13:49:27.3449,18.35001331078026,22.492961862176653 +189.185,2024/06/05 13:49:27.5909,18.35001331078026,22.492961862176653 +189.396,2024/06/05 13:49:27.8019,15.399246137693432,20.612294066082665 +189.432,2024/06/05 13:49:27.8379,15.399246137693432,18.541844568434932 +189.677,2024/06/05 13:49:28.0829,15.399246137693432,18.541844568434932 +189.888,2024/06/05 13:49:28.2939,13.875513866431914,17.578395831246947 +189.924,2024/06/05 13:49:28.3299,13.875513866431914,16.558985476169727 +190.17,2024/06/05 13:49:28.5759,13.875513866431914,16.558985476169727 +190.416,2024/06/05 13:49:28.8219,13.417264568675014,16.388003742575442 +190.627,2024/06/05 13:49:29.0329,14.09658799509726,16.240894885032247 +191.156,2024/06/05 13:49:29.5619,14.356543623994467,16.306440445419103 +191.401,2024/06/05 13:49:29.8069,14.594165107072135,16.306440445419103 +191.612,2024/06/05 13:49:30.0179,14.95264555841099,16.322785709961806 +191.648,2024/06/05 13:49:30.0539,15.142275448134939,16.33911462309591 +191.858,2024/06/05 13:49:30.2639,15.279804115012857,16.282915381875977 +191.894,2024/06/05 13:49:30.2999,14.8122735687645,16.32380674556847 +192.141,2024/06/05 13:49:30.5469,14.648996670363855,16.240894885032247 +192.387,2024/06/05 13:49:30.7929,14.46601248587298,16.240894885032247 +192.597,2024/06/05 13:49:31.0029,14.261474509056415,16.25012820462247 +192.633,2024/06/05 13:49:31.0389,13.29748053225856,16.05718945934603 +192.879,2024/06/05 13:49:31.2849,13.245038108016374,15.546703830716014 +193.125,2024/06/05 13:49:31.5309,13.188117256896668,15.546703830716014 +193.336,2024/06/05 13:49:31.7419,13.89550493761609,16.202880402364677 +193.372,2024/06/05 13:49:31.7779,10.825098550162608,15.166849815743983 +194.075,2024/06/05 13:49:32.4809,13.507937215435213,15.531688038759127 +194.111,2024/06/05 13:49:32.5169,11.506919457541263,16.544888435203585 +194.357,2024/06/05 13:49:32.7629,11.506919457541263,15.019986684414869 +194.813,2024/06/05 13:49:33.2189,14.327210667722104,17.208525019109956 +195.095,2024/06/05 13:49:33.5009,14.32608744944843,19.14506028544526 +195.342,2024/06/05 13:49:33.7479,14.32608744944843,19.14157778240864 +195.552,2024/06/05 13:49:33.9579,15.10533893588184,19.766132651583618 +195.588,2024/06/05 13:49:33.9939,15.10533893588184,20.37154878746336 +195.835,2024/06/05 13:49:34.2409,14.87685079763949,20.273134932713294 +196.081,2024/06/05 13:49:34.4869,14.894417684521096,20.133719643092945 +196.291,2024/06/05 13:49:34.6969,15.149219470810046,20.233635362929718 +196.327,2024/06/05 13:49:34.7329,14.516300785868554,20.002499843769527 +196.574,2024/06/05 13:49:34.9799,14.505488457903118,19.66638417876216 +196.784,2024/06/05 13:49:35.1899,14.636751099840573,19.73490984693537 +196.82,2024/06/05 13:49:35.2259,14.613369724766017,19.803198394872144 +197.066,2024/06/05 13:49:35.4719,14.06487432063434,19.58656001786259 +197.276,2024/06/05 13:49:35.6819,13.854788789940502,19.562719647329203 +197.312,2024/06/05 13:49:35.7179,13.596652732099576,19.593366224311737 +197.558,2024/06/05 13:49:35.9639,13.135063191988946,19.579751445477203 +197.805,2024/06/05 13:49:36.2109,12.81683519313131,19.56612719301736 +198.015,2024/06/05 13:49:36.4209,13.037346884745233,19.966638842495918 +198.051,2024/06/05 13:49:36.4569,12.9590424649844,20.26737937343323 +198.298,2024/06/05 13:49:36.7039,12.87588854204636,20.26737937343323 +198.508,2024/06/05 13:49:36.9139,13.725594851337439,20.81585933849477 +198.544,2024/06/05 13:49:36.9499,13.70044885580934,21.34322687255452 +198.79,2024/06/05 13:49:37.1959,13.626546100195865,21.336197724368166 +199.036,2024/06/05 13:49:37.4419,13.548083802247382,21.336197724368166 +199.246,2024/06/05 13:49:37.6519,14.626224283173052,22.028012468975348 +199.282,2024/06/05 13:49:37.6879,14.238082332456749,22.19083895064207 +199.529,2024/06/05 13:49:37.9349,14.182877810535363,21.717120742246966 +199.775,2024/06/05 13:49:38.1809,12.330179777010558,20.176719257599835 +199.986,2024/06/05 13:49:38.3919,12.708084131721671,18.83082579177026 +200.514,2024/06/05 13:49:38.9199,12.672896229774825,19.147671747064532 +200.724,2024/06/05 13:49:39.1299,10.09927731567525,17.216271373325874 +201.217,2024/06/05 13:49:39.6229,10.072438780581798,15.029970059850418 +201.253,2024/06/05 13:49:39.6589,10.053649191663123,15.047701928644564 +201.955,2024/06/05 13:49:40.3609,9.102797346985746,14.227906850037124 +202.484,2024/06/05 13:49:40.8899,9.306035614086,13.496913227351898 +202.694,2024/06/05 13:49:41.0999,9.469187781506939,13.972592219532256 +202.73,2024/06/05 13:49:41.1359,10.091592039174,14.942110515809562 +202.976,2024/06/05 13:49:41.3819,10.36439528651988,14.80653009092047 +203.187,2024/06/05 13:49:41.5929,10.404740299004036,14.860462083439174 +203.223,2024/06/05 13:49:41.6289,10.933918543354375,15.048809476721628 +203.469,2024/06/05 13:49:41.8749,11.246250971750802,14.958832396502967 +203.715,2024/06/05 13:49:42.1209,11.701458795000804,14.868310820892422 +203.926,2024/06/05 13:49:42.3319,12.025643099397698,14.872793954062566 +204.454,2024/06/05 13:49:42.8599,12.359555845163925,14.836890959137406 +204.665,2024/06/05 13:49:43.0709,12.521659395745441,14.824529222429517 +204.701,2024/06/05 13:49:43.1069,12.842145056619064,14.85260919838666 +204.947,2024/06/05 13:49:43.3529,12.905714674687397,14.92425319181276 +205.157,2024/06/05 13:49:43.5629,12.305311440806664,14.704874475266129 +205.193,2024/06/05 13:49:43.5989,12.356021381006583,14.482172949296432 +205.439,2024/06/05 13:49:43.8449,12.40059323757354,14.482172949296432 +205.685,2024/06/05 13:49:44.0909,11.240116987164198,13.682105101189656 +205.896,2024/06/05 13:49:44.3019,12.439092992772258,14.25482374496437 +205.932,2024/06/05 13:49:44.3379,12.439092992772258,15.024424559141469 +206.178,2024/06/05 13:49:44.5839,12.439092992772258,15.024424559141469 +206.425,2024/06/05 13:49:44.8309,10.848804161022452,13.990472948879653 +206.634,2024/06/05 13:49:45.0399,11.640249236976366,13.454862813619965 +207.127,2024/06/05 13:49:45.5329,12.354951541235739,13.45362404707371 +207.163,2024/06/05 13:49:45.5689,12.354951541235739,13.940349110884323 +207.41,2024/06/05 13:49:45.8159,11.705976467495118,13.501851724856113 +207.656,2024/06/05 13:49:46.0619,11.705976467495118,13.048627003124377 +207.866,2024/06/05 13:49:46.2719,12.324352119786685,13.490737563232042 +207.903,2024/06/05 13:49:46.3089,12.276507796529028,13.92838827718412 +208.148,2024/06/05 13:49:46.5539,12.276507796529028,13.909229549715063 +208.394,2024/06/05 13:49:46.7999,12.243741070537887,13.898441159592922 +208.605,2024/06/05 13:49:47.0109,13.389865785257173,14.671968738607191 +208.642,2024/06/05 13:49:47.0479,13.121010614289787,15.056560032092323 +208.887,2024/06/05 13:49:47.2929,12.840489123067476,14.094916341243982 +209.097,2024/06/05 13:49:47.5029,13.031747265109157,14.515508947329405 +209.134,2024/06/05 13:49:47.5399,13.019172422807186,14.734313692873517 +209.38,2024/06/05 13:49:47.7859,12.65819438377924,14.54189350348388 +209.626,2024/06/05 13:49:48.0319,12.262643018255524,14.54189350348388 +209.837,2024/06/05 13:49:48.2429,12.032714028705923,14.7648230602334 +209.872,2024/06/05 13:49:48.2779,11.64809687973119,14.979986648859205 +210.575,2024/06/05 13:49:48.9809,11.494176436530193,15.162453627299245 +210.611,2024/06/05 13:49:49.0169,11.211857434274606,15.319921670818033 +210.858,2024/06/05 13:49:49.2639,10.636091236054238,15.292699783447874 +211.104,2024/06/05 13:49:49.5099,10.431825751315394,15.222789932641563 +211.314,2024/06/05 13:49:49.7199,14.291264110816876,17.47665109033574 +211.35,2024/06/05 13:49:49.7559,14.173027645628244,19.471346469449237 +211.596,2024/06/05 13:49:50.0019,14.048561099471392,19.471346469449237 +211.843,2024/06/05 13:49:50.2489,13.917697325730202,19.471346469449237 +212.053,2024/06/05 13:49:50.4589,17.997956461267474,21.941589125068706 +212.089,2024/06/05 13:49:50.4949,17.997956461267474,24.48945351234554 +212.791,2024/06/05 13:49:51.1969,21.043359724764063,26.827846229865962 +212.828,2024/06/05 13:49:51.2339,21.043359724764063,28.978152690144576 +213.284,2024/06/05 13:49:51.6899,22.126205402583654,30.00055555041162 +213.567,2024/06/05 13:49:51.9729,21.658928768579052,31.203632267200348 +213.813,2024/06/05 13:49:52.2189,21.658928768579052,30.98924544633724 +214.023,2024/06/05 13:49:52.4289,21.653621183185756,31.042980956516832 +214.059,2024/06/05 13:49:52.4649,21.653621183185756,31.096623610932426 +214.305,2024/06/05 13:49:52.7109,21.18511730914851,30.902534955350617 +214.551,2024/06/05 13:49:52.9569,21.18511730914851,30.707219563700868 +214.762,2024/06/05 13:49:53.1679,21.15897679120284,30.75115173994843 +214.798,2024/06/05 13:49:53.2039,21.270669460795776,30.88958832141773 +215.044,2024/06/05 13:49:53.4499,20.435516749709883,30.46363952867965 +215.255,2024/06/05 13:49:53.6609,20.75586054892744,30.058831203713382 +215.783,2024/06/05 13:49:54.1889,20.869710769109666,30.085987879188323 +215.993,2024/06/05 13:49:54.3989,20.75165136761034,29.93047499344662 +216.522,2024/06/05 13:49:54.9279,20.863982053446115,29.77414986191881 +216.769,2024/06/05 13:49:55.1749,21.191545700950787,29.809953594954376 +216.978,2024/06/05 13:49:55.3839,21.50209826703291,29.809953594954376 +217.014,2024/06/05 13:49:55.4199,21.533427635822598,29.700168349691218 +217.261,2024/06/05 13:49:55.6669,21.826483965561913,29.58997578009598 +217.507,2024/06/05 13:49:55.9129,22.049474151210635,29.494632280015516 +217.717,2024/06/05 13:49:56.1229,22.073154236110266,29.480502031003475 +217.753,2024/06/05 13:49:56.1589,22.323638314268656,29.56179967458003 +217.999,2024/06/05 13:49:56.4049,22.559882000182192,29.56179967458003 +218.209,2024/06/05 13:49:56.6149,21.51492398366916,29.451089396941953 +218.245,2024/06/05 13:49:56.6509,21.734579683606977,29.339961372389933 +218.492,2024/06/05 13:49:56.8979,21.940253249307528,29.339961372389933 +218.702,2024/06/05 13:49:57.1079,23.695772938912324,31.649117944528353 +218.738,2024/06/05 13:49:57.1439,20.74962954938836,31.649117944528353 +218.984,2024/06/05 13:49:57.3899,20.9279277741397,29.339961372389933 +219.231,2024/06/05 13:49:57.6369,17.669247263271746,27.21825367898046 +219.441,2024/06/05 13:49:57.8469,18.554176652830254,26.12406298160121 +219.477,2024/06/05 13:49:57.8829,16.19578489224652,25.893371095063436 +219.723,2024/06/05 13:49:58.1289,16.292900929230267,24.43017260138236 +219.97,2024/06/05 13:49:58.3759,16.37365419581695,24.43017260138236 +220.18,2024/06/05 13:49:58.5859,16.95162149366322,25.330482295711096 +220.216,2024/06/05 13:49:58.6219,17.027226338475245,26.199872773227987 +220.462,2024/06/05 13:49:58.8679,17.087368460930286,26.199872773227987 +220.708,2024/06/05 13:49:59.1139,17.13221070610021,26.199872773227987 +220.919,2024/06/05 13:49:59.3249,17.07454918541368,26.45499322749236 +220.955,2024/06/05 13:49:59.3609,17.147634802222658,26.598245556176572 +221.201,2024/06/05 13:49:59.6069,17.216137845025024,26.598245556176572 +221.447,2024/06/05 13:49:59.8529,17.231386759492825,26.567524034680638 +221.657,2024/06/05 13:50:00.0629,17.32584940114964,26.739483914241877 +221.693,2024/06/05 13:50:00.0989,17.30802750436938,26.89051877521146 +221.94,2024/06/05 13:50:00.3459,17.30802750436938,26.879980158722834 +222.186,2024/06/05 13:50:00.5919,17.23455497126412,26.84026825499328 +222.396,2024/06/05 13:50:00.8019,17.189979706180726,26.87067794703612 +222.432,2024/06/05 13:50:00.8379,17.10363945944476,26.901053263146903 +222.643,2024/06/05 13:50:01.0489,17.28450239343211,27.040093688200614 +223.171,2024/06/05 13:50:01.5769,17.36918264476434,27.58924911386076 +223.381,2024/06/05 13:50:01.7869,18.049612343404515,28.455227990652265 +223.874,2024/06/05 13:50:02.2799,19.491819681158816,28.50263145746371 +223.91,2024/06/05 13:50:02.3159,19.871107657608924,30.735972410190637 +224.156,2024/06/05 13:50:02.5619,18.942259511535354,29.460142565846485 +224.402,2024/06/05 13:50:02.8079,19.306511318992882,28.126499960002132 +224.613,2024/06/05 13:50:03.0189,19.883019960727157,29.51496795413021 +224.649,2024/06/05 13:50:03.0549,17.38743766360639,28.466354408904092 +224.895,2024/06/05 13:50:03.3009,17.825591831352614,25.874698065871222 +225.141,2024/06/05 13:50:03.5469,18.1926156549264,25.874698065871222 +225.351,2024/06/05 13:50:03.7569,18.28160937607428,26.6520793435209 +225.388,2024/06/05 13:50:03.7939,17.648190295033388,26.258966722499448 +226.127,2024/06/05 13:50:04.5329,17.989141041260343,25.057932875638404 +226.336,2024/06/05 13:50:04.7419,17.981759595795403,25.124357371549493 +226.372,2024/06/05 13:50:04.7779,18.21506260618365,25.190606714937747 +226.619,2024/06/05 13:50:05.0249,17.913746086473303,24.216385637277362 +226.829,2024/06/05 13:50:05.2349,18.136170755019887,23.202011407059807 +226.865,2024/06/05 13:50:05.2709,18.258551767425242,23.202729724467048 +227.112,2024/06/05 13:50:05.5179,18.319921949341307,23.202729724467048 +227.358,2024/06/05 13:50:05.7639,18.511754575710473,22.852425108362862 +227.568,2024/06/05 13:50:05.9739,18.691229733904464,22.52332124709853 +227.604,2024/06/05 13:50:06.0099,18.60428822153552,22.54994456755936 +227.85,2024/06/05 13:50:06.2559,18.457188737509227,22.54994456755936 +228.061,2024/06/05 13:50:06.4669,19.81004621485196,22.847319317591726 +228.097,2024/06/05 13:50:06.5029,19.542938284242215,23.140872930812268 +228.343,2024/06/05 13:50:06.7489,19.469073619109363,23.094732444145496 +228.589,2024/06/05 13:50:06.9949,19.363551493382545,23.094732444145496 +228.799,2024/06/05 13:50:07.2049,20.35774867303806,23.580359058617688 +228.836,2024/06/05 13:50:07.2419,20.170537293605893,24.056184236075346 +229.082,2024/06/05 13:50:07.4879,19.287182331770417,23.89979079406345 +229.328,2024/06/05 13:50:07.7339,19.30052706087825,23.263705637752555 +229.538,2024/06/05 13:50:07.9439,18.00140479831388,22.387496510329154 +229.575,2024/06/05 13:50:07.9809,13.915219485637081,22.517400678882396 +229.821,2024/06/05 13:50:08.2269,13.981268256817291,19.40017182054496 +230.031,2024/06/05 13:50:08.4369,14.27545115739766,19.849433241279208 +230.066,2024/06/05 13:50:08.4719,14.344889754511394,20.28874893465177 +230.313,2024/06/05 13:50:08.7189,11.090484686200076,18.20988742414406 +230.559,2024/06/05 13:50:08.9649,11.13428999951186,15.860853276752378 +230.769,2024/06/05 13:50:09.1749,13.082233279770309,17.69745744450315 +230.806,2024/06/05 13:50:09.2119,13.137163220093901,19.360612937955587 +231.052,2024/06/05 13:50:09.4579,11.321274856125683,18.275666882497067 +231.298,2024/06/05 13:50:09.7039,11.350021520062214,17.1221104618171 +231.508,2024/06/05 13:50:09.9139,14.371747508111376,19.667231630303235 +231.545,2024/06/05 13:50:09.9509,14.268726352560812,21.842618890600093 +231.791,2024/06/05 13:50:10.1969,14.30392599431012,21.766181719967943 +232.247,2024/06/05 13:50:10.6529,14.988923113155195,22.444746972658585 +232.986,2024/06/05 13:50:11.3919,15.6813088827428,24.161263763856944 +233.022,2024/06/05 13:50:11.4279,15.708735398376875,24.408331910777243 +233.269,2024/06/05 13:50:11.6749,15.732534559894926,24.408331910777243 +233.515,2024/06/05 13:50:11.9209,15.752722807889336,24.408331910777243 +233.724,2024/06/05 13:50:12.1299,22.208236020147375,28.517830679535685 +233.761,2024/06/05 13:50:12.1669,22.208236020147375,32.71391141395355 +234.008,2024/06/05 13:50:12.4139,22.208236020147375,32.71391141395355 +234.254,2024/06/05 13:50:12.6599,21.831223026910497,32.3403772396056 +234.463,2024/06/05 13:50:12.8689,25.2594809786441,34.70062439399806 +234.5,2024/06/05 13:50:12.9059,25.2594809786441,37.23797345005051 +234.746,2024/06/05 13:50:13.1519,25.2594809786441,37.23797345005051 +234.993,2024/06/05 13:50:13.3989,24.987100120140575,36.910251511831596 +235.203,2024/06/05 13:50:13.6089,26.287010034461208,37.74608147432878 +235.239,2024/06/05 13:50:13.6449,26.287010034461208,38.87758565892006 +235.485,2024/06/05 13:50:13.8909,26.287010034461208,38.87758565892006 +235.731,2024/06/05 13:50:14.1369,26.209939327292776,38.70572739703174 +235.941,2024/06/05 13:50:14.3469,27.66748371595358,39.86644370060281 +235.978,2024/06/05 13:50:14.3839,27.710925684628307,41.136763768353646 +236.224,2024/06/05 13:50:14.6299,27.377753364921823,40.92187678980523 +236.47,2024/06/05 13:50:14.8759,27.424294959453952,40.705855434650516 +236.68,2024/06/05 13:50:15.0859,28.917957671008082,42.1070065428546 +236.717,2024/06/05 13:50:15.1229,28.974523093674776,43.46301109372582 +236.963,2024/06/05 13:50:15.3689,27.714658555550038,42.748099372954584 +237.208,2024/06/05 13:50:15.6139,27.782074763434558,42.021026482782005 +237.419,2024/06/05 13:50:15.8249,28.796950668712174,43.12076066119428 +237.455,2024/06/05 13:50:15.8609,28.872709144337037,44.19313672204467 +237.701,2024/06/05 13:50:16.1069,26.81029567205744,43.12076066119428 +237.911,2024/06/05 13:50:16.3169,26.87057100634539,42.02261296016705 +237.947,2024/06/05 13:50:16.3529,26.961893074505582,42.02419937766017 +238.194,2024/06/05 13:50:16.5999,26.202570725862607,41.66573332287977 +238.44,2024/06/05 13:50:16.8459,26.233347208224856,40.69397989875161 +238.65,2024/06/05 13:50:17.0559,26.62133359354865,40.60500790132501 +238.687,2024/06/05 13:50:17.0929,26.70477162580421,40.66407095541059 +238.933,2024/06/05 13:50:17.3389,26.785847180844453,40.66407095541059 +239.18,2024/06/05 13:50:17.5859,22.72881102422336,37.87963392994534 +239.389,2024/06/05 13:50:17.7949,23.58065152698128,34.630429778832756 +239.425,2024/06/05 13:50:17.8309,23.58065152698128,34.954255821001254 +239.671,2024/06/05 13:50:18.0769,23.58065152698128,34.954255821001254 +239.881,2024/06/05 13:50:18.2869,20.78350362640146,32.50999846201165 +240.411,2024/06/05 13:50:18.8169,20.78350362640146,29.866369046136157 +240.657,2024/06/05 13:50:19.0629,20.78350362640146,29.866369046136157 +240.866,2024/06/05 13:50:19.2719,21.694562060309973,30.332051254956912 +240.903,2024/06/05 13:50:19.3089,19.83263304086135,29.34904882047571 +241.15,2024/06/05 13:50:19.5559,19.83263304086135,27.832834326864138 +241.359,2024/06/05 13:50:19.7649,20.817101722815806,28.439409276565502 +241.888,2024/06/05 13:50:20.2939,20.817101722815806,29.033314198233263 +242.097,2024/06/05 13:50:20.5029,18.496007646265173,27.44266750882647 +242.134,2024/06/05 13:50:20.5399,18.496007646265173,25.75396409616715 +242.38,2024/06/05 13:50:20.7859,18.496007646265173,25.75396409616715 +242.627,2024/06/05 13:50:21.0329,18.496007646265173,25.75396409616715 +242.836,2024/06/05 13:50:21.2419,15.215539546078652,23.676289123649987 +243.366,2024/06/05 13:50:21.7719,15.215539546078652,21.39781920352321 +243.575,2024/06/05 13:50:21.9809,21.774312610397132,26.22022120425379 +243.612,2024/06/05 13:50:22.0179,21.774312610397132,30.284209306721767 +243.859,2024/06/05 13:50:22.2649,19.444852759810225,28.725134174331256 +244.105,2024/06/05 13:50:22.5109,19.49960211795989,27.046256672597043 +244.315,2024/06/05 13:50:22.7209,29.305858344936176,33.906243279569225 +244.843,2024/06/05 13:50:23.2489,29.3132114892965,39.59334960991976 +245.053,2024/06/05 13:50:23.4589,32.789541365939286,42.013489897095354 +245.09,2024/06/05 13:50:23.4959,32.76929106315465,44.30312253856004 +245.336,2024/06/05 13:50:23.7419,32.74730839163259,44.30312253856004 +245.582,2024/06/05 13:50:23.9879,32.558364922657304,44.248917124226516 +245.792,2024/06/05 13:50:24.1979,33.714163605024375,45.09101906144948 +245.828,2024/06/05 13:50:24.2339,33.67320978866446,45.969917699875566 +246.075,2024/06/05 13:50:24.4809,33.63365856557819,45.97028025438465 +246.321,2024/06/05 13:50:24.7269,32.96443572986881,45.72490204108333 +246.567,2024/06/05 13:50:24.9729,32.91130539782116,45.47783342831245 +246.777,2024/06/05 13:50:25.1829,33.89301965905878,46.38498320218157 +246.814,2024/06/05 13:50:25.2199,33.23758086277259,47.08786113922214 +247.06,2024/06/05 13:50:25.4659,33.162088865618614,46.90024875555921 +247.269,2024/06/05 13:50:25.6749,33.334183897196404,47.2405193310432 +247.762,2024/06/05 13:50:26.1679,32.32878863664396,47.3050384913348 +247.799,2024/06/05 13:50:26.2049,32.32878863664396,47.020562877674415 +248.045,2024/06/05 13:50:26.4509,32.32878863664396,47.020562877674415 +248.291,2024/06/05 13:50:26.6969,31.183273588965857,46.6561893000275 +248.501,2024/06/05 13:50:26.9069,31.818884004793464,46.447461358686404 +248.537,2024/06/05 13:50:26.9429,31.183273588965857,46.447461358686404 +248.784,2024/06/05 13:50:27.1899,31.183273588965857,46.288947564906536 +249.03,2024/06/05 13:50:27.4359,31.183273588965857,46.288947564906536 +249.276,2024/06/05 13:50:27.6819,31.183273588965857,46.288947564906536 +249.486,2024/06/05 13:50:27.8919,31.806454922119173,46.248963952359695 +249.523,2024/06/05 13:50:27.9289,31.806454922119173,46.20894574286095 +249.732,2024/06/05 13:50:28.1379,29.645588534221734,43.728327965595334 +249.769,2024/06/05 13:50:28.1749,29.645588534221734,41.09825624849145 +250.016,2024/06/05 13:50:28.4219,29.72216170724924,41.078380364047135 +250.262,2024/06/05 13:50:28.6679,29.7966479639104,41.078380364047135 +250.471,2024/06/05 13:50:28.8769,22.263211239908387,35.67398678776082 +250.508,2024/06/05 13:50:28.9139,22.31356991382126,29.288791940490366 +250.754,2024/06/05 13:50:29.1599,17.530564442005403,25.859878834467366 +251.001,2024/06/05 13:50:29.4069,17.925003406598478,21.70483817032507 +251.209,2024/06/05 13:50:29.6149,18.480185101330527,21.72402663718983 +251.247,2024/06/05 13:50:29.6529,18.783123998061765,21.743198170155804 +251.493,2024/06/05 13:50:29.8989,16.08186670700052,19.817500683318606 +251.703,2024/06/05 13:50:30.1089,16.308414019033645,17.684267961477325 +251.739,2024/06/05 13:50:30.1449,16.4780941315134,17.684267961477325 +251.985,2024/06/05 13:50:30.3909,16.59400251718519,17.683325479106017 +252.231,2024/06/05 13:50:30.6369,16.672677077172025,17.683325479106017 +252.441,2024/06/05 13:50:30.8469,12.406709345419605,15.149257407543116 +252.478,2024/06/05 13:50:30.8839,12.302929283940022,12.095453691366853 +252.725,2024/06/05 13:50:31.1309,12.148317134299417,12.095453691366853 +252.97,2024/06/05 13:50:31.3759,8.729392811111342,10.68955876856789 +253.18,2024/06/05 13:50:31.5859,8.278486174020006,9.136009340333812 +253.217,2024/06/05 13:50:31.6229,8.162149818232852,9.252026804976301 +253.464,2024/06/05 13:50:31.8699,8.007467778891794,9.252026804976301 +253.709,2024/06/05 13:50:32.1149,7.812162636400727,9.252026804976301 +253.919,2024/06/05 13:50:32.3249,8.644245976709206,9.850549900047882 +253.956,2024/06/05 13:50:32.3619,8.500507084272115,10.414733153886694 +254.202,2024/06/05 13:50:32.6079,8.318999166158218,10.414733153886694 +254.448,2024/06/05 13:50:32.8539,8.097182708584223,10.414733153886694 +254.658,2024/06/05 13:50:33.0639,9.221165059664399,11.853269591129697 +254.695,2024/06/05 13:50:33.1009,9.200762087382222,12.763228431709589 +254.941,2024/06/05 13:50:33.3469,9.000702399161094,12.380091545165032 +255.15,2024/06/05 13:50:33.5559,9.121403400798805,12.343689345842542 +255.187,2024/06/05 13:50:33.5929,8.909248713768253,12.307179476495282 +255.434,2024/06/05 13:50:33.8399,8.657997432451232,12.307179476495282 +255.679,2024/06/05 13:50:34.0849,8.364127013009577,12.307179476495282 +255.889,2024/06/05 13:50:34.2949,8.673118730067578,12.516655570345725 +255.926,2024/06/05 13:50:34.3319,8.36660026534679,12.722683155162935 +256.172,2024/06/05 13:50:34.5779,8.36660026534679,12.382783747337808 +256.418,2024/06/05 13:50:34.8239,8.36660026534679,12.382783747337808 +256.628,2024/06/05 13:50:35.0339,8.320104442321407,12.48332220738267 +257.157,2024/06/05 13:50:35.5629,8.332252803516685,12.45525324244085 +257.366,2024/06/05 13:50:35.7719,8.590893333988355,12.540600729895944 +257.403,2024/06/05 13:50:35.8089,8.556505893386175,12.624051119457125 +257.65,2024/06/05 13:50:36.0559,8.532830444958078,12.622730819174325 +257.859,2024/06/05 13:50:36.2649,8.67610008262836,12.687263955111309 +257.896,2024/06/05 13:50:36.3019,8.825316249101698,12.68857754044952 +258.142,2024/06/05 13:50:36.5479,8.881402498757472,12.683322382824883 +258.389,2024/06/05 13:50:36.7949,8.957691102352568,12.678065046896286 +258.598,2024/06/05 13:50:37.0039,9.184256894967179,13.299122778088286 +258.635,2024/06/05 13:50:37.0409,9.238164220289068,13.892443989449804 +258.881,2024/06/05 13:50:37.2869,9.36126772042352,13.771952173409064 +259.091,2024/06/05 13:50:37.4969,10.643869316329324,15.230451952147273 +259.128,2024/06/05 13:50:37.5339,10.688698511146177,16.661332479726823 +259.374,2024/06/05 13:50:37.7799,10.705890525973713,16.661332479726823 +260.114,2024/06/05 13:50:38.5199,10.099504938367458,16.1245154965971 +260.322,2024/06/05 13:50:38.7279,12.001388808527116,16.18332475111341 +260.569,2024/06/05 13:50:38.9749,13.930698755489479,16.19979423737639 +260.851,2024/06/05 13:50:39.2569,13.930698755489479,17.283903880007358 +261.098,2024/06/05 13:50:39.5039,13.052546323125739,16.330952207388275 +261.307,2024/06/05 13:50:39.7129,13.441272859817065,15.53061492665374 +261.344,2024/06/05 13:50:39.7499,13.441272859817065,15.739546795677864 +261.59,2024/06/05 13:50:39.9959,13.331321687332219,15.559562975867927 +261.837,2024/06/05 13:50:40.2429,13.331321687332219,15.377472700891609 +262.046,2024/06/05 13:50:40.4519,13.594116374376865,15.72471515375292 +262.083,2024/06/05 13:50:40.4889,13.594116374376865,16.064453512854605 +262.785,2024/06/05 13:50:41.1909,19.792167265299106,21.88987589427283 +262.822,2024/06/05 13:50:41.2279,19.792167265299106,26.462552157089206 +263.068,2024/06/05 13:50:41.4739,19.792167265299106,26.462552157089206 +263.277,2024/06/05 13:50:41.6829,21.765442397496336,28.36899716239543 +263.314,2024/06/05 13:50:41.7199,21.805540791173055,30.099833886584822 +263.56,2024/06/05 13:50:41.9659,21.846407421850586,30.097618953443256 +263.807,2024/06/05 13:50:42.2129,21.846407421850586,30.203752526245257 +264.016,2024/06/05 13:50:42.4219,22.177471223860664,30.247864938427195 +264.053,2024/06/05 13:50:42.4589,22.228411973208647,30.327105587796098 +264.3,2024/06/05 13:50:42.7059,22.2399660960653,30.300165016052304 +264.545,2024/06/05 13:50:42.9509,22.2399660960653,30.299614959049674 +264.754,2024/06/05 13:50:43.1599,22.190528164737213,30.32655601943617 +264.791,2024/06/05 13:50:43.1969,22.1797515610625,30.371038836365145 +265.038,2024/06/05 13:50:43.4439,22.08252546776733,30.1042632639742 +265.247,2024/06/05 13:50:43.6529,22.102790170778036,29.840129579700776 +265.284,2024/06/05 13:50:43.6899,22.06781606202196,29.845155944195255 +265.987,2024/06/05 13:50:44.3929,21.46967923460644,29.075763102625526 +266.023,2024/06/05 13:50:44.4289,21.46967923460644,28.379570116546866 +266.269,2024/06/05 13:50:44.6749,21.46967923460644,28.379570116546866 +266.516,2024/06/05 13:50:44.9219,21.485092399205755,28.228826873723722 +266.724,2024/06/05 13:50:45.1299,20.80240923271072,28.299587747291774 +266.762,2024/06/05 13:50:45.1679,19.33316488234477,28.850765443340784 +267.008,2024/06/05 13:50:45.4139,19.27505087430408,28.2146534032702 +267.222,2024/06/05 13:50:45.6279,19.97668180885071,28.970099528076645 +267.255,2024/06/05 13:50:45.6609,19.497981033120595,29.596170923505177 +267.501,2024/06/05 13:50:45.9069,19.415747844673177,29.485589700733474 +267.747,2024/06/05 13:50:46.1529,19.311749743641432,29.52174339928679 +267.956,2024/06/05 13:50:46.3619,19.85177834473251,29.845155944195255 +267.993,2024/06/05 13:50:46.3989,19.812366972615504,29.985552076514004 +268.239,2024/06/05 13:50:46.6449,19.71885730293335,29.804921293862417 +268.486,2024/06/05 13:50:46.8919,14.249823552047197,25.665151470427755 +268.695,2024/06/05 13:50:47.1009,14.484077662980036,20.91889098398861 +268.732,2024/06/05 13:50:47.1379,14.403862828003021,21.12186860420577 +268.979,2024/06/05 13:50:47.3849,11.309847199598677,18.54004674571597 +269.225,2024/06/05 13:50:47.6309,11.309847199598677,15.466091943344964 +269.434,2024/06/05 13:50:47.8399,11.35508392899814,15.470401847829724 +269.47,2024/06/05 13:50:47.8759,11.28344326675734,15.193200233437764 +269.718,2024/06/05 13:50:48.1239,10.518784510879316,15.03551351523009 +269.963,2024/06/05 13:50:48.3689,10.34069074373557,14.875035013964393 +270.21,2024/06/05 13:50:48.6159,10.130470708793148,14.875035013964393 +270.456,2024/06/05 13:50:48.8619,9.886075194875211,14.875035013964393 +270.702,2024/06/05 13:50:49.1079,9.84360461031648,14.820031488945403 +270.949,2024/06/05 13:50:49.3549,9.867862617800492,14.800900873482894 +271.158,2024/06/05 13:50:49.5639,9.966668588787668,14.989996664442591 +271.195,2024/06/05 13:50:49.6009,9.936811857188596,15.166849815743983 +271.442,2024/06/05 13:50:49.8479,9.947910310227797,15.156956598649128 +271.688,2024/06/05 13:50:50.0939,9.977042613442704,15.147056919855201 +271.897,2024/06/05 13:50:50.3029,9.763231517037719,15.070943345833841 +271.934,2024/06/05 13:50:50.3399,9.510369416425819,15.181128636128035 +272.18,2024/06/05 13:50:50.5859,9.24264230519146,15.181128636128035 +272.427,2024/06/05 13:50:50.8329,8.653216796061848,14.086636693452888 +272.635,2024/06/05 13:50:51.0409,8.357046720293223,12.900904361064512 +273.128,2024/06/05 13:50:51.5339,8.286257838471013,13.22749661374618 +273.165,2024/06/05 13:50:51.5709,7.1791524489429746,11.8911731969558 +273.411,2024/06/05 13:50:51.8169,6.832646447122109,9.909591313469996 +273.658,2024/06/05 13:50:52.0639,6.456218600759677,9.909591313469996 +273.867,2024/06/05 13:50:52.2729,6.916912473135984,10.459445491994305 +273.904,2024/06/05 13:50:52.3099,6.08521857106029,10.175133086762715 +274.15,2024/06/05 13:50:52.5559,6.08521857106029,9.183318209303941 +274.396,2024/06/05 13:50:52.8019,6.08521857106029,9.183318209303941 +274.605,2024/06/05 13:50:53.0109,6.011100842062026,9.248423289044103 +274.644,2024/06/05 13:50:53.0499,5.729135057393332,8.843076387773658 +274.889,2024/06/05 13:50:53.2949,5.68725132083265,8.473488065725943 +275.135,2024/06/05 13:50:53.5409,5.68725132083265,8.34665601703261 +275.344,2024/06/05 13:50:53.7499,5.683612255948515,8.418234177466594 +275.381,2024/06/05 13:50:53.7869,5.632010318704259,8.4813520934656 +275.628,2024/06/05 13:50:54.0339,5.608798506789257,8.47938677028003 +275.837,2024/06/05 13:50:54.2429,5.695733430424121,8.495096624916439 +275.874,2024/06/05 13:50:54.2799,5.695733430424121,8.512735557191158 +276.121,2024/06/05 13:50:54.5269,5.695733430424121,8.512735557191158 +276.367,2024/06/05 13:50:54.7729,5.695733430424121,8.512735557191158 +276.576,2024/06/05 13:50:54.9819,6.671262783502253,9.0 +276.613,2024/06/05 13:50:55.0189,6.610336733044925,9.348796714016196 +276.86,2024/06/05 13:50:55.2659,6.479055557690917,9.04249228181405 +277.106,2024/06/05 13:50:55.5119,6.412003829034515,8.72544172711808 +277.315,2024/06/05 13:50:55.7209,7.219386416447659,9.261029460414575 +277.352,2024/06/05 13:50:55.7579,7.116760208281049,9.767292357659825 +277.598,2024/06/05 13:50:56.0039,7.095084910355979,9.59513765751522 +277.807,2024/06/05 13:50:56.2129,7.0404414699688544,9.44810386620864 +277.844,2024/06/05 13:50:56.2499,6.911260177527843,9.476286192385707 +278.091,2024/06/05 13:50:56.4969,6.76875852384509,9.476286192385707 +278.337,2024/06/05 13:50:56.7429,6.650641659483763,9.474527252938094 +278.546,2024/06/05 13:50:56.9519,6.475062685543029,9.04249228181405 +278.583,2024/06/05 13:50:56.9889,6.308177506093028,8.524474568362947 +278.83,2024/06/05 13:50:57.2359,6.124756621961626,8.524474568362947 +279.075,2024/06/05 13:50:57.4809,5.923264089280999,8.524474568362947 +279.285,2024/06/05 13:50:57.6909,5.584152453218973,7.756717518813397 +279.778,2024/06/05 13:50:58.1839,5.819112386405515,6.997618642557386 +279.815,2024/06/05 13:50:58.2209,5.570447473728815,7.389181280764467 +280.061,2024/06/05 13:50:58.4669,5.2962793272960695,7.389181280764467 +280.307,2024/06/05 13:50:58.7129,5.262751345469199,7.307530362578044 +280.553,2024/06/05 13:50:58.9589,4.953113498945164,7.224956747275377 +280.8,2024/06/05 13:50:59.2059,4.953113498945164,7.075780286771677 +281.009,2024/06/05 13:50:59.4149,5.654923599805632,7.726577508832744 +281.046,2024/06/05 13:50:59.4519,5.448715972339222,8.254291812949997 +281.255,2024/06/05 13:50:59.6609,7.242594315153208,9.745084230865666 +281.292,2024/06/05 13:50:59.6979,7.242594315153208,11.090536506409418 +281.539,2024/06/05 13:50:59.9449,7.271816165506676,11.077003204838391 +281.747,2024/06/05 13:51:00.1529,9.121718430566226,12.685950233755978 +282.24,2024/06/05 13:51:00.6459,13.839349197378747,13.6772316887105 +282.277,2024/06/05 13:51:00.6829,13.781380075366183,16.967616214424464 +282.523,2024/06/05 13:51:00.9289,13.674752303965288,16.714265364252977 +282.733,2024/06/05 13:51:01.1389,18.567831532415916,20.725185966194207 +282.77,2024/06/05 13:51:01.1759,18.492496148254023,24.253522080995438 +283.016,2024/06/05 13:51:01.4219,18.413794179691482,24.253522080995438 +283.226,2024/06/05 13:51:01.6319,23.194058890504134,28.141310085590067 +283.263,2024/06/05 13:51:01.6689,23.10455993208384,31.553658002414448 +283.509,2024/06/05 13:51:01.9149,23.012265595029383,31.553658002414448 +283.755,2024/06/05 13:51:02.1609,22.980851599319944,31.545205657912582 +283.964,2024/06/05 13:51:02.3699,27.94372423529132,35.90403877003254 +284.001,2024/06/05 13:51:02.4069,27.835394651457253,39.79489079433858 +284.247,2024/06/05 13:51:02.6529,27.724610420862213,39.79489079433858 +284.457,2024/06/05 13:51:02.8629,32.25660406408581,43.85354413651573 +284.494,2024/06/05 13:51:02.8999,32.133271331080685,47.567145524335736 +284.74,2024/06/05 13:51:03.1459,32.00770381405617,47.567145524335736 +284.949,2024/06/05 13:51:03.3549,35.364197103591565,50.885492366030356 +284.986,2024/06/05 13:51:03.3919,35.32933722794106,53.99259208447025 +285.233,2024/06/05 13:51:03.6389,35.41006091202285,53.972832672249716 +285.688,2024/06/05 13:51:04.0939,37.799774979565775,56.58592286661645 +286.18,2024/06/05 13:51:04.5859,39.877182136811875,56.58710100367397 +286.218,2024/06/05 13:51:04.6239,39.712703894028245,59.239345033516365 +286.463,2024/06/05 13:51:04.8689,39.54611741118088,59.239345033516365 +286.711,2024/06/05 13:51:05.1169,39.377395931484344,59.239345033516365 +286.919,2024/06/05 13:51:05.3249,40.65549120988812,61.022946503753815 +286.956,2024/06/05 13:51:05.3619,40.318858426642414,62.42355324715183 +287.203,2024/06/05 13:51:05.6089,40.46069470599835,62.198606629623676 +287.411,2024/06/05 13:51:05.8169,40.26648302462557,62.564100462379116 +287.449,2024/06/05 13:51:05.8549,39.89935614379886,63.149821852480315 +287.696,2024/06/05 13:51:06.1019,40.08584179786829,62.84398671843366 +287.942,2024/06/05 13:51:06.3479,39.85179440428533,62.64529777511903 +288.151,2024/06/05 13:51:06.5569,39.5196008402762,61.895880315252 +288.187,2024/06/05 13:51:06.5929,39.2573150076421,61.95643630810281 +288.434,2024/06/05 13:51:06.8399,38.58568610785406,60.662179321221224 +288.643,2024/06/05 13:51:07.0489,38.255478159283925,59.37367542382174 +288.68,2024/06/05 13:51:07.0859,37.991242184991364,59.407631384079494 +288.927,2024/06/05 13:51:07.3329,36.773631857623876,57.584141335382725 +289.173,2024/06/05 13:51:07.5789,36.521588639894325,55.70098742392275 diff --git a/data/case-study/processed/hrv_03.csv b/data/case-study/processed/hrv_03.csv index dad5ef6..2abd56c 100755 --- a/data/case-study/processed/hrv_03.csv +++ b/data/case-study/processed/hrv_03.csv @@ -1,1264 +1,1264 @@ reltime,datetime,sdnn,rmssd -0.001,2024/06/13 13:46:34.4369,30.74747048437062,36.53031001676226 -0.001,2024/06/13 13:46:34.4369,30.74747048437062,36.53031001676226 -0.525,2024/06/13 13:46:34.9609,30.74747048437062,36.53031001676226 -1.017,2024/06/13 13:46:35.4529,30.74747048437062,36.53031001676226 -1.426,2024/06/13 13:46:35.8619,30.74747048437062,36.53031001676226 -1.673,2024/06/13 13:46:36.1089,30.74747048437062,36.53031001676226 -1.756,2024/06/13 13:46:36.1919,30.74747048437062,36.53031001676226 -1.919,2024/06/13 13:46:36.3549,30.74747048437062,36.53031001676226 -2.248,2024/06/13 13:46:36.6839,30.74747048437062,36.53031001676226 -2.74,2024/06/13 13:46:37.1759,30.74747048437062,36.53031001676226 -3.726,2024/06/13 13:46:38.1619,30.74747048437062,36.53031001676226 -3.972,2024/06/13 13:46:38.4079,30.74747048437062,36.53031001676226 -4.627,2024/06/13 13:46:39.0629,30.74747048437062,36.53031001676226 -4.874,2024/06/13 13:46:39.3099,30.74747048437062,36.53031001676226 -4.957,2024/06/13 13:46:39.3929,30.74747048437062,36.53031001676226 -5.12,2024/06/13 13:46:39.5559,30.74747048437062,36.53031001676226 -5.45,2024/06/13 13:46:39.8859,30.74747048437062,36.53031001676226 -5.943,2024/06/13 13:46:40.3789,30.74747048437062,36.53031001676226 -6.435,2024/06/13 13:46:40.8709,30.74747048437062,36.53031001676226 -7.174,2024/06/13 13:46:41.6099,30.74747048437062,36.53031001676226 -7.666,2024/06/13 13:46:42.1019,30.74747048437062,36.53031001676226 -7.83,2024/06/13 13:46:42.2659,30.74747048437062,36.53031001676226 -8.076,2024/06/13 13:46:42.5119,30.74747048437062,36.53031001676226 -8.322,2024/06/13 13:46:42.7579,30.74747048437062,36.53031001676226 -8.651,2024/06/13 13:46:43.0869,30.74747048437062,36.53031001676226 -9.143,2024/06/13 13:46:43.5789,30.74747048437062,36.53031001676226 -9.553,2024/06/13 13:46:43.9889,30.74747048437062,36.53031001676226 -9.637,2024/06/13 13:46:44.0729,30.74747048437062,36.53031001676226 -9.799,2024/06/13 13:46:44.2349,30.74747048437062,36.53031001676226 -10.046,2024/06/13 13:46:44.4819,30.74747048437062,36.53031001676226 -10.291,2024/06/13 13:46:44.7269,30.74747048437062,36.53031001676226 -10.375,2024/06/13 13:46:44.8109,30.74747048437062,36.53031001676226 -10.539,2024/06/13 13:46:44.9749,30.74747048437062,36.53031001676226 -10.784,2024/06/13 13:46:45.2199,30.74747048437062,36.53031001676226 -11.36,2024/06/13 13:46:45.7959,30.74747048437062,36.53031001676226 -11.523,2024/06/13 13:46:45.9589,30.74747048437062,36.53031001676226 -11.607,2024/06/13 13:46:46.0429,30.74747048437062,36.53031001676226 -11.769,2024/06/13 13:46:46.2049,30.74747048437062,36.53031001676226 -12.016,2024/06/13 13:46:46.4519,30.74747048437062,36.53031001676226 -12.262,2024/06/13 13:46:46.6979,30.74747048437062,36.53031001676226 -12.346,2024/06/13 13:46:46.7819,30.74747048437062,36.53031001676226 -12.508,2024/06/13 13:46:46.9439,30.74747048437062,36.53031001676226 -12.755,2024/06/13 13:46:47.1909,30.74747048437062,36.53031001676226 -12.838,2024/06/13 13:46:47.2739,30.74747048437062,36.53031001676226 -13.001,2024/06/13 13:46:47.4369,30.74747048437062,36.53031001676226 -13.247,2024/06/13 13:46:47.6829,30.74747048437062,36.53031001676226 -13.493,2024/06/13 13:46:47.9289,30.74747048437062,36.53031001676226 -13.577,2024/06/13 13:46:48.0129,30.74747048437062,36.53031001676226 -13.74,2024/06/13 13:46:48.1759,30.74747048437062,36.53031001676226 -14.07,2024/06/13 13:46:48.5059,30.74747048437062,36.53031001676226 -14.478,2024/06/13 13:46:48.9139,30.74747048437062,36.53031001676226 -14.808,2024/06/13 13:46:49.2439,30.74747048437062,36.53031001676226 -15.301,2024/06/13 13:46:49.7369,30.74747048437062,36.53031001676226 -15.793,2024/06/13 13:46:50.2289,30.74747048437062,36.53031001676226 -16.202,2024/06/13 13:46:50.6379,30.74747048437062,36.53031001676226 -16.449,2024/06/13 13:46:50.8849,30.74747048437062,36.53031001676226 -16.532,2024/06/13 13:46:50.9679,30.74747048437062,36.53031001676226 -16.695,2024/06/13 13:46:51.1309,30.74747048437062,36.53031001676226 -17.025,2024/06/13 13:46:51.4609,30.74747048437062,36.53031001676226 -17.517,2024/06/13 13:46:51.9529,30.74747048437062,36.53031001676226 -18.009,2024/06/13 13:46:52.4449,30.74747048437062,36.53031001676226 -18.748,2024/06/13 13:46:53.1839,30.74747048437062,36.53031001676226 -19.24,2024/06/13 13:46:53.6759,30.74747048437062,36.53031001676226 -19.403,2024/06/13 13:46:53.8389,30.74747048437062,36.53031001676226 -19.65,2024/06/13 13:46:54.0859,30.74747048437062,36.53031001676226 -19.734,2024/06/13 13:46:54.1699,30.74747048437062,36.53031001676226 -19.896,2024/06/13 13:46:54.3319,30.74747048437062,36.53031001676226 -21.705,2024/06/13 13:46:56.1409,30.74747048437062,36.53031001676226 -22.196,2024/06/13 13:46:56.6319,30.74747048437062,36.53031001676226 -22.605,2024/06/13 13:46:57.0409,30.74747048437062,36.53031001676226 -22.851,2024/06/13 13:46:57.2869,30.74747048437062,36.53031001676226 -22.935,2024/06/13 13:46:57.3709,30.74747048437062,36.53031001676226 -23.098,2024/06/13 13:46:57.5339,30.74747048437062,36.53031001676226 -23.428,2024/06/13 13:46:57.8639,30.74747048437062,36.53031001676226 -25.152,2024/06/13 13:46:59.5879,30.74747048437062,36.53031001676226 -25.644,2024/06/13 13:47:00.0799,30.74747048437062,36.53031001676226 -26.053,2024/06/13 13:47:00.4889,30.74747048437062,36.53031001676226 -26.136,2024/06/13 13:47:00.5719,30.74747048437062,36.53031001676226 -26.3,2024/06/13 13:47:00.7359,30.74747048437062,36.53031001676226 -27.122,2024/06/13 13:47:01.5579,30.74747048437062,36.53031001676226 -27.614,2024/06/13 13:47:02.0499,30.74747048437062,36.53031001676226 -28.107,2024/06/13 13:47:02.5429,30.74747048437062,36.53031001676226 -28.599,2024/06/13 13:47:03.0349,30.74747048437062,36.53031001676226 -29.009,2024/06/13 13:47:03.4449,30.74747048437062,36.53031001676226 -29.255,2024/06/13 13:47:03.6909,30.74747048437062,36.53031001676226 -29.338,2024/06/13 13:47:03.7739,30.74747048437062,36.53031001676226 -29.501,2024/06/13 13:47:03.9369,30.74747048437062,36.53031001676226 -29.831,2024/06/13 13:47:04.2669,30.74747048437062,36.53031001676226 -30.815,2024/06/13 13:47:05.2509,30.74747048437062,36.53031001676226 -31.308,2024/06/13 13:47:05.7439,30.74747048437062,36.53031001676226 -31.555,2024/06/13 13:47:05.9909,30.74747048437062,36.53031001676226 -32.047,2024/06/13 13:47:06.4829,30.74747048437062,36.53031001676226 -32.211,2024/06/13 13:47:06.6469,30.74747048437062,36.53031001676226 -32.456,2024/06/13 13:47:06.8919,30.74747048437062,36.53031001676226 -32.703,2024/06/13 13:47:07.1389,30.74747048437062,36.53031001676226 -33.032,2024/06/13 13:47:07.4679,30.74747048437062,36.53031001676226 -33.524,2024/06/13 13:47:07.9599,30.74747048437062,36.53031001676226 -35.249,2024/06/13 13:47:09.6849,30.74747048437062,36.53031001676226 -35.412,2024/06/13 13:47:09.8479,30.74747048437062,36.53031001676226 -35.658,2024/06/13 13:47:10.0939,30.74747048437062,36.53031001676226 -35.741,2024/06/13 13:47:10.1769,30.74747048437062,36.53031001676226 -35.905,2024/06/13 13:47:10.3409,30.74747048437062,36.53031001676226 -36.726,2024/06/13 13:47:11.1619,30.74747048437062,36.53031001676226 -37.218,2024/06/13 13:47:11.6539,30.74747048437062,36.53031001676226 -37.712,2024/06/13 13:47:12.1479,30.74747048437062,36.53031001676226 -38.204,2024/06/13 13:47:12.6399,30.74747048437062,36.53031001676226 -38.943,2024/06/13 13:47:13.3789,30.74747048437062,36.53031001676226 -39.106,2024/06/13 13:47:13.5419,30.74747048437062,36.53031001676226 -39.845,2024/06/13 13:47:14.2809,30.74747048437062,36.53031001676226 -39.927,2024/06/13 13:47:14.3629,30.74747048437062,36.53031001676226 -40.091,2024/06/13 13:47:14.5269,30.74747048437062,36.53031001676226 -40.174,2024/06/13 13:47:14.6099,30.74747048437062,36.53031001676226 -40.338,2024/06/13 13:47:14.7739,30.74747048437062,36.53031001676226 -40.584,2024/06/13 13:47:15.0199,30.74747048437062,36.53031001676226 -40.829,2024/06/13 13:47:15.2649,30.74747048437062,36.53031001676226 -40.913,2024/06/13 13:47:15.3489,30.74747048437062,36.53031001676226 -41.076,2024/06/13 13:47:15.5119,30.74747048437062,36.53031001676226 -41.323,2024/06/13 13:47:15.7589,30.74747048437062,36.53031001676226 -41.406,2024/06/13 13:47:15.8419,30.74747048437062,36.53031001676226 -41.568,2024/06/13 13:47:16.0039,30.74747048437062,36.53031001676226 -41.815,2024/06/13 13:47:16.2509,30.74747048437062,36.53031001676226 -42.062,2024/06/13 13:47:16.4979,30.74747048437062,36.53031001676226 -42.144,2024/06/13 13:47:16.5799,30.74747048437062,36.53031001676226 -42.637,2024/06/13 13:47:17.0729,30.74747048437062,36.53031001676226 -42.801,2024/06/13 13:47:17.2369,30.74747048437062,36.53031001676226 -43.046,2024/06/13 13:47:17.4819,30.74747048437062,36.53031001676226 -43.292,2024/06/13 13:47:17.7279,30.74747048437062,36.53031001676226 -43.375,2024/06/13 13:47:17.8109,30.74747048437062,36.53031001676226 -43.539,2024/06/13 13:47:17.9749,30.74747048437062,36.53031001676226 -43.785,2024/06/13 13:47:18.2209,30.74747048437062,36.53031001676226 -44.032,2024/06/13 13:47:18.4679,30.74747048437062,36.53031001676226 -44.115,2024/06/13 13:47:18.5509,30.74747048437062,36.53031001676226 -44.278,2024/06/13 13:47:18.7139,30.74747048437062,36.53031001676226 -44.524,2024/06/13 13:47:18.9599,30.74747048437062,36.53031001676226 -44.77,2024/06/13 13:47:19.2059,30.74747048437062,36.53031001676226 -46.085,2024/06/13 13:47:20.5209,30.74747048437062,36.53031001676226 -46.578,2024/06/13 13:47:21.0139,30.74747048437062,36.53031001676226 -46.987,2024/06/13 13:47:21.4229,30.74747048437062,36.53031001676226 -47.233,2024/06/13 13:47:21.6689,30.74747048437062,36.53031001676226 -47.316,2024/06/13 13:47:21.7519,30.74747048437062,36.53031001676226 -47.479,2024/06/13 13:47:21.9149,30.74747048437062,36.53031001676226 -47.808,2024/06/13 13:47:22.2439,30.74747048437062,36.53031001676226 -48.794,2024/06/13 13:47:23.2299,30.74747048437062,36.53031001676226 -49.286,2024/06/13 13:47:23.7219,30.74747048437062,36.53031001676226 -49.779,2024/06/13 13:47:24.2149,30.74747048437062,36.53031001676226 -50.188,2024/06/13 13:47:24.6239,30.74747048437062,36.53031001676226 -50.434,2024/06/13 13:47:24.8699,30.74747048437062,36.53031001676226 -50.517,2024/06/13 13:47:24.9529,30.74747048437062,36.53031001676226 -50.681,2024/06/13 13:47:25.1169,30.74747048437062,36.53031001676226 -51.01,2024/06/13 13:47:25.4459,30.74747048437062,36.53031001676226 -51.995,2024/06/13 13:47:26.4309,30.74747048437062,36.53031001676226 -52.734,2024/06/13 13:47:27.1699,30.74747048437062,36.53031001676226 -52.98,2024/06/13 13:47:27.4159,30.74747048437062,36.53031001676226 -53.39,2024/06/13 13:47:27.8259,30.74747048437062,36.53031001676226 -53.637,2024/06/13 13:47:28.0729,30.74747048437062,36.53031001676226 -53.882,2024/06/13 13:47:28.3179,30.74747048437062,36.53031001676226 -54.212,2024/06/13 13:47:28.6479,30.74747048437062,36.53031001676226 -54.705,2024/06/13 13:47:29.1409,30.74747048437062,36.53031001676226 -55.197,2024/06/13 13:47:29.6329,30.74747048437062,36.53031001676226 -55.689,2024/06/13 13:47:30.1249,30.74747048437062,36.53031001676226 -56.428,2024/06/13 13:47:30.8639,30.74747048437062,36.53031001676226 -56.594,2024/06/13 13:47:31.0299,30.74747048437062,36.53031001676226 -56.838,2024/06/13 13:47:31.2739,30.74747048437062,36.53031001676226 -57.084,2024/06/13 13:47:31.5199,30.74747048437062,36.53031001676226 -57.413,2024/06/13 13:47:31.8489,30.74747048437062,36.53031001676226 -57.906,2024/06/13 13:47:32.3419,30.74747048437062,36.53031001676226 -58.398,2024/06/13 13:47:32.8339,30.74747048437062,36.53031001676226 -58.891,2024/06/13 13:47:33.3269,30.74747048437062,36.53031001676226 -59.63,2024/06/13 13:47:34.0659,30.74747048437062,36.53031001676226 -59.794,2024/06/13 13:47:34.2299,30.74747048437062,36.53031001676226 -60.039,2024/06/13 13:47:34.4749,30.74747048437062,36.53031001676226 -60.286,2024/06/13 13:47:34.7219,30.74747048437062,36.53031001676226 -60.615,2024/06/13 13:47:35.0509,30.74747048437062,36.53031001676226 -61.107,2024/06/13 13:47:35.5429,30.74747048437062,36.53031001676226 -61.6,2024/06/13 13:47:36.0359,30.74747048437062,36.53031001676226 -62.584,2024/06/13 13:47:37.0199,30.74747048437062,36.53031001676226 -62.995,2024/06/13 13:47:37.4309,30.74747048437062,36.53031001676226 -63.078,2024/06/13 13:47:37.5139,30.74747048437062,36.53031001676226 -63.241,2024/06/13 13:47:37.6769,30.74747048437062,36.53031001676226 -63.487,2024/06/13 13:47:37.9229,30.74747048437062,36.53031001676226 -64.309,2024/06/13 13:47:38.7449,30.74747048437062,36.53031001676226 -64.802,2024/06/13 13:47:39.2379,30.74747048437062,36.53031001676226 -65.294,2024/06/13 13:47:39.7299,30.74747048437062,36.53031001676226 -65.786,2024/06/13 13:47:40.2219,30.74747048437062,36.53031001676226 -66.196,2024/06/13 13:47:40.6319,30.74747048437062,36.53031001676226 -66.442,2024/06/13 13:47:40.8779,30.74747048437062,36.53031001676226 -66.525,2024/06/13 13:47:40.9609,30.74747048437062,36.53031001676226 -66.689,2024/06/13 13:47:41.1249,30.74747048437062,36.53031001676226 -67.018,2024/06/13 13:47:41.4539,30.74747048437062,36.53031001676226 -68.003,2024/06/13 13:47:42.4389,30.74747048437062,36.53031001676226 -68.495,2024/06/13 13:47:42.9309,30.74747048437062,36.53031001676226 -68.987,2024/06/13 13:47:43.4229,30.74747048437062,36.53031001676226 -69.398,2024/06/13 13:47:43.8339,30.74747048437062,36.53031001676226 -69.644,2024/06/13 13:47:44.0799,30.74747048437062,36.53031001676226 -69.727,2024/06/13 13:47:44.1629,30.74747048437062,36.53031001676226 -69.891,2024/06/13 13:47:44.3269,30.74747048437062,36.53031001676226 -70.137,2024/06/13 13:47:44.5729,30.74747048437062,36.53031001676226 -70.383,2024/06/13 13:47:44.8189,30.74747048437062,36.53031001676226 -70.466,2024/06/13 13:47:44.9019,30.74747048437062,36.53031001676226 -70.958,2024/06/13 13:47:45.3939,30.74747048437062,36.53031001676226 -71.121,2024/06/13 13:47:45.5569,30.74747048437062,36.53031001676226 -71.368,2024/06/13 13:47:45.8039,30.74747048437062,36.53031001676226 -71.614,2024/06/13 13:47:46.0499,30.74747048437062,36.53031001676226 -71.697,2024/06/13 13:47:46.1329,30.74747048437062,36.53031001676226 -71.86,2024/06/13 13:47:46.2959,30.74747048437062,36.53031001676226 -72.107,2024/06/13 13:47:46.5429,30.74747048437062,36.53031001676226 -72.19,2024/06/13 13:47:46.6259,30.74747048437062,36.53031001676226 -72.353,2024/06/13 13:47:46.7889,30.74747048437062,36.53031001676226 -72.6,2024/06/13 13:47:47.0359,30.74747048437062,36.53031001676226 -72.845,2024/06/13 13:47:47.2809,30.74747048437062,36.53031001676226 -73.092,2024/06/13 13:47:47.5279,30.74747048437062,36.53031001676226 -73.338,2024/06/13 13:47:47.7739,30.74747048437062,36.53031001676226 -73.421,2024/06/13 13:47:47.8569,30.74747048437062,36.53031001676226 -73.585,2024/06/13 13:47:48.0209,30.74747048437062,36.53031001676226 -73.667,2024/06/13 13:47:48.1029,30.74747048437062,36.53031001676226 -73.831,2024/06/13 13:47:48.2669,30.74747048437062,36.53031001676226 -74.077,2024/06/13 13:47:48.5129,30.74747048437062,36.53031001676226 -74.16,2024/06/13 13:47:48.5959,30.74747048437062,36.53031001676226 -74.323,2024/06/13 13:47:48.7589,30.74747048437062,36.53031001676226 -74.569,2024/06/13 13:47:49.0049,30.74747048437062,36.53031001676226 -74.816,2024/06/13 13:47:49.2519,30.74747048437062,36.53031001676226 -74.898,2024/06/13 13:47:49.3339,30.74747048437062,36.53031001676226 -75.062,2024/06/13 13:47:49.4979,30.74747048437062,36.53031001676226 -75.391,2024/06/13 13:47:49.8269,30.74747048437062,36.53031001676226 -76.376,2024/06/13 13:47:50.8119,30.74747048437062,36.53031001676226 -76.868,2024/06/13 13:47:51.3039,30.74747048437062,36.53031001676226 -77.361,2024/06/13 13:47:51.7969,30.74747048437062,36.53031001676226 -77.771,2024/06/13 13:47:52.2069,30.74747048437062,36.53031001676226 -78.018,2024/06/13 13:47:52.4539,30.74747048437062,36.53031001676226 -78.1,2024/06/13 13:47:52.5359,30.74747048437062,36.53031001676226 -78.264,2024/06/13 13:47:52.6999,30.74747048437062,36.53031001676226 -78.592,2024/06/13 13:47:53.0279,30.74747048437062,36.53031001676226 -79.577,2024/06/13 13:47:54.0129,30.74747048437062,36.53031001676226 -80.07,2024/06/13 13:47:54.5059,30.74747048437062,36.53031001676226 -80.563,2024/06/13 13:47:54.9989,30.74747048437062,36.53031001676226 -81.055,2024/06/13 13:47:55.4909,30.74747048437062,36.53031001676226 -81.219,2024/06/13 13:47:55.6549,30.74747048437062,36.53031001676226 -81.466,2024/06/13 13:47:55.9019,30.74747048437062,36.53031001676226 -83.272,2024/06/13 13:47:57.7079,30.74747048437062,36.53031001676226 -83.765,2024/06/13 13:47:58.2009,30.74747048437062,36.53031001676226 -84.257,2024/06/13 13:47:58.6929,30.74747048437062,36.53031001676226 -84.667,2024/06/13 13:47:59.1029,30.74747048437062,36.53031001676226 -86.473,2024/06/13 13:48:00.9089,30.74747048437062,36.53031001676226 -86.966,2024/06/13 13:48:01.4019,30.74747048437062,36.53031001676226 -87.705,2024/06/13 13:48:02.1409,30.74747048437062,36.53031001676226 -87.868,2024/06/13 13:48:02.3039,30.74747048437062,36.53031001676226 -88.69,2024/06/13 13:48:03.1259,30.74747048437062,36.53031001676226 -89.182,2024/06/13 13:48:03.6179,30.74747048437062,36.53031001676226 -89.675,2024/06/13 13:48:04.1109,30.74747048437062,36.53031001676226 -90.168,2024/06/13 13:48:04.6039,30.74747048437062,36.53031001676226 -90.578,2024/06/13 13:48:05.0139,30.74747048437062,36.53031001676226 -90.824,2024/06/13 13:48:05.2599,30.74747048437062,36.53031001676226 -90.906,2024/06/13 13:48:05.3419,30.74747048437062,36.53031001676226 -91.07,2024/06/13 13:48:05.5059,30.74747048437062,36.53031001676226 -91.891,2024/06/13 13:48:06.3269,30.74747048437062,36.53031001676226 -92.384,2024/06/13 13:48:06.8199,30.74747048437062,36.53031001676226 -92.876,2024/06/13 13:48:07.3119,30.74747048437062,36.53031001676226 -93.369,2024/06/13 13:48:07.8049,30.74747048437062,36.53031001676226 -93.779,2024/06/13 13:48:08.2149,30.74747048437062,36.53031001676226 -94.025,2024/06/13 13:48:08.4609,30.74747048437062,36.53031001676226 -94.108,2024/06/13 13:48:08.5439,30.74747048437062,36.53031001676226 -94.272,2024/06/13 13:48:08.7079,30.74747048437062,36.53031001676226 -95.093,2024/06/13 13:48:09.5289,30.74747048437062,36.53031001676226 -96.078,2024/06/13 13:48:10.5139,30.74747048437062,36.53031001676226 -96.57,2024/06/13 13:48:11.0059,30.74747048437062,36.53031001676226 -97.063,2024/06/13 13:48:11.4989,30.74747048437062,36.53031001676226 -97.226,2024/06/13 13:48:11.6619,30.74747048437062,36.53031001676226 -97.474,2024/06/13 13:48:11.9099,30.74747048437062,36.53031001676226 -97.802,2024/06/13 13:48:12.2379,30.74747048437062,36.53031001676226 -98.295,2024/06/13 13:48:12.7309,30.74747048437062,36.53031001676226 -99.279,2024/06/13 13:48:13.7149,30.74747048437062,36.53031001676226 -99.772,2024/06/13 13:48:14.2079,30.74747048437062,36.53031001676226 -100.182,2024/06/13 13:48:14.6179,30.74747048437062,36.53031001676226 -100.264,2024/06/13 13:48:14.6999,30.74747048437062,36.53031001676226 -100.428,2024/06/13 13:48:14.8639,30.74747048437062,36.53031001676226 -100.675,2024/06/13 13:48:15.1109,30.74747048437062,36.53031001676226 -100.757,2024/06/13 13:48:15.1929,30.74747048437062,36.53031001676226 -100.921,2024/06/13 13:48:15.3569,30.74747048437062,36.53031001676226 -101.167,2024/06/13 13:48:15.6029,30.74747048437062,36.53031001676226 -101.414,2024/06/13 13:48:15.8499,30.74747048437062,36.53031001676226 -101.496,2024/06/13 13:48:15.9319,30.74747048437062,36.53031001676226 -101.66,2024/06/13 13:48:16.0959,30.74747048437062,36.53031001676226 -101.906,2024/06/13 13:48:16.3419,30.74747048437062,36.53031001676226 -102.153,2024/06/13 13:48:16.5889,30.74747048437062,36.53031001676226 -102.234,2024/06/13 13:48:16.6699,30.74747048437062,36.53031001676226 -102.398,2024/06/13 13:48:16.8339,30.74747048437062,36.53031001676226 -102.645,2024/06/13 13:48:17.0809,30.74747048437062,36.53031001676226 -102.727,2024/06/13 13:48:17.1629,30.74747048437062,36.53031001676226 -102.891,2024/06/13 13:48:17.3269,30.74747048437062,36.53031001676226 -103.138,2024/06/13 13:48:17.5739,30.74747048437062,36.53031001676226 -103.384,2024/06/13 13:48:17.8199,30.74747048437062,36.53031001676226 -103.466,2024/06/13 13:48:17.9019,30.74747048437062,36.53031001676226 -103.63,2024/06/13 13:48:18.0659,30.74747048437062,36.53031001676226 -103.876,2024/06/13 13:48:18.3119,30.74747048437062,36.53031001676226 -104.123,2024/06/13 13:48:18.5589,30.74747048437062,36.53031001676226 -104.368,2024/06/13 13:48:18.8039,30.74747048437062,36.53031001676226 -104.451,2024/06/13 13:48:18.8869,30.74747048437062,36.53031001676226 -104.615,2024/06/13 13:48:19.0509,30.74747048437062,36.53031001676226 -104.697,2024/06/13 13:48:19.1329,30.74747048437062,36.53031001676226 -104.862,2024/06/13 13:48:19.2979,30.74747048437062,36.53031001676226 -105.107,2024/06/13 13:48:19.5429,30.74747048437062,36.53031001676226 -105.354,2024/06/13 13:48:19.7899,30.74747048437062,36.53031001676226 -105.6,2024/06/13 13:48:20.0359,30.74747048437062,36.53031001676226 -105.683,2024/06/13 13:48:20.1189,30.74747048437062,36.53031001676226 -105.846,2024/06/13 13:48:20.2819,30.74747048437062,36.53031001676226 -106.093,2024/06/13 13:48:20.5289,30.74747048437062,36.53031001676226 -106.339,2024/06/13 13:48:20.7749,30.74747048437062,36.53031001676226 -106.421,2024/06/13 13:48:20.8569,30.74747048437062,36.53031001676226 -106.585,2024/06/13 13:48:21.0209,30.74747048437062,36.53031001676226 -106.668,2024/06/13 13:48:21.1039,30.74747048437062,36.53031001676226 -106.832,2024/06/13 13:48:21.2679,30.74747048437062,36.53031001676226 -107.078,2024/06/13 13:48:21.5139,30.74747048437062,36.53031001676226 -107.16,2024/06/13 13:48:21.5959,30.74747048437062,36.53031001676226 -107.324,2024/06/13 13:48:21.7599,30.74747048437062,36.53031001676226 -107.571,2024/06/13 13:48:22.0069,30.74747048437062,36.53031001676226 -107.816,2024/06/13 13:48:22.2519,30.74747048437062,36.53031001676226 -107.899,2024/06/13 13:48:22.3349,30.74747048437062,36.53031001676226 -108.063,2024/06/13 13:48:22.4989,30.74747048437062,36.53031001676226 -108.638,2024/06/13 13:48:23.0739,30.74747048437062,36.53031001676226 -108.802,2024/06/13 13:48:23.2379,30.74747048437062,36.53031001676226 -109.048,2024/06/13 13:48:23.4839,30.74747048437062,36.53031001676226 -109.13,2024/06/13 13:48:23.5659,30.74747048437062,36.53031001676226 -109.295,2024/06/13 13:48:23.7309,30.74747048437062,36.53031001676226 -109.54,2024/06/13 13:48:23.9759,30.74747048437062,36.53031001676226 -109.787,2024/06/13 13:48:24.2229,30.74747048437062,36.53031001676226 -109.869,2024/06/13 13:48:24.3049,30.74747048437062,36.53031001676226 -110.033,2024/06/13 13:48:24.4689,30.74747048437062,36.53031001676226 -110.28,2024/06/13 13:48:24.7159,30.74747048437062,36.53031001676226 -110.525,2024/06/13 13:48:24.9609,30.74747048437062,36.53031001676226 -110.772,2024/06/13 13:48:25.2079,30.74747048437062,36.53031001676226 -110.854,2024/06/13 13:48:25.2899,30.74747048437062,36.53031001676226 -111.018,2024/06/13 13:48:25.4539,30.74747048437062,36.53031001676226 -111.265,2024/06/13 13:48:25.7009,30.74747048437062,36.53031001676226 -111.346,2024/06/13 13:48:25.7819,30.74747048437062,36.53031001676226 -111.51,2024/06/13 13:48:25.9459,30.74747048437062,36.53031001676226 -111.757,2024/06/13 13:48:26.1929,30.74747048437062,36.53031001676226 -111.839,2024/06/13 13:48:26.2749,30.74747048437062,36.53031001676226 -112.003,2024/06/13 13:48:26.4389,30.74747048437062,36.53031001676226 -112.25,2024/06/13 13:48:26.6859,30.74747048437062,36.53031001676226 -112.496,2024/06/13 13:48:26.9319,30.74747048437062,36.53031001676226 -112.578,2024/06/13 13:48:27.0139,30.74747048437062,36.53031001676226 -112.743,2024/06/13 13:48:27.1789,30.74747048437062,36.53031001676226 -112.989,2024/06/13 13:48:27.4249,30.74747048437062,36.53031001676226 -113.235,2024/06/13 13:48:27.6709,30.74747048437062,36.53031001676226 -113.481,2024/06/13 13:48:27.9169,30.74747048437062,36.53031001676226 -113.563,2024/06/13 13:48:27.9989,30.74747048437062,36.53031001676226 -113.727,2024/06/13 13:48:28.1629,30.74747048437062,36.53031001676226 -113.974,2024/06/13 13:48:28.4099,30.74747048437062,36.53031001676226 -114.22,2024/06/13 13:48:28.6559,30.74747048437062,36.53031001676226 -114.302,2024/06/13 13:48:28.7379,30.74747048437062,36.53031001676226 -114.466,2024/06/13 13:48:28.9019,30.74747048437062,36.53031001676226 -114.712,2024/06/13 13:48:29.1479,30.74747048437062,36.53031001676226 -114.959,2024/06/13 13:48:29.3949,30.74747048437062,36.53031001676226 -115.205,2024/06/13 13:48:29.6409,30.74747048437062,36.53031001676226 -115.287,2024/06/13 13:48:29.7229,30.74747048437062,36.53031001676226 -115.452,2024/06/13 13:48:29.8879,30.74747048437062,36.53031001676226 -115.697,2024/06/13 13:48:30.1329,30.74747048437062,36.53031001676226 -115.779,2024/06/13 13:48:30.2149,30.74747048437062,36.53031001676226 -115.944,2024/06/13 13:48:30.3799,30.74747048437062,36.53031001676226 -116.19,2024/06/13 13:48:30.6259,30.74747048437062,36.53031001676226 -116.437,2024/06/13 13:48:30.8729,30.74747048437062,36.53031001676226 -116.519,2024/06/13 13:48:30.9549,30.74747048437062,36.53031001676226 -116.682,2024/06/13 13:48:31.1179,30.74747048437062,36.53031001676226 -116.929,2024/06/13 13:48:31.3649,30.74747048437062,36.53031001676226 -117.175,2024/06/13 13:48:31.6109,30.74747048437062,36.53031001676226 -117.421,2024/06/13 13:48:31.8569,30.74747048437062,36.53031001676226 -117.503,2024/06/13 13:48:31.9389,30.74747048437062,36.53031001676226 -117.668,2024/06/13 13:48:32.1039,30.74747048437062,36.53031001676226 -117.913,2024/06/13 13:48:32.3489,30.74747048437062,36.53031001676226 -117.995,2024/06/13 13:48:32.4309,30.74747048437062,36.53031001676226 -118.16,2024/06/13 13:48:32.5959,30.74747048437062,36.53031001676226 -118.406,2024/06/13 13:48:32.8419,30.74747048437062,36.53031001676226 -118.489,2024/06/13 13:48:32.9249,30.74747048437062,36.53031001676226 -118.653,2024/06/13 13:48:33.0889,30.74747048437062,36.53031001676226 -118.899,2024/06/13 13:48:33.3349,30.74747048437062,36.53031001676226 -119.146,2024/06/13 13:48:33.5819,30.74747048437062,36.53031001676226 -119.227,2024/06/13 13:48:33.6629,30.74747048437062,36.53031001676226 -119.391,2024/06/13 13:48:33.8269,30.74747048437062,36.53031001676226 -119.638,2024/06/13 13:48:34.0739,30.74747048437062,36.53031001676226 -119.884,2024/06/13 13:48:34.3199,30.74747048437062,36.53031001676226 -119.966,2024/06/13 13:48:34.4019,30.74747048437062,36.53031001676226 -120.131,2024/06/13 13:48:34.5669,30.74747048437062,36.53031001676226 -120.377,2024/06/13 13:48:34.8129,30.74747048437062,36.53031001676226 -120.623,2024/06/13 13:48:35.0589,30.74747048437062,36.53031001676226 -120.705,2024/06/13 13:48:35.1409,30.74747048437062,36.53031001676226 -120.869,2024/06/13 13:48:35.3049,30.74747048437062,36.53031001676226 -121.115,2024/06/13 13:48:35.5509,30.74747048437062,36.53031001676226 -121.198,2024/06/13 13:48:35.6339,30.74747048437062,36.53031001676226 -121.362,2024/06/13 13:48:35.7979,30.74747048437062,36.53031001676226 -121.608,2024/06/13 13:48:36.0439,30.74747048437062,36.53031001676226 -121.854,2024/06/13 13:48:36.2899,30.74747048437062,36.53031001676226 -121.937,2024/06/13 13:48:36.3729,30.74747048437062,36.53031001676226 -122.101,2024/06/13 13:48:36.5369,30.74747048437062,36.53031001676226 -122.347,2024/06/13 13:48:36.7829,30.74747048437062,36.53031001676226 -122.593,2024/06/13 13:48:37.0289,30.74747048437062,36.53031001676226 -122.839,2024/06/13 13:48:37.2749,30.74747048437062,36.53031001676226 -122.921,2024/06/13 13:48:37.3569,30.74747048437062,36.53031001676226 -123.085,2024/06/13 13:48:37.5209,30.74747048437062,36.53031001676226 -123.167,2024/06/13 13:48:37.6029,30.74747048437062,36.53031001676226 -123.332,2024/06/13 13:48:37.7679,30.74747048437062,36.53031001676226 -123.578,2024/06/13 13:48:38.0139,30.74747048437062,36.53031001676226 -123.825,2024/06/13 13:48:38.2609,30.74747048437062,36.53031001676226 -123.906,2024/06/13 13:48:38.3419,30.74747048437062,36.53031001676226 -124.07,2024/06/13 13:48:38.5059,30.74747048437062,36.53031001676226 -124.645,2024/06/13 13:48:39.0809,30.74747048437062,36.53031001676226 -124.81,2024/06/13 13:48:39.2459,30.74747048437062,36.53031001676226 -125.138,2024/06/13 13:48:39.5739,30.74747048437062,36.53031001676226 -125.548,2024/06/13 13:48:39.9839,30.74747048437062,36.53031001676226 -125.795,2024/06/13 13:48:40.2309,30.74747048437062,36.53031001676226 -125.876,2024/06/13 13:48:40.3119,30.74747048437062,36.53031001676226 -126.041,2024/06/13 13:48:40.4769,30.74747048437062,36.53031001676226 -126.287,2024/06/13 13:48:40.7229,30.74747048437062,36.53031001676226 -126.534,2024/06/13 13:48:40.9699,30.74747048437062,36.53031001676226 -126.78,2024/06/13 13:48:41.2159,30.74747048437062,36.53031001676226 -126.862,2024/06/13 13:48:41.2979,30.74747048437062,36.53031001676226 -127.026,2024/06/13 13:48:41.4619,30.74747048437062,36.53031001676226 -127.272,2024/06/13 13:48:41.7079,30.74747048437062,36.53031001676226 -127.354,2024/06/13 13:48:41.7899,30.74747048437062,36.53031001676226 -127.519,2024/06/13 13:48:41.9549,30.74747048437062,36.53031001676226 -127.765,2024/06/13 13:48:42.2009,30.74747048437062,36.53031001676226 -127.846,2024/06/13 13:48:42.2819,30.74747048437062,36.53031001676226 -128.011,2024/06/13 13:48:42.4469,30.74747048437062,36.53031001676226 -128.258,2024/06/13 13:48:42.6939,30.74747048437062,36.53031001676226 -128.504,2024/06/13 13:48:42.9399,30.74747048437062,36.53031001676226 -128.586,2024/06/13 13:48:43.0219,30.74747048437062,36.53031001676226 -128.751,2024/06/13 13:48:43.1869,30.74747048437062,36.53031001676226 -128.996,2024/06/13 13:48:43.4319,30.74747048437062,36.53031001676226 -129.243,2024/06/13 13:48:43.6789,30.74747048437062,36.53031001676226 -129.325,2024/06/13 13:48:43.7609,30.74747048437062,36.53031001676226 -129.489,2024/06/13 13:48:43.9249,30.74747048437062,36.53031001676226 -129.735,2024/06/13 13:48:44.1709,30.74747048437062,36.53031001676226 -129.817,2024/06/13 13:48:44.2529,30.74747048437062,36.53031001676226 -129.982,2024/06/13 13:48:44.4179,30.74747048437062,36.53031001676226 -130.228,2024/06/13 13:48:44.6639,30.74747048437062,36.53031001676226 -130.474,2024/06/13 13:48:44.9099,30.74747048437062,36.53031001676226 -130.556,2024/06/13 13:48:44.9919,30.74747048437062,36.53031001676226 -131.048,2024/06/13 13:48:45.4839,30.74747048437062,36.53031001676226 -131.213,2024/06/13 13:48:45.6489,30.74747048437062,36.53031001676226 -131.459,2024/06/13 13:48:45.8949,30.74747048437062,36.53031001676226 -131.705,2024/06/13 13:48:46.1409,30.74747048437062,36.53031001676226 -131.787,2024/06/13 13:48:46.2229,30.74747048437062,36.53031001676226 -131.952,2024/06/13 13:48:46.3879,30.74747048437062,36.53031001676226 -132.198,2024/06/13 13:48:46.6339,30.74747048437062,36.53031001676226 -132.445,2024/06/13 13:48:46.8809,30.74747048437062,36.53031001676226 -132.526,2024/06/13 13:48:46.9619,30.74747048437062,36.53031001676226 -132.69,2024/06/13 13:48:47.1259,30.74747048437062,36.53031001676226 -132.937,2024/06/13 13:48:47.3729,30.74747048437062,36.53031001676226 -133.018,2024/06/13 13:48:47.4539,30.74747048437062,36.53031001676226 -133.183,2024/06/13 13:48:47.6189,30.74747048437062,36.53031001676226 -133.429,2024/06/13 13:48:47.8649,30.74747048437062,36.53031001676226 -133.511,2024/06/13 13:48:47.9469,30.74747048437062,36.53031001676226 -133.675,2024/06/13 13:48:48.1109,30.74747048437062,36.53031001676226 -133.922,2024/06/13 13:48:48.3579,30.74747048437062,36.53031001676226 -134.168,2024/06/13 13:48:48.6039,30.74747048437062,36.53031001676226 -134.25,2024/06/13 13:48:48.6859,30.74747048437062,36.53031001676226 -134.414,2024/06/13 13:48:48.8499,30.74747048437062,36.53031001676226 -134.661,2024/06/13 13:48:49.0969,30.74747048437062,36.53031001676226 -134.907,2024/06/13 13:48:49.3429,30.74747048437062,36.53031001676226 -134.989,2024/06/13 13:48:49.4249,30.74747048437062,36.53031001676226 -135.153,2024/06/13 13:48:49.5889,30.74747048437062,36.53031001676226 -135.4,2024/06/13 13:48:49.8359,30.74747048437062,36.53031001676226 -135.481,2024/06/13 13:48:49.9169,30.74747048437062,36.53031001676226 -135.646,2024/06/13 13:48:50.0819,30.74747048437062,36.53031001676226 -135.892,2024/06/13 13:48:50.3279,30.74747048437062,36.53031001676226 -136.139,2024/06/13 13:48:50.5749,30.74747048437062,36.53031001676226 -136.384,2024/06/13 13:48:50.8199,30.74747048437062,36.53031001676226 -136.466,2024/06/13 13:48:50.9019,30.74747048437062,36.53031001676226 -136.712,2024/06/13 13:48:51.1479,30.74747048437062,36.53031001676226 -137.124,2024/06/13 13:48:51.5599,30.74747048437062,36.53031001676226 -137.369,2024/06/13 13:48:51.8049,30.74747048437062,36.53031001676226 -137.451,2024/06/13 13:48:51.8869,30.74747048437062,36.53031001676226 -137.616,2024/06/13 13:48:52.0519,30.74747048437062,36.53031001676226 -137.863,2024/06/13 13:48:52.2989,30.74747048437062,36.53031001676226 -138.109,2024/06/13 13:48:52.5449,30.74747048437062,36.53031001676226 -138.19,2024/06/13 13:48:52.6259,30.74747048437062,36.53031001676226 -138.355,2024/06/13 13:48:52.7909,30.74747048437062,36.53031001676226 -138.601,2024/06/13 13:48:53.0369,30.74747048437062,36.53031001676226 -138.682,2024/06/13 13:48:53.1179,30.74747048437062,36.53031001676226 -138.847,2024/06/13 13:48:53.2829,30.74747048437062,36.53031001676226 -139.094,2024/06/13 13:48:53.5299,30.74747048437062,36.53031001676226 -139.34,2024/06/13 13:48:53.7759,30.74747048437062,36.53031001676226 -139.422,2024/06/13 13:48:53.8579,30.74747048437062,36.53031001676226 -139.586,2024/06/13 13:48:54.0219,30.74747048437062,36.53031001676226 -139.832,2024/06/13 13:48:54.2679,30.74747048437062,36.53031001676226 -139.914,2024/06/13 13:48:54.3499,30.74747048437062,36.53031001676226 -140.08,2024/06/13 13:48:54.5159,30.74747048437062,36.53031001676226 -140.325,2024/06/13 13:48:54.7609,30.74747048437062,36.53031001676226 -140.572,2024/06/13 13:48:55.0079,30.74747048437062,36.53031001676226 -140.652,2024/06/13 13:48:55.0879,30.74747048437062,36.53031001676226 -140.818,2024/06/13 13:48:55.2539,30.74747048437062,36.53031001676226 -141.146,2024/06/13 13:48:55.5819,30.74747048437062,36.53031001676226 -141.557,2024/06/13 13:48:55.9929,30.74747048437062,36.53031001676226 -141.803,2024/06/13 13:48:56.2389,30.74747048437062,36.53031001676226 -141.884,2024/06/13 13:48:56.3199,30.74747048437062,36.53031001676226 -142.049,2024/06/13 13:48:56.4849,30.74747048437062,36.53031001676226 -142.295,2024/06/13 13:48:56.7309,30.74747048437062,36.53031001676226 -142.377,2024/06/13 13:48:56.8129,30.74747048437062,36.53031001676226 -142.542,2024/06/13 13:48:56.9779,30.74747048437062,36.53031001676226 -142.788,2024/06/13 13:48:57.2239,30.74747048437062,36.53031001676226 -143.034,2024/06/13 13:48:57.4699,30.74747048437062,36.53031001676226 -143.281,2024/06/13 13:48:57.7169,30.74747048437062,36.53031001676226 -143.361,2024/06/13 13:48:57.7969,30.74747048437062,36.53031001676226 -143.527,2024/06/13 13:48:57.9629,30.74747048437062,36.53031001676226 -143.773,2024/06/13 13:48:58.2089,30.74747048437062,36.53031001676226 -143.855,2024/06/13 13:48:58.2909,30.74747048437062,36.53031001676226 -144.019,2024/06/13 13:48:58.4549,30.74747048437062,36.53031001676226 -144.266,2024/06/13 13:48:58.7019,30.74747048437062,36.53031001676226 -144.347,2024/06/13 13:48:58.7829,30.74747048437062,36.53031001676226 -144.512,2024/06/13 13:48:58.9479,30.74747048437062,36.53031001676226 -144.758,2024/06/13 13:48:59.1939,30.74747048437062,36.53031001676226 -145.005,2024/06/13 13:48:59.4409,30.74747048437062,36.53031001676226 -145.086,2024/06/13 13:48:59.5219,30.74747048437062,36.53031001676226 -145.25,2024/06/13 13:48:59.6859,30.74747048437062,36.53031001676226 -145.497,2024/06/13 13:48:59.9329,30.74747048437062,36.53031001676226 -145.743,2024/06/13 13:49:00.1789,30.74747048437062,36.53031001676226 -145.825,2024/06/13 13:49:00.2609,30.74747048437062,36.53031001676226 -145.99,2024/06/13 13:49:00.4259,30.74747048437062,36.53031001676226 -146.235,2024/06/13 13:49:00.6709,30.74747048437062,36.53031001676226 -146.317,2024/06/13 13:49:00.7529,30.74747048437062,36.53031001676226 -146.482,2024/06/13 13:49:00.9179,30.74747048437062,36.53031001676226 -146.728,2024/06/13 13:49:01.1639,30.74747048437062,36.53031001676226 -146.974,2024/06/13 13:49:01.4099,30.74747048437062,36.53031001676226 -147.056,2024/06/13 13:49:01.4919,30.74747048437062,36.53031001676226 -147.221,2024/06/13 13:49:01.6569,30.74747048437062,36.53031001676226 -147.467,2024/06/13 13:49:01.9029,30.74747048437062,36.53031001676226 -147.713,2024/06/13 13:49:02.1489,30.74747048437062,36.53031001676226 -147.795,2024/06/13 13:49:02.2309,30.74747048437062,36.53031001676226 -147.96,2024/06/13 13:49:02.3959,30.74747048437062,36.53031001676226 -148.205,2024/06/13 13:49:02.6409,30.74747048437062,36.53031001676226 -148.287,2024/06/13 13:49:02.7229,30.74747048437062,36.53031001676226 -148.452,2024/06/13 13:49:02.8879,30.74747048437062,36.53031001676226 -148.698,2024/06/13 13:49:03.1339,30.74747048437062,36.53031001676226 -148.944,2024/06/13 13:49:03.3799,30.74747048437062,36.53031001676226 -149.026,2024/06/13 13:49:03.4619,30.74747048437062,36.53031001676226 -149.191,2024/06/13 13:49:03.6269,30.74747048437062,36.53031001676226 -149.437,2024/06/13 13:49:03.8729,30.74747048437062,36.53031001676226 -149.519,2024/06/13 13:49:03.9549,30.74747048437062,36.53031001676226 -150.176,2024/06/13 13:49:04.6119,30.74747048437062,36.53031001676226 -150.257,2024/06/13 13:49:04.6929,30.74747048437062,36.53031001676226 -150.423,2024/06/13 13:49:04.8589,30.74747048437062,36.53031001676226 -150.669,2024/06/13 13:49:05.1049,30.74747048437062,36.53031001676226 -150.75,2024/06/13 13:49:05.1859,30.74747048437062,36.53031001676226 -150.915,2024/06/13 13:49:05.3509,30.74747048437062,36.53031001676226 -151.161,2024/06/13 13:49:05.5969,30.74747048437062,36.53031001676226 -151.407,2024/06/13 13:49:05.8429,30.74747048437062,36.53031001676226 -151.489,2024/06/13 13:49:05.9249,30.74747048437062,36.53031001676226 -151.653,2024/06/13 13:49:06.0889,30.74747048437062,36.53031001676226 -151.9,2024/06/13 13:49:06.3359,30.74747048437062,36.53031001676226 -151.981,2024/06/13 13:49:06.4169,30.74747048437062,36.53031001676226 -152.146,2024/06/13 13:49:06.5819,30.74747048437062,36.53031001676226 -152.392,2024/06/13 13:49:06.8279,30.74747048437062,36.53031001676226 -152.639,2024/06/13 13:49:07.0749,30.74747048437062,36.53031001676226 -152.72,2024/06/13 13:49:07.1559,30.74747048437062,36.53031001676226 -152.885,2024/06/13 13:49:07.3209,30.74747048437062,36.53031001676226 -153.132,2024/06/13 13:49:07.5679,30.74747048437062,36.53031001676226 -153.213,2024/06/13 13:49:07.6489,30.74747048437062,36.53031001676226 -153.87,2024/06/13 13:49:08.3059,30.74747048437062,36.53031001676226 -153.951,2024/06/13 13:49:08.3869,30.74747048437062,36.53031001676226 -154.116,2024/06/13 13:49:08.5519,30.74747048437062,36.53031001676226 -154.363,2024/06/13 13:49:08.7989,30.74747048437062,36.53031001676226 -154.444,2024/06/13 13:49:08.8799,30.74747048437062,36.53031001676226 -154.609,2024/06/13 13:49:09.0449,30.74747048437062,36.53031001676226 -154.856,2024/06/13 13:49:09.2919,30.74747048437062,36.53031001676226 -155.101,2024/06/13 13:49:09.5369,30.74747048437062,36.53031001676226 -155.183,2024/06/13 13:49:09.6189,30.74747048437062,36.53031001676226 -155.348,2024/06/13 13:49:09.7839,30.74747048437062,36.53031001676226 -155.594,2024/06/13 13:49:10.0299,30.74747048437062,36.53031001676226 -155.676,2024/06/13 13:49:10.1119,30.74747048437062,36.53031001676226 -155.841,2024/06/13 13:49:10.2769,30.74747048437062,36.53031001676226 -156.086,2024/06/13 13:49:10.5219,30.74747048437062,36.53031001676226 -156.332,2024/06/13 13:49:10.7679,30.74747048437062,36.53031001676226 -156.414,2024/06/13 13:49:10.8499,30.74747048437062,36.53031001676226 -156.579,2024/06/13 13:49:11.0149,30.74747048437062,36.53031001676226 -156.825,2024/06/13 13:49:11.2609,30.74747048437062,36.53031001676226 -156.907,2024/06/13 13:49:11.3429,30.74747048437062,36.53031001676226 -157.072,2024/06/13 13:49:11.5079,30.74747048437062,36.53031001676226 -157.318,2024/06/13 13:49:11.7539,30.74747048437062,36.53031001676226 -157.564,2024/06/13 13:49:11.9999,30.74747048437062,36.53031001676226 -157.811,2024/06/13 13:49:12.2469,30.74747048437062,36.53031001676226 -157.892,2024/06/13 13:49:12.3279,30.74747048437062,36.53031001676226 -158.057,2024/06/13 13:49:12.4929,30.74747048437062,36.53031001676226 -158.138,2024/06/13 13:49:12.5739,30.74747048437062,36.53031001676226 -158.303,2024/06/13 13:49:12.7389,30.74747048437062,36.53031001676226 -158.549,2024/06/13 13:49:12.9849,30.74747048437062,36.53031001676226 -158.796,2024/06/13 13:49:13.2319,30.74747048437062,36.53031001676226 -158.878,2024/06/13 13:49:13.3139,30.74747048437062,36.53031001676226 -159.042,2024/06/13 13:49:13.4779,30.74747048437062,36.53031001676226 -159.288,2024/06/13 13:49:13.7239,30.74747048437062,36.53031001676226 -159.534,2024/06/13 13:49:13.9699,30.74747048437062,36.53031001676226 -159.616,2024/06/13 13:49:14.0519,30.74747048437062,36.53031001676226 -159.781,2024/06/13 13:49:14.2169,30.74747048437062,36.53031001676226 -160.027,2024/06/13 13:49:14.4629,30.74747048437062,36.53031001676226 -160.108,2024/06/13 13:49:14.5439,30.74747048437062,36.53031001676226 -160.274,2024/06/13 13:49:14.7099,30.74747048437062,36.53031001676226 -160.519,2024/06/13 13:49:14.9549,30.74747048437062,36.53031001676226 -160.601,2024/06/13 13:49:15.0369,30.74747048437062,36.53031001676226 -160.765,2024/06/13 13:49:15.2009,30.74747048437062,36.53031001676226 -161.012,2024/06/13 13:49:15.4479,30.74747048437062,36.53031001676226 -161.096,2024/06/13 13:49:15.5319,30.74747048437062,36.53031001676226 -161.259,2024/06/13 13:49:15.6949,30.74747048437062,36.53031001676226 -161.505,2024/06/13 13:49:15.9409,30.74747048437062,36.53031001676226 -161.751,2024/06/13 13:49:16.1869,30.74747048437062,36.53031001676226 -161.832,2024/06/13 13:49:16.2679,30.74747048437062,36.53031001676226 -161.997,2024/06/13 13:49:16.4329,30.74747048437062,36.53031001676226 -162.244,2024/06/13 13:49:16.6799,30.74747048437062,36.53031001676226 -162.324,2024/06/13 13:49:16.7599,30.74747048437062,36.53031001676226 -162.49,2024/06/13 13:49:16.9259,30.74747048437062,36.53031001676226 -163.064,2024/06/13 13:49:17.4999,30.74747048437062,36.53031001676226 -163.229,2024/06/13 13:49:17.6649,30.74747048437062,36.53031001676226 -163.475,2024/06/13 13:49:17.9109,30.74747048437062,36.53031001676226 -163.556,2024/06/13 13:49:17.9919,30.74747048437062,36.53031001676226 -163.721,2024/06/13 13:49:18.1569,30.74747048437062,36.53031001676226 -163.968,2024/06/13 13:49:18.4039,30.74747048437062,36.53031001676226 -164.214,2024/06/13 13:49:18.6499,30.74747048437062,36.53031001676226 -164.295,2024/06/13 13:49:18.7309,30.74747048437062,36.53031001676226 -164.46,2024/06/13 13:49:18.8959,30.74747048437062,36.53031001676226 -164.706,2024/06/13 13:49:19.1419,30.74747048437062,36.53031001676226 -164.953,2024/06/13 13:49:19.3889,30.74747048437062,36.53031001676226 -165.033,2024/06/13 13:49:19.4689,30.74747048437062,36.53031001676226 -165.199,2024/06/13 13:49:19.6349,30.74747048437062,36.53031001676226 -165.446,2024/06/13 13:49:19.8819,30.74747048437062,36.53031001676226 -165.527,2024/06/13 13:49:19.9629,30.74747048437062,36.53031001676226 -165.691,2024/06/13 13:49:20.1269,30.74747048437062,36.53031001676226 -165.938,2024/06/13 13:49:20.3739,30.74747048437062,36.53031001676226 -166.184,2024/06/13 13:49:20.6199,30.74747048437062,36.53031001676226 -166.266,2024/06/13 13:49:20.7019,30.74747048437062,36.53031001676226 -166.43,2024/06/13 13:49:20.8659,30.74747048437062,36.53031001676226 -166.677,2024/06/13 13:49:21.1129,30.74747048437062,36.53031001676226 -166.923,2024/06/13 13:49:21.3589,30.74747048437062,36.53031001676226 -167.004,2024/06/13 13:49:21.4399,30.74747048437062,36.53031001676226 -167.169,2024/06/13 13:49:21.6049,30.74747048437062,36.53031001676226 -167.415,2024/06/13 13:49:21.8509,30.74747048437062,36.53031001676226 -167.662,2024/06/13 13:49:22.0979,30.74747048437062,36.53031001676226 -167.742,2024/06/13 13:49:22.1779,30.74747048437062,36.53031001676226 -167.908,2024/06/13 13:49:22.3439,30.74747048437062,36.53031001676226 -168.154,2024/06/13 13:49:22.5899,30.74747048437062,36.53031001676226 -168.236,2024/06/13 13:49:22.6719,30.74747048437062,36.53031001676226 -168.401,2024/06/13 13:49:22.8369,30.74747048437062,36.53031001676226 -168.974,2024/06/13 13:49:23.4099,30.74747048437062,36.53031001676226 -169.14,2024/06/13 13:49:23.5759,30.74747048437062,36.53031001676226 -169.385,2024/06/13 13:49:23.8209,30.74747048437062,36.53031001676226 -169.632,2024/06/13 13:49:24.0679,30.74747048437062,36.53031001676226 -169.878,2024/06/13 13:49:24.3139,30.74747048437062,36.53031001676226 -169.959,2024/06/13 13:49:24.3949,30.74747048437062,36.53031001676226 -170.124,2024/06/13 13:49:24.5599,30.74747048437062,36.53031001676226 -170.206,2024/06/13 13:49:24.6419,30.74747048437062,36.53031001676226 -170.37,2024/06/13 13:49:24.8059,30.74747048437062,36.53031001676226 -170.617,2024/06/13 13:49:25.0529,30.74747048437062,36.53031001676226 -170.698,2024/06/13 13:49:25.1339,30.74747048437062,36.53031001676226 -170.863,2024/06/13 13:49:25.2989,30.74747048437062,36.53031001676226 -171.109,2024/06/13 13:49:25.5449,30.74747048437062,36.53031001676226 -171.356,2024/06/13 13:49:25.7919,30.74747048437062,36.53031001676226 -171.437,2024/06/13 13:49:25.8729,30.74747048437062,36.53031001676226 -171.602,2024/06/13 13:49:26.0379,30.74747048437062,36.53031001676226 -171.848,2024/06/13 13:49:26.2839,30.74747048437062,36.53031001676226 -171.93,2024/06/13 13:49:26.3659,30.74747048437062,36.53031001676226 -172.095,2024/06/13 13:49:26.5309,30.74747048437062,36.53031001676226 -172.341,2024/06/13 13:49:26.7769,30.74747048437062,36.53031001676226 -172.587,2024/06/13 13:49:27.0229,30.74747048437062,36.53031001676226 -172.669,2024/06/13 13:49:27.1049,30.74747048437062,36.53031001676226 -172.833,2024/06/13 13:49:27.2689,30.74747048437062,36.53031001676226 -173.079,2024/06/13 13:49:27.5149,30.74747048437062,36.53031001676226 -173.161,2024/06/13 13:49:27.5969,30.74747048437062,36.53031001676226 -173.326,2024/06/13 13:49:27.7619,30.74747048437062,36.53031001676226 -173.572,2024/06/13 13:49:28.0079,30.74747048437062,36.53031001676226 -173.654,2024/06/13 13:49:28.0899,30.74747048437062,36.53031001676226 -173.818,2024/06/13 13:49:28.2539,30.74747048437062,36.53031001676226 -174.065,2024/06/13 13:49:28.5009,30.74747048437062,36.53031001676226 -174.311,2024/06/13 13:49:28.7469,30.74747048437062,36.53031001676226 -174.392,2024/06/13 13:49:28.8279,30.74747048437062,36.53031001676226 -174.557,2024/06/13 13:49:28.9929,30.74747048437062,36.53031001676226 -174.803,2024/06/13 13:49:29.2389,30.74747048437062,36.53031001676226 -174.884,2024/06/13 13:49:29.3199,30.74747048437062,36.53031001676226 -175.05,2024/06/13 13:49:29.4859,30.74747048437062,36.53031001676226 -175.296,2024/06/13 13:49:29.7319,30.74747048437062,36.53031001676226 -175.377,2024/06/13 13:49:29.8129,30.74747048437062,36.53031001676226 -175.542,2024/06/13 13:49:29.9779,30.74747048437062,36.53031001676226 -175.789,2024/06/13 13:49:30.2249,30.74747048437062,36.53031001676226 -176.035,2024/06/13 13:49:30.4709,30.74747048437062,36.53031001676226 -176.116,2024/06/13 13:49:30.5519,30.74747048437062,36.53031001676226 -176.281,2024/06/13 13:49:30.7169,30.74747048437062,36.53031001676226 -176.527,2024/06/13 13:49:30.9629,30.74747048437062,36.53031001676226 -176.609,2024/06/13 13:49:31.0449,30.74747048437062,36.53031001676226 -176.774,2024/06/13 13:49:31.2099,30.74747048437062,36.53031001676226 -177.02,2024/06/13 13:49:31.4559,30.74747048437062,36.53031001676226 -177.266,2024/06/13 13:49:31.7019,30.74747048437062,36.53031001676226 -177.348,2024/06/13 13:49:31.7839,30.74747048437062,36.53031001676226 -177.512,2024/06/13 13:49:31.9479,30.74747048437062,36.53031001676226 -177.759,2024/06/13 13:49:32.1949,30.74747048437062,36.53031001676226 -178.005,2024/06/13 13:49:32.4409,30.74747048437062,36.53031001676226 -178.086,2024/06/13 13:49:32.5219,30.74747048437062,36.53031001676226 -178.252,2024/06/13 13:49:32.6879,30.74747048437062,36.53031001676226 -178.498,2024/06/13 13:49:32.9339,30.74747048437062,36.53031001676226 -178.578,2024/06/13 13:49:33.0139,30.74747048437062,36.53031001676226 -178.744,2024/06/13 13:49:33.1799,30.74747048437062,36.53031001676226 -178.991,2024/06/13 13:49:33.4269,30.74747048437062,36.53031001676226 -179.071,2024/06/13 13:49:33.5069,30.74747048437062,36.53031001676226 -179.237,2024/06/13 13:49:33.6729,30.74747048437062,36.53031001676226 -179.483,2024/06/13 13:49:33.9189,30.74747048437062,36.53031001676226 -179.729,2024/06/13 13:49:34.1649,30.74747048437062,36.53031001676226 -179.81,2024/06/13 13:49:34.2459,30.74747048437062,36.53031001676226 -179.975,2024/06/13 13:49:34.4109,30.74747048437062,36.53031001676226 -180.222,2024/06/13 13:49:34.6579,30.74747048437062,36.53031001676226 -180.302,2024/06/13 13:49:34.7379,30.74747048437062,36.53031001676226 -180.468,2024/06/13 13:49:34.9039,30.74747048437062,36.53031001676226 -180.714,2024/06/13 13:49:35.1499,30.74747048437062,36.53031001676226 -180.96,2024/06/13 13:49:35.3959,30.74747048437062,36.53031001676226 -181.206,2024/06/13 13:49:35.6419,30.74747048437062,36.53031001676226 -181.287,2024/06/13 13:49:35.7229,30.74747048437062,36.53031001676226 -181.453,2024/06/13 13:49:35.8889,30.74747048437062,36.53031001676226 -181.534,2024/06/13 13:49:35.9699,30.74747048437062,36.53031001676226 -182.191,2024/06/13 13:49:36.6269,30.74747048437062,36.53031001676226 -182.273,2024/06/13 13:49:36.7089,30.74747048437062,36.53031001676226 -182.438,2024/06/13 13:49:36.8739,30.74747048437062,36.53031001676226 -182.685,2024/06/13 13:49:37.1209,30.74747048437062,36.53031001676226 -182.765,2024/06/13 13:49:37.2009,30.74747048437062,36.53031001676226 -182.93,2024/06/13 13:49:37.3659,30.74747048437062,36.53031001676226 -183.177,2024/06/13 13:49:37.6129,30.74747048437062,36.53031001676226 -183.423,2024/06/13 13:49:37.8589,30.74747048437062,36.53031001676226 -183.504,2024/06/13 13:49:37.9399,30.74747048437062,36.53031001676226 -183.67,2024/06/13 13:49:38.1059,30.74747048437062,36.53031001676226 -183.915,2024/06/13 13:49:38.3509,30.74747048437062,36.53031001676226 -183.997,2024/06/13 13:49:38.4329,30.74747048437062,36.53031001676226 -184.162,2024/06/13 13:49:38.5979,30.74747048437062,36.53031001676226 -184.408,2024/06/13 13:49:38.8439,30.74747048437062,36.53031001676226 -184.655,2024/06/13 13:49:39.0909,30.74747048437062,36.53031001676226 -184.735,2024/06/13 13:49:39.1709,30.74747048437062,36.53031001676226 -184.901,2024/06/13 13:49:39.3369,30.74747048437062,36.53031001676226 -185.147,2024/06/13 13:49:39.5829,30.74747048437062,36.53031001676226 -185.228,2024/06/13 13:49:39.6639,30.74747048437062,36.53031001676226 -185.393,2024/06/13 13:49:39.8289,30.74747048437062,36.53031001676226 -185.64,2024/06/13 13:49:40.0759,30.74747048437062,36.53031001676226 -185.886,2024/06/13 13:49:40.3219,30.74747048437062,36.53031001676226 -185.966,2024/06/13 13:49:40.4019,30.74747048437062,36.53031001676226 -186.133,2024/06/13 13:49:40.5689,30.74747048437062,36.53031001676226 -186.378,2024/06/13 13:49:40.8139,30.74747048437062,36.53031001676226 -186.625,2024/06/13 13:49:41.0609,30.74747048437062,36.53031001676226 -186.706,2024/06/13 13:49:41.1419,30.74747048437062,36.53031001676226 -186.871,2024/06/13 13:49:41.3069,30.74747048437062,36.53031001676226 -187.117,2024/06/13 13:49:41.5529,30.74747048437062,36.53031001676226 -187.199,2024/06/13 13:49:41.6349,30.74747048437062,36.53031001676226 -187.363,2024/06/13 13:49:41.7989,30.74747048437062,36.53031001676226 -187.61,2024/06/13 13:49:42.0459,30.74747048437062,36.53031001676226 -187.856,2024/06/13 13:49:42.2919,30.74747048437062,36.53031001676226 -187.937,2024/06/13 13:49:42.3729,30.74747048437062,36.53031001676226 -188.102,2024/06/13 13:49:42.5379,30.74747048437062,36.53031001676226 -188.348,2024/06/13 13:49:42.7839,30.74747048437062,36.53031001676226 -188.595,2024/06/13 13:49:43.0309,30.74747048437062,36.53031001676226 -188.676,2024/06/13 13:49:43.1119,30.74747048437062,36.53031001676226 -188.843,2024/06/13 13:49:43.2789,30.74747048437062,36.53031001676226 -189.087,2024/06/13 13:49:43.5229,30.74747048437062,36.53031001676226 -189.169,2024/06/13 13:49:43.6049,30.74747048437062,36.53031001676226 -189.333,2024/06/13 13:49:43.7689,30.74747048437062,36.53031001676226 -189.58,2024/06/13 13:49:44.0159,30.74747048437062,36.53031001676226 -189.826,2024/06/13 13:49:44.2619,30.74747048437062,36.53031001676226 -189.907,2024/06/13 13:49:44.3429,30.74747048437062,36.53031001676226 -190.073,2024/06/13 13:49:44.5089,30.74747048437062,36.53031001676226 -190.4,2024/06/13 13:49:44.8359,30.74747048437062,36.53031001676226 -190.812,2024/06/13 13:49:45.2479,30.74747048437062,36.53031001676226 -191.058,2024/06/13 13:49:45.4939,30.74747048437062,36.53031001676226 -191.139,2024/06/13 13:49:45.5749,30.74747048437062,36.53031001676226 -191.304,2024/06/13 13:49:45.7399,30.74747048437062,36.53031001676226 -191.55,2024/06/13 13:49:45.9859,30.74747048437062,36.53031001676226 -191.796,2024/06/13 13:49:46.2319,30.74747048437062,36.53031001676226 -191.877,2024/06/13 13:49:46.3129,30.74747048437062,36.53031001676226 -192.043,2024/06/13 13:49:46.4789,30.74747048437062,36.53031001676226 -192.289,2024/06/13 13:49:46.7249,30.74747048437062,36.53031001676226 -192.535,2024/06/13 13:49:46.9709,30.74747048437062,36.53031001676226 -192.617,2024/06/13 13:49:47.0529,30.74747048437062,36.53031001676226 -192.782,2024/06/13 13:49:47.2179,30.74747048437062,36.53031001676226 -192.863,2024/06/13 13:49:47.2989,30.74747048437062,36.53031001676226 -193.028,2024/06/13 13:49:47.4639,30.74747048437062,36.53031001676226 -193.274,2024/06/13 13:49:47.7099,30.74747048437062,36.53031001676226 -193.52,2024/06/13 13:49:47.9559,30.74747048437062,36.53031001676226 -193.601,2024/06/13 13:49:48.0369,30.74747048437062,36.53031001676226 -193.767,2024/06/13 13:49:48.2029,30.74747048437062,36.53031001676226 -194.014,2024/06/13 13:49:48.4499,30.74747048437062,36.53031001676226 -194.094,2024/06/13 13:49:48.5299,30.74747048437062,36.53031001676226 -194.259,2024/06/13 13:49:48.6949,30.74747048437062,36.53031001676226 -194.506,2024/06/13 13:49:48.9419,30.74747048437062,36.53031001676226 -194.752,2024/06/13 13:49:49.1879,30.74747048437062,36.53031001676226 -194.833,2024/06/13 13:49:49.2689,30.74747048437062,36.53031001676226 -194.998,2024/06/13 13:49:49.4339,30.74747048437062,36.53031001676226 -195.245,2024/06/13 13:49:49.6809,30.74747048437062,36.53031001676226 -195.491,2024/06/13 13:49:49.9269,30.74747048437062,36.53031001676226 -195.572,2024/06/13 13:49:50.0079,30.74747048437062,36.53031001676226 -195.737,2024/06/13 13:49:50.1729,30.74747048437062,36.53031001676226 -195.983,2024/06/13 13:49:50.4189,30.74747048437062,36.53031001676226 -196.064,2024/06/13 13:49:50.4999,30.74747048437062,36.53031001676226 -196.23,2024/06/13 13:49:50.6659,30.74747048437062,36.53031001676226 -196.476,2024/06/13 13:49:50.9119,30.74747048437062,36.53031001676226 -196.723,2024/06/13 13:49:51.1589,30.74747048437062,36.53031001676226 -196.803,2024/06/13 13:49:51.2389,30.74747048437062,36.53031001676226 -196.968,2024/06/13 13:49:51.4039,30.74747048437062,36.53031001676226 -197.215,2024/06/13 13:49:51.6509,30.74747048437062,36.53031001676226 -197.296,2024/06/13 13:49:51.7319,30.74747048437062,36.53031001676226 -197.461,2024/06/13 13:49:51.8969,30.74747048437062,36.53031001676226 -197.707,2024/06/13 13:49:52.1429,30.74747048437062,36.53031001676226 -197.954,2024/06/13 13:49:52.3899,30.74747048437062,36.53031001676226 -198.034,2024/06/13 13:49:52.4699,30.74747048437062,36.53031001676226 -198.2,2024/06/13 13:49:52.6359,30.74747048437062,36.53031001676226 -198.446,2024/06/13 13:49:52.8819,30.74747048437062,36.53031001676226 -198.692,2024/06/13 13:49:53.1279,30.74747048437062,36.53031001676226 -198.773,2024/06/13 13:49:53.2089,30.74747048437062,36.53031001676226 -198.938,2024/06/13 13:49:53.3739,30.74747048437062,36.53031001676226 -199.185,2024/06/13 13:49:53.6209,30.74747048437062,36.53031001676226 -199.266,2024/06/13 13:49:53.7019,30.74747048437062,36.53031001676226 -199.431,2024/06/13 13:49:53.8669,30.74747048437062,36.53031001676226 -199.677,2024/06/13 13:49:54.1129,30.74747048437062,36.53031001676226 -199.924,2024/06/13 13:49:54.3599,30.74747048437062,36.53031001676226 -200.004,2024/06/13 13:49:54.4399,30.74747048437062,36.53031001676226 -200.17,2024/06/13 13:49:54.6059,30.74747048437062,36.53031001676226 -200.416,2024/06/13 13:49:54.8519,30.74747048437062,36.53031001676226 -200.497,2024/06/13 13:49:54.9329,30.74747048437062,36.53031001676226 -200.663,2024/06/13 13:49:55.0989,30.74747048437062,36.53031001676226 -200.909,2024/06/13 13:49:55.3449,30.74747048437062,36.53031001676226 -201.155,2024/06/13 13:49:55.5909,30.74747048437062,36.53031001676226 -201.401,2024/06/13 13:49:55.8369,30.74747048437062,36.53031001676226 -201.483,2024/06/13 13:49:55.9189,30.74747048437062,36.53031001676226 -201.648,2024/06/13 13:49:56.0839,30.74747048437062,36.53031001676226 -201.894,2024/06/13 13:49:56.3299,30.74747048437062,36.53031001676226 -201.975,2024/06/13 13:49:56.4109,30.74747048437062,36.53031001676226 -202.14,2024/06/13 13:49:56.5759,30.74747048437062,36.53031001676226 -202.386,2024/06/13 13:49:56.8219,30.74747048437062,36.53031001676226 -202.468,2024/06/13 13:49:56.9039,30.74747048437062,36.53031001676226 -202.96,2024/06/13 13:49:57.3959,30.74747048437062,36.53031001676226 -203.125,2024/06/13 13:49:57.5609,30.74747048437062,36.53031001676226 -203.371,2024/06/13 13:49:57.8069,30.74747048437062,36.53031001676226 -203.452,2024/06/13 13:49:57.8879,30.74747048437062,36.53031001676226 -203.618,2024/06/13 13:49:58.0539,30.74747048437062,36.53031001676226 -203.864,2024/06/13 13:49:58.2999,30.74747048437062,36.53031001676226 -204.11,2024/06/13 13:49:58.5459,30.74747048437062,36.53031001676226 -204.357,2024/06/13 13:49:58.7929,30.74747048437062,36.53031001676226 -204.437,2024/06/13 13:49:58.8729,30.74747048437062,36.53031001676226 -204.603,2024/06/13 13:49:59.0389,30.74747048437062,36.53031001676226 -204.849,2024/06/13 13:49:59.2849,30.74747048437062,36.53031001676226 -204.929,2024/06/13 13:49:59.3649,30.74747048437062,36.53031001676226 -205.095,2024/06/13 13:49:59.5309,30.74747048437062,36.53031001676226 -205.342,2024/06/13 13:49:59.7779,30.74747048437062,36.53031001676226 -205.588,2024/06/13 13:50:00.0239,30.74747048437062,36.53031001676226 -205.669,2024/06/13 13:50:00.1049,30.74747048437062,36.53031001676226 -205.834,2024/06/13 13:50:00.2699,30.74747048437062,36.53031001676226 -206.081,2024/06/13 13:50:00.5169,30.74747048437062,36.53031001676226 -206.326,2024/06/13 13:50:00.7619,30.74747048437062,36.53031001676226 -206.407,2024/06/13 13:50:00.8429,30.74747048437062,36.53031001676226 -206.573,2024/06/13 13:50:01.0089,30.74747048437062,36.53031001676226 -206.82,2024/06/13 13:50:01.2559,30.74747048437062,36.53031001676226 -206.9,2024/06/13 13:50:01.3359,30.74747048437062,36.53031001676226 -207.066,2024/06/13 13:50:01.5019,30.74747048437062,36.53031001676226 -207.312,2024/06/13 13:50:01.7479,30.74747048437062,36.53031001676226 -207.558,2024/06/13 13:50:01.9939,30.74747048437062,36.53031001676226 -207.639,2024/06/13 13:50:02.0749,30.74747048437062,36.53031001676226 -207.804,2024/06/13 13:50:02.2399,30.74747048437062,36.53031001676226 -208.052,2024/06/13 13:50:02.4879,30.74747048437062,36.53031001676226 -208.297,2024/06/13 13:50:02.7329,30.74747048437062,36.53031001676226 -208.378,2024/06/13 13:50:02.8139,30.74747048437062,36.53031001676226 -208.544,2024/06/13 13:50:02.9799,30.74747048437062,36.53031001676226 -208.789,2024/06/13 13:50:03.2249,30.74747048437062,36.53031001676226 -208.87,2024/06/13 13:50:03.3059,30.74747048437062,36.53031001676226 -209.036,2024/06/13 13:50:03.4719,30.74747048437062,36.53031001676226 -209.283,2024/06/13 13:50:03.7189,30.74747048437062,36.53031001676226 -209.528,2024/06/13 13:50:03.9639,30.74747048437062,36.53031001676226 -209.609,2024/06/13 13:50:04.0449,30.74747048437062,36.53031001676226 -209.775,2024/06/13 13:50:04.2109,30.74747048437062,36.53031001676226 -210.021,2024/06/13 13:50:04.4569,30.74747048437062,36.53031001676226 -210.267,2024/06/13 13:50:04.7029,30.74747048437062,36.53031001676226 -210.348,2024/06/13 13:50:04.7839,30.74747048437062,36.53031001676226 -210.514,2024/06/13 13:50:04.9499,30.74747048437062,36.53031001676226 -210.76,2024/06/13 13:50:05.1959,30.74747048437062,36.53031001676226 -211.006,2024/06/13 13:50:05.4419,30.74747048437062,36.53031001676226 -211.087,2024/06/13 13:50:05.5229,30.74747048437062,36.53031001676226 -211.252,2024/06/13 13:50:05.6879,30.74747048437062,36.53031001676226 -211.499,2024/06/13 13:50:05.9349,30.74747048437062,36.53031001676226 -211.745,2024/06/13 13:50:06.1809,30.74747048437062,36.53031001676226 -211.991,2024/06/13 13:50:06.4269,30.74747048437062,36.53031001676226 -212.072,2024/06/13 13:50:06.5079,30.74747048437062,36.53031001676226 -212.237,2024/06/13 13:50:06.6729,30.74747048437062,36.53031001676226 -212.484,2024/06/13 13:50:06.9199,30.74747048437062,36.53031001676226 -212.565,2024/06/13 13:50:07.0009,30.74747048437062,36.53031001676226 -212.73,2024/06/13 13:50:07.1659,30.74747048437062,36.53031001676226 -212.977,2024/06/13 13:50:07.4129,30.74747048437062,36.53031001676226 -213.222,2024/06/13 13:50:07.6579,30.74747048437062,36.53031001676226 -213.303,2024/06/13 13:50:07.7389,30.74747048437062,36.53031001676226 -213.469,2024/06/13 13:50:07.9049,30.74747048437062,36.53031001676226 -213.715,2024/06/13 13:50:08.1509,30.74747048437062,36.53031001676226 -213.795,2024/06/13 13:50:08.2309,30.74747048437062,36.53031001676226 -213.961,2024/06/13 13:50:08.3969,30.74747048437062,36.53031001676226 -214.208,2024/06/13 13:50:08.6439,30.74747048437062,36.53031001676226 -214.454,2024/06/13 13:50:08.8899,30.74747048437062,36.53031001676226 -214.534,2024/06/13 13:50:08.9699,30.74747048437062,36.53031001676226 -214.7,2024/06/13 13:50:09.1359,30.74747048437062,36.53031001676226 -214.947,2024/06/13 13:50:09.3829,30.74747048437062,36.53031001676226 -215.027,2024/06/13 13:50:09.4629,30.74747048437062,36.53031001676226 -215.193,2024/06/13 13:50:09.6289,30.74747048437062,36.53031001676226 -215.439,2024/06/13 13:50:09.8749,30.74747048437062,36.53031001676226 -215.685,2024/06/13 13:50:10.1209,30.74747048437062,36.53031001676226 -215.766,2024/06/13 13:50:10.2019,30.74747048437062,36.53031001676226 -215.931,2024/06/13 13:50:10.3669,30.74747048437062,36.53031001676226 -216.178,2024/06/13 13:50:10.6139,30.74747048437062,36.53031001676226 -216.424,2024/06/13 13:50:10.8599,30.74747048437062,36.53031001676226 -216.505,2024/06/13 13:50:10.9409,30.74747048437062,36.53031001676226 -216.67,2024/06/13 13:50:11.1059,30.74747048437062,36.53031001676226 -216.916,2024/06/13 13:50:11.3519,30.74747048437062,36.53031001676226 -216.997,2024/06/13 13:50:11.4329,30.74747048437062,36.53031001676226 -217.163,2024/06/13 13:50:11.5989,30.74747048437062,36.53031001676226 -217.409,2024/06/13 13:50:11.8449,30.74747048437062,36.53031001676226 -217.656,2024/06/13 13:50:12.0919,30.74747048437062,36.53031001676226 -217.736,2024/06/13 13:50:12.1719,30.74747048437062,36.53031001676226 -217.902,2024/06/13 13:50:12.3379,30.74747048437062,36.53031001676226 -218.148,2024/06/13 13:50:12.5839,30.74747048437062,36.53031001676226 -218.228,2024/06/13 13:50:12.6639,30.74747048437062,36.53031001676226 -218.394,2024/06/13 13:50:12.8299,30.74747048437062,36.53031001676226 -218.967,2024/06/13 13:50:13.4029,30.74747048437062,36.53031001676226 -219.133,2024/06/13 13:50:13.5689,30.74747048437062,36.53031001676226 -219.38,2024/06/13 13:50:13.8159,30.74747048437062,36.53031001676226 -219.625,2024/06/13 13:50:14.0609,30.74747048437062,36.53031001676226 -219.706,2024/06/13 13:50:14.1419,30.74747048437062,36.53031001676226 -219.872,2024/06/13 13:50:14.3079,30.74747048437062,36.53031001676226 -220.118,2024/06/13 13:50:14.5539,30.74747048437062,36.53031001676226 -220.364,2024/06/13 13:50:14.7999,30.74747048437062,36.53031001676226 -220.445,2024/06/13 13:50:14.8809,30.74747048437062,36.53031001676226 -220.611,2024/06/13 13:50:15.0469,30.74747048437062,36.53031001676226 -220.857,2024/06/13 13:50:15.2929,30.74747048437062,36.53031001676226 -220.938,2024/06/13 13:50:15.3739,30.74747048437062,36.53031001676226 -221.103,2024/06/13 13:50:15.5389,30.74747048437062,36.53031001676226 -221.349,2024/06/13 13:50:15.7849,30.74747048437062,36.53031001676226 -221.596,2024/06/13 13:50:16.0319,30.74747048437062,36.53031001676226 -221.676,2024/06/13 13:50:16.1119,30.74747048437062,36.53031001676226 -221.842,2024/06/13 13:50:16.2779,30.74747048437062,36.53031001676226 -222.088,2024/06/13 13:50:16.5239,30.74747048437062,36.53031001676226 -222.416,2024/06/13 13:50:16.8519,30.74747048437062,36.53031001676226 -222.827,2024/06/13 13:50:17.2629,30.74747048437062,36.53031001676226 -223.073,2024/06/13 13:50:17.5089,30.74747048437062,36.53031001676226 -223.154,2024/06/13 13:50:17.5899,30.74747048437062,36.53031001676226 -223.321,2024/06/13 13:50:17.7569,30.74747048437062,36.53031001676226 -223.566,2024/06/13 13:50:18.0019,30.74747048437062,36.53031001676226 -223.647,2024/06/13 13:50:18.0829,30.74747048437062,36.53031001676226 -223.812,2024/06/13 13:50:18.2479,30.74747048437062,36.53031001676226 -224.058,2024/06/13 13:50:18.4939,30.74747048437062,36.53031001676226 -224.305,2024/06/13 13:50:18.7409,30.74747048437062,36.53031001676226 -224.386,2024/06/13 13:50:18.8219,30.74747048437062,36.53031001676226 -224.551,2024/06/13 13:50:18.9869,30.74747048437062,36.53031001676226 -224.798,2024/06/13 13:50:19.2339,30.74747048437062,36.53031001676226 -224.877,2024/06/13 13:50:19.3129,30.74747048437062,36.53031001676226 -225.044,2024/06/13 13:50:19.4799,30.74747048437062,36.53031001676226 -225.29,2024/06/13 13:50:19.7259,30.74747048437062,36.53031001676226 -225.536,2024/06/13 13:50:19.9719,30.74747048437062,36.53031001676226 -225.617,2024/06/13 13:50:20.0529,30.74747048437062,36.53031001676226 -225.783,2024/06/13 13:50:20.2189,30.74747048437062,36.53031001676226 -226.029,2024/06/13 13:50:20.4649,30.74747048437062,36.53031001676226 -226.275,2024/06/13 13:50:20.7109,30.74747048437062,36.53031001676226 -226.356,2024/06/13 13:50:20.7919,30.74747048437062,36.53031001676226 -226.522,2024/06/13 13:50:20.9579,30.74747048437062,36.53031001676226 -226.768,2024/06/13 13:50:21.2039,30.74747048437062,36.53031001676226 -226.848,2024/06/13 13:50:21.2839,30.74747048437062,36.53031001676226 -227.014,2024/06/13 13:50:21.4499,30.74747048437062,36.53031001676226 -227.26,2024/06/13 13:50:21.6959,30.74747048437062,36.53031001676226 -227.507,2024/06/13 13:50:21.9429,30.74747048437062,36.53031001676226 -227.753,2024/06/13 13:50:22.1889,30.74747048437062,36.53031001676226 -227.999,2024/06/13 13:50:22.4349,30.74747048437062,36.53031001676226 -228.245,2024/06/13 13:50:22.6809,30.74747048437062,36.53031001676226 -228.491,2024/06/13 13:50:22.9269,30.74747048437062,36.53031001676226 -228.738,2024/06/13 13:50:23.1739,30.74747048437062,36.53031001676226 -228.819,2024/06/13 13:50:23.2549,30.74747048437062,36.53031001676226 -228.984,2024/06/13 13:50:23.4199,30.74747048437062,36.53031001676226 -229.23,2024/06/13 13:50:23.6659,30.74747048437062,36.53031001676226 -229.477,2024/06/13 13:50:23.9129,30.74747048437062,36.53031001676226 -229.557,2024/06/13 13:50:23.9929,30.74747048437062,36.53031001676226 -229.723,2024/06/13 13:50:24.1589,30.74747048437062,36.53031001676226 -229.97,2024/06/13 13:50:24.4059,30.74747048437062,36.53031001676226 -230.215,2024/06/13 13:50:24.6509,30.74747048437062,36.53031001676226 -230.296,2024/06/13 13:50:24.7319,30.74747048437062,36.53031001676226 -230.462,2024/06/13 13:50:24.8979,30.74747048437062,36.53031001676226 -230.708,2024/06/13 13:50:25.1439,30.74747048437062,36.53031001676226 -230.788,2024/06/13 13:50:25.2239,30.74747048437062,36.53031001676226 -230.954,2024/06/13 13:50:25.3899,30.74747048437062,36.53031001676226 -231.2,2024/06/13 13:50:25.6359,30.74747048437062,36.53031001676226 -231.446,2024/06/13 13:50:25.8819,30.74747048437062,36.53031001676226 -231.528,2024/06/13 13:50:25.9639,30.74747048437062,36.53031001676226 -232.019,2024/06/13 13:50:26.4549,30.74747048437062,36.53031001676226 -232.186,2024/06/13 13:50:26.6219,30.74747048437062,36.53031001676226 -232.432,2024/06/13 13:50:26.8679,30.74747048437062,36.53031001676226 -232.678,2024/06/13 13:50:27.1139,30.74747048437062,36.53031001676226 -232.925,2024/06/13 13:50:27.3609,30.74747048437062,36.53031001676226 -233.005,2024/06/13 13:50:27.4409,30.74747048437062,36.53031001676226 -233.171,2024/06/13 13:50:27.6069,30.74747048437062,36.53031001676226 -233.251,2024/06/13 13:50:27.6869,30.74747048437062,36.53031001676226 -233.418,2024/06/13 13:50:27.8539,30.74747048437062,36.53031001676226 -233.663,2024/06/13 13:50:28.0989,30.74747048437062,36.53031001676226 -233.91,2024/06/13 13:50:28.3459,30.74747048437062,36.53031001676226 -233.99,2024/06/13 13:50:28.4259,30.74747048437062,36.53031001676226 -234.156,2024/06/13 13:50:28.5919,30.74747048437062,36.53031001676226 -234.402,2024/06/13 13:50:28.8379,30.74747048437062,36.53031001676226 -234.975,2024/06/13 13:50:29.4109,30.74747048437062,36.53031001676226 -235.141,2024/06/13 13:50:29.5769,30.74747048437062,36.53031001676226 -235.221,2024/06/13 13:50:29.6569,30.74747048437062,36.53031001676226 -235.387,2024/06/13 13:50:29.8229,30.74747048437062,36.53031001676226 -235.633,2024/06/13 13:50:30.0689,30.74747048437062,36.53031001676226 -235.88,2024/06/13 13:50:30.3159,30.74747048437062,36.53031001676226 -235.96,2024/06/13 13:50:30.3959,30.74747048437062,36.53031001676226 -236.126,2024/06/13 13:50:30.5619,30.74747048437062,36.53031001676226 -236.372,2024/06/13 13:50:30.8079,30.74747048437062,36.53031001676226 -236.619,2024/06/13 13:50:31.0549,30.74747048437062,36.53031001676226 -236.698,2024/06/13 13:50:31.1339,30.74747048437062,36.53031001676226 -236.865,2024/06/13 13:50:31.3009,30.74747048437062,36.53031001676226 -236.945,2024/06/13 13:50:31.3809,30.74747048437062,36.53031001676226 -237.111,2024/06/13 13:50:31.5469,30.74747048437062,36.53031001676226 -237.357,2024/06/13 13:50:31.7929,30.74747048437062,36.53031001676226 -237.604,2024/06/13 13:50:32.0399,30.74747048437062,36.53031001676226 -237.684,2024/06/13 13:50:32.1199,30.74747048437062,36.53031001676226 -237.85,2024/06/13 13:50:32.2859,30.74747048437062,36.53031001676226 -238.097,2024/06/13 13:50:32.5329,30.74747048437062,36.53031001676226 -238.342,2024/06/13 13:50:32.7779,30.74747048437062,36.53031001676226 -238.423,2024/06/13 13:50:32.8589,30.74747048437062,36.53031001676226 -238.589,2024/06/13 13:50:33.0249,30.74747048437062,36.53031001676226 -238.836,2024/06/13 13:50:33.2719,30.74747048437062,36.53031001676226 -239.081,2024/06/13 13:50:33.5169,30.74747048437062,36.53031001676226 -239.161,2024/06/13 13:50:33.5969,30.74747048437062,36.53031001676226 -239.328,2024/06/13 13:50:33.7639,30.74747048437062,36.53031001676226 -239.574,2024/06/13 13:50:34.0099,30.74747048437062,36.53031001676226 -239.654,2024/06/13 13:50:34.0899,30.74747048437062,36.53031001676226 -240.313,2024/06/13 13:50:34.7489,30.74747048437062,36.53031001676226 -240.393,2024/06/13 13:50:34.8289,30.74747048437062,36.53031001676226 -240.559,2024/06/13 13:50:34.9949,30.74747048437062,36.53031001676226 -240.885,2024/06/13 13:50:35.3209,30.74747048437062,36.53031001676226 -241.298,2024/06/13 13:50:35.7339,30.74747048437062,36.53031001676226 -241.544,2024/06/13 13:50:35.9799,30.74747048437062,36.53031001676226 -241.872,2024/06/13 13:50:36.3079,30.74747048437062,36.53031001676226 -242.363,2024/06/13 13:50:36.7989,30.74747048437062,36.53031001676226 -242.529,2024/06/13 13:50:36.9649,30.74747048437062,36.53031001676226 -242.776,2024/06/13 13:50:37.2119,30.74747048437062,36.53031001676226 -242.856,2024/06/13 13:50:37.2919,30.74747048437062,36.53031001676226 -243.022,2024/06/13 13:50:37.4579,30.74747048437062,36.53031001676226 -243.268,2024/06/13 13:50:37.7039,30.74747048437062,36.53031001676226 -243.514,2024/06/13 13:50:37.9499,30.74747048437062,36.53031001676226 -243.594,2024/06/13 13:50:38.0299,30.74747048437062,36.53031001676226 -243.761,2024/06/13 13:50:38.1969,30.74747048437062,36.53031001676226 -244.007,2024/06/13 13:50:38.4429,30.74747048437062,36.53031001676226 -244.253,2024/06/13 13:50:38.6889,30.74747048437062,36.53031001676226 -244.333,2024/06/13 13:50:38.7689,30.74747048437062,36.53031001676226 -244.5,2024/06/13 13:50:38.9359,30.74747048437062,36.53031001676226 -245.072,2024/06/13 13:50:39.5079,30.74747048437062,36.53031001676226 -245.238,2024/06/13 13:50:39.6739,30.74747048437062,36.53031001676226 -245.484,2024/06/13 13:50:39.9199,30.74747048437062,36.53031001676226 -245.731,2024/06/13 13:50:40.1669,30.74747048437062,36.53031001676226 -245.977,2024/06/13 13:50:40.4129,30.74747048437062,36.53031001676226 -246.057,2024/06/13 13:50:40.4929,30.74747048437062,36.53031001676226 -246.223,2024/06/13 13:50:40.6589,30.74747048437062,36.53031001676226 -246.47,2024/06/13 13:50:40.9059,30.74747048437062,36.53031001676226 -246.55,2024/06/13 13:50:40.9859,30.74747048437062,36.53031001676226 -246.716,2024/06/13 13:50:41.1519,30.74747048437062,36.53031001676226 -246.963,2024/06/13 13:50:41.3989,30.74747048437062,36.53031001676226 -247.208,2024/06/13 13:50:41.6439,30.74747048437062,36.53031001676226 -247.288,2024/06/13 13:50:41.7239,30.74747048437062,36.53031001676226 -247.454,2024/06/13 13:50:41.8899,30.74747048437062,36.53031001676226 -248.028,2024/06/13 13:50:42.4639,30.74747048437062,36.53031001676226 -248.193,2024/06/13 13:50:42.6289,30.74747048437062,36.53031001676226 -248.44,2024/06/13 13:50:42.8759,30.74747048437062,36.53031001676226 -248.52,2024/06/13 13:50:42.9559,30.74747048437062,36.53031001676226 -248.686,2024/06/13 13:50:43.1219,30.74747048437062,36.53031001676226 -248.932,2024/06/13 13:50:43.3679,30.74747048437062,36.53031001676226 -249.179,2024/06/13 13:50:43.6149,30.74747048437062,36.53031001676226 -249.259,2024/06/13 13:50:43.6949,30.74747048437062,36.53031001676226 -249.425,2024/06/13 13:50:43.8609,30.74747048437062,36.53031001676226 -249.671,2024/06/13 13:50:44.1069,30.74747048437062,36.53031001676226 -249.752,2024/06/13 13:50:44.1879,30.74747048437062,36.53031001676226 -249.918,2024/06/13 13:50:44.3539,30.74747048437062,36.53031001676226 -250.164,2024/06/13 13:50:44.5999,30.74747048437062,36.53031001676226 -250.41,2024/06/13 13:50:44.8459,30.74747048437062,36.53031001676226 -250.49,2024/06/13 13:50:44.9259,30.74747048437062,36.53031001676226 -250.982,2024/06/13 13:50:45.4179,30.74747048437062,36.53031001676226 -251.148,2024/06/13 13:50:45.5839,30.74747048437062,36.53031001676226 -251.395,2024/06/13 13:50:45.8309,30.74747048437062,36.53031001676226 -251.641,2024/06/13 13:50:46.0769,30.74747048437062,36.53031001676226 -251.721,2024/06/13 13:50:46.1569,30.74747048437062,36.53031001676226 -251.888,2024/06/13 13:50:46.3239,30.74747048437062,36.53031001676226 -252.134,2024/06/13 13:50:46.5699,30.74747048437062,36.53031001676226 -252.38,2024/06/13 13:50:46.8159,30.74747048437062,36.53031001676226 -252.46,2024/06/13 13:50:46.8959,30.74747048437062,36.53031001676226 -252.627,2024/06/13 13:50:47.0629,30.74747048437062,36.53031001676226 -252.876,2024/06/13 13:50:47.3119,30.74747048437062,36.53031001676226 -253.119,2024/06/13 13:50:47.5549,30.74747048437062,36.53031001676226 -253.199,2024/06/13 13:50:47.6349,30.74747048437062,36.53031001676226 -253.365,2024/06/13 13:50:47.8009,30.74747048437062,36.53031001676226 -253.612,2024/06/13 13:50:48.0479,30.74747048437062,36.53031001676226 -253.692,2024/06/13 13:50:48.1279,30.74747048437062,36.53031001676226 -253.858,2024/06/13 13:50:48.2939,30.74747048437062,36.53031001676226 -254.104,2024/06/13 13:50:48.5399,30.74747048437062,36.53031001676226 -254.351,2024/06/13 13:50:48.7869,30.74747048437062,36.53031001676226 -254.431,2024/06/13 13:50:48.8669,30.74747048437062,36.53031001676226 -254.597,2024/06/13 13:50:49.0329,30.74747048437062,36.53031001676226 -254.843,2024/06/13 13:50:49.2789,30.74747048437062,36.53031001676226 -255.09,2024/06/13 13:50:49.5259,30.74747048437062,36.53031001676226 -255.169,2024/06/13 13:50:49.6049,30.74747048437062,36.53031001676226 -255.336,2024/06/13 13:50:49.7719,30.74747048437062,36.53031001676226 -255.582,2024/06/13 13:50:50.0179,30.74747048437062,36.53031001676226 -255.829,2024/06/13 13:50:50.2649,30.74747048437062,36.53031001676226 -255.909,2024/06/13 13:50:50.3449,30.74747048437062,36.53031001676226 -256.074,2024/06/13 13:50:50.5099,30.74747048437062,36.53031001676226 -256.321,2024/06/13 13:50:50.7569,30.74747048437062,36.53031001676226 -256.401,2024/06/13 13:50:50.8369,30.74747048437062,36.53031001676226 -256.567,2024/06/13 13:50:51.0029,30.74747048437062,36.53031001676226 -256.813,2024/06/13 13:50:51.2489,30.74747048437062,36.53031001676226 -257.06,2024/06/13 13:50:51.4959,30.74747048437062,36.53031001676226 -257.139,2024/06/13 13:50:51.5749,30.74747048437062,36.53031001676226 -257.306,2024/06/13 13:50:51.7419,30.74747048437062,36.53031001676226 -257.552,2024/06/13 13:50:51.9879,30.74747048437062,36.53031001676226 -257.632,2024/06/13 13:50:52.0679,30.74747048437062,36.53031001676226 -257.798,2024/06/13 13:50:52.2339,30.74747048437062,36.53031001676226 -258.044,2024/06/13 13:50:52.4799,30.74747048437062,36.53031001676226 -258.291,2024/06/13 13:50:52.7269,30.74747048437062,36.53031001676226 -258.371,2024/06/13 13:50:52.8069,30.74747048437062,36.53031001676226 -258.537,2024/06/13 13:50:52.9729,30.74747048437062,36.53031001676226 -258.783,2024/06/13 13:50:53.2189,30.74747048437062,36.53031001676226 -258.863,2024/06/13 13:50:53.2989,30.74747048437062,36.53031001676226 -259.03,2024/06/13 13:50:53.4659,30.74747048437062,36.53031001676226 -259.276,2024/06/13 13:50:53.7119,30.74747048437062,36.53031001676226 -259.522,2024/06/13 13:50:53.9579,30.74747048437062,36.53031001676226 -259.603,2024/06/13 13:50:54.0389,30.74747048437062,36.53031001676226 -259.768,2024/06/13 13:50:54.2039,30.74747048437062,36.53031001676226 -260.015,2024/06/13 13:50:54.4509,30.74747048437062,36.53031001676226 -260.262,2024/06/13 13:50:54.6979,30.74747048437062,36.53031001676226 -260.341,2024/06/13 13:50:54.7769,30.74747048437062,36.53031001676226 -260.508,2024/06/13 13:50:54.9439,30.74747048437062,36.53031001676226 -260.833,2024/06/13 13:50:55.2689,30.74747048437062,36.53031001676226 -261.246,2024/06/13 13:50:55.6819,30.74747048437062,36.53031001676226 -261.492,2024/06/13 13:50:55.9279,30.74747048437062,36.53031001676226 -261.572,2024/06/13 13:50:56.0079,30.74747048437062,36.53031001676226 -261.739,2024/06/13 13:50:56.1749,30.74747048437062,36.53031001676226 -261.985,2024/06/13 13:50:56.4209,30.74747048437062,36.53031001676226 -262.065,2024/06/13 13:50:56.5009,30.74747048437062,36.53031001676226 -262.232,2024/06/13 13:50:56.6679,30.74747048437062,36.53031001676226 -262.478,2024/06/13 13:50:56.9139,30.74747048437062,36.53031001676226 -262.723,2024/06/13 13:50:57.1589,30.74747048437062,36.53031001676226 -262.803,2024/06/13 13:50:57.2389,30.74747048437062,36.53031001676226 -262.97,2024/06/13 13:50:57.4059,30.74747048437062,36.53031001676226 -263.217,2024/06/13 13:50:57.6529,30.74747048437062,36.53031001676226 -263.296,2024/06/13 13:50:57.7319,30.74747048437062,36.53031001676226 -263.463,2024/06/13 13:50:57.8989,30.74747048437062,36.53031001676226 -264.035,2024/06/13 13:50:58.4709,30.74747048437062,36.53031001676226 -264.201,2024/06/13 13:50:58.6369,30.74747048437062,36.53031001676226 -264.448,2024/06/13 13:50:58.8839,30.74747048437062,36.53031001676226 -264.694,2024/06/13 13:50:59.1299,30.74747048437062,36.53031001676226 -264.774,2024/06/13 13:50:59.2099,30.74747048437062,36.53031001676226 -264.941,2024/06/13 13:50:59.3769,30.74747048437062,36.53031001676226 -265.187,2024/06/13 13:50:59.6229,30.74747048437062,36.53031001676226 -265.267,2024/06/13 13:50:59.7029,30.74747048437062,36.53031001676226 -265.433,2024/06/13 13:50:59.8689,30.74747048437062,36.53031001676226 -265.679,2024/06/13 13:51:00.1149,30.74747048437062,36.53031001676226 -265.925,2024/06/13 13:51:00.3609,30.74747048437062,36.53031001676226 -266.172,2024/06/13 13:51:00.6079,30.74747048437062,36.53031001676226 -266.252,2024/06/13 13:51:00.6879,30.74747048437062,36.53031001676226 -266.418,2024/06/13 13:51:00.8539,30.74747048437062,36.53031001676226 -266.497,2024/06/13 13:51:00.9329,30.74747048437062,36.53031001676226 -267.157,2024/06/13 13:51:01.5929,30.74747048437062,36.53031001676226 -267.236,2024/06/13 13:51:01.6719,30.74747048437062,36.53031001676226 -267.403,2024/06/13 13:51:01.8389,30.74747048437062,36.53031001676226 -267.649,2024/06/13 13:51:02.0849,30.74747048437062,36.53031001676226 -267.729,2024/06/13 13:51:02.1649,30.74747048437062,36.53031001676226 -267.896,2024/06/13 13:51:02.3319,30.74747048437062,36.53031001676226 -268.142,2024/06/13 13:51:02.5779,30.74747048437062,36.53031001676226 -268.389,2024/06/13 13:51:02.8249,30.74747048437062,36.53031001676226 -268.468,2024/06/13 13:51:02.9039,30.74747048437062,36.53031001676226 -268.634,2024/06/13 13:51:03.0699,30.74747048437062,36.53031001676226 -268.88,2024/06/13 13:51:03.3159,30.74747048437062,36.53031001676226 -269.127,2024/06/13 13:51:03.5629,30.74747048437062,36.53031001676226 -269.206,2024/06/13 13:51:03.6419,30.74747048437062,36.53031001676226 -269.373,2024/06/13 13:51:03.8089,30.74747048437062,36.53031001676226 -269.619,2024/06/13 13:51:04.0549,30.74747048437062,36.53031001676226 -269.699,2024/06/13 13:51:04.1349,30.74747048437062,36.53031001676226 -269.866,2024/06/13 13:51:04.3019,30.74747048437062,36.53031001676226 -270.112,2024/06/13 13:51:04.5479,30.74747048437062,36.53031001676226 -270.192,2024/06/13 13:51:04.6279,30.74747048437062,36.53031001676226 -270.358,2024/06/13 13:51:04.7939,30.74747048437062,36.53031001676226 -270.605,2024/06/13 13:51:05.0409,30.74747048437062,36.53031001676226 -270.851,2024/06/13 13:51:05.2869,30.74747048437062,36.53031001676226 -270.931,2024/06/13 13:51:05.3669,30.74747048437062,36.53031001676226 -271.59,2024/06/13 13:51:06.0259,30.74747048437062,36.53031001676226 -271.67,2024/06/13 13:51:06.1059,30.74747048437062,36.53031001676226 -271.836,2024/06/13 13:51:06.2719,30.74747048437062,36.53031001676226 -272.082,2024/06/13 13:51:06.5179,30.74747048437062,36.53031001676226 -272.162,2024/06/13 13:51:06.5979,30.74747048437062,36.53031001676226 -272.329,2024/06/13 13:51:06.7649,30.74747048437062,36.53031001676226 -272.575,2024/06/13 13:51:07.0109,30.74747048437062,36.53031001676226 -272.821,2024/06/13 13:51:07.2569,30.74747048437062,36.53031001676226 -272.901,2024/06/13 13:51:07.3369,30.74747048437062,36.53031001676226 -273.068,2024/06/13 13:51:07.5039,30.74747048437062,36.53031001676226 -273.313,2024/06/13 13:51:07.7489,30.74747048437062,36.53031001676226 -273.393,2024/06/13 13:51:07.8289,30.74747048437062,36.53031001676226 -273.56,2024/06/13 13:51:07.9959,30.74747048437062,36.53031001676226 -273.806,2024/06/13 13:51:08.2419,30.74747048437062,36.53031001676226 -274.052,2024/06/13 13:51:08.4879,30.74747048437062,36.53031001676226 -274.132,2024/06/13 13:51:08.5679,30.74747048437062,36.53031001676226 -274.299,2024/06/13 13:51:08.7349,30.74747048437062,36.53031001676226 -274.545,2024/06/13 13:51:08.9809,30.74747048437062,36.53031001676226 -274.792,2024/06/13 13:51:09.2279,30.74747048437062,36.53031001676226 -274.871,2024/06/13 13:51:09.3069,30.74747048437062,36.53031001676226 -275.037,2024/06/13 13:51:09.4729,30.74747048437062,36.53031001676226 -275.284,2024/06/13 13:51:09.7199,30.74747048437062,36.53031001676226 -275.364,2024/06/13 13:51:09.7999,30.74747048437062,36.53031001676226 -275.53,2024/06/13 13:51:09.9659,30.74747048437062,36.53031001676226 -275.776,2024/06/13 13:51:10.2119,30.74747048437062,36.53031001676226 -276.023,2024/06/13 13:51:10.4589,30.74747048437062,36.53031001676226 -276.27,2024/06/13 13:51:10.7059,30.74747048437062,36.53031001676226 -276.349,2024/06/13 13:51:10.7849,30.74747048437062,36.53031001676226 -276.515,2024/06/13 13:51:10.9509,30.74747048437062,36.53031001676226 -276.595,2024/06/13 13:51:11.0309,30.74747048437062,36.53031001676226 -276.761,2024/06/13 13:51:11.1969,30.74747048437062,36.53031001676226 -277.007,2024/06/13 13:51:11.4429,30.74747048437062,36.53031001676226 -277.254,2024/06/13 13:51:11.6899,30.74747048437062,36.53031001676226 -277.334,2024/06/13 13:51:11.7699,30.74747048437062,36.53031001676226 -277.501,2024/06/13 13:51:11.9369,30.74747048437062,36.53031001676226 -277.746,2024/06/13 13:51:12.1819,30.74747048437062,36.53031001676226 -277.827,2024/06/13 13:51:12.2629,30.74747048437062,36.53031001676226 -277.993,2024/06/13 13:51:12.4289,30.74747048437062,36.53031001676226 -278.239,2024/06/13 13:51:12.6749,30.74747048437062,36.53031001676226 -278.485,2024/06/13 13:51:12.9209,30.74747048437062,36.53031001676226 -278.565,2024/06/13 13:51:13.0009,30.74747048437062,36.53031001676226 -278.732,2024/06/13 13:51:13.1679,30.74747048437062,36.53031001676226 -278.978,2024/06/13 13:51:13.4139,30.74747048437062,36.53031001676226 -279.058,2024/06/13 13:51:13.4939,30.74747048437062,36.53031001676226 -279.225,2024/06/13 13:51:13.6609,30.74747048437062,36.53031001676226 -279.47,2024/06/13 13:51:13.9059,30.74747048437062,36.53031001676226 -279.797,2024/06/13 13:51:14.2329,30.74747048437062,36.53031001676226 -280.21,2024/06/13 13:51:14.6459,30.74747048437062,36.53031001676226 -280.289,2024/06/13 13:51:14.7249,30.74747048437062,36.53031001676226 -280.456,2024/06/13 13:51:14.8919,30.74747048437062,36.53031001676226 -280.702,2024/06/13 13:51:15.1379,30.74747048437062,36.53031001676226 -281.028,2024/06/13 13:51:15.4639,30.74747048437062,36.53031001676226 -281.441,2024/06/13 13:51:15.8769,30.74747048437062,36.53031001676226 -281.52,2024/06/13 13:51:15.9559,30.74747048437062,36.53031001676226 -281.687,2024/06/13 13:51:16.1229,30.74747048437062,36.53031001676226 -281.933,2024/06/13 13:51:16.3689,30.74747048437062,36.53031001676226 -282.013,2024/06/13 13:51:16.4489,30.74747048437062,36.53031001676226 -282.18,2024/06/13 13:51:16.6159,30.74747048437062,36.53031001676226 -282.426,2024/06/13 13:51:16.8619,30.74747048437062,36.53031001676226 -282.672,2024/06/13 13:51:17.1079,30.74747048437062,36.53031001676226 -282.752,2024/06/13 13:51:17.1879,30.74747048437062,36.53031001676226 -282.919,2024/06/13 13:51:17.3549,30.74747048437062,36.53031001676226 -283.244,2024/06/13 13:51:17.6799,30.74747048437062,36.53031001676226 -283.658,2024/06/13 13:51:18.0939,30.74747048437062,36.53031001676226 -283.983,2024/06/13 13:51:18.4189,30.74747048437062,36.53031001676226 -284.396,2024/06/13 13:51:18.8319,30.74747048437062,36.53031001676226 -284.476,2024/06/13 13:51:18.9119,30.74747048437062,36.53031001676226 -284.642,2024/06/13 13:51:19.0779,30.74747048437062,36.53031001676226 -284.889,2024/06/13 13:51:19.3249,30.74747048437062,36.53031001676226 -285.214,2024/06/13 13:51:19.6499,30.74747048437062,36.53031001676226 -285.627,2024/06/13 13:51:20.0629,30.74747048437062,36.53031001676226 -285.707,2024/06/13 13:51:20.1429,30.74747048437062,36.53031001676226 -285.874,2024/06/13 13:51:20.3099,30.74747048437062,36.53031001676226 -286.12,2024/06/13 13:51:20.5559,30.74747048437062,36.53031001676226 -286.693,2024/06/13 13:51:21.1289,30.74747048437062,36.53031001676226 -286.859,2024/06/13 13:51:21.2949,30.74747048437062,36.53031001676226 -286.938,2024/06/13 13:51:21.3739,30.74747048437062,36.53031001676226 -287.105,2024/06/13 13:51:21.5409,30.74747048437062,36.53031001676226 -287.351,2024/06/13 13:51:21.7869,30.74747048437062,36.53031001676226 -287.597,2024/06/13 13:51:22.0329,30.74747048437062,36.53031001676226 -287.677,2024/06/13 13:51:22.1129,30.74747048437062,36.53031001676226 -287.844,2024/06/13 13:51:22.2799,30.74747048437062,36.53031001676226 -288.09,2024/06/13 13:51:22.5259,30.74747048437062,36.53031001676226 -288.169,2024/06/13 13:51:22.6049,30.74747048437062,36.53031001676226 -288.337,2024/06/13 13:51:22.7729,30.74747048437062,36.53031001676226 -288.908,2024/06/13 13:51:23.3439,30.74747048437062,36.53031001676226 +0.001,2024/06/13 13:46:34.4369,, +0.001,2024/06/13 13:46:34.4369,, +0.525,2024/06/13 13:46:34.9609,, +1.017,2024/06/13 13:46:35.4529,, +1.426,2024/06/13 13:46:35.8619,, +1.673,2024/06/13 13:46:36.1089,, +1.756,2024/06/13 13:46:36.1919,, +1.919,2024/06/13 13:46:36.3549,, +2.248,2024/06/13 13:46:36.6839,, +2.74,2024/06/13 13:46:37.1759,100.79621906489238, +3.726,2024/06/13 13:46:38.1619,104.66049007060009,165.0115147497289 +3.972,2024/06/13 13:46:38.4079,99.82936198910375,162.74128939125214 +4.627,2024/06/13 13:46:39.0629,95.57934011286254,155.83458110017386 +4.874,2024/06/13 13:46:39.3099,91.82966194638207,149.7210226233598 +4.957,2024/06/13 13:46:39.3929,88.78261305544223,144.46873116946202 +5.12,2024/06/13 13:46:39.5559,85.77351475445863,139.75717035868558 +5.45,2024/06/13 13:46:39.8859,83.64846786684492,135.74562608054816 +5.943,2024/06/13 13:46:40.3789,81.66368541977437,131.69260106957637 +6.435,2024/06/13 13:46:40.8709,80.17480901130979,128.01887881610796 +7.174,2024/06/13 13:46:41.6099,78.71139822494781,124.60463791317595 +7.666,2024/06/13 13:46:42.1019,77.51202671659597,121.4596640864777 +7.83,2024/06/13 13:46:42.2659,75.89131269118583,119.71752467490177 +8.076,2024/06/13 13:46:42.5119,74.36638813196771,116.9650297388847 +8.322,2024/06/13 13:46:42.7579,72.92838208162497,114.39405578962571 +8.651,2024/06/13 13:46:43.0869,71.8149937919188,112.74491858468241 +9.143,2024/06/13 13:46:43.5789,70.3670486695409,110.67610401527513 +9.553,2024/06/13 13:46:43.9889,69.19317276072226,108.68621029225514 +9.637,2024/06/13 13:46:44.0729,68.29480137008888,106.68385278215464 +9.799,2024/06/13 13:46:44.2349,67.21740699369222,104.7902667235846 +10.046,2024/06/13 13:46:44.4819,66.18854990050042,102.96768826960333 +10.291,2024/06/13 13:46:44.7269,66.18854990050042,101.23701562834285 +10.375,2024/06/13 13:46:44.8109,63.926538298664155,100.38060901721342 +10.539,2024/06/13 13:46:44.9749,63.976288711063724,99.41763760352922 +10.784,2024/06/13 13:46:45.2199,63.81348540504766,99.3847741524492 +11.36,2024/06/13 13:46:45.7959,63.80628009303116,99.48534230394613 +11.523,2024/06/13 13:46:45.9589,63.86066909664559,99.60739597707257 +11.607,2024/06/13 13:46:46.0429,63.56692554299371,99.77591559756961 +11.769,2024/06/13 13:46:46.2049,63.62885378884928,99.9441510711524 +12.016,2024/06/13 13:46:46.4519,63.682807727046715,99.94398431121304 +12.262,2024/06/13 13:46:46.6979,36.49136254279748,84.76713199505258 +12.346,2024/06/13 13:46:46.7819,26.98113432002816,37.44551597543646 +12.508,2024/06/13 13:46:46.9439,27.01810801887392,28.16913204200655 +12.755,2024/06/13 13:46:47.1909,27.01810801887392,28.121166405396487 +12.838,2024/06/13 13:46:47.2739,26.996806963174286,28.221150460839354 +13.001,2024/06/13 13:46:47.4369,26.76453305935032,27.855579931736 +13.247,2024/06/13 13:46:47.6829,26.76453305935032,27.382476148076893 +13.493,2024/06/13 13:46:47.9289,25.911631436058965,26.232930958371135 +13.577,2024/06/13 13:46:48.0129,25.116761816323557,26.511632666938237 +13.74,2024/06/13 13:46:48.1759,23.20545417457442,26.511632666938237 +14.07,2024/06/13 13:46:48.5059,22.907735981892436,27.648990337201585 +14.478,2024/06/13 13:46:48.9139,20.071395555372494,28.713527590086642 +14.808,2024/06/13 13:46:49.2439,22.662339005393957,26.907867498806613 +15.301,2024/06/13 13:46:49.7369,25.99204122220015,27.046872893799264 +15.793,2024/06/13 13:46:50.2289,29.10377784854526,27.06904751433514 +16.202,2024/06/13 13:46:50.6379,28.255403307897694,26.913441499245938 +16.449,2024/06/13 13:46:50.8849,28.318062145531126,26.187783411354232 +16.532,2024/06/13 13:46:50.9679,31.0813541325446,28.148416178061126 +16.695,2024/06/13 13:46:51.1309,30.1327522576464,30.38475494937113 +17.025,2024/06/13 13:46:51.4609,32.81857127739813,33.02120530810467 +17.517,2024/06/13 13:46:51.9529,35.13363650112397,33.02574753128232 +18.009,2024/06/13 13:46:52.4449,36.98996446692504,33.02625218418422 +18.748,2024/06/13 13:46:53.1839,38.064736146872804,33.03230741763787 +19.24,2024/06/13 13:46:53.6759,38.48482310204133,33.055004663943606 +19.403,2024/06/13 13:46:53.8389,37.49913408961968,35.1207441075309 +19.65,2024/06/13 13:46:54.0859,37.48691725812158,34.53452378900473 +19.734,2024/06/13 13:46:54.1699,37.75244530406997,36.06429443831299 +19.896,2024/06/13 13:46:54.3319,37.86303204185201,37.031068037527625 +21.705,2024/06/13 13:46:56.1409,37.52148809636328,37.41390115986303 +22.196,2024/06/13 13:46:56.6319,36.921725218405804,37.415682986327184 +22.605,2024/06/13 13:46:57.0409,35.99303891830652,38.5132011999349 +22.851,2024/06/13 13:46:57.2869,36.112993172293045,37.979380370581794 +22.935,2024/06/13 13:46:57.3709,35.868533900034805,39.19566302539096 +23.098,2024/06/13 13:46:57.5339,35.157919596370355,40.69766578072998 +23.428,2024/06/13 13:46:57.8639,35.201880827494406,42.12718837045739 +25.152,2024/06/13 13:46:59.5879,34.30364747202652,42.08562700020044 +25.644,2024/06/13 13:47:00.0799,33.150371437388074,42.0872110424691 +26.053,2024/06/13 13:47:00.4889,31.611143095688657,42.21532107343652 +26.136,2024/06/13 13:47:00.5719,31.14225794455292,42.199131112697884 +26.3,2024/06/13 13:47:00.7359,29.777894292675544,42.29026680770254 +27.122,2024/06/13 13:47:01.5579,29.855206134497625,41.68492933103442 +27.614,2024/06/13 13:47:02.0499,28.2815077066434,40.979669756274674 +28.107,2024/06/13 13:47:02.5429,28.283966458414213,39.77645869942002 +28.599,2024/06/13 13:47:03.0349,28.11429873042291,39.68248984123854 +29.009,2024/06/13 13:47:03.4449,27.96598919623887,39.761790704142086 +29.255,2024/06/13 13:47:03.6909,27.143721358638576,38.116488120846945 +29.338,2024/06/13 13:47:03.7739,26.03437162189891,38.202094183434504 +29.501,2024/06/13 13:47:03.9369,25.84222687105702,36.46093800219627 +29.831,2024/06/13 13:47:04.2669,24.67771576083212,34.792240514229604 +30.815,2024/06/13 13:47:05.2509,24.15574465836252,32.218007387174026 +31.308,2024/06/13 13:47:05.7439,23.34114811662677,32.22162834701768 +31.555,2024/06/13 13:47:05.9909,22.343710061454797,32.25419869309007 +32.047,2024/06/13 13:47:06.4829,21.710847969166057,32.34707611722168 +32.211,2024/06/13 13:47:06.6469,21.24647367631093,32.3403772396056 +32.456,2024/06/13 13:47:06.8919,20.095433231996275,30.084325930069742 +32.703,2024/06/13 13:47:07.1389,18.721461039360303,30.084325930069742 +33.032,2024/06/13 13:47:07.4679,18.682341530372504,27.884882403672904 +33.524,2024/06/13 13:47:07.9599,17.238056001552266,25.40800398824486 +35.249,2024/06/13 13:47:09.6849,17.848951158857307,24.840826609971472 +35.412,2024/06/13 13:47:09.8479,17.79012382607653,25.35875917048519 +35.658,2024/06/13 13:47:10.0939,15.93986544312204,23.658684099783176 +35.741,2024/06/13 13:47:10.1769,14.19895576539325,23.93881088664737 +35.905,2024/06/13 13:47:10.3409,13.877998795745766,21.59629597870894 +36.726,2024/06/13 13:47:11.1619,11.390659613770806,18.719864671875523 +37.218,2024/06/13 13:47:11.6539,11.18542771213763,15.047701928644564 +37.712,2024/06/13 13:47:12.1479,12.201422566393113,15.294879317383755 +38.204,2024/06/13 13:47:12.6399,13.605272811519502,15.343836982102403 +38.943,2024/06/13 13:47:13.3789,15.056063810680222,14.997777613144333 +39.106,2024/06/13 13:47:13.5419,14.878086949079787,16.195678435928517 +39.845,2024/06/13 13:47:14.2809,14.841073790813727,15.77867759562463 +39.927,2024/06/13 13:47:14.3629,15.432500411972391,16.375795146088837 +40.091,2024/06/13 13:47:14.5269,15.456278715271301,17.170711497586037 +40.174,2024/06/13 13:47:14.6099,15.910092221064266,17.813852287849848 +40.338,2024/06/13 13:47:14.7739,15.937701993311244,18.434568976065954 +40.584,2024/06/13 13:47:15.0199,15.583258036575469,18.262894987743135 +40.829,2024/06/13 13:47:15.2649,15.19607481079189,18.262894987743135 +40.913,2024/06/13 13:47:15.3489,15.598261028923972,18.48512915832616 +41.076,2024/06/13 13:47:15.5119,15.152860964263828,18.704723111200195 +41.323,2024/06/13 13:47:15.7589,15.15001612229369,18.22726894883963 +41.406,2024/06/13 13:47:15.8419,16.137341574852407,19.189406799933483 +41.568,2024/06/13 13:47:16.0039,16.14531710335315,20.09975124224178 +41.815,2024/06/13 13:47:16.2509,16.103115997458314,20.04661234888994 +42.062,2024/06/13 13:47:16.4979,15.621823815110591,19.882991056008986 +42.144,2024/06/13 13:47:16.5799,17.746652590303647,22.08544015107389 +42.637,2024/06/13 13:47:17.0729,18.537442693349238,22.193842990042683 +42.801,2024/06/13 13:47:17.2369,18.228309421551625,23.4222116803687 +43.046,2024/06/13 13:47:17.4819,17.280511912383695,23.31951972061174 +43.292,2024/06/13 13:47:17.7279,16.43940458132586,23.313086453749534 +43.375,2024/06/13 13:47:17.8109,16.75571612878774,22.669362584775072 +43.539,2024/06/13 13:47:17.9749,16.518224000719414,22.58982071642004 +43.785,2024/06/13 13:47:18.2209,16.2687204281046,22.58982071642004 +44.032,2024/06/13 13:47:18.4679,16.28429184581117,22.292749194898924 +44.115,2024/06/13 13:47:18.5509,16.12740225356482,22.20960753067615 +44.278,2024/06/13 13:47:18.7139,16.12740225356482,22.335323294429088 +44.524,2024/06/13 13:47:18.9599,16.098689887440088,22.36142511856821 +44.77,2024/06/13 13:47:19.2059,15.945452996524736,22.144976857066254 +46.085,2024/06/13 13:47:20.5209,17.224047610592745,23.283041038489795 +46.578,2024/06/13 13:47:21.0139,17.624597492754855,23.34809057146501 +46.987,2024/06/13 13:47:21.4229,17.30178384265456,22.900509455759565 +47.233,2024/06/13 13:47:21.6689,16.953248764710917,22.900509455759565 +47.316,2024/06/13 13:47:21.7519,17.12244611378735,22.504814299759655 +47.479,2024/06/13 13:47:21.9149,16.74336375657737,22.102036105300343 +47.808,2024/06/13 13:47:22.2439,17.003752121426253,21.892921230388602 +48.794,2024/06/13 13:47:23.2299,17.4112197939333,21.50348808914498 +49.286,2024/06/13 13:47:23.7219,19.237804018345923,21.783786019269776 +49.779,2024/06/13 13:47:24.2149,20.136916404923095,21.83269719175042 +50.188,2024/06/13 13:47:24.6239,20.240536315642377,21.97271034715563 +50.434,2024/06/13 13:47:24.8699,19.968480910802093,21.635618780150477 +50.517,2024/06/13 13:47:24.9529,19.9079490852679,21.728629347782924 +50.681,2024/06/13 13:47:25.1169,19.875011747267795,20.972998513962345 +51.01,2024/06/13 13:47:25.4459,19.428885948386544,20.102238681301145 +51.995,2024/06/13 13:47:26.4309,18.98953129623226,20.132063977645213 +52.734,2024/06/13 13:47:27.1699,18.96227349480973,20.369912452765558 +52.98,2024/06/13 13:47:27.4159,19.530230030838876,18.08129788851822 +53.39,2024/06/13 13:47:27.8259,19.46080647110383,18.51935924017531 +53.637,2024/06/13 13:47:28.0729,18.914477821615296,16.939106627367728 +53.882,2024/06/13 13:47:28.3179,18.261227061539756,16.939106627367728 +54.212,2024/06/13 13:47:28.6479,18.385682835656144,17.496666349145865 +54.705,2024/06/13 13:47:29.1409,18.945293292294053,16.592166826548002 +55.197,2024/06/13 13:47:29.6329,18.27327676357386,16.272676485446393 +55.689,2024/06/13 13:47:30.1249,17.50848726865885,16.272676485446393 +56.428,2024/06/13 13:47:30.8639,17.114892352272992,16.677329922182786 +56.594,2024/06/13 13:47:31.0299,16.99631467829676,16.531787562148264 +56.838,2024/06/13 13:47:31.2739,15.984223543821532,16.237815945091466 +57.084,2024/06/13 13:47:31.5199,15.207416520940946,16.200823024361036 +57.413,2024/06/13 13:47:31.8489,16.29501722020893,17.623847480048163 +57.906,2024/06/13 13:47:32.3419,19.350398730633234,16.303373883954205 +58.398,2024/06/13 13:47:32.8339,21.31795422674988,16.2511538051918 +58.891,2024/06/13 13:47:33.3269,20.62218981203714,16.131749233524967 +59.63,2024/06/13 13:47:34.0659,19.51612949190587,16.50050504277571 +59.794,2024/06/13 13:47:34.2299,19.24255341863382,16.131749233524967 +60.039,2024/06/13 13:47:34.4749,17.94576759887006,15.754364474646383 +60.286,2024/06/13 13:47:34.7219,17.637342829036818,15.32536024590178 +60.615,2024/06/13 13:47:35.0509,18.178204708848238,15.574551892965225 +61.107,2024/06/13 13:47:35.5429,18.54649330178386,15.144856112445131 +61.6,2024/06/13 13:47:36.0359,18.662304498518186,15.184421841699033 +62.584,2024/06/13 13:47:37.0199,18.669416874578374,15.54884776009678 +62.995,2024/06/13 13:47:37.4309,18.492744771812884,15.57562197795003 +63.078,2024/06/13 13:47:37.5139,20.822291326651957,17.326280616450838 +63.241,2024/06/13 13:47:37.6769,20.526517752275822,18.915602025840997 +63.487,2024/06/13 13:47:37.9229,20.01849719347258,18.901499058716656 +64.309,2024/06/13 13:47:38.7449,23.800898273399326,22.58760722166029 +64.802,2024/06/13 13:47:39.2379,26.55441171649656,22.40014880902952 +65.294,2024/06/13 13:47:39.7299,28.560562794287716,22.292749194898924 +65.786,2024/06/13 13:47:40.2219,30.115181187086527,21.823534696896985 +66.196,2024/06/13 13:47:40.6319,29.76082822355151,24.337214302380623 +66.442,2024/06/13 13:47:40.8779,29.384959793557346,24.337214302380623 +66.525,2024/06/13 13:47:40.9609,29.60187940600787,24.37074749229767 +66.689,2024/06/13 13:47:41.1249,29.554080567003545,24.56691542162616 +67.018,2024/06/13 13:47:41.4539,29.09020848816788,24.345430782797827 +68.003,2024/06/13 13:47:42.4389,28.991952906510985,24.617744277925492 +68.495,2024/06/13 13:47:42.9309,29.504646039751968,24.362539550164577 +68.987,2024/06/13 13:47:43.4229,29.529042785300526,24.319402404938597 +69.398,2024/06/13 13:47:43.8339,29.277428440557607,24.64886745200815 +69.644,2024/06/13 13:47:44.0799,29.006162642865835,24.64886745200815 +69.727,2024/06/13 13:47:44.1629,29.512047023889192,24.45335696109364 +69.891,2024/06/13 13:47:44.3269,28.810299084413373,25.05926309105411 +70.137,2024/06/13 13:47:44.5729,28.324900705916278,25.02665245959462 +70.383,2024/06/13 13:47:44.8189,28.329445304565784,24.4989795705862 +70.466,2024/06/13 13:47:44.9019,28.87022090619381,25.22498761149349 +70.958,2024/06/13 13:47:45.3939,29.016760911464942,25.30480850220632 +71.121,2024/06/13 13:47:45.5569,28.89992642077923,26.09916984631248 +71.368,2024/06/13 13:47:45.8039,28.749012976560664,26.09916984631248 +71.614,2024/06/13 13:47:46.0499,27.77266083138577,25.883714313573055 +71.697,2024/06/13 13:47:46.1329,26.617792856503733,25.912673861774024 +71.86,2024/06/13 13:47:46.2959,25.839024215589298,25.87985059204683 +72.107,2024/06/13 13:47:46.5429,25.830926843789644,25.253382611708343 +72.19,2024/06/13 13:47:46.6259,25.77580171445702,25.247442114664473 +72.353,2024/06/13 13:47:46.7889,24.985076005258076,24.00694344004112 +72.6,2024/06/13 13:47:47.0359,25.07643487832578,22.874294160330574 +72.845,2024/06/13 13:47:47.2809,25.14329050604319,22.874294160330574 +73.092,2024/06/13 13:47:47.5279,22.780713762747798,19.211975432005946 +73.338,2024/06/13 13:47:47.7739,20.618845302519066,19.180719485983836 +73.421,2024/06/13 13:47:47.8569,18.40339798709145,19.782989325849282 +73.585,2024/06/13 13:47:48.0209,15.464605490878942,20.081500607939304 +73.667,2024/06/13 13:47:48.1029,15.901312025677266,17.92670261555835 +73.831,2024/06/13 13:47:48.2669,16.042185765597793,18.854707634964804 +74.077,2024/06/13 13:47:48.5129,15.67764350108599,18.29389697868299 +74.16,2024/06/13 13:47:48.5959,15.76464836052653,18.439088914585774 +74.323,2024/06/13 13:47:48.7589,15.922080381601466,18.839674448708855 +74.569,2024/06/13 13:47:49.0049,15.501724042050267,18.482424083436676 +74.816,2024/06/13 13:47:49.2519,14.668168679620853,18.45986637727009 +74.898,2024/06/13 13:47:49.3339,14.322396254914041,18.782083661475546 +75.062,2024/06/13 13:47:49.4979,14.419654530592135,18.743887892679396 +75.391,2024/06/13 13:47:49.8269,14.558640835892712,19.096247449870006 +76.376,2024/06/13 13:47:50.8119,14.407692708946126,18.424621208227503 +76.868,2024/06/13 13:47:51.3039,16.044335126616787,17.40881003017342 +77.361,2024/06/13 13:47:51.7969,17.087368460929177,17.432727841620196 +77.771,2024/06/13 13:47:52.2069,17.087368460929177,18.566995807974248 +78.018,2024/06/13 13:47:52.4539,15.82392339858086,17.22207885244984 +78.1,2024/06/13 13:47:52.5359,15.672510526616767,17.656915547928143 +78.264,2024/06/13 13:47:52.6999,15.557088047117427,17.033300717516067 +78.592,2024/06/13 13:47:53.0279,16.249102539320436,17.949001829256876 +79.577,2024/06/13 13:47:54.0129,16.80794147276044,17.897858344878397 +80.07,2024/06/13 13:47:54.5059,17.469480777078232,17.86057109949175 +80.563,2024/06/13 13:47:54.9989,18.12485433948649,17.81852968120546 +81.055,2024/06/13 13:47:55.4909,19.855917789525204,18.153053003099323 +81.219,2024/06/13 13:47:55.6549,19.71757486661849,19.912307751739878 +81.466,2024/06/13 13:47:55.9019,19.649924687639402,19.89891119299412 +83.272,2024/06/13 13:47:57.7079,21.300693421339606,22.096756926451146 +83.765,2024/06/13 13:47:58.2009,21.28376965142049,22.42691834975699 +84.257,2024/06/13 13:47:58.6929,20.557880162643823,22.752289262108697 +84.667,2024/06/13 13:47:59.1029,19.71649638970049,22.7705950734714 +86.473,2024/06/13 13:48:00.9089,19.7083621904485,22.249344559634412 +86.966,2024/06/13 13:48:01.4019,19.627010476124482,22.48406843374511 +87.705,2024/06/13 13:48:02.1409,22.426098302145355,22.793273861675363 +87.868,2024/06/13 13:48:02.3039,22.039045810331725,24.524137769416754 +88.69,2024/06/13 13:48:03.1259,24.1127857532394,26.712668654903553 +89.182,2024/06/13 13:48:03.6179,24.970994668067586,26.685826450258823 +89.675,2024/06/13 13:48:04.1109,24.68337427332935,27.325811973297338 +90.168,2024/06/13 13:48:04.6039,24.749689421016917,27.593477490160605 +90.578,2024/06/13 13:48:05.0139,24.42396128922346,28.16794868877273 +90.824,2024/06/13 13:48:05.2599,24.46740736139652,27.905793902581117 +90.906,2024/06/13 13:48:05.3419,24.620825686220968,28.45464226917405 +91.07,2024/06/13 13:48:05.5059,24.671077580144956,29.016661880145115 +91.891,2024/06/13 13:48:06.3269,24.854172387297165,29.37288999514121 +92.384,2024/06/13 13:48:06.8199,24.47670720097605,29.540932054806035 +92.876,2024/06/13 13:48:07.3119,24.25572571342841,29.6079944159231 +93.369,2024/06/13 13:48:07.8049,24.087102477200133,28.967798213418522 +93.779,2024/06/13 13:48:08.2149,23.961679176667307,29.03733229252761 +94.025,2024/06/13 13:48:08.4609,23.96942496876694,28.704819572097414 +94.108,2024/06/13 13:48:08.5439,23.833232858883438,28.53769437077915 +94.272,2024/06/13 13:48:08.7079,23.726506831744036,28.142494558940577 +95.093,2024/06/13 13:48:09.5289,23.678425118490647,28.32843094843059 +96.078,2024/06/13 13:48:10.5139,23.631777748198417,28.660076761934885 +96.57,2024/06/13 13:48:11.0059,25.42125547421047,29.665917593539337 +97.063,2024/06/13 13:48:11.4989,27.741085344520606,29.734940165849782 +97.226,2024/06/13 13:48:11.6619,27.741085344520606,31.304951684997057 +97.474,2024/06/13 13:48:11.9099,27.741085344520606,31.304951684997057 +97.802,2024/06/13 13:48:12.2379,26.937646177964783,30.672463220289302 +98.295,2024/06/13 13:48:12.7309,26.177225338771265,30.799891774701635 +99.279,2024/06/13 13:48:13.7149,25.99692731622499,30.595206596240967 +99.772,2024/06/13 13:48:14.2079,25.91152053723887,30.636035426710595 +100.182,2024/06/13 13:48:14.6179,25.71150733028755,30.622976123601486 +100.264,2024/06/13 13:48:14.6999,25.855833731114956,30.332051254956912 +100.428,2024/06/13 13:48:14.8639,24.317086372655712,29.609120216581918 +100.675,2024/06/13 13:48:15.1109,24.239442541293514,27.58018612458347 +100.757,2024/06/13 13:48:15.1929,22.887254898340963,25.726769456476006 +100.921,2024/06/13 13:48:15.3569,22.251436735222992,25.700194551792794 +101.167,2024/06/13 13:48:15.6029,22.176408713953176,24.69412885687608 +101.414,2024/06/13 13:48:15.8499,21.390431849606674,24.394671549336344 +101.496,2024/06/13 13:48:15.9319,22.176408713953176,24.394671549336344 +101.66,2024/06/13 13:48:16.0959,22.176408713953176,25.04263031978337 +101.906,2024/06/13 13:48:16.3419,21.04786553734571,24.114311103574988 +102.153,2024/06/13 13:48:16.5889,21.04786553734571,23.14879406506237 +102.234,2024/06/13 13:48:16.6699,21.04786553734571,23.14879406506237 +102.398,2024/06/13 13:48:16.8339,20.87786046201309,23.621318055237026 +102.645,2024/06/13 13:48:17.0809,20.87425406472398,23.519495459441018 +102.727,2024/06/13 13:48:17.1629,21.092053305539096,23.70372685184055 +102.891,2024/06/13 13:48:17.3269,21.092053305539096,23.87188024992306 +103.138,2024/06/13 13:48:17.5739,21.092053305539096,23.87188024992306 +103.384,2024/06/13 13:48:17.8199,20.806166194764554,23.66924868544275 +103.466,2024/06/13 13:48:17.9019,20.822208523980297,23.49964538739539 +103.63,2024/06/13 13:48:18.0659,20.482007803879682,23.268720062206544 +103.876,2024/06/13 13:48:18.3119,20.487759171322185,22.852425108362862 +104.123,2024/06/13 13:48:18.5589,18.67680348736829,21.527501790345607 +104.368,2024/06/13 13:48:18.8039,13.583670047304766,21.14946807841748 +104.451,2024/06/13 13:48:18.8869,13.908775035513672,16.931233465600393 +104.615,2024/06/13 13:48:19.0509,13.964486977749923,17.010780895263647 +104.697,2024/06/13 13:48:19.1329,11.4510954151521,15.100772607165943 +104.862,2024/06/13 13:48:19.2979,11.050615003430503,14.345731072343439 +105.107,2024/06/13 13:48:19.5429,10.992630760400488,14.27118308573843 +105.354,2024/06/13 13:48:19.7899,11.096701384159891,14.153915830374764 +105.6,2024/06/13 13:48:20.0359,11.192361927549626,14.152738250953417 +105.683,2024/06/13 13:48:20.1189,11.01013117568399,14.125626829749303 +105.846,2024/06/13 13:48:20.2819,11.095665509714596,14.098463273231827 +106.093,2024/06/13 13:48:20.5289,11.175506879914245,14.098463273231827 +106.339,2024/06/13 13:48:20.7749,10.586534496411074,13.61739084161622 +106.421,2024/06/13 13:48:20.8569,11.076328700038065,13.831124321616086 +106.585,2024/06/13 13:48:21.0209,11.14404124061091,14.508618128546908 +106.668,2024/06/13 13:48:21.1039,11.498125784307035,15.054345994872488 +106.832,2024/06/13 13:48:21.2679,9.954840559985719,14.516657099116632 +107.078,2024/06/13 13:48:21.5139,9.988729280729487,13.36911864459783 +107.16,2024/06/13 13:48:21.5959,10.134951473950649,13.611269840344312 +107.324,2024/06/13 13:48:21.7599,10.186818167015668,13.884043599278515 +107.571,2024/06/13 13:48:22.0069,8.03412263018232,12.594972541984097 +107.816,2024/06/13 13:48:22.2519,8.05362772545741,11.157956802210698 +107.899,2024/06/13 13:48:22.3349,47.616825481814004,48.94078054138491 +108.063,2024/06/13 13:48:22.4989,47.59924900402465,68.21925436903182 +108.638,2024/06/13 13:48:23.0739,54.88948143691845,72.6404386917737 +108.802,2024/06/13 13:48:23.2379,54.88948143691845,77.3140780625797 +109.048,2024/06/13 13:48:23.4839,54.88948143691845,77.3140780625797 +109.13,2024/06/13 13:48:23.5659,54.9109624128322,77.32959761091911 +109.295,2024/06/13 13:48:23.7309,54.893302985370624,77.35567206094198 +109.54,2024/06/13 13:48:23.9759,54.87461151120587,77.35567206094198 +109.787,2024/06/13 13:48:24.2229,54.868798578712145,77.36945995244722 +109.869,2024/06/13 13:48:24.3049,55.20332323829555,77.53816264696157 +110.033,2024/06/13 13:48:24.4689,55.095277975271436,77.68912407795573 +110.28,2024/06/13 13:48:24.7159,55.063818773592615,77.67174518446203 +110.525,2024/06/13 13:48:24.9609,55.046532040222004,77.66981395625974 +110.772,2024/06/13 13:48:25.2079,55.006582678176336,77.66788268003705 +110.854,2024/06/13 13:48:25.2899,55.11435343014559,77.75367086725444 +111.018,2024/06/13 13:48:25.4539,55.05879824667288,77.83936450579917 +111.265,2024/06/13 13:48:25.7009,54.998484827614526,77.83936450579917 +111.346,2024/06/13 13:48:25.7819,55.02388196235256,77.83079938773167 +111.51,2024/06/13 13:48:25.9459,54.95474627301126,77.82223332698696 +111.757,2024/06/13 13:48:26.1929,54.8808112938928,77.82223332698696 +111.839,2024/06/13 13:48:26.2749,54.92485985312177,77.89950791457757 +112.003,2024/06/13 13:48:26.4389,54.901217456090436,77.85349489051 +112.25,2024/06/13 13:48:26.6859,54.82658135419822,77.73008855434726 +112.496,2024/06/13 13:48:26.9319,54.813592156120194,77.6262412675851 +112.578,2024/06/13 13:48:27.0139,56.04535314542513,78.42533604220854 +112.743,2024/06/13 13:48:27.1789,55.99364701238113,79.31792567467541 +112.989,2024/06/13 13:48:27.4249,55.99364701238113,79.27673050775996 +113.235,2024/06/13 13:48:27.6709,55.92910126057904,79.22941373000307 +113.481,2024/06/13 13:48:27.9169,55.859851311167645,79.22941373000307 +113.563,2024/06/13 13:48:27.9989,57.18073785471125,80.19621769967293 +113.727,2024/06/13 13:48:28.1629,32.97431950967999,65.68764470329764 +113.974,2024/06/13 13:48:28.4099,33.005415786873414,45.21246140907025 +114.22,2024/06/13 13:48:28.6559,18.779543774219665,37.54153255617925 +114.302,2024/06/13 13:48:28.7379,25.928194390813985,32.48589437484111 +114.466,2024/06/13 13:48:28.9019,25.961509971494745,37.445070881670574 +114.712,2024/06/13 13:48:29.1479,26.007094522788634,37.40721855471214 +114.959,2024/06/13 13:48:29.3949,26.112070578280036,37.35326848706371 +115.205,2024/06/13 13:48:29.6409,26.208031584616375,37.35326848706371 +115.287,2024/06/13 13:48:29.7229,35.196721372910936,45.34129831989081 +115.452,2024/06/13 13:48:29.8879,34.59160751316503,51.88834165783293 +115.697,2024/06/13 13:48:30.1329,34.67583875126131,51.63590482083825 +115.779,2024/06/13 13:48:30.2149,43.0956701027984,59.14727381714224 +115.944,2024/06/13 13:48:30.3799,43.18663054084332,65.80678789709565 +116.19,2024/06/13 13:48:30.6259,43.27644364677717,65.80678789709565 +116.437,2024/06/13 13:48:30.8729,42.95284771044661,65.70540312637918 +116.519,2024/06/13 13:48:30.9549,46.31254391779807,69.10788667004657 +116.682,2024/06/13 13:48:31.1179,46.41428882248004,72.44262097227939 +116.929,2024/06/13 13:48:31.3649,46.35351416950081,72.42398313634327 +117.175,2024/06/13 13:48:31.6109,46.45472397195347,72.4053405028478 +117.421,2024/06/13 13:48:31.8569,46.55482492865776,72.4053405028478 +117.503,2024/06/13 13:48:31.9389,47.80895890650815,73.96846174778365 +117.668,2024/06/13 13:48:32.1039,47.914003424238906,75.49922736911506 +117.913,2024/06/13 13:48:32.3489,48.01795641144135,75.49922736911506 +117.995,2024/06/13 13:48:32.4309,49.14418149397441,77.22801736848271 +118.16,2024/06/13 13:48:32.5959,48.798388893699524,78.02157821184257 +118.406,2024/06/13 13:48:32.8419,48.901308070792226,77.11376876624131 +118.489,2024/06/13 13:48:32.9249,49.256319974916075,78.07795250047651 +118.653,2024/06/13 13:48:33.0889,49.3659685469126,79.03037390775778 +118.899,2024/06/13 13:48:33.3349,49.474537744758386,79.03037390775778 +119.146,2024/06/13 13:48:33.5819,48.98731949458362,78.04912982645398 +119.227,2024/06/13 13:48:33.6629,48.922598966686344,77.45428759382315 +119.391,2024/06/13 13:48:33.8269,49.026101422504546,77.85114000449833 +119.638,2024/06/13 13:48:34.0739,49.128543567904536,77.85114000449833 +119.884,2024/06/13 13:48:34.3199,46.91047967616951,75.59100475585703 +119.966,2024/06/13 13:48:34.4019,46.80899068763864,73.47947559239473 +120.131,2024/06/13 13:48:34.5669,46.80899068763864,73.68898606078568 +120.377,2024/06/13 13:48:34.8129,46.80899068763864,73.68898606078568 +120.623,2024/06/13 13:48:35.0589,46.71371601968586,73.69712794042022 +120.705,2024/06/13 13:48:35.1409,41.26406412977007,69.20549111161628 +120.869,2024/06/13 13:48:35.3049,41.173378856207705,64.40134574163287 +121.115,2024/06/13 13:48:35.5509,41.081486167702806,64.40134574163287 +121.198,2024/06/13 13:48:35.6339,32.04407883690472,57.732428784291876 +121.362,2024/06/13 13:48:35.7979,31.952479082854403,50.184991116202596 +121.608,2024/06/13 13:48:36.0439,31.79344253939429,50.20624131187941 +121.854,2024/06/13 13:48:36.2899,31.62648388231992,50.20624131187941 +121.937,2024/06/13 13:48:36.3729,25.2893371742451,45.28539131625857 +122.101,2024/06/13 13:48:36.5369,25.132316513472173,39.76011401727448 +122.347,2024/06/13 13:48:36.7829,24.96528624393066,39.76011401727448 +122.593,2024/06/13 13:48:37.0289,24.78804402200377,39.76011401727448 +122.839,2024/06/13 13:48:37.2749,24.60036912161191,39.76011401727448 +122.921,2024/06/13 13:48:37.3569,20.972039404445614,36.610563138708116 +123.085,2024/06/13 13:48:37.5209,20.796357992377846,33.16323265304515 +123.167,2024/06/13 13:48:37.6029,20.710622517381825,33.21345109038405 +123.332,2024/06/13 13:48:37.7679,15.28066917954571,29.024702123076704 +123.578,2024/06/13 13:48:38.0139,15.09951662467568,24.04994802489186 +123.825,2024/06/13 13:48:38.2609,14.901052959786186,24.04994802489186 +123.906,2024/06/13 13:48:38.3419,10.981122778262101,20.75813093705693 +124.07,2024/06/13 13:48:38.5059,10.776997641315656,16.834488409215172 +124.645,2024/06/13 13:48:39.0809,10.692192876381949,16.897731603186664 +124.81,2024/06/13 13:48:39.2459,10.427031624856342,16.960738977611403 +125.138,2024/06/13 13:48:39.5739,9.353590496297116,15.315569420255542 +125.548,2024/06/13 13:48:39.9839,9.04751188252191,13.470956412470002 +125.795,2024/06/13 13:48:40.2309,9.703003445432755,14.110279940525631 +125.876,2024/06/13 13:48:40.3119,9.77799546953836,14.152738250953417 +126.041,2024/06/13 13:48:40.4769,10.163264929293293,13.017936344392941 +126.287,2024/06/13 13:48:40.7229,10.454114297593291,11.723196378690128 +126.534,2024/06/13 13:48:40.9699,10.589519867987608,11.723196378690128 +126.78,2024/06/13 13:48:41.2159,11.35002152005767,11.74166370948626 +126.862,2024/06/13 13:48:41.2979,11.723049307134092,10.85664159243855 +127.026,2024/06/13 13:48:41.4619,12.251389787455441,9.892758294159757 +127.272,2024/06/13 13:48:41.7079,12.627100940475318,9.892758294159757 +127.354,2024/06/13 13:48:41.7899,12.822797585982096,9.075608335900501 +127.519,2024/06/13 13:48:41.9549,13.032276465955404,8.17720408615724 +127.765,2024/06/13 13:48:42.2009,13.418164048662625,8.04570278678832 +127.846,2024/06/13 13:48:42.2819,13.515253196502105,8.097324661063471 +128.011,2024/06/13 13:48:42.4469,13.915343388118051,8.01664934163062 +128.258,2024/06/13 13:48:42.6939,14.090185709683949,7.882470002057308 +128.504,2024/06/13 13:48:42.9399,14.190169820699168,7.882470002057308 +128.586,2024/06/13 13:48:43.0219,14.126033682044605,9.395034149308168 +128.751,2024/06/13 13:48:43.1869,13.951846579881815,10.14724921674178 +128.996,2024/06/13 13:48:43.4319,13.60041412486667,10.132456102380443 +129.243,2024/06/13 13:48:43.6789,13.322524354358405,10.117641358867523 +129.325,2024/06/13 13:48:43.7609,13.254754080977348,11.539786248742507 +129.489,2024/06/13 13:48:43.9249,12.920446239760613,12.80494696071275 +129.735,2024/06/13 13:48:44.1709,12.528817357112354,12.80494696071275 +129.817,2024/06/13 13:48:44.2529,13.885575083602435,14.925369900497163 +129.982,2024/06/13 13:48:44.4179,13.048142511046187,16.71625954971187 +130.228,2024/06/13 13:48:44.6639,12.58716733857394,16.65232716469383 +130.474,2024/06/13 13:48:44.9099,12.418238348422438,16.58814837969165 +130.556,2024/06/13 13:48:44.9919,14.05833495152474,18.37298741812737 +131.048,2024/06/13 13:48:45.4839,15.605038973978047,18.14754345175493 +131.213,2024/06/13 13:48:45.6489,15.251191775555716,19.41219547947458 +131.459,2024/06/13 13:48:45.8949,15.251191775555716,18.952572384771415 +131.705,2024/06/13 13:48:46.1409,15.263546837777616,18.97717927757793 +131.787,2024/06/13 13:48:46.2229,19.15577401623278,21.884545536367288 +131.952,2024/06/13 13:48:46.3879,19.116851806418452,24.473114500065847 +132.198,2024/06/13 13:48:46.6339,19.073993849725557,24.473114500065847 +132.445,2024/06/13 13:48:46.8809,18.88732470422466,24.439721766010347 +132.526,2024/06/13 13:48:46.9619,22.53640732620137,27.3970801363941 +132.69,2024/06/13 13:48:47.1259,22.30687229810996,30.064929735490818 +132.937,2024/06/13 13:48:47.3729,22.06323201384144,30.064929735490818 +133.018,2024/06/13 13:48:47.4539,24.275265307451654,31.965085119027396 +133.183,2024/06/13 13:48:47.6189,23.992719202138836,33.758455730873315 +133.429,2024/06/13 13:48:47.8649,23.695894207623542,33.758455730873315 +133.511,2024/06/13 13:48:47.9469,24.886985935736526,35.0561454431792 +133.675,2024/06/13 13:48:48.1109,24.54692901643625,36.307483158893476 +133.922,2024/06/13 13:48:48.3579,24.191406282625692,36.307483158893476 +134.168,2024/06/13 13:48:48.6039,23.819725236552447,36.307483158893476 +134.25,2024/06/13 13:48:48.6859,24.183684059974556,36.44722211636986 +134.414,2024/06/13 13:48:48.8499,24.01426778961389,36.742346141747674 +134.661,2024/06/13 13:48:49.0969,23.840562363189452,36.742346141747674 +134.907,2024/06/13 13:48:49.3429,23.662473321235503,36.742346141747674 +134.989,2024/06/13 13:48:49.4249,23.549995729311647,36.36481816261426 +135.153,2024/06/13 13:48:49.5889,23.370479463306882,35.983329473521486 +135.4,2024/06/13 13:48:49.8359,23.186401087756572,35.983329473521486 +135.481,2024/06/13 13:48:49.9169,22.961136581264284,35.16437591275201 +135.646,2024/06/13 13:48:50.0819,22.78585970067564,34.325889160612675 +135.892,2024/06/13 13:48:50.3279,22.605970119804503,34.325889160612675 +136.139,2024/06/13 13:48:50.5749,22.421356813969403,34.325889160612675 +136.384,2024/06/13 13:48:50.8199,22.007835595220016,33.372643487343545 +136.466,2024/06/13 13:48:50.9019,21.63450309431578,33.529588922820594 +136.712,2024/06/13 13:48:51.1479,21.858373812961233,32.83037211688794 +137.124,2024/06/13 13:48:51.5599,21.667391676641365,33.44647465229582 +137.369,2024/06/13 13:48:51.8049,21.667391676641365,33.414567681377136 +137.451,2024/06/13 13:48:51.8869,20.651709455836812,32.619523806048015 +137.616,2024/06/13 13:48:52.0519,20.651709455836812,31.804611824912016 +137.863,2024/06/13 13:48:52.2989,20.651709455836812,31.804611824912016 +138.109,2024/06/13 13:48:52.5449,20.651709455836812,31.804611824912016 +138.19,2024/06/13 13:48:52.6259,18.549839668422067,30.223059628921312 +138.355,2024/06/13 13:48:52.7909,18.549839668422067,28.554042329122744 +138.601,2024/06/13 13:48:53.0369,18.549839668422067,28.554042329122744 +138.682,2024/06/13 13:48:53.1179,16.914286962455883,27.313610770700627 +138.847,2024/06/13 13:48:53.2829,16.914286962455883,26.014098741515788 +139.094,2024/06/13 13:48:53.5299,16.914286962455883,26.014098741515788 +139.34,2024/06/13 13:48:53.7759,14.912349275669971,24.21982658897458 +139.422,2024/06/13 13:48:53.8579,15.60890550405485,23.130067012440755 +139.586,2024/06/13 13:48:54.0219,15.60890550405485,23.948555975952566 +139.832,2024/06/13 13:48:54.2679,15.60890550405485,23.948555975952566 +139.914,2024/06/13 13:48:54.3499,16.31739780922184,24.53093285357625 +140.08,2024/06/13 13:48:54.5159,16.31739780922184,25.099800796022265 +140.325,2024/06/13 13:48:54.7609,16.31739780922184,25.099800796022265 +140.572,2024/06/13 13:48:55.0079,16.31739780922184,25.099800796022265 +140.652,2024/06/13 13:48:55.0879,18.437094043846358,26.981475126464083 +140.818,2024/06/13 13:48:55.2539,18.437094043846358,28.74021572639983 +141.146,2024/06/13 13:48:55.5819,20.1198706606757,30.50464445512082 +141.557,2024/06/13 13:48:55.9929,20.02228643344731,32.16416225138366 +141.803,2024/06/13 13:48:56.2389,20.02228643344731,32.155870381627054 +141.884,2024/06/13 13:48:56.3199,21.26991291477972,33.633316815324655 +142.049,2024/06/13 13:48:56.4849,21.26991291477972,35.04853777263754 +142.295,2024/06/13 13:48:56.7309,21.26991291477972,35.04853777263754 +142.377,2024/06/13 13:48:56.8129,22.09771923530368,35.93373531005834 +142.542,2024/06/13 13:48:56.9779,21.93050675284993,36.813493902825 +142.788,2024/06/13 13:48:57.2239,21.83082814442175,36.49703184278597 +143.034,2024/06/13 13:48:57.4699,21.70269330179401,36.49703184278597 +143.281,2024/06/13 13:48:57.7169,21.029262589484293,35.560277464234346 +143.361,2024/06/13 13:48:57.7969,21.592463563906477,34.85206832695395 +143.527,2024/06/13 13:48:57.9629,21.40493551421779,35.104130811059825 +143.773,2024/06/13 13:48:58.2089,21.187070444565766,35.104130811059825 +143.855,2024/06/13 13:48:58.2909,21.395052602460975,34.55285805834302 +144.019,2024/06/13 13:48:58.4549,21.142102680365713,33.99264626356707 +144.266,2024/06/13 13:48:58.7019,20.85695672139536,33.99264626356707 +144.347,2024/06/13 13:48:58.7829,20.924741995690287,33.40059879702758 +144.512,2024/06/13 13:48:58.9479,20.60454140321441,32.797865784224435 +144.758,2024/06/13 13:48:59.1939,20.249279822584455,32.797865784224435 +145.005,2024/06/13 13:48:59.4409,19.85707552173411,32.797865784224435 +145.086,2024/06/13 13:48:59.5219,19.72873509644595,32.2055895769663 +145.25,2024/06/13 13:48:59.6859,19.308178244630568,31.60221511223541 +145.497,2024/06/13 13:48:59.9329,18.846018513019914,31.60221511223541 +145.743,2024/06/13 13:49:00.1789,18.424402858427822,30.564140208202595 +145.825,2024/06/13 13:49:00.2609,19.170889090121428,30.253374467432003 +145.99,2024/06/13 13:49:00.4259,18.722289868790668,30.99838705481303 +146.235,2024/06/13 13:49:00.6709,18.229349834875727,30.99838705481303 +146.317,2024/06/13 13:49:00.7529,18.454043571475687,30.074906483645133 +146.482,2024/06/13 13:49:00.9179,18.024281196310376,29.122156513555105 +146.728,2024/06/13 13:49:01.1639,16.894670315145653,27.29041345723195 +146.974,2024/06/13 13:49:01.4099,16.484231406330743,25.302832516011588 +147.056,2024/06/13 13:49:01.4919,16.355813757748347,25.74425502256118 +147.221,2024/06/13 13:49:01.6569,15.26625758624709,24.25077318355025 +147.467,2024/06/13 13:49:01.9029,14.794997601317053,22.156263222845137 +147.713,2024/06/13 13:49:02.1489,14.240503994696768,22.156263222845137 +147.795,2024/06/13 13:49:02.2309,13.519674892370391,20.4344480391976 +147.96,2024/06/13 13:49:02.3959,12.889851661755232,18.553526169796765 +148.205,2024/06/13 13:49:02.6409,12.931517232367556,18.072077910411963 +148.287,2024/06/13 13:49:02.7229,13.461054936370429,18.278402556022233 +148.452,2024/06/13 13:49:02.8879,13.487158643533643,18.482424083436676 +148.698,2024/06/13 13:49:03.1339,12.892348260815194,17.99907405025788 +148.944,2024/06/13 13:49:03.3799,12.925471600368674,17.502380790433435 +149.026,2024/06/13 13:49:03.4619,13.827716627354544,17.957356895341437 +149.191,2024/06/13 13:49:03.6269,13.273255453912189,17.915542600397753 +149.437,2024/06/13 13:49:03.8729,13.296616110875036,17.416467303484175 +149.519,2024/06/13 13:49:03.9549,14.332223961344592,18.00462903440853 +150.176,2024/06/13 13:49:04.6119,14.053305742736498,18.281137820168635 +150.257,2024/06/13 13:49:04.6929,14.99179852414257,18.553526169796765 +150.423,2024/06/13 13:49:04.8589,14.986737431827914,19.106717841289925 +150.669,2024/06/13 13:49:05.1049,15.07075267552596,19.149412523625887 +150.75,2024/06/13 13:49:05.1859,16.08915533955104,19.56527536223296 +150.915,2024/06/13 13:49:05.3509,16.123945211869685,19.97248106770914 +151.161,2024/06/13 13:49:05.5969,16.146634110656635,19.97248106770914 +151.407,2024/06/13 13:49:05.8429,16.15727301447676,19.97248106770914 +151.489,2024/06/13 13:49:05.9249,15.26429987174905,19.52690451658941 +151.653,2024/06/13 13:49:06.0889,15.185292339900485,19.070920271449932 +151.9,2024/06/13 13:49:06.3359,15.093006677752323,19.070920271449932 +151.981,2024/06/13 13:49:06.4169,13.719689685172492,18.81754500459611 +152.146,2024/06/13 13:49:06.5819,13.509511336524366,18.560711193270585 +152.392,2024/06/13 13:49:06.8279,13.442940291398925,18.528356645962965 +152.639,2024/06/13 13:49:07.0749,13.442940291398925,18.57238092796218 +152.72,2024/06/13 13:49:07.1559,13.278666668973106,19.453363034018906 +152.885,2024/06/13 13:49:07.3209,13.278666668973106,20.296140848282793 +153.132,2024/06/13 13:49:07.5679,13.278666668973106,20.296140848282793 +153.213,2024/06/13 13:49:07.6489,13.707787869521827,21.07051652586302 +153.87,2024/06/13 13:49:08.3059,13.615786983217724,21.8105479069188 +153.951,2024/06/13 13:49:08.3869,13.586504460243688,22.138202275704323 +154.116,2024/06/13 13:49:08.5519,13.586504460243688,22.46775467197379 +154.363,2024/06/13 13:49:08.7989,13.724757393746104,22.300224214119464 +154.444,2024/06/13 13:49:08.8799,13.737272061006365,22.5262809476694 +154.609,2024/06/13 13:49:09.0449,13.737272061006365,22.91433321453336 +154.856,2024/06/13 13:49:09.2919,13.709171357536162,22.915060549778175 +155.101,2024/06/13 13:49:09.5369,13.727604541096326,22.561028345356956 +155.183,2024/06/13 13:49:09.6189,13.662138302200391,22.49888886145269 +155.348,2024/06/13 13:49:09.7839,13.662138302200391,22.793273861675363 +155.594,2024/06/13 13:49:10.0299,13.580919678368325,22.331591971912793 +155.676,2024/06/13 13:49:10.1119,13.815741480051772,22.492220877450052 +155.841,2024/06/13 13:49:10.2769,13.743796928903434,22.651710752170576 +156.086,2024/06/13 13:49:10.5219,13.743796928903434,22.187083329420897 +156.332,2024/06/13 13:49:10.7679,13.871702776911782,22.150244543420584 +156.414,2024/06/13 13:49:10.8499,13.67286094556401,22.219360926903367 +156.579,2024/06/13 13:49:11.0149,13.794426660666264,22.288262980023067 +156.825,2024/06/13 13:49:11.2609,13.910882203444539,22.288262980023067 +156.907,2024/06/13 13:49:11.3429,14.014155405306663,22.585393509965684 +157.072,2024/06/13 13:49:11.5079,13.277281607938521,22.25758297749331 +157.318,2024/06/13 13:49:11.7539,13.380204970680477,21.618664775296985 +157.564,2024/06/13 13:49:11.9999,13.478164546412904,21.618664775296985 +157.811,2024/06/13 13:49:12.2469,12.11363817707185,20.708291415115188 +157.892,2024/06/13 13:49:12.3279,12.399898034432452,20.160191798029437 +158.057,2024/06/13 13:49:12.4929,12.4842889771233,20.55642640797925 +158.138,2024/06/13 13:49:12.5739,12.977832559059577,21.18883353718809 +158.303,2024/06/13 13:49:12.7389,11.538043022175147,20.517472228972718 +158.549,2024/06/13 13:49:12.9849,11.538043022175147,19.103228348458103 +158.796,2024/06/13 13:49:13.2319,11.514308939088878,19.27347054027029 +158.878,2024/06/13 13:49:13.3139,11.891704826395374,18.85647545716502 +159.042,2024/06/13 13:49:13.4779,11.842889131814879,18.430047929038782 +159.288,2024/06/13 13:49:13.7239,11.65421338637345,18.026831853286552 +159.534,2024/06/13 13:49:13.9699,11.594687646036357,17.61438805825132 +159.616,2024/06/13 13:49:14.0519,12.643475442469052,18.151216671801002 +159.781,2024/06/13 13:49:14.2169,12.427675826023641,18.19432145844778 +160.027,2024/06/13 13:49:14.4629,12.315815455940276,17.703107071923842 +160.108,2024/06/13 13:49:14.5439,12.995180362104472,18.112610708196282 +160.274,2024/06/13 13:49:14.7099,12.828174810372047,18.513058454327133 +160.519,2024/06/13 13:49:14.9549,12.740784363878216,18.149380154705007 +160.601,2024/06/13 13:49:15.0369,13.186940596620397,18.149380154705007 +160.765,2024/06/13 13:49:15.2009,12.970390683503025,18.513058454327133 +161.012,2024/06/13 13:49:15.4479,12.620727341188948,17.73978579352073 +161.096,2024/06/13 13:49:15.5319,13.205885138785368,17.489044189625307 +161.259,2024/06/13 13:49:15.6949,12.943733228284566,18.029605283163207 +161.505,2024/06/13 13:49:15.9409,12.658375992146864,18.029605283163207 +161.751,2024/06/13 13:49:16.1869,12.578946102810482,17.523317798484015 +161.832,2024/06/13 13:49:16.2679,13.424330287880169,17.569860557215588 +161.997,2024/06/13 13:49:16.4329,13.086142534632419,18.153053003099323 +162.244,2024/06/13 13:49:16.6799,13.086142534632419,17.782013384316187 +162.324,2024/06/13 13:49:16.7599,14.177892779891181,18.35755975068582 +162.49,2024/06/13 13:49:16.9259,13.738150589112173,19.264821134215946 +163.064,2024/06/13 13:49:17.4999,14.56258787156886,20.184977912629314 +163.229,2024/06/13 13:49:17.6649,14.015590662156082,21.064978835340266 +163.475,2024/06/13 13:49:17.9109,14.018706713921794,20.67849124090053 +163.556,2024/06/13 13:49:17.9919,13.883753839994895,20.67849124090053 +163.721,2024/06/13 13:49:18.1569,13.846822117675208,20.38872237291979 +163.968,2024/06/13 13:49:18.4039,13.18170972462543,19.689252567496478 +164.214,2024/06/13 13:49:18.6499,12.444312738763237,19.689252567496478 +164.295,2024/06/13 13:49:18.7309,12.4178218239146,19.543967526238543 +164.46,2024/06/13 13:49:18.8959,12.229792152439483,19.148542155126762 +164.706,2024/06/13 13:49:19.1419,12.117053623124022,18.722535440835287 +164.953,2024/06/13 13:49:19.3889,11.999808427586084,18.722535440835287 +165.033,2024/06/13 13:49:19.4689,12.47254456059421,18.978057505094316 +165.199,2024/06/13 13:49:19.6349,12.18388798523276,18.72431574183687 +165.446,2024/06/13 13:49:19.8819,12.080429694721646,18.204395073717773 +165.527,2024/06/13 13:49:19.9629,12.829070795314166,18.6422459305024 +165.691,2024/06/13 13:49:20.1269,12.621091633567529,18.680649524753324 +165.938,2024/06/13 13:49:20.3739,12.535008447604989,18.282961102257662 +166.184,2024/06/13 13:49:20.6199,12.445005460804708,18.282961102257662 +166.266,2024/06/13 13:49:20.7019,12.90442319249318,18.282961102257662 +166.43,2024/06/13 13:49:20.8659,12.832071889037959,18.282961102257662 +166.677,2024/06/13 13:49:21.1129,12.756066845984732,18.282961102257662 +166.923,2024/06/13 13:49:21.3589,12.385753774060186,17.75011737050397 +167.004,2024/06/13 13:49:21.4399,14.450708927442692,18.686893802876924 +167.169,2024/06/13 13:49:21.6049,14.405299152675907,20.063233371850444 +167.415,2024/06/13 13:49:21.8509,14.405299152675907,20.033305601755625 +167.662,2024/06/13 13:49:22.0979,13.697050609610248,19.548230951503854 +167.742,2024/06/13 13:49:22.1779,16.946331783588747,22.123140223153975 +167.908,2024/06/13 13:49:22.3439,17.025201063843483,24.850888649435994 +168.154,2024/06/13 13:49:22.5899,15.880335559149744,24.154364684945314 +168.236,2024/06/13 13:49:22.6719,18.2317457124674,25.794056162870806 +168.401,2024/06/13 13:49:22.8369,16.961382778154146,27.295909339435216 +168.974,2024/06/13 13:49:23.4099,17.557000764994253,27.5118156434649 +169.14,2024/06/13 13:49:23.5759,17.690993877330786,28.3731093349554 +169.385,2024/06/13 13:49:23.8209,17.068489485987733,28.08736370683443 +169.632,2024/06/13 13:49:24.0679,17.210027817269918,27.79868102386634 +169.878,2024/06/13 13:49:24.3139,17.347165126641702,27.79868102386634 +169.959,2024/06/13 13:49:24.3949,17.459476891742035,28.201063809721788 +170.124,2024/06/13 13:49:24.5599,17.639460726240575,28.583211855912904 +170.206,2024/06/13 13:49:24.6419,17.791383682369247,29.02240513809977 +170.37,2024/06/13 13:49:24.8059,17.9334978414008,29.469192953546138 +170.617,2024/06/13 13:49:25.0529,18.07137827183136,29.469192953546138 +170.698,2024/06/13 13:49:25.1339,18.164763160845116,29.747829052442352 +170.863,2024/06/13 13:49:25.2989,18.29958230790032,30.02387938513831 +171.109,2024/06/13 13:49:25.5449,18.43035976098893,30.02387938513831 +171.356,2024/06/13 13:49:25.7919,18.34061506382701,29.75399132889569 +171.437,2024/06/13 13:49:25.8729,18.3144939775881,29.592228709578468 +171.602,2024/06/13 13:49:26.0379,18.432511257674733,29.70241292106305 +171.848,2024/06/13 13:49:26.2839,18.546741201497902,29.70241292106305 +171.93,2024/06/13 13:49:26.3659,18.52627832311937,29.482198018465315 +172.095,2024/06/13 13:49:26.5309,18.62395565227393,29.260325812722364 +172.341,2024/06/13 13:49:26.7769,18.718114651104386,29.260325812722364 +172.587,2024/06/13 13:49:27.0229,18.808808159151134,29.260325812722364 +172.669,2024/06/13 13:49:27.1049,18.043020110629314,28.466354408904092 +172.833,2024/06/13 13:49:27.2689,18.043020110629314,27.805275278862702 +173.079,2024/06/13 13:49:27.5149,18.043020110629314,27.805275278862702 +173.161,2024/06/13 13:49:27.5969,19.5164534181525,28.7199117918794 +173.326,2024/06/13 13:49:27.7619,16.556451671597618,27.386736449115897 +173.572,2024/06/13 13:49:28.0079,16.526537350017822,24.937922928744488 +173.654,2024/06/13 13:49:28.0899,18.66387499650006,26.49402448351955 +173.818,2024/06/13 13:49:28.2539,15.562406810871064,25.80568412837244 +174.065,2024/06/13 13:49:28.5009,15.575585079689068,23.449946695035365 +174.311,2024/06/13 13:49:28.7469,14.117568739919603,22.40014880902952 +174.392,2024/06/13 13:49:28.8279,17.19462626560137,23.867690853257393 +174.557,2024/06/13 13:49:28.9929,17.24205630854517,26.18587405453559 +174.803,2024/06/13 13:49:29.2389,17.286098327911223,26.18587405453559 +174.884,2024/06/13 13:49:29.3199,19.504346700922806,28.111089152384924 +175.05,2024/06/13 13:49:29.4859,18.890610694567428,29.53359668806584 +175.296,2024/06/13 13:49:29.7319,18.95672628024893,29.149614062625254 +175.377,2024/06/13 13:49:29.8129,19.057686173792433,29.704657322828464 +175.542,2024/06/13 13:49:29.9779,19.146771283290082,30.249517902494468 +175.789,2024/06/13 13:49:30.2249,19.23251557057275,30.249517902494468 +176.035,2024/06/13 13:49:30.4709,18.422905532943773,29.814426038413014 +176.116,2024/06/13 13:49:30.5519,18.921039800347746,30.059940119700837 +176.281,2024/06/13 13:49:30.7169,19.025572627203907,30.731634081729744 +176.527,2024/06/13 13:49:30.9629,19.126589784420975,30.731634081729744 +176.609,2024/06/13 13:49:31.0449,19.233471781805655,31.247933264991033 +176.774,2024/06/13 13:49:31.2099,19.34754729175774,31.755839358035136 +177.02,2024/06/13 13:49:31.4559,19.458059819877445,31.755839358035136 +177.266,2024/06/13 13:49:31.7019,19.583478845140554,31.75111546596959 +177.348,2024/06/13 13:49:31.7839,19.644571652296328,31.999479162428045 +177.512,2024/06/13 13:49:31.9479,19.75260785924951,32.2505813901083 +177.759,2024/06/13 13:49:32.1949,19.85722023351218,32.2505813901083 +178.005,2024/06/13 13:49:32.4409,19.880129281013073,32.13409404355443 +178.086,2024/06/13 13:49:32.5219,19.78458705804544,31.907679326456822 +178.252,2024/06/13 13:49:32.6879,19.78458705804544,31.933263743835102 +178.498,2024/06/13 13:49:32.9339,19.132448215337064,31.086974764360715 +178.578,2024/06/13 13:49:33.0139,19.054067053106486,30.236842868703516 +178.744,2024/06/13 13:49:33.1799,19.764707894649774,30.607188698082023 +178.991,2024/06/13 13:49:33.4269,19.03079778589779,29.270576807891345 +179.071,2024/06/13 13:49:33.5069,18.99670267819112,28.475720652279666 +179.237,2024/06/13 13:49:33.6729,19.619395751528362,29.068883707497267 +179.483,2024/06/13 13:49:33.9189,20.200176396177824,29.068883707497267 +179.729,2024/06/13 13:49:34.1649,18.952451089470596,27.120103244641236 +179.81,2024/06/13 13:49:34.2459,19.102897415185364,26.573796617470123 +179.975,2024/06/13 13:49:34.4109,20.25084076585621,28.098042636454235 +180.222,2024/06/13 13:49:34.6579,18.70533761182477,26.1725046566048 +180.302,2024/06/13 13:49:34.7379,18.910223471024064,25.700194551792794 +180.468,2024/06/13 13:49:34.9039,19.920676026010444,27.21274211345364 +180.714,2024/06/13 13:49:35.1499,19.101332925745517,26.110023618015617 +180.96,2024/06/13 13:49:35.3959,19.887181801349897,24.95863244116819 +181.206,2024/06/13 13:49:35.6419,20.57866879065183,24.95863244116819 +181.287,2024/06/13 13:49:35.7229,20.899980751240967,26.513518564435515 +181.453,2024/06/13 13:49:35.8889,20.11292830637599,27.242736034889496 +181.534,2024/06/13 13:49:35.9699,20.48705787149129,27.952936637617643 +182.191,2024/06/13 13:49:36.6269,21.023686696172042,29.34961669255665 +182.273,2024/06/13 13:49:36.7089,20.29733010017214,30.453242848668843 +182.438,2024/06/13 13:49:36.8739,20.752399113487375,31.518248682311015 +182.685,2024/06/13 13:49:37.1209,21.134925064244285,31.518248682311015 +182.765,2024/06/13 13:49:37.2009,22.275211726742786,33.551453023676935 +182.93,2024/06/13 13:49:37.3659,21.863973411374523,35.240128641460245 +183.177,2024/06/13 13:49:37.6129,22.11986676603382,35.010474623080064 +183.423,2024/06/13 13:49:37.8589,22.31336386331104,35.010474623080064 +183.504,2024/06/13 13:49:37.9399,23.5312460407401,36.851503813729686 +183.67,2024/06/13 13:49:38.1059,23.524235485396282,38.583675304460044 +183.915,2024/06/13 13:49:38.3509,23.6303185340984,38.56250337655307 +183.997,2024/06/13 13:49:38.4329,24.303256486776288,39.75801805925441 +184.162,2024/06/13 13:49:38.5979,24.219874046958665,40.90395253925143 +184.408,2024/06/13 13:49:38.8439,24.430901856403285,40.62757684135247 +184.655,2024/06/13 13:49:39.0909,25.048550558015076,41.56200187671426 +184.735,2024/06/13 13:49:39.1709,24.735009392663247,41.20760447619671 +184.901,2024/06/13 13:49:39.3369,25.308215012647594,40.850132598724 +185.147,2024/06/13 13:49:39.5829,25.81730685670555,40.850132598724 +185.228,2024/06/13 13:49:39.6639,25.602711781658456,40.87460499299453 +185.393,2024/06/13 13:49:39.8289,25.4892584994255,39.906975163079785 +185.64,2024/06/13 13:49:40.0759,25.858234198452646,38.86429380978552 +185.886,2024/06/13 13:49:40.3219,26.06622864669959,38.86386496477158 +185.966,2024/06/13 13:49:40.4019,25.669092287233877,38.214744100499566 +186.133,2024/06/13 13:49:40.5689,25.808957724993974,37.554404979087785 +186.378,2024/06/13 13:49:40.8139,25.818575688342307,37.554404979087785 +186.625,2024/06/13 13:49:41.0609,25.698092419923555,37.554404979087785 +186.706,2024/06/13 13:49:41.1419,25.112825866247068,37.95172372018606 +186.871,2024/06/13 13:49:41.3069,25.256932586482126,37.28672686090856 +187.117,2024/06/13 13:49:41.5529,24.92794213027847,36.19760581401299 +187.199,2024/06/13 13:49:41.6349,24.96443447197808,35.86456003726613 +187.363,2024/06/13 13:49:41.7989,24.58613757627409,35.52839240194618 +187.61,2024/06/13 13:49:42.0459,24.36975702528036,34.0431099245256 +187.856,2024/06/13 13:49:42.2919,23.718075942974696,32.47152598816385 +187.937,2024/06/13 13:49:42.3729,23.820304291751977,33.73030289418305 +188.102,2024/06/13 13:49:42.5379,23.347672113154726,32.99646445706974 +188.348,2024/06/13 13:49:42.7839,22.591041862068348,30.92679528607299 +188.595,2024/06/13 13:49:43.0309,21.686401268996388,30.92679528607299 +188.676,2024/06/13 13:49:43.1119,21.57182602750281,32.046840717924134 +188.843,2024/06/13 13:49:43.2789,21.11664375979502,31.06820453990435 +189.087,2024/06/13 13:49:43.5229,20.0498229991882,28.86058442466703 +189.169,2024/06/13 13:49:43.6049,19.23840149165069,29.482763325938993 +189.333,2024/06/13 13:49:43.7689,19.130405479054236,28.49385898750817 +189.58,2024/06/13 13:49:44.0159,17.766687153594905,26.800497507820012 +189.826,2024/06/13 13:49:44.2619,16.125798563490182,26.800497507820012 +189.907,2024/06/13 13:49:44.3429,16.323736331367613,25.64371267971937 +190.073,2024/06/13 13:49:44.5089,16.34737843230876,25.863745539525656 +190.4,2024/06/13 13:49:44.8359,16.703258681306256,26.238013136160543 +190.812,2024/06/13 13:49:45.2479,16.703258681306256,26.697066006086388 +191.058,2024/06/13 13:49:45.4939,16.68232597691098,26.53676694701146 +191.139,2024/06/13 13:49:45.5749,17.0506008253571,26.866335812685733 +191.304,2024/06/13 13:49:45.7399,16.91496650762113,27.326421890421976 +191.55,2024/06/13 13:49:45.9859,16.775769335012072,27.326421890421976 +191.796,2024/06/13 13:49:46.2319,16.516936622818996,26.802363079897763 +191.877,2024/06/13 13:49:46.3129,16.35317818595308,26.277366686941825 +192.043,2024/06/13 13:49:46.4789,16.124515496594732,26.317927983284196 +192.289,2024/06/13 13:49:46.7249,15.880335559149534,26.317927983284196 +192.535,2024/06/13 13:49:46.9709,15.644175589815553,25.74166531779429 +192.617,2024/06/13 13:49:47.0529,15.410885837575167,25.154853739719233 +192.782,2024/06/13 13:49:47.2179,15.148308960664274,25.157503850740042 +192.863,2024/06/13 13:49:47.2989,14.37654539418936,24.018048768929308 +193.028,2024/06/13 13:49:47.4639,14.110605777294712,22.82177322938192 +193.274,2024/06/13 13:49:47.7099,14.01132546832151,22.795467385718005 +193.52,2024/06/13 13:49:47.9559,13.907287430627376,22.795467385718005 +193.601,2024/06/13 13:49:48.0369,11.678696589213656,20.92685674757041 +193.767,2024/06/13 13:49:48.2029,11.609597694175843,18.83082579177026 +194.014,2024/06/13 13:49:48.4499,11.520546363157946,18.83082579177026 +194.094,2024/06/13 13:49:48.5299,11.569678961159394,18.8741445722272 +194.259,2024/06/13 13:49:48.6949,9.41751852519215,16.950909513454825 +194.506,2024/06/13 13:49:48.9419,9.302329457359496,14.724129855444769 +194.752,2024/06/13 13:49:49.1879,9.317145238871486,14.7648230602334 +194.833,2024/06/13 13:49:49.2689,8.572945952166986,13.48455907077919 +194.998,2024/06/13 13:49:49.4339,8.564897621355172,12.069244660154448 +195.245,2024/06/13 13:49:49.6809,8.502940667788383,12.069244660154448 +195.491,2024/06/13 13:49:49.9269,8.385880305947524,12.069244660154448 +195.572,2024/06/13 13:49:50.0079,8.477488784533165,11.404677403007359 +195.737,2024/06/13 13:49:50.1729,8.29935601988257,10.698909601761605 +195.983,2024/06/13 13:49:50.4189,7.969482020689531,9.495613022162743 +196.064,2024/06/13 13:49:50.4999,8.060475443033818,8.215838362577491 +196.23,2024/06/13 13:49:50.6659,7.755235532261833,8.314645713037528 +196.476,2024/06/13 13:49:50.9119,7.379764192720935,6.557438524302 +196.723,2024/06/13 13:49:51.1589,7.31429084564261,4.301162633521313 +196.803,2024/06/13 13:49:51.2389,7.982452018636078,4.74692883171144 +196.968,2024/06/13 13:49:51.4039,8.06268544293203,4.993328882953068 +197.215,2024/06/13 13:49:51.6509,8.285425508808459,4.774934554525329 +197.296,2024/06/13 13:49:51.7319,9.176181060251723,5.215361924162119 +197.461,2024/06/13 13:49:51.8969,9.080483049581801,5.808040403899867 +197.707,2024/06/13 13:49:52.1429,8.932441197515788,5.808040403899867 +197.954,2024/06/13 13:49:52.3899,8.618344508600135,5.796550698475776 +198.034,2024/06/13 13:49:52.4699,8.302886909649963,5.796550698475776 +198.2,2024/06/13 13:49:52.6359,7.969482020690955,5.808040403899867 +198.446,2024/06/13 13:49:52.8819,7.56094015926002,5.808040403899867 +198.692,2024/06/13 13:49:53.1279,7.325361393145654,5.946988033169957 +198.773,2024/06/13 13:49:53.2089,6.821534529216499,6.794605703546503 +198.938,2024/06/13 13:49:53.3739,6.875242942413202,7.438637868140466 +199.185,2024/06/13 13:49:53.6209,6.861855249947132,7.438637868140466 +199.266,2024/06/13 13:49:53.7019,7.039216910467107,8.542052836799048 +199.431,2024/06/13 13:49:53.8669,7.222569988677347,9.43221430347438 +199.677,2024/06/13 13:49:54.1129,7.113529282328117,9.345230512584124 +199.924,2024/06/13 13:49:54.3599,6.936824938677022,9.345230512584124 +200.004,2024/06/13 13:49:54.4399,6.936824938677022,9.626352718795768 +200.17,2024/06/13 13:49:54.6059,7.035541953160396,9.953223933312596 +200.416,2024/06/13 13:49:54.8519,7.051534438049846,9.946523680831074 +200.497,2024/06/13 13:49:54.9329,7.051534438049846,10.269696522617728 +200.663,2024/06/13 13:49:55.0989,7.035541953160553,10.583005244258363 +200.909,2024/06/13 13:49:55.3449,7.102209466800817,10.557777543908882 +201.155,2024/06/13 13:49:55.5909,7.031619881712243,10.532489417670133 +201.401,2024/06/13 13:49:55.8369,6.927871411827948,10.532489417670133 +201.483,2024/06/13 13:49:55.9189,7.103908589034009,10.762589527308627 +201.648,2024/06/13 13:49:56.0839,6.985123765758303,10.987872102155782 +201.894,2024/06/13 13:49:56.3299,6.831384639436434,10.987872102155782 +201.975,2024/06/13 13:49:56.4109,7.4532257924080465,11.567194992737004 +202.14,2024/06/13 13:49:56.5759,7.3206525681090096,12.019428716318703 +202.386,2024/06/13 13:49:56.8219,7.371582590260425,11.850457093856479 +202.468,2024/06/13 13:49:56.9039,7.636948900295165,12.205190152827061 +202.96,2024/06/13 13:49:57.3959,7.285318254471596,12.13397434204199 +203.125,2024/06/13 13:49:57.5609,7.350736924506645,11.884163131383435 +203.371,2024/06/13 13:49:57.8069,7.407979543675379,11.884163131383435 +203.452,2024/06/13 13:49:57.8879,7.4820858853247305,11.885565475258915 +203.618,2024/06/13 13:49:58.0539,7.491067477602706,11.881357947081076 +203.864,2024/06/13 13:49:58.2999,7.521616358446681,11.875745590628545 +204.11,2024/06/13 13:49:58.5459,7.5445801510188435,11.875745590628545 +204.357,2024/06/13 13:49:58.7929,7.5445801510188435,11.806777714516354 +204.437,2024/06/13 13:49:58.8729,7.077566956445176,11.376877134492283 +204.603,2024/06/13 13:49:59.0389,7.077566956445176,10.93008081702357 +204.849,2024/06/13 13:49:59.2849,7.062040342073918,10.931605554537724 +204.929,2024/06/13 13:49:59.3649,36.826090201651766,38.0600402872444 +205.095,2024/06/13 13:49:59.5309,36.826090201651766,52.83054671936177 +205.342,2024/06/13 13:49:59.7779,36.826090201651766,52.83054671936177 +205.588,2024/06/13 13:50:00.0239,36.826090201651766,52.83054671936177 +205.669,2024/06/13 13:50:00.1049,44.97846227880063,58.011493114152245 +205.834,2024/06/13 13:50:00.2699,44.97846227880063,62.766232960087706 +206.081,2024/06/13 13:50:00.5169,44.97846227880063,62.766232960087706 +206.326,2024/06/13 13:50:00.7619,44.95233746623345,62.71416639537407 +206.407,2024/06/13 13:50:00.8429,45.100194968612634,62.7301097294327 +206.573,2024/06/13 13:50:01.0089,45.100194968612634,62.798089142903066 +206.82,2024/06/13 13:50:01.2559,45.100194968612634,62.798089142903066 +206.9,2024/06/13 13:50:01.3359,45.24106567034516,62.86599504766733 +207.066,2024/06/13 13:50:01.5019,45.198718321773384,62.88189988648032 +207.312,2024/06/13 13:50:01.7479,45.198718321773384,62.82992917392156 +207.558,2024/06/13 13:50:01.9939,45.198718321773384,62.82992917392156 +207.639,2024/06/13 13:50:02.0749,45.38144843511441,62.906279495770534 +207.804,2024/06/13 13:50:02.2399,45.38144843511441,62.98253726232375 +208.052,2024/06/13 13:50:02.4879,45.38144843511441,62.98253726232375 +208.297,2024/06/13 13:50:02.7329,45.2954540866909,62.91475714541595 +208.378,2024/06/13 13:50:02.8139,45.32463997105472,62.89806568302929 +208.544,2024/06/13 13:50:02.9799,45.32463997105472,62.91528696058958 +208.789,2024/06/13 13:50:03.2249,45.341412397067025,62.92826603893251 +208.87,2024/06/13 13:50:03.3059,45.348066402403155,62.96004023717477 +209.036,2024/06/13 13:50:03.4719,45.364120715338956,62.991798407940905 +209.283,2024/06/13 13:50:03.7189,45.37892822045012,62.991798407940905 +209.528,2024/06/13 13:50:03.9639,45.392490137901916,62.991798407940905 +209.609,2024/06/13 13:50:04.0449,45.44579947206513,63.07746560116907 +209.775,2024/06/13 13:50:04.2109,45.50483111904049,63.235802095542894 +210.021,2024/06/13 13:50:04.4569,45.56596834551361,63.22921265786356 +210.267,2024/06/13 13:50:04.7029,45.6231565522716,63.22894906607257 +210.348,2024/06/13 13:50:04.7839,26.13756709782119,52.26120294571618 +210.514,2024/06/13 13:50:04.9499,26.372312196216562,38.09374401832056 +210.76,2024/06/13 13:50:05.1959,26.596516926915015,38.09374401832056 +211.006,2024/06/13 13:50:05.4419,26.810445725500305,38.09374401832056 +211.087,2024/06/13 13:50:05.5229,18.480931458836146,33.94799945013943 +211.252,2024/06/13 13:50:05.6879,18.729164668916592,29.219856262480143 +211.499,2024/06/13 13:50:05.9349,18.96227349480921,29.219856262480143 +211.745,2024/06/13 13:50:06.1809,19.18080937488954,29.219856262480143 +211.991,2024/06/13 13:50:06.4269,19.175415294697615,29.073470151783855 +212.072,2024/06/13 13:50:06.5079,23.73195624314249,33.35815742313515 +212.237,2024/06/13 13:50:06.6729,23.929133880603658,37.26660703632677 +212.484,2024/06/13 13:50:06.9199,23.9723259988073,37.151940281318645 +212.565,2024/06/13 13:50:07.0009,25.192340561934675,38.52098994920388 +212.73,2024/06/13 13:50:07.1659,25.2531095160552,39.6303755554583 +212.977,2024/06/13 13:50:07.4129,25.31150753695037,39.6303755554583 +213.222,2024/06/13 13:50:07.6579,24.935065094447943,39.322597404884974 +213.303,2024/06/13 13:50:07.7389,25.960093158184197,39.984580361267604 +213.469,2024/06/13 13:50:07.9049,26.016904319015733,40.93368620911958 +213.715,2024/06/13 13:50:08.1509,26.07143149560216,40.93368620911958 +213.795,2024/06/13 13:50:08.2309,27.14416598693781,41.94718901984574 +213.961,2024/06/13 13:50:08.3969,27.204715615571725,42.93677522435362 +214.208,2024/06/13 13:50:08.6439,27.204715615571725,42.91775079536826 +214.454,2024/06/13 13:50:08.8899,27.26761794704004,42.870735939566046 +214.534,2024/06/13 13:50:08.9699,28.207034257595986,43.82427029246085 +214.7,2024/06/13 13:50:09.1359,28.137204886956585,44.554461056105254 +214.947,2024/06/13 13:50:09.3829,28.06519503609039,44.554461056105254 +215.027,2024/06/13 13:50:09.4629,28.2177289994262,44.61427275360805 +215.193,2024/06/13 13:50:09.6289,28.001334122567812,44.56156789581504 +215.439,2024/06/13 13:50:09.8749,27.77514393643459,44.56156789581504 +215.685,2024/06/13 13:50:10.1209,27.5389170815229,44.56156789581504 +215.766,2024/06/13 13:50:10.2019,27.01810801887398,43.66386759476688 +215.931,2024/06/13 13:50:10.3669,26.784817281094398,42.747319604079664 +216.178,2024/06/13 13:50:10.6139,26.540989769242586,42.747319604079664 +216.424,2024/06/13 13:50:10.8599,26.286332273023994,42.747319604079664 +216.505,2024/06/13 13:50:10.9409,22.74620089536739,39.3361580906592 +216.67,2024/06/13 13:50:11.1059,22.50008939956696,35.59962546619463 +216.916,2024/06/13 13:50:11.3519,22.241128930248916,35.59962546619463 +216.997,2024/06/13 13:50:11.4329,22.068441085722956,35.62255839586296 +217.163,2024/06/13 13:50:11.5989,21.788850887288874,35.64547657136877 +217.409,2024/06/13 13:50:11.8449,17.175530576221174,31.536751048049744 +217.656,2024/06/13 13:50:12.0919,16.874962750065233,26.80547207816593 +217.736,2024/06/13 13:50:12.1719,16.591231585305522,26.81106736654349 +217.902,2024/06/13 13:50:12.3379,14.799658275023283,24.63736998950984 +218.148,2024/06/13 13:50:12.5839,14.695726175187346,22.81008548866049 +218.228,2024/06/13 13:50:12.6639,14.635651637374046,22.82177322938192 +218.394,2024/06/13 13:50:12.8299,14.52500816071926,22.833454987510468 +218.967,2024/06/13 13:50:13.4029,12.671853142652694,21.085540068966694 +219.133,2024/06/13 13:50:13.5689,12.578946102812585,19.22064861895491 +219.38,2024/06/13 13:50:13.8159,12.46977956095634,19.22064861895491 +219.625,2024/06/13 13:50:14.0609,9.775938088860409,16.81467612930244 +219.706,2024/06/13 13:50:14.1419,9.668053804556887,14.07716827585245 +219.872,2024/06/13 13:50:14.3079,9.556907593914088,14.152738250953417 +220.118,2024/06/13 13:50:14.5539,9.42386308274331,14.152738250953417 +220.364,2024/06/13 13:50:14.7999,5.317072913531072,10.658330075579382 +220.445,2024/06/13 13:50:14.8809,5.724418356237801,7.12039324756716 +220.611,2024/06/13 13:50:15.0469,5.767626655858611,7.234178138070235 +220.857,2024/06/13 13:50:15.2929,4.429395018495755,6.016643582596529 +220.938,2024/06/13 13:50:15.3739,10.075348315475527,9.357706271660094 +221.103,2024/06/13 13:50:15.5389,10.07192524599516,12.452576707921404 +221.349,2024/06/13 13:50:15.7849,10.064390395000789,12.452576707921404 +221.596,2024/06/13 13:50:16.0319,10.071297557055614,12.419071355513395 +221.676,2024/06/13 13:50:16.1119,13.379560668353852,14.964402204342589 +221.842,2024/06/13 13:50:16.2779,13.434772177014302,16.49444350885069 +222.088,2024/06/13 13:50:16.5239,13.473046741763726,16.49444350885069 +222.416,2024/06/13 13:50:16.8519,14.391448610319095,17.00392111641704 +222.827,2024/06/13 13:50:17.2629,14.360105977261078,17.49857137025763 +223.073,2024/06/13 13:50:17.5089,14.312963338884076,17.49857137025763 +223.154,2024/06/13 13:50:17.5899,15.233659042269075,18.185158784019457 +223.321,2024/06/13 13:50:17.7569,15.122336376078932,18.846750383023593 +223.566,2024/06/13 13:50:18.0019,14.995171636690594,18.846750383023593 +223.647,2024/06/13 13:50:18.0829,14.847461952697497,18.84763468802739 +223.812,2024/06/13 13:50:18.2479,14.591920296213727,18.840559085830407 +224.058,2024/06/13 13:50:18.4939,14.411043019835903,18.83259585576738 +224.305,2024/06/13 13:50:18.7409,14.212023402577989,18.83259585576738 +224.386,2024/06/13 13:50:18.8219,14.032351782639525,18.96751609111395 +224.551,2024/06/13 13:50:18.9869,13.805754255915769,19.10148336299217 +224.798,2024/06/13 13:50:19.2339,13.521205142507535,19.100610810477587 +224.877,2024/06/13 13:50:19.3129,13.995278349928517,19.439650202614242 +225.044,2024/06/13 13:50:19.4799,13.916871428049202,19.81413636775522 +225.29,2024/06/13 13:50:19.7259,13.832703212349527,19.81413636775522 +225.536,2024/06/13 13:50:19.9719,13.483962376814064,19.760229418371303 +225.617,2024/06/13 13:50:20.0529,13.830708794098452,19.978321584490857 +225.783,2024/06/13 13:50:20.2189,13.736644506533509,20.24681044839738 +226.029,2024/06/13 13:50:20.4649,13.636538138905362,20.24681044839738 +226.275,2024/06/13 13:50:20.7109,13.632449455653488,20.206434618705003 +226.356,2024/06/13 13:50:20.7919,13.77775151400388,20.305171754998774 +226.522,2024/06/13 13:50:20.9579,13.675256622023177,20.443417848621433 +226.768,2024/06/13 13:50:21.2039,11.890303206598718,18.719864671875523 +226.848,2024/06/13 13:50:21.2839,12.119187788119367,17.042104721346284 +227.014,2024/06/13 13:50:21.4499,12.030086803750478,17.26074544547058 +227.26,2024/06/13 13:50:21.6959,11.934158450894625,17.26074544547058 +227.507,2024/06/13 13:50:21.9429,9.579012019221445,15.079787796915447 +227.753,2024/06/13 13:50:22.1889,9.579012019221445,13.389050252600693 +227.999,2024/06/13 13:50:22.4349,9.579012019221445,13.389050252600693 +228.245,2024/06/13 13:50:22.6809,8.344658970464398,12.651745597610894 +228.491,2024/06/13 13:50:22.9269,8.344658970464398,11.868726413000962 +228.738,2024/06/13 13:50:23.1739,8.492322428517676,11.937336386313323 +228.819,2024/06/13 13:50:23.2549,7.072774415393802,11.78558441486887 +228.984,2024/06/13 13:50:23.4199,7.2906805572951185,11.631852818876277 +229.23,2024/06/13 13:50:23.6659,7.452531776857673,11.633285577743433 +229.477,2024/06/13 13:50:23.9129,7.654613213500247,11.633285577743433 +229.557,2024/06/13 13:50:23.9929,7.654613213500247,11.701851705321399 +229.723,2024/06/13 13:50:24.1589,7.654613213500247,11.701851705321399 +229.97,2024/06/13 13:50:24.4059,7.654613213500247,11.701851705321399 +230.215,2024/06/13 13:50:24.6509,7.397498800659933,11.458621208504974 +230.296,2024/06/13 13:50:24.7319,7.469862821680934,11.233877335986895 +230.462,2024/06/13 13:50:24.8979,7.469862821680934,11.25759003221086 +230.708,2024/06/13 13:50:25.1439,6.537601233256574,10.584579979070181 +230.788,2024/06/13 13:50:25.2239,6.542610115730335,9.880958118185369 +230.954,2024/06/13 13:50:25.3899,6.542610115730335,9.896127188619461 +231.2,2024/06/13 13:50:25.6359,6.542610115730335,9.896127188619461 +231.446,2024/06/13 13:50:25.8819,5.726425937966047,9.334523733610267 +231.528,2024/06/13 13:50:25.9639,5.7798699424593885,8.784455968736292 +232.019,2024/06/13 13:50:26.4549,5.777980397274262,8.814760348415605 +232.186,2024/06/13 13:50:26.6219,5.777980397274262,8.816650913659524 +232.432,2024/06/13 13:50:26.8679,5.301918975956595,8.491171886141512 +232.678,2024/06/13 13:50:27.1139,5.301918975956595,8.15270916117254 +232.925,2024/06/13 13:50:27.3609,5.301918975956595,8.15270916117254 +233.005,2024/06/13 13:50:27.4409,4.76396917484503,7.816648898345122 +233.171,2024/06/13 13:50:27.6069,4.76396917484503,7.465476095557023 +233.251,2024/06/13 13:50:27.6869,5.668627111863576,8.084965470963168 +233.418,2024/06/13 13:50:27.8539,5.668627111863576,8.660254037844387 +233.663,2024/06/13 13:50:28.0989,5.668627111863576,8.660254037844387 +233.91,2024/06/13 13:50:28.3459,5.668627111863576,8.660254037844387 +233.99,2024/06/13 13:50:28.4259,7.190431061528493,9.789450103725608 +234.156,2024/06/13 13:50:28.5919,7.190431061528493,10.801234497346433 +234.402,2024/06/13 13:50:28.8379,7.014271166701382,10.725359356838974 +234.975,2024/06/13 13:50:29.4109,8.14135180393401,11.067971810589327 +235.141,2024/06/13 13:50:29.5769,8.018656407075216,10.774970997640782 +235.221,2024/06/13 13:50:29.6569,8.738868124189016,11.16243700990066 +235.387,2024/06/13 13:50:29.8229,8.534244742995403,11.536897329871667 +235.633,2024/06/13 13:50:30.0689,8.524541987225154,11.465891446663303 +235.88,2024/06/13 13:50:30.3159,8.50618436279175,11.465891446663303 +235.96,2024/06/13 13:50:30.3959,8.589220723889142,11.502173707608488 +236.126,2024/06/13 13:50:30.5619,8.548442084320001,11.538341879721424 +236.372,2024/06/13 13:50:30.8079,8.372368346181657,11.515207336387824 +236.619,2024/06/13 13:50:31.0549,8.308422537249607,11.492026221109429 +236.698,2024/06/13 13:50:31.1339,8.3489967736514,11.54411827151241 +236.865,2024/06/13 13:50:31.3009,8.325904734932816,11.583033569262703 +236.945,2024/06/13 13:50:31.3809,8.39410028175937,11.661903789690601 +237.111,2024/06/13 13:50:31.5469,8.28271985979631,11.753013797887473 +237.357,2024/06/13 13:50:31.7929,8.160811882080974,11.753013797887473 +237.604,2024/06/13 13:50:32.0399,8.144104418633782,11.717508267545622 +237.684,2024/06/13 13:50:32.1199,8.43099099723167,11.970797801316335 +237.85,2024/06/13 13:50:32.2859,8.275778256280487,12.239281024635394 +238.097,2024/06/13 13:50:32.5329,8.108531054517009,12.239281024635394 +238.342,2024/06/13 13:50:32.7779,7.928487847012628,12.239281024635394 +238.423,2024/06/13 13:50:32.8589,46.88925568667676,48.13834230631545 +238.589,2024/06/13 13:50:33.0249,46.88925568667676,66.95271963607354 +238.836,2024/06/13 13:50:33.2719,46.80524580090069,66.93678609952329 +239.081,2024/06/13 13:50:33.5169,46.843355985667536,66.86478894006919 +239.161,2024/06/13 13:50:33.5969,55.364715515731824,72.32841765170865 +239.328,2024/06/13 13:50:33.7639,55.31769270709658,77.46956391598789 +239.574,2024/06/13 13:50:34.0099,55.26929891267696,77.46956391598789 +239.654,2024/06/13 13:50:34.0899,55.241590611905075,77.33520112686935 +240.313,2024/06/13 13:50:34.7489,55.1947961065295,77.20060448813425 +240.393,2024/06/13 13:50:34.8289,55.20415609874582,77.29575236281315 +240.559,2024/06/13 13:50:34.9949,55.136778721794,77.19671841039185 +240.885,2024/06/13 13:50:35.3209,55.331228321682765,77.31321577410509 +241.298,2024/06/13 13:50:35.7339,55.3166018188174,77.4785991957349 +241.544,2024/06/13 13:50:35.9799,55.3166018188174,77.42351064114827 +241.872,2024/06/13 13:50:36.3079,55.51544260668443,77.65758172902373 +242.363,2024/06/13 13:50:36.7989,55.64820741502574,77.6595132614157 +242.529,2024/06/13 13:50:36.9649,55.66612292390488,77.84707230632804 +242.776,2024/06/13 13:50:37.2119,55.66612292390488,77.84171974804599 +242.856,2024/06/13 13:50:37.2919,55.64523298561132,77.85221041606118 +243.022,2024/06/13 13:50:37.4579,55.64523298561132,77.8626996706382 +243.268,2024/06/13 13:50:37.7039,55.66505951289993,77.85499341724973 +243.514,2024/06/13 13:50:37.9499,55.66505951289993,77.84728640100437 +243.594,2024/06/13 13:50:38.0299,56.22209652735316,78.09545441317312 +243.761,2024/06/13 13:50:38.1969,56.22209652735316,78.34283630300858 +244.007,2024/06/13 13:50:38.4429,56.22209652735316,78.34283630300858 +244.253,2024/06/13 13:50:38.6889,56.22209652735316,78.34283630300858 +244.333,2024/06/13 13:50:38.7689,56.64464751372373,78.51878756068511 +244.5,2024/06/13 13:50:38.9359,56.64464751372373,78.69434541312356 +245.072,2024/06/13 13:50:39.5079,57.439713523442656,79.16080680067209 +245.238,2024/06/13 13:50:39.6739,57.439713523442656,79.62453558210979 +245.484,2024/06/13 13:50:39.9199,32.36366630268783,64.59540747349355 +245.731,2024/06/13 13:50:40.1669,32.36366630268783,44.77797077432905 +245.977,2024/06/13 13:50:40.4129,32.36366630268783,44.77797077432905 +246.057,2024/06/13 13:50:40.4929,35.649781157136694,47.51175293195008 +246.223,2024/06/13 13:50:40.6589,22.986477784113497,41.70771311560169 +246.47,2024/06/13 13:50:40.9059,22.986477784113497,31.135189095298585 +246.55,2024/06/13 13:50:40.9859,29.496171580919533,36.46825103200499 +246.716,2024/06/13 13:50:41.1519,29.502698103771955,41.11487970714901 +246.963,2024/06/13 13:50:41.3989,29.502698103771955,41.11447433690476 +247.208,2024/06/13 13:50:41.6439,29.08451813942103,40.935314827175816 +247.288,2024/06/13 13:50:41.7239,32.27861823873998,43.545378629654834 +247.454,2024/06/13 13:50:41.8899,31.373702290330982,45.795924127226286 +248.028,2024/06/13 13:50:42.4639,32.93644175381313,47.04005385484446 +248.193,2024/06/13 13:50:42.6289,32.93644175381313,48.604526538173374 +248.44,2024/06/13 13:50:42.8759,31.886093967524083,48.229658924773666 +248.52,2024/06/13 13:50:42.9559,31.74939586718257,49.37543248755735 +248.686,2024/06/13 13:50:43.1219,31.87816245299194,50.44270677379106 +248.932,2024/06/13 13:50:43.3679,32.00511812518321,50.44270677379106 +249.179,2024/06/13 13:50:43.6149,31.980310034224054,50.42651418979239 +249.259,2024/06/13 13:50:43.6949,31.914469027909107,50.83699440368205 +249.425,2024/06/13 13:50:43.8609,32.046661382227676,51.26012095186667 +249.671,2024/06/13 13:50:44.1069,32.17702471547464,51.26012095186667 +249.752,2024/06/13 13:50:44.1879,32.239834003166905,50.860593783399736 +249.918,2024/06/13 13:50:44.3539,32.35961723485368,50.457903246171455 +250.164,2024/06/13 13:50:44.5999,32.477684646538954,50.457903246171455 +250.41,2024/06/13 13:50:44.8459,32.59405488418302,50.457903246171455 +250.49,2024/06/13 13:50:44.9259,33.196731593724344,50.226155204899634 +250.982,2024/06/13 13:50:45.4179,34.4252647132123,49.95064230484596 +251.148,2024/06/13 13:50:45.5839,33.92705156046177,49.55367460306719 +251.395,2024/06/13 13:50:45.8309,34.007453544065136,48.80505438305887 +251.641,2024/06/13 13:50:46.0769,34.08645195523547,48.80505438305887 +251.721,2024/06/13 13:50:46.1569,35.498032971245145,49.321732870341584 +251.888,2024/06/13 13:50:46.3239,35.56383284878857,49.83305462575351 +252.134,2024/06/13 13:50:46.5699,32.36787466524243,47.23381557034465 +252.38,2024/06/13 13:50:46.8159,32.418970606304406,44.482955537299155 +252.46,2024/06/13 13:50:46.8959,32.963389653845944,44.66393026443896 +252.627,2024/06/13 13:50:47.0629,27.03784066056705,40.62593588665579 +252.876,2024/06/13 13:50:47.3119,27.146770092163575,35.93837317779794 +253.119,2024/06/13 13:50:47.5549,27.248136074605803,35.93837317779794 +253.199,2024/06/13 13:50:47.6349,27.25983951850628,35.96804137008297 +253.365,2024/06/13 13:50:47.8009,22.14840229312101,32.57606483294138 +253.612,2024/06/13 13:50:48.0479,22.194568042084278,28.74079562804992 +253.692,2024/06/13 13:50:48.1279,18.294525278683967,26.696441710460217 +253.858,2024/06/13 13:50:48.2939,18.30146655765356,24.481966151979435 +254.104,2024/06/13 13:50:48.5399,18.29779209091332,24.481966151979435 +254.351,2024/06/13 13:50:48.7869,13.609538575200526,22.073362528924616 +254.431,2024/06/13 13:50:48.8669,16.111001452922824,20.91411006952005 +254.597,2024/06/13 13:50:49.0329,16.13520460317116,22.893230440459906 +254.843,2024/06/13 13:50:49.2789,16.15588572867948,22.893230440459906 +255.09,2024/06/13 13:50:49.5259,14.465972757339097,21.929432277193133 +255.169,2024/06/13 13:50:49.6049,16.25589194687555,22.410562985639906 +255.336,2024/06/13 13:50:49.7719,16.26999212286681,23.80686175594479 +255.582,2024/06/13 13:50:50.0179,16.27338282305599,23.80616166737791 +255.829,2024/06/13 13:50:50.2649,16.280056200303598,23.80546155822231 +255.909,2024/06/13 13:50:50.3449,16.910888827011075,24.387155088967088 +256.074,2024/06/13 13:50:50.5099,16.92444331755649,24.95529335965952 +256.321,2024/06/13 13:50:50.7569,16.698440976165134,24.737960034462557 +256.401,2024/06/13 13:50:50.8369,16.732547950612087,25.516008047237065 +256.567,2024/06/13 13:50:51.0029,16.777927481506907,25.740370367705797 +256.813,2024/06/13 13:50:51.2489,16.819836400860613,25.740370367705797 +257.06,2024/06/13 13:50:51.4959,16.85830059201003,25.740370367705797 +257.139,2024/06/13 13:50:51.5749,16.06055351818053,25.547994050414214 +257.306,2024/06/13 13:50:51.7419,16.13078729791483,25.354158107366402 +257.552,2024/06/13 13:50:51.9879,16.19723972510868,25.354158107366402 +257.632,2024/06/13 13:50:52.0679,16.738317250184174,25.978195985608135 +257.798,2024/06/13 13:50:52.2339,16.224148313724985,26.282440272293336 +258.044,2024/06/13 13:50:52.4799,16.30601750571087,25.973704651692127 +258.291,2024/06/13 13:50:52.7269,16.30601750571087,25.942243542145693 +258.371,2024/06/13 13:50:52.8069,16.229708816730515,25.965361541869584 +258.537,2024/06/13 13:50:52.9729,16.313910572297406,25.94738265541761 +258.783,2024/06/13 13:50:53.2189,16.21270255503163,25.926820090400597 +258.863,2024/06/13 13:50:53.2989,16.506390263780485,26.111300235721696 +259.03,2024/06/13 13:50:53.4659,15.86005609417382,25.59557253380618 +259.276,2024/06/13 13:50:53.7119,15.791165870201786,24.876360934295302 +259.522,2024/06/13 13:50:53.9579,15.718391014730178,24.876360934295302 +259.603,2024/06/13 13:50:54.0389,16.325144557631983,25.259321711663862 +259.768,2024/06/13 13:50:54.2039,14.140509997468168,23.885839598668774 +260.015,2024/06/13 13:50:54.4509,14.090063344693071,21.99621179506447 +260.262,2024/06/13 13:50:54.6979,14.035423165985,21.99621179506447 +260.341,2024/06/13 13:50:54.7769,14.447248475254332,22.297234507146097 +260.508,2024/06/13 13:50:54.9439,12.582783347955964,21.117922877656945 +260.833,2024/06/13 13:50:55.2689,12.778574021500859,19.72139278381051 +261.246,2024/06/13 13:50:55.6819,12.828174810373696,20.09062799748513 +261.492,2024/06/13 13:50:55.9279,12.862491133559994,20.09062799748513 +261.572,2024/06/13 13:50:56.0079,12.154607470363182,19.572940504686567 +261.739,2024/06/13 13:50:56.1749,12.212863013580986,19.041183436610936 +261.985,2024/06/13 13:50:56.4209,12.255001324816494,19.041183436610936 +262.065,2024/06/13 13:50:56.5009,10.860875687054108,17.803557696894927 +262.232,2024/06/13 13:50:56.6679,10.921927748667601,16.47321057555772 +262.478,2024/06/13 13:50:56.9139,10.964938898938795,16.47321057555772 +262.723,2024/06/13 13:50:57.1589,10.990120955689271,16.47321057555772 +262.803,2024/06/13 13:50:57.2389,9.538849782463426,15.253414918196734 +262.97,2024/06/13 13:50:57.4059,9.59429907354536,13.927191628848462 +263.217,2024/06/13 13:50:57.6529,9.629277673103925,13.927191628848462 +263.296,2024/06/13 13:50:57.7319,8.674775163537024,13.238831771220099 +263.463,2024/06/13 13:50:57.8989,8.75621290100948,12.512660255384011 +264.035,2024/06/13 13:50:58.4709,8.866830868758063,12.891857895586655 +264.201,2024/06/13 13:50:58.6369,9.277893637287384,13.676013064242566 +264.448,2024/06/13 13:50:58.8839,9.689667443849928,13.63207003111902 +264.694,2024/06/13 13:50:59.1299,9.980498225418378,13.587984888618816 +264.774,2024/06/13 13:50:59.2099,10.254463564150873,14.39791651594077 +264.941,2024/06/13 13:50:59.3769,10.09865132682005,14.898545790333587 +265.187,2024/06/13 13:50:59.6229,10.393908472433708,14.571661996262929 +265.267,2024/06/13 13:50:59.7029,10.49444297394238,15.067625338232078 +265.433,2024/06/13 13:50:59.8689,10.768408456668594,15.547775832360502 +265.679,2024/06/13 13:51:00.1149,9.902049015867556,14.91755118420357 +265.925,2024/06/13 13:51:00.3609,10.10951526288852,14.259499757471625 +266.172,2024/06/13 13:51:00.6079,10.290940106514299,14.259499757471625 +266.252,2024/06/13 13:51:00.6879,10.757301716968165,15.14815720365572 +266.418,2024/06/13 13:51:00.8539,10.023879534369138,15.564917817536548 +266.497,2024/06/13 13:51:00.9329,11.595877190454102,16.9627041869312 +267.157,2024/06/13 13:51:01.5929,11.086130923391547,17.854037825283854 +267.236,2024/06/13 13:51:01.6719,13.76635912934718,19.43450539633052 +267.403,2024/06/13 13:51:01.8389,13.76635912934718,21.24460715883759 +267.649,2024/06/13 13:51:02.0849,13.614605071920693,21.067352309517524 +267.729,2024/06/13 13:51:02.1649,15.951939312073893,22.723702749918786 +267.896,2024/06/13 13:51:02.3319,15.951939312073893,24.42130217658346 +268.142,2024/06/13 13:51:02.5779,15.940298097848494,24.420619702756657 +268.389,2024/06/13 13:51:02.8249,15.940298097848494,24.419937209856485 +268.468,2024/06/13 13:51:02.9039,17.580716970459278,25.823761667632134 +268.634,2024/06/13 13:51:03.0699,17.580716970459278,27.155110016348672 +268.88,2024/06/13 13:51:03.3159,17.578363136956337,27.137919350360423 +269.127,2024/06/13 13:51:03.5629,17.53751315939875,27.098585448936877 +269.206,2024/06/13 13:51:03.6419,18.398057118813277,27.721231333883182 +269.373,2024/06/13 13:51:03.8089,18.255813119214075,28.09389020172654 +269.619,2024/06/13 13:51:04.0549,18.205121169099627,27.855579931736 +269.699,2024/06/13 13:51:04.1349,18.31700422225618,27.835828231495707 +269.866,2024/06/13 13:51:04.3019,18.079136384622526,27.614006108012166 +270.112,2024/06/13 13:51:04.5479,17.825462867391963,27.614006108012166 +270.192,2024/06/13 13:51:04.6279,17.63555056351083,27.7158197906298 +270.358,2024/06/13 13:51:04.7939,17.555298509199822,27.37699764400764 +270.605,2024/06/13 13:51:05.0409,17.26786930529687,26.929537686339884 +270.851,2024/06/13 13:51:05.2869,16.952570754089145,26.959846686013133 +270.931,2024/06/13 13:51:05.3669,16.96748072929023,26.688324538394436 +271.59,2024/06/13 13:51:06.0259,16.613109350715597,26.414011433328337 +271.67,2024/06/13 13:51:06.1059,16.296145796355493,26.477034073576544 +271.836,2024/06/13 13:51:06.2719,15.878272583309135,26.53990705836527 +272.082,2024/06/13 13:51:06.5179,15.41625504265579,26.53990705836527 +272.162,2024/06/13 13:51:06.5979,15.652439125410911,26.227212331215583 +272.329,2024/06/13 13:51:06.7649,15.188319771167736,25.910744232203495 +272.575,2024/06/13 13:51:07.0109,14.648722042254951,24.750084174941037 +272.821,2024/06/13 13:51:07.2569,14.471692542942314,23.958992744548617 +272.901,2024/06/13 13:51:07.3369,13.29804237602162,22.63699037710917 +273.068,2024/06/13 13:51:07.5039,13.148313995319834,21.23283620558811 +273.313,2024/06/13 13:51:07.7489,12.98190606411299,21.23283620558811 +273.393,2024/06/13 13:51:07.8289,10.895744186575559,19.277793788017686 +273.56,2024/06/13 13:51:07.9959,10.733394017104784,17.100682247598584 +273.806,2024/06/13 13:51:08.2419,10.550153891125,17.100682247598584 +274.052,2024/06/13 13:51:08.4879,10.344913792743405,17.100682247598584 +274.132,2024/06/13 13:51:08.5679,8.04984471899828,14.896308267486948 +274.299,2024/06/13 13:51:08.7349,7.81723706959706,12.303116136437414 +274.545,2024/06/13 13:51:08.9809,7.772335260543121,12.2542509631012 +274.792,2024/06/13 13:51:09.2279,7.877218716820407,12.320714265009151 +274.871,2024/06/13 13:51:09.3069,6.103419053113986,10.922453936730518 +275.037,2024/06/13 13:51:09.4729,6.264752703560162,9.316651759081692 +275.284,2024/06/13 13:51:09.7199,6.386857914731643,9.316651759081692 +275.364,2024/06/13 13:51:09.7999,6.083801745466687,9.033271832508971 +275.53,2024/06/13 13:51:09.9659,6.204281058128928,8.740709353364863 +275.776,2024/06/13 13:51:10.2119,6.113486128524313,8.833647793144875 +276.023,2024/06/13 13:51:10.4589,5.970810222459357,8.508818954473059 +276.27,2024/06/13 13:51:10.7059,5.875039740631883,8.171087238958268 +276.349,2024/06/13 13:51:10.7849,5.84276741231958,8.244189873278433 +276.515,2024/06/13 13:51:10.9509,5.84276741231958,8.217866714259445 +276.595,2024/06/13 13:51:11.0309,5.815259356150115,8.211780156174015 +276.761,2024/06/13 13:51:11.1969,5.815259356150115,8.205689083394114 +277.007,2024/06/13 13:51:11.4429,5.56889968289439,8.0 +277.254,2024/06/13 13:51:11.6899,5.56889968289439,7.788880963698615 +277.334,2024/06/13 13:51:11.7699,5.70349761615196,7.8655366420014 +277.501,2024/06/13 13:51:11.9369,4.785034140329237,7.309810759064377 +277.746,2024/06/13 13:51:12.1819,4.78851595564321,6.620674688680402 +277.827,2024/06/13 13:51:12.2629,5.060552875158647,6.779872171852997 +277.993,2024/06/13 13:51:12.4289,5.060552875158647,6.97614984548545 +278.239,2024/06/13 13:51:12.6749,3.508446294625997,6.052547672950072 +278.485,2024/06/13 13:51:12.9209,3.508446294625997,4.959838707054898 +278.565,2024/06/13 13:51:13.0009,4.231925732131145,5.579725202313581 +278.732,2024/06/13 13:51:13.1679,4.064989290392896,6.069047152011041 +278.978,2024/06/13 13:51:13.4139,4.064989290392896,6.0 +279.058,2024/06/13 13:51:13.4939,6.151814983090683,7.76530746332687 +279.225,2024/06/13 13:51:13.6609,6.151814983090683,9.197825830053535 +279.47,2024/06/13 13:51:13.9059,6.151814983090683,9.197825830053535 +279.797,2024/06/13 13:51:14.2329,8.650891921325332,11.304866208850063 +280.21,2024/06/13 13:51:14.6459,8.650891921325332,13.076696830622021 +280.289,2024/06/13 13:51:14.7249,11.593696265790909,15.488705562441298 +280.456,2024/06/13 13:51:14.8919,11.593696265790909,17.57270610919104 +280.702,2024/06/13 13:51:15.1379,11.790508553662564,17.57270610919104 +281.028,2024/06/13 13:51:15.4639,14.213519547634844,20.239400518131294 +281.441,2024/06/13 13:51:15.8769,14.318262592861071,22.51962107437275 +281.52,2024/06/13 13:51:15.9559,16.01181316776774,24.37074749229767 +281.687,2024/06/13 13:51:16.1229,16.01181316776774,25.6865723676788 +281.933,2024/06/13 13:51:16.3689,16.01181316776774,25.6865723676788 +282.013,2024/06/13 13:51:16.4489,17.379602259908008,26.96850014368615 +282.18,2024/06/13 13:51:16.6159,17.240556302194857,28.170906978654415 +282.426,2024/06/13 13:51:16.8619,17.240556302194857,28.149600352402874 +282.672,2024/06/13 13:51:17.1079,17.222045481726845,28.149008271458992 +282.752,2024/06/13 13:51:17.1879,18.166060308343916,29.17418950602284 +282.919,2024/06/13 13:51:17.3549,18.166060308343916,30.165101248517853 +283.244,2024/06/13 13:51:17.6799,18.902167971503594,31.080004290003995 +283.658,2024/06/13 13:51:18.0939,18.994252004102467,31.949960876345372 +283.983,2024/06/13 13:51:18.4189,19.30648155115278,32.52896145488407 +284.396,2024/06/13 13:51:18.8319,19.327813322154093,33.11545459952699 +284.476,2024/06/13 13:51:18.9119,19.450172117548025,33.396606614045886 +284.642,2024/06/13 13:51:19.0779,19.450172117548025,33.66699669805233 +284.889,2024/06/13 13:51:19.3249,19.450172117548025,33.66699669805233 +285.214,2024/06/13 13:51:19.6499,19.313535245472355,33.82701090351713 +285.627,2024/06/13 13:51:20.0629,19.471198889817746,33.89001819611983 +285.707,2024/06/13 13:51:20.1429,19.446626040723796,34.125259461773084 +285.874,2024/06/13 13:51:20.3099,19.446626040723796,34.453833845693666 +286.12,2024/06/13 13:51:20.5559,19.44742396438454,34.09936460796105 +286.693,2024/06/13 13:51:21.1289,19.40378562424521,34.04849482723135 +286.859,2024/06/13 13:51:21.2949,19.2725163135853,34.206724485106726 +286.938,2024/06/13 13:51:21.3739,19.067816057308267,33.830952297169134 +287.105,2024/06/13 13:51:21.5409,18.93379269314699,33.450959129248695 +287.351,2024/06/13 13:51:21.7869,17.987990885362876,32.379520276454585 +287.597,2024/06/13 13:51:22.0329,17.860281497567637,31.271392677653484 +287.677,2024/06/13 13:51:22.1129,17.48891274394888,31.335283627246778 +287.844,2024/06/13 13:51:22.2799,16.302069539304277,29.77750829065454 +288.09,2024/06/13 13:51:22.5259,15.91648462313723,28.03331351564896 +288.169,2024/06/13 13:51:22.6049,14.733221510990079,26.38686541949738 +288.337,2024/06/13 13:51:22.7729,14.591920296211205,25.08585258666725 +288.908,2024/06/13 13:51:23.3439,14.40900899541081,25.10975905897944 diff --git a/data/group_results/correlation_heatmap_with_values_final.png b/data/group_results/correlation_heatmap_with_values_final.png index c1c5d66..39ffcf1 100644 Binary files a/data/group_results/correlation_heatmap_with_values_final.png and b/data/group_results/correlation_heatmap_with_values_final.png differ diff --git a/group/Duration.ipynb b/group/Duration.ipynb deleted file mode 100755 index 163ba00..0000000 --- a/group/Duration.ipynb +++ /dev/null @@ -1,51 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "37424c1a-ec85-4b3f-919c-4c379779f958", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport warnings\n\nwarnings.filterwarnings('ignore')\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# melt to long format\nmelted = duration_df.melt(id_vars='Participant', var_name='Session', value_name='answer_duration')\n\n# average per participant\naverage_durations = melted.groupby('Participant')['answer_duration'].mean().reset_index()\n\nprint(\"Average Answer Duration for Each Participant Across Three Sessions\")\nprint(average_durations)\n\n# plot averages\nplt.figure(figsize=(12, 6))\nsns.barplot(data=average_durations, x='Participant', y='answer_duration', palette='viridis')\nplt.title('Average Answer Duration for Each Participant Across Three Sessions')\nplt.ylabel('Average Answer Duration (seconds)')\nplt.xlabel('Participant')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dae37082-838c-4a81-8855-f8073dfd7f72", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport warnings\n\nwarnings.filterwarnings('ignore')\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# pivot by session\naverage_durations = duration_df.set_index('Participant')\naverage_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n\nprint(\"Average durations (seconds):\")\nprint(average_durations)\n\n# plot averages\nfig, ax = plt.subplots(figsize=(15, 8))\nsns.lineplot(data=average_durations.T, markers=True, dashes=False, ax=ax)\n\n# reference lines\nax.axhline(y=300, color='blue', linestyle=':', label='Normal')\nax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\nax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Participant / Duration Levels')\n\nplt.title('Average Answer Duration for Each Participant Across Three Sessions')\nplt.ylabel('Average Answer Duration (seconds)')\nplt.xlabel('Session')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f8988c93-f6ed-4697-9859-bf31f2d8a5fa", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport warnings\n\nwarnings.filterwarnings('ignore')\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# pivot by session\nstd_durations = duration_df.set_index('Participant')\nstd_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n\nprint(\"Standard deviations (seconds):\")\nprint(std_durations)\n\n# transpose for plotting\nstd_durations = std_durations.T\n\n# plot std deviations\nfig, ax = plt.subplots(figsize=(15, 8))\nsns.lineplot(data=std_durations, markers=True, dashes=False, ax=ax)\n\n# reference lines\nax.axhline(y=300, color='blue', linestyle=':', label='Normal')\nax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\nax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Participant / Duration Levels')\n\nplt.title('Standard Deviation of Answer Duration for Each Participant Across Three Sessions')\nplt.ylabel('Standard Deviation of Answer Duration (seconds)')\nplt.xlabel('Session')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group Correlation Matrix.ipynb b/group/Group Correlation Matrix.ipynb deleted file mode 100755 index a4dfe51..0000000 --- a/group/Group Correlation Matrix.ipynb +++ /dev/null @@ -1,49 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "fc01ce5e-4428-4d17-8b76-e686ca1dcbd3", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load csv results\nhrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\npupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\nduration_results_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# combine with suffixes\ncombined_results = pd.concat([\n hrv_results_df.set_index('Participant').add_suffix('_HRV_SDNN'),\n pupil_results_df.set_index('Participant').add_suffix('_Pupil_STD'),\n duration_results_df.set_index('Participant').add_suffix('_Duration_STD'),\n], axis=1)\n\n# correlation matrix\ncorrelation_matrix = combined_results.corr(method='spearman')\n\n# plot heatmap\nplt.figure(figsize=(12, 10))\nsns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\")\nplt.title('Correlation Matrix of HRV SDNN, Pupil Dilation STD, and Duration STD')\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7e1d1e66-c067-4f04-aa2d-75f049f98e1e", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load hrv + pupil\nhrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\npupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n\n# indexed lookup\nhrv_idx = hrv_results_df.set_index('Participant')\npupil_idx = pupil_results_df.set_index('Participant')\n\nfor pid in hrv_idx.index:\n for s in [1, 2, 3]:\n col = f'Session {s:02d}'\n print(f\"Participant {pid}, Session {s}, HRV SDNN: {hrv_idx.loc[pid, col]:.2f}\")\n print(f\"Participant {pid}, Session {s}, Pupil Dilation STD: {pupil_idx.loc[pid, col]:.2f}\")\n\n# combine with suffixes\ncombined_results = pd.concat([\n hrv_results_df.set_index('Participant').add_suffix('_HRV_SDNN'),\n pupil_results_df.set_index('Participant').add_suffix('_Pupil_STD'),\n], axis=1)\n\n# correlation matrix\ncorrelation_matrix = combined_results.corr(method='spearman')\n\n# plot heatmap\nplt.figure(figsize=(10, 8))\nsns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\")\nplt.title('Correlation Matrix of HRV SDNN and Pupil Dilation STD')\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "id": "panyy1gp0ur", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load data\nhrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\npupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n\n# combine all\ncombined = pd.concat([\n hrv_df.add_suffix('_HRV_SDNN'),\n pupil_df.add_suffix('_Pupil_STD'),\n duration_df.add_suffix('_Duration_STD'),\n], axis=1)\n\ncols = combined.columns\nn = len(cols)\n\n# correlation with p-values\nr_matrix = np.zeros((n, n))\np_matrix = np.zeros((n, n))\n\nfor i in range(n):\n for j in range(n):\n r, p = stats.pearsonr(combined.iloc[:, i], combined.iloc[:, j])\n r_matrix[i, j] = r\n p_matrix[i, j] = p\n\nr_df = pd.DataFrame(r_matrix, index=cols, columns=cols)\np_df = pd.DataFrame(p_matrix, index=cols, columns=cols)\n\n# annotation with significance stars\nannot = np.empty_like(r_matrix, dtype=object)\nfor i in range(n):\n for j in range(n):\n stars = \"***\" if p_df.iloc[i, j] < 0.001 else \"**\" if p_df.iloc[i, j] < 0.01 else \"*\" if p_df.iloc[i, j] < 0.05 else \"\"\n annot[i, j] = f\"{r_df.iloc[i, j]:.2f}{stars}\"\n\n# plot heatmap\nplt.figure(figsize=(14, 11))\nsns.heatmap(r_df, annot=annot, fmt='', cmap='coolwarm', vmin=-1, vmax=1, center=0)\nplt.title('Correlation Matrix with Significance (* p<.05, ** p<.01, *** p<.001)')\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group Duration.ipynb b/group/Group Duration.ipynb deleted file mode 100755 index 4ba9fb9..0000000 --- a/group/Group Duration.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "9cf4e728-1f2f-4b52-a344-7913e354a0e1", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib as mpl\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\nparticipants = duration_df['Participant'].tolist()\n\n# build stats dict\nstats = {}\nfor _, row in duration_df.iterrows():\n pid = row['Participant']\n session_data = pd.DataFrame({\n 'Session': ['S01', 'S02', 'S03'],\n 'STD of Duration (s)': [row['Session 01'], row['Session 02'], row['Session 03']]\n })\n stats[pid] = session_data\n\n# plot STD duration\ndef plot_std_duration(stats, title):\n fig, ax = plt.subplots()\n colors = mpl.colormaps['tab10']\n \n for i, p_str in enumerate(stats):\n x = stats[p_str]['Session']\n y_std = stats[p_str]['STD of Duration (s)']\n ax.plot(x, y_std, marker='o', label=f'{p_str} - STD of Duration (s)', color=colors(i))\n \n plt.title(title)\n plt.ylabel('Time (seconds)')\n plt.xlabel('Session')\n plt.legend()\n plt.grid(True)\n plt.show()\n plt.close()\n\nplot_std_duration(stats, 'STD of Duration by Session (10 Participants)')\n\nfor p_str in stats:\n print(f\"Statistics for {p_str}:\\n\", stats[p_str])" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group Eye.ipynb b/group/Group Eye.ipynb deleted file mode 100755 index eaf15ea..0000000 --- a/group/Group Eye.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "f648e1a5-8777-489e-a303-e578f4284bef", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load pupil data\nresults_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n\nprint(results_df)\n\n# plot standard deviations\nax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n\nplt.title('Standard Deviation of Pupil Dilation for Each Participant Across Three Sessions')\nplt.ylabel('Standard Deviation of Pupil Dilation')\nplt.xlabel('Participant')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\n\n# reference lines\nax.axhline(y=0.1, color='blue', linestyle=':', label='Normal')\nax.axhline(y=0.2, color='purple', linestyle=':', label='Moderate Variation')\nax.axhline(y=0.3, color='green', linestyle=':', label='High Variation')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Session / Pupil Dilation Levels')\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group HRV.ipynb b/group/Group HRV.ipynb deleted file mode 100755 index 04ebcd8..0000000 --- a/group/Group HRV.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "873a74e8-b192-4cd1-9181-f42b24e340c3", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load hrv data\nresults_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n\nprint(results_df)\n\n# plot standard deviations\nax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n\nplt.title('Standard Deviation of HRV (SDNN) for Each Participant Across Three Sessions')\nplt.ylabel('Standard Deviation of HRV (SDNN) (ms)')\nplt.xlabel('Participant')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\n\n# reference lines\nax.axhline(y=50, color='blue', linestyle=':', label='Normal SDNN')\nax.axhline(y=100, color='purple', linestyle=':', label='Moderate SDNN')\nax.axhline(y=150, color='green', linestyle=':', label='High SDNN')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Session / HRV Levels')\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group SD.ipynb b/group/Group SD.ipynb deleted file mode 100755 index e933bfb..0000000 --- a/group/Group SD.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "f49bbf98-6722-473e-98f8-035c65362383", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nresults_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\nprint(results_df)\n\n# plot standard deviations\nax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n\nplt.title('Standard Deviation of Psychometric Test Duration for Each Participant Across Three Sessions')\nplt.ylabel('Standard Deviation of Test Duration (seconds)')\nplt.xlabel('Participant')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\n\n# reference lines\nax.axhline(y=30, color='blue', linestyle=':', label='Normal')\nax.axhline(y=60, color='purple', linestyle=':', label='Moderate Variation')\nax.axhline(y=90, color='green', linestyle=':', label='High Variation')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Session / Duration Levels')\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group Time.ipynb b/group/Group Time.ipynb deleted file mode 100755 index fbcd489..0000000 --- a/group/Group Time.ipynb +++ /dev/null @@ -1,43 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "03c87567-033a-4a6a-9cbf-9bb6ef4dd361", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# build session stats\nrows = []\nfor _, row in duration_df.iterrows():\n for s_idx, s_name in enumerate(['Session 01', 'Session 02', 'Session 03'], 1):\n rows.append({\n 'Participant': row['Participant'],\n 'Session': f'Session {s_idx:02d}',\n 'Count': '-',\n 'Duration STD (s)': round(row[s_name], 2)\n })\n\nsession_stats = pd.DataFrame(rows)\n\nprint(\"Duration STD During 3 Sessions for Each Participant\")\nprint(session_stats.to_string(index=False))\n\n# convert to numeric\nsession_stats['Duration STD (s)'] = pd.to_numeric(session_stats['Duration STD (s)'])\n\n# visualize results bar\nplt.figure(figsize=(15, 8))\nsns.barplot(x='Session', y='Duration STD (s)', hue='Participant', data=session_stats, errorbar=None)\nplt.title('Duration STD for Each Session by Participant')\nplt.ylabel('Duration STD (s)')\nplt.xlabel('Session')\nplt.legend(title='Participant', bbox_to_anchor=(1.05, 1), loc='upper left')\nsns.despine(trim=True)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()\n\n# plot per participant\nsns.catplot(x='Session', y='Duration STD (s)', col='Participant', data=session_stats, kind='bar', col_wrap=4, height=4, aspect=1)\nplt.subplots_adjust(top=0.9)\nplt.suptitle('Duration STD for Each Session by Participant')\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "520fa50f-44ab-4525-bc34-18e9d263d65e", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.cluster import KMeans\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# pivot by session\nmean_durations = duration_df.set_index('Participant')\nmean_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n\n# standardize data\nscaler = StandardScaler()\nmean_durations_scaled = scaler.fit_transform(mean_durations)\n\n# kmeans clustering\nkmeans = KMeans(n_clusters=3, n_init=10, random_state=42)\nclusters = kmeans.fit_predict(mean_durations_scaled)\n\n# add cluster labels\nmean_durations['Cluster'] = clusters\n\n# build session stats\nrows = []\nfor _, row in duration_df.iterrows():\n for s_idx, s_name in enumerate(['Session 01', 'Session 02', 'Session 03'], 1):\n rows.append({\n 'Participant': row['Participant'],\n 'Session': f'Session {s_idx:02d}',\n 'Count': '-',\n 'Duration STD (s)': round(row[s_name], 2)\n })\n\nsession_stats = pd.DataFrame(rows)\n\nprint(\"Duration STD During 3 Sessions for Each Participant\")\nprint(session_stats.to_string(index=False))\n\n# convert to numeric\nsession_stats['Duration STD (s)'] = pd.to_numeric(session_stats['Duration STD (s)'])\n\n# plot clusters heatmap\nplt.figure(figsize=(10, 6))\nsns.heatmap(mean_durations.drop('Cluster', axis=1).assign(Cluster=clusters).sort_values('Cluster').drop('Cluster', axis=1), annot=True, cmap='coolwarm', center=0)\nplt.title('Participant Clusters Based on Answer Duration Patterns')\nplt.show()\nplt.close()\n\n# cluster assignments\nprint(\"Cluster Assignments:\")\nprint(mean_durations[['Cluster']].reset_index())\n\n# visualize clusters\nplt.figure(figsize=(15, 8))\nfor cluster in range(kmeans.n_clusters):\n participants_in_cluster = mean_durations[mean_durations['Cluster'] == cluster].index\n cluster_data = mean_durations.loc[participants_in_cluster].drop('Cluster', axis=1).T\n for i, participant in enumerate(cluster_data.columns):\n label = f'Cluster {cluster+1}' if i == 0 else '_nolegend_'\n sns.lineplot(data=cluster_data[participant], label=label, marker='o')\n\nplt.title('Duration STD Across Sessions by Clusters')\nplt.ylabel('Duration STD (s)')\nplt.xlabel('Session')\nplt.legend(title='Cluster', bbox_to_anchor=(1.05, 1), loc='upper left')\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()\n\n# visualize results bar\nplt.figure(figsize=(15, 8))\nsns.barplot(x='Session', y='Duration STD (s)', hue='Participant', data=session_stats, errorbar=None)\nplt.title('Duration STD for Each Session by Participant')\nplt.ylabel('Duration STD (s)')\nplt.xlabel('Session')\nplt.legend(title='Participant', bbox_to_anchor=(1.05, 1), loc='upper left')\nsns.despine(trim=True)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()\n\n# plot per participant\nsns.catplot(x='Session', y='Duration STD (s)', col='Participant', data=session_stats, kind='bar', col_wrap=4, height=4, aspect=1)\nplt.subplots_adjust(top=0.9)\nplt.suptitle('Duration STD for Each Session by Participant')\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group.ipynb b/group/Group.ipynb deleted file mode 100755 index 50431ea..0000000 --- a/group/Group.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "c4d36a62-d66f-46de-bc39-ed23aedf61a7", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load csv data\nhrv = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\npupil = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n\n# melt and merge\nhrv_melted = hrv.melt(id_vars='Participant', var_name='Session', value_name='HRV_SDNN')\npupil_melted = pupil.melt(id_vars='Participant', var_name='Session', value_name='Pupil_STD')\ndf = hrv_melted.merge(pupil_melted, on=['Participant', 'Session'])\n\ndf_pivot = df.pivot(index='Participant', columns='Session', values=['HRV_SDNN', 'Pupil_STD'])\n\n# correlation matrix\ncorrelation_matrix = df_pivot.corr(method='spearman')\n\n# plot heatmap\nplt.figure(figsize=(12, 10))\nsns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\", vmin=-1, vmax=1, center=0)\nplt.title('Spearman Correlation Matrix of HRV SDNN and Pupil Dilation STD')\nplt.savefig(f'{OUTPUT}/correlation_heatmap_with_values_final.png', dpi=150, bbox_inches='tight')\nplt.show()\nplt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/Group_Analysis.ipynb b/group/Group_Analysis.ipynb deleted file mode 100755 index cc373f2..0000000 --- a/group/Group_Analysis.ipynb +++ /dev/null @@ -1,65 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "2ad06e9b-63f3-4e1f-a5af-af663dc39830", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load csv results\nhrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\npupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\nduration_results_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# indexed lookup\nhrv_idx = hrv_results_df.set_index('Participant')\npupil_idx = pupil_results_df.set_index('Participant')\ndur_idx = duration_results_df.set_index('Participant')\n\nfor pid in hrv_idx.index:\n for s in [1, 2, 3]:\n col = f'Session {s:02d}'\n print(f\"{pid}, Session {s} — HRV SDNN: {hrv_idx.loc[pid, col]:.2f}, Pupil STD: {pupil_idx.loc[pid, col]:.2f}, Duration STD: {dur_idx.loc[pid, col]:.2f}s\")\n\n# plot results\nfig, axes = plt.subplots(3, 1, figsize=(15, 12))\n\nfor ax, df, title, ylabel in zip(axes,\n [hrv_results_df, pupil_results_df, duration_results_df],\n ['Standard Deviation of HRV (SDNN) for Each Participant Across Three Sessions',\n 'Standard Deviation of Pupil Dilation for Each Participant Across Three Sessions',\n 'Standard Deviation of Psychometric Test Duration for Each Participant Across Three Sessions'],\n ['SDNN (ms)', 'Pupil Dilation STD', 'Duration STD (seconds)']):\n\n df.set_index('Participant').plot(ax=ax, marker='o')\n ax.set_title(title)\n ax.set_ylabel(ylabel)\n ax.grid(axis='y', linestyle='--', alpha=0.7)\n\nplt.tight_layout()\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a0baf20d-a1f8-4591-981f-989b8eff8925", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport warnings\n\nwarnings.filterwarnings('ignore', category=FutureWarning, module='seaborn')\n\nOUTPUT = '../data/group_results'\n\n# load duration data\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# pivot by session\nstd_durations = duration_df.set_index('Participant')\nstd_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n\nprint(\"Standard deviations (seconds):\")\nprint(std_durations)\n\n# transpose for plotting\nstd_durations = std_durations.T\n\nfig, ax = plt.subplots(figsize=(15, 8))\nsns.lineplot(data=std_durations, markers=True, dashes=False, ax=ax)\n\n# reference lines\nax.axhline(y=300, color='blue', linestyle=':', label='Normal')\nax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\nax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n\n# merge legend handles\nhandles, labels = ax.get_legend_handles_labels()\nax.legend(handles, labels, title='Participant / Duration Levels')\n\nplt.title('Standard Deviation of Answer Duration for Each Participant Across Three Sessions')\nplt.ylabel('Standard Deviation of Answer Duration (seconds)')\nplt.xlabel('Session')\nplt.xticks(rotation=45)\nplt.grid(axis='y', linestyle='--', alpha=0.7)\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "id": "us254hio62", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load data\nhrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\npupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n\nmetrics = {\n 'HRV SDNN (ms)': hrv_df,\n 'Pupil Dilation STD': pupil_df,\n 'Duration STD (s)': duration_df\n}\n\n# --- normality tests ---\nprint(\"=== Shapiro-Wilk Normality Tests ===\\n\")\nfor name, df in metrics.items():\n for col in df.columns:\n stat, p = stats.shapiro(df[col].dropna())\n normal = \"normal\" if p > 0.05 else \"non-normal\"\n print(f\"{name} {col}: W={stat:.3f}, p={p:.3f} ({normal})\")\n print()\n\n# --- repeated measures (Friedman test) ---\nprint(\"=== Friedman Test (repeated measures) ===\\n\")\nfor name, df in metrics.items():\n s1, s2, s3 = df.iloc[:, 0], df.iloc[:, 1], df.iloc[:, 2]\n stat, p = stats.friedmanchisquare(s1, s2, s3)\n sig = \"*\" if p < 0.05 else \"ns\"\n print(f\"{name}: chi2={stat:.3f}, p={p:.3f} {sig}\")\nprint()\n\n# --- pairwise Wilcoxon tests ---\nprint(\"=== Pairwise Wilcoxon Signed-Rank Tests ===\\n\")\nfrom itertools import combinations\npairs = list(combinations(range(3), 2))\n\nfor name, df in metrics.items():\n print(f\"--- {name} ---\")\n p_values = []\n for i, j in pairs:\n stat, p = stats.wilcoxon(df.iloc[:, i], df.iloc[:, j])\n p_values.append(p)\n\n # Holm-Bonferroni correction\n sorted_idx = np.argsort(p_values)\n corrected = np.zeros(len(p_values))\n m = len(p_values)\n for rank, idx in enumerate(sorted_idx):\n corrected[idx] = min(p_values[idx] * (m - rank), 1.0)\n\n for k, (i, j) in enumerate(pairs):\n sig = \"*\" if corrected[k] < 0.05 else \"ns\"\n print(f\" {df.columns[i]} vs {df.columns[j]}: p={p_values[k]:.3f}, p_corrected={corrected[k]:.3f} {sig}\")\n print()\n\n# --- Cohen's d effect sizes ---\nprint(\"=== Cohen's d (Session pairs) ===\\n\")\ndef cohens_d(x, y):\n nx, ny = len(x), len(y)\n pooled_std = np.sqrt(((nx-1)*x.std()**2 + (ny-1)*y.std()**2) / (nx+ny-2))\n return (x.mean() - y.mean()) / pooled_std if pooled_std > 0 else 0.0\n\nfor name, df in metrics.items():\n print(f\"--- {name} ---\")\n for i, j in pairs:\n d = cohens_d(df.iloc[:, i], df.iloc[:, j])\n size = \"large\" if abs(d) >= 0.8 else \"medium\" if abs(d) >= 0.5 else \"small\"\n print(f\" {df.columns[i]} vs {df.columns[j]}: d={d:.3f} ({size})\")\n print()\n\n# --- 95% confidence intervals ---\nprint(\"=== 95% Confidence Intervals ===\\n\")\nfor name, df in metrics.items():\n print(f\"--- {name} ---\")\n for col in df.columns:\n data = df[col].dropna()\n n = len(data)\n mean = data.mean()\n se = data.std() / np.sqrt(n)\n ci = stats.t.interval(0.95, df=n-1, loc=mean, scale=se)\n print(f\" {col}: mean={mean:.3f}, 95% CI=[{ci[0]:.3f}, {ci[1]:.3f}]\")\n print()", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "id": "dul8xt7omfk", - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nOUTPUT = '../data/group_results'\n\n# load data\nhrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\npupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n\n# melt to long format\ndef melt_df(df, value_name):\n return df.melt(id_vars='Participant', var_name='Session', value_name=value_name)\n\nhrv_long = melt_df(hrv_df, 'HRV SDNN (ms)')\npupil_long = melt_df(pupil_df, 'Pupil Dilation STD')\nduration_long = melt_df(duration_df, 'Duration STD (s)')\n\n# violin plots\nfig, axes = plt.subplots(1, 3, figsize=(18, 6))\n\nfor ax, data, col, title in zip(axes,\n [hrv_long, pupil_long, duration_long],\n ['HRV SDNN (ms)', 'Pupil Dilation STD', 'Duration STD (s)'],\n ['HRV SDNN', 'Pupil Dilation STD', 'Duration STD']):\n\n sns.violinplot(data=data, x='Session', y=col, ax=ax, inner='box', palette='Set2')\n sns.stripplot(data=data, x='Session', y=col, ax=ax, color='black', alpha=0.5, size=4)\n ax.set_title(title)\n ax.grid(axis='y', linestyle='--', alpha=0.5)\n\nplt.suptitle('Distribution of Biometric Metrics Across Sessions', y=1.02)\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "id": "z8dswzoao2k", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\n\nOUTPUT = '../data/group_results'\n\n# load data\nhrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\npupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\nduration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n\nmetrics = {\n 'HRV SDNN': hrv_df,\n 'Pupil STD': pupil_df,\n 'Duration STD': duration_df\n}\n\n# --- Jonckheere-Terpstra trend test ---\ndef jonckheere_test(groups):\n k = len(groups)\n J = 0\n for i in range(k):\n for j in range(i+1, k):\n for xi in groups[i]:\n for xj in groups[j]:\n if xj > xi:\n J += 1\n elif xj == xi:\n J += 0.5\n \n # expected and variance\n ns = [len(g) for g in groups]\n N = sum(ns)\n E_J = (N**2 - sum(n**2 for n in ns)) / 4\n var_num = N**2 * (2*N + 3) - sum(n**2 * (2*n + 3) for n in ns)\n var_J = var_num / 72\n z = (J - E_J) / np.sqrt(var_J) if var_J > 0 else 0\n p = 2 * (1 - stats.norm.cdf(abs(z)))\n return J, z, p\n\nprint(\"=== Habituation Analysis (Trend Tests) ===\\n\")\nprint(\"Tests whether biometric variability decreases across sessions\\n\")\n\nfor name, df in metrics.items():\n groups = [df.iloc[:, i].dropna().values for i in range(3)]\n J, z, p = jonckheere_test(groups)\n \n means = [g.mean() for g in groups]\n direction = \"decreasing\" if means[2] < means[0] else \"increasing\"\n sig = \"*\" if p < 0.05 else \"ns\"\n \n print(f\"{name}: J={J:.0f}, z={z:.2f}, p={p:.3f} {sig}\")\n print(f\" Session means: {[f'{m:.2f}' for m in means]} ({direction})\")\n print()\n\n# --- participant profiling ---\nprint(\"=== Participant Stress Profiles ===\\n\")\n\nprofiles = []\nfor pid in hrv_df.index:\n hrv_vals = hrv_df.loc[pid].values\n pupil_vals = pupil_df.loc[pid].values\n dur_vals = duration_df.loc[pid].values\n \n # trend direction\n hrv_slope = np.polyfit(range(3), hrv_vals, 1)[0]\n pupil_slope = np.polyfit(range(3), pupil_vals, 1)[0]\n dur_slope = np.polyfit(range(3), dur_vals, 1)[0]\n \n # classify pattern\n if hrv_slope < 0 and pupil_slope < 0:\n pattern = \"habituating\"\n elif hrv_slope > 0 and pupil_slope > 0:\n pattern = \"sensitizing\"\n else:\n pattern = \"mixed\"\n \n # overall variability\n overall = np.mean([np.std(hrv_vals), np.std(pupil_vals), np.std(dur_vals)])\n \n profiles.append({\n 'Participant': pid,\n 'HRV slope': hrv_slope,\n 'Pupil slope': pupil_slope,\n 'Duration slope': dur_slope,\n 'Pattern': pattern,\n 'Variability': overall\n })\n\nprof_df = pd.DataFrame(profiles)\nprint(prof_df.to_string(index=False, float_format='%.3f'))\n\n# pattern counts\nprint(f\"\\nPatterns: {prof_df['Pattern'].value_counts().to_dict()}\")\n\n# --- trajectory plots ---\nfig, axes = plt.subplots(1, 3, figsize=(18, 6))\nsessions = ['S01', 'S02', 'S03']\n\nfor ax, (name, df) in zip(axes, metrics.items()):\n for pid in df.index:\n vals = df.loc[pid].values\n pattern = prof_df[prof_df['Participant'] == pid]['Pattern'].iloc[0]\n color = 'tab:blue' if pattern == 'habituating' else 'tab:red' if pattern == 'sensitizing' else 'tab:gray'\n alpha = 0.7 if pattern != 'mixed' else 0.3\n ax.plot(sessions, vals, 'o-', color=color, alpha=alpha, linewidth=1.5, label=pid)\n \n # group mean\n mean_vals = df.mean().values\n ax.plot(sessions, mean_vals, 's--', color='black', linewidth=2.5, markersize=10, label='Group Mean', zorder=10)\n \n ax.set_title(name)\n ax.set_ylabel(name)\n ax.grid(axis='y', linestyle='--', alpha=0.5)\n\n# legend\nfrom matplotlib.lines import Line2D\nlegend_elements = [\n Line2D([0], [0], color='tab:blue', label='Habituating'),\n Line2D([0], [0], color='tab:red', label='Sensitizing'),\n Line2D([0], [0], color='tab:gray', label='Mixed'),\n Line2D([0], [0], color='black', linestyle='--', marker='s', label='Group Mean')\n]\nfig.legend(handles=legend_elements, loc='lower center', ncol=4, bbox_to_anchor=(0.5, -0.05))\nplt.suptitle('Individual Trajectories Across Sessions (colored by adaptation pattern)')\nplt.tight_layout()\nplt.show()\nplt.close()\n\n# --- session change heatmap ---\nfig, ax = plt.subplots(figsize=(10, 8))\nchange_data = pd.DataFrame(index=hrv_df.index)\nfor name, df in metrics.items():\n change_data[f'{name}\\nS1→S2'] = ((df.iloc[:, 1] - df.iloc[:, 0]) / df.iloc[:, 0] * 100)\n change_data[f'{name}\\nS2→S3'] = ((df.iloc[:, 2] - df.iloc[:, 1]) / df.iloc[:, 1] * 100)\n\nimport seaborn as sns\nsns.heatmap(change_data, cmap='RdYlGn_r', center=0, annot=True, fmt='.0f',\n linewidths=0.5, cbar_kws={'label': '% Change'}, ax=ax)\nax.set_title('Session-to-Session % Change per Participant')\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python [conda env:base] *", - "language": "python", - "name": "conda-base-py" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/group/README.md b/group/README.md index 117e47f..7398285 100644 --- a/group/README.md +++ b/group/README.md @@ -13,17 +13,20 @@ Group-level analysis of physiological data from 10 participants across 3 session ## Notebooks ``` -├── Group_Analysis.ipynb # Full cohort psychometric + physiology analysis -├── Group Correlation Matrix.ipynb # Cross-modal correlation analysis -├── Group HRV.ipynb # Heart rate variability across sessions -├── Group Eye.ipynb # Pupil dilation across sessions -├── Group Duration.ipynb # Test completion time analysis -├── Group SD.ipynb # Standard deviation metrics -├── Group Time.ipynb # Response timing analysis -└── Duration.ipynb # Per-session duration breakdowns +├── group_analysis.ipynb # Full-cohort psychometric + physiology analysis +├── group_correlation_matrix.ipynb # Cross-modal correlation matrix (FDR-corrected) +├── group_correlation_heatmap.ipynb # Generates the README headline heatmap PNG +├── group_hrv.ipynb # Heart-rate variability across sessions +├── group_eye.ipynb # Pupil dilation across sessions +├── group_duration.ipynb # Test-completion-time variability +├── group_sd.ipynb # Standard-deviation metrics +├── group_time.ipynb # Response-timing analysis +└── duration.ipynb # Per-session duration breakdowns ``` -Summary CSVs live in `../data/group_results/`. +Summary CSVs live in `../data/group_results/`. See +[`../DATA_PROVENANCE.md`](../DATA_PROVENANCE.md) for how they are generated and +which rows are regenerable from committed data. ## Analysis approach diff --git a/group/duration.ipynb b/group/duration.ipynb new file mode 100755 index 0000000..8809d41 --- /dev/null +++ b/group/duration.ipynb @@ -0,0 +1,181 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f4bb835a", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Duration\n", + "\n", + "Per-session response-duration breakdowns.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37424c1a-ec85-4b3f-919c-4c379779f958", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# melt to long format\n", + "melted = duration_df.melt(id_vars='Participant', var_name='Session', value_name='answer_duration')\n", + "\n", + "# average per participant\n", + "average_durations = melted.groupby('Participant')['answer_duration'].mean().reset_index()\n", + "\n", + "print(\"Average Answer Duration for Each Participant Across Three Sessions\")\n", + "print(average_durations)\n", + "\n", + "# plot averages\n", + "plt.figure(figsize=(12, 6))\n", + "sns.barplot(data=average_durations, x='Participant', y='answer_duration', palette='viridis')\n", + "plt.title('Average Answer Duration for Each Participant Across Three Sessions')\n", + "plt.ylabel('Average Answer Duration (seconds)')\n", + "plt.xlabel('Participant')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dae37082-838c-4a81-8855-f8073dfd7f72", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# pivot by session\n", + "average_durations = duration_df.set_index('Participant')\n", + "average_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n", + "\n", + "print(\"Average durations (seconds):\")\n", + "print(average_durations)\n", + "\n", + "# plot averages\n", + "fig, ax = plt.subplots(figsize=(15, 8))\n", + "sns.lineplot(data=average_durations.T, markers=True, dashes=False, ax=ax)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=300, color='blue', linestyle=':', label='Normal')\n", + "ax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\n", + "ax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Participant / Duration Levels')\n", + "\n", + "plt.title('Average Answer Duration for Each Participant Across Three Sessions')\n", + "plt.ylabel('Average Answer Duration (seconds)')\n", + "plt.xlabel('Session')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8988c93-f6ed-4697-9859-bf31f2d8a5fa", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# pivot by session\n", + "std_durations = duration_df.set_index('Participant')\n", + "std_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n", + "\n", + "print(\"Standard deviations (seconds):\")\n", + "print(std_durations)\n", + "\n", + "# transpose for plotting\n", + "std_durations = std_durations.T\n", + "\n", + "# plot std deviations\n", + "fig, ax = plt.subplots(figsize=(15, 8))\n", + "sns.lineplot(data=std_durations, markers=True, dashes=False, ax=ax)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=300, color='blue', linestyle=':', label='Normal')\n", + "ax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\n", + "ax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Participant / Duration Levels')\n", + "\n", + "plt.title('Standard Deviation of Answer Duration for Each Participant Across Three Sessions')\n", + "plt.ylabel('Standard Deviation of Answer Duration (seconds)')\n", + "plt.xlabel('Session')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_analysis.ipynb b/group/group_analysis.ipynb new file mode 100755 index 0000000..23cc1d0 --- /dev/null +++ b/group/group_analysis.ipynb @@ -0,0 +1,432 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f350ea54", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Analysis\n", + "\n", + "Full-cohort psychometric + physiology analysis across 10 participants.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ad06e9b-63f3-4e1f-a5af-af663dc39830", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load csv results\n", + "hrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "pupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "duration_results_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# indexed lookup\n", + "hrv_idx = hrv_results_df.set_index('Participant')\n", + "pupil_idx = pupil_results_df.set_index('Participant')\n", + "dur_idx = duration_results_df.set_index('Participant')\n", + "\n", + "for pid in hrv_idx.index:\n", + " for s in [1, 2, 3]:\n", + " col = f'Session {s:02d}'\n", + " print(f\"{pid}, Session {s} — HRV SDNN: {hrv_idx.loc[pid, col]:.2f}, Pupil STD: {pupil_idx.loc[pid, col]:.2f}, Duration STD: {dur_idx.loc[pid, col]:.2f}s\")\n", + "\n", + "# plot results\n", + "fig, axes = plt.subplots(3, 1, figsize=(15, 12))\n", + "\n", + "for ax, df, title, ylabel in zip(axes,\n", + " [hrv_results_df, pupil_results_df, duration_results_df],\n", + " ['Standard Deviation of HRV (SDNN) for Each Participant Across Three Sessions',\n", + " 'Standard Deviation of Pupil Dilation for Each Participant Across Three Sessions',\n", + " 'Standard Deviation of Psychometric Test Duration for Each Participant Across Three Sessions'],\n", + " ['SDNN (ms)', 'Pupil Dilation STD', 'Duration STD (seconds)']):\n", + "\n", + " df.set_index('Participant').plot(ax=ax, marker='o')\n", + " ax.set_title(title)\n", + " ax.set_ylabel(ylabel)\n", + " ax.grid(axis='y', linestyle='--', alpha=0.7)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0baf20d-a1f8-4591-981f-989b8eff8925", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "\n", + "warnings.filterwarnings('ignore', category=FutureWarning, module='seaborn')\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# pivot by session\n", + "std_durations = duration_df.set_index('Participant')\n", + "std_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n", + "\n", + "print(\"Standard deviations (seconds):\")\n", + "print(std_durations)\n", + "\n", + "# transpose for plotting\n", + "std_durations = std_durations.T\n", + "\n", + "fig, ax = plt.subplots(figsize=(15, 8))\n", + "sns.lineplot(data=std_durations, markers=True, dashes=False, ax=ax)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=300, color='blue', linestyle=':', label='Normal')\n", + "ax.axhline(y=600, color='purple', linestyle=':', label='Moderate Duration')\n", + "ax.axhline(y=900, color='green', linestyle=':', label='High Duration')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Participant / Duration Levels')\n", + "\n", + "plt.title('Standard Deviation of Answer Duration for Each Participant Across Three Sessions')\n", + "plt.ylabel('Standard Deviation of Answer Duration (seconds)')\n", + "plt.xlabel('Session')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "us254hio62", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load data\n", + "hrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\n", + "pupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n", + "\n", + "metrics = {\n", + " 'HRV SDNN (ms)': hrv_df,\n", + " 'Pupil Dilation STD': pupil_df,\n", + " 'Duration STD (s)': duration_df\n", + "}\n", + "\n", + "# --- normality tests ---\n", + "print(\"=== Shapiro-Wilk Normality Tests ===\\n\")\n", + "for name, df in metrics.items():\n", + " for col in df.columns:\n", + " stat, p = stats.shapiro(df[col].dropna())\n", + " normal = \"normal\" if p > 0.05 else \"non-normal\"\n", + " print(f\"{name} {col}: W={stat:.3f}, p={p:.3f} ({normal})\")\n", + " print()\n", + "\n", + "# --- repeated measures (Friedman test) ---\n", + "print(\"=== Friedman Test (repeated measures) ===\\n\")\n", + "for name, df in metrics.items():\n", + " s1, s2, s3 = df.iloc[:, 0], df.iloc[:, 1], df.iloc[:, 2]\n", + " stat, p = stats.friedmanchisquare(s1, s2, s3)\n", + " sig = \"*\" if p < 0.05 else \"ns\"\n", + " print(f\"{name}: chi2={stat:.3f}, p={p:.3f} {sig}\")\n", + "print()\n", + "\n", + "# --- pairwise Wilcoxon tests ---\n", + "print(\"=== Pairwise Wilcoxon Signed-Rank Tests ===\\n\")\n", + "from itertools import combinations\n", + "pairs = list(combinations(range(3), 2))\n", + "\n", + "for name, df in metrics.items():\n", + " print(f\"--- {name} ---\")\n", + " p_values = []\n", + " for i, j in pairs:\n", + " stat, p = stats.wilcoxon(df.iloc[:, i], df.iloc[:, j])\n", + " p_values.append(p)\n", + "\n", + " # Holm-Bonferroni correction\n", + " sorted_idx = np.argsort(p_values)\n", + " corrected = np.zeros(len(p_values))\n", + " m = len(p_values)\n", + " for rank, idx in enumerate(sorted_idx):\n", + " corrected[idx] = min(p_values[idx] * (m - rank), 1.0)\n", + "\n", + " for k, (i, j) in enumerate(pairs):\n", + " sig = \"*\" if corrected[k] < 0.05 else \"ns\"\n", + " print(f\" {df.columns[i]} vs {df.columns[j]}: p={p_values[k]:.3f}, p_corrected={corrected[k]:.3f} {sig}\")\n", + " print()\n", + "\n", + "# --- Cohen's d effect sizes ---\n", + "print(\"=== Cohen's d (Session pairs) ===\\n\")\n", + "def cohens_d(x, y):\n", + " nx, ny = len(x), len(y)\n", + " pooled_std = np.sqrt(((nx-1)*x.std()**2 + (ny-1)*y.std()**2) / (nx+ny-2))\n", + " return (x.mean() - y.mean()) / pooled_std if pooled_std > 0 else 0.0\n", + "\n", + "for name, df in metrics.items():\n", + " print(f\"--- {name} ---\")\n", + " for i, j in pairs:\n", + " d = cohens_d(df.iloc[:, i], df.iloc[:, j])\n", + " size = \"large\" if abs(d) >= 0.8 else \"medium\" if abs(d) >= 0.5 else \"small\"\n", + " print(f\" {df.columns[i]} vs {df.columns[j]}: d={d:.3f} ({size})\")\n", + " print()\n", + "\n", + "# --- 95% confidence intervals ---\n", + "print(\"=== 95% Confidence Intervals ===\\n\")\n", + "for name, df in metrics.items():\n", + " print(f\"--- {name} ---\")\n", + " for col in df.columns:\n", + " data = df[col].dropna()\n", + " n = len(data)\n", + " mean = data.mean()\n", + " se = data.std() / np.sqrt(n)\n", + " ci = stats.t.interval(0.95, df=n-1, loc=mean, scale=se)\n", + " print(f\" {col}: mean={mean:.3f}, 95% CI=[{ci[0]:.3f}, {ci[1]:.3f}]\")\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dul8xt7omfk", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load data\n", + "hrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "pupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# melt to long format\n", + "def melt_df(df, value_name):\n", + " return df.melt(id_vars='Participant', var_name='Session', value_name=value_name)\n", + "\n", + "hrv_long = melt_df(hrv_df, 'HRV SDNN (ms)')\n", + "pupil_long = melt_df(pupil_df, 'Pupil Dilation STD')\n", + "duration_long = melt_df(duration_df, 'Duration STD (s)')\n", + "\n", + "# violin plots\n", + "fig, axes = plt.subplots(1, 3, figsize=(18, 6))\n", + "\n", + "for ax, data, col, title in zip(axes,\n", + " [hrv_long, pupil_long, duration_long],\n", + " ['HRV SDNN (ms)', 'Pupil Dilation STD', 'Duration STD (s)'],\n", + " ['HRV SDNN', 'Pupil Dilation STD', 'Duration STD']):\n", + "\n", + " sns.violinplot(data=data, x='Session', y=col, ax=ax, inner='box', palette='Set2')\n", + " sns.stripplot(data=data, x='Session', y=col, ax=ax, color='black', alpha=0.5, size=4)\n", + " ax.set_title(title)\n", + " ax.grid(axis='y', linestyle='--', alpha=0.5)\n", + "\n", + "plt.suptitle('Distribution of Biometric Metrics Across Sessions', y=1.02)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "z8dswzoao2k", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load data\n", + "hrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\n", + "pupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n", + "\n", + "metrics = {\n", + " 'HRV SDNN': hrv_df,\n", + " 'Pupil STD': pupil_df,\n", + " 'Duration STD': duration_df\n", + "}\n", + "\n", + "# --- Jonckheere-Terpstra trend test ---\n", + "def jonckheere_test(groups):\n", + " k = len(groups)\n", + " J = 0\n", + " for i in range(k):\n", + " for j in range(i+1, k):\n", + " for xi in groups[i]:\n", + " for xj in groups[j]:\n", + " if xj > xi:\n", + " J += 1\n", + " elif xj == xi:\n", + " J += 0.5\n", + " \n", + " # expected and variance\n", + " ns = [len(g) for g in groups]\n", + " N = sum(ns)\n", + " E_J = (N**2 - sum(n**2 for n in ns)) / 4\n", + " var_num = N**2 * (2*N + 3) - sum(n**2 * (2*n + 3) for n in ns)\n", + " var_J = var_num / 72\n", + " z = (J - E_J) / np.sqrt(var_J) if var_J > 0 else 0\n", + " p = 2 * (1 - stats.norm.cdf(abs(z)))\n", + " return J, z, p\n", + "\n", + "print(\"=== Habituation Analysis (Trend Tests) ===\\n\")\n", + "print(\"Tests whether biometric variability decreases across sessions\\n\")\n", + "\n", + "for name, df in metrics.items():\n", + " groups = [df.iloc[:, i].dropna().values for i in range(3)]\n", + " J, z, p = jonckheere_test(groups)\n", + " \n", + " means = [g.mean() for g in groups]\n", + " direction = \"decreasing\" if means[2] < means[0] else \"increasing\"\n", + " sig = \"*\" if p < 0.05 else \"ns\"\n", + " \n", + " print(f\"{name}: J={J:.0f}, z={z:.2f}, p={p:.3f} {sig}\")\n", + " print(f\" Session means: {[f'{m:.2f}' for m in means]} ({direction})\")\n", + " print()\n", + "\n", + "# --- participant profiling ---\n", + "print(\"=== Participant Stress Profiles ===\\n\")\n", + "\n", + "profiles = []\n", + "for pid in hrv_df.index:\n", + " hrv_vals = hrv_df.loc[pid].values\n", + " pupil_vals = pupil_df.loc[pid].values\n", + " dur_vals = duration_df.loc[pid].values\n", + " \n", + " # trend direction\n", + " hrv_slope = np.polyfit(range(3), hrv_vals, 1)[0]\n", + " pupil_slope = np.polyfit(range(3), pupil_vals, 1)[0]\n", + " dur_slope = np.polyfit(range(3), dur_vals, 1)[0]\n", + " \n", + " # classify pattern\n", + " if hrv_slope < 0 and pupil_slope < 0:\n", + " pattern = \"habituating\"\n", + " elif hrv_slope > 0 and pupil_slope > 0:\n", + " pattern = \"sensitizing\"\n", + " else:\n", + " pattern = \"mixed\"\n", + " \n", + " # overall variability\n", + " overall = np.mean([np.std(hrv_vals), np.std(pupil_vals), np.std(dur_vals)])\n", + " \n", + " profiles.append({\n", + " 'Participant': pid,\n", + " 'HRV slope': hrv_slope,\n", + " 'Pupil slope': pupil_slope,\n", + " 'Duration slope': dur_slope,\n", + " 'Pattern': pattern,\n", + " 'Variability': overall\n", + " })\n", + "\n", + "prof_df = pd.DataFrame(profiles)\n", + "print(prof_df.to_string(index=False, float_format='%.3f'))\n", + "\n", + "# pattern counts\n", + "print(f\"\\nPatterns: {prof_df['Pattern'].value_counts().to_dict()}\")\n", + "\n", + "# --- trajectory plots ---\n", + "fig, axes = plt.subplots(1, 3, figsize=(18, 6))\n", + "sessions = ['S01', 'S02', 'S03']\n", + "\n", + "for ax, (name, df) in zip(axes, metrics.items()):\n", + " for pid in df.index:\n", + " vals = df.loc[pid].values\n", + " pattern = prof_df[prof_df['Participant'] == pid]['Pattern'].iloc[0]\n", + " color = 'tab:blue' if pattern == 'habituating' else 'tab:red' if pattern == 'sensitizing' else 'tab:gray'\n", + " alpha = 0.7 if pattern != 'mixed' else 0.3\n", + " ax.plot(sessions, vals, 'o-', color=color, alpha=alpha, linewidth=1.5, label=pid)\n", + " \n", + " # group mean\n", + " mean_vals = df.mean().values\n", + " ax.plot(sessions, mean_vals, 's--', color='black', linewidth=2.5, markersize=10, label='Group Mean', zorder=10)\n", + " \n", + " ax.set_title(name)\n", + " ax.set_ylabel(name)\n", + " ax.grid(axis='y', linestyle='--', alpha=0.5)\n", + "\n", + "# legend\n", + "from matplotlib.lines import Line2D\n", + "legend_elements = [\n", + " Line2D([0], [0], color='tab:blue', label='Habituating'),\n", + " Line2D([0], [0], color='tab:red', label='Sensitizing'),\n", + " Line2D([0], [0], color='tab:gray', label='Mixed'),\n", + " Line2D([0], [0], color='black', linestyle='--', marker='s', label='Group Mean')\n", + "]\n", + "fig.legend(handles=legend_elements, loc='lower center', ncol=4, bbox_to_anchor=(0.5, -0.05))\n", + "plt.suptitle('Individual Trajectories Across Sessions (colored by adaptation pattern)')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# --- session change heatmap ---\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "change_data = pd.DataFrame(index=hrv_df.index)\n", + "for name, df in metrics.items():\n", + " change_data[f'{name}\\nS1→S2'] = ((df.iloc[:, 1] - df.iloc[:, 0]) / df.iloc[:, 0] * 100)\n", + " change_data[f'{name}\\nS2→S3'] = ((df.iloc[:, 2] - df.iloc[:, 1]) / df.iloc[:, 1] * 100)\n", + "\n", + "import seaborn as sns\n", + "sns.heatmap(change_data, cmap='RdYlGn_r', center=0, annot=True, fmt='.0f',\n", + " linewidths=0.5, cbar_kws={'label': '% Change'}, ax=ax)\n", + "ax.set_title('Session-to-Session % Change per Participant')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_correlation_heatmap.ipynb b/group/group_correlation_heatmap.ipynb new file mode 100755 index 0000000..11eaf3a --- /dev/null +++ b/group/group_correlation_heatmap.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2965c06e", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Correlation Heatmap\n", + "\n", + "Generates the README's headline cross-modal correlation heatmap (correlation_heatmap_with_values_final.png).\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c4d36a62-d66f-46de-bc39-ed23aedf61a7", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load csv data\n", + "hrv = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "pupil = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "\n", + "# melt and merge\n", + "hrv_melted = hrv.melt(id_vars='Participant', var_name='Session', value_name='HRV_SDNN')\n", + "pupil_melted = pupil.melt(id_vars='Participant', var_name='Session', value_name='Pupil_STD')\n", + "df = hrv_melted.merge(pupil_melted, on=['Participant', 'Session'])\n", + "\n", + "df_pivot = df.pivot(index='Participant', columns='Session', values=['HRV_SDNN', 'Pupil_STD'])\n", + "\n", + "# correlation matrix\n", + "correlation_matrix = df_pivot.corr(method='spearman')\n", + "\n", + "# plot heatmap\n", + "plt.figure(figsize=(12, 10))\n", + "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\", vmin=-1, vmax=1, center=0)\n", + "plt.title('Spearman Correlation Matrix of HRV SDNN and Pupil Dilation STD')\n", + "plt.savefig(f'{OUTPUT}/correlation_heatmap_with_values_final.png', dpi=150, bbox_inches='tight')\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_correlation_matrix.ipynb b/group/group_correlation_matrix.ipynb new file mode 100755 index 0000000..f3558b8 --- /dev/null +++ b/group/group_correlation_matrix.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7142c498", + "metadata": { + "mms_tag": "group_corr_caveat" + }, + "source": [ + "## ⚠️ Multiplicity and tiny-n caveat\n", + "\n", + "The correlation matrix below has **n = 10 participants** and its features are per-participant **standard deviations of only 3 session values** (very high sampling variance). Starring every pairwise correlation at p<.05 with no correction, across dozens of pairs, is an almost guaranteed source of false positives. The cell below uses **Benjamini-Hochberg FDR-adjusted** p-values across all unique pairs; at n=10 only 2 of 36 pairs survive correction (down from 6 uncorrected) — and one of those is a trivial within-metric cross-session HRV correlation inflated by P01's duplicated Session 02/03 HRV_SDNN source values." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fc01ce5e-4428-4d17-8b76-e686ca1dcbd3", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-05T00:17:23.303274Z", + "iopub.status.busy": "2026-07-05T00:17:23.303180Z", + "iopub.status.idle": "2026-07-05T00:17:24.967185Z", + "shell.execute_reply": "2026-07-05T00:17:24.966784Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABDcAAAPnCAYAAAA71Kd2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdB3hTZRcH8H/3XrSFlgIdFCh7b2RPRaYi4ABEQAUVwQGyRBFcIMpSkKkgeypTkL333hvKaOne63vO2y9pUtJSoIOE/+95oiS5SW/e3CT3nnvOec3S0tLSQERERERERERkpMwLegWIiIiIiIiIiJ4GgxtEREREREREZNQY3CAiIiIiIiIio8bgBhEREREREREZNQY3iIiIiIiIiMioMbhBREREREREREaNwQ0iIiIiIiIiMmoMbhARERERERGRUWNwg4iIiIiIiIiMGoMbRET/N2fOHJiZmeHq1au59pzyXPKc8tyUrnHjxuqS35KTk/HZZ5+hePHiMDc3R4cOHfJ9Hci4yGf3yy+/zNPvCI2ePXvCz88v279vzJ8/ypq8x/JemzJud0SUHxjcIKI8denSJfTr1w8BAQGwtbWFs7Mz6tevj59//hlxcXEwFQsWLMDEiRPxLJGDJdlhljE3NNYXLlxQ98vlxx9/fOznv337ttopP3r0KIzBrFmz8MMPP+CVV17B3Llz8fHHH2e5rOyEV6hQIduAle6Ybd26VTuWcrGwsEDhwoXV3zpz5ox2uUqVKqFEiRJIS0vL8m/L56NIkSIqGJOVxMRE9RmqWrWqen9dXV1Rvnx59O3bF2fPnn3oYFxzkc9g0aJF0apVK/zyyy+IiorK8kBL1iE2Nvah++UAvG3btnq3aZ5//PjxDy2vWYeDBw/iScjf030NMq4vvPACVqxYgWeVZgw1F3t7e/W+v/zyy5g9ezYSEhLy9O+fPn1arUNeBGGehqxPr169ULJkSbUtenl5oWHDhhg1apTB7TWriyYIVNDjXFDf6ZqLo6Oj+m2V75lly5YhNTW1QNeP251pbndExsSyoFeAiEzXP//8g1dffRU2NjZ466231MGiHJTt3LkTn376KU6dOoXp06fDVIIbJ0+exMCBA/Vu9/X1VYEFKyurAlkvS0tLdYC6Zs0adOnSRe+++fPnqx29+Pj4J3puCW6MHj1a7fBVqVIlx4/buHEjCsKWLVvg4+ODn376Kc/+xocffoiaNWsiKSkJx48fx6+//qoCH7JtyA7166+/jiFDhmDHjh1q59rQTviePXswYMAA9d5lpXPnzli3bh26deuGPn36qL8nQY2///4b9erVQ1BQkN7yX331Ffz9/dVyd+7cUesk2+qECROwevVqFXTJ7N69e5g2bRoGDx6c49cvwaP33ntP7eznJtm+NOsh291vv/2GTp06qfV79913kVfks5vd+/Aosn5yACoHO7du3cKGDRvw9ttvq0CovFeSRaQxY8aMXDs4lYNM+WxKkC5zNkhBff4uXryoPht2dnZqDGS9goODcfjwYXz33XdqfeUz8ccff+g97p133kGtWrVU4E5DxvRJx9nYye/p77//rt0+r127pr7fJcAh7/eqVatUwLMgcLsz3e2OyGikERHlgcuXL6c5OjqmBQUFpd2+ffuh+y9cuJA2ceLEp/47qampabGxsQbvi4uLS0tJScnxc82ePVtOp6dduXLlsdfjpZdeSvP19U17lvTo0SPNwcEhrWXLlmkdOnR46P5SpUqlde7cWb3mH3744bGf/8CBA+qxMm45ERMTk1aQmjRpkla+fPkcLduoUaMsl5XtI/OY/ffff+q2JUuW6C07bdo0dft3332nrl+/fj3NzMwsrV+/fgafe+zYsWr5vXv3Zrlu+/fvV8t88803D92XnJycFhIS8tA2Le9VZps3b06zs7NT263uZ2jUqFHqMVWqVEkrUqTIQ58vWV62d12a5eX/48eP17svu3XICUN/Lzg4WG3bpUuXTstPOf2O0Izh/fv3H7rvzz//TDM3N0+rXbv2I/+ePIc81+OS7VAeK9vls+L9999Ps7S0TLt69epD9929ezfLx8n7LN9leTnOBU3zOnL6nW7IuHHj1HN06dIl19YrOjr6sZbndmdc2x2RKWJZChHlie+//x7R0dGYOXMmvL29H7o/MDAQH330kfa6pOB//fXXKm1UzkzJ2ZUvvvjiofROTUq8nCGpUaOGOhsjZ3E1ZQELFy7E8OHD1Rl6OXscGRmpHrdv3z60bt0aLi4u6vZGjRph165dj3wdchbspZdeUqn8sl6yfrKeKSkp2mXkLJVkqcgZtMzpq1n13JAsAkmtd3BwUCUF7du31ytf0E19lTNPko4sy8n6S3qtoXKBrHTv3l2d5Q8PD9feduDAAVWWIvdl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tJ49e6r34mmm5HyccZapQ7OapjqzmTNnqu8T+c0ICgpSY6L5mznZ/g29LzK9cvXq1dU4y/sj62HoOQ3RTGOsuci2K7+tst3LZz/z9ivkts8//1y9t7K8bDMyZW1WU8EamrKZ293Tb3dElD/M5D+5ESQhIiIiygnJ1JHSNSlPkykZ85OcKZYzrobK1Mj0yXYnswtdvHhRr5cGEREZP/bcICIionwlJWFS6pXfgQ0i2fak3I2BDSIi08OeG0RERJSvWI9OBeXAgQMFvQpERJRHmLlBREREREREREaNwQ0iIiJ6bsjsLOy3QURElHMypbTMUFe0aFE1K1lOpsWW2alkFjwpA5SZpnJjdrRHYXCDiIiIiIiIiAyKiYlR0xzLlNg5ceXKFTWltkxRffToUTXtskxNLVMm5yXOlkJEREREREREjySZGytWrECHDh2yXObzzz/HP//8g5MnT2pv69q1K8LDw7F+/XrkFWZuEBERERERET1HEhISEBkZqXeR23LDnj170Lx5c73bWrVqpW7PS5wthSiTf6zKFPQqmIxmKwYW9CqYhISipQp6FUxGqIt/Qa+CyQhLcSvoVTAJZe9uLuhVMBmT7nYu6FUwGc6OPP+ZGx6EpxT0KpiMYV0tYIye5eOKA8O6YfTo0Xq3jRo1Cl9++eVTP/edO3cemu5drksAJS4uDnZ2dsgLDG4QERERERERPUeGDh2KQYMG6d0mzT+NGYMbRERERERERM8RGxubPAtmeHl54e7du3q3yXVnZ+c8y9oQDG4QERERERER5TIzKzM8j+rWrYu1a9fq3bZp0yZ1e15iQR0RERERERERGRQdHa2mdJWLZqpX+ff169e1JS5vvfWWdvl3330Xly9fxmeffYazZ89i6tSpWLx4MT7++GPkJQY3iIiIiIiIiMiggwcPomrVquoipFeH/HvkyJHqenBwsDbQIfz9/dVUsJKtUblyZYwfPx6///67mjElL7EshYiIiIiIiCiXmVuaRllK48aNkZaWluX9c+bMMfiYI0eOID8xc4OIiIiIiIiIjBqDG0RERERERERk1FiWQkRERERERJTLzKyYS5CfONpEREREREREZNQY3CAiIiIiIiIio8ayFCIiIiIiIqJcZiqzpRgLZm4QERERERERkVFjcIOIiIiIiIiIjBrLUoiIiIiIiIhymZkVy1LyEzM3iIiIiIiIiMioMbhBREREREREREaNZSlEREREREREuYyzpeQvZm4QERERERERkVFjcIOIiIiIiIiIjBrLUoiIiIiIiIhyGWdLyV/M3CAiIiIiIiIio8bgBhEREREREREZNZalEBEREREREeUyzpaSv5i5QURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiymVmFixLyU/M3CAiIiIiIiIio8bgBhEREREREREZNZalEBEREREREeUyc5al5CtmbhARERERERGRUWNwg4iIiIiIiIiMGstSiIiIiIiIiHKZmTnLUvITMzeIiIiIiIiIyKgxuEFERERERERERu25DW5s3boVZmZmCA8PL+hVISIiIiIiIhNjZmH+zF5MUYH23Lh//z5GjhyJf/75B3fv3oWbmxsqV66sbqtfv36e/u169eohODgYLi4uyGtTpkzBDz/8gDt37qjXN2nSJNSqVUt7//Tp07FgwQIcPnwYUVFRCAsLg6ura46fX4I0K1asQIcOHfRu79mzpwrerFy5Unt97ty56t+WlpYoVqwYXn31VXz11VewtbVFxYoV1bj/+uuvD/2NP/74A++88w5u3boFDw+PbNdnxowZmDx5Mi5duqT+jr+/P7p06YKhQ4eq+7/88kuMHj1a/dvCwkK91nLlyqFTp0547733YGNjo32uxo0bY9u2bfjrr7/QtWtX7e0TJ05Ul6tXr6rrc+bMQa9evdCqVSusX79eu5y8ftmu/vvvP/Vcz5pCDWogYHBvuFSrANuihXGw8/u4u3pz9o9pWAvlfhwCx3KlEH8jGBfHTcPNeSv0lvF9rzsCBvWGjZcnIo+fxamBXyPiwAmYuoU7j2Hu1oMIiYpF6aIeGNKxCSqW8DK47Kr9pzBy0Sa926wtLXDguw+010f8tQGrD57RW6ZeGV9M69sRpm7Jxm34c82/CI2IRKkSPvikZxeUD/R75OM27j6I4ZNmo2GNSvhxcD91W3JyCqYtXoPdR0/h1r0QONrZoWbFMhjQtT08C+X8u85YrVmzBkuXLVPf7QH+/up7rkyZMgaX3bVrFxYtWoTbwcFITk6Gj48POnXsiGbNmmmXSUtLwx9//qm+62JiYtT354D+/dWypmzjP0vx9/L5iAh7gBL+gejRbxACS5c3uOyWDauwY8s63Lh2WV33DyyD1956V2/5/bu3YvO6Fbhy6Syi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ERERERFRfmPmxjNOZnrp0qWLwfvs7PJ/GsXff/9db2YVXXnd/JSIiIiIiIjIEAY3nnESMHiWggY+Pj4FvQpERERERETPPN2m4ZT3ONpEREREREREZNQY3CAiIiIiIiIio8ayFCIiIiIiIqJcZmbO2VLyEzM3iIiIiIiIiMioMbhBREREREREREaNZSlEREREREREuczcgmUp+YmZG0RERERERERk1BjcICIiIiIiIiKjxrIUIiIiIiIiolzG2VLyFzM3iIiIiIiIiMioMbhBREREREREREaNZSlEREREREREuczMnLkE+YmjTURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiymWcLSV/MXODiIiIiIiIiIwagxtEREREREREZNRYlkJERERERESUy8wtWJaSn5i5QURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiymWcLSV/MXODiIiIiIiIiIwagxtEREREREREZNRYlkJERERERESUy8zMmUuQnzjaRERERERERGTUGNwgIiIiIiIiIqPGshQiIiIiIiKiXMbZUvIXMzeIiIiIiIiIyKgxuEFERERERERERo1lKURERERERES5jGUp+YuZG0RERERERERk1BjcICIiIiIiIiKjxrIUIiIiIiIiolzGspT8xcwNIiIiIiIiIjJqzNwgyqTZioEFvQomY3PHiQW9Ciah8eRXCnoVTMb2Ms0LehVMxpzJewp6FUzCjO9qFfQqmIw13+8o6FUwGW9+0KigV8EkREUlFfQqmBCLgl4BMgIMbhARERERERHlMjNzFkrkJ442ERERERERERk1BjeIiIiIiIiIyKixLIWIiIiIiIgol5lbcLaU/MTMDSIiIiIiIiIyagxuEBEREREREZFRY1kKERERERERUS4zM2dZSn5i5gYRERERERERGTUGN4iIiIiIiIjIqLEshYiIiIiIiCiXmZkzlyA/cbSJiIiIiIiIyKgxuEFERERERERERo1lKURERERERES5jLOl5C9mbhARERERERGRUWNwg4iIiIiIiIiMGstSiIiIiIiIiHIZy1LyFzM3iIiIiIiIiMioMbhBREREREREREaNwQ0iIiIiIiKiXGZmbv7MXh7XlClT4OfnB1tbW9SuXRv79+/PdvmJEyeiTJkysLOzQ/HixfHxxx8jPj4eeYnBDSIiIiIi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F/gUsYGLc8Z3nauLlQqCSCmAzGRx+VoMPh1zRjvrSkpKGj7/5iz6vlECY4eUgZ2thcoUGTf5oppC1tQ0bNQYEZER+POPeQgLC1MN17/66hv1Wyzu37+nAo8aa//5G8nJSRg39mu95+nW/Q28/kb6yYjPP/8Cc+fMwo8/fIvoqCgULlwYb77VE21ebAtTN3/ZDdjaWuCzAaXTt8nTERg86oT+NullB1fnx8sK7dCmKN7unrEPOPW79OytbyaexbrN+uXOpqJm8z4q+Lvpr5FIiIuET0B1dHr/d1haZfxORITcUI1ENcpUT/+O3f3PL4iNug9Pn7LqMbplKcd2LsTedZO11xf//Lr6f6vXx+kFQUzFtmMpsLY0Q6cXrGBrDVy9m4rZ65OQrHPO1N3ZHA62GdtoMU9z9G2b0Uenbd307fXQ+RT22XhKLEvJX2ZpuvUIRIT4v6cV9CqYjM0dJxb0KpiExpNfKehVMBlLynxT0KtgMuZMznpKc8q5Gd+ln9Gnp9dr4MOzrdGTefODRgW9CibhyrVn+wSbMfm2j3GWsd4bmnVGekErPG4eTM0z13ODiIiIiIiIiOhxMLjxjJNmqLrT4Ope5L78Vr58+SzXZ/78+fm+PkRERERERESmW4BvIqTvR1ZNTaWPSH6THijSH8UQTR8RIiIiIiKi5142vQQp9zG48YyTplxyeVb4+prubBtERERERERknBhKIiIiIiIiIiKjxswNIiIiIiIiolxmZsapYPMTMzeIiIiIiIiIyKgxuEFERERERERERo1lKURERERERES5zIyzpeQrjjYRERERERERGTUGN4iIiIiIiIjIqLEshYiIiIiIiCiXmZlztpT8xMwNIiIiIiIiIjJqDG4QERERERERkVFjWQoRERERERFRbuNsKfmKo01ERERERERERo3BDSIiIiIiIiIyaixLISIiIiIiIsplnC0lfzFzg4iIiIiIiIiMGoMbRERERERERGTUWJZCRERERERElMvMzJhLkJ842kRERERERERk1BjcICIiIiIiIiKjxrIUIiIiIiIiotzG2VLyFTM3iIiIiIiIiMioMbhBREREREREREaNZSlEREREREREuczMnLkE+YmjTURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiymVmnC0lXzFzg4iIiIiIiIiMGoMbRERERERERGTUWJZCRERERERElNvMmEuQnzjaRERERERERGTUGNwgIiIiIiIiIqPGshQiIiIiIiKiXMbZUvIXMzeIiIiIiIiIyKgxc4Mok4SipQp6FUxG48mvFPQqmIStA5YW9CqYjNQN3xT0KpiM5ITEgl4Fk3AmrFhBr4LJaNjBq6BXwWR09fi3oFfBJNwMKF/Qq2BCvAt6BcgIMLhBRERERERElNvMWSiRnzjaRERERERERGTUGNwgIiIiIiIiIqPGshQiIiIiIiKiXGZmxtlS8hMzN4iIiIiIiIjIqDG4QURERERERERGjWUpRERERERERLmNs6XkK442ERERERERERk1BjeIiIiIiIiIyKixLIWIiIiIiIgol5mZc7aU/MTMDSIiIiIiIiIyagxuEBEREREREZFRY1kKERERERERUW4zYy5BfuJoExEREREREZFRY3CDiIiIiIiIiIway1KIiIiIiIiIchtnS8lXzNwgIiIiIiIiIqPG4AYRERERERERGTWWpRARERERERHlMjPOlpKvONpEREREREREZNQY3CAiIiIiIiIio8ayFCIiIiIiIqLcxtlS8hUzN4iIiIiIiIjIqDG4QURERERERERGjWUpRERERERERLnMzJy5BPmJo01ERERERERERo3BDSIiIiIiIiIyaixLISIiIiIiIsptZpwtJT8xc4OIiIiIiIiIjBqDG0RERERERERk1FiWQkRERERERJTbOFtKvuJoExEREREREZFRY3CDiIiIiIiIiIway1KIiIiIiIiIchtnS8lXzNwgIiIiIiIiIqP23AY3tm7dCjMzM4SHhxf0qhARERERERGRsZal3L9/HyNHjsQ///yDu3fvws3NDZUrV1a31a9fP0//dr169RAcHAwXFxfktSlTpuCHH37AnTt31OubNGkSatWqpb2/X79++Pfff3H79m04Ojqqdfvuu+8QFBT0yOe+evUq/P39ceTIEVSpUkXvvsaNG6vbJk6cqL2+bds29W8bGxuUKFECvXr1wpAhQ5CUlISiRYvik08+Udcz+/rrrzF58mTcvHkTVlZWWa5PSkqKeq1z5szBtWvXYGdnh1KlSqFPnz5455131DI9e/bE3Llz1b8tLS1RqFAhVKpUCd26dVP3met0Ffbz81PPs2fPHtSpU0d7+8CBA3H06FEVpBJffvklRo8ercby119/1S4ny1St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j9uSICvSzFZaLEyfPl1NsCGtGqTVhJSz5CXT7ahjIqTvh/SOMET6iOQ3ibxJfxRDMkfziIiIiIiI6NljY6AExRDpaymlJNLjUpdcl/6KhkhvRem1oVuCIhN7SKaHlLnIrKJ5gcGNZ5xEvPKjsWhO+fr6FvQqEBERERERUT6wtrZW2RebN2/W9tyQzAy5PmDAAIOPkdkzZXZLWU4zWcT58+dV0COvAhuCZSlEREREREREuU1mS3lWL49BpoGdMWMG5s6dizNnzuC9995DTEyMdvYUmX1Tt6RF7pfZUj766CMV1JCZVcaOHatmMs1LzNwgIiIiIiIiIoOkZ8b9+/cxcuRIVVpSpUoVrF+/XtuW4Pr169oMDVG8eHFs2LABH3/8MSpVqgQfHx8V6JDZUvISgxtERERERERElCUpQcmqDGXr1q0P3Va3bl3s3bsX+YnBDSIiIiIiIqLcZmZW0GvwXGHPDSIiIiIiIiIyagxuEBEREREREZFRY1kKERERERERUW7TabJJeY+jTURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiym1mzCXITxxtIiIiIiIiIjJqDG4QERERERERkVFjWQoRERERERFRbjM3K+g1eK4wc4OIiIiIiIiIjBqDG0RERERERERk1FiWQkRERERERJTbOFtKvuJoExEREREREZFRY3CDiIiIiIiIiIway1KIiIiIiIiIcpsZZ0vJT8zcICIiIiIiIiKjxuAGERERERERERk1lqUQERERERER5TZz5hLkJ442ERERERERERk1BjeIiIiIiIiIyKixLIWIiIiIiIgot3G2lHzFzA0iIiIiIiIiMmoMbhARERERERGRUWNZChEREREREVFuM2MuQX7iaBMRERERERGRUWNwg4iIiIiIiIiMGstSiIiIiIiIiHKbOXMJ8hNHm4iIiIiIiIiMGoMbRERERERERGTUWJZCRERERERElNvMzAp6DZ4rZmlpaWkFvRJEz5LLly4V9CqYjO03Shb0KpiE1NSCXgPTUaRVmYJeBZPhd2ZrQa+CSfANPVjQq2Ay4hwLF/QqmAz7yOCCXgWTYHHvZkGvgsmwbT8Axih+w0w8q2xb9YapYVkKERERERERERk1lqUQERERERER5TYz5hLkJ442ERERERERERk1BjeIiIiIiIiIyKixLIWIiIiIiIgot3G2lHzFzA0iIiIiIiIiMmoMbhARERERERGRUWNZChEREREREVFuM2cuQX7iaBMRERERERGRUWNwg4iIiIiIiIiMGstSiIiIiIiIiHJZGmdLyVfM3CAiIiIiIiIio8bgBhEREREREREZNZalEBEREREREeU2M+YS5CeONhEREREREREZNQY3iIiIiIiIiMiosSyFiIiIiIiIKLexLCVfcbSJiIiIiIiIyKgxuEFERERERERERo1lKURERERERES5LM3MrKBX4bnCzA0iIiIiIiIiMmoMbhARERERERGRUWNZChEREREREVFu42wp+YqjTURERERERERGjcENIiIiIiIiIjJqLEshIiIiIiIiym2cLSVfMXODiIiIiIiIiIwagxtEREREREREZNRYlkJERERERESU28yZS5CfONpEREREREREZNQY3CAiIiIiIiIio8ayFCIiIiIiIqJclsbZUvIVMzeIiIiIiIiIyKgxuEFERERERERERo1lKURERERERES5zYy5BPmJo23A1q1bYWZmhvDw8IJeFaMwZ84cuLq6aq9/+eWXqFKlSoGuExERERERET0/ntnMjfv372PkyJH4559/cPfuXbi5uaFy5crqtvr16+fp365Xrx6Cg4Ph4uKCvDZlyhT88MMPuHPnjnp9kyZNQq1atbT3T58+HQsWLMDhw4cRFRWFsLAwvUDCo0iQRsPZ2RkVKlTA119/jaZNm+baa3jttdfw4osvPtFjY2Nj1fosXrwYt27dgpOTE8qVK4dBgwap8fD398/28bNnz4afnx+aNGmifb3yHAEBAWjRogU+/vhjeHt741m3Zs0aLF22TL2/Af7+eO+991CmTBmDy+7atQuLFi3C7eBgJCcnw8fHB506dkSzZs20y6SlpeGPP//E+vXrERMTo8Z0QP/+allTdui/+di3aSaiI+6jcLEgtOw6AkX9K2W5/JlD67B91c+ICL2FQoX90LjTJwis2Ejdl5KShO0rJ+LSye0ID7kBGztH+JWth8YdB8PJtUg+vqqCcXhr+ljGRKaPZfPXRqCoX9ZjefbQOuxYkz6WbjKWHT9ByQrpYynOHdmIozsW4s71U4iPCUfPL1aiSPGyMGWFGtRAwODecKlWAbZFC+Ng5/dxd/Xm7B/TsBbK/TgEjuVKIf5GMC6Om4ab81boLeP7XncEDOoNGy9PRB4/i1MD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hjGm/46ZG0RERERERERk0hjcICIiIiIiIiKTxrIUIiIiIiIiouLG0VJKFI82EREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiomGnA0VJKEjM3iIiIiIiIiMikMbhBRERERERERCaNZSlERERERERExUzD0VJKFI82EREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiouLEspUTxaBMRERERERGRSWNwg4iIiIiIiIgKNWPGDAQHB8Pe3h6NGzfGvn37UBSLFy+GhYUFevTogfuNwQ0iIiIiIiKiYqaxsCi109345ZdfMGLECIwdOxaHDh1C7dq10bFjR0RGRt5xu8uXL+Ptt99G8+bNURIY3CAiIiIiIiIio6ZMmYKhQ4di0KBBqFatGr755hs4Ojri+++/N74BgJycHPTr1w/jxo1DaGgoSgKDG0REREREREQPkYyMDCQmJhpMsqygzMxMHDx4EO3atdMvs7S0VPO7d+8u9P7Hjx8PX19fDB48GCWFwQ0iIiIiIiKiYqaxsCy108SJE+Hm5mYwybKCoqOjVRaGn5+fwXKZv3nzptHnvXPnTsydOxdz5sxBSeJQsEREREREREQPkVGjRqk+GvnZ2dnd8/0mJSXhueeeU4ENb29vlCQGN4iIiIiIiIgeInZ2dkUKZkiAwsrKCrdu3TJYLvP+/v63rX/hwgXVSPTxxx/XL8vNzVX/Wltb48yZM6hQoQLuB5alEBERERERERU3GZWktE5FZGtri/r162Pz5s0GwQqZb9q06W3rV6lSBceOHcPhw4f1U7du3dC6dWv1/8DAQNwvzNwgIiIiIiIiIqOkfGXAgAFo0KABGjVqhKlTpyIlJUWNniL69++PsmXLqp4d9vb2qFGjhsH27u7u6t+Cy4sbgxtEREREREREZFTv3r0RFRWFMWPGqCaiderUwbp16/RNRq9evapGUHnQGNwgIiIiIiIiKmYyKom5eO2119RkzNatW++47Y8//oiSYD5Hm4iIiIiIiIgeSgxuEBEREREREZFJY1kKERERERERUTHToOijktC9Y+YGEREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiomJnTaCmmgEebiIiIiIiIiEwaMzeICojL8XjQu2A2fpy++0HvglnIzsh80LtgNr49dedx2KnoLldt9aB3wSyEfNfvQe+C2VgfOvpB74LZ+GXh6Qe9C2YhOyP0Qe+C2Vjb/UHvAZkCBjeIiIiIiIiIipsFR0spSSxLISIiIiIiIiKTxuAGEREREREREZk0lqUQERERERERFTMNcwlKFI82EREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiomGk4WkqJYuYGEREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiomGksmEtQkni0iYiIiIiIiMikMbhBRERERERERCaNZSlERERERERExUwDjpZSkpi5QUREREREREQmjcENIiIiIiIiIjJpLEshIiIiIiIiKmYcLaVk8WgTERERERERkUljcIOIiIiIiIiITBrLUoiIiIiIiIiKmcaCo6WUJGZuEBEREREREZFJY3CDiIiIiIiIiEway1KIiIiIiIiIipkGLEspSczcICIiIiIiIiKTxuAGEREREREREZk0lqUQERERERERFTONBXMJShKPNhERERERERGZNAY3iIiIiIiIiMiksSyFiIiIiIiIqJhxtJSSxcwNIiIiIiIiIjJpDG4QERERERERkUljWQoRERERERFRMeNoKSWLR5uIiIiIiIiITBqDG0RERERERERk0liWQkRERERERFTMOFpKyWLmBhERERERERGZNAY3jNi6dSssLCwQHx//oHfFJHz44YeoU6eOfn7gwIHo0aPHA90nIiIiIiIieniU2rKUqKgojBkzBn/88Qdu3boFDw8P1K5dWy175JFH7utjN2vWDBEREXBzc8P9NmPGDHz++ee4efOmen7Tpk1Do0aN1G2xsbEYO3YsNmzYgKtXr8LHx0cFDT766KMi7dvly5cREhKin/f09ET9+vXx6aefom7dusX2HN5++228/vrrxf46Z2VloXXr1nfc/s8//1TPc9CgQWre0tISrq6uCAsLw2OPPYbhw4eXyOt4rzb88St+X/4TEuJiUT6kIga8OAIVw6obXXfL+pXYsWUtwq9cVPMhFSujd/+XDNbft2srNq9dgUsXTiM5KRGffDUPwaFheFgM6h2Iru184exojeNnEjFl9iVcv5le6PrdOvihe0c/+PvYqfnL4WmY9+s17Ps7L8Dp6W6Dl54LQoNabnBwsEL4jTQsXHYd2/fGwlwN7heMxzv4w8XJGsdOJWLyzHO4FpFWpG2ffSoQLw0IxZKV1/D1dxf0y7t1LIP2LX0R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Wz3oXTALrb/r96B3wWwsD9UG8une/bLQPLMSS1r2P8Mi071b+2PxjKRY0s5fKL192SpWCIG5MameG0REREREREREBTG4YcKkGWr+YXDzT3Lbg3b16tVC908muZ2IiIiIiMgcaWBZaidzVCp7blDRSN+Pt99+2+htxdVnQvqK/NfeIgEBAUZHX8l/OxEREREREdG9YnDDhPn6+qqptNIN00tERERERER0PzG4QURERERERFTMNOBoKSXJPIttiIiIiIiIiOihweAGEREREREREZk0lqUQERERERERFTOWpZQsZm4QERERERERkUljcIOIiIiIiIiITBrLUoiIiIiIiIiKGctSShYzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMWMZSkli5kbRERERERERGTSGNwgIiIiIiIiIpPGshQiIiIiIiKiYqbRsCylJDFzg4iIiIiIiIhMGoMbRERERERERGTSWJZCREREREREVMw4WkrJYuYGEREREREREZk0BjeIiIiIiIiIyKSxLIWIiIiIiIiomLEspWQxc4OIiIiIiIiITBqDG0RERERERERk0liWQkRERERERFTMWJZSspi5QUREREREREQmjcENIiIiIiIiIjJpLEshIiIiIiIiKmYaDctSShIzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMUsl6OllChmbhARERERERGRSWNwg4iIiIiIiIhMGstSiIiIiIiIiIqZhmUpJYqZG0RERERERERk0hjcICIiIiIiIiKTxrIUIiIiIiIiomKm0bAspSRZaDQaTYk+IlEpl7pj6YPeBbNxPaDRg94Fs3AqrtyD3gWz0SZnzYPeBbNhefrvB70LZuHPIT896F0wG5dXnXnQu2A2EpNyHvQumIWjB64/6F0wGz9/Vh6m6NDZGJRW9cK8YG5YlkJEREREREREJo1lKURERERERETFjKOllCxmbhARERERERGRSWNwg4iIiIiIiIhMGstSiIiIiIiIiIoZR0spWczcICIiIiIiIqJCzZgxA8HBwbC3t0fjxo2xb9++QtedM2cOmjdvDg8PDzW1a9fujusXFwY3iIiIiIiIiMioX375BSNGjMDYsWNx6NAh1K5dGx07dkRkZKTR9bdu3YpnnnkGf/75J3bv3o3AwEB06NAB16/f3+GRGdwgIiIiIiIiug+jpZTW6W5MmTIFQ4cOxaBBg1CtWjV88803cHR0xPfff290/Z9++gmvvPIK6tSpgypVquC7775Dbm4uNm/ejPuJwQ0iIiIiIiKih0hGRgYSExMNJllWUGZmJg4ePKhKS3QsLS3VvGRlFEVqaiqysrLg6emJ+4nBDSIiIiIiIqKHyMSJE+Hm5mYwybKCoqOjkZOTAz8/P4PlMn/z5s0iPdbIkSMREBBgECC5HzhaChEREREREdFDNFrKqFGjVB+N/Ozs7Ir9cSZNmoTFixerPhzSjPR+YnCDiIiIiIiI6CFiZ2dXpGCGt7c3rKyscOvWLYPlMu/v73/HbSdPnqyCG5s2bUKtWrVwv7EshYiIiIiIiIhuY2tri/r16xs0A9U1B23atCkK89lnn+Gjjz7CunXr0KBBA5QEZm4QERERERERFbNcmIcRI0ZgwIABKkjRqFEjTJ06FSkpKWr0FNG/f3+ULVtW37Pj008/xZgxY7Bo0SIEBwfre3M4Ozur6X5hcIOIiIiIiIiIjOrduzeioqJUwEICFTLEq2Rk6JqMXr16VY2gojNr1iw1yspTTz1lcD9jx47Fhx9+iPuFwQ0iIiIiIiIiKtRrr72mJmOkWWh+ly9fxoPA4AYRERERERHRQzRaijliQ1EiIiIiIiIiMmkMbhARERERERGRSWNZChEREREREVEx04BlKSWJmRtEREREREREZNIY3CAiIiIiIiIik8ayFCIiIiIiIqJixtFSShYzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMWMo6WULGZuEBEREREREZFJY3CDiIiIiIiIiEway1KIiIiIiIiIilmu5kHvwcOFmRtEREREREREZNIY3CAiIiIiIiIik8ayFCIiIiIiIqJixtFSShYzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMVMo2FZSkli5oYRW7duhYWFBeLj4x/0rpiEDz/8EHXq1NHPDxw4ED169Hig+0REREREREQPj1KbuREVFYUxY8bgjz/+wK1bt+Dh4YHatWurZY888sh9fexmzZohIiICbm5uuN9mzJiBzz//HDdv3lTPb9q0aWjUqJH+9hdffBGbNm3CjRs34OzsrPbt008/RZUqVf71vi9fvoyQkBD9vKenJ+rXr6+2r1u3brE9h7fffhuvv/56sb/O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hFx6Zkhj0Vnbj6hyFBm6dUbv1vBy1gZ/biamGHxO+rs6qaFev9h0EE9/9wd8XRzRt2FlDGxaTb/O0n/6bwz9yXDIznFdm6ghYs2VW/0aaLp5gX6+2mTt9234/OU4OngU7Mr4wCEwL8iWdvmaCmRU+2IUgl/vj/RrN3Hsxf8heuNO/ToRS9fC1scTYWOHwc7fB4lHTmFf1yHILNBk1BzVbztUBSG2/DIGGWmJCAitj+4vfmeQaZEQHY605LyyybB6XZCWEos9a79GSmIUfMpWVds4umg/Y6PCT6jsDzF/QnuDxxs4ejNcvcrBHO05rYGNFdC5vqUa2SQ8GliyPRc5+RIEJMHKId81qVPh2rKU5jUs4GRvgch47Ta6JqO5GmDJjly0qmWJXo9aqsCHZIr8vk+DC4b9+83G6q1JsLO1xJCenmrUkzOXMzBpbiSy8rWIkSCFi1NekKx9M+130piXDC+gzfolxqD8pFVDJ1WucjTfaCxEpYmFJn/DBaICpLGnZLlINsTDInXH0ge9C2bjeoD5BlNK0qk48/wh+yC0yVnzoHfBbFieNq+SgwflzyE/PehdMBuXV5150LtgNhKTCi9LoKI7euD6g94Fs/HzZ3kZZ6Zk45GitxIoae1rm1e5m8n13CAiIiIiIiIiKojBDRMmzVDzD4Obf5LbHrSrV68Wun8yye1ERERERERE98p8C3QfAtL34+233zZ6W3H1mZC+Iv+1t0hAQIDR0Vfy305ERERERGSONGYxLo/pYHDDhElzw+JoLHq/6IbpJSIiIiIiIrqfWJZCRERERERERCaNmRtERERERERExUyGI6aSw8wNIiIiIiIiIjJpDG4QERERERERkUljWQoRERERERFRMdNoOFpKSWLmBhERERERERGZNAY3iIiIiIiIiMiksSyFiIiIiIiIqJhpOFpKiWLmBhERERERERGZNAY3iIiIiIiIiMiksSyFiIiIiIiIqJjlgqOllCRmbhARERERERGRSWNwg4iIiIiIiIhMGstSiIiIiIiIiIoZR0spWczcICIiIiIiIiKTxuAGEREREREREZk0lqUQERERERERFTONhqOllCRmbhARERERERGRSWNwg4iIiIiIiIhMGstSiIiIiIiIiIpZLkdLKVHM3CAiIiIiIiIik8bgBhERERERERGZNJalEBERERERERUzDctSShQzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMVMA4sHvQsPFWZuEBEREREREZFJY3CDiIiIiIiIiEway1KIiIiIiIiIilkuR0spUczcICIiIiIiIiKTxuAGEREREREREZk0lqUQERERERERFTMNy1JKFDM3iIiIiIiIiMikMXODqIBpt3o+6F0wG6s/2/Ggd8EstOjh/6B3wWw0beL7oHfBbKwPHf2gd8EsJKwa86B3wWwEd6v8oHfBbNR/o+GD3gWz4PDMwAe9C2ak/IPeATIBDG4QERERERERFTOWpZQslqUQERERERERkUljcIOIiIiIiIiITBrLUoiIiIiIiIiKWa7G4kHvwkOFmRtEREREREREZNIY3CAiIiIiIiIik8bgBhERERERERGZNPbcICIiIiIiIipmHAq2ZDFzg4iIiIiIiIhMGoMbRERERERERGTSWJZCREREREREVMxYllKymLlBRERERERERCaNwQ0iIiIiIiIiMmksSyEiIiIiIiIqZrksSylRzNwgIiIiIiIiIpPG4AYRERERERERmTSWpRAREREREREVM43G4kHvwkOFmRtEREREREREZNIY3CAiIiIiIiIik8ayFCIiIiIiIqJipuFoKSWKmRtEREREREREZNIY3CAiIiIiIiIik8ayFCIiIiIiIqJilsuylBLFzA0iIiIiIiIiMmkMbhARERERERGRSWNZChEREREREVEx42gpJYuZG0RERERERERk0hjcICIiIiIiIiKTxrIUIiIiIiIiomLGspSSxcwNIiIiIiIiIirUjBkzEBwcDHt7ezRu3Bj79u0rfGUAS5cuRZUqVdT6NWvWxJo1a3C/MbhBREREREREREb98ssvGDFiBMaOHYtDhw6hdu3a6NixIyIjI42uv2vXLjzzzDMYPHgw/v77b/To0UNNx48fx/3E4AYRERERERFRMcvVlN7pbkyZMgVDhw7FoEGDUK1aNXzzzTdwdHTE999/b3T9r776Cp06dcI777yDqlWr4qOPPkK9evUwffp03E8MbhARERERERE9RDIyMpCYmGgwybKCMjMzcfDgQbRr106/zNLSUs3v3r3b6H3L8vzrC8n0KGz94sLgBhEREREREdFDZOLEiXBzczOYZFlB0dHRyMnJgZ+fn8Fymb9586bR+5bld7N+ceFoKUREREREREQP0Wgp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iIiIiIiIiIqZmVZ/lFrsuUFEREREREREJo3BDSIiIiIiIiIyaSxLISIiIiIiIipmubkPeg8eLszcICIiIiIiIiKTxuAGEREREREREZk0lqUQERERERERFTOOllKymLlBRERERERERCaNwQ0iIiIiIiIiMmksSyEiIiIiIiIqZrksSylRzNwgIiIiIiIiIpPG4AYRERERERERmTSWpRAREREREREVM46WUrKYuUFEREREREREJo3BDSIiIiIiIiIyaSxLISIiIiIiIipmmlI9XIoFzA0zN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMWsVFelmCFmbhARERERERGRSWNwg4iIiIiIiIhMGstSiIiIiIiIiIqZhmUpJYqZG0RERERERERk0hjcICIiIiIiIiKTxrIUIiIiIiIiomKWy+FSShQzN4iIiIiIiIjIpDG4QUREREREREQmjWUpRERERERERMWMo6WULGZuEBEREREREZFJY3CDiIiIiIiIiEway1KIiIiIiIiIihnLUkoWMzeIiIiIiIiIyKQxuEFEREREREREJo1lKUQFuDoz5ldcnnu95YPeBbPQx3vTg94Fs2GdmPygd8Fs/LLw9IPeBbPQrG3Yg94Fs1H/jYYPehfMxsGp+x/0LpiFRnY2D3oXzEe9djBFuaxLKVE8iyMiIiIiIiIik8bgBhERERERERGZNJalEBERERERERUzTe6D3oOHCzM3iIiIiIiIiMikMbhBRERERERERCaNZSlERERERERExUzD0VJKFDM3iIiIiIiIiMikMbhBRERERERERCaNZSlERERERERExSyXo6WUKGZuEBEREREREZFJY3CDiIiIiIiIiEway1KIiIiIiIiIihlHSylZzNwgIiIiIiIiIpPG4AYRERERERERmTSWpRAREREREREVs1xWpZQoZm4QERERERERkUljcIOIiIiIiIiITBrLUoiIiIiIiIiKmYZ1KSWKmRtEREREREREZNIY3CAiIiIiIiIik8ayFCIiIiIiIqJipmFVSoli5gYRERERERERmTQGN4iIiIiIiIjIpLEshYiIiIiIiKiY5XK0lBLFzA0iIiIiIiIiMmkMbhARERERERGRSWNZChEREREREVEx03C4lBLFzA0iIiIiIiIiMmkMbhARERERERGRSWNZChEREREREVEx0+Q+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load csv results\n", + "hrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "pupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "duration_results_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# combine with suffixes\n", + "combined_results = pd.concat([\n", + " hrv_results_df.set_index('Participant').add_suffix('_HRV_SDNN'),\n", + " pupil_results_df.set_index('Participant').add_suffix('_Pupil_STD'),\n", + " duration_results_df.set_index('Participant').add_suffix('_Duration_STD'),\n", + "], axis=1)\n", + "\n", + "# correlation matrix\n", + "correlation_matrix = combined_results.corr(method='spearman')\n", + "\n", + "# plot heatmap\n", + "plt.figure(figsize=(12, 10))\n", + "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\")\n", + "plt.title('Correlation Matrix of HRV SDNN, Pupil Dilation STD, and Duration STD')\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7e1d1e66-c067-4f04-aa2d-75f049f98e1e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-05T00:17:24.968771Z", + "iopub.status.busy": "2026-07-05T00:17:24.968679Z", + "iopub.status.idle": "2026-07-05T00:17:25.063506Z", + "shell.execute_reply": "2026-07-05T00:17:25.063193Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Participant P01, Session 1, HRV SDNN: 80.14\n", + "Participant P01, Session 1, Pupil Dilation STD: 1.25\n", + "Participant P01, Session 2, HRV SDNN: 65.39\n", + "Participant P01, Session 2, Pupil Dilation STD: 0.61\n", + "Participant P01, Session 3, HRV SDNN: 65.39\n", + "Participant P01, Session 3, Pupil Dilation STD: 0.80\n", + "Participant P02, Session 1, HRV SDNN: 46.20\n", + "Participant P02, Session 1, Pupil Dilation STD: 0.49\n", + "Participant P02, Session 2, HRV SDNN: 47.81\n", + "Participant P02, Session 2, Pupil Dilation STD: 1.12\n", + "Participant P02, Session 3, HRV SDNN: 47.40\n", + "Participant P02, Session 3, Pupil Dilation STD: 0.48\n", + "Participant P03, Session 1, HRV SDNN: 54.98\n", + "Participant P03, Session 1, Pupil Dilation STD: 0.38\n", + "Participant P03, Session 2, HRV SDNN: 56.83\n", + "Participant P03, Session 2, Pupil Dilation STD: 0.65\n", + "Participant P03, Session 3, HRV SDNN: 39.02\n", + "Participant P03, Session 3, Pupil Dilation STD: 0.55\n", + "Participant P04, Session 1, HRV SDNN: 41.38\n", + "Participant P04, Session 1, Pupil Dilation STD: 0.42\n", + "Participant P04, Session 2, HRV SDNN: 39.89\n", + "Participant P04, Session 2, Pupil Dilation STD: 0.39\n", + "Participant P04, Session 3, HRV SDNN: 55.02\n", + "Participant P04, Session 3, Pupil Dilation STD: 0.23\n", + "Participant P05, Session 1, HRV SDNN: 34.73\n", + "Participant P05, Session 1, Pupil Dilation STD: 0.67\n", + "Participant P05, Session 2, HRV SDNN: 32.62\n", + "Participant P05, Session 2, Pupil Dilation STD: 1.09\n", + "Participant P05, Session 3, HRV SDNN: 37.63\n", + "Participant P05, Session 3, Pupil Dilation STD: 0.58\n", + "Participant P06, Session 1, HRV SDNN: 41.64\n", + "Participant P06, Session 1, Pupil Dilation STD: 0.27\n", + "Participant P06, Session 2, HRV SDNN: 122.35\n", + "Participant P06, Session 2, Pupil Dilation STD: 0.31\n", + "Participant P06, Session 3, HRV SDNN: 117.05\n", + "Participant P06, Session 3, Pupil Dilation STD: 0.50\n", + "Participant P07, Session 1, HRV SDNN: 42.21\n", + "Participant P07, Session 1, Pupil Dilation STD: 0.93\n", + "Participant P07, Session 2, HRV SDNN: 59.67\n", + "Participant P07, Session 2, Pupil Dilation STD: 0.20\n", + "Participant P07, Session 3, HRV SDNN: 50.04\n", + "Participant P07, Session 3, Pupil Dilation STD: 0.31\n", + "Participant P08, Session 1, HRV SDNN: 188.91\n", + "Participant P08, Session 1, Pupil Dilation STD: 1.21\n", + "Participant P08, Session 2, HRV SDNN: 56.44\n", + "Participant P08, Session 2, Pupil Dilation STD: 0.87\n", + "Participant P08, Session 3, HRV SDNN: 58.87\n", + "Participant P08, Session 3, Pupil Dilation STD: 1.08\n", + "Participant P09, Session 1, HRV SDNN: 38.50\n", + "Participant P09, Session 1, Pupil Dilation STD: 0.73\n", + "Participant P09, Session 2, HRV SDNN: 41.89\n", + "Participant P09, Session 2, Pupil Dilation STD: 0.58\n", + "Participant P09, Session 3, HRV SDNN: 47.27\n", + "Participant P09, Session 3, Pupil Dilation STD: 0.39\n", + "Participant P10, Session 1, HRV SDNN: 43.43\n", + "Participant P10, Session 1, Pupil Dilation STD: 0.31\n", + "Participant P10, Session 2, HRV SDNN: 50.13\n", + "Participant P10, Session 2, Pupil Dilation STD: 0.20\n", + "Participant P10, Session 3, HRV SDNN: 55.75\n", + "Participant P10, Session 3, Pupil Dilation STD: 0.26\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load hrv + pupil\n", + "hrv_results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "pupil_results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "\n", + "# indexed lookup\n", + "hrv_idx = hrv_results_df.set_index('Participant')\n", + "pupil_idx = pupil_results_df.set_index('Participant')\n", + "\n", + "for pid in hrv_idx.index:\n", + " for s in [1, 2, 3]:\n", + " col = f'Session {s:02d}'\n", + " print(f\"Participant {pid}, Session {s}, HRV SDNN: {hrv_idx.loc[pid, col]:.2f}\")\n", + " print(f\"Participant {pid}, Session {s}, Pupil Dilation STD: {pupil_idx.loc[pid, col]:.2f}\")\n", + "\n", + "# combine with suffixes\n", + "combined_results = pd.concat([\n", + " hrv_results_df.set_index('Participant').add_suffix('_HRV_SDNN'),\n", + " pupil_results_df.set_index('Participant').add_suffix('_Pupil_STD'),\n", + "], axis=1)\n", + "\n", + "# correlation matrix\n", + "correlation_matrix = combined_results.corr(method='spearman')\n", + "\n", + "# plot heatmap\n", + "plt.figure(figsize=(10, 8))\n", + "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\")\n", + "plt.title('Correlation Matrix of HRV SDNN and Pupil Dilation STD')\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "panyy1gp0ur", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-05T00:17:25.064761Z", + "iopub.status.busy": "2026-07-05T00:17:25.064660Z", + "iopub.status.idle": "2026-07-05T00:17:25.251706Z", + "shell.execute_reply": "2026-07-05T00:17:25.251365Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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iIiIiIiIiIhMgsFGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgk2LORiIiIiIiIiIjyDI0Zc+dyM14dIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgkWEZNRERERERERER5h5lZTh8BZYCZjURERERERERERGQSDDYSERERERERERGRSTDYSERERERERERERCbBno1ERERERERERJRnaMyYO5eb8eoQERERERERERGRSTDYSERERERERERERCbBMmoiIiIiIiIiIsozNDDL6UOgDDCzkYiIiIiIiIiIiEyCwUYiIiIiIiIiIiIyCZZRExERERERERFRnsHRqHM3Xh0iIiIiIiIiIiIyCQYbiYiIiIiIiIiIyCRYRk30iHwt2+T0IdATXLjnlNOHQE+g0eT0EdCTdN3zbU4fAmXCrvof5PQh0BM0mNYupw+BniDMsVBOHwI9wZkijXL6EOgJXErG5vQh0BPUyekDINLDYCMREREREREREeUdZmY5fQSUAZZRExERERERERERkUkw2EhEREREREREREQmwTJqIiIiIiIiIiLKMzTMncvVeHWIiIiIiIiIiIjIJBhsJCIiIiIiIiIiIpNgGTUREREREREREeUZGo5Gnasxs5GIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgk2LORiIiIiIiIiIjyDI0Zc+dyM14dIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgkWEZNRERERERERER5hgZmOX0IlAFmNhIREREREREREZFJMNhIREREREREREREJsEyaiIiIiIiIiIiyjM4GnXuxqtDREREREREREREJsFgIxEREREREREREZkEg41ERERERERERERkEuzZSEREREREREREeYbGzCynD4EywMxGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgkWEZNRERERERERER5hgYso87NmNlIREREREREREREJsFgIxEREREREREREZkEg41ERERERERERERkEuzZSEREREREREREeYbGjLlzuRmvDhEREREREREREZkEg41ERERERERERERkEiyjJiIiIiIiIiKiPEMDs5w+BMoAMxuJiIiIiIiIiIjIJBhsJCIiIiIiIiIiIpNgGTUREREREREREeUZHI06d+PVISIiIiIiIiIiIpNgsJGIiIiIiIiIiIhMgsFGIiIi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R9Ua8KXKbCQiIiIiIiIiIjJGkzu7AprEsGHDDMby0GdskGSpTn20QlWfZDdKda5Mz8uLe3VeAjKwjZQiG5tkWU67efNmuscnkywnIiIiIiIiIqIXBzMb8zCJSqc3SI2p+hRKX8qs9qaUHgDGRrfWX05ERERERERERC8OBhvzMC8vLzXlVpaWlo8NbENERERERERERC8uBhuJiIiIiIiIiCjP0MAspw+BMsCejURERERERERERGQSDDYSERERERERERGRSbCMmoiIiIiIiIiI8gyWUeduzGwkIiIiIiIiIiIik2CwkYiIiIiIiIiIiEyCwUYiIiIiIiIiIiIyCfZsJCIiIiIiIiKiPIM9G3M3ZjYSERERERERERGRSTDYSERERERERERERCbBMmoiIiIiIiIiIsozWEaduzGzkYiIiIiIiIiIiEyCwUYiIiIiIiIiIiIyCZZRExERERERERFRnqHRsIw6N2NmIxEREREREREREZkEg41ERERERERERERkEgw2EhERERERERERkUmwZyMREREREREREeUZGrBnY27GzEYiIiIiIiIiIiIyCQYbiYiIiIiIiIiIyCRYRk1ERERERERERHkGy6hzN2Y2EhERERERERERkUkw2EhEREREREREREQmwTJqIiIiIiIiIiLKM1hGnbsxs5GIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgk2LORiIiIiIiIiIjyDI2GPRtzM2Y2EhERERERERERkUkw2EhEREREREREREQmwTJqIiIiIiIiIiLKM1LAMurcjJmNREREREREREREZBIMNhIREREREREREZFJsIyaiIiIiIiIiIjyDA3LqHM1ZjYSERERERERERGRSTDYSERERERERERERCbBYCMRERERERERERGZBHs2EhERERERERFRnqHRsGdjbmam0Wg0OX0QRLnJ8ab1cvoQ6AmKff9NTh8CPUGipV1OHwI9QfJPk3L6ECgTnEoUzelDoCfY/d66nD4EegK/C3/n9CHQE5gjJacPgZ7AKTE4pw+BnqBg6cp4mRy/lHd+Jqv6u+NlwzJqIiIiIiIiIiIiMgmWURMRERERERERUZ6hAcuoczNmNhIREREREREREZFJMNhIREREREREREREJsFgIxEREREREREREZkEezYSEREREREREVGeodGwZ2NuxsxGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgkWEZNRERERERERER5hgYso87NmNlIREREREREREREJsFgIxEREREREREREZkEy6iJiIiIiIiIiCjP4GjUuRszG4mIiIiIiIiIiMgkGGwkIiIiIiIiIiIik2CwkYiIiIiIiIiIiEyCPRuJiIiIiIiIiCjPSMnpA6AMMbORiIiIiIiIiIiITILBRiIiIiIiIiIiIjIJllETEREREREREVGeodGY5fQhUAaY2UhEREREREREREQmwWAjERERERERERERmQTLqImIiIiIiIiIKM/QgGXUuRkzG4mIiIiIiIiIiMgkGGwkIiIiIiIiIiIik2CwkYiIiIiIiIiIiEyCPRuJiIiIiIiIiCjP0GjYszE3Y2YjERERERERERERmQSDjURERERERERERGQSLKMmIiIiIiIiIqI8QwOWUedmzGwkIiIiIiIiIiIik2CwkYiIiIiIiIiIiEyCZdRERERERERERJRnpGhy+ggoI8xsJCIiIiIiIiIiIpNgsJGIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgn2bCQiIiIiIiIiojxDA7OcPgTKADMbiYiIiIiIiIiIyCQYbCQiIiIiIiIiIiKTYBk1ERERERERERHlGRoNy6hzM2Y2EhERERERERERkUkw2GjEP//8AzMzM4SFheX0oeQJn3/+OSpXrqyb79u3Lzp06JCjx0RERERERERERM9fri2jDgwMxNixY7Fx40bcv38frq6uqFSpknrslVdeydbnrlu3Lu7evQtnZ2dkt1mzZuHbb7/FvXv31PnNnDkTNWvW1C1/++238ddff+HOnTvIly+fOrbJkyejdOnST9z39evX4evrq5t3c3NDtWrV1PZVqlQx2Tm8//77GD58uMmvc2JiIho3bpzh9jt37lTn+eabb6p5c3NzODk5wd/fH6+++ipGjhz5XK6jqXm074T8XXvAys0NsVeu4NbM7xBz8Xy663t26gLPdh1h7ZUfSeFhCN39D+7MnwNNYoJaXrD3WyjY5y2DbeJu3sC5N3sZPGadv4Ba78Y3Ex57joyWkaFVm3fgtz83IyQsHCV8iuK9fr1QtqSf0XWv3ryN+cvW4MLV67gXGIyRb/ZAt9daGKyzesvfWLN1J+4GBql53yKF8FaXdqhTteJzOZ8X0ZqNW7Fs7XqEhIaj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ojwjRZN3pokTJ6oyZf1JHnsWBw4cUAFBbaBRNGvWTJVTHzp0KNP7CQ8PV2N+6AcaxdChQ+Hh4YGaNWtiwYIF0Dzl8N/MbCQiIiIiIiIiIsoGY8aMwXvvvWfw2LNkNYp79+49NoaHBAzd3NzUsswICgpS/Rql9PrRwYibNGkCe3t71d9xyJAhiIqKwogRIzJ9fAw2EhERERERERERZQObpyiZHj16NCZPnvzEEupnFRERgVdffVX1bvz8888Nln322We6/1epUgXR0dH49ttvGWwkIiIiIiIiIiLKS0aNGoW+fftmuI6fn5/qp/jgwQODx6Xvoow4/aRei5GRkWrwF0dHR6xZswZWVlYZrl+rVi2VASl9JzMbNGWwkYiIiIiIiIiI8gyNxgwvIk9PTzU9SZ06dRAWFoZjx46hWrVq6rG///4bKSkpKjiYUUZjy5YtVdBw3bp1sLW1feJznThxAq6urk9V+s1gIxERERERERERUR5RpkwZlZ04YMAAzJ49G4mJiRg2bBi6d++uG4n69u3baNq0KZYsWaIGepFAY4sWLRATE4Nff/1VzcskJMBpYWGB9evX4/79+6hdu7YKRG7fvh0TJkzA+++//1THx2AjERERERERERFRHvLbb7+pAKMEFGUU6s6dO2PGjBm65RKAvHjxogouiuPHj+tGqi5RooTBvq5duwYfHx9VUj1r1iy8++67agRqWW/atGkqqPk0GGwkIiIiIiIiIqI8Q6PJ6SPIeW5ubli6dGm6yyV4KAFDrUaNGhnMGyPZkjI9K/Nn3gMRERERERERERERg41ERERERERERERkKiyjJiIiIiIiIiKiPCMFL+Zo1C8KZjYSERERERERERGRSTDYSERERERERERERCbBYCMRERERERERERGZBHs2EhERERERERFRnqHR5PQRUEaY2UhEREREREREREQmwWAjERERERERERERmQTLqImIiIiIiIiIKM/QaMxy+hAoA8xsJCIiIiIiIiIiIpNgsJGIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgn2bCQiIiIiIiIiojwjRZPTR0AZYWYjERERERERERERmQSDjURERERERERERGQSLKMmIiIiIiIiIqI8Q8My6lyNmY1ERERERERERERkEgw2EhERERERERERkUmwjJqIiIiIiIiIiPIMDcxy+hAoA8xsJCIiIiIiIiIiIpNgsJGIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgn2bCQiIiIiIiIiojwjRZPTR0AZYWYjERERERERERERmQSDjURERERERERERGQSLKMmIiIiIiIiIqI8Q8My6lyNmY1ERERERERERERkEmYaDePBRPqCz+zP6UOgJ/jlap2cPgR6Am9P/mnJ7VrZ7MjpQ6BMCHcslNOHQE8QZe6c04dAT3C1dJOcPgR6Av+uxXP6EOgJCg94I6cPgZ7ArlEPvExWHExBXtGl9suX58cyaiIiIiIiIiIiyjOYNpe7vXzhVSIiIiIiIiIiIsoWDDYSERERERERERGRSTDYSERERERERERERCbBno1ERERERERERJRnpGjMcvoQKAPMbCQiIiIiIiIiIiKTYLCRiIiIiIiIiIiITIJl1ERERERERERElGdoNDl9BJQRZjYSERERERERERGRSTDYSERERERERERERCbBMmoiIiIiIiIiIsozWEaduzGzkYiIiIiIiIiIiEyCwUYiIiIiIiIiIiIyCQYbiYiIiIiIiIiIyCTYs5GIiIiIiIiIiPKMFPZszNWY2UhEREREREREREQmwWAjERERERERERERmQTLqImIiIiIiIiIKM/QaMxy+hAoA8xsJCIiIiIiIiIiIpNgsJGIiIiIiIiIiIhMgsFGIiIiIiIiIiIiMgn2bCQiIiIiIiIiojxDo8npI6CMMLORiIiIiIiIiIiITILBRiIiIiIiIiIiIjIJllETEREREREREVGekcIy6lyNmY1ERERERERERERkEgw2EhERERERERERkUmwjJqIiIiIiIiIiPIMjkaduzGzkYiIiIiIiIiIiEyCwUYiIiIiIiIiIiIyCQYbiYiIiIiIiIiIyCTYs5GIiIiIiIiIiPIM9mzM3ZjZSERERERERERERCbBYCMRERERERERERGZBMuoiYiIiIiIiIgoz0hhGXWuxsxGIiIiIiIiIiIiMgkGG4mIiIiIiIiIiMgkWEZNRERERERERER5Bkejzt2Y2UhEREREREREREQmwWAjERERERERERERmQSDjURERERERERERPRyBRv/+ecfmJmZISwsLKcP5YXWqFEjvPPOOzl9GERERERERERERqWk5J3pZfRUA8QEBgZi7Nix2LhxI+7fvw9XV1dUqlRJPfbKK69k31ECqFu3Lu7evQtn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load data\n", + "hrv_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv').set_index('Participant')\n", + "pupil_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv').set_index('Participant')\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv').set_index('Participant')\n", + "\n", + "# combine all\n", + "combined = pd.concat([\n", + " hrv_df.add_suffix('_HRV_SDNN'),\n", + " pupil_df.add_suffix('_Pupil_STD'),\n", + " duration_df.add_suffix('_Duration_STD'),\n", + "], axis=1)\n", + "\n", + "cols = combined.columns\n", + "n = len(cols)\n", + "\n", + "# correlation with p-values\n", + "r_matrix = np.zeros((n, n))\n", + "p_matrix = np.zeros((n, n))\n", + "\n", + "for i in range(n):\n", + " for j in range(n):\n", + " r, p = stats.pearsonr(combined.iloc[:, i], combined.iloc[:, j])\n", + " r_matrix[i, j] = r\n", + " p_matrix[i, j] = p\n", + "\n", + "r_df = pd.DataFrame(r_matrix, index=cols, columns=cols)\n", + "p_df = pd.DataFrame(p_matrix, index=cols, columns=cols)\n", + "\n", + "# annotation with significance stars\n", + "annot = np.empty_like(r_matrix, dtype=object)\n", + "for i in range(n):\n", + " for j in range(n):\n", + " stars = \"***\" if p_df.iloc[i, j] < 0.001 else \"**\" if p_df.iloc[i, j] < 0.01 else \"*\" if p_df.iloc[i, j] < 0.05 else \"\"\n", + " annot[i, j] = f\"{r_df.iloc[i, j]:.2f}{stars}\"\n", + "\n", + "# plot heatmap\n", + "plt.figure(figsize=(14, 11))\n", + "sns.heatmap(r_df, annot=annot, fmt='', cmap='coolwarm', vmin=-1, vmax=1, center=0)\n", + "plt.title('Correlation Matrix with Significance (* p<.05, ** p<.01, *** p<.001)')\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0f4855fd", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-05T00:17:25.253046Z", + "iopub.status.busy": "2026-07-05T00:17:25.252940Z", + "iopub.status.idle": "2026-07-05T00:17:25.433215Z", + "shell.execute_reply": "2026-07-05T00:17:25.432802Z" + }, + "mms_tag": "group_corr_fdr" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "36 unique pairs tested | significant at p<.05: 6 raw -> 2 after FDR correction\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABRsAAARBCAYAAACl2VeVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdBZiUVRfA8bNLLEsvzVK7dHcqIh0iLSktSCgGioJBS0krCoKEgpTSjSBS0t3SXcsGteR8z7l8MzuzzAYyywb/n88rO/PemXl7Zs6cc6+bxWKxCAAAAAAAAAA8J/fnfQIAAAAAAAAAUAQbAQAAAAAAALgEwUYAAAAAAAAALkGwEQAAAAAAAIBLEGwEAAAAAAAA4BIEGwEAAAAAAAC4BMFGAAAAAAAAAC5BsBEAAAAAAACASxBsBAAAAAAAAOASBBsBAP/Z1KlTxc3NTU6fPu2y59Tn0ufU544r1q1bZ9ZJ/41s299///2FLFts4uzY6Nu3r7kvNtLl1uWPieehMxUrVjSTvStXrshbb70lqVOnNsswevToZzre44o5c+ZIqlSp5NatW9G9KABeoGbNmkmTJk2iezEAIMYh2AgAMcyJEyekU6dOkj17dkmUKJEkT55cXn31VRkzZozcvXtX4orffvvNBCZeVlG1/tbAk7OpZ8+etnY+Pj62+93d3SVlypRSqFAheffdd2Xr1q1Onzv08+mx+frrr8vSpUslrnrZj9OIfPzxx7Jy5Urp1auX/Prrr1KzZk152Tx69Ej69Okj3bp1k6RJkz41XwO0UR0IdoWAgABz/qdNm1aSJEkilSpVkl27dj3Vzv7aYT917tz5uZchom2l1zdXBOhfhJ9//lny5ctn3sdz5col33333VNtjh49as6hV155xbRz5Y8GGuxv27ZtuG10X4ZHt3Vs+OHv8ePHMmzYMPH19TXbsXDhwjJz5kynbQ8fPmyuU3qu6g8ErVq1kmvXrj3V7ptvvpG6detK+vTpw/1h6PPPP5c//vhD9u7d6/L1AoDYLH50LwAAIIQGbRo3biweHh7SunVrKViwoNy/f182btwoPXr0kIMHD8pPP/0kcSWIc+DAAfnoo48c7s+WLZsJqiZIkEDiigoVKph1SpgwYYTr7yr9+/c3X7zs6fFkr2jRovLJJ5+Yv2/evGm+hM2dO1cmTpxovgCPHDnyqeetVq2aOTYtFoucOXNGfvzxR6lTp44sX75catSoIS/aV1995RBEdbWo3k+uoF+WNbtGrxtRadWqVU/dt3btWqlXr558+umntvty58791PEely1evNgEjTRQZ7V+/XopXbq0CXzYW7NmjQnQx48fP8YFa2rXrm0CJvpekyZNGvnhhx9M8G/nzp0mWBbWtcN+v/8XEW2rixcvyu3bt03gzp7e7+fnZ34kiWkmTJhggq+NGjWS7t27y4YNG+SDDz6QO3fumOCU1T///CNjx46V/Pnzm/Xbs2fPc71uYGCguY6XLVv2qUCyHqNlypSRP//80wSS48WL59BGfzTQa7he77y8vCRTpkwO8/Xxeo2JKEAZHb788ksZMmSIdOzYUUqVKiULFy6UFi1amCChXhutzp8/b96PU6RIIYMGDTKZyMOHD5f9+/fLtm3bHK5Z+t6SIUMGKVasmNk2YdH5JUuWlBEjRsgvv/wS5esKALGGBQAQI5w8edKSNGlSS968eS0XL158av6///5rGT169HO/zuPHjy137txxOu/u3buWR48eRfq5pkyZYtG3klOnTj3zctSuXduSLVs2y8sqrPX/66+/zDadO3fuf3pe6z7Zvn17uO30tXUZQtNjo379+uY5fvjhB4d5et97773ncN+hQ4fM/bVq1bJENT3O9LV0HV+UqDxOdV369Oljic3c3NyeOiZeNnXr1rWUL1/e4b7u3buba7mez6+//rpl27ZtlhYtWlhKlixpOX/+/AtbNr3e79u3L8J2s2fPfuq6c/XqVUvKlCktzZs3j9S147+KaFutWbPGvOaAAQMsP/30k6V3796WH3/80dw3a9Ysy4t05swZi7+/f7ht9BqaOnXqp7bR22+/bUmSJInlxo0btvv8/PwsQUFB5u9vv/32P7+fWu3du9eSO3duywcffGBZvHixpU2bNpbff//d4uvraxk1apQ5Hpo0aWK27Z49e8w21M8e1atXt1SrVs1y8+ZNy2+//WbJkiWL2ca6rXWb67bX51i7dq3lRTp8+LDl/v374bbRYyRBggQO1yFdz9dee82SOXNmy8OHD233d+nSxeLp6Wn2o9Xq1avNdp8wYYLD81r3w7Vr1yK8Vg8fPtzsW91+AIAnCDYCQAzRuXNn84F206ZNkWr/4MEDS//+/S3Zs2e3JEyY0Hxp6NWrlyU4ONjpF8MVK1ZYSpQo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WX0K9Ay1svoEiFJhsJGIiIiIiIiIiHIOE5OsPgNKB8uoiYiIiIiIiIiIyCgYbCQiIiIiIiIiIiKjYBk1ERERERERERHlGBrmzmVrHB0iIiIiIiIiIiIyCgYbiYiIiIiIiIiIyChYRk1ERERERERERDmGhrNRZ2vMbCQiIiIiIiIiIiKjYLCRiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIK9mwkIiIiIiIiIqIcQ2PC3LnsjKNDRERERERERERERsFgIxERERERERERERkFy6iJiIiIiIiIiCjH0MAkq0+B0sHMRiIiIiIiIiIiIjIKBhuJiIiIiIiIiIjIKFhGTUREREREREREOQZno87eODpERERERERERERkFAw2EhERERERERERkVEw2EhERERERERERERGwZ6NRERERERERESUY2hMTLL6FCgdzGwkIiIiIiIiIiIio2CwkYiIiIiIiIiIiIyCZdRERERERERERJRjaMAy6uyMmY1ERERERERERERkFAw2EhERERERERERkVEw2EhERERERERERERGwZ6NRERERERERESUY2hMmDuXnXF0iIiIiIiIiIiIyCgYbCQiIiIiIiIiIiKjYBk1ERERERERERHlGBqYZPUpUDqY2UhERERERERERERGwWAjERERERERERERGQXLqImIiIiIiIiIKMfgbNTZG0eHiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIKBhuJiIiIiIiIiIjIKNizkYiIiIiIiIiIcgwNTLL6FCgdzGwkIiIiIiIiIiIio2CwkYiIiIiIiIiIiIyCZdRERERERERERJRjaEyYO5edcXQM+Oeff2BiYoKQkJCsPpUc4ZtvvkHFihV167169UK7du2y9JyIiIiIiIiIiOjVy7aZjf7+/hg9ejQ2btyIhw8fwsXFBRUqVFCPvfHGG5n6tWvXro379+/DyckJmW3GjBn46aef8ODBA3V906dPR/Xq1dVzQUFBGDNmDLZt24bbt2/Dw8NDBfG+//77DJ3bzZs34ePjo1t3dXVFlSpVMHHiRFSqVMlo1/Dpp59i8ODBRh/n+Ph4NGzYMN39d+/era7z/fffV+umpqZwdHSEr68v3nzzTQwdOvSVjOOr9NfuI1i4dT8CQyPgWzAvRnR9E2V9ChjcdvXe49hw6BSu3nuo1ksV9sLg9k31tq/U92uD+378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JSrjo5GzYGGZcs8Q8PAOIsJT7hkObP9L/fvrd8mJJFpd+41FjQbJlW0NWr2HhPhYrF00EVGRYfAq5Iv+X86Fe17OIv4iWrXvgdiYaMyfOQ5RkRHwLVUBw0dPg2WqcXr04C7Cw1I+AL5x9SImft1Pt/7nvOSYwBsN30TfoclzJVSp2RA9+43CxlULsOS3yWpm6kEjJsK3ND/wJ+MbNmyYimXIRMiS4CUzSadOSpMYV/78+XU9HyXmUb9+fZU4JvN8SOtAScCbMye5bYbESCTZTmI9MnGyBB+lfZ2Xl5euyjYzmGhSN+wjeoJM1CLfmFI2/bqI2pvySRdlT38lsq9kdsffLNlfJ9t1WX0KlAF76n6W1adAz1BvSpusPgV6hpAW+sEeyn7ORSTP0EzZl7N1dFafAj1DrVK5J8kmI65eu4GcolhR/Z6fzyKVtD/99JMuKW3atGkqUUs0aNBAJZ6lnlRXKkS/+uorVfErAUWpFm3VKjnjXUjYT+bFkACkxHbq1KmDmTNnqtaAr1VmIxERERERERERkSGa7NkV0CgGDRqkN5dHaoYmSZbq1CcrVFOT7EapzpXlVcm9o/MakIltpBTZ0CLPZbXbt2+neX6yyPNERERERERERJR7MLMxB5OodFqT1BirT6H0pXzR3pTSA8DQ7NapnyciIiIiIiIiotyDwcYczNPTUy3Zlbm5+VMT2xARERERERERUe7FYCMREREREREREeUYGphk9SlQOtizkYiIiIiIiIiIiIyCwUYiIiIiIiIiIiIyCpZRExERERERERFRjsEy6uyNmY1ERERERERERERkFAw2EhERERERERERkVEw2EhERERERERERERGwZ6NRERERERERESUY7BnY/bGzEYiIiIiIiIiIiIyCgYbiYiIiIiIiIiIyChYRk1ERERERERERDkGy6izN2Y2EhERERERERERkVEw2EhERERERERERERGwTJqIiIiIiIiIiLKMTQallFnZ8xsJCIiIiIiIiIiIqNgsJGIiIiIiIiIiIiMgsFGIiIiIiIiIiIiMgr2bCQiIiIiIiIiohxDA/ZszM6Y2UhERERERERERERGwWAjERERERERERERGQXLqImIiIiIiIiIKMdgGXX2xsxGIiIiIiIiIiIiMgoGG4mIiIiIiIiIiMgoWEZNREREREREREQ5BsuoszdmNhIREREREREREZFRMNhIRERERERERERERsFgIxERERERERERERkFezYSEREREREREVGOodGwZ2N2xsxGIiIiIiIiIiIiMgoGG4mIiIiIiIiIiMgoWEZNREREREREREQ5RhJYRp2dMbORiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIKllETEREREREREVGOoWEZdbbGzEYiIiIiIiIiIiIyCgYbiYiIiIiIiIiIyCgYbCQiIiIiIiIiIiKjYM9GIiIiIiIiIiLKMTQa9mzMzkw0Go0mq0+CKDs52bhOVp8CPUPhX37M6lOgZ4g3t8nqU6BnSPzfhKw+BcoAx2KFsvoU6Bn2DluX1adAz1Dk0q6sPgV6BlMkZfUp0DM4xgdm9SnQM+QrWRGvk5NXcs73ZGVfN7xuWEZNRERERERERERERsEyaiIiIiIiIiIiyjE0YBl1dsbMRiIiIiIiIiIiIjIKBhuJiIiIiIiIiIjIKBhsJCIiIiIiIiIiIqNgz0YiIiIiIiIiIsoxNBr2bMzOmNlIRERERERERERERsFgIxERERERERERERkFy6iJiIiIiIiIiCjH0IBl1NkZMxuJiIiIiIiIiIjIKBhsJCIiIiIiIiIiIqNgGTUREREREREREeUYnI06e2NmIxERERERERERERkFg41ERERERERERERkFAw2EhERERERERERkVGwZyMREREREREREeUYSVl9ApQuZjYSERERERERERGRUTDYSEREREREREREREbBMmoiIiIiIiIiIsoxNBqTrD4FSgczG4mIiIiIiIiIiMgoGGwkIiIiIiIiIiIio2AZNRERERERERER5RgasIw6O2NmIxERERERERERERkFg41ERERERERERERkFAw2EhERERERERERkVGwZyMREREREREREeUYGg17NmZnzGwkIiIiIiIiIiIio2CwkYiIiIiIiIiIiIyCZdRERERERERERJRjaMAy6uyMmY1ERERERERERERkFAw2EhERERERERERkVGwjJqIiIiIiIiIiHKMJE1WnwGlh5mNREREREREREREZBQMNhIREREREREREZFRMNhIRERERERERERERsGejURERERERERElGNoYJLVp0DpYGYjERERERERERERGQWDjURERERERERERGQULKMmIiIiIiIiIqIcQ6NhGXV2xsxGIiIiIiIiIiIiMgoGGw34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VUtqVlZWanlRFy9exJYtW3Ds2DFUrVpVPTZ9+nS0atVKBRMNta0rW7YsVq1apVsvWrQofvjhB7z77rtISEhQ1ampg4t58+Z94fPjBDFERERERERERJRjJGlyzjJ+/HhVppx6kcdexqFDh1RAUBtoFE2aNFHl1EeOHMnwcUJDQ9WcH6kDjWLgwIFwd3dH9erVMW/ePGiec/pvZjYSERERERERERFlglGjRmHYsGF6j71MVqN48ODBU3N4SMDQ1dVVPZcRAQEBql+jlF4/ORlxo0aNYGtrq/o7DhgwABERERgyZEiGz4/BRiIiIiIiIiIiokxg9Rwl0yNHjsTEiROfWUL9ssLCwvDmm2+q3o3ffPON3nNff/217v+VKlVCZGQkfvrpJwYbiYiIiIiIiIiIcpLhw4ejV69e6W5TpEgR1U/x0aNHeo9L30WZcfpZvRbDw8PV5C8ODg5Ys2YNLCws0t2+Ro0aKgNS+k5mNGjKYCMREREREREREeUYGo0JciMPDw+1PEutWrUQEhKCEydOoEqVKuqxXbt2ISkpSQUH08tobN68uQoarlu3DtbW1s/8WqdOnYKLi8tzlX4z2EhERERERERERJRDlCpVSmUn9u3bF7NmzUJ8fDwGDRqELl266Gaivnv3Lho3boxFixapiV4k0NisWTNERUXhjz/+UOuyCAlwmpmZYf369Xj48CFq1qypApHbt2/HuHHj8Omnnz7X+THYSERERERERERElIMsWbJEBRgloCizUHfo0AHTpk3TPS8ByMuXL6vgojh58qRupupixYrpHevGjRvw9vZWJdUzZszAJ598omaglu2mTJmigprPg8FGIiIiIiIiIiLKMTSarD6DrOfq6oqlS5em+bwEDyVgqNWgQQO9dUMkW1KWl2X60kcgIiIiIiIiIiIiYrCRiIiIiIiIiIiIjIVl1ERERERERERElGMkIXfORp1bMLORiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIKBhuJiIiIiIiIiIjIKNizkYiIiIiIiIiIcgyNJqvPgNLDzEYiIiIiIiIiIiIyCgYbiYiIiIiIiIiIyChYRk1ERERERERERDmGRmOS1adA6WBmIxERERERERERERkFg41ERERERERERERkFAw2EhERERERERERkVGwZyMREREREREREeUYSZqsPgNKDzMbiYiIiIiIiIiIyCgYbCQiIiIiIiIiIiKjYBk1ERERERERERHlGBqWUWdrzGwkIiIiIiIiIiIio2CwkYiIiIiIiIiIiIyCZdRERERERERERJRjaGCS1adA6WBmIxERERERERERERkFg41ERERERERERERkFAw2EhERERERERERkVGwZyMREREREREREeUYSZqsPgNKDzMbiYiIiIiIiIiIyCgYbCQiIiIiIiIiIiKjYBk1ERERERERERHlGBqWUWdrzGwkIiIiIiIiIiIiozDRaBgPJkot8NzBrD4FeobF12tl9SnQM3h58FdLdtfCamdWnwJlQKhD/qw+BXqGCFOnrD4FeobrJRtl9SnQM/h2KprVp0DPUKDve1l9CvQMNg264nWy4nAScoqONV+/PD+WURMRERERERERUY7BtLns7fULrxIREREREREREVGmYLCRiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIK9mwkIiIiIiIiIqIcI0ljktWnQOlgZiMREREREREREREZBYONREREREREREREZBQsoyYiIiIiIiIiohxDo8nqM6D0MLORiIiIiIiIiIiIjILBRiIiIiIiIiIiIjIKllETEREREREREVGOwTLq7I2ZjURERERERERERGQUDDYSERERERERERGRUTDYSEREREREREREREbBno1ERERERERERJRjJLFnY7bGzEYiIiIiIiIiIiIyCgYbiYiIiIiIiIiIyChYRk1ERERERERERDmGRmOS1adA6WBmIxERERERERERERkFg41ERERERERERERkFAw2EhERERERERERkVGwZyMREREREREREeUYGk1WnwGlh5mNREREREREREREZBQMNhIREREREREREZFRsIyaiIiIiIiIiIhyjCSWUWdrzGwkIiIiIiIiIiIio2CwkYiIiIiIiIiIiIyCZdRERERERERERJRjcDbq7I2ZjURERERERERERGQUDDYSERERERERERGRUTDYSEREREREREREREbBno1ERERERERERJRjsGdj9sbMRiIiIiIiIiIiIjIKBhuJiIiIiIiIiIjIKFhGTUREREREREREOUYSy6izNWY2EhERERERERERkVEw2EhERERERERERERGwTJqIiIiIiIiIiLKMTgbdfbGzEYiIiIiIiIiIiIyCgYbiYiIiIiIiIiIyCgYbCQiIiIiIiIiIqLXK9j4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M/h2YkZsdlegb3KWOmVfNg0Mt2zKrWZsRo4x0HCHmVyNU5gSERERERERERGRUTDYaGRS8ixlvIYW6Uf5uknrtZBl3759WX16RERERERERJTDSJFuTlleRy89GzXpkwlZOnXqZPA5mYTldZPe7NnSN5KIiIiIiIiIiHIPBhuNTGajzuiM1K+DYsWKZfUpEBERERERERHRK8JgIxERERERERER5RivaXVyjsGejURERERERERERGQUDDYSERERERERERGRUTDYSEREREREREREREbBno1ERERERERERJRjJCVl9RlQepjZSEREREREREREREbBYCMREREREREREREZBcuoiYiIiIiIiIgox9BosvoMKD3MbCQiIiIiIiIiIiKjYLCRiIiIiIiIiIiIjILBRiIiIiIiIiIiohwkKCgI3bt3h6OjI5ydndG7d29ERESku0+DBg1gYmKit/Tr109vm9u3b+PNN9+Era0tPD098dlnnyEhIeG5zo09G4mIiIiIiIiIKMdIYs9GSKDx/v372L59O+Lj4/H+++/jww8/xNKlS9Pdr2/fvvjuu+906xJU1EpMTFSBxrx58+LgwYPq+D169ICFhQXGjRuX4XNjsJGIiIiIiIiIiCiHuHjxIrZs2YJjx46hatWq6rHp06ejVatWmDRpEry8vNLcV4KLEkw0ZNu2bbhw4QJ27NiBPHnyoGLFivj+++8xYsQIfPPNN7C0tMzQ+bGMmoiIiIiIiIiIKBPExsYiLCxMb5HHXsahQ4dU6bQ20CiaNGkCU1NTHDlyJN19lyxZAnd3d5QtWxajRo1CVFSU3nHLlSunAo1azZs3V+d8/vz5DJ8fg41ERERERERERJRjaDQ5Zxk/fjycnJz0FnnsZTx48ED1U0zN3Nwcrq6u6rm0dOvWDX/88Qd2796tAo2LFy/Gu+++q3fc1IFGoV1P77hPYhk1ERERERERERFRJhg1ahSGDRum95iVlZXBbUeOHImJEyc+s4T6RUlPRy3JYMyXLx8aN26Ma9euoWjRojAWBhuJiIiIiIiIiIgygZWVVZrBxScNHz4cvXr1SnebIkWKqJ6Ljx490ntcZoyWGarT6sdoSI0aNdS/V69eVcFG2ffo0aN62zx8+FD9+zzHZbCRiIiIiIiIiIhyDE2Omo7aJMNbenh4qOVZatWqhZCQEJw4cQJVqlRRj+3a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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import sys, pathlib\n", + "sys.path.insert(0, str(pathlib.Path.cwd().parent)) # repo root -> import mms\n", + "import mms\n", + "import pandas as pd, numpy as np, matplotlib.pyplot as plt, seaborn as sns\n", + "\n", + "combined = pd.concat([\n", + " mms.io.load_group_summary('HRV_SDNN').set_index('Participant').add_suffix('_HRV_SDNN'),\n", + " mms.io.load_group_summary('Pupil_Dilation_STD').set_index('Participant').add_suffix('_Pupil_STD'),\n", + " mms.io.load_group_summary('Psychometric_Test_Duration_STD').set_index('Participant').add_suffix('_Duration_STD'),\n", + "], axis=1)\n", + "\n", + "res = mms.stats.corr_matrix_fdr(combined)\n", + "r, p_raw, p_fdr = res['r'], res['p_raw'], res['p_fdr']\n", + "\n", + "def stars(p):\n", + " return '***' if p < .001 else '**' if p < .01 else '*' if p < .05 else ''\n", + "\n", + "annot = np.empty(r.shape, dtype=object)\n", + "for i in range(r.shape[0]):\n", + " for j in range(r.shape[1]):\n", + " annot[i, j] = f\"{r.iloc[i, j]:.2f}{stars(p_fdr.iloc[i, j])}\"\n", + "\n", + "iu = np.triu_indices_from(p_fdr.values, k=1)\n", + "n_raw = int((p_raw.values[iu] < .05).sum())\n", + "n_fdr = int((p_fdr.values[iu] < .05).sum())\n", + "print(f'{res[\"n_tests\"]} unique pairs tested | significant at p<.05: '\n", + " f'{n_raw} raw -> {n_fdr} after FDR correction')\n", + "\n", + "plt.figure(figsize=(14, 11))\n", + "sns.heatmap(r, annot=annot, fmt='', cmap='coolwarm', vmin=-1, vmax=1, center=0)\n", + "plt.title('Correlations with FDR-adjusted significance (* p<.05, ** p<.01, *** p<.001)')\n", + "plt.tight_layout(); plt.show(); plt.close()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_duration.ipynb b/group/group_duration.ipynb new file mode 100755 index 0000000..81f7721 --- /dev/null +++ b/group/group_duration.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e7320eeb", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Duration\n", + "\n", + "Group-level response-duration variability across sessions.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9cf4e728-1f2f-4b52-a344-7913e354a0e1", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "participants = duration_df['Participant'].tolist()\n", + "\n", + "# build stats dict\n", + "stats = {}\n", + "for _, row in duration_df.iterrows():\n", + " pid = row['Participant']\n", + " session_data = pd.DataFrame({\n", + " 'Session': ['S01', 'S02', 'S03'],\n", + " 'STD of Duration (s)': [row['Session 01'], row['Session 02'], row['Session 03']]\n", + " })\n", + " stats[pid] = session_data\n", + "\n", + "# plot STD duration\n", + "def plot_std_duration(stats, title):\n", + " fig, ax = plt.subplots()\n", + " colors = mpl.colormaps['tab10']\n", + " \n", + " for i, p_str in enumerate(stats):\n", + " x = stats[p_str]['Session']\n", + " y_std = stats[p_str]['STD of Duration (s)']\n", + " ax.plot(x, y_std, marker='o', label=f'{p_str} - STD of Duration (s)', color=colors(i))\n", + " \n", + " plt.title(title)\n", + " plt.ylabel('Time (seconds)')\n", + " plt.xlabel('Session')\n", + " plt.legend()\n", + " plt.grid(True)\n", + " plt.show()\n", + " plt.close()\n", + "\n", + "plot_std_duration(stats, 'STD of Duration by Session (10 Participants)')\n", + "\n", + "for p_str in stats:\n", + " print(f\"Statistics for {p_str}:\\n\", stats[p_str])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_eye.ipynb b/group/group_eye.ipynb new file mode 100755 index 0000000..1019679 --- /dev/null +++ b/group/group_eye.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "150c0415", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Eye\n", + "\n", + "Group-level pupil-dilation variability across sessions.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f648e1a5-8777-489e-a303-e578f4284bef", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load pupil data\n", + "results_df = pd.read_csv(f'{OUTPUT}/Pupil_Dilation_STD.csv')\n", + "\n", + "print(results_df)\n", + "\n", + "# plot standard deviations\n", + "ax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n", + "\n", + "plt.title('Standard Deviation of Pupil Dilation for Each Participant Across Three Sessions')\n", + "plt.ylabel('Standard Deviation of Pupil Dilation')\n", + "plt.xlabel('Participant')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=0.1, color='blue', linestyle=':', label='Normal')\n", + "ax.axhline(y=0.2, color='purple', linestyle=':', label='Moderate Variation')\n", + "ax.axhline(y=0.3, color='green', linestyle=':', label='High Variation')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Session / Pupil Dilation Levels')\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_hrv.ipynb b/group/group_hrv.ipynb new file mode 100755 index 0000000..2f52ee9 --- /dev/null +++ b/group/group_hrv.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "edb0e4c5", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Hrv\n", + "\n", + "Group-level HRV (SDNN) across sessions.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "873a74e8-b192-4cd1-9181-f42b24e340c3", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load hrv data\n", + "results_df = pd.read_csv(f'{OUTPUT}/HRV_SDNN.csv')\n", + "\n", + "print(results_df)\n", + "\n", + "# plot standard deviations\n", + "ax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n", + "\n", + "plt.title('Standard Deviation of HRV (SDNN) for Each Participant Across Three Sessions')\n", + "plt.ylabel('Standard Deviation of HRV (SDNN) (ms)')\n", + "plt.xlabel('Participant')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=50, color='blue', linestyle=':', label='Normal SDNN')\n", + "ax.axhline(y=100, color='purple', linestyle=':', label='Moderate SDNN')\n", + "ax.axhline(y=150, color='green', linestyle=':', label='High SDNN')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Session / HRV Levels')\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_sd.ipynb b/group/group_sd.ipynb new file mode 100755 index 0000000..1a9b786 --- /dev/null +++ b/group/group_sd.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1b5ef414", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Sd\n", + "\n", + "Group-level standard-deviation metrics across modalities.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f49bbf98-6722-473e-98f8-035c65362383", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "results_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "print(results_df)\n", + "\n", + "# plot standard deviations\n", + "ax = results_df.set_index('Participant').plot(figsize=(15, 8), marker='o')\n", + "\n", + "plt.title('Standard Deviation of Psychometric Test Duration for Each Participant Across Three Sessions')\n", + "plt.ylabel('Standard Deviation of Test Duration (seconds)')\n", + "plt.xlabel('Participant')\n", + "plt.xticks(rotation=45)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "\n", + "# reference lines\n", + "ax.axhline(y=30, color='blue', linestyle=':', label='Normal')\n", + "ax.axhline(y=60, color='purple', linestyle=':', label='Moderate Variation')\n", + "ax.axhline(y=90, color='green', linestyle=':', label='High Variation')\n", + "\n", + "# merge legend handles\n", + "handles, labels = ax.get_legend_handles_labels()\n", + "ax.legend(handles, labels, title='Session / Duration Levels')\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/group/group_time.ipynb b/group/group_time.ipynb new file mode 100755 index 0000000..655e890 --- /dev/null +++ b/group/group_time.ipynb @@ -0,0 +1,197 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e887cfe9", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Group Time\n", + "\n", + "Group-level response-timing analysis.\n", + "\n", + "**Reads:** `data/group_results/ (10-participant summaries)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "03c87567-033a-4a6a-9cbf-9bb6ef4dd361", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# build session stats\n", + "rows = []\n", + "for _, row in duration_df.iterrows():\n", + " for s_idx, s_name in enumerate(['Session 01', 'Session 02', 'Session 03'], 1):\n", + " rows.append({\n", + " 'Participant': row['Participant'],\n", + " 'Session': f'Session {s_idx:02d}',\n", + " 'Count': '-',\n", + " 'Duration STD (s)': round(row[s_name], 2)\n", + " })\n", + "\n", + "session_stats = pd.DataFrame(rows)\n", + "\n", + "print(\"Duration STD During 3 Sessions for Each Participant\")\n", + "print(session_stats.to_string(index=False))\n", + "\n", + "# convert to numeric\n", + "session_stats['Duration STD (s)'] = pd.to_numeric(session_stats['Duration STD (s)'])\n", + "\n", + "# visualize results bar\n", + "plt.figure(figsize=(15, 8))\n", + "sns.barplot(x='Session', y='Duration STD (s)', hue='Participant', data=session_stats, errorbar=None)\n", + "plt.title('Duration STD for Each Session by Participant')\n", + "plt.ylabel('Duration STD (s)')\n", + "plt.xlabel('Session')\n", + "plt.legend(title='Participant', bbox_to_anchor=(1.05, 1), loc='upper left')\n", + "sns.despine(trim=True)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# plot per participant\n", + "sns.catplot(x='Session', y='Duration STD (s)', col='Participant', data=session_stats, kind='bar', col_wrap=4, height=4, aspect=1)\n", + "plt.subplots_adjust(top=0.9)\n", + "plt.suptitle('Duration STD for Each Session by Participant')\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "520fa50f-44ab-4525-bc34-18e9d263d65e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.cluster import KMeans\n", + "\n", + "OUTPUT = '../data/group_results'\n", + "\n", + "# load duration data\n", + "duration_df = pd.read_csv(f'{OUTPUT}/Psychometric_Test_Duration_STD.csv')\n", + "\n", + "# pivot by session\n", + "mean_durations = duration_df.set_index('Participant')\n", + "mean_durations.columns = ['Session 01', 'Session 02', 'Session 03']\n", + "\n", + "# standardize data\n", + "scaler = StandardScaler()\n", + "mean_durations_scaled = scaler.fit_transform(mean_durations)\n", + "\n", + "# kmeans clustering\n", + "kmeans = KMeans(n_clusters=3, n_init=10, random_state=42)\n", + "clusters = kmeans.fit_predict(mean_durations_scaled)\n", + "\n", + "# add cluster labels\n", + "mean_durations['Cluster'] = clusters\n", + "\n", + "# build session stats\n", + "rows = []\n", + "for _, row in duration_df.iterrows():\n", + " for s_idx, s_name in enumerate(['Session 01', 'Session 02', 'Session 03'], 1):\n", + " rows.append({\n", + " 'Participant': row['Participant'],\n", + " 'Session': f'Session {s_idx:02d}',\n", + " 'Count': '-',\n", + " 'Duration STD (s)': round(row[s_name], 2)\n", + " })\n", + "\n", + "session_stats = pd.DataFrame(rows)\n", + "\n", + "print(\"Duration STD During 3 Sessions for Each Participant\")\n", + "print(session_stats.to_string(index=False))\n", + "\n", + "# convert to numeric\n", + "session_stats['Duration STD (s)'] = pd.to_numeric(session_stats['Duration STD (s)'])\n", + "\n", + "# plot clusters heatmap\n", + "plt.figure(figsize=(10, 6))\n", + "sns.heatmap(mean_durations.drop('Cluster', axis=1).assign(Cluster=clusters).sort_values('Cluster').drop('Cluster', axis=1), annot=True, cmap='coolwarm', center=0)\n", + "plt.title('Participant Clusters Based on Answer Duration Patterns')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# cluster assignments\n", + "print(\"Cluster Assignments:\")\n", + "print(mean_durations[['Cluster']].reset_index())\n", + "\n", + "# visualize clusters\n", + "plt.figure(figsize=(15, 8))\n", + "for cluster in range(kmeans.n_clusters):\n", + " participants_in_cluster = mean_durations[mean_durations['Cluster'] == cluster].index\n", + " cluster_data = mean_durations.loc[participants_in_cluster].drop('Cluster', axis=1).T\n", + " for i, participant in enumerate(cluster_data.columns):\n", + " label = f'Cluster {cluster+1}' if i == 0 else '_nolegend_'\n", + " sns.lineplot(data=cluster_data[participant], label=label, marker='o')\n", + "\n", + "plt.title('Duration STD Across Sessions by Clusters')\n", + "plt.ylabel('Duration STD (s)')\n", + "plt.xlabel('Session')\n", + "plt.legend(title='Cluster', bbox_to_anchor=(1.05, 1), loc='upper left')\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# visualize results bar\n", + "plt.figure(figsize=(15, 8))\n", + "sns.barplot(x='Session', y='Duration STD (s)', hue='Participant', data=session_stats, errorbar=None)\n", + "plt.title('Duration STD for Each Session by Participant')\n", + "plt.ylabel('Duration STD (s)')\n", + "plt.xlabel('Session')\n", + "plt.legend(title='Participant', bbox_to_anchor=(1.05, 1), loc='upper left')\n", + "sns.despine(trim=True)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# plot per participant\n", + "sns.catplot(x='Session', y='Duration STD (s)', col='Participant', data=session_stats, kind='bar', col_wrap=4, height=4, aspect=1)\n", + "plt.subplots_adjust(top=0.9)\n", + "plt.suptitle('Duration STD for Each Session by Participant')\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/CSV.ipynb b/individual/CSV.ipynb deleted file mode 100755 index b0ce0b1..0000000 --- a/individual/CSV.ipynb +++ /dev/null @@ -1,153 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "id": "6wbwph8o288", - "source": "import pandas as pd\nimport numpy as np\n\nRAW = '../data/individual/raw'\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2d1cae14-78bf-4aef-ac58-82fa96b1363c", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/hr.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/hr.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "14a8ada0-f7a1-4fb1-ab07-13c1ae0a0a7c", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/hr_01.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/hr_01.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4da28eb8-3d63-49d8-835e-fbf6d2796130", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/hr_02.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/hr_02.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b100977d-19df-43f1-9559-d8d9815e531f", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/hr_03.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/hr_03.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "127d676f-bc31-4518-b223-7de3195c7172", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/ibi.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/ibi.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9be74ecd-6214-4a1a-9aa2-4e67066a0223", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/ibi_01.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/ibi_01.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b056e60d-77c0-4fd1-b33e-74e28cce7a99", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/ibi_02.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/ibi_02.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "683b9f77-5c4f-46d2-a8f2-269123d437a9", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/ibi_03.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/ibi_03.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "90b59a53-e30d-4137-916d-08b66f3d06e6", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/sed.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/sed.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3885999c-d149-4689-bd63-2f692d6a689a", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/sed_01.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/sed_01.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e68c8763-e49c-4282-9e72-f24a9c8f6ff5", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/sed_02.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/sed_02.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e36ed587-ffe5-4430-97f7-3d2a949ab064", - "metadata": {}, - "outputs": [], - "source": "# load txt file\nfile_path = f'{RAW}/sed_03.txt'\ndf = pd.read_csv(file_path, delimiter=';')\n\n# save as CSV\ncsv_file_path = f'{DATA}/sed_03.csv'\ndf.to_csv(csv_file_path, index=False)\n\ncsv_file_path" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "070320ae-b287-485b-8a88-d202460949ca", - "metadata": {}, - "outputs": [], - "source": "# load CSV files\nsed_df = pd.read_csv(f'{DATA}/sed_01.csv')\n\n# rename columns\nsed_df = sed_df.rename(columns={\n 'gazeDir.x': 'gaze_x',\n 'gazeDir.y': 'gaze_y',\n 'gazeDir.z': 'gaze_z'\n})\n\n# validate data\nif sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n\n# gaze stability threshold\ngaze_threshold = 0.01\n\n# gaze direction diff\nsed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n (sed_df['gaze_y'].diff() ** 2) +\n (sed_df['gaze_z'].diff() ** 2))\n\n# identify fixation points\nsed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n\n# label fixation groups\nsed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n\n# filter fixations\nfixation_df = sed_df[sed_df['fixation']]\n\n# fixation duration\nfixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\nfixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\nfixation_duration = fixation_duration[['duration']]\n\n# merge durations\nsed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n\n# save data\noutput_path = f'{DATA}/sed_fix_01.csv'\nsed_df.to_csv(output_path, index=False)\n\nprint(f\"File saved successfully to {output_path}\")" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0bf1fe6a-2b34-45f3-9bf5-61814b7c9377", - "metadata": {}, - "outputs": [], - "source": "# load CSV files\nsed_df = pd.read_csv(f'{DATA}/sed_02.csv')\n\n# rename columns\nsed_df = sed_df.rename(columns={\n 'gazeDir.x': 'gaze_x',\n 'gazeDir.y': 'gaze_y',\n 'gazeDir.z': 'gaze_z'\n})\n\n# validate data\nif sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n\n# gaze stability threshold\ngaze_threshold = 0.01\n\n# gaze direction diff\nsed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n (sed_df['gaze_y'].diff() ** 2) +\n (sed_df['gaze_z'].diff() ** 2))\n\n# identify fixation points\nsed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n\n# label fixation groups\nsed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n\n# filter fixations\nfixation_df = sed_df[sed_df['fixation']]\n\n# fixation duration\nfixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\nfixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\nfixation_duration = fixation_duration[['duration']]\n\n# merge durations\nsed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n\n# save data\noutput_path = f'{DATA}/sed_fix_02.csv'\nsed_df.to_csv(output_path, index=False)\n\nprint(f\"File saved successfully to {output_path}\")" - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bcb734b9-6537-4487-a85d-60c76a97f8e4", - "metadata": {}, - "outputs": [], - "source": "# load CSV files\nsed_df = pd.read_csv(f'{DATA}/sed_03.csv')\n\n# rename columns\nsed_df = sed_df.rename(columns={\n 'gazeDir.x': 'gaze_x',\n 'gazeDir.y': 'gaze_y',\n 'gazeDir.z': 'gaze_z'\n})\n\n# validate data\nif sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n\n# gaze stability threshold\ngaze_threshold = 0.01\n\n# gaze direction diff\nsed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n (sed_df['gaze_y'].diff() ** 2) +\n (sed_df['gaze_z'].diff() ** 2))\n\n# identify fixation points\nsed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n\n# label fixation groups\nsed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n\n# filter fixations\nfixation_df = sed_df[sed_df['fixation']]\n\n# fixation duration\nfixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\nfixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\nfixation_duration = fixation_duration[['duration']]\n\n# merge durations\nsed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n\n# save data\noutput_path = f'{DATA}/sed_fix_03.csv'\nsed_df.to_csv(output_path, index=False)\n\nprint(f\"File saved successfully to {output_path}\")" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/Co Fixation.ipynb b/individual/Co Fixation.ipynb deleted file mode 100755 index dd12b87..0000000 --- a/individual/Co Fixation.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "b3cf26d0-e0a7-4f4b-8221-3b8d7dedcd2d", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nDATA = '../data/individual/processed'\n\n# load eye data\nsed_data_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\nsed_data_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\nsed_data_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n\n# session labels\nsed_data_01['session'] = 'Session 01'\nsed_data_02['session'] = 'Session 02'\nsed_data_03['session'] = 'Session 03'\n\n# combine datasets\nall_sed_data = pd.concat([sed_data_01, sed_data_02, sed_data_03], ignore_index=True)\n\n# plot fixation comparison\nplt.figure(figsize=(14, 7))\nsns.boxplot(data=all_sed_data, x='session', y='duration')\nplt.title('Comparison of Fixation Durations Across Sessions')\nplt.xlabel('Session')\nplt.ylabel('Fixation Duration (s)')\nplt.grid(True)\nplt.tight_layout()\nplt.show()\nplt.close()\n\n# descriptive statistics\nfixation_duration_stats = all_sed_data[['session', 'duration']].groupby('session').describe()\nfixation_duration_stats" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/Eye Movement.ipynb b/individual/Eye Movement.ipynb deleted file mode 100755 index fced9c7..0000000 --- a/individual/Eye Movement.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "c2901313-92da-47ad-8239-ad3baa85839c", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\n\nDATA = '../data/individual/processed'\n\nbaseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv')\nbaseline_eye_tracking = baseline_eye_tracking.rename(columns={\n 'datetime': 'timestamp',\n 'pupil': 'pupil_dilation',\n 'leftEyeOpen': 'left_blink',\n 'rightEyeOpen': 'right_blink'\n})\n\nbaseline_eye_tracking['timestamp'] = pd.to_datetime(baseline_eye_tracking['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\nbaseline_eye_tracking = baseline_eye_tracking.dropna(subset=['timestamp'])\n\nstart_time = baseline_eye_tracking['timestamp'].min()\nend_time = baseline_eye_tracking['timestamp'].max()\ntotal_duration_minutes = (end_time - start_time).total_seconds() / 60\n\naverage_pupil_dilation = baseline_eye_tracking['pupil_dilation'].mean()\n\nBLINK_THRESHOLD = 1.0\nMIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n\ndef count_blinks(series, threshold, min_frames):\n # sustained closure onset\n closed = (series <= threshold).astype(int)\n sustained = closed.rolling(min_frames).sum() == min_frames\n return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n\nleft_blink_count = count_blinks(baseline_eye_tracking['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES)\nright_blink_count = count_blinks(baseline_eye_tracking['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES)\n\nif total_duration_minutes <= 0:\n left_blink_rate, right_blink_rate = 0.0, 0.0\nelse:\n left_blink_rate = left_blink_count / total_duration_minutes\n right_blink_rate = right_blink_count / total_duration_minutes\n\nprint(f\"Baseline Metrics:\\n\")\nprint(f\" Start Time: {start_time}\")\nprint(f\" End Time: {end_time}\")\nprint(f\" Total Duration: {total_duration_minutes:.2f} minutes\")\nprint(f\" Average Pupil Dilation: {average_pupil_dilation:.2f}\")\nprint(f\" Left Blink Rate: {left_blink_rate:.2f} blinks/min\")\nprint(f\" Right Blink Rate: {right_blink_rate:.2f} blinks/min\")\n" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/HADS EYE.ipynb b/individual/HADS EYE.ipynb deleted file mode 100755 index 73586d3..0000000 --- a/individual/HADS EYE.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "id": "z9ozevy0iye", - "source": "import pandas as pd\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\ncolumns_mapping = {\n 'datetime': 'timestamp',\n 'pupil': 'pupil_dilation',\n 'leftEyeOpen': 'left_blink',\n 'rightEyeOpen': 'right_blink'\n}\n\nbaseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping)\neye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping)\neye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping)\neye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping)\n\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\ndef clean_eye_tracking_data(eye_tracking_data):\n df = eye_tracking_data.copy()\n df['timestamp'] = pd.to_datetime(\n df['timestamp'], utc=True, errors='coerce'\n ).dt.tz_convert(None)\n return df.dropna(subset=['timestamp'])\n\nbaseline_eye_tracking = clean_eye_tracking_data(baseline_eye_tracking)\neye_tracking_01 = clean_eye_tracking_data(eye_tracking_01)\neye_tracking_02 = clean_eye_tracking_data(eye_tracking_02)\neye_tracking_03 = clean_eye_tracking_data(eye_tracking_03)\n\npsychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\npsychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\npsychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\npsychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n\ndef filter_eye_tracking_data(eye_tracking_data, question):\n return eye_tracking_data[\n (eye_tracking_data['timestamp'] >= question['Question Start Time']) &\n (eye_tracking_data['timestamp'] <= question['Question Answer Time'])\n ]\n\nBLINK_THRESHOLD = 1.0\nMIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n\ndef count_blinks(series, threshold, min_frames):\n # sustained closure onset\n closed = (series <= threshold).astype(int)\n sustained = closed.rolling(min_frames).sum() == min_frames\n return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n\ndef calculate_eye_tracking_metrics(eye_tracking_data):\n average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n total_duration_minutes = (\n (eye_tracking_data['timestamp'].max() - eye_tracking_data['timestamp'].min())\n .total_seconds() / 60\n )\n if total_duration_minutes <= 0:\n return average_pupil_dilation, 0.0, 0.0\n left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n return average_pupil_dilation, left_blink_rate, right_blink_rate\n\nbaseline_metrics = calculate_eye_tracking_metrics(baseline_eye_tracking)\n\ndef detect_significant_increase(test_metrics, baseline_metrics):\n return (\n test_metrics[0] > baseline_metrics[0],\n test_metrics[1] > baseline_metrics[1],\n test_metrics[2] > baseline_metrics[2]\n )\n\ndef filter_correct_questions(df, types_count):\n filtered_df = pd.DataFrame()\n for q_type, count in types_count.items():\n filtered_df = pd.concat([filtered_df, df[df['Type'] == q_type].head(count)])\n return filtered_df\n", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3e73cc4-0548-4a9f-af48-063c5f7fef4d", - "metadata": {}, - "outputs": [], - "source": "# Validate – correcting total number of questions per type\ntypes_count = {\n 'HADS': 14,\n 'STAI-S': 20,\n 'STAI-T': 20,\n 'BFI': 10,\n 'FQ': 24\n}\n\nquestions_01 = filter_correct_questions(psychometric_01, types_count)\nquestions_02 = filter_correct_questions(psychometric_02, types_count)\nquestions_03 = filter_correct_questions(psychometric_03, types_count)\n\n# Calculate metrics with baseline comparison (rounded, with per-metric flags)\ndef calculate_metrics_validated(questions, eye_tracking_data, baseline_metrics):\n results = []\n for _, question in questions.iterrows():\n filtered_data = filter_eye_tracking_data(eye_tracking_data, question)\n if not filtered_data.empty:\n metrics = calculate_eye_tracking_metrics(filtered_data)\n significant_increases = detect_significant_increase(metrics, baseline_metrics)\n results.append({\n 'Type': question['Type'],\n 'Question': question['Question'],\n 'Start Time': question['Question Start Time'],\n 'End Time': question['Question Answer Time'],\n 'Score': question['Answer'],\n 'Average Pupil Dilation': round(metrics[0], 2),\n 'Average Left Blink Rate': round(metrics[1], 2),\n 'Average Right Blink Rate': round(metrics[2], 2),\n 'Sign of Anxiety': 'Yes' if any(significant_increases) else 'No',\n 'Pupil Dilation Increase': 'Yes' if significant_increases[0] else 'No',\n 'Left Blink Rate Increase': 'Yes' if significant_increases[1] else 'No',\n 'Right Blink Rate Increase': 'Yes' if significant_increases[2] else 'No'\n })\n return pd.DataFrame(results)\n\nresults_01 = calculate_metrics_validated(questions_01, eye_tracking_01, baseline_metrics)\nresults_02 = calculate_metrics_validated(questions_02, eye_tracking_02, baseline_metrics)\nresults_03 = calculate_metrics_validated(questions_03, eye_tracking_03, baseline_metrics)\n\n# Combine and validate row count\nresults_01['Test'] = 'Test 01'\nresults_02['Test'] = 'Test 02'\nresults_03['Test'] = 'Test 03'\n\ncombined_results = pd.concat([results_01, results_02, results_03], ignore_index=True)\n\nexpected_rows = sum(types_count.values()) * 3\nif len(combined_results) != expected_rows:\n raise ValueError(f\"Expected {expected_rows} rows, got {len(combined_results)}\")\n\n# Save data\ncombined_results.to_csv(f'{DATA}/QQ2.csv', index=False)\n\ncombined_results.head()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/HADS HRV.ipynb b/individual/HADS HRV.ipynb deleted file mode 100755 index 8d59892..0000000 --- a/individual/HADS HRV.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "9c18ab09-a0af-43b8-b908-7d1727472548", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\ndef calculate_hrv_metrics(ibi_data):\n valid_ibi = pd.Series(ibi_data)\n diff_nn = np.diff(valid_ibi)\n rmssd = np.sqrt(np.mean(np.square(diff_nn)))\n sdnn = np.std(valid_ibi, ddof=1)\n return rmssd, sdnn\n\nibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\nibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\nibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\nibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n\n# physiological bounds\nibi_baseline = ibi_baseline[(ibi_baseline['ibi'] > 300) & (ibi_baseline['ibi'] < 2000)]\nrmssd_baseline, sdnn_baseline = calculate_hrv_metrics(ibi_baseline['ibi'])\nbaseline_metrics = (rmssd_baseline, sdnn_baseline)\n\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\npsychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\npsychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\npsychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\npsychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n\ntypes_count = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n\ndef filter_correct_questions(df, types_count):\n filtered_df = pd.DataFrame()\n for q_type, count in types_count.items():\n filtered_df = pd.concat([filtered_df, df[df['Type'] == q_type].head(count)])\n return filtered_df\n\nquestions_01 = filter_correct_questions(psychometric_01, types_count)\nquestions_02 = filter_correct_questions(psychometric_02, types_count)\nquestions_03 = filter_correct_questions(psychometric_03, types_count)\n\ndef prepare_ibi(ibi_data):\n # convert once, avoid repeated mutation\n ibi = ibi_data.copy()\n ibi['datetime'] = pd.to_datetime(ibi['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n return ibi\n\nibi_01 = prepare_ibi(ibi_01)\nibi_02 = prepare_ibi(ibi_02)\nibi_03 = prepare_ibi(ibi_03)\n\ndef get_ibi_data(question, ibi_data):\n filtered = ibi_data[\n (ibi_data['datetime'] >= question['Question Start Time']) &\n (ibi_data['datetime'] <= question['Question Answer Time'])\n ]\n return filtered['ibi'].values\n\ndef detect_significant_decrease(test_metrics, baseline_metrics):\n return (\n test_metrics[0] < baseline_metrics[0],\n test_metrics[1] < baseline_metrics[1]\n )\n\ndef calculate_hrv_metrics_for_questions(questions, ibi_data, baseline_metrics):\n results = []\n for _, question in questions.iterrows():\n ibi_values = get_ibi_data(question, ibi_data)\n # physiological bounds\n ibi_values = ibi_values[(ibi_values > 300) & (ibi_values < 2000)]\n if len(ibi_values) > 1:\n rmssd, sdnn = calculate_hrv_metrics(ibi_values)\n sig = detect_significant_decrease((rmssd, sdnn), baseline_metrics)\n results.append({\n 'Type': question['Type'],\n 'Start Time': question['Question Start Time'],\n 'End Time': question['Question Answer Time'],\n 'Score': question['Answer'],\n 'RMSSD': round(rmssd, 2),\n 'SDNN': round(sdnn, 2),\n 'RMSSD Decrease': 'Yes' if sig[0] else 'No',\n 'SDNN Decrease': 'Yes' if sig[1] else 'No'\n })\n return pd.DataFrame(results)\n\nresults_01 = calculate_hrv_metrics_for_questions(questions_01, ibi_01, baseline_metrics)\nresults_02 = calculate_hrv_metrics_for_questions(questions_02, ibi_02, baseline_metrics)\nresults_03 = calculate_hrv_metrics_for_questions(questions_03, ibi_03, baseline_metrics)\n\nresults_01['Test'] = 'Test 01'\nresults_02['Test'] = 'Test 02'\nresults_03['Test'] = 'Test 03'\n\ncombined_results = pd.concat([results_01, results_02, results_03], ignore_index=True)\ncombined_results = combined_results[['Test', 'Type', 'Start Time', 'End Time', 'Score', 'RMSSD', 'SDNN', 'RMSSD Decrease', 'SDNN Decrease']]\ncombined_results.to_csv(f'{DATA}/QQHRV.csv', index=False)\n\ncombined_results.head()\n" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/Q.ipynb b/individual/Q.ipynb deleted file mode 100755 index 9b952a5..0000000 --- a/individual/Q.ipynb +++ /dev/null @@ -1,196 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "e36e3c42-a501-4e6c-8850-bc6c970c0c28", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\nhr_baseline = pd.read_csv(f'{DATA}/hr.csv')\nhr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\nhr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n\nibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\nibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\nibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\nibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n\neye_tracking_baseline = pd.read_csv(f'{DATA}/sed.csv')\neye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv')\neye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv')\neye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv')\n\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\ncolumns_mapping = {'datetime': 'timestamp', 'pupil': 'pupil_dilation', 'leftEyeOpen': 'left_blink', 'rightEyeOpen': 'right_blink'}\neye_tracking_baseline, eye_tracking_01, eye_tracking_02, eye_tracking_03 = [\n df.rename(columns=columns_mapping) for df in\n [eye_tracking_baseline, eye_tracking_01, eye_tracking_02, eye_tracking_03]\n]\n\ndef clean_eye(df):\n df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\n return df.dropna(subset=['timestamp'])\n\ndef clean_hrv(df):\n df['datetime'] = pd.to_datetime(df['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n return df.dropna(subset=['datetime'])\n\neye_tracking_baseline = clean_eye(eye_tracking_baseline)\neye_tracking_01 = clean_eye(eye_tracking_01)\neye_tracking_02 = clean_eye(eye_tracking_02)\neye_tracking_03 = clean_eye(eye_tracking_03)\n\nhr_baseline = clean_hrv(hr_baseline)\nhr_01 = clean_hrv(hr_01)\nhr_02 = clean_hrv(hr_02)\nhr_03 = clean_hrv(hr_03)\nibi_baseline = clean_hrv(ibi_baseline)\nibi_01 = clean_hrv(ibi_01)\nibi_02 = clean_hrv(ibi_02)\nibi_03 = clean_hrv(ibi_03)\n\npsychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\npsychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\npsychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\npsychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n\ndef calculate_hrv_metrics(ibi_data):\n if len(ibi_data) == 0:\n return None, None\n valid_ibi = ibi_data[ibi_data > 0]\n rmssd = np.sqrt(np.mean(np.square(np.diff(valid_ibi))))\n sdnn = np.std(valid_ibi, ddof=1)\n return rmssd, sdnn\n\ndef calculate_blink_rate(blink_data, duration_s):\n if duration_s <= 0:\n return 0.0\n blink_count = ((blink_data > 1.0) & (blink_data.shift(-1) <= 1.0)).sum()\n return blink_count / (duration_s / 60)\n\nbaseline_avg_hr = hr_baseline['heart_rate'].mean()\nbaseline_duration_s = (eye_tracking_baseline['timestamp'].max() - eye_tracking_baseline['timestamp'].min()).total_seconds()\n\nbaseline_metrics = {\n 'rmssd': calculate_hrv_metrics(ibi_baseline['ibi'])[0],\n 'sdnn': calculate_hrv_metrics(ibi_baseline['ibi'])[1],\n 'pupil_dilation': eye_tracking_baseline['pupil_dilation'].mean(),\n 'left_blink_rate': calculate_blink_rate(eye_tracking_baseline['left_blink'], baseline_duration_s),\n 'right_blink_rate': calculate_blink_rate(eye_tracking_baseline['right_blink'], baseline_duration_s),\n}\n\ndef process_question_data(questions, hr_data, ibi_data, eye_tracking_data, baseline_avg_hr, baseline_metrics):\n results = []\n for _, question in questions.iterrows():\n start_time = question['Question Start Time']\n end_time = question['Question Answer Time']\n duration_s = (end_time - start_time).total_seconds()\n\n hr_segment = hr_data[(hr_data['datetime'] >= start_time) & (hr_data['datetime'] <= end_time)]\n ibi_segment = ibi_data[(ibi_data['datetime'] >= start_time) & (ibi_data['datetime'] <= end_time)]\n eye_segment = eye_tracking_data[(eye_tracking_data['timestamp'] >= start_time) & (eye_tracking_data['timestamp'] <= end_time)]\n\n avg_hr = hr_segment['heart_rate'].mean()\n rmssd, sdnn = calculate_hrv_metrics(ibi_segment['ibi'])\n avg_pupil = eye_segment['pupil_dilation'].mean()\n left_blink = calculate_blink_rate(eye_segment['left_blink'], duration_s)\n right_blink = calculate_blink_rate(eye_segment['right_blink'], duration_s)\n\n results.append({\n 'Question': question['Question'],\n 'Start Time': start_time.strftime('%H:%M:%S'),\n 'End Time': end_time.strftime('%H:%M:%S'),\n 'Duration (s)': duration_s,\n 'Average HR (BPM)': avg_hr,\n 'RMSSD (ms)': rmssd,\n 'SDNN (ms)': sdnn,\n 'Average Pupil Dilation': avg_pupil,\n 'Left Blink Rate': left_blink,\n 'Right Blink Rate': right_blink,\n })\n return results\n\ndef display_results(results, test_number):\n print(f\"\\nTest {test_number:02d}:\")\n for r in results:\n print(f\" {r['Question']}: {r['Start Time']} - {r['End Time']} ({r['Duration (s)']}s)\")\n hr_val = r['Average HR (BPM)']\n rmssd_val = r['RMSSD (ms)']\n sdnn_val = r['SDNN (ms)']\n print(f\" HR: {hr_val:.2f} BPM\" if hr_val is not None else \" HR: N/A\")\n print(f\" RMSSD: {rmssd_val:.2f} ms SDNN: {sdnn_val:.2f} ms\" if rmssd_val is not None else \" RMSSD: N/A SDNN: N/A\")\n print(f\" Pupil: {r['Average Pupil Dilation']:.2f} Left blink: {r['Left Blink Rate']:.2f} Right blink: {r['Right Blink Rate']:.2f}\")\n\nsessions = [\n (psychometric_01, hr_01, ibi_01, eye_tracking_01),\n (psychometric_02, hr_02, ibi_02, eye_tracking_02),\n (psychometric_03, hr_03, ibi_03, eye_tracking_03),\n]\n\nfor i, (psy, hr, ibi, eye) in enumerate(sessions, 1):\n results = process_question_data(psy[psy['Type'] == 'HADS'], hr, ibi, eye, baseline_avg_hr, baseline_metrics)\n display_results(results, i)" - }, - { - "cell_type": "code", - "id": "727w5p4jsuj", - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "PSY = '../data/individual/psychometric'\n", - "\n", - "# load psychometric data\n", - "psy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", - "psy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", - "psy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", - "\n", - "# clinical thresholds\n", - "thresholds = {\n", - " 'HADS': {'normal': 7, 'borderline': 10, 'label': '0-7 normal, 8-10 borderline, 11+ abnormal'},\n", - " 'STAI-S': {'normal': 39, 'borderline': 54, 'label': '20-39 low, 40-54 moderate, 55+ high'},\n", - " 'STAI-T': {'normal': 39, 'borderline': 54, 'label': '20-39 low, 40-54 moderate, 55+ high'},\n", - "}\n", - "\n", - "# total scores\n", - "print(\"=== Psychometric Total Scores ===\\n\")\n", - "for i, psy in enumerate([psy_01, psy_02, psy_03], 1):\n", - " print(f\"--- Session {i:02d} ---\")\n", - " for q_type in psy['Type'].unique():\n", - " subset = psy[psy['Type'] == q_type]\n", - " answers = pd.to_numeric(subset['Answer'], errors='coerce')\n", - " total = answers.sum()\n", - " n_items = len(answers.dropna())\n", - " mean_score = answers.mean()\n", - "\n", - " if q_type in thresholds:\n", - " t = thresholds[q_type]\n", - " if total <= t['normal']:\n", - " level = \"normal\"\n", - " elif total <= t['borderline']:\n", - " level = \"borderline\"\n", - " else:\n", - " level = \"elevated\"\n", - " print(f\" {q_type}: total={total}, mean={mean_score:.2f}, n={n_items} -> {level} ({t['label']})\")\n", - " else:\n", - " print(f\" {q_type}: total={total}, mean={mean_score:.2f}, n={n_items}\")\n", - " print()\n", - "\n", - "# session comparison\n", - "print(\"=== Score Changes Across Sessions ===\\n\")\n", - "for q_type in psy_01['Type'].unique():\n", - " scores = []\n", - " for psy in [psy_01, psy_02, psy_03]:\n", - " scores.append(pd.to_numeric(psy[psy['Type'] == q_type]['Answer'], errors='coerce').sum())\n", - " trend = \"increasing\" if scores[-1] > scores[0] else \"decreasing\" if scores[-1] < scores[0] else \"stable\"\n", - " print(f\"{q_type}: {scores} ({trend})\")" - ], - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "id": "7u8jua0ogx7", - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "PSY = '../data/individual/psychometric'\n", - "\n", - "# load data\n", - "psy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", - "psy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", - "psy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", - "\n", - "# extract item number\n", - "def get_item_num(test_str):\n", - " part = str(test_str).split('.')[-1]\n", - " return int(part) if part.isdigit() else 0\n", - "\n", - "# --- HADS subscale separation ---\n", - "print(\"=== HADS Subscale Analysis ===\\n\")\n", - "print(\"Anxiety items: 1,3,5,7,9,11,13 | Depression items: 2,4,6,8,10,12,14\")\n", - "print(\"Threshold: 0-7 normal, 8-10 borderline, 11+ clinical\\n\")\n", - "\n", - "for i, psy in enumerate([psy_01, psy_02, psy_03], 1):\n", - " hads = psy[psy['Type'] == 'HADS'].copy()\n", - " hads['item_num'] = hads['Test'].apply(get_item_num)\n", - " \n", - " anxiety_items = hads[hads['item_num'].isin([1, 3, 5, 7, 9, 11, 13])]\n", - " depression_items = hads[hads['item_num'].isin([2, 4, 6, 8, 10, 12, 14])]\n", - " \n", - " anx_total = pd.to_numeric(anxiety_items['Answer'], errors='coerce').sum()\n", - " dep_total = pd.to_numeric(depression_items['Answer'], errors='coerce').sum()\n", - " \n", - " anx_level = \"normal\" if anx_total <= 7 else \"borderline\" if anx_total <= 10 else \"clinical\"\n", - " dep_level = \"normal\" if dep_total <= 7 else \"borderline\" if dep_total <= 10 else \"clinical\"\n", - " \n", - " print(f\"Session {i:02d}: Anxiety={anx_total} ({anx_level}), Depression={dep_total} ({dep_level})\")\n", - "\n", - "# --- session trajectories ---\n", - "print(\"\\n=== Subscale Trajectories ===\\n\")\n", - "subscale_scores = {'HADS-A': [], 'HADS-D': [], 'STAI-S': [], 'STAI-T': []}\n", - "\n", - "for psy in [psy_01, psy_02, psy_03]:\n", - " hads = psy[psy['Type'] == 'HADS'].copy()\n", - " hads['item_num'] = hads['Test'].apply(get_item_num)\n", - " subscale_scores['HADS-A'].append(pd.to_numeric(hads[hads['item_num'].isin([1, 3, 5, 7, 9, 11, 13])]['Answer'], errors='coerce').sum())\n", - " subscale_scores['HADS-D'].append(pd.to_numeric(hads[hads['item_num'].isin([2, 4, 6, 8, 10, 12, 14])]['Answer'], errors='coerce').sum())\n", - " subscale_scores['STAI-S'].append(pd.to_numeric(psy[psy['Type'] == 'STAI-S']['Answer'], errors='coerce').sum())\n", - " subscale_scores['STAI-T'].append(pd.to_numeric(psy[psy['Type'] == 'STAI-T']['Answer'], errors='coerce').sum())\n", - "\n", - "for name, scores in subscale_scores.items():\n", - " trend = \"increasing\" if scores[-1] > scores[0] else \"decreasing\" if scores[-1] < scores[0] else \"stable\"\n", - " print(f\"{name}: {scores} ({trend})\")\n", - "\n", - "# --- radar chart ---\n", - "fig, axes = plt.subplots(1, 3, figsize=(18, 6), subplot_kw=dict(polar=True))\n", - "categories = list(subscale_scores.keys())\n", - "n_cats = len(categories)\n", - "angles = np.linspace(0, 2 * np.pi, n_cats, endpoint=False).tolist()\n", - "angles += angles[:1]\n", - "\n", - "# normalize for radar\n", - "max_vals = {'HADS-A': 21, 'HADS-D': 21, 'STAI-S': 80, 'STAI-T': 80}\n", - "colors = ['tab:blue', 'tab:orange', 'tab:green']\n", - "\n", - "for idx in range(3):\n", - " ax = axes[idx]\n", - " values = [subscale_scores[cat][idx] / max_vals[cat] * 100 for cat in categories]\n", - " values += values[:1]\n", - " \n", - " ax.plot(angles, values, 'o-', color=colors[idx], linewidth=2)\n", - " ax.fill(angles, values, alpha=0.25, color=colors[idx])\n", - " ax.set_thetagrids(np.degrees(angles[:-1]), categories)\n", - " ax.set_ylim(0, 100)\n", - " ax.set_title(f'Session {idx+1:02d}', pad=20)\n", - " ax.set_yticks([25, 50, 75])\n", - " ax.set_yticklabels(['25%', '50%', '75%'], fontsize=7)\n", - "\n", - "plt.suptitle('Psychometric Profile (% of max score)', y=1.05)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "plt.close()\n", - "\n", - "# --- trajectory line plot ---\n", - "fig, ax = plt.subplots(figsize=(10, 6))\n", - "sessions = ['Session 01', 'Session 02', 'Session 03']\n", - "for name, scores in subscale_scores.items():\n", - " normalized = [s / max_vals[name] * 100 for s in scores]\n", - " ax.plot(sessions, normalized, 'o-', label=name, linewidth=2, markersize=8)\n", - "\n", - "ax.axhline(50, color='red', linestyle='--', alpha=0.5, label='50% threshold')\n", - "ax.set_ylabel('Score (% of maximum)')\n", - "ax.set_title('Psychometric Subscale Trajectories Across Sessions')\n", - "ax.legend()\n", - "ax.grid(axis='y', linestyle='--', alpha=0.5)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "plt.close()" - ], - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/Time.ipynb b/individual/Time.ipynb deleted file mode 100755 index a47afb4..0000000 --- a/individual/Time.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "5e246c21-211e-4af2-aeec-c0a65651e49b", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nPSY = '../data/individual/psychometric'\n\n# load data\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\n# Convert datetimes\npsychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\npsychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\n# answer duration\npsychometric_01['answer_duration'] = (psychometric_01['Question Answer Time'] - psychometric_01['Question Start Time']).dt.total_seconds() / 60\npsychometric_02['answer_duration'] = (psychometric_02['Question Answer Time'] - psychometric_02['Question Start Time']).dt.total_seconds() / 60\npsychometric_03['answer_duration'] = (psychometric_03['Question Answer Time'] - psychometric_03['Question Start Time']).dt.total_seconds() / 60\n\npsychometric_01['Session'] = 'Session 01'\npsychometric_02['Session'] = 'Session 02'\npsychometric_03['Session'] = 'Session 03'\n\nall_sessions = pd.concat([psychometric_01, psychometric_02, psychometric_03])\n\nsession_stats = all_sessions.groupby('Session')['answer_duration'].agg(['count', 'sum', 'std']).reset_index()\nsession_stats = session_stats.rename(columns={'count': 'Count', 'sum': 'Total Timing (minutes)', 'std': 'Standard Deviation (minutes)'})\n\n# display results\nprint(\"Total Timing During 3 Sessions\")\nprint(session_stats)\n\n# Plot answer duration\nplt.figure(figsize=(12, 6))\nsns.boxplot(data=all_sessions, x='Session', y='answer_duration')\nplt.title('Comparison of Answer Duration Across Sessions')\nplt.ylabel('Answer Duration (minutes)')\nplt.xlabel('Session')\nplt.show()\nplt.close()" - }, - { - "cell_type": "code", - "id": "gky3nwyskrj", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nPSY = '../data/individual/psychometric'\n\n# load data\npsy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\nfor df in [psy_01, psy_02, psy_03]:\n df['Question Start Time'] = pd.to_datetime(df['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n df['Question Answer Time'] = pd.to_datetime(df['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n df['duration_s'] = (df['Question Answer Time'] - df['Question Start Time']).dt.total_seconds()\n\nsessions = {\n 'Session 01': psy_01['duration_s'],\n 'Session 02': psy_02['duration_s'],\n 'Session 03': psy_03['duration_s']\n}\n\n# normality tests\nprint(\"=== Shapiro-Wilk Tests ===\\n\")\nfor name, dur in sessions.items():\n stat, p = stats.shapiro(dur)\n normal = \"normal\" if p > 0.05 else \"non-normal\"\n print(f\"{name}: W={stat:.4f}, p={p:.4f} ({normal})\")\n\n# Kruskal-Wallis\nprint(\"\\n=== Kruskal-Wallis Test ===\")\nh, p = stats.kruskal(*sessions.values())\nsig = \"*\" if p < 0.05 else \"ns\"\nprint(f\"H={h:.3f}, p={p:.4f} {sig}\")\n\n# by question type\nprint(\"\\n=== Duration by Question Type ===\\n\")\nfor q_type in psy_01['Type'].unique():\n means = []\n for df in [psy_01, psy_02, psy_03]:\n m = df[df['Type'] == q_type]['duration_s'].mean()\n means.append(m)\n print(f\"{q_type}: {[f'{m:.1f}s' for m in means]}\")\n\n# violin by type\nall_data = pd.concat([\n psy_01.assign(Session='01'),\n psy_02.assign(Session='02'),\n psy_03.assign(Session='03')\n])\n\nfig, ax = plt.subplots(figsize=(14, 6))\nsns.violinplot(data=all_data, x='Type', y='duration_s', hue='Session', ax=ax, inner='box', palette='Set2')\nax.set_ylabel('Duration (seconds)')\nax.set_xlabel('Question Type')\nax.set_title('Answer Duration by Question Type Across Sessions')\nplt.xticks(rotation=45)\nplt.tight_layout()\nplt.show()\nplt.close()", - "metadata": {}, - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/Correlation.ipynb b/individual/correlation.ipynb similarity index 63% rename from individual/Correlation.ipynb rename to individual/correlation.ipynb index e07c7fe..d7c60db 100755 --- a/individual/Correlation.ipynb +++ b/individual/correlation.ipynb @@ -1,5 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "924f78b7", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Correlation\n", + "\n", + "Cross-modal correlations (HR, HRV, eye, psychometric) for the individual.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, { "cell_type": "code", "execution_count": null, @@ -116,11 +131,102 @@ "id": "367b0638-43fa-4dd8-90a2-51c1d3e1906f", "metadata": {}, "outputs": [], - "source": "import pandas as pd\nfrom scipy.stats import pearsonr\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\nhr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\nhr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\nhr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\n# high confidence only\nhr_01 = hr_01[hr_01['confidence'] == 1.0].copy()\nhr_02 = hr_02[hr_02['confidence'] == 1.0].copy()\nhr_03 = hr_03[hr_03['confidence'] == 1.0].copy()\n\ndef parse_utc(df, cols):\n # convert once, no mutation\n df = df.copy()\n for col in cols:\n df[col] = pd.to_datetime(df[col], utc=True, errors='coerce').dt.tz_convert(None)\n return df\n\nhr_01 = parse_utc(hr_01, ['datetime'])\nhr_02 = parse_utc(hr_02, ['datetime'])\nhr_03 = parse_utc(hr_03, ['datetime'])\n\npsychometric_01 = parse_utc(psychometric_01, ['Question Start Time', 'Question Answer Time'])\npsychometric_02 = parse_utc(psychometric_02, ['Question Start Time', 'Question Answer Time'])\npsychometric_03 = parse_utc(psychometric_03, ['Question Start Time', 'Question Answer Time'])\n\npsychometric_01['answer_duration'] = (psychometric_01['Question Answer Time'] - psychometric_01['Question Start Time']).dt.total_seconds()\npsychometric_02['answer_duration'] = (psychometric_02['Question Answer Time'] - psychometric_02['Question Start Time']).dt.total_seconds()\npsychometric_03['answer_duration'] = (psychometric_03['Question Answer Time'] - psychometric_03['Question Start Time']).dt.total_seconds()\n\ndef merge_hr_psychometric(hr, psy):\n return pd.merge_asof(\n hr.sort_values('datetime'),\n psy[['Question Start Time', 'answer_duration', 'Answer']].sort_values('Question Start Time'),\n left_on='datetime', right_on='Question Start Time',\n direction='nearest', tolerance=pd.Timedelta('30s')\n ).dropna(subset=['heart_rate', 'answer_duration', 'Answer'])\n\nmerged_01 = merge_hr_psychometric(hr_01, psychometric_01)\nmerged_02 = merge_hr_psychometric(hr_02, psychometric_02)\nmerged_03 = merge_hr_psychometric(hr_03, psychometric_03)\n\ndef session_correlations(merged):\n hr = merged['heart_rate']\n dur = merged['answer_duration']\n score = pd.to_numeric(merged['Answer'], errors='coerce')\n return pearsonr(hr, dur)[0], pearsonr(hr, score.dropna())[0]\n\ncorr_01 = session_correlations(merged_01)\ncorr_02 = session_correlations(merged_02)\ncorr_03 = session_correlations(merged_03)\n\ncorrelations_extended = pd.DataFrame({\n 'Session': ['Session 01', 'Session 02', 'Session 03'],\n 'Correlation Duration': [corr_01[0], corr_02[0], corr_03[0]],\n 'Correlation Score': [corr_01[1], corr_02[1], corr_03[1]]\n})\n\nprint(\"Heart Rate vs. Answer Duration and Answer Score Correlations\")\nprint(correlations_extended)\n\npsychometric_01['Session'] = 'Session 01'\npsychometric_02['Session'] = 'Session 02'\npsychometric_03['Session'] = 'Session 03'\n\nall_sessions = pd.concat([psychometric_01, psychometric_02, psychometric_03])\n\nplt.figure(figsize=(12, 6))\nsns.boxplot(data=all_sessions, x='Session', y='answer_duration')\nplt.title('Comparison of Answer Duration Across Sessions')\nplt.ylabel('Answer Duration (seconds)')\nplt.xlabel('Session')\nplt.show()\nplt.close()\n\nprint(\"Comparison of Answer Duration Across Sessions\")\nprint(all_sessions[['Session', 'answer_duration']].groupby('Session').describe())\n" + "source": [ + "import pandas as pd\n", + "from scipy.stats import pearsonr\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "hr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\n", + "hr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n", + "\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "# high confidence only\n", + "hr_01 = hr_01[hr_01['confidence'] == 1.0].copy()\n", + "hr_02 = hr_02[hr_02['confidence'] == 1.0].copy()\n", + "hr_03 = hr_03[hr_03['confidence'] == 1.0].copy()\n", + "\n", + "def parse_utc(df, cols):\n", + " # convert once, no mutation\n", + " df = df.copy()\n", + " for col in cols:\n", + " df[col] = pd.to_datetime(df[col], utc=True, errors='coerce').dt.tz_convert(None)\n", + " return df\n", + "\n", + "hr_01 = parse_utc(hr_01, ['datetime'])\n", + "hr_02 = parse_utc(hr_02, ['datetime'])\n", + "hr_03 = parse_utc(hr_03, ['datetime'])\n", + "\n", + "psychometric_01 = parse_utc(psychometric_01, ['Question Start Time', 'Question Answer Time'])\n", + "psychometric_02 = parse_utc(psychometric_02, ['Question Start Time', 'Question Answer Time'])\n", + "psychometric_03 = parse_utc(psychometric_03, ['Question Start Time', 'Question Answer Time'])\n", + "\n", + "psychometric_01['answer_duration'] = (psychometric_01['Question Answer Time'] - psychometric_01['Question Start Time']).dt.total_seconds()\n", + "psychometric_02['answer_duration'] = (psychometric_02['Question Answer Time'] - psychometric_02['Question Start Time']).dt.total_seconds()\n", + "psychometric_03['answer_duration'] = (psychometric_03['Question Answer Time'] - psychometric_03['Question Start Time']).dt.total_seconds()\n", + "\n", + "def merge_hr_psychometric(hr, psy):\n", + " return pd.merge_asof(\n", + " hr.sort_values('datetime'),\n", + " psy[['Question Start Time', 'answer_duration', 'Answer']].sort_values('Question Start Time'),\n", + " left_on='datetime', right_on='Question Start Time',\n", + " direction='nearest', tolerance=pd.Timedelta('30s')\n", + " ).dropna(subset=['heart_rate', 'answer_duration', 'Answer'])\n", + "\n", + "merged_01 = merge_hr_psychometric(hr_01, psychometric_01)\n", + "merged_02 = merge_hr_psychometric(hr_02, psychometric_02)\n", + "merged_03 = merge_hr_psychometric(hr_03, psychometric_03)\n", + "\n", + "def session_correlations(merged):\n", + " hr = merged['heart_rate']\n", + " dur = merged['answer_duration']\n", + " score = pd.to_numeric(merged['Answer'], errors='coerce')\n", + " return pearsonr(hr, dur)[0], pearsonr(hr, score.dropna())[0]\n", + "\n", + "corr_01 = session_correlations(merged_01)\n", + "corr_02 = session_correlations(merged_02)\n", + "corr_03 = session_correlations(merged_03)\n", + "\n", + "correlations_extended = pd.DataFrame({\n", + " 'Session': ['Session 01', 'Session 02', 'Session 03'],\n", + " 'Correlation Duration': [corr_01[0], corr_02[0], corr_03[0]],\n", + " 'Correlation Score': [corr_01[1], corr_02[1], corr_03[1]]\n", + "})\n", + "\n", + "print(\"Heart Rate vs. Answer Duration and Answer Score Correlations\")\n", + "print(correlations_extended)\n", + "\n", + "psychometric_01['Session'] = 'Session 01'\n", + "psychometric_02['Session'] = 'Session 02'\n", + "psychometric_03['Session'] = 'Session 03'\n", + "\n", + "all_sessions = pd.concat([psychometric_01, psychometric_02, psychometric_03])\n", + "\n", + "plt.figure(figsize=(12, 6))\n", + "sns.boxplot(data=all_sessions, x='Session', y='answer_duration')\n", + "plt.title('Comparison of Answer Duration Across Sessions')\n", + "plt.ylabel('Answer Duration (seconds)')\n", + "plt.xlabel('Session')\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "print(\"Comparison of Answer Duration Across Sessions\")\n", + "print(all_sessions[['Session', 'answer_duration']].groupby('Session').describe())\n" + ] }, { "cell_type": "code", + "execution_count": null, "id": "4kxj7xlncdw", + "metadata": {}, + "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", @@ -174,22 +280,74 @@ "\n", "print(f\"\\nMerged {len(merged)} question-level observations across eye + HRV modalities\")\n", "print(f\"Available biometric features: {available}\")" - ], - "metadata": {}, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": null, "id": "ranizs76zx", - "source": "import pandas as pd\nimport numpy as np\nfrom scipy import stats\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nDATA = '../data/individual/processed'\n\n# reload merged data\nqq2 = pd.read_csv(f'{DATA}/QQ2.csv')\nqqhrv = pd.read_csv(f'{DATA}/QQHRV.csv')\nmerged = qq2.merge(qqhrv, on=['Test', 'Type', 'Start Time', 'End Time'],\n how='inner', suffixes=('', '_hrv'))\n\nbio_cols = ['Average Pupil Dilation', 'Average Left Blink Rate', 'Average Right Blink Rate', 'RMSSD', 'SDNN']\navailable = [c for c in bio_cols if c in merged.columns]\n\n# per-session correlations\nprint(\"=== Per-Session Cross-Modal Correlations ===\\n\")\ntest_col = 'Test'\nfor session in sorted(merged[test_col].unique()):\n session_data = merged[merged[test_col] == session][available].dropna()\n if len(session_data) < 5:\n continue\n print(f\"--- {session} (n={len(session_data)}) ---\")\n for i in range(len(available)):\n for j in range(i+1, len(available)):\n r, p = stats.spearmanr(session_data[available[i]], session_data[available[j]])\n if p < 0.05:\n print(f\" {available[i]} vs {available[j]}: r={r:.3f}, p={p:.4f} *\")\n print()\n\n# scatter matrix\nfig, axes = plt.subplots(len(available), len(available), figsize=(14, 14))\nfor i in range(len(available)):\n for j in range(len(available)):\n ax = axes[i, j]\n if i == j:\n ax.hist(merged[available[i]].dropna(), bins=20, alpha=0.7, color='steelblue')\n else:\n ax.scatter(merged[available[j]], merged[available[i]], alpha=0.3, s=10)\n if i == len(available) - 1:\n ax.set_xlabel(available[j], fontsize=7, rotation=45)\n if j == 0:\n ax.set_ylabel(available[i], fontsize=7)\n ax.tick_params(labelsize=6)\n\nplt.suptitle('Cross-Modal Scatter Matrix', y=1.01)\nplt.tight_layout()\nplt.show()\nplt.close()", "metadata": {}, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "DATA = '../data/individual/processed'\n", + "\n", + "# reload merged data\n", + "qq2 = pd.read_csv(f'{DATA}/QQ2.csv')\n", + "qqhrv = pd.read_csv(f'{DATA}/QQHRV.csv')\n", + "merged = qq2.merge(qqhrv, on=['Test', 'Type', 'Start Time', 'End Time'],\n", + " how='inner', suffixes=('', '_hrv'))\n", + "\n", + "bio_cols = ['Average Pupil Dilation', 'Average Left Blink Rate', 'Average Right Blink Rate', 'RMSSD', 'SDNN']\n", + "available = [c for c in bio_cols if c in merged.columns]\n", + "\n", + "# per-session correlations\n", + "print(\"=== Per-Session Cross-Modal Correlations ===\\n\")\n", + "test_col = 'Test'\n", + "for session in sorted(merged[test_col].unique()):\n", + " session_data = merged[merged[test_col] == session][available].dropna()\n", + " if len(session_data) < 5:\n", + " continue\n", + " print(f\"--- {session} (n={len(session_data)}) ---\")\n", + " for i in range(len(available)):\n", + " for j in range(i+1, len(available)):\n", + " r, p = stats.spearmanr(session_data[available[i]], session_data[available[j]])\n", + " if p < 0.05:\n", + " print(f\" {available[i]} vs {available[j]}: r={r:.3f}, p={p:.4f} *\")\n", + " print()\n", + "\n", + "# scatter matrix\n", + "fig, axes = plt.subplots(len(available), len(available), figsize=(14, 14))\n", + "for i in range(len(available)):\n", + " for j in range(len(available)):\n", + " ax = axes[i, j]\n", + " if i == j:\n", + " ax.hist(merged[available[i]].dropna(), bins=20, alpha=0.7, color='steelblue')\n", + " else:\n", + " ax.scatter(merged[available[j]], merged[available[i]], alpha=0.3, s=10)\n", + " if i == len(available) - 1:\n", + " ax.set_xlabel(available[j], fontsize=7, rotation=45)\n", + " if j == 0:\n", + " ax.set_ylabel(available[i], fontsize=7)\n", + " ax.tick_params(labelsize=6)\n", + "\n", + "plt.suptitle('Cross-Modal Scatter Matrix', y=1.01)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] }, { "cell_type": "code", + "execution_count": null, "id": "ba781kr2hbq", + "metadata": {}, + "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", @@ -290,17 +448,14 @@ " plt.close()\n", "else:\n", " print(\"\\nNo Score column found for regression\")\n" - ], - "metadata": {}, - "execution_count": null, - "outputs": [] + ] } ], "metadata": { "kernelspec": { - "display_name": "pdf_processing", + "display_name": "Python 3", "language": "python", - "name": "pdf_processing" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -317,4 +472,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/individual/eye01.ipynb b/individual/eye01.ipynb deleted file mode 100755 index d94296b..0000000 --- a/individual/eye01.ipynb +++ /dev/null @@ -1,33 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "37969e85-a51d-4957-ba30-a515aece242b", - "metadata": {}, - "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\n\nDATA = '../data/individual/processed'\n\nBLINK_THRESHOLD = 1.0\nMIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n\ncolumns_mapping = {\n 'datetime': 'timestamp',\n 'pupil': 'pupil_dilation',\n 'leftEyeOpen': 'left_blink',\n 'rightEyeOpen': 'right_blink'\n}\n\ndef clean_eye_tracking_data(eye_tracking_data):\n df = eye_tracking_data.copy()\n df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\n return df.dropna(subset=['timestamp'])\n\ndef count_blinks(series, threshold, min_frames):\n # sustained closure onset\n closed = (series <= threshold).astype(int)\n sustained = closed.rolling(min_frames).sum() == min_frames\n return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n\ndef calculate_eye_tracking_metrics(eye_tracking_data):\n start_time = eye_tracking_data['timestamp'].min()\n end_time = eye_tracking_data['timestamp'].max()\n total_duration_minutes = (end_time - start_time).total_seconds() / 60\n if total_duration_minutes <= 0:\n return start_time, end_time, total_duration_minutes, float('nan'), 0.0, 0.0\n\n average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n\n left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n\n return start_time, end_time, total_duration_minutes, average_pupil_dilation, left_blink_rate, right_blink_rate\n\neye_tracking_baseline = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping))\neye_tracking_01 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping))\neye_tracking_02 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping))\neye_tracking_03 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping))\n\nbaseline_metrics = calculate_eye_tracking_metrics(eye_tracking_baseline)\nmetrics_01 = calculate_eye_tracking_metrics(eye_tracking_01)\nmetrics_02 = calculate_eye_tracking_metrics(eye_tracking_02)\nmetrics_03 = calculate_eye_tracking_metrics(eye_tracking_03)\n\nresults = pd.DataFrame({\n 'Test': ['Baseline', 'Test 01', 'Test 02', 'Test 03'],\n 'Start Time': [baseline_metrics[0], metrics_01[0], metrics_02[0], metrics_03[0]],\n 'End Time': [baseline_metrics[1], metrics_01[1], metrics_02[1], metrics_03[1]],\n 'Total Duration (min)': [baseline_metrics[2], metrics_01[2], metrics_02[2], metrics_03[2]],\n 'Average Pupil Dilation': [baseline_metrics[3], metrics_01[3], metrics_02[3], metrics_03[3]],\n 'Left Blink Rate (blinks/min)': [baseline_metrics[4], metrics_01[4], metrics_02[4], metrics_03[4]],\n 'Right Blink Rate (blinks/min)': [baseline_metrics[5], metrics_01[5], metrics_02[5], metrics_03[5]]\n})\n\nprint(\"Eye-Tracking Metrics:\")\nfor _, row in results.iterrows():\n print(f\"{row['Test']} Metrics:\")\n print(f\" Start Time: {row['Start Time']}\")\n print(f\" End Time: {row['End Time']}\")\n print(f\" Total Duration: {row['Total Duration (min)']:.2f} minutes\")\n print(f\" Average Pupil Dilation: {row['Average Pupil Dilation']:.2f}\")\n print(f\" Left Blink Rate: {row['Left Blink Rate (blinks/min)']:.2f} blinks/min\")\n print(f\" Right Blink Rate: {row['Right Blink Rate (blinks/min)']:.2f} blinks/min\\n\")\n\nplt.figure(figsize=(12, 8))\n\nplt.subplot(3, 1, 1)\nplt.plot(results['Test'], results['Average Pupil Dilation'], marker='o', linestyle='-')\nplt.title('Average Pupil Dilation')\nplt.ylabel('Pupil Dilation')\n\nplt.subplot(3, 1, 2)\nplt.plot(results['Test'], results['Left Blink Rate (blinks/min)'], marker='o', linestyle='-', color='green')\nplt.title('Left Blink Rate')\nplt.ylabel('Blinks/min')\n\nplt.subplot(3, 1, 3)\nplt.plot(results['Test'], results['Right Blink Rate (blinks/min)'], marker='o', linestyle='-', color='red')\nplt.title('Right Blink Rate')\nplt.ylabel('Blinks/min')\n\nplt.tight_layout()\nplt.show()\nplt.close()\n" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/eye02.ipynb b/individual/eye02.ipynb deleted file mode 100755 index 7e8d81b..0000000 --- a/individual/eye02.ipynb +++ /dev/null @@ -1,41 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "id": "8f1dvqvd3l", - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\ncolumns_mapping = {\n 'datetime': 'timestamp',\n 'pupil': 'pupil_dilation',\n 'leftEyeOpen': 'left_blink',\n 'rightEyeOpen': 'right_blink'\n}\n\nbaseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping)\neye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping)\neye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping)\neye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping)\n\npsychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\npsychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\npsychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n\ndef clean_eye_tracking_data(eye_tracking_data):\n df = eye_tracking_data.copy()\n df['timestamp'] = pd.to_datetime(\n df['timestamp'], utc=True, errors='coerce'\n ).dt.tz_convert(None)\n return df.dropna(subset=['timestamp'])\n\nbaseline_eye_tracking = clean_eye_tracking_data(baseline_eye_tracking)\neye_tracking_01 = clean_eye_tracking_data(eye_tracking_01)\neye_tracking_02 = clean_eye_tracking_data(eye_tracking_02)\neye_tracking_03 = clean_eye_tracking_data(eye_tracking_03)\n\npsychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\npsychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n\npsychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\npsychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\npsychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n\ndef filter_eye_tracking_data(eye_tracking_data, questions):\n start_time = questions['Question Start Time'].min()\n end_time = questions['Question Answer Time'].max()\n return eye_tracking_data[\n (eye_tracking_data['timestamp'] >= start_time) &\n (eye_tracking_data['timestamp'] <= end_time)\n ]\n\nBLINK_THRESHOLD = 1.0\nMIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n\ndef count_blinks(series, threshold, min_frames):\n # sustained closure onset\n closed = (series <= threshold).astype(int)\n sustained = closed.rolling(min_frames).sum() == min_frames\n return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n\ndef calculate_eye_tracking_metrics(eye_tracking_data):\n average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n total_duration_minutes = (\n eye_tracking_data['timestamp'].max() - eye_tracking_data['timestamp'].min()\n ).total_seconds() / 60\n if total_duration_minutes <= 0:\n return average_pupil_dilation, 0.0, 0.0\n left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n return average_pupil_dilation, left_blink_rate, right_blink_rate\n\ndef detect_significant_increase(test_metrics, baseline_metrics):\n return (\n test_metrics[0] > baseline_metrics[0],\n test_metrics[1] > baseline_metrics[1],\n test_metrics[2] > baseline_metrics[2]\n )\n\nbaseline_metrics = calculate_eye_tracking_metrics(baseline_eye_tracking)\n\nquestion_types = ['HADS', 'STAI-S', 'STAI-T', 'BFI', 'FQ']\n\nprint(\"Setup complete. All data loaded and cleaned.\")\n", - "metadata": {}, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bd1d5a27", - "metadata": {}, - "outputs": [], - "source": "psychometric_data = {\n qt: [\n psychometric_01[psychometric_01['Type'] == qt],\n psychometric_02[psychometric_02['Type'] == qt],\n psychometric_03[psychometric_03['Type'] == qt]\n ]\n for qt in question_types\n}\n\nresults = []\nfor question_type in question_types:\n for i, (questions, eye_data) in enumerate(zip(\n psychometric_data[question_type],\n [eye_tracking_01, eye_tracking_02, eye_tracking_03]), 1):\n filtered = filter_eye_tracking_data(eye_data, questions)\n metrics = calculate_eye_tracking_metrics(filtered)\n sig = detect_significant_increase(metrics, baseline_metrics)\n results.append({\n 'Test': f'Test {i:02d}',\n 'Type': question_type,\n 'Start Time': questions['Question Start Time'].min().strftime('%H:%M:%S'),\n 'End Time': questions['Question Answer Time'].max().strftime('%H:%M:%S'),\n 'Average Pupil Dilation': round(metrics[0], 2),\n 'Left Blink Rate': round(metrics[1], 2),\n 'Right Blink Rate': round(metrics[2], 2),\n 'Significant Increase (Pupil Dilation)': 'Yes' if sig[0] else 'No',\n 'Significant Increase (Left Blink Rate)': 'Yes' if sig[1] else 'No',\n 'Significant Increase (Right Blink Rate)': 'Yes' if sig[2] else 'No',\n })\n\nresults_df = pd.DataFrame(results)\nprint(results_df.to_string(index=False))\n\nfor metric, ylabel in [\n ('Average Pupil Dilation', 'Pupil Dilation'),\n ('Left Blink Rate', 'Left Blink Rate (blinks/min)'),\n ('Right Blink Rate', 'Right Blink Rate (blinks/min)')\n]:\n plt.figure(figsize=(14, 6))\n for qt in question_types:\n subset = results_df[results_df['Type'] == qt]\n plt.plot(subset['Test'], subset[metric], marker='o', label=qt)\n plt.title(f'{metric} by Test and Question Type')\n plt.xlabel('Test')\n plt.ylabel(ylabel)\n plt.legend(title='Question Type')\n plt.grid(True)\n plt.tight_layout()\n plt.show()\n plt.close()" - } - ], - "metadata": { - "kernelspec": { - "display_name": "pdf_processing", - "language": "python", - "name": "pdf_processing" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.21" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/individual/eye_01.ipynb b/individual/eye_01.ipynb new file mode 100755 index 0000000..8836758 --- /dev/null +++ b/individual/eye_01.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e25cb298", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Eye 01\n", + "\n", + "Eye-tracking / pupil analysis (part 1).\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37969e85-a51d-4957-ba30-a515aece242b", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/individual/processed'\n", + "\n", + "BLINK_THRESHOLD = 1.0\n", + "MIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n", + "\n", + "columns_mapping = {\n", + " 'datetime': 'timestamp',\n", + " 'pupil': 'pupil_dilation',\n", + " 'leftEyeOpen': 'left_blink',\n", + " 'rightEyeOpen': 'right_blink'\n", + "}\n", + "\n", + "def clean_eye_tracking_data(eye_tracking_data):\n", + " df = eye_tracking_data.copy()\n", + " df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " return df.dropna(subset=['timestamp'])\n", + "\n", + "def count_blinks(series, threshold, min_frames):\n", + " # sustained closure onset\n", + " closed = (series <= threshold).astype(int)\n", + " sustained = closed.rolling(min_frames).sum() == min_frames\n", + " return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n", + "\n", + "def calculate_eye_tracking_metrics(eye_tracking_data):\n", + " start_time = eye_tracking_data['timestamp'].min()\n", + " end_time = eye_tracking_data['timestamp'].max()\n", + " total_duration_minutes = (end_time - start_time).total_seconds() / 60\n", + " if total_duration_minutes <= 0:\n", + " return start_time, end_time, total_duration_minutes, float('nan'), 0.0, 0.0\n", + "\n", + " average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n", + "\n", + " left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + " right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + "\n", + " return start_time, end_time, total_duration_minutes, average_pupil_dilation, left_blink_rate, right_blink_rate\n", + "\n", + "eye_tracking_baseline = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping))\n", + "eye_tracking_01 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping))\n", + "eye_tracking_02 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping))\n", + "eye_tracking_03 = clean_eye_tracking_data(pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping))\n", + "\n", + "baseline_metrics = calculate_eye_tracking_metrics(eye_tracking_baseline)\n", + "metrics_01 = calculate_eye_tracking_metrics(eye_tracking_01)\n", + "metrics_02 = calculate_eye_tracking_metrics(eye_tracking_02)\n", + "metrics_03 = calculate_eye_tracking_metrics(eye_tracking_03)\n", + "\n", + "results = pd.DataFrame({\n", + " 'Test': ['Baseline', 'Test 01', 'Test 02', 'Test 03'],\n", + " 'Start Time': [baseline_metrics[0], metrics_01[0], metrics_02[0], metrics_03[0]],\n", + " 'End Time': [baseline_metrics[1], metrics_01[1], metrics_02[1], metrics_03[1]],\n", + " 'Total Duration (min)': [baseline_metrics[2], metrics_01[2], metrics_02[2], metrics_03[2]],\n", + " 'Average Pupil Dilation': [baseline_metrics[3], metrics_01[3], metrics_02[3], metrics_03[3]],\n", + " 'Left Blink Rate (blinks/min)': [baseline_metrics[4], metrics_01[4], metrics_02[4], metrics_03[4]],\n", + " 'Right Blink Rate (blinks/min)': [baseline_metrics[5], metrics_01[5], metrics_02[5], metrics_03[5]]\n", + "})\n", + "\n", + "print(\"Eye-Tracking Metrics:\")\n", + "for _, row in results.iterrows():\n", + " print(f\"{row['Test']} Metrics:\")\n", + " print(f\" Start Time: {row['Start Time']}\")\n", + " print(f\" End Time: {row['End Time']}\")\n", + " print(f\" Total Duration: {row['Total Duration (min)']:.2f} minutes\")\n", + " print(f\" Average Pupil Dilation: {row['Average Pupil Dilation']:.2f}\")\n", + " print(f\" Left Blink Rate: {row['Left Blink Rate (blinks/min)']:.2f} blinks/min\")\n", + " print(f\" Right Blink Rate: {row['Right Blink Rate (blinks/min)']:.2f} blinks/min\\n\")\n", + "\n", + "plt.figure(figsize=(12, 8))\n", + "\n", + "plt.subplot(3, 1, 1)\n", + "plt.plot(results['Test'], results['Average Pupil Dilation'], marker='o', linestyle='-')\n", + "plt.title('Average Pupil Dilation')\n", + "plt.ylabel('Pupil Dilation')\n", + "\n", + "plt.subplot(3, 1, 2)\n", + "plt.plot(results['Test'], results['Left Blink Rate (blinks/min)'], marker='o', linestyle='-', color='green')\n", + "plt.title('Left Blink Rate')\n", + "plt.ylabel('Blinks/min')\n", + "\n", + "plt.subplot(3, 1, 3)\n", + "plt.plot(results['Test'], results['Right Blink Rate (blinks/min)'], marker='o', linestyle='-', color='red')\n", + "plt.title('Right Blink Rate')\n", + "plt.ylabel('Blinks/min')\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/eye_02.ipynb b/individual/eye_02.ipynb new file mode 100755 index 0000000..c03744c --- /dev/null +++ b/individual/eye_02.ipynb @@ -0,0 +1,193 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4055a01a", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Eye 02\n", + "\n", + "Eye-tracking / pupil analysis (part 2).\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f1dvqvd3l", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "columns_mapping = {\n", + " 'datetime': 'timestamp',\n", + " 'pupil': 'pupil_dilation',\n", + " 'leftEyeOpen': 'left_blink',\n", + " 'rightEyeOpen': 'right_blink'\n", + "}\n", + "\n", + "baseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping)\n", + "eye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping)\n", + "eye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping)\n", + "eye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping)\n", + "\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "def clean_eye_tracking_data(eye_tracking_data):\n", + " df = eye_tracking_data.copy()\n", + " df['timestamp'] = pd.to_datetime(\n", + " df['timestamp'], utc=True, errors='coerce'\n", + " ).dt.tz_convert(None)\n", + " return df.dropna(subset=['timestamp'])\n", + "\n", + "baseline_eye_tracking = clean_eye_tracking_data(baseline_eye_tracking)\n", + "eye_tracking_01 = clean_eye_tracking_data(eye_tracking_01)\n", + "eye_tracking_02 = clean_eye_tracking_data(eye_tracking_02)\n", + "eye_tracking_03 = clean_eye_tracking_data(eye_tracking_03)\n", + "\n", + "psychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "psychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\n", + "psychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\n", + "psychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n", + "\n", + "def filter_eye_tracking_data(eye_tracking_data, questions):\n", + " start_time = questions['Question Start Time'].min()\n", + " end_time = questions['Question Answer Time'].max()\n", + " return eye_tracking_data[\n", + " (eye_tracking_data['timestamp'] >= start_time) &\n", + " (eye_tracking_data['timestamp'] <= end_time)\n", + " ]\n", + "\n", + "BLINK_THRESHOLD = 1.0\n", + "MIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n", + "\n", + "def count_blinks(series, threshold, min_frames):\n", + " # sustained closure onset\n", + " closed = (series <= threshold).astype(int)\n", + " sustained = closed.rolling(min_frames).sum() == min_frames\n", + " return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n", + "\n", + "def calculate_eye_tracking_metrics(eye_tracking_data):\n", + " average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n", + " total_duration_minutes = (\n", + " eye_tracking_data['timestamp'].max() - eye_tracking_data['timestamp'].min()\n", + " ).total_seconds() / 60\n", + " if total_duration_minutes <= 0:\n", + " return average_pupil_dilation, 0.0, 0.0\n", + " left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + " right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + " return average_pupil_dilation, left_blink_rate, right_blink_rate\n", + "\n", + "def detect_significant_increase(test_metrics, baseline_metrics):\n", + " return (\n", + " test_metrics[0] > baseline_metrics[0],\n", + " test_metrics[1] > baseline_metrics[1],\n", + " test_metrics[2] > baseline_metrics[2]\n", + " )\n", + "\n", + "baseline_metrics = calculate_eye_tracking_metrics(baseline_eye_tracking)\n", + "\n", + "question_types = ['HADS', 'STAI-S', 'STAI-T', 'BFI', 'FQ']\n", + "\n", + "print(\"Setup complete. All data loaded and cleaned.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd1d5a27", + "metadata": {}, + "outputs": [], + "source": [ + "psychometric_data = {\n", + " qt: [\n", + " psychometric_01[psychometric_01['Type'] == qt],\n", + " psychometric_02[psychometric_02['Type'] == qt],\n", + " psychometric_03[psychometric_03['Type'] == qt]\n", + " ]\n", + " for qt in question_types\n", + "}\n", + "\n", + "results = []\n", + "for question_type in question_types:\n", + " for i, (questions, eye_data) in enumerate(zip(\n", + " psychometric_data[question_type],\n", + " [eye_tracking_01, eye_tracking_02, eye_tracking_03]), 1):\n", + " filtered = filter_eye_tracking_data(eye_data, questions)\n", + " metrics = calculate_eye_tracking_metrics(filtered)\n", + " sig = detect_significant_increase(metrics, baseline_metrics)\n", + " results.append({\n", + " 'Test': f'Test {i:02d}',\n", + " 'Type': question_type,\n", + " 'Start Time': questions['Question Start Time'].min().strftime('%H:%M:%S'),\n", + " 'End Time': questions['Question Answer Time'].max().strftime('%H:%M:%S'),\n", + " 'Average Pupil Dilation': round(metrics[0], 2),\n", + " 'Left Blink Rate': round(metrics[1], 2),\n", + " 'Right Blink Rate': round(metrics[2], 2),\n", + " 'Significant Increase (Pupil Dilation)': 'Yes' if sig[0] else 'No',\n", + " 'Significant Increase (Left Blink Rate)': 'Yes' if sig[1] else 'No',\n", + " 'Significant Increase (Right Blink Rate)': 'Yes' if sig[2] else 'No',\n", + " })\n", + "\n", + "results_df = pd.DataFrame(results)\n", + "print(results_df.to_string(index=False))\n", + "\n", + "for metric, ylabel in [\n", + " ('Average Pupil Dilation', 'Pupil Dilation'),\n", + " ('Left Blink Rate', 'Left Blink Rate (blinks/min)'),\n", + " ('Right Blink Rate', 'Right Blink Rate (blinks/min)')\n", + "]:\n", + " plt.figure(figsize=(14, 6))\n", + " for qt in question_types:\n", + " subset = results_df[results_df['Type'] == qt]\n", + " plt.plot(subset['Test'], subset[metric], marker='o', label=qt)\n", + " plt.title(f'{metric} by Test and Question Type')\n", + " plt.xlabel('Test')\n", + " plt.ylabel(ylabel)\n", + " plt.legend(title='Question Type')\n", + " plt.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/eye_movement.ipynb b/individual/eye_movement.ipynb new file mode 100755 index 0000000..3063042 --- /dev/null +++ b/individual/eye_movement.ipynb @@ -0,0 +1,95 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8747fb27", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Eye Movement\n", + "\n", + "Gaze / eye-movement analysis.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2901313-92da-47ad-8239-ad3baa85839c", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/individual/processed'\n", + "\n", + "baseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv')\n", + "baseline_eye_tracking = baseline_eye_tracking.rename(columns={\n", + " 'datetime': 'timestamp',\n", + " 'pupil': 'pupil_dilation',\n", + " 'leftEyeOpen': 'left_blink',\n", + " 'rightEyeOpen': 'right_blink'\n", + "})\n", + "\n", + "baseline_eye_tracking['timestamp'] = pd.to_datetime(baseline_eye_tracking['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "baseline_eye_tracking = baseline_eye_tracking.dropna(subset=['timestamp'])\n", + "\n", + "start_time = baseline_eye_tracking['timestamp'].min()\n", + "end_time = baseline_eye_tracking['timestamp'].max()\n", + "total_duration_minutes = (end_time - start_time).total_seconds() / 60\n", + "\n", + "average_pupil_dilation = baseline_eye_tracking['pupil_dilation'].mean()\n", + "\n", + "BLINK_THRESHOLD = 1.0\n", + "MIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n", + "\n", + "def count_blinks(series, threshold, min_frames):\n", + " # sustained closure onset\n", + " closed = (series <= threshold).astype(int)\n", + " sustained = closed.rolling(min_frames).sum() == min_frames\n", + " return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n", + "\n", + "left_blink_count = count_blinks(baseline_eye_tracking['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES)\n", + "right_blink_count = count_blinks(baseline_eye_tracking['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES)\n", + "\n", + "if total_duration_minutes <= 0:\n", + " left_blink_rate, right_blink_rate = 0.0, 0.0\n", + "else:\n", + " left_blink_rate = left_blink_count / total_duration_minutes\n", + " right_blink_rate = right_blink_count / total_duration_minutes\n", + "\n", + "print(f\"Baseline Metrics:\\n\")\n", + "print(f\" Start Time: {start_time}\")\n", + "print(f\" End Time: {end_time}\")\n", + "print(f\" Total Duration: {total_duration_minutes:.2f} minutes\")\n", + "print(f\" Average Pupil Dilation: {average_pupil_dilation:.2f}\")\n", + "print(f\" Left Blink Rate: {left_blink_rate:.2f} blinks/min\")\n", + "print(f\" Right Blink Rate: {right_blink_rate:.2f} blinks/min\")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/Fixation.ipynb b/individual/fixation.ipynb similarity index 59% rename from individual/Fixation.ipynb rename to individual/fixation.ipynb index e03b1a8..ec70f5b 100755 --- a/individual/Fixation.ipynb +++ b/individual/fixation.ipynb @@ -1,5 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "d48a80a7", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Fixation\n", + "\n", + "Fixation-duration analysis.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, { "cell_type": "code", "execution_count": null, @@ -124,14 +139,73 @@ "id": "62f4a174", "metadata": {}, "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\nimport numpy as np\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\nquestion_types_count = {'HADS': 14, 'STAI-T': 20, 'STAI-S': 20, 'BFI': 10, 'FQ': 24}\n\ndef plot_fixation_duration_for_category(sed_data, psy_data, category_name, expected_questions, session_num, window_size=20):\n category_data = psy_data[psy_data['Type'] == category_name].copy()\n\n segments, question_times = [], []\n for _, row in category_data.iterrows():\n mask = (sed_data['datetime'] >= row['Question Start Time']) & (sed_data['datetime'] <= row['Question Answer Time'])\n seg = sed_data.loc[mask]\n if not seg.empty:\n segments.append(seg)\n question_times.append(row['Question Answer Time'])\n\n category_eye = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n if len(question_times) != expected_questions:\n print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n\n category_eye = category_eye.sort_values('datetime').reset_index(drop=True)\n category_eye['smoothed_fixation_duration'] = category_eye['duration'].rolling(window=window_size).mean()\n category_eye = category_eye[np.isfinite(category_eye['smoothed_fixation_duration'])]\n\n plt.figure(figsize=(12, 6))\n plt.plot(category_eye['datetime'], category_eye['smoothed_fixation_duration'], label='Fixation Duration', color='b')\n\n for i, time in enumerate(question_times, start=1):\n if not category_eye.empty:\n nearest_idx = (category_eye['datetime'] - time).abs().idxmin()\n fd = category_eye.loc[nearest_idx, 'smoothed_fixation_duration']\n plt.scatter(category_eye.loc[nearest_idx, 'datetime'], fd, color='red', s=50, zorder=5)\n plt.text(category_eye.loc[nearest_idx, 'datetime'], fd + 0.1, f'Q{i}', fontsize=9, rotation=45, ha='right')\n\n plt.xlabel('Time')\n plt.ylabel('Fixation Duration')\n plt.title(f'Fixation Duration During {category_name} - Session {session_num:02d}')\n plt.xticks(rotation=45)\n plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n plt.legend()\n plt.grid(True)\n plt.tight_layout()\n plt.show()\n plt.close()\n\nfor i in range(1, 4):\n sed = pd.read_csv(f'{DATA}/sed_fix_{i:02d}.csv')\n sed['datetime'] = pd.to_datetime(sed['datetime'], format='%Y/%m/%d %H:%M:%S.%f', utc=True, errors='coerce').dt.tz_convert(None)\n psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{i:02d}.csv')\n psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n for category, expected in question_types_count.items():\n plot_fixation_duration_for_category(sed, psy, category, expected, i)" + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "import numpy as np\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "question_types_count = {'HADS': 14, 'STAI-T': 20, 'STAI-S': 20, 'BFI': 10, 'FQ': 24}\n", + "\n", + "def plot_fixation_duration_for_category(sed_data, psy_data, category_name, expected_questions, session_num, window_size=20):\n", + " category_data = psy_data[psy_data['Type'] == category_name].copy()\n", + "\n", + " segments, question_times = [], []\n", + " for _, row in category_data.iterrows():\n", + " mask = (sed_data['datetime'] >= row['Question Start Time']) & (sed_data['datetime'] <= row['Question Answer Time'])\n", + " seg = sed_data.loc[mask]\n", + " if not seg.empty:\n", + " segments.append(seg)\n", + " question_times.append(row['Question Answer Time'])\n", + "\n", + " category_eye = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n", + " if len(question_times) != expected_questions:\n", + " print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n", + "\n", + " category_eye = category_eye.sort_values('datetime').reset_index(drop=True)\n", + " category_eye['smoothed_fixation_duration'] = category_eye['duration'].rolling(window=window_size).mean()\n", + " category_eye = category_eye[np.isfinite(category_eye['smoothed_fixation_duration'])]\n", + "\n", + " plt.figure(figsize=(12, 6))\n", + " plt.plot(category_eye['datetime'], category_eye['smoothed_fixation_duration'], label='Fixation Duration', color='b')\n", + "\n", + " for i, time in enumerate(question_times, start=1):\n", + " if not category_eye.empty:\n", + " nearest_idx = (category_eye['datetime'] - time).abs().idxmin()\n", + " fd = category_eye.loc[nearest_idx, 'smoothed_fixation_duration']\n", + " plt.scatter(category_eye.loc[nearest_idx, 'datetime'], fd, color='red', s=50, zorder=5)\n", + " plt.text(category_eye.loc[nearest_idx, 'datetime'], fd + 0.1, f'Q{i}', fontsize=9, rotation=45, ha='right')\n", + "\n", + " plt.xlabel('Time')\n", + " plt.ylabel('Fixation Duration')\n", + " plt.title(f'Fixation Duration During {category_name} - Session {session_num:02d}')\n", + " plt.xticks(rotation=45)\n", + " plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n", + " plt.legend()\n", + " plt.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " plt.close()\n", + "\n", + "for i in range(1, 4):\n", + " sed = pd.read_csv(f'{DATA}/sed_fix_{i:02d}.csv')\n", + " sed['datetime'] = pd.to_datetime(sed['datetime'], format='%Y/%m/%d %H:%M:%S.%f', utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{i:02d}.csv')\n", + " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " for category, expected in question_types_count.items():\n", + " plot_fixation_duration_for_category(sed, psy, category, expected, i)" + ] } ], "metadata": { "kernelspec": { - "display_name": "pdf_processing", + "display_name": "Python 3", "language": "python", - "name": "pdf_processing" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -148,4 +222,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/individual/fixation_across_sessions.ipynb b/individual/fixation_across_sessions.ipynb new file mode 100755 index 0000000..01c63b0 --- /dev/null +++ b/individual/fixation_across_sessions.ipynb @@ -0,0 +1,82 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b38925e3", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Fixation Across Sessions\n", + "\n", + "Fixation-duration comparison across the three sessions.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3cf26d0-e0a7-4f4b-8221-3b8d7dedcd2d", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "DATA = '../data/individual/processed'\n", + "\n", + "# load eye data\n", + "sed_data_01 = pd.read_csv(f'{DATA}/sed_fix_01.csv')\n", + "sed_data_02 = pd.read_csv(f'{DATA}/sed_fix_02.csv')\n", + "sed_data_03 = pd.read_csv(f'{DATA}/sed_fix_03.csv')\n", + "\n", + "# session labels\n", + "sed_data_01['session'] = 'Session 01'\n", + "sed_data_02['session'] = 'Session 02'\n", + "sed_data_03['session'] = 'Session 03'\n", + "\n", + "# combine datasets\n", + "all_sed_data = pd.concat([sed_data_01, sed_data_02, sed_data_03], ignore_index=True)\n", + "\n", + "# plot fixation comparison\n", + "plt.figure(figsize=(14, 7))\n", + "sns.boxplot(data=all_sed_data, x='session', y='duration')\n", + "plt.title('Comparison of Fixation Durations Across Sessions')\n", + "plt.xlabel('Session')\n", + "plt.ylabel('Fixation Duration (s)')\n", + "plt.grid(True)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# descriptive statistics\n", + "fixation_duration_stats = all_sed_data[['session', 'duration']].groupby('session').describe()\n", + "fixation_duration_stats" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/hads_eye.ipynb b/individual/hads_eye.ipynb new file mode 100755 index 0000000..875ef97 --- /dev/null +++ b/individual/hads_eye.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "68318ac0", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Hads Eye\n", + "\n", + "HADS anxiety/depression scores vs eye-tracking measures.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "z9ozevy0iye", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "columns_mapping = {\n", + " 'datetime': 'timestamp',\n", + " 'pupil': 'pupil_dilation',\n", + " 'leftEyeOpen': 'left_blink',\n", + " 'rightEyeOpen': 'right_blink'\n", + "}\n", + "\n", + "baseline_eye_tracking = pd.read_csv(f'{DATA}/sed.csv').rename(columns=columns_mapping)\n", + "eye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv').rename(columns=columns_mapping)\n", + "eye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv').rename(columns=columns_mapping)\n", + "eye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv').rename(columns=columns_mapping)\n", + "\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "def clean_eye_tracking_data(eye_tracking_data):\n", + " df = eye_tracking_data.copy()\n", + " df['timestamp'] = pd.to_datetime(\n", + " df['timestamp'], utc=True, errors='coerce'\n", + " ).dt.tz_convert(None)\n", + " return df.dropna(subset=['timestamp'])\n", + "\n", + "baseline_eye_tracking = clean_eye_tracking_data(baseline_eye_tracking)\n", + "eye_tracking_01 = clean_eye_tracking_data(eye_tracking_01)\n", + "eye_tracking_02 = clean_eye_tracking_data(eye_tracking_02)\n", + "eye_tracking_03 = clean_eye_tracking_data(eye_tracking_03)\n", + "\n", + "psychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "psychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\n", + "psychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\n", + "psychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n", + "\n", + "def filter_eye_tracking_data(eye_tracking_data, question):\n", + " return eye_tracking_data[\n", + " (eye_tracking_data['timestamp'] >= question['Question Start Time']) &\n", + " (eye_tracking_data['timestamp'] <= question['Question Answer Time'])\n", + " ]\n", + "\n", + "BLINK_THRESHOLD = 1.0\n", + "MIN_CLOSED_FRAMES = 3 # ~100ms at 30Hz\n", + "\n", + "def count_blinks(series, threshold, min_frames):\n", + " # sustained closure onset\n", + " closed = (series <= threshold).astype(int)\n", + " sustained = closed.rolling(min_frames).sum() == min_frames\n", + " return int((sustained & ~sustained.shift(1, fill_value=False)).sum())\n", + "\n", + "def calculate_eye_tracking_metrics(eye_tracking_data):\n", + " average_pupil_dilation = eye_tracking_data['pupil_dilation'].mean()\n", + " total_duration_minutes = (\n", + " (eye_tracking_data['timestamp'].max() - eye_tracking_data['timestamp'].min())\n", + " .total_seconds() / 60\n", + " )\n", + " if total_duration_minutes <= 0:\n", + " return average_pupil_dilation, 0.0, 0.0\n", + " left_blink_rate = count_blinks(eye_tracking_data['left_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + " right_blink_rate = count_blinks(eye_tracking_data['right_blink'], BLINK_THRESHOLD, MIN_CLOSED_FRAMES) / total_duration_minutes\n", + " return average_pupil_dilation, left_blink_rate, right_blink_rate\n", + "\n", + "baseline_metrics = calculate_eye_tracking_metrics(baseline_eye_tracking)\n", + "\n", + "def detect_significant_increase(test_metrics, baseline_metrics):\n", + " return (\n", + " test_metrics[0] > baseline_metrics[0],\n", + " test_metrics[1] > baseline_metrics[1],\n", + " test_metrics[2] > baseline_metrics[2]\n", + " )\n", + "\n", + "def filter_correct_questions(df, types_count):\n", + " filtered_df = pd.DataFrame()\n", + " for q_type, count in types_count.items():\n", + " filtered_df = pd.concat([filtered_df, df[df['Type'] == q_type].head(count)])\n", + " return filtered_df\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d3e73cc4-0548-4a9f-af48-063c5f7fef4d", + "metadata": {}, + "outputs": [], + "source": [ + "# Validate – correcting total number of questions per type\n", + "types_count = {\n", + " 'HADS': 14,\n", + " 'STAI-S': 20,\n", + " 'STAI-T': 20,\n", + " 'BFI': 10,\n", + " 'FQ': 24\n", + "}\n", + "\n", + "questions_01 = filter_correct_questions(psychometric_01, types_count)\n", + "questions_02 = filter_correct_questions(psychometric_02, types_count)\n", + "questions_03 = filter_correct_questions(psychometric_03, types_count)\n", + "\n", + "# Calculate metrics with baseline comparison (rounded, with per-metric flags)\n", + "def calculate_metrics_validated(questions, eye_tracking_data, baseline_metrics):\n", + " results = []\n", + " for _, question in questions.iterrows():\n", + " filtered_data = filter_eye_tracking_data(eye_tracking_data, question)\n", + " if not filtered_data.empty:\n", + " metrics = calculate_eye_tracking_metrics(filtered_data)\n", + " significant_increases = detect_significant_increase(metrics, baseline_metrics)\n", + " results.append({\n", + " 'Type': question['Type'],\n", + " 'Question': question['Question'],\n", + " 'Start Time': question['Question Start Time'],\n", + " 'End Time': question['Question Answer Time'],\n", + " 'Score': question['Answer'],\n", + " 'Average Pupil Dilation': round(metrics[0], 2),\n", + " 'Average Left Blink Rate': round(metrics[1], 2),\n", + " 'Average Right Blink Rate': round(metrics[2], 2),\n", + " 'Sign of Anxiety': 'Yes' if any(significant_increases) else 'No',\n", + " 'Pupil Dilation Increase': 'Yes' if significant_increases[0] else 'No',\n", + " 'Left Blink Rate Increase': 'Yes' if significant_increases[1] else 'No',\n", + " 'Right Blink Rate Increase': 'Yes' if significant_increases[2] else 'No'\n", + " })\n", + " return pd.DataFrame(results)\n", + "\n", + "results_01 = calculate_metrics_validated(questions_01, eye_tracking_01, baseline_metrics)\n", + "results_02 = calculate_metrics_validated(questions_02, eye_tracking_02, baseline_metrics)\n", + "results_03 = calculate_metrics_validated(questions_03, eye_tracking_03, baseline_metrics)\n", + "\n", + "# Combine and validate row count\n", + "results_01['Test'] = 'Test 01'\n", + "results_02['Test'] = 'Test 02'\n", + "results_03['Test'] = 'Test 03'\n", + "\n", + "combined_results = pd.concat([results_01, results_02, results_03], ignore_index=True)\n", + "\n", + "expected_rows = sum(types_count.values()) * 3\n", + "if len(combined_results) != expected_rows:\n", + " raise ValueError(f\"Expected {expected_rows} rows, got {len(combined_results)}\")\n", + "\n", + "# Save data\n", + "combined_results.to_csv(f'{DATA}/QQ2.csv', index=False)\n", + "\n", + "combined_results.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/hads_hrv.ipynb b/individual/hads_hrv.ipynb new file mode 100755 index 0000000..1477861 --- /dev/null +++ b/individual/hads_hrv.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "95c5301d", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Hads Hrv\n", + "\n", + "HADS anxiety/depression scores vs HRV.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c18ab09-a0af-43b8-b908-7d1727472548", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "def calculate_hrv_metrics(ibi_data):\n", + " valid_ibi = pd.Series(ibi_data)\n", + " diff_nn = np.diff(valid_ibi)\n", + " rmssd = np.sqrt(np.mean(np.square(diff_nn)))\n", + " sdnn = np.std(valid_ibi, ddof=1)\n", + " return rmssd, sdnn\n", + "\n", + "ibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\n", + "ibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\n", + "ibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n", + "\n", + "# physiological bounds\n", + "ibi_baseline = ibi_baseline[(ibi_baseline['ibi'] > 300) & (ibi_baseline['ibi'] < 2000)]\n", + "rmssd_baseline, sdnn_baseline = calculate_hrv_metrics(ibi_baseline['ibi'])\n", + "baseline_metrics = (rmssd_baseline, sdnn_baseline)\n", + "\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "psychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "psychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\n", + "psychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\n", + "psychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n", + "\n", + "types_count = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n", + "\n", + "def filter_correct_questions(df, types_count):\n", + " filtered_df = pd.DataFrame()\n", + " for q_type, count in types_count.items():\n", + " filtered_df = pd.concat([filtered_df, df[df['Type'] == q_type].head(count)])\n", + " return filtered_df\n", + "\n", + "questions_01 = filter_correct_questions(psychometric_01, types_count)\n", + "questions_02 = filter_correct_questions(psychometric_02, types_count)\n", + "questions_03 = filter_correct_questions(psychometric_03, types_count)\n", + "\n", + "def prepare_ibi(ibi_data):\n", + " # convert once, avoid repeated mutation\n", + " ibi = ibi_data.copy()\n", + " ibi['datetime'] = pd.to_datetime(ibi['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " return ibi\n", + "\n", + "ibi_01 = prepare_ibi(ibi_01)\n", + "ibi_02 = prepare_ibi(ibi_02)\n", + "ibi_03 = prepare_ibi(ibi_03)\n", + "\n", + "def get_ibi_data(question, ibi_data):\n", + " filtered = ibi_data[\n", + " (ibi_data['datetime'] >= question['Question Start Time']) &\n", + " (ibi_data['datetime'] <= question['Question Answer Time'])\n", + " ]\n", + " return filtered['ibi'].values\n", + "\n", + "def detect_significant_decrease(test_metrics, baseline_metrics):\n", + " return (\n", + " test_metrics[0] < baseline_metrics[0],\n", + " test_metrics[1] < baseline_metrics[1]\n", + " )\n", + "\n", + "def calculate_hrv_metrics_for_questions(questions, ibi_data, baseline_metrics):\n", + " results = []\n", + " for _, question in questions.iterrows():\n", + " ibi_values = get_ibi_data(question, ibi_data)\n", + " # physiological bounds\n", + " ibi_values = ibi_values[(ibi_values > 300) & (ibi_values < 2000)]\n", + " if len(ibi_values) > 1:\n", + " rmssd, sdnn = calculate_hrv_metrics(ibi_values)\n", + " sig = detect_significant_decrease((rmssd, sdnn), baseline_metrics)\n", + " results.append({\n", + " 'Type': question['Type'],\n", + " 'Start Time': question['Question Start Time'],\n", + " 'End Time': question['Question Answer Time'],\n", + " 'Score': question['Answer'],\n", + " 'RMSSD': round(rmssd, 2),\n", + " 'SDNN': round(sdnn, 2),\n", + " 'RMSSD Decrease': 'Yes' if sig[0] else 'No',\n", + " 'SDNN Decrease': 'Yes' if sig[1] else 'No'\n", + " })\n", + " return pd.DataFrame(results)\n", + "\n", + "results_01 = calculate_hrv_metrics_for_questions(questions_01, ibi_01, baseline_metrics)\n", + "results_02 = calculate_hrv_metrics_for_questions(questions_02, ibi_02, baseline_metrics)\n", + "results_03 = calculate_hrv_metrics_for_questions(questions_03, ibi_03, baseline_metrics)\n", + "\n", + "results_01['Test'] = 'Test 01'\n", + "results_02['Test'] = 'Test 02'\n", + "results_03['Test'] = 'Test 03'\n", + "\n", + "combined_results = pd.concat([results_01, results_02, results_03], ignore_index=True)\n", + "combined_results = combined_results[['Test', 'Type', 'Start Time', 'End Time', 'Score', 'RMSSD', 'SDNN', 'RMSSD Decrease', 'SDNN Decrease']]\n", + "combined_results.to_csv(f'{DATA}/QQHRV.csv', index=False)\n", + "\n", + "combined_results.head()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/Co hr.ipynb b/individual/hr_across_sessions.ipynb similarity index 51% rename from individual/Co hr.ipynb rename to individual/hr_across_sessions.ipynb index 03d9acd..1f51a32 100755 --- a/individual/Co hr.ipynb +++ b/individual/hr_across_sessions.ipynb @@ -1,5 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "ca611565", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Hr Across Sessions\n", + "\n", + "Heart rate compared across sessions (baseline + 3 sessions).\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, { "cell_type": "code", "execution_count": null, @@ -65,7 +80,57 @@ "id": "5a3ac04b-35a4-4796-b6cf-3f3a204e8b5d", "metadata": {}, "outputs": [], - "source": "import pandas as pd\nimport numpy as np\n\nDATA = '../data/individual/processed'\n\n# physiological bounds\nIBI_MIN = 300\nIBI_MAX = 2000\n\ndef clean_ibi_data(ibi_data):\n return ibi_data[(ibi_data['ibi'] > IBI_MIN) & (ibi_data['ibi'] < IBI_MAX)]\n\nbaseline_ibi = clean_ibi_data(pd.read_csv(f'{DATA}/ibi.csv'))\nibi_01 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_01.csv'))\nibi_02 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_02.csv'))\nibi_03 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_03.csv'))\n\ndef calculate_rmssd(ibi_values):\n return np.sqrt(np.mean(np.diff(ibi_values) ** 2))\n\ndef calculate_sdnn(ibi_values):\n return np.std(ibi_values, ddof=1)\n\ndef hrv(ibi_df):\n vals = ibi_df['ibi'].dropna().values\n return calculate_rmssd(vals), calculate_sdnn(vals)\n\nrmssd_baseline, sdnn_baseline = hrv(baseline_ibi)\nrmssd_01, sdnn_01 = hrv(ibi_01)\nrmssd_02, sdnn_02 = hrv(ibi_02)\nrmssd_03, sdnn_03 = hrv(ibi_03)\n\nRMSSD_THRESHOLD = 20\nSDNN_THRESHOLD = 50\n\ndef anxiety_flags(rmssd, sdnn):\n return rmssd < RMSSD_THRESHOLD, sdnn < SDNN_THRESHOLD\n\nprint(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms')\nprint(f'Session 1 RMSSD: {rmssd_01:.2f} ms, SDNN: {sdnn_01:.2f} ms')\nprint(f'Session 2 RMSSD: {rmssd_02:.2f} ms, SDNN: {sdnn_02:.2f} ms')\nprint(f'Session 3 RMSSD: {rmssd_03:.2f} ms, SDNN: {sdnn_03:.2f} ms')\n\nfor label, rmssd, sdnn in [('Baseline', rmssd_baseline, sdnn_baseline),\n ('Session 1', rmssd_01, sdnn_01),\n ('Session 2', rmssd_02, sdnn_02),\n ('Session 3', rmssd_03, sdnn_03)]:\n ar, asd = anxiety_flags(rmssd, sdnn)\n print(f'{label} RMSSD Anxiety: {\"Yes\" if ar else \"No\"}, SDNN Anxiety: {\"Yes\" if asd else \"No\"}')\n" + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/individual/processed'\n", + "\n", + "# physiological bounds\n", + "IBI_MIN = 300\n", + "IBI_MAX = 2000\n", + "\n", + "def clean_ibi_data(ibi_data):\n", + " return ibi_data[(ibi_data['ibi'] > IBI_MIN) & (ibi_data['ibi'] < IBI_MAX)]\n", + "\n", + "baseline_ibi = clean_ibi_data(pd.read_csv(f'{DATA}/ibi.csv'))\n", + "ibi_01 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_01.csv'))\n", + "ibi_02 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_02.csv'))\n", + "ibi_03 = clean_ibi_data(pd.read_csv(f'{DATA}/ibi_03.csv'))\n", + "\n", + "def calculate_rmssd(ibi_values):\n", + " return np.sqrt(np.mean(np.diff(ibi_values) ** 2))\n", + "\n", + "def calculate_sdnn(ibi_values):\n", + " return np.std(ibi_values, ddof=1)\n", + "\n", + "def hrv(ibi_df):\n", + " vals = ibi_df['ibi'].dropna().values\n", + " return calculate_rmssd(vals), calculate_sdnn(vals)\n", + "\n", + "rmssd_baseline, sdnn_baseline = hrv(baseline_ibi)\n", + "rmssd_01, sdnn_01 = hrv(ibi_01)\n", + "rmssd_02, sdnn_02 = hrv(ibi_02)\n", + "rmssd_03, sdnn_03 = hrv(ibi_03)\n", + "\n", + "RMSSD_THRESHOLD = 20\n", + "SDNN_THRESHOLD = 50\n", + "\n", + "def anxiety_flags(rmssd, sdnn):\n", + " return rmssd < RMSSD_THRESHOLD, sdnn < SDNN_THRESHOLD\n", + "\n", + "print(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms')\n", + "print(f'Session 1 RMSSD: {rmssd_01:.2f} ms, SDNN: {sdnn_01:.2f} ms')\n", + "print(f'Session 2 RMSSD: {rmssd_02:.2f} ms, SDNN: {sdnn_02:.2f} ms')\n", + "print(f'Session 3 RMSSD: {rmssd_03:.2f} ms, SDNN: {sdnn_03:.2f} ms')\n", + "\n", + "for label, rmssd, sdnn in [('Baseline', rmssd_baseline, sdnn_baseline),\n", + " ('Session 1', rmssd_01, sdnn_01),\n", + " ('Session 2', rmssd_02, sdnn_02),\n", + " ('Session 3', rmssd_03, sdnn_03)]:\n", + " ar, asd = anxiety_flags(rmssd, sdnn)\n", + " print(f'{label} RMSSD Anxiety: {\"Yes\" if ar else \"No\"}, SDNN Anxiety: {\"Yes\" if asd else \"No\"}')\n" + ] }, { "cell_type": "code", @@ -157,14 +222,78 @@ "id": "4e92b8fe", "metadata": {}, "outputs": [], - "source": "import pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\n\nDATA = '../data/individual/processed'\nPSY = '../data/individual/psychometric'\n\nquestion_types_count = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n\nsessions = []\nfor i in range(1, 4):\n hr = pd.read_csv(f'{DATA}/hr_{i:02d}.csv')\n hr = hr[hr['confidence'] == 1.0].copy()\n hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{i:02d}.csv')\n psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n sessions.append((hr, psy))\n\ndef plot_heart_rate_for_category(hr_data, psy_data, category_name, expected_questions, session_num, window_size=10):\n category_data = psy_data[psy_data['Type'] == category_name].copy()\n\n segments, question_times = [], []\n for _, row in category_data.iterrows():\n mask = (hr_data['datetime'] >= row['Question Start Time']) & (hr_data['datetime'] <= row['Question Answer Time'])\n seg = hr_data.loc[mask]\n if not seg.empty:\n segments.append(seg)\n question_times.append(row['Question Answer Time'])\n\n if len(question_times) != expected_questions:\n print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n\n category_hr = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n category_hr = category_hr.sort_values('datetime').reset_index(drop=True)\n category_hr['smoothed_heart_rate'] = category_hr['heart_rate'].rolling(window=window_size).mean()\n\n plt.figure(figsize=(12, 6))\n plt.plot(category_hr['datetime'], category_hr['smoothed_heart_rate'], label='Heart Rate', color='b')\n\n for i, time in enumerate(question_times, start=1):\n nearest_idx = category_hr['datetime'].searchsorted(time)\n if nearest_idx < len(category_hr):\n hr_val = category_hr.iloc[nearest_idx]['smoothed_heart_rate']\n plt.scatter(time, hr_val, color='red')\n plt.text(time, hr_val + 1, f'Q{i}', rotation=45, ha='right')\n else:\n plt.axvline(x=time, color='red', linestyle='--', alpha=0.5)\n\n plt.xlabel('Time')\n plt.ylabel('Heart Rate (bpm)')\n plt.title(f'Heart Rate During {category_name} - Session {session_num:02d}')\n plt.xticks(rotation=45)\n plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n plt.legend()\n plt.grid(True)\n plt.tight_layout()\n plt.show()\n plt.close()\n\nfor i, (hr, psy) in enumerate(sessions, 1):\n for category, expected in question_types_count.items():\n plot_heart_rate_for_category(hr, psy, category, expected, i)" + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "question_types_count = {'HADS': 14, 'STAI-S': 20, 'STAI-T': 20, 'BFI': 10, 'FQ': 24}\n", + "\n", + "sessions = []\n", + "for i in range(1, 4):\n", + " hr = pd.read_csv(f'{DATA}/hr_{i:02d}.csv')\n", + " hr = hr[hr['confidence'] == 1.0].copy()\n", + " hr['datetime'] = pd.to_datetime(hr['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy = pd.read_csv(f'{PSY}/Psychometric_Test_Results_{i:02d}.csv')\n", + " psy['Question Start Time'] = pd.to_datetime(psy['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " psy['Question Answer Time'] = pd.to_datetime(psy['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " sessions.append((hr, psy))\n", + "\n", + "def plot_heart_rate_for_category(hr_data, psy_data, category_name, expected_questions, session_num, window_size=10):\n", + " category_data = psy_data[psy_data['Type'] == category_name].copy()\n", + "\n", + " segments, question_times = [], []\n", + " for _, row in category_data.iterrows():\n", + " mask = (hr_data['datetime'] >= row['Question Start Time']) & (hr_data['datetime'] <= row['Question Answer Time'])\n", + " seg = hr_data.loc[mask]\n", + " if not seg.empty:\n", + " segments.append(seg)\n", + " question_times.append(row['Question Answer Time'])\n", + "\n", + " if len(question_times) != expected_questions:\n", + " print(f\"Warning: {category_name} has {len(question_times)} questions, expected {expected_questions}\")\n", + "\n", + " category_hr = pd.concat(segments, ignore_index=True) if segments else pd.DataFrame()\n", + " category_hr = category_hr.sort_values('datetime').reset_index(drop=True)\n", + " category_hr['smoothed_heart_rate'] = category_hr['heart_rate'].rolling(window=window_size).mean()\n", + "\n", + " plt.figure(figsize=(12, 6))\n", + " plt.plot(category_hr['datetime'], category_hr['smoothed_heart_rate'], label='Heart Rate', color='b')\n", + "\n", + " for i, time in enumerate(question_times, start=1):\n", + " nearest_idx = category_hr['datetime'].searchsorted(time)\n", + " if nearest_idx < len(category_hr):\n", + " hr_val = category_hr.iloc[nearest_idx]['smoothed_heart_rate']\n", + " plt.scatter(time, hr_val, color='red')\n", + " plt.text(time, hr_val + 1, f'Q{i}', rotation=45, ha='right')\n", + " else:\n", + " plt.axvline(x=time, color='red', linestyle='--', alpha=0.5)\n", + "\n", + " plt.xlabel('Time')\n", + " plt.ylabel('Heart Rate (bpm)')\n", + " plt.title(f'Heart Rate During {category_name} - Session {session_num:02d}')\n", + " plt.xticks(rotation=45)\n", + " plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))\n", + " plt.legend()\n", + " plt.grid(True)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " plt.close()\n", + "\n", + "for i, (hr, psy) in enumerate(sessions, 1):\n", + " for category, expected in question_types_count.items():\n", + " plot_heart_rate_for_category(hr, psy, category, expected, i)" + ] } ], "metadata": { "kernelspec": { - "display_name": "pdf_processing", + "display_name": "Python 3", "language": "python", - "name": "pdf_processing" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -181,4 +310,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/individual/Co hr02.ipynb b/individual/hr_across_sessions_02.ipynb similarity index 64% rename from individual/Co hr02.ipynb rename to individual/hr_across_sessions_02.ipynb index a0a5e52..9c84576 100755 --- a/individual/Co hr02.ipynb +++ b/individual/hr_across_sessions_02.ipynb @@ -1,5 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "7d092edf", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Hr Across Sessions 02\n", + "\n", + "Heart rate across sessions (continued, part 2).\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, { "cell_type": "code", "execution_count": null, @@ -52,14 +67,35 @@ "id": "5ff4a24f-e9a8-4df8-8664-5f1e2f7f22c9", "metadata": {}, "outputs": [], - "source": "test_types = ['HADS', 'STAI-S', 'STAI-T', 'BFI', 'FQ']\nsessions = [(psychometric_01, hr_01), (psychometric_02, hr_02), (psychometric_03, hr_03)]\nyn = lambda x: 'Yes' if x else 'No'\n\nrows = []\nfor test_type in test_types:\n for i, (psych, hr) in enumerate(sessions, 1):\n qs = psych[psych['Type'] == test_type].copy()\n avg_hr, start, end = get_average_hr_and_times(qs, hr)\n rows.append((\n f'Test {i:02d}', test_type, start, end, avg_hr,\n yn(avg_hr > baseline_avg_hr), yn(avg_hr > 100)\n ))\n\nresults = pd.DataFrame(rows, columns=[\n 'Test', 'Type', 'Start Time', 'End Time',\n 'Average HR (BPM)', 'Anxiety (Individual)', 'Anxiety (General >100 BPM)'\n])\nprint(f'Baseline Average HR: {baseline_avg_hr:.2f} BPM\\n')\nprint(results.to_string(index=False))" + "source": [ + "test_types = ['HADS', 'STAI-S', 'STAI-T', 'BFI', 'FQ']\n", + "sessions = [(psychometric_01, hr_01), (psychometric_02, hr_02), (psychometric_03, hr_03)]\n", + "yn = lambda x: 'Yes' if x else 'No'\n", + "\n", + "rows = []\n", + "for test_type in test_types:\n", + " for i, (psych, hr) in enumerate(sessions, 1):\n", + " qs = psych[psych['Type'] == test_type].copy()\n", + " avg_hr, start, end = get_average_hr_and_times(qs, hr)\n", + " rows.append((\n", + " f'Test {i:02d}', test_type, start, end, avg_hr,\n", + " yn(avg_hr > baseline_avg_hr), yn(avg_hr > 100)\n", + " ))\n", + "\n", + "results = pd.DataFrame(rows, columns=[\n", + " 'Test', 'Type', 'Start Time', 'End Time',\n", + " 'Average HR (BPM)', 'Anxiety (Individual)', 'Anxiety (General >100 BPM)'\n", + "])\n", + "print(f'Baseline Average HR: {baseline_avg_hr:.2f} BPM\\n')\n", + "print(results.to_string(index=False))" + ] } ], "metadata": { "kernelspec": { - "display_name": "pdf_processing", + "display_name": "Python 3", "language": "python", - "name": "pdf_processing" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -76,4 +112,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/individual/Co hr03.ipynb b/individual/hr_across_sessions_03.ipynb similarity index 61% rename from individual/Co hr03.ipynb rename to individual/hr_across_sessions_03.ipynb index 92ddaf0..28c9e43 100755 --- a/individual/Co hr03.ipynb +++ b/individual/hr_across_sessions_03.ipynb @@ -1,5 +1,20 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "93ee908f", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Hr Across Sessions 03\n", + "\n", + "Heart rate across sessions (continued, part 3).\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, { "cell_type": "code", "execution_count": null, @@ -97,7 +112,51 @@ "id": "68e9c730-dcf7-48fa-9044-8ff6f405047b", "metadata": {}, "outputs": [], - "source": "# per-session HRV\ndef _filter(df):\n return df[(df['ibi'] > IBI_MIN) & (df['ibi'] < IBI_MAX)]['ibi']\n\nrmssd_01, sdnn_01 = calculate_hrv_metrics(_filter(ibi_01))\nrmssd_02, sdnn_02 = calculate_hrv_metrics(_filter(ibi_02))\nrmssd_03, sdnn_03 = calculate_hrv_metrics(_filter(ibi_03))\n\ngen_01, _ = determine_anxiety(rmssd_01, sdnn_01, rmssd_baseline, sdnn_baseline)\ngen_02, _ = determine_anxiety(rmssd_02, sdnn_02, rmssd_baseline, sdnn_baseline)\ngen_03, _ = determine_anxiety(rmssd_03, sdnn_03, rmssd_baseline, sdnn_baseline)\n\nsessions = {\n 'Baseline': (rmssd_baseline, sdnn_baseline, False),\n 'Test 01': (rmssd_01, sdnn_01, gen_01),\n 'Test 02': (rmssd_02, sdnn_02, gen_02),\n 'Test 03': (rmssd_03, sdnn_03, gen_03),\n}\n\nprint(f'Baseline RMSSD: {rmssd_baseline:.2f} ms SDNN: {sdnn_baseline:.2f} ms')\nfor label, (r, s, g) in list(sessions.items())[1:]:\n print(f'{label} RMSSD: {r:.2f} ms SDNN: {s:.2f} ms Anxiety: {\"Yes\" if g else \"No\"}')\n\nlabels = list(sessions.keys())\ncolors = ['red' if v[2] else 'green' for v in sessions.values()]\n\nfig, axes = plt.subplots(2, 1, figsize=(10, 8))\n\naxes[0].bar(labels, [v[0] for v in sessions.values()], color=colors, alpha=0.7)\naxes[0].axhline(RMSSD_THRESHOLD, color='red', linestyle='--', label='Threshold')\naxes[0].set_title('RMSSD Across Sessions')\naxes[0].set_ylabel('RMSSD (ms)')\naxes[0].legend()\n\naxes[1].bar(labels, [v[1] for v in sessions.values()], color=colors, alpha=0.7)\naxes[1].axhline(SDNN_THRESHOLD, color='red', linestyle='--', label='Threshold')\naxes[1].set_title('SDNN Across Sessions')\naxes[1].set_ylabel('SDNN (ms)')\naxes[1].legend()\n\nplt.tight_layout()\nplt.show()\nplt.close()" + "source": [ + "# per-session HRV\n", + "def _filter(df):\n", + " return df[(df['ibi'] > IBI_MIN) & (df['ibi'] < IBI_MAX)]['ibi']\n", + "\n", + "rmssd_01, sdnn_01 = calculate_hrv_metrics(_filter(ibi_01))\n", + "rmssd_02, sdnn_02 = calculate_hrv_metrics(_filter(ibi_02))\n", + "rmssd_03, sdnn_03 = calculate_hrv_metrics(_filter(ibi_03))\n", + "\n", + "gen_01, _ = determine_anxiety(rmssd_01, sdnn_01, rmssd_baseline, sdnn_baseline)\n", + "gen_02, _ = determine_anxiety(rmssd_02, sdnn_02, rmssd_baseline, sdnn_baseline)\n", + "gen_03, _ = determine_anxiety(rmssd_03, sdnn_03, rmssd_baseline, sdnn_baseline)\n", + "\n", + "sessions = {\n", + " 'Baseline': (rmssd_baseline, sdnn_baseline, False),\n", + " 'Test 01': (rmssd_01, sdnn_01, gen_01),\n", + " 'Test 02': (rmssd_02, sdnn_02, gen_02),\n", + " 'Test 03': (rmssd_03, sdnn_03, gen_03),\n", + "}\n", + "\n", + "print(f'Baseline RMSSD: {rmssd_baseline:.2f} ms SDNN: {sdnn_baseline:.2f} ms')\n", + "for label, (r, s, g) in list(sessions.items())[1:]:\n", + " print(f'{label} RMSSD: {r:.2f} ms SDNN: {s:.2f} ms Anxiety: {\"Yes\" if g else \"No\"}')\n", + "\n", + "labels = list(sessions.keys())\n", + "colors = ['red' if v[2] else 'green' for v in sessions.values()]\n", + "\n", + "fig, axes = plt.subplots(2, 1, figsize=(10, 8))\n", + "\n", + "axes[0].bar(labels, [v[0] for v in sessions.values()], color=colors, alpha=0.7)\n", + "axes[0].axhline(RMSSD_THRESHOLD, color='red', linestyle='--', label='Threshold')\n", + "axes[0].set_title('RMSSD Across Sessions')\n", + "axes[0].set_ylabel('RMSSD (ms)')\n", + "axes[0].legend()\n", + "\n", + "axes[1].bar(labels, [v[1] for v in sessions.values()], color=colors, alpha=0.7)\n", + "axes[1].axhline(SDNN_THRESHOLD, color='red', linestyle='--', label='Threshold')\n", + "axes[1].set_title('SDNN Across Sessions')\n", + "axes[1].set_ylabel('SDNN (ms)')\n", + "axes[1].legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] }, { "cell_type": "code", @@ -105,14 +164,25 @@ "id": "1617606d-38b1-410e-850a-87f16f1a731a", "metadata": {}, "outputs": [], - "source": "# all question types\nall_results = []\nfor qt in question_types:\n df = process_questions(qt, psychometric_data, ibi_data, rmssd_baseline, sdnn_baseline)\n df.insert(1, 'Type', qt)\n all_results.append(df)\n\nall_results = pd.concat(all_results, ignore_index=True)\nprint(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms\\n')\nprint(all_results.to_string(index=False))" + "source": [ + "# all question types\n", + "all_results = []\n", + "for qt in question_types:\n", + " df = process_questions(qt, psychometric_data, ibi_data, rmssd_baseline, sdnn_baseline)\n", + " df.insert(1, 'Type', qt)\n", + " all_results.append(df)\n", + "\n", + "all_results = pd.concat(all_results, ignore_index=True)\n", + "print(f'Baseline RMSSD: {rmssd_baseline:.2f} ms, SDNN: {sdnn_baseline:.2f} ms\\n')\n", + "print(all_results.to_string(index=False))" + ] } ], "metadata": { "kernelspec": { - "display_name": "pdf_processing", + "display_name": "Python 3", "language": "python", - "name": "pdf_processing" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -129,4 +199,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/individual/preprocess_raw_to_csv.ipynb b/individual/preprocess_raw_to_csv.ipynb new file mode 100755 index 0000000..a3abaf5 --- /dev/null +++ b/individual/preprocess_raw_to_csv.ipynb @@ -0,0 +1,430 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bfc4a717", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Preprocess Raw To Csv\n", + "\n", + "Convert raw sensor exports (.txt) into tidy processed CSVs.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6wbwph8o288", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "RAW = '../data/individual/raw'\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d1cae14-78bf-4aef-ac58-82fa96b1363c", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/hr.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/hr.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14a8ada0-f7a1-4fb1-ab07-13c1ae0a0a7c", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/hr_01.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/hr_01.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4da28eb8-3d63-49d8-835e-fbf6d2796130", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/hr_02.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/hr_02.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b100977d-19df-43f1-9559-d8d9815e531f", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/hr_03.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/hr_03.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "127d676f-bc31-4518-b223-7de3195c7172", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/ibi.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/ibi.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9be74ecd-6214-4a1a-9aa2-4e67066a0223", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/ibi_01.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/ibi_01.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b056e60d-77c0-4fd1-b33e-74e28cce7a99", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/ibi_02.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/ibi_02.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "683b9f77-5c4f-46d2-a8f2-269123d437a9", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/ibi_03.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/ibi_03.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90b59a53-e30d-4137-916d-08b66f3d06e6", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/sed.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/sed.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3885999c-d149-4689-bd63-2f692d6a689a", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/sed_01.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/sed_01.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e68c8763-e49c-4282-9e72-f24a9c8f6ff5", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/sed_02.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/sed_02.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e36ed587-ffe5-4430-97f7-3d2a949ab064", + "metadata": {}, + "outputs": [], + "source": [ + "# load txt file\n", + "file_path = f'{RAW}/sed_03.txt'\n", + "df = pd.read_csv(file_path, delimiter=';')\n", + "\n", + "# save as CSV\n", + "csv_file_path = f'{DATA}/sed_03.csv'\n", + "df.to_csv(csv_file_path, index=False)\n", + "\n", + "csv_file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "070320ae-b287-485b-8a88-d202460949ca", + "metadata": {}, + "outputs": [], + "source": [ + "# load CSV files\n", + "sed_df = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "\n", + "# rename columns\n", + "sed_df = sed_df.rename(columns={\n", + " 'gazeDir.x': 'gaze_x',\n", + " 'gazeDir.y': 'gaze_y',\n", + " 'gazeDir.z': 'gaze_z'\n", + "})\n", + "\n", + "# validate data\n", + "if sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n", + " raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n", + "\n", + "# gaze stability threshold\n", + "gaze_threshold = 0.01\n", + "\n", + "# gaze direction diff\n", + "sed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n", + " (sed_df['gaze_y'].diff() ** 2) +\n", + " (sed_df['gaze_z'].diff() ** 2))\n", + "\n", + "# identify fixation points\n", + "sed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n", + "\n", + "# label fixation groups\n", + "sed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n", + "\n", + "# filter fixations\n", + "fixation_df = sed_df[sed_df['fixation']]\n", + "\n", + "# fixation duration\n", + "fixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\n", + "fixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\n", + "fixation_duration = fixation_duration[['duration']]\n", + "\n", + "# merge durations\n", + "sed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n", + "\n", + "# save data\n", + "output_path = f'{DATA}/sed_fix_01.csv'\n", + "sed_df.to_csv(output_path, index=False)\n", + "\n", + "print(f\"File saved successfully to {output_path}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bf1fe6a-2b34-45f3-9bf5-61814b7c9377", + "metadata": {}, + "outputs": [], + "source": [ + "# load CSV files\n", + "sed_df = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "\n", + "# rename columns\n", + "sed_df = sed_df.rename(columns={\n", + " 'gazeDir.x': 'gaze_x',\n", + " 'gazeDir.y': 'gaze_y',\n", + " 'gazeDir.z': 'gaze_z'\n", + "})\n", + "\n", + "# validate data\n", + "if sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n", + " raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n", + "\n", + "# gaze stability threshold\n", + "gaze_threshold = 0.01\n", + "\n", + "# gaze direction diff\n", + "sed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n", + " (sed_df['gaze_y'].diff() ** 2) +\n", + " (sed_df['gaze_z'].diff() ** 2))\n", + "\n", + "# identify fixation points\n", + "sed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n", + "\n", + "# label fixation groups\n", + "sed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n", + "\n", + "# filter fixations\n", + "fixation_df = sed_df[sed_df['fixation']]\n", + "\n", + "# fixation duration\n", + "fixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\n", + "fixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\n", + "fixation_duration = fixation_duration[['duration']]\n", + "\n", + "# merge durations\n", + "sed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n", + "\n", + "# save data\n", + "output_path = f'{DATA}/sed_fix_02.csv'\n", + "sed_df.to_csv(output_path, index=False)\n", + "\n", + "print(f\"File saved successfully to {output_path}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bcb734b9-6537-4487-a85d-60c76a97f8e4", + "metadata": {}, + "outputs": [], + "source": [ + "# load CSV files\n", + "sed_df = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "# rename columns\n", + "sed_df = sed_df.rename(columns={\n", + " 'gazeDir.x': 'gaze_x',\n", + " 'gazeDir.y': 'gaze_y',\n", + " 'gazeDir.z': 'gaze_z'\n", + "})\n", + "\n", + "# validate data\n", + "if sed_df[['reltime', 'gaze_x', 'gaze_y', 'gaze_z']].isnull().any().any():\n", + " raise ValueError(\"Input data contains missing values. Please clean the data and try again.\")\n", + "\n", + "# gaze stability threshold\n", + "gaze_threshold = 0.01\n", + "\n", + "# gaze direction diff\n", + "sed_df['gaze_diff'] = np.sqrt((sed_df['gaze_x'].diff() ** 2) +\n", + " (sed_df['gaze_y'].diff() ** 2) +\n", + " (sed_df['gaze_z'].diff() ** 2))\n", + "\n", + "# identify fixation points\n", + "sed_df['fixation'] = sed_df['gaze_diff'] < gaze_threshold\n", + "\n", + "# label fixation groups\n", + "sed_df['fixation_id'] = (sed_df['fixation'] != sed_df['fixation'].shift()).cumsum()\n", + "\n", + "# filter fixations\n", + "fixation_df = sed_df[sed_df['fixation']]\n", + "\n", + "# fixation duration\n", + "fixation_duration = fixation_df.groupby('fixation_id')['reltime'].agg(['min', 'max'])\n", + "fixation_duration['duration'] = fixation_duration['max'] - fixation_duration['min']\n", + "fixation_duration = fixation_duration[['duration']]\n", + "\n", + "# merge durations\n", + "sed_df = sed_df.merge(fixation_duration, left_on='fixation_id', right_index=True, how='left')\n", + "\n", + "# save data\n", + "output_path = f'{DATA}/sed_fix_03.csv'\n", + "sed_df.to_csv(output_path, index=False)\n", + "\n", + "print(f\"File saved successfully to {output_path}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/questionnaire_physiology.ipynb b/individual/questionnaire_physiology.ipynb new file mode 100755 index 0000000..ca4f96f --- /dev/null +++ b/individual/questionnaire_physiology.ipynb @@ -0,0 +1,352 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ecd75372", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Questionnaire Physiology\n", + "\n", + "Link per-question psychometric responses to concurrent HR/IBI physiology.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e36e3c42-a501-4e6c-8850-bc6c970c0c28", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "DATA = '../data/individual/processed'\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "hr_baseline = pd.read_csv(f'{DATA}/hr.csv')\n", + "hr_01 = pd.read_csv(f'{DATA}/hr_01.csv')\n", + "hr_02 = pd.read_csv(f'{DATA}/hr_02.csv')\n", + "hr_03 = pd.read_csv(f'{DATA}/hr_03.csv')\n", + "\n", + "ibi_baseline = pd.read_csv(f'{DATA}/ibi.csv')\n", + "ibi_01 = pd.read_csv(f'{DATA}/ibi_01.csv')\n", + "ibi_02 = pd.read_csv(f'{DATA}/ibi_02.csv')\n", + "ibi_03 = pd.read_csv(f'{DATA}/ibi_03.csv')\n", + "\n", + "eye_tracking_baseline = pd.read_csv(f'{DATA}/sed.csv')\n", + "eye_tracking_01 = pd.read_csv(f'{DATA}/sed_01.csv')\n", + "eye_tracking_02 = pd.read_csv(f'{DATA}/sed_02.csv')\n", + "eye_tracking_03 = pd.read_csv(f'{DATA}/sed_03.csv')\n", + "\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "columns_mapping = {'datetime': 'timestamp', 'pupil': 'pupil_dilation', 'leftEyeOpen': 'left_blink', 'rightEyeOpen': 'right_blink'}\n", + "eye_tracking_baseline, eye_tracking_01, eye_tracking_02, eye_tracking_03 = [\n", + " df.rename(columns=columns_mapping) for df in\n", + " [eye_tracking_baseline, eye_tracking_01, eye_tracking_02, eye_tracking_03]\n", + "]\n", + "\n", + "def clean_eye(df):\n", + " df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " return df.dropna(subset=['timestamp'])\n", + "\n", + "def clean_hrv(df):\n", + " df['datetime'] = pd.to_datetime(df['datetime'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " return df.dropna(subset=['datetime'])\n", + "\n", + "eye_tracking_baseline = clean_eye(eye_tracking_baseline)\n", + "eye_tracking_01 = clean_eye(eye_tracking_01)\n", + "eye_tracking_02 = clean_eye(eye_tracking_02)\n", + "eye_tracking_03 = clean_eye(eye_tracking_03)\n", + "\n", + "hr_baseline = clean_hrv(hr_baseline)\n", + "hr_01 = clean_hrv(hr_01)\n", + "hr_02 = clean_hrv(hr_02)\n", + "hr_03 = clean_hrv(hr_03)\n", + "ibi_baseline = clean_hrv(ibi_baseline)\n", + "ibi_01 = clean_hrv(ibi_01)\n", + "ibi_02 = clean_hrv(ibi_02)\n", + "ibi_03 = clean_hrv(ibi_03)\n", + "\n", + "psychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "psychometric_01 = psychometric_01.dropna(subset=['Question Start Time'])\n", + "psychometric_02 = psychometric_02.dropna(subset=['Question Start Time'])\n", + "psychometric_03 = psychometric_03.dropna(subset=['Question Start Time'])\n", + "\n", + "def calculate_hrv_metrics(ibi_data):\n", + " if len(ibi_data) == 0:\n", + " return None, None\n", + " valid_ibi = ibi_data[ibi_data > 0]\n", + " rmssd = np.sqrt(np.mean(np.square(np.diff(valid_ibi))))\n", + " sdnn = np.std(valid_ibi, ddof=1)\n", + " return rmssd, sdnn\n", + "\n", + "def calculate_blink_rate(blink_data, duration_s):\n", + " if duration_s <= 0:\n", + " return 0.0\n", + " blink_count = ((blink_data > 1.0) & (blink_data.shift(-1) <= 1.0)).sum()\n", + " return blink_count / (duration_s / 60)\n", + "\n", + "baseline_avg_hr = hr_baseline['heart_rate'].mean()\n", + "baseline_duration_s = (eye_tracking_baseline['timestamp'].max() - eye_tracking_baseline['timestamp'].min()).total_seconds()\n", + "\n", + "baseline_metrics = {\n", + " 'rmssd': calculate_hrv_metrics(ibi_baseline['ibi'])[0],\n", + " 'sdnn': calculate_hrv_metrics(ibi_baseline['ibi'])[1],\n", + " 'pupil_dilation': eye_tracking_baseline['pupil_dilation'].mean(),\n", + " 'left_blink_rate': calculate_blink_rate(eye_tracking_baseline['left_blink'], baseline_duration_s),\n", + " 'right_blink_rate': calculate_blink_rate(eye_tracking_baseline['right_blink'], baseline_duration_s),\n", + "}\n", + "\n", + "def process_question_data(questions, hr_data, ibi_data, eye_tracking_data, baseline_avg_hr, baseline_metrics):\n", + " results = []\n", + " for _, question in questions.iterrows():\n", + " start_time = question['Question Start Time']\n", + " end_time = question['Question Answer Time']\n", + " duration_s = (end_time - start_time).total_seconds()\n", + "\n", + " hr_segment = hr_data[(hr_data['datetime'] >= start_time) & (hr_data['datetime'] <= end_time)]\n", + " ibi_segment = ibi_data[(ibi_data['datetime'] >= start_time) & (ibi_data['datetime'] <= end_time)]\n", + " eye_segment = eye_tracking_data[(eye_tracking_data['timestamp'] >= start_time) & (eye_tracking_data['timestamp'] <= end_time)]\n", + "\n", + " avg_hr = hr_segment['heart_rate'].mean()\n", + " rmssd, sdnn = calculate_hrv_metrics(ibi_segment['ibi'])\n", + " avg_pupil = eye_segment['pupil_dilation'].mean()\n", + " left_blink = calculate_blink_rate(eye_segment['left_blink'], duration_s)\n", + " right_blink = calculate_blink_rate(eye_segment['right_blink'], duration_s)\n", + "\n", + " results.append({\n", + " 'Question': question['Question'],\n", + " 'Start Time': start_time.strftime('%H:%M:%S'),\n", + " 'End Time': end_time.strftime('%H:%M:%S'),\n", + " 'Duration (s)': duration_s,\n", + " 'Average HR (BPM)': avg_hr,\n", + " 'RMSSD (ms)': rmssd,\n", + " 'SDNN (ms)': sdnn,\n", + " 'Average Pupil Dilation': avg_pupil,\n", + " 'Left Blink Rate': left_blink,\n", + " 'Right Blink Rate': right_blink,\n", + " })\n", + " return results\n", + "\n", + "def display_results(results, test_number):\n", + " print(f\"\\nTest {test_number:02d}:\")\n", + " for r in results:\n", + " print(f\" {r['Question']}: {r['Start Time']} - {r['End Time']} ({r['Duration (s)']}s)\")\n", + " hr_val = r['Average HR (BPM)']\n", + " rmssd_val = r['RMSSD (ms)']\n", + " sdnn_val = r['SDNN (ms)']\n", + " print(f\" HR: {hr_val:.2f} BPM\" if hr_val is not None else \" HR: N/A\")\n", + " print(f\" RMSSD: {rmssd_val:.2f} ms SDNN: {sdnn_val:.2f} ms\" if rmssd_val is not None else \" RMSSD: N/A SDNN: N/A\")\n", + " print(f\" Pupil: {r['Average Pupil Dilation']:.2f} Left blink: {r['Left Blink Rate']:.2f} Right blink: {r['Right Blink Rate']:.2f}\")\n", + "\n", + "sessions = [\n", + " (psychometric_01, hr_01, ibi_01, eye_tracking_01),\n", + " (psychometric_02, hr_02, ibi_02, eye_tracking_02),\n", + " (psychometric_03, hr_03, ibi_03, eye_tracking_03),\n", + "]\n", + "\n", + "for i, (psy, hr, ibi, eye) in enumerate(sessions, 1):\n", + " results = process_question_data(psy[psy['Type'] == 'HADS'], hr, ibi, eye, baseline_avg_hr, baseline_metrics)\n", + " display_results(results, i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "727w5p4jsuj", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "# load psychometric data\n", + "psy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "# clinical thresholds\n", + "thresholds = {\n", + " 'HADS': {'normal': 7, 'borderline': 10, 'label': '0-7 normal, 8-10 borderline, 11+ abnormal'},\n", + " 'STAI-S': {'normal': 39, 'borderline': 54, 'label': '20-39 low, 40-54 moderate, 55+ high'},\n", + " 'STAI-T': {'normal': 39, 'borderline': 54, 'label': '20-39 low, 40-54 moderate, 55+ high'},\n", + "}\n", + "\n", + "# total scores\n", + "print(\"=== Psychometric Total Scores ===\\n\")\n", + "for i, psy in enumerate([psy_01, psy_02, psy_03], 1):\n", + " print(f\"--- Session {i:02d} ---\")\n", + " for q_type in psy['Type'].unique():\n", + " subset = psy[psy['Type'] == q_type]\n", + " answers = pd.to_numeric(subset['Answer'], errors='coerce')\n", + " total = answers.sum()\n", + " n_items = len(answers.dropna())\n", + " mean_score = answers.mean()\n", + "\n", + " if q_type in thresholds:\n", + " t = thresholds[q_type]\n", + " if total <= t['normal']:\n", + " level = \"normal\"\n", + " elif total <= t['borderline']:\n", + " level = \"borderline\"\n", + " else:\n", + " level = \"elevated\"\n", + " print(f\" {q_type}: total={total}, mean={mean_score:.2f}, n={n_items} -> {level} ({t['label']})\")\n", + " else:\n", + " print(f\" {q_type}: total={total}, mean={mean_score:.2f}, n={n_items}\")\n", + " print()\n", + "\n", + "# session comparison\n", + "print(\"=== Score Changes Across Sessions ===\\n\")\n", + "for q_type in psy_01['Type'].unique():\n", + " scores = []\n", + " for psy in [psy_01, psy_02, psy_03]:\n", + " scores.append(pd.to_numeric(psy[psy['Type'] == q_type]['Answer'], errors='coerce').sum())\n", + " trend = \"increasing\" if scores[-1] > scores[0] else \"decreasing\" if scores[-1] < scores[0] else \"stable\"\n", + " print(f\"{q_type}: {scores} ({trend})\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7u8jua0ogx7", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "# load data\n", + "psy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "# extract item number\n", + "def get_item_num(test_str):\n", + " part = str(test_str).split('.')[-1]\n", + " return int(part) if part.isdigit() else 0\n", + "\n", + "# --- HADS subscale separation ---\n", + "print(\"=== HADS Subscale Analysis ===\\n\")\n", + "print(\"Anxiety items: 1,3,5,7,9,11,13 | Depression items: 2,4,6,8,10,12,14\")\n", + "print(\"Threshold: 0-7 normal, 8-10 borderline, 11+ clinical\\n\")\n", + "\n", + "for i, psy in enumerate([psy_01, psy_02, psy_03], 1):\n", + " hads = psy[psy['Type'] == 'HADS'].copy()\n", + " hads['item_num'] = hads['Test'].apply(get_item_num)\n", + " \n", + " anxiety_items = hads[hads['item_num'].isin([1, 3, 5, 7, 9, 11, 13])]\n", + " depression_items = hads[hads['item_num'].isin([2, 4, 6, 8, 10, 12, 14])]\n", + " \n", + " anx_total = pd.to_numeric(anxiety_items['Answer'], errors='coerce').sum()\n", + " dep_total = pd.to_numeric(depression_items['Answer'], errors='coerce').sum()\n", + " \n", + " anx_level = \"normal\" if anx_total <= 7 else \"borderline\" if anx_total <= 10 else \"clinical\"\n", + " dep_level = \"normal\" if dep_total <= 7 else \"borderline\" if dep_total <= 10 else \"clinical\"\n", + " \n", + " print(f\"Session {i:02d}: Anxiety={anx_total} ({anx_level}), Depression={dep_total} ({dep_level})\")\n", + "\n", + "# --- session trajectories ---\n", + "print(\"\\n=== Subscale Trajectories ===\\n\")\n", + "subscale_scores = {'HADS-A': [], 'HADS-D': [], 'STAI-S': [], 'STAI-T': []}\n", + "\n", + "for psy in [psy_01, psy_02, psy_03]:\n", + " hads = psy[psy['Type'] == 'HADS'].copy()\n", + " hads['item_num'] = hads['Test'].apply(get_item_num)\n", + " subscale_scores['HADS-A'].append(pd.to_numeric(hads[hads['item_num'].isin([1, 3, 5, 7, 9, 11, 13])]['Answer'], errors='coerce').sum())\n", + " subscale_scores['HADS-D'].append(pd.to_numeric(hads[hads['item_num'].isin([2, 4, 6, 8, 10, 12, 14])]['Answer'], errors='coerce').sum())\n", + " subscale_scores['STAI-S'].append(pd.to_numeric(psy[psy['Type'] == 'STAI-S']['Answer'], errors='coerce').sum())\n", + " subscale_scores['STAI-T'].append(pd.to_numeric(psy[psy['Type'] == 'STAI-T']['Answer'], errors='coerce').sum())\n", + "\n", + "for name, scores in subscale_scores.items():\n", + " trend = \"increasing\" if scores[-1] > scores[0] else \"decreasing\" if scores[-1] < scores[0] else \"stable\"\n", + " print(f\"{name}: {scores} ({trend})\")\n", + "\n", + "# --- radar chart ---\n", + "fig, axes = plt.subplots(1, 3, figsize=(18, 6), subplot_kw=dict(polar=True))\n", + "categories = list(subscale_scores.keys())\n", + "n_cats = len(categories)\n", + "angles = np.linspace(0, 2 * np.pi, n_cats, endpoint=False).tolist()\n", + "angles += angles[:1]\n", + "\n", + "# normalize for radar\n", + "max_vals = {'HADS-A': 21, 'HADS-D': 21, 'STAI-S': 80, 'STAI-T': 80}\n", + "colors = ['tab:blue', 'tab:orange', 'tab:green']\n", + "\n", + "for idx in range(3):\n", + " ax = axes[idx]\n", + " values = [subscale_scores[cat][idx] / max_vals[cat] * 100 for cat in categories]\n", + " values += values[:1]\n", + " \n", + " ax.plot(angles, values, 'o-', color=colors[idx], linewidth=2)\n", + " ax.fill(angles, values, alpha=0.25, color=colors[idx])\n", + " ax.set_thetagrids(np.degrees(angles[:-1]), categories)\n", + " ax.set_ylim(0, 100)\n", + " ax.set_title(f'Session {idx+1:02d}', pad=20)\n", + " ax.set_yticks([25, 50, 75])\n", + " ax.set_yticklabels(['25%', '50%', '75%'], fontsize=7)\n", + "\n", + "plt.suptitle('Psychometric Profile (% of max score)', y=1.05)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()\n", + "\n", + "# --- trajectory line plot ---\n", + "fig, ax = plt.subplots(figsize=(10, 6))\n", + "sessions = ['Session 01', 'Session 02', 'Session 03']\n", + "for name, scores in subscale_scores.items():\n", + " normalized = [s / max_vals[name] * 100 for s in scores]\n", + " ax.plot(sessions, normalized, 'o-', label=name, linewidth=2, markersize=8)\n", + "\n", + "ax.axhline(50, color='red', linestyle='--', alpha=0.5, label='50% threshold')\n", + "ax.set_ylabel('Score (% of maximum)')\n", + "ax.set_title('Psychometric Subscale Trajectories Across Sessions')\n", + "ax.legend()\n", + "ax.grid(axis='y', linestyle='--', alpha=0.5)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/individual/time_analysis.ipynb b/individual/time_analysis.ipynb new file mode 100755 index 0000000..b51b235 --- /dev/null +++ b/individual/time_analysis.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6f8c1392", + "metadata": { + "mms_tag": "purpose_header" + }, + "source": [ + "# Time Analysis\n", + "\n", + "Response-timing / question-duration analysis.\n", + "\n", + "**Reads:** `data/individual/ (one participant, per session)` \n", + "**Shared code:** `import mms` (loaders in `mms.io`, metrics in `mms.hrv` / `mms.stats`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e246c21-211e-4af2-aeec-c0a65651e49b", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "# load data\n", + "psychometric_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psychometric_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psychometric_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "# Convert datetimes\n", + "psychometric_01['Question Start Time'] = pd.to_datetime(psychometric_01['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Start Time'] = pd.to_datetime(psychometric_02['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Start Time'] = pd.to_datetime(psychometric_03['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "psychometric_01['Question Answer Time'] = pd.to_datetime(psychometric_01['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_02['Question Answer Time'] = pd.to_datetime(psychometric_02['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "psychometric_03['Question Answer Time'] = pd.to_datetime(psychometric_03['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + "\n", + "# answer duration\n", + "psychometric_01['answer_duration'] = (psychometric_01['Question Answer Time'] - psychometric_01['Question Start Time']).dt.total_seconds() / 60\n", + "psychometric_02['answer_duration'] = (psychometric_02['Question Answer Time'] - psychometric_02['Question Start Time']).dt.total_seconds() / 60\n", + "psychometric_03['answer_duration'] = (psychometric_03['Question Answer Time'] - psychometric_03['Question Start Time']).dt.total_seconds() / 60\n", + "\n", + "psychometric_01['Session'] = 'Session 01'\n", + "psychometric_02['Session'] = 'Session 02'\n", + "psychometric_03['Session'] = 'Session 03'\n", + "\n", + "all_sessions = pd.concat([psychometric_01, psychometric_02, psychometric_03])\n", + "\n", + "session_stats = all_sessions.groupby('Session')['answer_duration'].agg(['count', 'sum', 'std']).reset_index()\n", + "session_stats = session_stats.rename(columns={'count': 'Count', 'sum': 'Total Timing (minutes)', 'std': 'Standard Deviation (minutes)'})\n", + "\n", + "# display results\n", + "print(\"Total Timing During 3 Sessions\")\n", + "print(session_stats)\n", + "\n", + "# Plot answer duration\n", + "plt.figure(figsize=(12, 6))\n", + "sns.boxplot(data=all_sessions, x='Session', y='answer_duration')\n", + "plt.title('Comparison of Answer Duration Across Sessions')\n", + "plt.ylabel('Answer Duration (minutes)')\n", + "plt.xlabel('Session')\n", + "plt.show()\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "gky3nwyskrj", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "PSY = '../data/individual/psychometric'\n", + "\n", + "# load data\n", + "psy_01 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_01.csv')\n", + "psy_02 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_02.csv')\n", + "psy_03 = pd.read_csv(f'{PSY}/Psychometric_Test_Results_03.csv')\n", + "\n", + "for df in [psy_01, psy_02, psy_03]:\n", + " df['Question Start Time'] = pd.to_datetime(df['Question Start Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " df['Question Answer Time'] = pd.to_datetime(df['Question Answer Time'], utc=True, errors='coerce').dt.tz_convert(None)\n", + " df['duration_s'] = (df['Question Answer Time'] - df['Question Start Time']).dt.total_seconds()\n", + "\n", + "sessions = {\n", + " 'Session 01': psy_01['duration_s'],\n", + " 'Session 02': psy_02['duration_s'],\n", + " 'Session 03': psy_03['duration_s']\n", + "}\n", + "\n", + "# normality tests\n", + "print(\"=== Shapiro-Wilk Tests ===\\n\")\n", + "for name, dur in sessions.items():\n", + " stat, p = stats.shapiro(dur)\n", + " normal = \"normal\" if p > 0.05 else \"non-normal\"\n", + " print(f\"{name}: W={stat:.4f}, p={p:.4f} ({normal})\")\n", + "\n", + "# Kruskal-Wallis\n", + "print(\"\\n=== Kruskal-Wallis Test ===\")\n", + "h, p = stats.kruskal(*sessions.values())\n", + "sig = \"*\" if p < 0.05 else \"ns\"\n", + "print(f\"H={h:.3f}, p={p:.4f} {sig}\")\n", + "\n", + "# by question type\n", + "print(\"\\n=== Duration by Question Type ===\\n\")\n", + "for q_type in psy_01['Type'].unique():\n", + " means = []\n", + " for df in [psy_01, psy_02, psy_03]:\n", + " m = df[df['Type'] == q_type]['duration_s'].mean()\n", + " means.append(m)\n", + " print(f\"{q_type}: {[f'{m:.1f}s' for m in means]}\")\n", + "\n", + "# violin by type\n", + "all_data = pd.concat([\n", + " psy_01.assign(Session='01'),\n", + " psy_02.assign(Session='02'),\n", + " psy_03.assign(Session='03')\n", + "])\n", + "\n", + "fig, ax = plt.subplots(figsize=(14, 6))\n", + "sns.violinplot(data=all_data, x='Type', y='duration_s', hue='Session', ax=ax, inner='box', palette='Set2')\n", + "ax.set_ylabel('Duration (seconds)')\n", + "ax.set_xlabel('Question Type')\n", + "ax.set_title('Answer Duration by Question Type Across Sessions')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "plt.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.21" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/mms/__init__.py b/mms/__init__.py new file mode 100644 index 0000000..3b92e82 --- /dev/null +++ b/mms/__init__.py @@ -0,0 +1,16 @@ +"""Shared analysis code for the Multimodal-Multisensor study. + + import mms + ibi = mms.io.load_ibi(1) + series = mms.hrv.hrv_over_time(ibi) # time-resolved SDNN/RMSSD + res = mms.stats.icc1(sdnn_matrix) # {'icc': ..., 'ci95': (lo, hi), ...} + +Not installed? The package sits at the repo root, so a notebook can reach it with +``sys.path.insert(0, str(pathlib.Path.cwd().parent)); import mms``. +""" +from __future__ import annotations + +from . import fixation, hrv, io, paths, stats + +__all__ = ["paths", "io", "hrv", "stats", "fixation"] +__version__ = "1.0.0" diff --git a/mms/fixation.py b/mms/fixation.py new file mode 100644 index 0000000..ba7c02e --- /dev/null +++ b/mms/fixation.py @@ -0,0 +1,13 @@ +"""Pupil-variability metric from the processed 'sed_fix' eye-tracking streams.""" +from __future__ import annotations + +import pandas as pd + + +def pupil_std(sed: pd.DataFrame, quality_min: float = 0.5) -> float: + """Standard deviation of pupil diameter over good-quality samples.""" + if "pupil" not in sed.columns: + return float("nan") + good = sed[sed["pupilQ"] >= quality_min] if "pupilQ" in sed.columns else sed + p = pd.to_numeric(good["pupil"], errors="coerce").dropna() + return float(p.std(ddof=1)) if len(p) > 1 else float("nan") diff --git a/mms/hrv.py b/mms/hrv.py new file mode 100644 index 0000000..cd28633 --- /dev/null +++ b/mms/hrv.py @@ -0,0 +1,92 @@ +"""Heart-rate-variability metrics: windowed SDNN/RMSSD with NN artifact filtering.""" +from __future__ import annotations + +import numpy as np +import pandas as pd + +# Plausible NN-interval bounds in ms (2000 ≈ 30 bpm, 300 ≈ 200 bpm). +NN_MIN_MS = 300.0 +NN_MAX_MS = 2000.0 + + +def clean_nn(ibi, lo: float = NN_MIN_MS, hi: float = NN_MAX_MS) -> pd.Series: + """Normal-to-normal intervals: numeric, in-range, zeros/artifacts dropped.""" + s = pd.to_numeric(pd.Series(ibi), errors="coerce").dropna() + return s[(s >= lo) & (s <= hi)] + + +def sdnn(ibi, lo: float = NN_MIN_MS, hi: float = NN_MAX_MS) -> float: + """SD of NN intervals (ms); NaN if fewer than 2 valid beats.""" + nn = clean_nn(ibi, lo, hi) + return float(nn.std(ddof=1)) if len(nn) > 1 else float("nan") + + +def rmssd(ibi, lo: float = NN_MIN_MS, hi: float = NN_MAX_MS) -> float: + """RMS of successive NN differences (ms); NaN if fewer than 2 valid beats.""" + nn = clean_nn(ibi, lo, hi) + diff = nn.diff().dropna() + return float(np.sqrt((diff ** 2).mean())) if len(diff) else float("nan") + + +def hrv_rolling( + df: pd.DataFrame, + ibi_col: str = "ibi", + window_beats: int = 30, + lo: float = NN_MIN_MS, + hi: float = NN_MAX_MS, +) -> pd.DataFrame: + """Add per-row rolling ``sdnn``/``rmssd`` over a trailing ``window_beats`` window. + + Keeps the input rows (drop-in for the old broadcast-scalar output) so the + ``reltime, datetime, sdnn, rmssd`` schema is preserved but the values vary. + """ + d = df.copy() + ibi = pd.to_numeric(d[ibi_col], errors="coerce") + nn = ibi.where((ibi >= lo) & (ibi <= hi)) + min_p = max(2, window_beats // 3) + d["sdnn"] = nn.rolling(window_beats, min_periods=min_p).std(ddof=1) + # A filtered-out beat voids the two successive differences that span it, so + # rmssd may rest on slightly fewer beats than sdnn near an artifact — intended. + d["rmssd"] = (nn.diff() ** 2).rolling(window_beats, min_periods=min_p).mean() ** 0.5 + return d + + +def hrv_over_time( + df: pd.DataFrame, + ibi_col: str = "ibi", + time_col: str = "reltime", + window_s: float = 30.0, + step_s: float | None = None, + lo: float = NN_MIN_MS, + hi: float = NN_MAX_MS, +) -> pd.DataFrame: + """Time-resolved SDNN/RMSSD: one row per ``window_s``-second window. + + Returns ``window_start_s, n_beats, sdnn, rmssd``. ``step_s`` defaults to + ``window_s`` (non-overlapping windows). + """ + step_s = step_s or window_s + d = df[[time_col, ibi_col]].copy() + d[time_col] = pd.to_numeric(d[time_col], errors="coerce") + d = d.dropna(subset=[time_col]) + if d.empty: + return pd.DataFrame(columns=["window_start_s", "n_beats", "sdnn", "rmssd"]) + + t = d[time_col].to_numpy(dtype=float) + start, end = float(t.min()), float(t.max()) + rows = [] + w = start + while w < end or not rows: + top = w + window_s + # Include the boundary only on the final window, so the last beat at + # t == end is counted exactly once and never lost. + in_win = (t >= w) & (t <= top if top >= end else t < top) + seg = d[in_win][ibi_col] + rows.append({ + "window_start_s": round(w - start, 3), + "n_beats": int(len(clean_nn(seg, lo, hi))), + "sdnn": sdnn(seg, lo, hi), + "rmssd": rmssd(seg, lo, hi), + }) + w += step_s + return pd.DataFrame(rows) diff --git a/mms/io.py b/mms/io.py new file mode 100644 index 0000000..dee329b --- /dev/null +++ b/mms/io.py @@ -0,0 +1,59 @@ +"""Data loaders — one tested path for reading the study's CSVs.""" +from __future__ import annotations + +from pathlib import Path + +import pandas as pd + +from . import paths + + +_SOURCES = {"case-study": paths.CASE_STUDY, "individual": paths.INDIVIDUAL} + + +def _base(source: str) -> Path: + try: + return _SOURCES[source] + except KeyError: + raise ValueError( + f"unknown source {source!r}; expected one of {sorted(_SOURCES)}" + ) from None + + +def load_ibi(session: int, *, source: str = "case-study") -> pd.DataFrame: + """Inter-beat-interval stream for a session (1-3).""" + return pd.read_csv(_base(source) / "processed" / f"ibi_{session:02d}.csv") + + +def load_hr(session: int, *, high_confidence_only: bool = True, + source: str = "case-study") -> pd.DataFrame: + """Heart-rate stream for a session; drops low-confidence rows by default.""" + df = pd.read_csv(_base(source) / "processed" / f"hr_{session:02d}.csv") + if high_confidence_only and "confidence" in df.columns: + df = df[df["confidence"] == 1.0].copy() + return df + + +def load_fixation(session: int, *, source: str = "case-study") -> pd.DataFrame: + """Processed eye-tracking / fixation ('sed_fix') stream for a session.""" + return pd.read_csv(_base(source) / "processed" / f"sed_fix_{session:02d}.csv") + + +def load_psychometric(session: int, *, source: str = "case-study") -> pd.DataFrame: + """Psychometric test results for a session.""" + return pd.read_csv(_base(source) / "psychometric" + / f"Psychometric_Test_Results_{session:02d}.csv") + + +def load_group_summary(metric: str) -> pd.DataFrame: + """Group summary CSV (row per participant, column per session). + + ``metric`` ∈ {``HRV_SDNN``, ``Pupil_Dilation_STD``, + ``Psychometric_Test_Duration_STD``}. + """ + return pd.read_csv(paths.GROUP_RESULTS / f"{metric}.csv") + + +def parse_datetime(series: pd.Series) -> pd.Series: + """Parse a stream datetime column to tz-naive timestamps.""" + return pd.to_datetime(series, utc=True, errors="coerce").dt.tz_convert(None) diff --git a/mms/paths.py b/mms/paths.py new file mode 100644 index 0000000..665e371 --- /dev/null +++ b/mms/paths.py @@ -0,0 +1,11 @@ +"""Repository paths, resolved from this file so any working directory works.""" +from __future__ import annotations + +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +DATA = ROOT / "data" + +CASE_STUDY = DATA / "case-study" +INDIVIDUAL = DATA / "individual" +GROUP_RESULTS = DATA / "group_results" diff --git a/mms/stats.py b/mms/stats.py new file mode 100644 index 0000000..3ec2847 --- /dev/null +++ b/mms/stats.py @@ -0,0 +1,96 @@ +"""Statistics for a small within-subject design: ICC with CIs, FDR-corrected correlations.""" +from __future__ import annotations + +import numpy as np +import pandas as pd +from scipy import stats + +_NAN_ICC = {"icc": float("nan"), "ci95": (float("nan"), float("nan")), + "F": float("nan")} + + +def icc1(data) -> dict: + """ICC(1,1) one-way random-effects reliability with a 95% CI. + + ``data`` has shape (n_subjects, k_ratings) — here participants × sessions. + Returns ``icc``, ``ci95``, ``n``, ``k``, ``F`` (Shrout & Fleiss 1979); the + values are NaN for degenerate input (fewer than 2 subjects or ratings). + """ + x = np.asarray(data, dtype=float) + if x.ndim != 2 or x.shape[1] < 2: + return {**_NAN_ICC, "n": 0, "k": 0} + x = x[~np.isnan(x).any(axis=1)] + n, k = x.shape + if n < 2: + return {**_NAN_ICC, "n": int(n), "k": int(k)} + + grand = x.mean() + ms_between = k * ((x.mean(axis=1) - grand) ** 2).sum() / (n - 1) + ms_within = ((x - x.mean(axis=1, keepdims=True)) ** 2).sum() / (n * (k - 1)) + denom = ms_between + (k - 1) * ms_within + icc = (ms_between - ms_within) / denom if denom else float("nan") + + # CI is undefined without within-subject variance (perfect agreement). + if ms_within == 0: + return {"icc": float(icc), "ci95": (float("nan"), float("nan")), + "n": int(n), "k": int(k), "F": float("inf")} + + f = ms_between / ms_within + f_lo = f / stats.f.ppf(0.975, n - 1, n * (k - 1)) + f_hi = f * stats.f.ppf(0.975, n * (k - 1), n - 1) + lower = (f_lo - 1) / (f_lo + (k - 1)) + upper = (f_hi - 1) / (f_hi + (k - 1)) + return {"icc": float(icc), "ci95": (float(lower), float(upper)), + "n": int(n), "k": int(k), "F": float(f)} + + +def benjamini_hochberg(pvals) -> np.ndarray: + """Benjamini-Hochberg FDR-adjusted p-values, in the input order. + + NaN inputs — tests that never validly ran (e.g. a constant column) — are + excluded from the comparison count ``m`` and returned as NaN rather than + collapsing the rest of the vector. + """ + p = np.asarray(pvals, dtype=float) + out = np.full(p.shape, np.nan) + valid = ~np.isnan(p) + pv = p[valid] + m = pv.size + if m: + order = np.argsort(pv) + adj = pv[order] * m / np.arange(1, m + 1) + adj = np.minimum.accumulate(adj[::-1])[::-1] + tmp = np.empty(m) + tmp[order] = np.clip(adj, 0, 1) + out[valid] = tmp + return out + + +def corr_matrix_fdr(df: pd.DataFrame) -> dict: + """Pearson correlation matrix with raw and FDR-adjusted p-values. + + Returns ``{'r', 'p_raw', 'p_fdr', 'n_tests'}``. Judge significance across the + whole matrix on ``p_fdr``, not ``p_raw``. + """ + cols = list(df.columns) + n = len(cols) + r = np.eye(n) + p_raw = np.ones((n, n)) + pairs = [] + for i in range(n): + for j in range(i + 1, n): + a, b = df[cols[i]], df[cols[j]] + mask = a.notna() & b.notna() + rr, pp = (stats.pearsonr(a[mask], b[mask]) if mask.sum() >= 3 + else (np.nan, 1.0)) + r[i, j] = r[j, i] = rr + p_raw[i, j] = p_raw[j, i] = pp + pairs.append((i, j, pp)) + + p_fdr = np.ones((n, n)) + for (i, j, _), pa in zip(pairs, benjamini_hochberg([p for *_, p in pairs])): + p_fdr[i, j] = p_fdr[j, i] = pa + + frame = lambda m: pd.DataFrame(m, index=cols, columns=cols) + return {"r": frame(r), "p_raw": frame(p_raw), "p_fdr": frame(p_fdr), + "n_tests": len(pairs)} diff --git a/pipeline/build_group_summaries.py b/pipeline/build_group_summaries.py new file mode 100644 index 0000000..713e7d5 --- /dev/null +++ b/pipeline/build_group_summaries.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Regenerate group summaries from committed per-participant data. + +The case-study participant maps to group row **P02**; the original recipe +reproduces its HRV and pupil rows exactly (~1e-13) and its response-duration row +to ~2e-5 (see the MANIFEST reconciliation), and an artifact-filtered recipe is +also emitted. The other 9 participants' raw streams were not released, so their +rows are not regenerable and are never fabricated. Writes to +``data/group_results/reconstructed/`` only — committed data is untouched. +Run: ``python pipeline/build_group_summaries.py``. +""" +from __future__ import annotations + +import json +import sys +from pathlib import Path + +import pandas as pd + +# Make the repo-root `mms` package importable when run as a plain script +# (`python pipeline/build_group_summaries.py`) without an editable install. +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) +import mms # noqa: E402 + +OUT = mms.paths.GROUP_RESULTS / "reconstructed" +SESSIONS = (1, 2, 3) +CASE_STUDY_PARTICIPANT = "P02" # verified: case-study IBI/pupil/duration == committed P02 row + + +def original_recipe() -> dict[str, list[float]]: + """The recipe that reproduces the committed summaries (no artifact filtering).""" + sdnn, pupil, dur = [], [], [] + for s in SESSIONS: + ibi = mms.io.load_ibi(s) + sdnn.append(float(pd.to_numeric(ibi["ibi"], errors="coerce").std(ddof=1))) + sed = mms.io.load_fixation(s) + pupil.append(float(pd.to_numeric(sed["pupil"], errors="coerce").std(ddof=1))) + psy = mms.io.load_psychometric(s) + dur.append(float(pd.to_numeric(psy["Time(s)"], errors="coerce").std(ddof=1))) + return {"HRV_SDNN": sdnn, "Pupil_Dilation_STD": pupil, + "Psychometric_Test_Duration_STD": dur} + + +def improved_recipe() -> dict[str, list[float]]: + """Physiologically defensible recipe: NN-filtered HRV, quality-gated pupil.""" + sdnn, pupil, dur = [], [], [] + for s in SESSIONS: + sdnn.append(mms.hrv.sdnn(mms.io.load_ibi(s)["ibi"])) + pupil.append(mms.fixation.pupil_std(mms.io.load_fixation(s))) + psy = mms.io.load_psychometric(s) + dur.append(float(pd.to_numeric(psy["Time(s)"], errors="coerce").std(ddof=1))) + return {"HRV_SDNN": sdnn, "Pupil_Dilation_STD": pupil, + "Psychometric_Test_Duration_STD": dur} + + +def main() -> int: + OUT.mkdir(parents=True, exist_ok=True) + orig = original_recipe() + improved = improved_recipe() + cols = ["Session 01", "Session 02", "Session 03"] + + reconciliation = {} + for metric, values in orig.items(): + committed = mms.io.load_group_summary(metric) + committed_row = committed.loc[ + committed["Participant"] == CASE_STUDY_PARTICIPANT, cols + ].to_numpy(float).ravel() + assert committed_row.size == len(values), ( + f"expected {len(values)} committed values for {CASE_STUDY_PARTICIPANT} " + f"in {metric}, got {committed_row.size} (row missing or duplicated)" + ) + max_abs_err = max(abs(a - b) for a, b in zip(values, committed_row)) + reconciliation[metric] = { + "committed_P02": [round(x, 6) for x in committed_row], + "regenerated_original_recipe": [round(x, 6) for x in values], + "regenerated_improved_recipe": [round(x, 6) for x in improved[metric]], + "max_abs_error_vs_committed": max_abs_err, + "exact_match": bool(max_abs_err < 1e-6), + } + + # write reconstructed rows (original + improved) for the one regenerable participant + pd.DataFrame( + [["P02 (original recipe)"] + values, + ["P02 (improved recipe)"] + improved[metric]], + columns=["Participant"] + cols, + ).to_csv(OUT / f"{metric}_P02_reconstructed.csv", index=False) + + # flag the known integrity issue in the committed data (do not "fix" it — we + # have no source of truth for it) + hrv = mms.io.load_group_summary("HRV_SDNN") + dup_flags = [] + for _, row in hrv.iterrows(): + if abs(row["Session 02"] - row["Session 03"]) < 1e-9: + dup_flags.append({"participant": row["Participant"], + "issue": "Session 02 == Session 03 (suspected copy artifact)", + "value": float(row["Session 02"])}) + + manifest = { + "regenerable_from_committed_data": [CASE_STUDY_PARTICIPANT], + "summary_only_not_regenerable": [f"P{i:02d}" for i in range(1, 11) + if f"P{i:02d}" != CASE_STUDY_PARTICIPANT], + "reason_others_absent": "Raw per-participant streams for P01 and P03-P10 " + "were not released (privacy; see DATA_ETHICS.md).", + "reconciliation": reconciliation, + "known_integrity_issues": dup_flags, + "note": "Committed summaries were NOT modified by this script.", + } + (OUT / "MANIFEST.json").write_text(json.dumps(manifest, indent=2)) + + print(f"Case-study participant maps to {CASE_STUDY_PARTICIPANT}.") + for metric, rec in reconciliation.items(): + status = "EXACT MATCH" if rec["exact_match"] else f"max err {rec['max_abs_error_vs_committed']:.2e}" + print(f" {metric:32s} regenerated vs committed P02: {status}") + if dup_flags: + print("\nKnown integrity issues flagged (not modified):") + for d in dup_flags: + print(f" {d['participant']}: {d['issue']} (value {d['value']})") + print(f"\nWrote reconstructed rows + MANIFEST.json to {OUT.relative_to(mms.paths.ROOT)}/") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..95b6efc --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,30 @@ +[build-system] +requires = ["setuptools>=64"] +build-backend = "setuptools.build_meta" + +[project] +name = "mms" +version = "1.0.0" +description = "Shared analysis code for the Multimodal-Multisensor longitudinal study" +readme = "README.md" +requires-python = ">=3.11" +license = { text = "MIT" } +authors = [{ name = "Urme Bose" }] +dependencies = [ + "numpy>=1.26,<3", + "pandas>=2.0,<3", + "scipy>=1.11,<2", + "matplotlib>=3.8,<4", + "seaborn>=0.13,<0.14", + "scikit-learn>=1.4,<2", +] + +[project.optional-dependencies] +dev = ["pytest>=7.4", "nbformat>=5.9", "nbmake>=1.5", "ipykernel>=6.25"] +notebooks = ["jupyterlab>=4"] + +[tool.setuptools] +packages = ["mms"] + +[tool.pytest.ini_options] +testpaths = ["tests"] diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index df29c0c..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Test / CI tooling for the data + notebook smoke tests -pytest>=8.4.2 -nbformat>=5.10.4 -nbmake>=1.5.5 -ipykernel>=6.31.0 -pandas>=2.3.3 diff --git a/requirements.lock b/requirements.lock new file mode 100644 index 0000000..af7b2b9 --- /dev/null +++ b/requirements.lock @@ -0,0 +1,1798 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile pyproject.toml --all-extras --generate-hashes --python-version 3.11 --python-platform x86_64-unknown-linux-gnu -o requirements.lock +anyio==4.14.1 \ + --hash=sha256:4e5533c5b8ff0a24f5d7a176cbe6877129cd183893f66b537f8f227d10527d72 \ + --hash=sha256:8d648a3544c1a700e3ff78615cd679e4c5c3f149904287e73687b2596963629e + # via + # httpx + # jupyter-server +argon2-cffi==25.1.0 \ + --hash=sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1 \ + --hash=sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741 + # via jupyter-server +argon2-cffi-bindings==25.1.0 \ + --hash=sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99 \ + --hash=sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6 \ + --hash=sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d \ + --hash=sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44 \ + --hash=sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a \ + --hash=sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f \ + --hash=sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2 \ + --hash=sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690 \ + --hash=sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584 \ + --hash=sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e \ + --hash=sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0 \ + --hash=sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f \ + --hash=sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623 \ + --hash=sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b \ + --hash=sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44 \ + --hash=sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98 \ + --hash=sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500 \ + --hash=sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94 \ + --hash=sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6 \ + --hash=sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d \ + --hash=sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85 \ + --hash=sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92 \ + --hash=sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d \ + --hash=sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a \ + --hash=sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520 \ + --hash=sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb + # via argon2-cffi +arrow==1.4.0 \ + --hash=sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 \ + --hash=sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7 + # via isoduration +asttokens==3.0.1 \ + --hash=sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a \ + --hash=sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7 + # via stack-data +async-lru==2.3.0 \ + --hash=sha256:89bdb258a0140d7313cf8f4031d816a042202faa61d0ab310a0a538baa1c24b6 \ + --hash=sha256:eea27b01841909316f2cc739807acea1c623df2be8c5cfad7583286397bb8315 + # via jupyterlab +attrs==26.1.0 \ + --hash=sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 \ + --hash=sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32 + # via + # jsonschema + # referencing +babel==2.18.0 \ + --hash=sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d \ + --hash=sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35 + # via jupyterlab-server +beautifulsoup4==4.15.0 \ + --hash=sha256:288e3ca7d54b06f2ac191970bc275c1939cb46d450b255bf6718b04aa37ab4f7 \ + --hash=sha256:d6f88de62e1d4e38ecb1077eb9724cd0eff29d2a08ca16a401e9b9e93f117cf9 + # via nbconvert +bleach==6.4.0 \ + --hash=sha256:4202482733d85cedd04e59fcb2f89f4e4c7c385a78d3c3c23c30446843a37452 \ + --hash=sha256:4b6b6a54fff2e69a3dde9d21cc6301220bee3c3cb792187d11403fd795031081 + # via nbconvert +certifi==2026.6.17 \ + --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \ + --hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db + # via + # httpcore + # httpx + # requests +cffi==2.0.0 \ + --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ + --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \ + --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \ + --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \ + --hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \ + --hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \ + --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \ + --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \ + --hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \ + --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \ + --hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \ + --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \ + --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \ + --hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \ + --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \ + --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \ + --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \ + --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \ + --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \ + --hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \ + --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \ + --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \ + --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \ + --hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \ + --hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \ + --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \ + --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \ + --hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \ + --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \ + --hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \ + --hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \ + --hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \ + --hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \ + --hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \ + --hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \ + --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \ + --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \ + --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \ + --hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \ + --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \ + --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \ + --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \ + --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \ + --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \ + --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \ + --hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \ + --hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \ + --hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \ + --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \ + --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \ + --hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \ + --hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \ + --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \ + --hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \ + --hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \ + --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \ + --hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \ + --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \ + --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \ + --hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \ + --hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \ + --hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \ + --hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \ + --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \ + --hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \ + --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \ + --hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \ + --hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \ + --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \ + --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \ + --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \ + --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \ + --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \ + --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \ + --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \ + --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \ + --hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \ + --hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \ + --hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \ + --hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \ + --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \ + --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \ + --hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \ + --hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf + # via argon2-cffi-bindings +charset-normalizer==3.4.7 \ + --hash=sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc \ + --hash=sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c \ + --hash=sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67 \ + --hash=sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4 \ + --hash=sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0 \ + --hash=sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c \ + --hash=sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5 \ + --hash=sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444 \ + --hash=sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153 \ + --hash=sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9 \ + --hash=sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01 \ + --hash=sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217 \ + --hash=sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b \ + --hash=sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c \ + --hash=sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a \ + --hash=sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83 \ + --hash=sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5 \ + --hash=sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7 \ + --hash=sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb \ + --hash=sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c \ + --hash=sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1 \ + --hash=sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42 \ + --hash=sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab \ + --hash=sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df \ + --hash=sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e \ + --hash=sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207 \ + --hash=sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18 \ + --hash=sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734 \ + --hash=sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38 \ + --hash=sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110 \ + --hash=sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18 \ + --hash=sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44 \ + --hash=sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d \ + --hash=sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48 \ + --hash=sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e \ + --hash=sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5 \ + --hash=sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d \ + --hash=sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53 \ + --hash=sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790 \ + --hash=sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c \ + --hash=sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b \ + --hash=sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116 \ + --hash=sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d \ + --hash=sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10 \ + --hash=sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6 \ + --hash=sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2 \ + --hash=sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776 \ + --hash=sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a \ + --hash=sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265 \ + --hash=sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008 \ + --hash=sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943 \ + --hash=sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374 \ + --hash=sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246 \ + --hash=sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e \ + --hash=sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5 \ + --hash=sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616 \ + --hash=sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15 \ + --hash=sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41 \ + --hash=sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960 \ + --hash=sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752 \ + --hash=sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e \ + --hash=sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72 \ + --hash=sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7 \ + --hash=sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8 \ + --hash=sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b \ + --hash=sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4 \ + --hash=sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545 \ + --hash=sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706 \ + --hash=sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366 \ + --hash=sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb \ + --hash=sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a \ + --hash=sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e \ + --hash=sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00 \ + --hash=sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f \ + --hash=sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a \ + --hash=sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1 \ + --hash=sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66 \ + --hash=sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356 \ + --hash=sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319 \ + --hash=sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4 \ + --hash=sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad \ + --hash=sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d \ + --hash=sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5 \ + --hash=sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7 \ + --hash=sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0 \ + --hash=sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686 \ + --hash=sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34 \ + --hash=sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49 \ + --hash=sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c \ + --hash=sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1 \ + --hash=sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e \ + --hash=sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60 \ + --hash=sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0 \ + --hash=sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274 \ + --hash=sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d \ + --hash=sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 \ + --hash=sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae \ + --hash=sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f \ + --hash=sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d \ + --hash=sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe \ + --hash=sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3 \ + --hash=sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393 \ + --hash=sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1 \ + --hash=sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af \ + --hash=sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44 \ + --hash=sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00 \ + --hash=sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c \ + --hash=sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3 \ + --hash=sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7 \ + --hash=sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd \ + --hash=sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e \ + --hash=sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b \ + --hash=sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8 \ + --hash=sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259 \ + --hash=sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859 \ + --hash=sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46 \ + --hash=sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30 \ + --hash=sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b \ + --hash=sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46 \ + --hash=sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24 \ + --hash=sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a \ + --hash=sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24 \ + --hash=sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc \ + --hash=sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215 \ + --hash=sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063 \ + --hash=sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832 \ + --hash=sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6 \ + --hash=sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79 \ + --hash=sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464 + # via requests +comm==0.2.3 \ + --hash=sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971 \ + --hash=sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417 + # via ipykernel +contourpy==1.3.3 \ + --hash=sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69 \ + --hash=sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc \ + --hash=sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880 \ + --hash=sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a \ + --hash=sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8 \ + --hash=sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc \ + --hash=sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470 \ + --hash=sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5 \ + --hash=sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263 \ + --hash=sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b \ + --hash=sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5 \ + --hash=sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381 \ + --hash=sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3 \ + --hash=sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4 \ + --hash=sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e \ + --hash=sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f \ + --hash=sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772 \ + --hash=sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286 \ + --hash=sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42 \ + --hash=sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301 \ + --hash=sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77 \ + --hash=sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7 \ + --hash=sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411 \ + --hash=sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1 \ + --hash=sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9 \ + --hash=sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a \ + --hash=sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b \ + --hash=sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db \ + --hash=sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6 \ + --hash=sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620 \ + --hash=sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989 \ + --hash=sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea \ + --hash=sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67 \ + --hash=sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5 \ + --hash=sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d \ + --hash=sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36 \ + --hash=sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99 \ + --hash=sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1 \ + --hash=sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e \ + --hash=sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b \ + --hash=sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8 \ + --hash=sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d \ + --hash=sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7 \ + --hash=sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7 \ + --hash=sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339 \ + --hash=sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1 \ + --hash=sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659 \ + --hash=sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4 \ + --hash=sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f \ + --hash=sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20 \ + --hash=sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36 \ + --hash=sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb \ + --hash=sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d \ + --hash=sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8 \ + --hash=sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0 \ + --hash=sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b \ + --hash=sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7 \ + --hash=sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe \ + --hash=sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77 \ + --hash=sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497 \ + --hash=sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd \ + --hash=sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1 \ + --hash=sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216 \ + --hash=sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13 \ + --hash=sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae \ + --hash=sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae \ + --hash=sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77 \ + --hash=sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3 \ + --hash=sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f \ + --hash=sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff \ + --hash=sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9 \ + --hash=sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a + # via matplotlib +cycler==0.12.1 \ + --hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \ + --hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c + # via matplotlib +debugpy==1.8.21 \ + --hash=sha256:0042da0ecd0a8b50dc4a54395ecd870d258d73fa18776f50c91fdcabdcad2675 \ + --hash=sha256:0fddfdc130ac6d8bfc0415b0409822fa901c8f310e5c945ac5653a0352532344 \ + --hash=sha256:13678151fc401e2d68c9880b91e28714f797d40422994572b24560ef80910a88 \ + --hash=sha256:15d4963bd5ffa48f0da0947fd06757fa7621945048a14ad7705431566d3c0e7c \ + --hash=sha256:2c2ae706dec41d99a9ca1f7ebc987a83e65578363be6f6b3ac9067504917fae1 \ + --hash=sha256:3d6922439bf33fd38a3e2c447869ebc7b97da5cd3d329ff1ef9bc06c4903437e \ + --hash=sha256:4743373c1cac7f9e74a1b9915bf1dbe0e900eca657ffb170ae07ac8363205ae9 \ + --hash=sha256:4e70cc8b5079f885cb43910924ee0aab73b8b6b2a14eff23afdd9895d86e79eb \ + --hash=sha256:4e7c2d784d78ad4b71a5f8cd7b59c167719ec8a7a0211dbb3eb1bfeda78bc4e2 \ + --hash=sha256:72b5d676c4cbfac3bac5bb01c138a4656e843f93f03ce2a5f4e394ad49fbee73 \ + --hash=sha256:84c564d8cc701d41843b29a92814c1f1bef6798724ca9d675c284ad9f6a547d7 \ + --hash=sha256:8eeab7b5462f683452c57c0126aaa5ec4e974ddb705f39ba87dff8818c8e08f9 \ + --hash=sha256:9bb2a685287a2ac9b181cde89edcec64845cb51de7faaa75badb9a698bc24782 \ + --hash=sha256:9f5171176a0084b95d2ebe55a4d1f7b2a75b74c5dbec577ebd3a85c740551c36 \ + --hash=sha256:9f96713896f39c3dff0ee841f47320c3f2983d33c341e009361bb0ebc79adc4e \ + --hash=sha256:a3c53278e84c94e11bd87c53970ec391d1a67396c8b22609fcac576520e611a6 \ + --hash=sha256:a7fe47fd23da57b9e0bec3f4a8ee65a2dc55782455ed7f2141d75ab5d2eaeef5 \ + --hash=sha256:aa648733047443eb1d07682c4ef287d36a54507b643ffdf38b09a3ef002c72a0 \ + --hash=sha256:aa9d941d6dfe3d0407e4b3ca0b9ec466030e260fbf1174094f68785680f66db6 \ + --hash=sha256:b1e37d333663c8851516a47364ef473da127f9caebe4417e6df6f5825a7e9a92 \ + --hash=sha256:bd7ba9dd3daa7c2f942c6ca8d4695a16bf9ac16b63615261c7982bc74f7ed20c \ + --hash=sha256:c193d474f0a211191f2b4449d2d06157c689013035bd952f3b617e0ef422b176 \ + --hash=sha256:da456226c7b4c69e35dbe35dcee6623d912000a77816db7856a41af1c72a0264 \ + --hash=sha256:e935f9dc0501be523c8a8e1853c39432e1354e9ece717ae5998fd2371c4542c3 \ + --hash=sha256:ecbd158386c31ffe71d46f72d44d56e66331ab9b16cad649156d514368f23ab2 \ + --hash=sha256:f15c10084f9861b5e8414a48f18f8e4aadf51a98a59e72c16aa28281ca994672 \ + --hash=sha256:f68b891688e61bdc08b8d364d919ff0051e0b94657b39dcd027bc3173edb7cdc \ + --hash=sha256:f843a8b08c2edeaf9b1582eed4f25441af21a297c22ff16bf76a662557aa9c9e \ + --hash=sha256:fe0744a12353406de0ae8ccff0d0a4a666f00801a3db8fd04e7a5f761cd520e8 \ + --hash=sha256:ffd932c6796afadab6993ec96745918a8cb2444dbd392074f769db5ea40ab440 + # via ipykernel +decorator==5.3.1 \ + --hash=sha256:4cbcdd55a6efadb9dbea26b858f4fb3264567b52d69ca0d25b721b553f60ea82 \ + --hash=sha256:f47fe6fdbd2edd623ecfe36875d37aba411624e2670dd395dddae1358689bb3c + # via ipython +defusedxml==0.7.1 \ + --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ + --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 + # via nbconvert +executing==2.2.1 \ + --hash=sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4 \ + --hash=sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017 + # via stack-data +fastjsonschema==2.21.2 \ + --hash=sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463 \ + --hash=sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de + # via nbformat +fonttools==4.63.0 \ + --hash=sha256:032038247a96c1690f9f31e377c389383c902531b085aa4e4dabd6f57f870e69 \ + --hash=sha256:063e08bd17bd5a90127a14123de0d6a952dbc847695fd98b63c043d58057f90c \ + --hash=sha256:0c18358a155d75034911c5ee397a5b44cd19dd325dbb8b35fb60bf421d6a72ac \ + --hash=sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096 \ + --hash=sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d \ + --hash=sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68 \ + --hash=sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616 \ + --hash=sha256:27fdc65af8da6f88b9c6121c47a464cbe359fcfff7ff6fc2d37a1f395d755b78 \ + --hash=sha256:2b8ae05d9eacf6081414d759c0a352769ac28ce31280d6bb8e77b03f9e3c449f \ + --hash=sha256:2c14b4fd138c4bafcca294765c547914e1aa431ae1ca94ab99d8db08c958bd3b \ + --hash=sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b \ + --hash=sha256:37dd23e621e3b0aef1baa70a303b80aaf38449632cfc8fd2a55fb285bbccfc02 \ + --hash=sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d \ + --hash=sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f \ + --hash=sha256:58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8 \ + --hash=sha256:59ac449f8cca9b4ffa08d2e7bbadad87ce710d69d1eda5c3c1ce579baa987272 \ + --hash=sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49 \ + --hash=sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419 \ + --hash=sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001 \ + --hash=sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03 \ + --hash=sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196 \ + --hash=sha256:79cdc9f567aec74a72918fd060283911406750cbc9fd28c1316023deb6ce31a9 \ + --hash=sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e \ + --hash=sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5 \ + --hash=sha256:7dd683fef0663e9f0f45cf541d788d24caa3ec9db50796b588e1757d8b3bc007 \ + --hash=sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380 \ + --hash=sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8 \ + --hash=sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27 \ + --hash=sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40 \ + --hash=sha256:a8b33a82979e0a6a34ff435cc81317be1f95ec1ebb7a3a2d1c8a6a54f02ae44e \ + --hash=sha256:a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0 \ + --hash=sha256:af2fd1664d00a397d75f806985ddb36282091c2131a73a6485c23b4a34722263 \ + --hash=sha256:afefc1ed0a59785a7fb06ea7e1678e849c193e1e387db783579bc7b3056fcfcb \ + --hash=sha256:b1cd75a03ad8cb5bc40c90bfde68c0c47de423aa19e5c0f362b43520645eea94 \ + --hash=sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b \ + --hash=sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6 \ + --hash=sha256:c0425b277a59cff3d80ca42162a8de360f318438a2ac83570842a678d826d579 \ + --hash=sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4 \ + --hash=sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59 \ + --hash=sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0 \ + --hash=sha256:cb014d58140a38135f16064c74c652ed57aa0b75cbf8bb59cac821f7edb5334e \ + --hash=sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be \ + --hash=sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd \ + --hash=sha256:d76ac49f929aecaf82d83250b8347e099d7aecba0f4726c1d9b6df3b8bb5fe18 \ + --hash=sha256:d7e5c9973aa04c95650c96e5f5ad865fbf42d62079163ecfab1e01cbc2504c22 \ + --hash=sha256:dcf076a4474fe0d7367e5bbf5b052c7284fa1feca729c04176ce513521afd8a0 \ + --hash=sha256:e3297a6a4059b4acc3a1e9a8b04741f240a80044eef08ebd32e8b5bcdddce75b \ + --hash=sha256:ee08ebfa58f6e1aeff5697ab9582105bb620008c1caafb681e4c557e7483027b \ + --hash=sha256:ef3048ef05dbb552b89817713d9cac912e00d0fde4a3105c00d29e52e10c89af \ + --hash=sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745 + # via matplotlib +fqdn==1.5.1 \ + --hash=sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f \ + --hash=sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014 + # via jsonschema +h11==0.16.0 \ + --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ + --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 + # via httpcore +httpcore==1.0.9 \ + --hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \ + --hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8 + # via httpx +httpx==0.28.1 \ + --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \ + --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad + # via jupyterlab +idna==3.18 \ + --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ + --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 + # via + # anyio + # httpx + # jsonschema + # requests +iniconfig==2.3.0 \ + --hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \ + --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 + # via pytest +ipykernel==7.3.0 \ + --hash=sha256:897eb64da762549ef610698fca5e9675195ec6ac8ec7f19d81ce1ca20c876057 \ + --hash=sha256:9acaaaf97d16355166e4085afe9d225bfbdf2b7ef520f9df3be8f2b248275e09 + # via + # mms (pyproject.toml) + # jupyterlab + # nbmake +ipython==9.15.0 \ + --hash=sha256:515ad9c3cdf0c932a5a9f6245419e8aba706b7bd03c3e1d3a1c83d9351d6aa6e \ + --hash=sha256:da2819ce2aa83135257df830660b1176d986c3d2876db24df01974fa955b2756 + # via ipykernel +ipython-pygments-lexers==1.1.1 \ + --hash=sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81 \ + --hash=sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c + # via ipython +isoduration==20.11.0 \ + --hash=sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9 \ + --hash=sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042 + # via jsonschema +jedi==0.20.0 \ + --hash=sha256:7bdd9c2634f56713299976f4cbd59cb3fa92165cc5e05ea811fb253480728b67 \ + --hash=sha256:c3f4ccbd276696f4b19c54618d4fb18f9fc24b0aef02acf704b23f487daa1011 + # via ipython +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via + # jupyter-server + # jupyterlab + # jupyterlab-server + # nbconvert +joblib==1.5.3 \ + --hash=sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713 \ + --hash=sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3 + # via scikit-learn +json5==0.15.0 \ + --hash=sha256:56636a30c0e8a4665fe2179c0212f32eae3796dea89ea6f649b9436ecdb39618 \ + --hash=sha256:7424d1f1eb1d56da6e3d70643f53619862b4ce81440bdb8ecfd6f875e5ba4a71 + # via jupyterlab-server +jsonpointer==3.1.1 \ + --hash=sha256:0b801c7db33a904024f6004d526dcc53bbb8a4a0f4e32bfd10beadf60adf1900 \ + --hash=sha256:8ff8b95779d071ba472cf5bc913028df06031797532f08a7d5b602d8b2a488ca + # via jsonschema +jsonschema==4.26.0 \ + --hash=sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326 \ + --hash=sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce + # via + # jupyter-events + # jupyterlab-server + # nbformat +jsonschema-specifications==2025.9.1 \ + --hash=sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe \ + --hash=sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d + # via jsonschema +jupyter-builder==1.0.2 \ + --hash=sha256:6155d78a5325010532a6419ffcba89eac643fd1aa56ea83115e661924d6f6aab \ + --hash=sha256:b024f65d36e1d530542db597b00dd513261aa59842e0d0fbbb1015a9f1935e9c + # via jupyterlab +jupyter-client==8.9.1 \ + --hash=sha256:0b7a295bc46e8751e9adae84781f726c851c1d911bd793edc4a3bde942e3da81 \ + --hash=sha256:a58f730dd9e728ba16ba1d62ebccf7ffe1ebbdbce4e95cfae941b7321ae1f4fa + # via + # ipykernel + # jupyter-server + # nbclient +jupyter-core==5.9.1 \ + --hash=sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508 \ + --hash=sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407 + # via + # ipykernel + # jupyter-builder + # jupyter-client + # jupyter-server + # jupyterlab + # nbclient + # nbconvert + # nbformat +jupyter-events==0.12.1 \ + --hash=sha256:c366585253f537a627da52fa7ca7410c5b5301fe893f511e7b077c2d93ec8bcf \ + --hash=sha256:faff25f77218335752f35f23c5fe6e4a392a7bd99a5939ccb9b8fbf594636cf3 + # via jupyter-server +jupyter-lsp==2.3.1 \ + --hash=sha256:71b954d834e85ff3096400554f2eefaf7fe37053036f9a782b0f7c5e42dadb81 \ + --hash=sha256:fdf8a4aa7d85813976d6e29e95e6a2c8f752701f926f2715305249a3829805a6 + # via jupyterlab +jupyter-server==2.20.0 \ + --hash=sha256:b5778ba337d8015a3dc2b80803ecdd5ac18d3797fddf61a50ea5fb472b4ebe14 \ + --hash=sha256:c3b67c93c471e947c18b5026f04f21614218adb706df8f48227d3ee8e0a7cdcc + # via + # jupyter-lsp + # jupyterlab + # jupyterlab-server + # notebook-shim +jupyter-server-terminals==0.5.4 \ + --hash=sha256:55be353fc74a80bc7f3b20e6be50a55a61cd525626f578dcb66a5708e2007d14 \ + --hash=sha256:bbda128ed41d0be9020349f9f1f2a4ab9952a73ed5f5ac9f1419794761fb87f5 + # via jupyter-server +jupyterlab==4.6.1 \ + --hash=sha256:75315982ed28427edaa62bb85eadb5105e4043a757643c910efd787fe6ed0837 \ + --hash=sha256:85a58546c831f3dce6cf919468c26874c9065e99c42279fb4abb8e1b552a98bb + # via mms (pyproject.toml) +jupyterlab-pygments==0.3.0 \ + --hash=sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d \ + --hash=sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780 + # via nbconvert +jupyterlab-server==2.28.0 \ + --hash=sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c \ + --hash=sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968 + # via jupyterlab +kiwisolver==1.5.0 \ + --hash=sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9 \ + --hash=sha256:01808c6d15f4c3e8559595d6d1fe6411c68e4a3822b4b9972b44473b24f4e679 \ + --hash=sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0 \ + --hash=sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8 \ + --hash=sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276 \ + --hash=sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96 \ + --hash=sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e \ + --hash=sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac \ + --hash=sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f \ + --hash=sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a \ + --hash=sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15 \ + --hash=sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7 \ + --hash=sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368 \ + --hash=sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02 \ + --hash=sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9 \ + --hash=sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681 \ + --hash=sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57 \ + --hash=sha256:2517e24d7315eb51c10664cdb865195df38ab74456c677df67bb47f12d088a27 \ + --hash=sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4 \ + --hash=sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920 \ + --hash=sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374 \ + --hash=sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3 \ + --hash=sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa \ + --hash=sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23 \ + --hash=sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859 \ + --hash=sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb \ + --hash=sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d \ + --hash=sha256:41024ed50e44ab1a60d3fe0a9d15a4ccc9f5f2b1d814ff283c8d01134d5b81bc \ + --hash=sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581 \ + --hash=sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c \ + --hash=sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099 \ + --hash=sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05 \ + --hash=sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9 \ + --hash=sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd \ + --hash=sha256:50847dca5d197fcbd389c805aa1a1cf32f25d2e7273dc47ab181a517666b68cc \ + --hash=sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796 \ + --hash=sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303 \ + --hash=sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca \ + --hash=sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314 \ + --hash=sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489 \ + --hash=sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57 \ + --hash=sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1 \ + --hash=sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797 \ + --hash=sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021 \ + --hash=sha256:6176c1811d9d5a04fa391c490cc44f451e240697a16977f11c6f722efb9041db \ + --hash=sha256:62f59da443c4f4849f73a51a193b1d9d258dcad0c41bc4d1b8fb2bcc04bfeb22 \ + --hash=sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028 \ + --hash=sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083 \ + --hash=sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65 \ + --hash=sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588 \ + --hash=sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0 \ + --hash=sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a \ + --hash=sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1 \ + --hash=sha256:800ee55980c18545af444d93fdd60c56b580db5cc54867d8cbf8a1dc0829938c \ + --hash=sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac \ + --hash=sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476 \ + --hash=sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53 \ + --hash=sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3 \ + --hash=sha256:8c63c91f95173f9c2a67c7c526b2cea976828a0e7fced9cdcead2802dc10f8a4 \ + --hash=sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615 \ + --hash=sha256:8f9baf6f0a6e7571c45c8863010b45e837c3ee1c2c77fcd6ef423be91b21fedb \ + --hash=sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18 \ + --hash=sha256:9190426b7aa26c5229501fa297b8d0653cfd3f5a36f7990c264e157cbf886b3b \ + --hash=sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1 \ + --hash=sha256:94eff26096eb5395136634622515b234ecb6c9979824c1f5004c6e3c3c85ccd2 \ + --hash=sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c \ + --hash=sha256:ad4ae4ffd1ee9cd11357b4c66b612da9888f4f4daf2f36995eda64bd45370cac \ + --hash=sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d \ + --hash=sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf \ + --hash=sha256:b7d335370ae48a780c6e6a6bbfa97342f563744c39c35562f3f367665f5c1de2 \ + --hash=sha256:b83af57bdddef03c01a9138034c6ff03181a3028d9a1003b301eb1a55e161a3f \ + --hash=sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f \ + --hash=sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4 \ + --hash=sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9 \ + --hash=sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e \ + --hash=sha256:be4a51a55833dc29ab5d7503e7bcb3b3af3402d266018137127450005cdfe737 \ + --hash=sha256:beb7f344487cdcb9e1efe4b7a29681b74d34c08f0043a327a74da852a6749e7b \ + --hash=sha256:bf4679a3d71012a7c2bf360e5cd878fbd5e4fcac0896b56393dec239d81529ed \ + --hash=sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3 \ + --hash=sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7 \ + --hash=sha256:c438f6ca858697c9ab67eb28246c92508af972e114cac34e57a6d4ba17a3ac08 \ + --hash=sha256:c8277104ded0a51e699c8c3aff63ce2c56d4ed5519a5f73e0fd7057f959a2b9e \ + --hash=sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902 \ + --hash=sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd \ + --hash=sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6 \ + --hash=sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310 \ + --hash=sha256:cff8e5383db4989311f99e814feeb90c4723eb4edca425b9d5d9c3fefcdd9537 \ + --hash=sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554 \ + --hash=sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e \ + --hash=sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87 \ + --hash=sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a \ + --hash=sha256:d5cd5189fc2b6a538b75ae45433140c4823463918f7b1617c31e68b085c0022c \ + --hash=sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79 \ + --hash=sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e \ + --hash=sha256:daae526907e262de627d8f70058a0f64acc9e2641c164c99c8f594b34a799a16 \ + --hash=sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1 \ + --hash=sha256:dd952e03bfbb096cfe2dd35cd9e00f269969b67536cb4370994afc20ff2d0875 \ + --hash=sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd \ + --hash=sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0 \ + --hash=sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9 \ + --hash=sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646 \ + --hash=sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657 \ + --hash=sha256:ebae99ed6764f2b5771c522477b311be313e8841d2e0376db2b10922daebbba4 \ + --hash=sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232 \ + --hash=sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819 \ + --hash=sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384 \ + --hash=sha256:f1f9f4121ec58628c96baa3de1a55a4e3a333c5102c8e94b64e23bf7b2083309 \ + --hash=sha256:f42c23db5d1521218a3276bb08666dcb662896a0be7347cba864eca45ff64ede \ + --hash=sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2 \ + --hash=sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203 \ + --hash=sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7 \ + --hash=sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df \ + --hash=sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c \ + --hash=sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167 \ + --hash=sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3 \ + --hash=sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09 \ + --hash=sha256:ff710414307fefa903e0d9bdf300972f892c23477829f49504e59834f4195398 + # via matplotlib +lark==1.3.1 \ + --hash=sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905 \ + --hash=sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12 + # via rfc3987-syntax +markupsafe==3.0.3 \ + --hash=sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f \ + --hash=sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a \ + --hash=sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf \ + --hash=sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19 \ + --hash=sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf \ + --hash=sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c \ + --hash=sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175 \ + --hash=sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219 \ + --hash=sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb \ + --hash=sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6 \ + --hash=sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab \ + --hash=sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26 \ + --hash=sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1 \ + --hash=sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce \ + --hash=sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218 \ + --hash=sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634 \ + --hash=sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695 \ + --hash=sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad \ + --hash=sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73 \ + --hash=sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c \ + --hash=sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe \ + --hash=sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa \ + --hash=sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559 \ + --hash=sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa \ + --hash=sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37 \ + --hash=sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758 \ + --hash=sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f \ + --hash=sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8 \ + --hash=sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d \ + --hash=sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c \ + --hash=sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 \ + --hash=sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a \ + --hash=sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19 \ + --hash=sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9 \ + --hash=sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9 \ + --hash=sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc \ + --hash=sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2 \ + --hash=sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4 \ + --hash=sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354 \ + --hash=sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50 \ + --hash=sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698 \ + --hash=sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9 \ + --hash=sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b \ + --hash=sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc \ + --hash=sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115 \ + --hash=sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e \ + --hash=sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485 \ + --hash=sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f \ + --hash=sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12 \ + --hash=sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025 \ + --hash=sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009 \ + --hash=sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d \ + --hash=sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b \ + --hash=sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a \ + --hash=sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5 \ + --hash=sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f \ + --hash=sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d \ + --hash=sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1 \ + --hash=sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287 \ + --hash=sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6 \ + --hash=sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f \ + --hash=sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581 \ + --hash=sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed \ + --hash=sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b \ + --hash=sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c \ + --hash=sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 \ + --hash=sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8 \ + --hash=sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676 \ + --hash=sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6 \ + --hash=sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e \ + --hash=sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d \ + --hash=sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d \ + --hash=sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01 \ + --hash=sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7 \ + --hash=sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419 \ + --hash=sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795 \ + --hash=sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1 \ + --hash=sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5 \ + --hash=sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d \ + --hash=sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42 \ + --hash=sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe \ + --hash=sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda \ + --hash=sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e \ + --hash=sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737 \ + --hash=sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523 \ + --hash=sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591 \ + --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \ + --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \ + --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50 + # via + # jinja2 + # nbconvert +matplotlib==3.11.0 \ + --hash=sha256:03acfeddf87b0dddb11b081ef7740ad445a3ca8bcb6b8e3011b08f2cf802b75c \ + --hash=sha256:0515d495124be3124340e59f164d901ed4484e2246a5b74cfa483cac3b80bd97 \ + --hash=sha256:06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918 \ + --hash=sha256:126f256df600652d7e4b394cf3164ff75210a00038f287c95a012a6f58d0e83f \ + --hash=sha256:15b0d160079cb10699a0e98b5989c70677b2df7cacdc62af67c30f2facec46d9 \ + --hash=sha256:1644db30e759199443493ac5e5caec24fdb775a8f6123021f85ba47c4133c3cb \ + --hash=sha256:19c16c61dea63b3582918503e6b294193961261d9daa806d4ae2151f1ad05430 \ + --hash=sha256:1c02da0a629dfa9debf52725ea06866b74c1fb70a895bae05e4493d34074f9f2 \ + --hash=sha256:25c2e5455efd8d99f41fb79871a31feb7d301569642e332ec58d72cfe9282bc3 \ + --hash=sha256:2746cd2c113742ff6ce37a864c5ac5fd7aa644568f445e66166e457ac78e40e0 \ + --hash=sha256:2d72ea8b7924f3cb955e61518d21e43b3df1e6c8a793b480a0c1214f185d30ba \ + --hash=sha256:3338e3e3de128cf50d0d2fb92a122815daf9c755bd882a474343c05f8fd7ec79 \ + --hash=sha256:3489c3dc487669b4a980bc3068f87856de7a1564248d3f6c629efb2a58b03f24 \ + --hash=sha256:373db8f91214e8ccaf35ac833cc1dd59dd961e148bbd55dd027141591dde1313 \ + --hash=sha256:3d68266213e73823ac3be90615bab0cf31f88851e114cdb1dd25dacf3b01e1a7 \ + --hash=sha256:41635d7909d19e52e924a521dde6d8f670b0f53ab1d0e8c331fa831554f681d1 \ + --hash=sha256:446307e6b04b57b1f1239e228a1ec2af0d589a1008cebc3dfa3f5441d095cfb6 \ + --hash=sha256:4d7aea652b58e686444079be3376ef546bffa1eee9b9bb9c472b9fcf6cf410d3 \ + --hash=sha256:5106c444d0bf966eee2853548c03772af4ab7199118e086c62fbac8ccb07c055 \ + --hash=sha256:565af866fd63e4bd3f987d580afe27c44c2552a3b3305f4ecbb85133601ea6f3 \ + --hash=sha256:57baa92fdc82948ed716eae6d2579d4d6f40965cd8d2f416755b4a72580a3233 \ + --hash=sha256:630eee0e67d35cce2019a0e670719f4816e3b86aff0fa72729f6c69786fceb45 \ + --hash=sha256:652fb5696271d4c50f196d22a5ff4f8e4444c74f847423570d7dc0aa2bbd0159 \ + --hash=sha256:68c0c7be01b30dcca3638934f7f591df73401235cbdbf0d1ab1c71e7db7f8b57 \ + --hash=sha256:6a98f5476ce784a50ce09998f4ae1e6a9f25043cef8a480c98949902eda74620 \ + --hash=sha256:6ce3b839b34ae1f430b4616893a2945a2999debaa7e94e7e29a2a8bbf286f7b5 \ + --hash=sha256:70a5b3e9a5dab708c0f039709ae7c68d5b4d254e291ef76492cdba230c8bb5e4 \ + --hash=sha256:81ae77077a1e16d37a5b61096ccb07c8d90a99b518fa8256b8f21578932f2f62 \ + --hash=sha256:942b37c5db1899610bd1543ce8e13e4ecff9a4633e7f63bb6aa9205d2644ebd1 \ + --hash=sha256:94f5000f67ca9faa300863ea17f8bce9175cb67b88bec4bc7780502d53dd7c9e \ + --hash=sha256:9dd11fb612ce7bc60b1de5b4fc87ff959d22317b5de42aabf392f66f97af22eb \ + --hash=sha256:a9d8c6e7cd2f0ddf11d8d92e520dd1d9d2abb0cf6ac8831e338666c81e905847 \ + --hash=sha256:aa55d73b3117d4b07f959cd9eb6f69b375d8df3414139c479388e551aa5d999d \ + --hash=sha256:ab3722f04f3ff34c23b5012c5873d2894174e06c3822fcdac3610965a5ac7d06 \ + --hash=sha256:ac6f1ef39f3d0f9e2463303013094992cdbe0f85f43bc54155bc472b2042768e \ + --hash=sha256:be050fcf32f729eda99f7f75a80bf67612ce16ab9ac1c23a387dcaede95cb70e \ + --hash=sha256:be152b7570324dc8d01574cc9474dd2d803237acf528bcbb5b211fa347461a09 \ + --hash=sha256:be5f93a1d21981bfb802ded0d77a0caa92d4342a47d45754fac77e314a506344 \ + --hash=sha256:c08e649a6313e1291e713623b97a38e5bb4aa580b2a100a94a3309bc6b9c8eb3 \ + --hash=sha256:c945824670fb8915b4ac879e5e61f3c58e0913022f70a0de4c082b17372f8771 \ + --hash=sha256:cf662e5ac5707658cb931e19972c4bd99f7b4f8b7bf79d3c821d239fa6b71e64 \ + --hash=sha256:d9695457a467ff86d23f35037a43deb6f1134dd6d3e2ac8ce1e2087cff09ffb9 \ + --hash=sha256:ddef37840695f5eef65f9f070fe2d2f510f584c2156203f9f622a5b0584efffd \ + --hash=sha256:dfabef0230d0697aa0d717385194dd41162e00207a68bf4abf94c2bf4c27dca0 \ + --hash=sha256:e6b3e64dea5062c570f04358e2711859f3531b459f29516274fbad889079e4f3 \ + --hash=sha256:f857524b442f0f36e641868ce2171aafa88cb0bc0644f4e1d8a5df9b32649fef + # via + # mms (pyproject.toml) + # seaborn +matplotlib-inline==0.2.2 \ + --hash=sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6 \ + --hash=sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79 + # via + # ipykernel + # ipython +mistune==3.3.2 \ + --hash=sha256:a678a56387d487db7368ede4647cb2ba1deff22ce61f92343e4ebe0ddfce4f2d \ + --hash=sha256:e12ee4f1e74336e91aa1141e35f913b337c40bdf7c0cc49f21fb853a27e8b62f + # via nbconvert +narwhals==2.23.0 \ + --hash=sha256:13e7ff5b4bb4a2f77b907c2e4d8a76e273dfc1323a3c997440a2f9fd26aed408 \ + --hash=sha256:769e7b9ab102c93d8fa019f6b4cd1a657909b04a20bf6210e5a35aae06814ae9 + # via scikit-learn +nbclient==0.11.0 \ + --hash=sha256:04a134a5b087f2c5887f228aca155db50169b8cd9334dee6942c8e927e56081a \ + --hash=sha256:ef7fa0d59d6e1d41103933d8a445a18d5de860ca6b613b87b8574accdb3c2895 + # via + # nbconvert + # nbmake +nbconvert==7.17.1 \ + --hash=sha256:34d0d0a7e73ce3cbab6c5aae8f4f468797280b01fd8bd2ca746da8569eddd7d2 \ + --hash=sha256:aa85c087b435e7bf1ffd03319f658e285f2b89eccab33bc1ba7025495ab3e7c8 + # via jupyter-server +nbformat==5.10.4 \ + --hash=sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a \ + --hash=sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b + # via + # mms (pyproject.toml) + # jupyter-server + # nbclient + # nbconvert + # nbmake +nbmake==1.5.5 \ + --hash=sha256:239dc868ea13a7c049746e2aba2c229bd0f6cdbc6bfa1d22f4c88638aa4c5f5c \ + --hash=sha256:c6fbe6e48b60cacac14af40b38bf338a3b88f47f085c54ac5b8639ff0babaf4b + # via mms (pyproject.toml) +nest-asyncio2==1.7.2 \ + --hash=sha256:1921d70b92cc4612c374928d081552efb59b83d91b2b789d935c665fa01729a8 \ + --hash=sha256:f5dfa702f3f81f6a03857e9a19e2ba578c0946a4ad417b4c50a24d7ba641fe01 + # via ipykernel +notebook-shim==0.2.4 \ + --hash=sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef \ + --hash=sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb + # via jupyterlab +numpy==2.4.6 \ + --hash=sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1 \ + --hash=sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4 \ + --hash=sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f \ + --hash=sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079 \ + --hash=sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096 \ + --hash=sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47 \ + --hash=sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66 \ + --hash=sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d \ + --hash=sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1 \ + --hash=sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e \ + --hash=sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147 \ + --hash=sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd \ + --hash=sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75 \ + --hash=sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063 \ + --hash=sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73 \ + --hash=sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab \ + --hash=sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4 \ + --hash=sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41 \ + --hash=sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402 \ + --hash=sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698 \ + --hash=sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7 \ + --hash=sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8 \ + --hash=sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b \ + --hash=sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8 \ + --hash=sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0 \ + --hash=sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662 \ + --hash=sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91 \ + --hash=sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0 \ + --hash=sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f \ + --hash=sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3 \ + --hash=sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f \ + --hash=sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67 \ + --hash=sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6 \ + --hash=sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997 \ + --hash=sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b \ + --hash=sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e \ + --hash=sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538 \ + --hash=sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627 \ + --hash=sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93 \ + --hash=sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02 \ + --hash=sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853 \ + --hash=sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c \ + --hash=sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43 \ + --hash=sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd \ + --hash=sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8 \ + --hash=sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089 \ + --hash=sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778 \ + --hash=sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1 \ + --hash=sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb \ + --hash=sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261 \ + --hash=sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb \ + --hash=sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a \ + --hash=sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8 \ + --hash=sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359 \ + --hash=sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5 \ + --hash=sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7 \ + --hash=sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751 \ + --hash=sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8 \ + --hash=sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605 \ + --hash=sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e \ + --hash=sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45 \ + --hash=sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2 \ + --hash=sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895 \ + --hash=sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe \ + --hash=sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb \ + --hash=sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a \ + --hash=sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577 \ + --hash=sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d \ + --hash=sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a \ + --hash=sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda \ + --hash=sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6 \ + --hash=sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20 + # via + # mms (pyproject.toml) + # contourpy + # matplotlib + # pandas + # scikit-learn + # scipy + # seaborn +overrides==7.7.0 \ + --hash=sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a \ + --hash=sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 + # via jupyter-server +packaging==26.2 \ + --hash=sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e \ + --hash=sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661 + # via + # ipykernel + # jupyter-events + # jupyter-server + # jupyterlab + # jupyterlab-server + # matplotlib + # nbconvert + # pytest +pandas==2.3.3 \ + --hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \ + --hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \ + --hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \ + --hash=sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791 \ + --hash=sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73 \ + --hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \ + --hash=sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4 \ + --hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \ + --hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \ + --hash=sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084 \ + --hash=sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c \ + --hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \ + --hash=sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35 \ + --hash=sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250 \ + --hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \ + --hash=sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826 \ + --hash=sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9 \ + --hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \ + --hash=sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1 \ + --hash=sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523 \ + --hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \ + --hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \ + --hash=sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53 \ + --hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \ + --hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \ + --hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \ + --hash=sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff \ + --hash=sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45 \ + --hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \ + --hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \ + --hash=sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b \ + --hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \ + --hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \ + --hash=sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8 \ + --hash=sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98 \ + --hash=sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89 \ + --hash=sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66 \ + --hash=sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b \ + --hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \ + --hash=sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29 \ + --hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \ + --hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \ + --hash=sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2 \ + --hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \ + --hash=sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa \ + --hash=sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151 \ + --hash=sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838 \ + --hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \ + --hash=sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a \ + --hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \ + --hash=sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908 \ + --hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \ + --hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \ + --hash=sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c \ + --hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee + # via + # mms (pyproject.toml) + # seaborn +pandocfilters==1.5.1 \ + --hash=sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e \ + --hash=sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc + # via nbconvert +parso==0.8.7 \ + --hash=sha256:a8926eb2a1b915486941fdbd31e86a4baf88fe8c210f25f2f35ecec5b574ca1c \ + --hash=sha256:eaaac4c9fdd5e9e8852dc778d2d7405897ec510f2a298071453e5e3a07914bb1 + # via jedi +pexpect==4.9.0 \ + --hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \ + --hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f + # via ipython +pillow==12.3.0 \ + --hash=sha256:00808c5e14ef63ac5161091d242999076604ff74b883423a11e5d7bbb38bf756 \ + --hash=sha256:04f01d28a6aaff387bf842a13be313df23ba0597a44f1a976c9feb3c6ff4711a \ + --hash=sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59 \ + --hash=sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45 \ + --hash=sha256:0847a763afefb695bc912d7c131e7e0632d4edc1d8698f58ddabec8e46b8b6d3 \ + --hash=sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df \ + --hash=sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f591e9315a7139 \ + --hash=sha256:10e41f0fbf1eec8cfd234b8fe17a4caac7c9d0db4c204d3c173a8f9f6ef3232b \ + --hash=sha256:1182d52bc2d5e5d7d0949503aa7e36d12f42205dc287e4883f407b1988820d39 \ + --hash=sha256:164b31cd1a0490ab6efae01aa5df49da7061be0af1b30e035b6e9a1bfe34ee6e \ + --hash=sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8 \ + --hash=sha256:186941b6aef820ad110fb01fb06eb925374dc3a21b17e37ec9a53b250c6fe2d1 \ + --hash=sha256:1cca606cd25738df4ed873d5ad46bbdb3d83b5cbca291f6b4ff13a4df6b0bbe8 \ + --hash=sha256:21900ce7ba264168cd50defae43cd75d25c833ad4ad6e73ffc5596d12e25ac89 \ + --hash=sha256:236ff70b9312fb68943c703aa842ca6a758abfa45ac187a5e7c1452e96ef72b5 \ + --hash=sha256:23aceaa007d6172b02c277f0cd359c79492bbb14f7072b4ede9fbcaf20648130 \ + --hash=sha256:23d27a3e0307ec2244cc51e7287b919aa68d097504ebe19df4e76a98a3eea5bd \ + --hash=sha256:24870b09b224f7ae3c39ed07d10e819d06f8720bc551847b1d623832b5b0e28d \ + --hash=sha256:251bf95b67017e27b13d82f5b326234ca62d70f9cf4c2b9032de2358a3b12c7b \ + --hash=sha256:25b9b82bb22e6e2b3cd07b39c68b7b862001226cb3dff7130d1cb914121b39ed \ + --hash=sha256:28ce87c5ab450a9dd970b52e5aca5fe63ed432d18a2eaddd1979a00a1ba24ace \ + --hash=sha256:300557495eb45ebb8aec96c2da9c4be642fbf7cd937278b4013ba894ea8eb0eb \ + --hash=sha256:30f2aa603c41533cc25c05acd0da21636e84a315768feb631c937177db558931 \ + --hash=sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510 \ + --hash=sha256:37d6d0a00072fd2948eb22bce7e1475f34569d90c87c59f7a2ec59541b77f7a6 \ + --hash=sha256:37dc8f7bbb66efe481bb60defacef820c950c24713fb44962ed6aa2a50966de1 \ + --hash=sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce \ + --hash=sha256:3edce1d53195db527e0191f84b71d02022de0540bf43a16ed734ed7537b07385 \ + --hash=sha256:446c34dcc4324b084a53b705127dc15717b22c5e140ae0a3c38349d4efec071e \ + --hash=sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d760584c9c51d7a5f78c \ + --hash=sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7 \ + --hash=sha256:4e8c2a84d977f50b9daed6eeaf3baef67d00d5d74d932288f02cb94518ee3ace \ + --hash=sha256:4f883547d4b7f0495ebe7056b0cc2aea76094e7a4abc8e933540f3271df27d9c \ + --hash=sha256:514435a37670e3e5e08f3945b68718b6ed329bb84367777e16f9f4dfe1e61a0f \ + --hash=sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822f93e64 \ + --hash=sha256:5594fc43d548a7ed94949d139aa1341b270f1863f11cfd37f5a6c8b778a6b67f \ + --hash=sha256:571b9fcb07b97ef3a492028fb3d2dc0993ca23a06138b0315286566d29ef718a \ + --hash=sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827 \ + --hash=sha256:5afb51d599ea772b8365ae807ae557f18bccfe46ab261fd1c2a9ed700fc6eb17 \ + --hash=sha256:6b02afb9b97f65fbca5f31db6a2a3ba21aa93030225f150fa3f249717e938fb4 \ + --hash=sha256:6c0016e7b354317c4e9e525b937ac8596c38d2d232b419529b9cd7a1cd46e39a \ + --hash=sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663dd4701 \ + --hash=sha256:756c768d0c9c2955feb7a56c37ea24aea2e369f8d36a88da270b6a9f19e62b5e \ + --hash=sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91 \ + --hash=sha256:7a743ff716f746fc19a9557f60dab1600d4613255f8a7aeb3cdde4db7eb15a66 \ + --hash=sha256:85f998ea1848bc6757289e739cfbdda3a04adfd58b02fc018ce54d754a5ce468 \ + --hash=sha256:8728f216dcdb6e6d555cf971cb34076139ad74b31fc2c14da4fafc741c5f6217 \ + --hash=sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658 \ + --hash=sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418 \ + --hash=sha256:8e95e1385e4998ae9694eeaa4730ba5457ff61185b3a55e2e7bea0880aef452a \ + --hash=sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c \ + --hash=sha256:9cf95fe4d0f84c82d282745d9bb08ad9f926efa00be4697e767b814ce40d4330 \ + --hash=sha256:9e881fca225083806662a5c43d627d215f258ff43c890f831966c7d7ba9c7402 \ + --hash=sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09 \ + --hash=sha256:a45650e8ce7fafffd731db8550230db6b0d306d181a90b67d3e6bca2f1990930 \ + --hash=sha256:a876864214e136f0eb367788dbd7df045f4806801518e2cfe9e13229cfe06d8f \ + --hash=sha256:ae26d61dfa7a47befdc7572b521024e8745f3d809bd95ca9505a7bba9ef849ec \ + --hash=sha256:af8d94b0db561cf68b88a267c5c44b49e134f525d0dc2cb7ed413a66bc23559a \ + --hash=sha256:b343699e8308bdc51978310e1c959c584e7869cc8c40780058c87da7781a1e94 \ + --hash=sha256:b3c777e849237620b022f7f297dd67705f9f5cf1685f09f02e46f93e92725468 \ + --hash=sha256:b629de27fda84b42cde7edef0d85f13b958b47f6e9bbcbba9b673c562a89bd8b \ + --hash=sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965 \ + --hash=sha256:ba54cfebe86920a559a7c4d6b9050791c20513650a1952ebe3368c7dc70306f8 \ + --hash=sha256:bcb46e2f9feff8d06323983bd83ed00c201fdcab3d74973e7072a889b3979fcd \ + --hash=sha256:bcc33feacfaefce60c12fd500a277533bdc02b10a19f7f6d348763d8140bbba7 \ + --hash=sha256:bf16ba1b4d0b6b7c8e534936632270cf70eb00dbe09005bc345b2677b726855c \ + --hash=sha256:cf1845d02ad822a369a49f2bb9345b1614744267682e7a03527dc3bf6eea1777 \ + --hash=sha256:d69141514cc30b774ceea5e3ed3a6635c8d8a96edf664689b890f4089111fb35 \ + --hash=sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9 \ + --hash=sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f \ + --hash=sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a4e4902f \ + --hash=sha256:e158cb00350dc278f3b91551101aa7d12415a66ebf2c91d8d5ac14e56ddd3ad0 \ + --hash=sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c \ + --hash=sha256:e795b7eb908249c4e43c7c99fac7c2c75dab0c43566e37db472a355f63693d71 \ + --hash=sha256:e7e480451b9fa137494bccd3a7d69adbe8ac65a87d97be61e11f1b1050a5bac3 \ + --hash=sha256:e91206ee562682b51b98ef4b26a6ef48fd84e15fd4c4bc5ec768eb641d206838 \ + --hash=sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8da0ecc9cf \ + --hash=sha256:e9aeb04d6aef139de265b29683e119b638208f88cf73cdd1658aa07221165321 \ + --hash=sha256:ebaea975e03d3141d9d3a507df75c9b3ec90fa9d2ffd07567b3a978d9d790b26 \ + --hash=sha256:f0606c8bf2cdefea14a43530f7657cbbb7ecf1c4222512492ef4a4434a9501ec \ + --hash=sha256:f13c32a3abd6079a66d9526e18dad9b6d280384d49d7c54040cd57b6424041d9 \ + --hash=sha256:f7401aebd7f581d7f83a439d87d474999317ee099218e5ad25d125290990ba65 \ + --hash=sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5 \ + --hash=sha256:fbd139c8447d25dd750ab79ee274cc5e1fe80fc56340ab10b18a195e1b6eca3e \ + --hash=sha256:fdafc9cce40277e0f7a0feabce0ee50dd2fa1800f3b38015e51296b5e814048d \ + --hash=sha256:fe3cca2e4e8a592be0f269a1ca4835c25199d9f3ce815c8491048f785b0a0198 \ + --hash=sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7 + # via matplotlib +platformdirs==4.10.0 \ + --hash=sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7 \ + --hash=sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a + # via jupyter-core +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 + # via pytest +prometheus-client==0.25.0 \ + --hash=sha256:5e373b75c31afb3c86f1a52fa1ad470c9aace18082d39ec0d2f918d11cc9ba28 \ + --hash=sha256:d5aec89e349a6ec230805d0df882f3807f74fd6c1a2fa86864e3c2279059fed1 + # via jupyter-server +prompt-toolkit==3.0.52 \ + --hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \ + --hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 + # via ipython +psutil==7.2.2 \ + --hash=sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372 \ + --hash=sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9 \ + --hash=sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841 \ + --hash=sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63 \ + --hash=sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979 \ + --hash=sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a \ + --hash=sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b \ + --hash=sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9 \ + --hash=sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee \ + --hash=sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312 \ + --hash=sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b \ + --hash=sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9 \ + --hash=sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e \ + --hash=sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc \ + --hash=sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1 \ + --hash=sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf \ + --hash=sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea \ + --hash=sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988 \ + --hash=sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486 \ + --hash=sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00 \ + --hash=sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8 + # via + # ipykernel + # ipython +ptyprocess==0.7.0 \ + --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ + --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 + # via + # pexpect + # terminado +pure-eval==0.2.3 \ + --hash=sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 \ + --hash=sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42 + # via stack-data +pycparser==3.0 \ + --hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \ + --hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992 + # via cffi +pygments==2.20.0 \ + --hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \ + --hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 + # via + # ipython + # ipython-pygments-lexers + # nbconvert + # nbmake + # pytest +pyparsing==3.3.2 \ + --hash=sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d \ + --hash=sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc + # via matplotlib +pytest==9.1.1 \ + --hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \ + --hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c + # via + # mms (pyproject.toml) + # nbmake +python-dateutil==2.9.0.post0 \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + # via + # arrow + # jupyter-client + # matplotlib + # pandas +python-json-logger==4.1.0 \ + --hash=sha256:132994765cf75bf44554be9aa49b06ef2345d23661a96720262716438141b6b2 \ + --hash=sha256:b396b9e3ed782b09ff9d6e4f1683d46c83ad0d35d2e407c09a9ebbf038f88195 + # via jupyter-events +pytz==2026.2 \ + --hash=sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126 \ + --hash=sha256:0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a + # via pandas +pyyaml==6.0.3 \ + --hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \ + --hash=sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a \ + --hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \ + --hash=sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956 \ + --hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \ + --hash=sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c \ + --hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \ + --hash=sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a \ + --hash=sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0 \ + --hash=sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b \ + --hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \ + --hash=sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6 \ + --hash=sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7 \ + --hash=sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e \ + --hash=sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007 \ + --hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \ + --hash=sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4 \ + --hash=sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9 \ + --hash=sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295 \ + --hash=sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea \ + --hash=sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0 \ + --hash=sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e \ + --hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \ + --hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \ + --hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \ + --hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \ + --hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \ + --hash=sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b \ + --hash=sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69 \ + --hash=sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5 \ + --hash=sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b \ + --hash=sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c \ + --hash=sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369 \ + --hash=sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd \ + --hash=sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824 \ + --hash=sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198 \ + --hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \ + --hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \ + --hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \ + --hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \ + --hash=sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 \ + --hash=sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b \ + --hash=sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00 \ + --hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \ + --hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \ + --hash=sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e \ + --hash=sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28 \ + --hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \ + --hash=sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5 \ + --hash=sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4 \ + --hash=sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b \ + --hash=sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf \ + --hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \ + --hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \ + --hash=sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8 \ + --hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \ + --hash=sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da \ + --hash=sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d \ + --hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc \ + --hash=sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c \ + --hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \ + --hash=sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f \ + --hash=sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917 \ + --hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \ + --hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \ + --hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \ + --hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \ + --hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \ + --hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \ + --hash=sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3 \ + --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \ + --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \ + --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 + # via jupyter-events +pyzmq==27.1.0 \ + --hash=sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d \ + --hash=sha256:01f9437501886d3a1dd4b02ef59fb8cc384fa718ce066d52f175ee49dd5b7ed8 \ + --hash=sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e \ + --hash=sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba \ + --hash=sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581 \ + --hash=sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05 \ + --hash=sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386 \ + --hash=sha256:0c996ded912812a2fcd7ab6574f4ad3edc27cb6510349431e4930d4196ade7db \ + --hash=sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28 \ + --hash=sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e \ + --hash=sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea \ + --hash=sha256:18339186c0ed0ce5835f2656cdfb32203125917711af64da64dbaa3d949e5a1b \ + --hash=sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066 \ + --hash=sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97 \ + --hash=sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0 \ + --hash=sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113 \ + --hash=sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92 \ + --hash=sha256:1f8426a01b1c4098a750973c37131cf585f61c7911d735f729935a0c701b68d3 \ + --hash=sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86 \ + --hash=sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd \ + --hash=sha256:346e9ba4198177a07e7706050f35d733e08c1c1f8ceacd5eb6389d653579ffbc \ + --hash=sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233 \ + --hash=sha256:3970778e74cb7f85934d2b926b9900e92bfe597e62267d7499acc39c9c28e345 \ + --hash=sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31 \ + --hash=sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74 \ + --hash=sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc \ + --hash=sha256:49d3980544447f6bd2968b6ac913ab963a49dcaa2d4a2990041f16057b04c429 \ + --hash=sha256:4a19387a3dddcc762bfd2f570d14e2395b2c9701329b266f83dd87a2b3cbd381 \ + --hash=sha256:4c618fbcd069e3a29dcd221739cacde52edcc681f041907867e0f5cc7e85f172 \ + --hash=sha256:50081a4e98472ba9f5a02850014b4c9b629da6710f8f14f3b15897c666a28f1b \ + --hash=sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556 \ + --hash=sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4 \ + --hash=sha256:510869f9df36ab97f89f4cff9d002a89ac554c7ac9cadd87d444aa4cf66abd27 \ + --hash=sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c \ + --hash=sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd \ + --hash=sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e \ + --hash=sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526 \ + --hash=sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e \ + --hash=sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f \ + --hash=sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128 \ + --hash=sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96 \ + --hash=sha256:722ea791aa233ac0a819fc2c475e1292c76930b31f1d828cb61073e2fe5e208f \ + --hash=sha256:726b6a502f2e34c6d2ada5e702929586d3ac948a4dbbb7fed9854ec8c0466027 \ + --hash=sha256:753d56fba8f70962cd8295fb3edb40b9b16deaa882dd2b5a3a2039f9ff7625aa \ + --hash=sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f \ + --hash=sha256:7be883ff3d722e6085ee3f4afc057a50f7f2e0c72d289fd54df5706b4e3d3a50 \ + --hash=sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c \ + --hash=sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2 \ + --hash=sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146 \ + --hash=sha256:849ca054d81aa1c175c49484afaaa5db0622092b5eccb2055f9f3bb8f703782d \ + --hash=sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97 \ + --hash=sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5 \ + --hash=sha256:9541c444cfe1b1c0156c5c86ece2bb926c7079a18e7b47b0b1b3b1b875e5d098 \ + --hash=sha256:96c71c32fff75957db6ae33cd961439f386505c6e6b377370af9b24a1ef9eafb \ + --hash=sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32 \ + --hash=sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62 \ + --hash=sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf \ + --hash=sha256:a1aa0ee920fb3825d6c825ae3f6c508403b905b698b6460408ebd5bb04bbb312 \ + --hash=sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda \ + --hash=sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540 \ + --hash=sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604 \ + --hash=sha256:ad68808a61cbfbbae7ba26d6233f2a4aa3b221de379ce9ee468aa7a83b9c36b0 \ + --hash=sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db \ + --hash=sha256:b1267823d72d1e40701dcba7edc45fd17f71be1285557b7fe668887150a14b78 \ + --hash=sha256:b2e592db3a93128daf567de9650a2f3859017b3f7a66bc4ed6e4779d6034976f \ + --hash=sha256:b721c05d932e5ad9ff9344f708c96b9e1a485418c6618d765fca95d4daacfbef \ + --hash=sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2 \ + --hash=sha256:bd67e7c8f4654bef471c0b1ca6614af0b5202a790723a58b79d9584dc8022a78 \ + --hash=sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b \ + --hash=sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f \ + --hash=sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6 \ + --hash=sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39 \ + --hash=sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f \ + --hash=sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355 \ + --hash=sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a \ + --hash=sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a \ + --hash=sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856 \ + --hash=sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9 \ + --hash=sha256:da96ecdcf7d3919c3be2de91a8c513c186f6762aa6cf7c01087ed74fad7f0968 \ + --hash=sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7 \ + --hash=sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1 \ + --hash=sha256:df7cd397ece96cf20a76fae705d40efbab217d217897a5053267cd88a700c266 \ + --hash=sha256:e2687c2d230e8d8584fbea433c24382edfeda0c60627aca3446aa5e58d5d1831 \ + --hash=sha256:e30a74a39b93e2e1591b58eb1acef4902be27c957a8720b0e368f579b82dc22f \ + --hash=sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7 \ + --hash=sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394 \ + --hash=sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07 \ + --hash=sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496 \ + --hash=sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90 \ + --hash=sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271 \ + --hash=sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6 \ + --hash=sha256:ff8d114d14ac671d88c89b9224c63d6c4e5a613fe8acd5594ce53d752a3aafe9 + # via + # ipykernel + # jupyter-client + # jupyter-server +referencing==0.37.0 \ + --hash=sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231 \ + --hash=sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +requests==2.34.2 \ + --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \ + --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed + # via jupyterlab-server +rfc3339-validator==0.1.4 \ + --hash=sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b \ + --hash=sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa + # via + # jsonschema + # jupyter-events +rfc3986-validator==0.1.1 \ + --hash=sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 \ + --hash=sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055 + # via + # jsonschema + # jupyter-events +rfc3987-syntax==1.1.0 \ + --hash=sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f \ + --hash=sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d + # via jsonschema +rpds-py==2026.6.3 \ + --hash=sha256:0be972be84cfcaf46c8c6edf690ca0f154ac17babf1f6a955a51579b34ad2dc5 \ + --hash=sha256:127565fead0a10943b282957bd5447804ff3160ad79f2ad2635e6d249e380680 \ + --hash=sha256:127e08c0642d880cf32ca47ec2a4a77b901f7e2dd1ad9762adb13955d72ffcc9 \ + --hash=sha256:166cf54d9f44fc6ceb53c7860258dde44a81406646de79f8ed3234fca3b6e538 \ + --hash=sha256:168c733a7112e071bb7a66460e667edfcff06c017a3c523f7a8a8e08d0140804 \ + --hash=sha256:1967debc37f64f2c4dc90a7f563aec558b471966e12adcac4e1c4240496b6ebf \ + --hash=sha256:1cebd1337c242e4ec2293e541f712b2da849b29f48f0c293684b71c0632625d4 \ + --hash=sha256:1cf01971c4f2c5553b772a542e4aaf191789cd331bc2cd4ff0e6e65ba49e1e97 \ + --hash=sha256:1e5822dfc2f0d4ab7e745eaa6d85945069329beeccef965af3f3bb26058fcab6 \ + --hash=sha256:22bffe6042b9bcb0822bcd1955ec00e245daf17b4344e4ed8e9551b976b63e96 \ + --hash=sha256:23a439f31ccbeff1574e24889128821d1f7917470e830cf6544dced1c662262a \ + --hash=sha256:24e9c5386e16669b674a69c156c8eeefcb578f3b3397b713b08e6d60f3c7b187 \ + --hash=sha256:270b293dae9058fc9fcedab50f13cebf46fb8ed1d1d54e0521a9da5d6b211975 \ + --hash=sha256:29dfa0533a5d4c94d4dfa1b694fcb56c9c63aad8330ffdd816fd225d0a7a162f \ + --hash=sha256:2a9c6f195058cb45335e8cc3802745c603d716eb96bc9625950c1aac71c0c703 \ + --hash=sha256:2bfd04c19ddbd6640de0b51894d764bd2758854d5b75bd102d2ef10cb9c293a9 \ + --hash=sha256:2c54a076ca4d370980ab57bc0e31df57bbe8d41340436a90ef8b1219a3cbb127 \ + --hash=sha256:2c958bf94822e9290a40aaf2a822d4bc5c88099093e3948ad6c571eca9272e5f \ + --hash=sha256:2c99f7e8ccb3dd6e3e4bfeac657a7b208c9bac8075f4b078c02d7404c34107fa \ + --hash=sha256:2f7c26fbc5acd2522b95d4177fe4710ffd8e9b20529e703ffbf8db4d93903f05 \ + --hash=sha256:30c6dc199b24a5e3e81d50da0f00858c5bbdb2617a750395687f4339c5818171 \ + --hash=sha256:38a2fea2787428f811719ceb9114cb78964a3138838320c29ac39526c79c16ba \ + --hash=sha256:3a83ae6c67b7676b9878378547ca8e93ed77a580037bcbcd1d32f739e1e6089c \ + --hash=sha256:3cfe765c1da0072636ca06628261e0ea05688e160d5c8a03e0217c3854037223 \ + --hash=sha256:421aba32367055614287a4292b6a17f1939c9452299f7a0209c117e990b646d4 \ + --hash=sha256:425560c6fa0415f27261727bb20bd097568485e5eb0c121f1949417d1c516885 \ + --hash=sha256:4470ce197d4090875cf6affbf1f853338387428df97c4fb7b7106317b8214698 \ + --hash=sha256:4cf2d36a2357e4d07bb5a4f98801265327b48256867816cfd2ceb001e9754a8f \ + --hash=sha256:4f4bca01b63096f606e095734dd56e74e175f94cfbf24ff3d63281cec61f7bb7 \ + --hash=sha256:501f9f04a588d6a09179368c57071301445191767c64e4b52a6aa9871f1ef5ed \ + --hash=sha256:536bceea4fa4acf7e1c61da2b5786304367c816c8895be71b8f537c480b0ea1f \ + --hash=sha256:538949e262e46caa31ac01bdb3c1e8f642622922cacbabbae6a8445d9dc33eaf \ + --hash=sha256:539d75de9e0d536c84ff18dfeb805398e58227001ce09231a26a08b9aed1ee0e \ + --hash=sha256:54f45a148e28767bf343d33a684693c70e451c6f4c0e9904709a723fafbdfc1f \ + --hash=sha256:55927d532399c2c646100ff7feb48eaa940ad70f42cd68e1328f3ded9f81ca24 \ + --hash=sha256:58eadac9cd119677b60e1cf8ac4052f35949d71b8a9e5556efccbe82533cf22a \ + --hash=sha256:5e8d07bddee435a2ff6f1920e18feff28d0bc4533e42f4bf6927fbd073312c41 \ + --hash=sha256:62698275682bf121181861295c9181e789030a2d516071f5b8f3c23c170cd0fc \ + --hash=sha256:639c8929aa0afe81be836b04de888460d6bed38b9c54cfc18da8f6bfabf5af5d \ + --hash=sha256:67e3a721ffc5d8d2210d3671872298c4a84e4b8035cfe42ffd7cde35d772b146 \ + --hash=sha256:6de4744d05bd1aa1be4ed7ea1189e3979196808008113bbbf899a460966b925e \ + --hash=sha256:6e84adbcf4bf841aed8116a8264b9f50b4cb3e7bd89b516122e616ac56ca269e \ + --hash=sha256:7491ee23305ac3eb59e492b6945881f5cd77a6f731061a3f25b77fd40f9e99a4 \ + --hash=sha256:79486287de1730dbaff3dbd124d0ca4d2ef7f9d29bf2544f1f93c09b5bcbbd12 \ + --hash=sha256:7b689145a1485c335569bd056464f3243a29af7ed3871c7be31ad624ba239bc7 \ + --hash=sha256:7f88d653e7b3b779d71ae7454e20dcc9b6bae903f33c269db9f2be41bda3f261 \ + --hash=sha256:8020133a74bd81b4572dd8e4be028a6b1ebcd70e6726edc3918008c08bee6ee6 \ + --hash=sha256:808345f53cb952433ca2816f1604ff3515608a81784954f38d4452acfe8e61d5 \ + --hash=sha256:83e35b57523816c8613fd0776b40cd8bb9f596b37ddd2692eb4a6bb5ab2f8c93 \ + --hash=sha256:842e7b070435622248c7a2c44ae53fa1440e073cc3023bc919fed570884097a7 \ + --hash=sha256:847927daf4cffbd4e90e42bc890069897101edd015f956cb8721b3473372edda \ + --hash=sha256:882076c00c0a608b131187055ddc5ae29f2e7eaf870d6168980420d58528a5c8 \ + --hash=sha256:8b95977e7211527ab0ba576e286d023389fbeeb32a6b7b771665d333c60e5342 \ + --hash=sha256:8bb68f03f395eb793220b45c097bd4d8c32944393da0fad8b999efac0868fc8c \ + --hash=sha256:8c2642a7603ec0b16ed77da4555db3b4b472341904873788327c0b0d7b95f1bb \ + --hash=sha256:8c3d1e9c15b9d51ca0391e13da1a25a0a4df3c58a37c9dc368e0736cf7f69df0 \ + --hash=sha256:8c6e5a2f750cc71c3e3b11d71661f21d6f9bc6cebc6564b1466417a1ec03ec77 \ + --hash=sha256:8d2294a31386bfa251d8c8a39472beee17db67d4f1a6eabea665d35c9a4461c3 \ + --hash=sha256:8e4320744c1ffdd95a603def63344bfab2d33edeab301c5007e7de9f9f5b3885 \ + --hash=sha256:8e65860d238379ed982fd9ba690579b5e95af2f4840f99c772816dbe573cb826 \ + --hash=sha256:8f2e5c5ee828d42cb11760761c0af6507927bec42d0ad5458f97c9203b054617 \ + --hash=sha256:900a67df3fd1660b035a4761c4ce73c382ea6b35f90f9863c36c6fd8bf8b09bb \ + --hash=sha256:913ca42ccad3f8cc6e292b587ae8ae49c8c823e5dce51a736252fc7c7cdfa577 \ + --hash=sha256:9250a9a0a6fd4648b3f868da8d91a4c52b5811a62df58e753d50ae4454a36f80 \ + --hash=sha256:931908d9fc855d8f74783377822be318edb6dcb19e47169dc038f9a1bf60b06e \ + --hash=sha256:9826217f048f620d9a712672818bf231442c1b35d96b227a07eabd11b4bb6945 \ + --hash=sha256:9891e594296ab9dada6551c8e7b387b2721f27a67eecd528412e8906247a7b90 \ + --hash=sha256:9c1255b302953c86a486b81d330d5ee1d5bd937691ce271b6be0ef0e299eaab7 \ + --hash=sha256:a0811d33247c3d6128a3001d763f2aa056bb3425204335400ac54f89eec3a0d0 \ + --hash=sha256:a136d453475ac0fcbda502ef1e6504bd28d6d904700915d278deeab0d00fe140 \ + --hash=sha256:a214c993455f99a89aaeadc9b21241900037adc9d97203e374d75513c5911822 \ + --hash=sha256:a3086b538543802f84c843911242db20447de00d8752dd0efc936dbcf02218ba \ + --hash=sha256:a3450b693fde92133e9f51060568a4c31fcca76d5e53bbd611e689ca446517e9 \ + --hash=sha256:a550fb4950a06dde3beb4721f5ad4b25bf4513784665b0a8522c792e2bd822a4 \ + --hash=sha256:a9f4645593036b81bbdb36b9c8e0ea0d1c3fee968c4d59db0344c14087ef143a \ + --hash=sha256:aca6c1ef08a82bfe327cc156da694660f599923e2e6665b6d81c9c2d0ac9ffc8 \ + --hash=sha256:acac386b453c2516111b50985d60ce46e7fadb5ea71ae7b25f4c946935bf27cf \ + --hash=sha256:acc992ab27b15f852c76755eb2ab7dce86585ddadba6fa5946e58556088845b4 \ + --hash=sha256:ae3d4fe8c0b9213624fdce7279d70e3b148b682ca20719ebd193a23ebfa47324 \ + --hash=sha256:ae50181a047c871561212bb97f7932a2d45fb53e947bd9b57ebad85b529cbc53 \ + --hash=sha256:ae6dd8f10bd17aad820876d24caec9efdafd80a318d16c0a48edb5e136902c6b \ + --hash=sha256:af05d726809bff6b141be124d4c7ce998f9c9c7f30edb1f46c07aa103d540b41 \ + --hash=sha256:afd70d95892096cdb26f15a00c45907b17817577aa8d1c76b2dcc2788391f9e9 \ + --hash=sha256:b5c2dc92304aa48a4a60443b548bb12f12e119d4b72f314015e67b9e1be97fca \ + --hash=sha256:bc0011654b91cc4fb2ae701bec0a0ba1e552c0714247fa7af6c59e0ccfa3a4e1 \ + --hash=sha256:bcfbcf66006befb9fd2aeaa9e01feaf881b4dc330a02ba07d2322b1c11be7b5d \ + --hash=sha256:bdbd97738551fca3917c1bd7188bec1920bb520104f28e7e1007f9ceb17b7690 \ + --hash=sha256:c60924535c75f1566b6eb75b5c31a48a43fef04fa2d0d201acbad8a9969c6107 \ + --hash=sha256:c7b9a2f8f4d8e90af72571d3d495deebdd7e3c75451f5b41719aee166e940fc2 \ + --hash=sha256:ca6546b66be9dc4738b1b043d5ebd5488c66c578c5ff0fd0e8065313fe3afb76 \ + --hash=sha256:ccffae9a092a00deb7efd545fe5e2c33c33b88e7c054337e9a74c179347d0b7d \ + --hash=sha256:cdc7e35386f3847df728fbcb5e887e2d79c19e2fa1eba9e51b6621d23e3243af \ + --hash=sha256:d15fde0e6fb0d88a60d221204873743e5d9f0b7d29165e62cd86d0413ad74ba6 \ + --hash=sha256:d34c20167764fbcf927194d532dd7e0c56772f0a5f943fa5ef9e9afbba8fb9db \ + --hash=sha256:d483fe17f01ad64b7bf7cc38fcefff1ca9fb83f8c2b2542b68f97ffe0611b369 \ + --hash=sha256:d7469697dce35be237db177d42e2a2ee26e6dcc5fc052078a6fefabd288c6edd \ + --hash=sha256:db08f45aecde626498fb3df07bcf6d2ec040af42e859a4f5040d79c200342911 \ + --hash=sha256:dc319e5a1de4b6913aac94bf6a2f9e847371e0a140a43dd4991db1a09bc2d504 \ + --hash=sha256:de3eceba0b683bcbb1ab93da016d0270df1f9ae7be716b40214c5dafac6ea45a \ + --hash=sha256:dfcc8b909769d19db55c7cc9541eb64b9b774b1057ffffb4f1048070475bb9f9 \ + --hash=sha256:e059c5dde6452b44424bd1834557556c226b57781dee1227af23518459722b13 \ + --hash=sha256:e4316bf32babbed84e691e352faf967ce2f0f024174a8643c37c94a1080374fc \ + --hash=sha256:e52655eaf81e32593abedaa4bfe33170c8cfedf3365ed9be6e11e07f148f0278 \ + --hash=sha256:e55d236be29255554da47abe5c577637db7c24a02b8b46f0ca9524c855801868 \ + --hash=sha256:ea7bb13b7c9a29791f87a0387ba7d3ad3a6d783d827e4d3f27b40a0ff44495e2 \ + --hash=sha256:ea964164cc9afa72d4d9b23cc28dafae93693c0a53e0b42acbff15b22c3f9ddd \ + --hash=sha256:ec829541c45bca16e61c7ae50c20501f213605beb75d1aba91a6ee37fbbb56a4 \ + --hash=sha256:ecabd69db66de867690f9797f2f8fa27ba501bbc24540cbdbdc649cd15888ba6 \ + --hash=sha256:ed0c1e5d10cdc7135537988c74a0188da68e2f3c30813ba3744ab1e42e0480f9 \ + --hash=sha256:f0840b5b17057f7fd918b76183a4b5a0635f43e14eb2ce60dce1d4ee4707ea00 \ + --hash=sha256:f4d78253f6996be4901669ad25319f842f740eccf4d58e3c7f3dd39e6dde1d8f \ + --hash=sha256:f56f1695bc5c0871cbc33dc0130fcf503aab0c57dcc5a6700a4f49eba4f2652e \ + --hash=sha256:f826877d462181e5eb1c26a0026b8d0cab05d99844ecb6d8bf3627a2ca0c0442 \ + --hash=sha256:f8f23ead891a3b762f35ab3b04623da7056545b48aa60d59957e6789914545da \ + --hash=sha256:f90938e92afda60266da758ee7d363447f7f0138c9559f9e1811629580582d90 \ + --hash=sha256:faa679d19a6696fd54259ad321251ad77a13e70e03dd834daa762a44fb6196ef + # via + # jsonschema + # referencing +scikit-learn==1.9.0 \ + --hash=sha256:051075bda8b7aab87b1906ab3d4740a1e1224a19d7b3781a576736edc94e76aa \ + --hash=sha256:056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8 \ + --hash=sha256:147e9329ef0e39f75d4cffa02b2aa48d827832684926cd5210d9a2cb5c57246b \ + --hash=sha256:1b944b6db288f6b926e3650026ddafb988929de95d11fc2cc5fa117773c9ba42 \ + --hash=sha256:1fea2cc5677ab49d6f5bade978c866da44957b712d92e9635e8b4f723013c3cb \ + --hash=sha256:24360002ae845e7866522b0a5bbf690802e7bc388cac8663502e78aa98598aa2 \ + --hash=sha256:26e22435f63bcdcf396b574273f29f13dd531f5ea035801f5be10ba1540a4e60 \ + --hash=sha256:2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac \ + --hash=sha256:366652351f092b219c248f1e72821e841960a63d8f358f1dcfd54dc1cbdbbc28 \ + --hash=sha256:38c3dcb9a1ffb85505ec53d54c7b4aea0cff70050425a7760c2af661ac85df05 \ + --hash=sha256:4306775fad04cc4b472a1b15af1ae9cede1540fbfcc17fbce3767cd8dc7ae283 \ + --hash=sha256:4ccacf04ca5f4b492158a5f28afe0ace43f81b2571e4b9a66d34848b46128949 \ + --hash=sha256:5162ad10a418c8a282dde04c9aa06965de3e9a65f33c1440c0ae69bb1a09d913 \ + --hash=sha256:5808d98f15c6bf6d9d96d2348c1997392a5888ce7097e664105f930c4bca1277 \ + --hash=sha256:5b934c45c252844a91d69fda3a34cff5e7307e1db10d77cb10a3980312c74713 \ + --hash=sha256:5bad8f8b9950321b54c965fdcbac6c6c55e79e16646b49977bcf3668d3870a1a \ + --hash=sha256:5be45aa4a42a68a533913a6ed736cf309de2226411c79ef8d609a5456f1939b1 \ + --hash=sha256:5dc1818c77575d149e25fce9ef82dd7b7263ae372f03494158668ad632a69759 \ + --hash=sha256:5e50ed4da51974e86e940690e9a3d82e729b62b5a49f7c9bac534d515d39d86f \ + --hash=sha256:64fa347efc1c839c487433e40c5144d38c336e8a2b59c81aa8660373945c2673 \ + --hash=sha256:78fc56eafd4edb9575d2d8950d1dd152061abb573341a1cb7e099fc40f6c6666 \ + --hash=sha256:80746d63bd4b6eaca54d36fe5feaf4d28bb38dc6f9470f81c7cad7c40155f119 \ + --hash=sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557 \ + --hash=sha256:9656acd4e93f74e0b66c8a36c88830a99252dfa900044d36bc2212ae89a47162 \ + --hash=sha256:9db6f4d34e68c8899e4cab27fdf8eafe6ed21f2ba52ceb25ea250cd237f8e47b \ + --hash=sha256:d77f54c017633791bc0225a43e2f8d03745fdcfe4880268fcc4df15f505dec2e \ + --hash=sha256:da76d09304a4706db7cc1e3ebaa3b6b98a67365cc11d2996c4f1e58ba47df714 \ + --hash=sha256:ee1a8db2c18c08e34c7412d4b10be1cac214cd4ea7dc9715a6a327eb49a37c96 \ + --hash=sha256:f401448645a3e7bc115aa3c094097865155b34bff1cba8101857d9104e99074c \ + --hash=sha256:f7e254636164090da847715a27f8e5478feb98c40a9e0ee90cbd277de9e5ceb8 \ + --hash=sha256:fd3a8ef0c758555a3b23c03adaa858af32f7736785ded50ad5991f59c4ed03fa + # via mms (pyproject.toml) +scipy==1.17.1 \ + --hash=sha256:010f4333c96c9bb1a4516269e33cb5917b08ef2166d5556ca2fd9f082a9e6ea0 \ + --hash=sha256:02ae3b274fde71c5e92ac4d54bc06c42d80e399fec704383dcd99b301df37458 \ + --hash=sha256:08b900519463543aa604a06bec02461558a6e1cef8fdbb8098f77a48a83c8118 \ + --hash=sha256:131f5aaea57602008f9822e2115029b55d4b5f7c070287699fe45c661d051e39 \ + --hash=sha256:158dd96d2207e21c966063e1635b1063cd7787b627b6f07305315dd73d9c679e \ + --hash=sha256:1cc682cea2ae55524432f3cdff9e9a3be743d52a7443d0cba9017c23c87ae2f6 \ + --hash=sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec \ + --hash=sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21 \ + --hash=sha256:2040ad4d1795a0ae89bfc7e8429677f365d45aa9fd5e4587cf1ea737f927b4a1 \ + --hash=sha256:2b64ca7d4aee0102a97f3ba22124052b4bd2152522355073580bf4845e2550b6 \ + --hash=sha256:2ceb2d3e01c5f1d83c4189737a42d9cb2fc38a6eeed225e7515eef71ad301dce \ + --hash=sha256:35c3a56d2ef83efc372eaec584314bd0ef2e2f0d2adb21c55e6ad5b344c0dcb8 \ + --hash=sha256:37425bc9175607b0268f493d79a292c39f9d001a357bebb6b88fdfaff13f6448 \ + --hash=sha256:3877ac408e14da24a6196de0ddcace62092bfc12a83823e92e49e40747e52c19 \ + --hash=sha256:3fd1fcdab3ea951b610dc4cef356d416d5802991e7e32b5254828d342f7b7e0b \ + --hash=sha256:41b71f4a3a4cab9d366cd9065b288efc4d4f3c0b37a91a8e0947fb5bd7f31d87 \ + --hash=sha256:43af8d1f3bea642559019edfe64e9b11192a8978efbd1539d7bc2aaa23d92de4 \ + --hash=sha256:45abad819184f07240d8a696117a7aacd39787af9e0b719d00285549ed19a1e9 \ + --hash=sha256:4b400bdc6f79fa02a4d86640310dde87a21fba0c979efff5248908c6f15fad1b \ + --hash=sha256:4eb6c25dd62ee8d5edf68a8e1c171dd71c292fdae95d8aeb3dd7d7de4c364082 \ + --hash=sha256:581b2264fc0aa555f3f435a5944da7504ea3a065d7029ad60e7c3d1ae09c5464 \ + --hash=sha256:5cf36e801231b6a2059bf354720274b7558746f3b1a4efb43fcf557ccd484a87 \ + --hash=sha256:5e3c5c011904115f88a39308379c17f91546f77c1667cea98739fe0fccea804c \ + --hash=sha256:6609bc224e9568f65064cfa72edc0f24ee6655b47575954ec6339534b2798369 \ + --hash=sha256:6e3dcd57ab780c741fde8dc68619de988b966db759a3c3152e8e9142c26295ad \ + --hash=sha256:6fac755ca3d2c3edcb22f479fceaa241704111414831ddd3bc6056e18516892f \ + --hash=sha256:744b2bf3640d907b79f3fd7874efe432d1cf171ee721243e350f55234b4cec4c \ + --hash=sha256:74cbb80d93260fe2ffa334efa24cb8f2f0f622a9b9febf8b483c0b865bfb3475 \ + --hash=sha256:766e0dc5a616d026a3a1cffa379af959671729083882f50307e18175797b3dfd \ + --hash=sha256:7bdf2da170b67fdf10bca777614b1c7d96ae3ca5794fd9587dce41eb2966e866 \ + --hash=sha256:7ff200bf9d24f2e4d5dc6ee8c3ac64d739d3a89e2326ba68aaf6c4a2b838fd7d \ + --hash=sha256:844e165636711ef41f80b4103ed234181646b98a53c8f05da12ca5ca289134f6 \ + --hash=sha256:8a604bae87c6195d8b1045eddece0514d041604b14f2727bbc2b3020172045eb \ + --hash=sha256:94055a11dfebe37c656e70317e1996dc197e1a15bbcc351bcdd4610e128fe1ca \ + --hash=sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0 \ + --hash=sha256:9cdc1a2fcfd5c52cfb3045feb399f7b3ce822abdde3a193a6b9a60b3cb5854ca \ + --hash=sha256:9ecb4efb1cd6e8c4afea0daa91a87fbddbce1b99d2895d151596716c0b2e859d \ + --hash=sha256:a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee \ + --hash=sha256:a4328d245944d09fd639771de275701ccadf5f781ba0ff092ad141e017eccda4 \ + --hash=sha256:a48a72c77a310327f6a3a920092fa2b8fd03d7deaa60f093038f22d98e096717 \ + --hash=sha256:a720477885a9d2411f94a93d16f9d89bad0f28ca23c3f8daa521e2dcc3f44d49 \ + --hash=sha256:a77cbd07b940d326d39a1d1b37817e2ee4d79cb30e7338f3d0cddffae70fcaa2 \ + --hash=sha256:a9956e4d4f4a301ebf6cde39850333a6b6110799d470dbbb1e25326ac447f52a \ + --hash=sha256:adb2642e060a6549c343603a3851ba76ef0b74cc8c079a9a58121c7ec9fe2350 \ + --hash=sha256:beeda3d4ae615106d7094f7e7cef6218392e4465cc95d25f900bebabfded0950 \ + --hash=sha256:c80be5ede8f3f8eded4eff73cc99a25c388ce98e555b17d31da05287015ffa5b \ + --hash=sha256:cc90d2e9c7e5c7f1a482c9875007c095c3194b1cfedca3c2f3291cdc2bc7c086 \ + --hash=sha256:cd96a1898c0a47be4520327e01f874acfd61fb48a9420f8aa9f6483412ffa444 \ + --hash=sha256:d2650c1fb97e184d12d8ba010493ee7b322864f7d3d00d3f9bb97d9c21de4068 \ + --hash=sha256:d30e57c72013c2a4fe441c2fcb8e77b14e152ad48b5464858e07e2ad9fbfceff \ + --hash=sha256:d59c30000a16d8edc7e64152e30220bfbd724c9bbb08368c054e24c651314f0a \ + --hash=sha256:dbc12c9f3d185f5c737d801da555fb74b3dcfa1a50b66a1a93e09190f41fab50 \ + --hash=sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696 \ + --hash=sha256:e19ebea31758fac5893a2ac360fedd00116cbb7628e650842a6691ba7ca28a21 \ + --hash=sha256:e30bdeaa5deed6bc27b4cc490823cd0347d7dae09119b8803ae576ea0ce52e4c \ + --hash=sha256:eb092099205ef62cd1782b006658db09e2fed75bffcae7cc0d44052d8aa0f484 \ + --hash=sha256:eee2cfda04c00a857206a4330f0c5e3e56535494e30ca445eb19ec624ae75118 \ + --hash=sha256:f4115102802df98b2b0db3cce5cb9b92572633a1197c77b7553e5203f284a5b3 \ + --hash=sha256:f590cd684941912d10becc07325a3eeb77886fe981415660d9265c4c418d0bea \ + --hash=sha256:f8885db0bc2bffa59d5c1b72fad7a6a92d3e80e7257f967dd81abb553a90d293 \ + --hash=sha256:fcb310ddb270a06114bb64bbe53c94926b943f5b7f0842194d585c65eb4edd76 + # via + # mms (pyproject.toml) + # scikit-learn +seaborn==0.13.2 \ + --hash=sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987 \ + --hash=sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7 + # via mms (pyproject.toml) +send2trash==2.1.0 \ + --hash=sha256:0da2f112e6d6bb22de6aa6daa7e144831a4febf2a87261451c4ad849fe9a873c \ + --hash=sha256:1c72b39f09457db3c05ce1d19158c2cbef4c32b8bedd02c155e49282b7ea7459 + # via jupyter-server +six==1.17.0 \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 + # via + # python-dateutil + # rfc3339-validator +soupsieve==2.8.4 \ + --hash=sha256:e121fd02e975c695e4e9e8774a5ee35d74714b59307868dcc5319ad2d9e3328e \ + --hash=sha256:e7e6b0769c8f51ed59acab6e994b00621096cfb1c640a7509295987388fbaf65 + # via beautifulsoup4 +stack-data==0.6.3 \ + --hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \ + --hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695 + # via ipython +terminado==0.18.1 \ + --hash=sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 \ + --hash=sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e + # via + # jupyter-server + # jupyter-server-terminals +threadpoolctl==3.6.0 \ + --hash=sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb \ + --hash=sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e + # via scikit-learn +tinycss2==1.5.1 \ + --hash=sha256:3415ba0f5839c062696996998176c4a3751d18b7edaaeeb658c9ce21ec150661 \ + --hash=sha256:d339d2b616ba90ccce58da8495a78f46e55d4d25f9fd71dfd526f07e7d53f957 + # via bleach +tornado==6.5.7 \ + --hash=sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163 \ + --hash=sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2 \ + --hash=sha256:7778b30bef919231265e91c69963ce0f49a1e9c07ac900bbe75b19ce2575ba92 \ + --hash=sha256:8a46347a18f23fb92b396beebe0fb78f61dda0cc302445202c16203d8a18848b \ + --hash=sha256:8d759e71906ee783f8867b93bf26a265743da4c1e2f4a018464c1ba019862972 \ + --hash=sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100 \ + --hash=sha256:de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4 \ + --hash=sha256:e726f0c75da7726eec023aa62751ff8878bd2737e34fbdd33b1ae5897d2200f5 \ + --hash=sha256:f8de3bf12d3efdd0cbe7c8887868198f8a91415e3f29fcf258d9b8eb7b1d9ae4 \ + --hash=sha256:ff934fce95643af5f11efdae618eaa73d469dc588641e5c8d19295a0c65c4796 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # terminado +traitlets==5.15.1 \ + --hash=sha256:770a53705f84b81ac107e83a1b3328ff2dae16094d8fc3cfc004e4b22dfd8e92 \ + --hash=sha256:7b1c07854fe25acb39e009bae49f11b79ff6cbb2f27999104e9110e7a6b53722 + # via + # ipykernel + # ipython + # jupyter-builder + # jupyter-client + # jupyter-core + # jupyter-events + # jupyter-server + # jupyterlab + # matplotlib-inline + # nbclient + # nbconvert + # nbformat +typing-extensions==4.16.0 \ + --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \ + --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5 + # via + # anyio + # beautifulsoup4 + # ipython + # jupyter-client + # referencing +tzdata==2026.2 \ + --hash=sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10 \ + --hash=sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7 + # via + # arrow + # pandas +uri-template==1.3.0 \ + --hash=sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7 \ + --hash=sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363 + # via jsonschema +urllib3==2.7.0 \ + --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ + --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 + # via requests +wcwidth==0.8.2 \ + --hash=sha256:91fbef97204b96a3d4d421609b80340b760cf33e26da123ff243d76b1fda8dda \ + --hash=sha256:d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85 + # via prompt-toolkit +webcolors==25.10.0 \ + --hash=sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d \ + --hash=sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf + # via jsonschema +webencodings==0.5.1 \ + --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ + --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 + # via + # bleach + # tinycss2 +websocket-client==1.9.0 \ + --hash=sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98 \ + --hash=sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef + # via jupyter-server diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index d6e60d7..0000000 --- a/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -# Python >= 3.9 -# Core data science -numpy>=2.0.2 -pandas>=2.3.3 -scipy>=1.13.1 - -# Visualization -matplotlib>=3.9.4 -seaborn>=0.13.2 - -# Machine Learning -scikit-learn>=1.6.1 - -# Jupyter -jupyter>=1.1.1 -notebook>=7.5.7 diff --git a/scripts/deidentify_timestamps.py b/scripts/deidentify_timestamps.py new file mode 100644 index 0000000..e4813f0 --- /dev/null +++ b/scripts/deidentify_timestamps.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +"""Shift absolute timestamps to relative session time (privacy hardening). + +Absolute appointment date + start time is a re-identification vector for an n=10 +cohort. This anchors each session at ``2000-01-01T00:00:00``, removing the +wall-clock date/time while preserving relative timings. + +- **Dry-run by default**; ``--apply`` writes in place, ``--apply --out DIR`` writes + the shifted time-bearing files under DIR (not a full copy of ``data/`` — non-time + files are not copied). +- **Alignment-preserving**: files sharing a (folder, session) shift by one offset, + so cross-stream joins still line up. +- **Format-preserving**: slash or ISO-8601 output as in the source. + +Scope: per-session streams + psychometric originals. Aggregates (``QQ*``) and +``*_modified`` files are left alone. Timestamps are treated as UTC wall-clock. +""" +from __future__ import annotations + +import argparse +import re +import warnings +from pathlib import Path + +import pandas as pd + +ROOT = Path(__file__).resolve().parents[1] +ANCHOR = pd.Timestamp("2000-01-01T00:00:00") + +# column -> ("slash" | "iso") output format +TIME_COLUMNS = { + "datetime": "slash", + "Question Start Time": "iso", + "Question Answer Time": "iso", + "Answer Time": "iso", # older psychometric export header +} +SLASH_FMT = "%Y/%m/%d %H:%M:%S.%f" + + +def session_key(path: Path) -> str: + """Group files that must share a time origin: (folder, session suffix).""" + folder = path.relative_to(ROOT).parts[1] # case-study | individual + m = re.search(r"_(\d{2})(?:_modified)?\.csv$", path.name) + sess = m.group(1) if m else "baseline" + return f"{folder}/{sess}" + + +def _parse(series: pd.Series, fmt: str) -> pd.Series: + return pd.to_datetime(series, format=SLASH_FMT if fmt == "slash" else None, + utc=(fmt == "iso"), errors="coerce") + + +def _emit(ts: pd.Series, fmt: str) -> pd.Series: + """Format shifted timestamps; NaT rows become blank, never 'nan'/'NaT'/'.0'.""" + valid = ts.notna() + if fmt == "slash": + s = ts.dt.strftime(SLASH_FMT).str.slice(0, -2) # trim to .ffff (4 dp) + else: + ms = (ts.dt.microsecond.fillna(0) // 1000).astype("int64").map("{:03d}".format) + s = ts.dt.strftime("%Y-%m-%dT%H:%M:%S.") + ms + "Z" + return s.where(valid) + + +def _looks_like_datetime(s: pd.Series) -> bool: + """True if a string column parses mostly as timestamps (a possible PII leak).""" + if s.dtype != object: + return False + sample = s.dropna().astype(str).head(50) + if sample.empty: + return False + # bare numbers (e.g. a "Time(s)" duration) parse as epochs — not timestamps + if pd.to_numeric(sample, errors="coerce").notna().mean() > 0.5: + return False + with warnings.catch_warnings(): # heuristic probe; ignore format hints + warnings.simplefilter("ignore") + parsed = pd.to_datetime(sample, errors="coerce", utc=True) + return parsed.notna().mean() > 0.8 + + +def time_columns_of(df: pd.DataFrame) -> dict[str, str]: + """Map every timestamp column to its format: known columns + auto-detected ones. + + Auto-detection (treated as ISO) catches renamed/mislabeled absolute-timestamp + columns — e.g. a psychometric file whose 'Time(s)' column holds timestamps — + so they cannot silently escape de-identification. + """ + cols = {c: TIME_COLUMNS[c] for c in df.columns if c in TIME_COLUMNS} + for c in df.columns: + if c not in cols and _looks_like_datetime(df[c]): + cols[c] = "iso" + return cols + + +def collect() -> dict[str, list[Path]]: + groups: dict[str, list[Path]] = {} + for path in sorted(ROOT.glob("data/*/**/*.csv")): + if "_modified" in path.name or path.name.startswith("QQ"): + continue + tcols = time_columns_of(pd.read_csv(path, nrows=200)) + extra = [c for c in tcols if c not in TIME_COLUMNS] + if extra: + warnings.warn( + f"{path.relative_to(ROOT)}: auto-detected timestamp column(s) {extra} " + "not in TIME_COLUMNS — shifting them as ISO-8601" + ) + if tcols: + groups.setdefault(session_key(path), []).append(path) + return groups + + +def group_offset(paths: list[Path]) -> pd.Timedelta: + mins = [] + for p in paths: + df = pd.read_csv(p) + for col, fmt in time_columns_of(df).items(): + t = _parse(df[col], fmt) + if t.notna().any(): + mins.append(t.min().tz_localize(None) if t.dt.tz else t.min()) + return min(mins) - ANCHOR if mins else pd.Timedelta(0) + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("--apply", action="store_true", help="write changes (default: dry run)") + ap.add_argument("--out", type=Path, help="write copies under this dir instead of in place") + args = ap.parse_args() + + groups = collect() + total = sum(len(v) for v in groups.values()) + print(f"{'APPLY' if args.apply else 'DRY-RUN'}: {total} files across " + f"{len(groups)} (folder, session) groups\n") + + for key, paths in groups.items(): + offset = group_offset(paths) + print(f"[{key}] shift -{offset} ({len(paths)} files)") + if not args.apply: + continue + for p in paths: + df = pd.read_csv(p) + for col, fmt in time_columns_of(df).items(): + shifted = _parse(df[col], fmt) + shifted = (shifted.dt.tz_localize(None) if fmt == "iso" else shifted) - offset + df[col] = _emit(shifted, fmt) + dest = (args.out / p.relative_to(ROOT)) if args.out else p + dest.parent.mkdir(parents=True, exist_ok=True) + df.to_csv(dest, index=False) + + if not args.apply: + print("\nNo files written. Re-run with --apply to shift timestamps in place,") + print("or --apply --out data_deid/ to write de-identified copies.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/normalize_kernelspec.py b/scripts/normalize_kernelspec.py new file mode 100644 index 0000000..09527d5 --- /dev/null +++ b/scripts/normalize_kernelspec.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +"""Pin every notebook's kernelspec to the portable ``python3``. + +Private kernel names (``pdf_processing``, ``conda-base-py``) break a clean +``git clone`` with ``NoSuchKernel``. Idempotent. Run: +``python scripts/normalize_kernelspec.py``. +""" +from __future__ import annotations + +import sys +from pathlib import Path + +import nbformat + +ROOT = Path(__file__).resolve().parents[1] +PORTABLE = {"name": "python3", "display_name": "Python 3", "language": "python"} + + +def main() -> int: + changed = [] + notebooks = [ + p for p in ROOT.rglob("*.ipynb") if ".ipynb_checkpoints" not in p.parts + ] + for path in notebooks: + nb = nbformat.read(path, as_version=4) + ks = nb.metadata.get("kernelspec", {}) + if ks.get("name") != "python3" or ks.get("display_name") != "Python 3": + nb.metadata["kernelspec"] = dict(PORTABLE) + li = nb.metadata.setdefault("language_info", {}) + li["name"] = "python" + nbformat.write(nb, path) + changed.append(path.relative_to(ROOT)) + + print(f"Scanned {len(notebooks)} notebooks; normalized {len(changed)}.") + for c in changed: + print(f" fixed: {c}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/test_data_integrity.py b/tests/test_data_integrity.py index 38b81f6..e9bb762 100644 --- a/tests/test_data_integrity.py +++ b/tests/test_data_integrity.py @@ -28,3 +28,60 @@ def test_csv_loads_and_is_non_trivial(path): df = pd.read_csv(path) assert df.shape[0] >= 1, f"{rel} has no data rows" assert df.shape[1] >= 1, f"{rel} has no columns" + + +# --- Group-summary integrity ------------------------------------------------ +# Byte-identical values in a *continuous* measure are a copy-paste red flag. Two +# such cases are known and documented (see DATA_PROVENANCE.md) — their source +# data is not in the repo, so they are allow-listed rather than guessed. Any NEW, +# undocumented duplicate (within a participant OR across participants) fails. +GROUP_SUMMARIES = sorted((ROOT / "data" / "group_results").glob("*.csv")) + +# (file, participant, sorted session-pair) — same participant, two equal sessions +KNOWN_WITHIN_PARTICIPANT_DUPES = { + ("HRV_SDNN.csv", "P01", ("Session 02", "Session 03")), +} +# (file, session, value) — two participants sharing one session value +KNOWN_CROSS_PARTICIPANT_DUPES = { + ("Psychometric_Test_Duration_STD.csv", "Session 01", 4.409281089248826), +} + + +def _summary(path): + df = pd.read_csv(path) + session_cols = [c for c in df.columns if c.lower().startswith("session")] + if "Participant" not in df.columns or len(session_cols) < 2: + pytest.skip("not a participant-by-session summary") + return df, session_cols + + +@pytest.mark.parametrize("path", GROUP_SUMMARIES, ids=[p.name for p in GROUP_SUMMARIES]) +def test_no_undocumented_within_participant_duplicates(path): + df, session_cols = _summary(path) + offenders = [] + for _, row in df.iterrows(): + for i, ci in enumerate(session_cols): + for cj in session_cols[i + 1:]: + if float(row[ci]) == float(row[cj]): + pair = tuple(sorted((ci, cj))) + if (path.name, str(row["Participant"]), pair) not in KNOWN_WITHIN_PARTICIPANT_DUPES: + offenders.append((row["Participant"], ci, cj, float(row[ci]))) + assert not offenders, ( + f"Undocumented within-participant session duplicates in {path.name}: {offenders}. " + "If real, document in DATA_PROVENANCE.md and add to KNOWN_WITHIN_PARTICIPANT_DUPES." + ) + + +@pytest.mark.parametrize("path", GROUP_SUMMARIES, ids=[p.name for p in GROUP_SUMMARIES]) +def test_no_undocumented_cross_participant_duplicates(path): + df, session_cols = _summary(path) + offenders = [] + for col in session_cols: + for val, count in df[col].value_counts().items(): + if count >= 2 and (path.name, col, float(val)) not in KNOWN_CROSS_PARTICIPANT_DUPES: + shared = df.loc[df[col] == val, "Participant"].tolist() + offenders.append((col, float(val), shared)) + assert not offenders, ( + f"Undocumented cross-participant duplicates in {path.name}: {offenders}. " + "If real, document in DATA_PROVENANCE.md and add to KNOWN_CROSS_PARTICIPANT_DUPES." + ) diff --git a/tests/test_mms.py b/tests/test_mms.py new file mode 100644 index 0000000..628483b --- /dev/null +++ b/tests/test_mms.py @@ -0,0 +1,126 @@ +"""Unit tests for the shared analysis package `mms`. + +Beyond smoke tests, these assert the metrics compute the *right numbers*: +regression guards for the two original bugs (broadcast SDNN, uncorrected +multiplicity), NaN-safety guards for the two the audit later found, and a +reproduction check for the README's headline ICC values. +""" +import math + +import numpy as np +import pandas as pd +import pytest + +import mms + + +# --- ICC -------------------------------------------------------------------- +def test_icc1_reproduces_readme_hrv_value(): + g = mms.io.load_group_summary("HRV_SDNN") + mat = g[["Session 01", "Session 02", "Session 03"]].to_numpy(float) + res = mms.stats.icc1(mat) + assert res["icc"] == pytest.approx(0.22, abs=0.02) + lo, hi = res["ci95"] + assert lo < 0 < hi # interval crosses zero -> uninformative at n=10 + + +def test_icc1_perfect_agreement_is_one(): + data = np.array([[1.0, 1.0], [2.0, 2.0], [3.0, 3.0], [4.0, 4.0]]) + res = mms.stats.icc1(data) + assert res["icc"] == pytest.approx(1.0, abs=1e-9) + assert math.isnan(res["ci95"][0]) and math.isnan(res["ci95"][1]) + assert math.isinf(res["F"]) + + +@pytest.mark.parametrize("bad", [np.array([1.0, 2.0, 3.0]), # 1-D + np.array([[1.0], [2.0]]), # k < 2 + np.array([[1.0, 2.0]])]) # n < 2 +def test_icc1_degenerate_input_returns_nan(bad): + res = mms.stats.icc1(bad) + assert math.isnan(res["icc"]) # documented contract, not a crash + + +# --- HRV -------------------------------------------------------------------- +def test_sdnn_filters_artifacts_and_zeros(): + beats = pd.Series([800, 810, 0, 790, 5000, 805]) + expected = pd.Series([800, 810, 790, 805]).std(ddof=1) + assert mms.hrv.sdnn(beats) == pytest.approx(expected) + + +def test_rmssd_over_cleaned_nn(): + beats = pd.Series([800, 810, 0, 5000, 790, 805]) # 0 and 5000 are artifacts + nn = pd.Series([800, 810, 790, 805]) + expected = float(np.sqrt((nn.diff().dropna() ** 2).mean())) + assert mms.hrv.rmssd(beats) == pytest.approx(expected) + + +def test_hrv_over_time_is_not_a_broadcast_scalar(): + rng = np.random.default_rng(0) + n = len(np.arange(0, 300, 0.8)) + df = pd.DataFrame({"reltime": np.arange(0, 300, 0.8), + "ibi": 800 + rng.normal(0, 40, n)}) + ts = mms.hrv.hrv_over_time(df, window_s=30) + assert len(ts) > 1 + assert ts["sdnn"].nunique() > 1 + + +def test_hrv_over_time_conserves_beats(): + # every in-range beat must fall in exactly one window (no lost last beat) + df = pd.DataFrame({"reltime": [0, 10, 20, 30, 59.9, 60.0], "ibi": [800] * 6}) + ts = mms.hrv.hrv_over_time(df, window_s=30) + assert ts["n_beats"].sum() == 6 + + +# --- FDR / correlations ----------------------------------------------------- +def test_benjamini_hochberg_bounds_and_dominates_raw(): + p = [0.9, 0.001, 0.5, 0.01, 0.04] + adj = mms.stats.benjamini_hochberg(p) + assert np.all((adj >= 0) & (adj <= 1)) + assert np.all(adj >= np.array(p) - 1e-12) # adjusted >= raw + assert np.array_equal(np.argsort(adj), np.argsort(p)) # rank order preserved + + +def test_benjamini_hochberg_is_nan_safe(): + # a single NaN (e.g. from a constant column) must not collapse the rest + adj = mms.stats.benjamini_hochberg([0.001, 0.5, np.nan, 0.02]) + assert np.isnan(adj[2]) + assert np.all(np.isfinite(adj[[0, 1, 3]])) + + +def test_corr_matrix_fdr_shrinks_significance(): + g = pd.concat([ + mms.io.load_group_summary("HRV_SDNN").set_index("Participant").add_suffix("_HRV"), + mms.io.load_group_summary("Pupil_Dilation_STD").set_index("Participant").add_suffix("_Pupil"), + ], axis=1) + res = mms.stats.corr_matrix_fdr(g) + n = res["r"].shape[0] + iu = np.triu_indices(n, k=1) + sig_raw = int((res["p_raw"].values[iu] < 0.05).sum()) + sig_fdr = int((res["p_fdr"].values[iu] < 0.05).sum()) + assert sig_raw > 0 # guard is meaningful only if raw finds something + assert sig_fdr <= sig_raw + + +# --- io / fixation ---------------------------------------------------------- +def test_pupil_std_quality_gates_and_matches_std(): + sed = pd.DataFrame({"pupil": [3.0, 4.0, 100.0, 5.0], + "pupilQ": [1.0, 1.0, 0.1, 1.0]}) + expected = pd.Series([3.0, 4.0, 5.0]).std(ddof=1) # low-quality row excluded + assert mms.fixation.pupil_std(sed, quality_min=0.5) == pytest.approx(expected) + + +def test_parse_datetime_is_tz_naive(): + out = mms.io.parse_datetime(pd.Series(["2024-05-28T15:37:00.695Z"])) + assert out.dt.tz is None + assert out.iloc[0].year == 2024 + + +def test_load_hr_individual_source_and_raw_confidence(): + hi = mms.io.load_hr(1, source="individual") + lo = mms.io.load_hr(1, source="individual", high_confidence_only=False) + assert len(lo) >= len(hi) # unfiltered is a superset + + +def test_unknown_source_raises(): + with pytest.raises(ValueError): + mms.io.load_ibi(1, source="casestudy") # typo must not silently load INDIVIDUAL