Exploring a patient cohort#

Scenario: You have access to the MIMIC-IV demo dataset, a subset of de-identified electronic health records from the Beth Israel Deaconess Medical Center. Each patient has a sequence of hospital admissions characterised by their type (emergency, elective, …) and admission location.

The goal of this tutorial is to load the data, build a TanaT pool, and perform an initial exploratory analysis.

Concepts covered:

  • Access the MIMIC-IV demo with access()

  • Ingest two SQL tables with the builder API into an IntervalSequencePool

  • Summarise the pool with describe()

  • Navigate sequences and individual admissions

  • Visualise the admission-type distribution and individual timelines

  • Split into train / test with train_test_split()

Note

MIMIC-IV data is downloaded automatically on first use and cached locally. The demo subset covers ~100 patients and is freely available via Zenodo.

Imports#

import polars as pl

from tanat.dataset import access
from tanat.sequence.type.interval.pool import IntervalSequencePool
from tanat.visualization import SequenceVisualizer

Load the MIMIC-IV demo#

access() downloads the SQLite database on the first call and returns the local path. The builder API accepts SQL queries directly, with no intermediate DataFrames. Two sources are chained:

  • hosp/admissions: one row per hospital stay (temporal, interval).

  • hosp/patients: one row per patient (static features, is_static=True).

DB = f"sqlite:///{access('mimic4')}"

pool = IntervalSequencePool(
    store=(
        IntervalSequencePool.builder()
        .add_sql(
            DB,
            "SELECT subject_id, admittime, dischtime,"
            "       admission_type, admission_location"
            ' FROM "hosp/admissions"',
            id_column="subject_id",
            start_column="admittime",
            end_column="dischtime",
            features=["admission_type", "admission_location"],
        )
        .add_sql(
            DB,
            'SELECT subject_id, gender, anchor_age AS age FROM "hosp/patients"',
            id_column="subject_id",
            is_static=True,
            features=["gender", "age"],
        )
        .build("admissions_store", exist_ok=True)
    )
)

# ``pl.Categorical`` is required by the metric and clustering modules, and
# enables consistent colour-coding across all visualisations.
pool.cast_features({"admission_type": pl.Categorical}, is_static=False)
mimic4.db:   0%|          | 0.00/147M [00:00<?, ?B/s]
mimic4.db:   0%|          | 98.3k/147M [00:00<03:16, 749kB/s]
mimic4.db:   0%|          | 180k/147M [00:00<03:08, 778kB/s]
mimic4.db:   0%|          | 270k/147M [00:00<03:00, 812kB/s]
mimic4.db:   0%|          | 352k/147M [00:00<03:00, 814kB/s]
mimic4.db:   0%|          | 451k/147M [00:00<02:50, 863kB/s]
mimic4.db:   0%|          | 565k/147M [00:00<02:33, 954kB/s]
mimic4.db:   0%|          | 696k/147M [00:00<02:17, 1.06MB/s]
mimic4.db:   1%|          | 811k/147M [00:00<02:15, 1.08MB/s]
mimic4.db:   1%|          | 926k/147M [00:00<02:14, 1.09MB/s]
mimic4.db:   1%|          | 1.04M/147M [00:01<02:12, 1.10MB/s]
mimic4.db:   1%|          | 1.16M/147M [00:01<02:11, 1.11MB/s]
mimic4.db:   1%|          | 1.27M/147M [00:01<02:11, 1.11MB/s]
mimic4.db:   1%|          | 1.38M/147M [00:01<02:10, 1.11MB/s]
mimic4.db:   1%|          | 1.50M/147M [00:01<02:10, 1.11MB/s]
mimic4.db:   1%|          | 1.61M/147M [00:01<02:10, 1.11MB/s]
mimic4.db:   1%|          | 1.73M/147M [00:01<02:10, 1.12MB/s]
mimic4.db:   1%|▏         | 1.88M/147M [00:01<01:56, 1.25MB/s]
mimic4.db:   1%|▏         | 2.02M/147M [00:01<02:29, 974kB/s]
mimic4.db:   2%|▏         | 2.21M/147M [00:02<02:28, 979kB/s]
mimic4.db:   2%|▏         | 2.32M/147M [00:02<02:25, 997kB/s]
mimic4.db:   2%|▏         | 2.42M/147M [00:02<02:22, 1.01MB/s]
mimic4.db:   2%|▏         | 2.53M/147M [00:02<02:21, 1.03MB/s]
mimic4.db:   2%|▏         | 2.72M/147M [00:02<02:25, 992kB/s]
mimic4.db:   2%|▏         | 2.83M/147M [00:02<02:23, 1.01MB/s]
mimic4.db:   2%|▏         | 2.97M/147M [00:02<02:11, 1.10MB/s]
mimic4.db:   2%|▏         | 3.19M/147M [00:03<02:08, 1.12MB/s]
mimic4.db:   2%|▏         | 3.44M/147M [00:03<02:03, 1.16MB/s]
mimic4.db:   2%|▏         | 3.56M/147M [00:03<02:02, 1.18MB/s]
mimic4.db:   3%|▎         | 3.69M/147M [00:03<02:00, 1.19MB/s]
mimic4.db:   3%|▎         | 3.81M/147M [00:03<01:59, 1.20MB/s]
mimic4.db:   3%|▎         | 3.93M/147M [00:03<01:59, 1.20MB/s]
mimic4.db:   3%|▎         | 4.26M/147M [00:03<01:42, 1.39MB/s]
mimic4.db:   3%|▎         | 4.40M/147M [00:03<01:43, 1.38MB/s]
mimic4.db:   3%|▎         | 4.57M/147M [00:04<02:01, 1.17MB/s]
mimic4.db:   3%|▎         | 4.69M/147M [00:04<02:00, 1.18MB/s]
mimic4.db:   3%|▎         | 4.82M/147M [00:04<01:59, 1.19MB/s]
mimic4.db:   3%|▎         | 4.94M/147M [00:04<01:58, 1.20MB/s]
mimic4.db:   3%|▎         | 5.06M/147M [00:04<02:28, 955kB/s]
mimic4.db:   4%|▎         | 5.28M/147M [00:04<01:55, 1.23MB/s]
mimic4.db:   4%|▎         | 5.41M/147M [00:04<02:20, 1.01MB/s]
mimic4.db:   4%|▍         | 5.54M/147M [00:05<02:14, 1.06MB/s]
mimic4.db:   4%|▍         | 5.66M/147M [00:05<02:09, 1.09MB/s]
mimic4.db:   4%|▍         | 5.78M/147M [00:05<02:05, 1.12MB/s]
mimic4.db:   4%|▍         | 5.91M/147M [00:05<02:02, 1.15MB/s]
mimic4.db:   4%|▍         | 6.09M/147M [00:05<02:14, 1.05MB/s]
mimic4.db:   4%|▍         | 6.27M/147M [00:05<01:55, 1.22MB/s]
mimic4.db:   4%|▍         | 6.40M/147M [00:05<01:53, 1.24MB/s]
mimic4.db:   4%|▍         | 6.53M/147M [00:05<01:51, 1.26MB/s]
mimic4.db:   5%|▍         | 6.66M/147M [00:05<01:50, 1.27MB/s]
mimic4.db:   5%|▍         | 6.81M/147M [00:06<02:15, 1.03MB/s]
mimic4.db:   5%|▍         | 6.94M/147M [00:06<02:08, 1.09MB/s]
mimic4.db:   5%|▍         | 7.06M/147M [00:06<02:04, 1.13MB/s]
mimic4.db:   5%|▍         | 7.18M/147M [00:06<02:01, 1.15MB/s]
mimic4.db:   5%|▍         | 7.33M/147M [00:06<01:52, 1.24MB/s]
mimic4.db:   5%|▌         | 7.46M/147M [00:06<02:21, 987kB/s]
mimic4.db:   5%|▌         | 7.58M/147M [00:06<02:16, 1.02MB/s]
mimic4.db:   5%|▌         | 7.71M/147M [00:06<02:08, 1.09MB/s]
mimic4.db:   5%|▌         | 7.86M/147M [00:07<01:57, 1.19MB/s]
mimic4.db:   5%|▌         | 7.99M/147M [00:07<01:54, 1.22MB/s]
mimic4.db:   6%|▌         | 8.12M/147M [00:07<02:22, 973kB/s]
mimic4.db:   6%|▌         | 8.25M/147M [00:07<02:11, 1.05MB/s]
mimic4.db:   6%|▌         | 8.45M/147M [00:07<02:14, 1.03MB/s]
mimic4.db:   6%|▌         | 8.56M/147M [00:07<02:11, 1.05MB/s]
mimic4.db:   6%|▌         | 8.74M/147M [00:07<01:51, 1.24MB/s]
mimic4.db:   6%|▌         | 8.94M/147M [00:08<02:01, 1.13MB/s]
mimic4.db:   6%|▌         | 9.06M/147M [00:08<01:59, 1.15MB/s]
mimic4.db:   6%|▌         | 9.18M/147M [00:08<01:57, 1.17MB/s]
mimic4.db:   6%|▋         | 9.31M/147M [00:08<01:56, 1.18MB/s]
mimic4.db:   6%|▋         | 9.43M/147M [00:08<02:26, 938kB/s]
mimic4.db:   6%|▋         | 9.56M/147M [00:08<02:15, 1.02MB/s]
mimic4.db:   7%|▋         | 9.71M/147M [00:08<02:02, 1.12MB/s]
mimic4.db:   7%|▋         | 9.83M/147M [00:08<01:59, 1.15MB/s]
mimic4.db:   7%|▋         | 9.95M/147M [00:08<01:57, 1.17MB/s]
mimic4.db:   7%|▋         | 10.1M/147M [00:09<01:56, 1.18MB/s]
mimic4.db:   7%|▋         | 10.3M/147M [00:09<02:09, 1.06MB/s]
mimic4.db:   7%|▋         | 10.4M/147M [00:09<02:07, 1.07MB/s]
mimic4.db:   7%|▋         | 10.5M/147M [00:09<02:05, 1.09MB/s]
mimic4.db:   7%|▋         | 10.6M/147M [00:09<02:04, 1.10MB/s]
mimic4.db:   7%|▋         | 10.7M/147M [00:09<02:02, 1.11MB/s]
mimic4.db:   7%|▋         | 10.8M/147M [00:09<02:02, 1.11MB/s]
mimic4.db:   7%|▋         | 10.9M/147M [00:09<02:01, 1.12MB/s]
mimic4.db:   8%|▊         | 11.1M/147M [00:10<02:00, 1.13MB/s]
mimic4.db:   8%|▊         | 11.2M/147M [00:10<02:01, 1.12MB/s]
mimic4.db:   8%|▊         | 11.3M/147M [00:10<02:00, 1.13MB/s]
mimic4.db:   8%|▊         | 11.4M/147M [00:10<02:00, 1.12MB/s]
mimic4.db:   8%|▊         | 11.5M/147M [00:10<02:00, 1.13MB/s]
mimic4.db:   8%|▊         | 11.6M/147M [00:10<01:59, 1.13MB/s]
mimic4.db:   8%|▊         | 11.7M/147M [00:10<01:59, 1.13MB/s]
mimic4.db:   8%|▊         | 11.9M/147M [00:10<01:59, 1.13MB/s]
mimic4.db:   8%|▊         | 12.0M/147M [00:10<01:59, 1.13MB/s]
mimic4.db:   8%|▊         | 12.1M/147M [00:11<02:33, 880kB/s]
mimic4.db:   8%|▊         | 12.2M/147M [00:11<02:17, 983kB/s]
mimic4.db:   8%|▊         | 12.3M/147M [00:11<02:14, 1.00MB/s]
mimic4.db:   9%|▊         | 12.5M/147M [00:11<02:13, 1.01MB/s]
mimic4.db:   9%|▊         | 12.6M/147M [00:11<02:11, 1.02MB/s]
mimic4.db:   9%|▊         | 12.7M/147M [00:11<02:10, 1.03MB/s]
mimic4.db:   9%|▊         | 12.9M/147M [00:11<02:06, 1.06MB/s]
mimic4.db:   9%|▉         | 13.0M/147M [00:11<01:54, 1.17MB/s]
mimic4.db:   9%|▉         | 13.2M/147M [00:12<02:07, 1.05MB/s]
mimic4.db:   9%|▉         | 13.4M/147M [00:12<02:05, 1.06MB/s]
mimic4.db:   9%|▉         | 13.6M/147M [00:12<01:52, 1.19MB/s]
mimic4.db:   9%|▉         | 13.8M/147M [00:12<01:53, 1.18MB/s]
mimic4.db:   9%|▉         | 13.9M/147M [00:12<01:50, 1.20MB/s]
mimic4.db:  10%|▉         | 14.1M/147M [00:12<01:48, 1.23MB/s]
mimic4.db:  10%|▉         | 14.2M/147M [00:12<02:02, 1.08MB/s]
mimic4.db:  10%|▉         | 14.4M/147M [00:13<01:50, 1.20MB/s]
mimic4.db:  10%|▉         | 14.5M/147M [00:13<01:47, 1.23MB/s]
mimic4.db:  10%|▉         | 14.7M/147M [00:13<02:12, 998kB/s]
mimic4.db:  10%|█         | 14.8M/147M [00:13<01:52, 1.17MB/s]
mimic4.db:  10%|█         | 15.0M/147M [00:13<01:49, 1.20MB/s]
mimic4.db:  10%|█         | 15.2M/147M [00:13<01:55, 1.15MB/s]
mimic4.db:  10%|█         | 15.3M/147M [00:13<01:53, 1.16MB/s]
mimic4.db:  10%|█         | 15.4M/147M [00:13<01:52, 1.18MB/s]
mimic4.db:  11%|█         | 15.5M/147M [00:14<01:51, 1.18MB/s]
mimic4.db:  11%|█         | 15.7M/147M [00:14<01:49, 1.20MB/s]
mimic4.db:  11%|█         | 15.8M/147M [00:14<02:16, 960kB/s]
mimic4.db:  11%|█         | 16.0M/147M [00:14<01:53, 1.16MB/s]
mimic4.db:  11%|█         | 16.3M/147M [00:14<01:44, 1.26MB/s]
mimic4.db:  11%|█         | 16.6M/147M [00:14<01:37, 1.33MB/s]
mimic4.db:  11%|█▏        | 16.7M/147M [00:14<01:36, 1.35MB/s]
mimic4.db:  11%|█▏        | 16.9M/147M [00:15<01:54, 1.13MB/s]
mimic4.db:  12%|█▏        | 17.2M/147M [00:15<01:36, 1.35MB/s]
mimic4.db:  12%|█▏        | 17.4M/147M [00:15<01:47, 1.21MB/s]
mimic4.db:  12%|█▏        | 17.6M/147M [00:15<01:53, 1.14MB/s]
mimic4.db:  12%|█▏        | 17.7M/147M [00:15<01:47, 1.20MB/s]
mimic4.db:  12%|█▏        | 17.9M/147M [00:15<01:45, 1.23MB/s]
mimic4.db:  12%|█▏        | 18.0M/147M [00:16<02:07, 1.01MB/s]
mimic4.db:  12%|█▏        | 18.1M/147M [00:16<02:04, 1.04MB/s]
mimic4.db:  12%|█▏        | 18.2M/147M [00:16<02:01, 1.06MB/s]
mimic4.db:  12%|█▏        | 18.3M/147M [00:16<01:59, 1.08MB/s]
mimic4.db:  13%|█▎        | 18.5M/147M [00:16<02:02, 1.05MB/s]
mimic4.db:  13%|█▎        | 18.6M/147M [00:16<01:59, 1.07MB/s]
mimic4.db:  13%|█▎        | 18.9M/147M [00:16<01:52, 1.14MB/s]
mimic4.db:  13%|█▎        | 19.1M/147M [00:17<01:57, 1.09MB/s]
mimic4.db:  13%|█▎        | 19.4M/147M [00:17<01:44, 1.23MB/s]
mimic4.db:  13%|█▎        | 19.5M/147M [00:17<01:37, 1.31MB/s]
mimic4.db:  13%|█▎        | 19.7M/147M [00:17<01:46, 1.20MB/s]
mimic4.db:  14%|█▎        | 19.9M/147M [00:17<01:55, 1.10MB/s]
mimic4.db:  14%|█▎        | 20.1M/147M [00:17<01:46, 1.19MB/s]
mimic4.db:  14%|█▎        | 20.2M/147M [00:18<01:44, 1.22MB/s]
mimic4.db:  14%|█▍        | 20.4M/147M [00:18<01:56, 1.09MB/s]
mimic4.db:  14%|█▍        | 20.5M/147M [00:18<01:47, 1.17MB/s]
mimic4.db:  14%|█▍        | 20.7M/147M [00:18<02:09, 980kB/s]
mimic4.db:  14%|█▍        | 20.8M/147M [00:18<02:04, 1.01MB/s]
mimic4.db:  14%|█▍        | 20.9M/147M [00:18<02:02, 1.03MB/s]
mimic4.db:  14%|█▍        | 21.0M/147M [00:18<01:59, 1.06MB/s]
mimic4.db:  14%|█▍        | 21.2M/147M [00:19<02:10, 968kB/s]
mimic4.db:  14%|█▍        | 21.3M/147M [00:19<02:00, 1.04MB/s]
mimic4.db:  15%|█▍        | 21.5M/147M [00:19<01:59, 1.05MB/s]
mimic4.db:  15%|█▍        | 21.7M/147M [00:19<01:58, 1.06MB/s]
mimic4.db:  15%|█▍        | 21.9M/147M [00:19<01:52, 1.11MB/s]
mimic4.db:  15%|█▍        | 22.1M/147M [00:19<01:56, 1.07MB/s]
mimic4.db:  15%|█▌        | 22.2M/147M [00:19<01:55, 1.08MB/s]
mimic4.db:  15%|█▌        | 22.3M/147M [00:20<02:05, 996kB/s]
mimic4.db:  15%|█▌        | 22.5M/147M [00:20<02:10, 957kB/s]
mimic4.db:  15%|█▌        | 22.7M/147M [00:20<02:01, 1.03MB/s]
mimic4.db:  16%|█▌        | 22.9M/147M [00:20<02:00, 1.03MB/s]
mimic4.db:  16%|█▌        | 23.1M/147M [00:20<01:59, 1.04MB/s]
mimic4.db:  16%|█▌        | 23.2M/147M [00:20<01:58, 1.04MB/s]
mimic4.db:  16%|█▌        | 23.3M/147M [00:20<01:58, 1.05MB/s]
mimic4.db:  16%|█▌        | 23.4M/147M [00:21<01:58, 1.05MB/s]
mimic4.db:  16%|█▌        | 23.5M/147M [00:21<02:15, 912kB/s]
mimic4.db:  16%|█▌        | 23.7M/147M [00:21<02:07, 969kB/s]
mimic4.db:  16%|█▌        | 23.8M/147M [00:21<02:04, 987kB/s]
mimic4.db:  16%|█▋        | 23.9M/147M [00:21<02:02, 1.00MB/s]
mimic4.db:  16%|█▋        | 24.1M/147M [00:21<02:21, 869kB/s]
mimic4.db:  16%|█▋        | 24.2M/147M [00:21<02:17, 892kB/s]
mimic4.db:  16%|█▋        | 24.3M/147M [00:22<02:15, 905kB/s]
mimic4.db:  17%|█▋        | 24.4M/147M [00:22<02:02, 1.00MB/s]
mimic4.db:  17%|█▋        | 24.6M/147M [00:22<01:44, 1.17MB/s]
mimic4.db:  17%|█▋        | 24.7M/147M [00:22<01:43, 1.18MB/s]
mimic4.db:  17%|█▋        | 24.8M/147M [00:22<01:43, 1.18MB/s]
mimic4.db:  17%|█▋        | 24.9M/147M [00:22<02:11, 927kB/s]
mimic4.db:  17%|█▋        | 25.1M/147M [00:22<02:15, 899kB/s]
mimic4.db:  17%|█▋        | 25.3M/147M [00:23<02:06, 962kB/s]
mimic4.db:  17%|█▋        | 25.4M/147M [00:23<02:03, 982kB/s]
mimic4.db:  17%|█▋        | 25.7M/147M [00:23<01:54, 1.06MB/s]
mimic4.db:  18%|█▊        | 25.8M/147M [00:23<01:52, 1.08MB/s]
mimic4.db:  18%|█▊        | 26.0M/147M [00:23<01:59, 1.02MB/s]
mimic4.db:  18%|█▊        | 26.2M/147M [00:23<01:50, 1.09MB/s]
mimic4.db:  18%|█▊        | 26.5M/147M [00:24<01:45, 1.14MB/s]
mimic4.db:  18%|█▊        | 26.7M/147M [00:24<01:46, 1.13MB/s]
mimic4.db:  18%|█▊        | 26.9M/147M [00:24<01:44, 1.15MB/s]
mimic4.db:  18%|█▊        | 27.0M/147M [00:24<01:43, 1.16MB/s]
mimic4.db:  18%|█▊        | 27.1M/147M [00:24<01:42, 1.17MB/s]
mimic4.db:  19%|█▊        | 27.3M/147M [00:24<01:41, 1.18MB/s]
mimic4.db:  19%|█▊        | 27.4M/147M [00:24<02:00, 993kB/s]
mimic4.db:  19%|█▊        | 27.5M/147M [00:25<01:56, 1.03MB/s]
mimic4.db:  19%|█▉        | 27.7M/147M [00:25<01:49, 1.09MB/s]
mimic4.db:  19%|█▉        | 27.8M/147M [00:25<01:48, 1.10MB/s]
mimic4.db:  19%|█▉        | 27.9M/147M [00:25<01:59, 995kB/s]
mimic4.db:  19%|█▉        | 28.1M/147M [00:25<01:59, 997kB/s]
mimic4.db:  19%|█▉        | 28.3M/147M [00:25<01:51, 1.06MB/s]
mimic4.db:  19%|█▉        | 28.5M/147M [00:25<01:54, 1.04MB/s]
mimic4.db:  19%|█▉        | 28.6M/147M [00:26<01:51, 1.06MB/s]
mimic4.db:  19%|█▉        | 28.7M/147M [00:26<01:47, 1.10MB/s]
mimic4.db:  20%|█▉        | 28.8M/147M [00:26<02:05, 943kB/s]
mimic4.db:  20%|█▉        | 28.9M/147M [00:26<02:02, 963kB/s]
mimic4.db:  20%|█▉        | 29.2M/147M [00:26<01:54, 1.03MB/s]
mimic4.db:  20%|█▉        | 29.3M/147M [00:26<01:41, 1.16MB/s]
mimic4.db:  20%|██        | 29.6M/147M [00:26<01:39, 1.19MB/s]
mimic4.db:  20%|██        | 29.7M/147M [00:27<01:38, 1.19MB/s]
mimic4.db:  20%|██        | 29.9M/147M [00:27<01:43, 1.13MB/s]
mimic4.db:  20%|██        | 30.1M/147M [00:27<01:29, 1.31MB/s]
mimic4.db:  21%|██        | 30.2M/147M [00:27<01:46, 1.10MB/s]
mimic4.db:  21%|██        | 30.5M/147M [00:27<01:44, 1.12MB/s]
mimic4.db:  21%|██        | 30.6M/147M [00:27<01:42, 1.14MB/s]
mimic4.db:  21%|██        | 30.8M/147M [00:28<01:46, 1.10MB/s]
mimic4.db:  21%|██        | 31.0M/147M [00:28<01:27, 1.33MB/s]
mimic4.db:  21%|██        | 31.2M/147M [00:28<01:36, 1.20MB/s]
mimic4.db:  21%|██▏       | 31.4M/147M [00:28<01:39, 1.16MB/s]
mimic4.db:  22%|██▏       | 31.7M/147M [00:28<01:36, 1.19MB/s]
mimic4.db:  22%|██▏       | 31.9M/147M [00:28<01:35, 1.21MB/s]
mimic4.db:  22%|██▏       | 32.1M/147M [00:29<01:33, 1.23MB/s]
mimic4.db:  22%|██▏       | 32.4M/147M [00:29<01:27, 1.31MB/s]
mimic4.db:  22%|██▏       | 32.5M/147M [00:29<01:25, 1.34MB/s]
mimic4.db:  22%|██▏       | 32.7M/147M [00:29<01:34, 1.22MB/s]
mimic4.db:  22%|██▏       | 32.9M/147M [00:29<01:40, 1.14MB/s]
mimic4.db:  22%|██▏       | 33.0M/147M [00:29<01:38, 1.16MB/s]
mimic4.db:  23%|██▎       | 33.1M/147M [00:29<01:37, 1.17MB/s]
mimic4.db:  23%|██▎       | 33.3M/147M [00:30<01:49, 1.04MB/s]
mimic4.db:  23%|██▎       | 33.6M/147M [00:30<01:37, 1.17MB/s]
mimic4.db:  23%|██▎       | 33.7M/147M [00:30<01:50, 1.02MB/s]
mimic4.db:  23%|██▎       | 34.0M/147M [00:30<01:40, 1.12MB/s]
mimic4.db:  23%|██▎       | 34.1M/147M [00:30<01:52, 1.00MB/s]
mimic4.db:  23%|██▎       | 34.4M/147M [00:31<01:47, 1.05MB/s]
mimic4.db:  23%|██▎       | 34.5M/147M [00:31<01:47, 1.05MB/s]
mimic4.db:  24%|██▎       | 34.7M/147M [00:31<01:47, 1.05MB/s]
mimic4.db:  24%|██▎       | 34.9M/147M [00:31<01:34, 1.19MB/s]
mimic4.db:  24%|██▍       | 35.0M/147M [00:31<01:52, 997kB/s]
mimic4.db:  24%|██▍       | 35.2M/147M [00:31<01:51, 1.01MB/s]
mimic4.db:  24%|██▍       | 35.4M/147M [00:32<01:42, 1.09MB/s]
mimic4.db:  24%|██▍       | 35.8M/147M [00:32<01:25, 1.30MB/s]
mimic4.db:  24%|██▍       | 36.0M/147M [00:32<01:26, 1.29MB/s]
mimic4.db:  25%|██▍       | 36.3M/147M [00:32<01:23, 1.34MB/s]
mimic4.db:  25%|██▍       | 36.4M/147M [00:32<01:22, 1.35MB/s]
mimic4.db:  25%|██▍       | 36.7M/147M [00:33<01:25, 1.30MB/s]
mimic4.db:  25%|██▌       | 36.9M/147M [00:33<01:30, 1.22MB/s]
mimic4.db:  25%|██▌       | 37.1M/147M [00:33<01:29, 1.23MB/s]
mimic4.db:  25%|██▌       | 37.3M/147M [00:33<01:28, 1.24MB/s]
mimic4.db:  25%|██▌       | 37.4M/147M [00:33<01:27, 1.25MB/s]
mimic4.db:  26%|██▌       | 37.6M/147M [00:33<01:39, 1.10MB/s]
mimic4.db:  26%|██▌       | 37.7M/147M [00:34<01:46, 1.03MB/s]
mimic4.db:  26%|██▌       | 37.9M/147M [00:34<01:43, 1.05MB/s]
mimic4.db:  26%|██▌       | 38.0M/147M [00:34<01:41, 1.07MB/s]
mimic4.db:  26%|██▌       | 38.1M/147M [00:34<01:55, 946kB/s]
mimic4.db:  26%|██▌       | 38.4M/147M [00:34<01:46, 1.02MB/s]
mimic4.db:  26%|██▌       | 38.6M/147M [00:34<01:41, 1.07MB/s]
mimic4.db:  26%|██▋       | 38.7M/147M [00:34<01:39, 1.09MB/s]
mimic4.db:  26%|██▋       | 38.8M/147M [00:35<01:55, 939kB/s]
mimic4.db:  27%|██▋       | 39.0M/147M [00:35<01:49, 991kB/s]
mimic4.db:  27%|██▋       | 39.3M/147M [00:35<01:43, 1.05MB/s]
mimic4.db:  27%|██▋       | 39.5M/147M [00:35<01:42, 1.05MB/s]
mimic4.db:  27%|██▋       | 39.7M/147M [00:35<01:36, 1.11MB/s]
mimic4.db:  27%|██▋       | 39.8M/147M [00:35<01:35, 1.12MB/s]
mimic4.db:  27%|██▋       | 40.0M/147M [00:36<01:39, 1.08MB/s]
mimic4.db:  27%|██▋       | 40.2M/147M [00:36<01:32, 1.16MB/s]
mimic4.db:  27%|██▋       | 40.3M/147M [00:36<01:50, 969kB/s]
mimic4.db:  28%|██▊       | 40.5M/147M [00:36<01:44, 1.02MB/s]
mimic4.db:  28%|██▊       | 40.6M/147M [00:36<01:43, 1.03MB/s]
mimic4.db:  28%|██▊       | 40.8M/147M [00:36<01:43, 1.03MB/s]
mimic4.db:  28%|██▊       | 40.9M/147M [00:37<01:43, 1.03MB/s]
mimic4.db:  28%|██▊       | 41.1M/147M [00:37<01:52, 943kB/s]
mimic4.db:  28%|██▊       | 41.2M/147M [00:37<01:47, 982kB/s]
mimic4.db:  28%|██▊       | 41.4M/147M [00:37<01:43, 1.02MB/s]
mimic4.db:  28%|██▊       | 41.7M/147M [00:37<01:35, 1.11MB/s]
mimic4.db:  28%|██▊       | 41.9M/147M [00:37<01:22, 1.28MB/s]
mimic4.db:  29%|██▊       | 42.0M/147M [00:38<01:31, 1.15MB/s]
mimic4.db:  29%|██▊       | 42.2M/147M [00:38<01:24, 1.25MB/s]
mimic4.db:  29%|██▉       | 42.4M/147M [00:38<01:18, 1.34MB/s]
mimic4.db:  29%|██▉       | 42.5M/147M [00:38<01:16, 1.36MB/s]
mimic4.db:  29%|██▉       | 42.7M/147M [00:38<01:15, 1.39MB/s]
mimic4.db:  29%|██▉       | 42.9M/147M [00:38<01:28, 1.18MB/s]
mimic4.db:  29%|██▉       | 43.0M/147M [00:38<01:33, 1.11MB/s]
mimic4.db:  29%|██▉       | 43.2M/147M [00:38<01:31, 1.13MB/s]
mimic4.db:  29%|██▉       | 43.3M/147M [00:39<01:50, 938kB/s]
mimic4.db:  30%|██▉       | 43.5M/147M [00:39<01:52, 924kB/s]
mimic4.db:  30%|██▉       | 43.6M/147M [00:39<01:49, 949kB/s]
mimic4.db:  30%|██▉       | 43.8M/147M [00:39<01:40, 1.03MB/s]
mimic4.db:  30%|██▉       | 44.0M/147M [00:39<01:29, 1.15MB/s]
mimic4.db:  30%|██▉       | 44.1M/147M [00:39<01:26, 1.19MB/s]
mimic4.db:  30%|███       | 44.3M/147M [00:39<01:19, 1.30MB/s]
mimic4.db:  30%|███       | 44.4M/147M [00:40<01:18, 1.32MB/s]
mimic4.db:  30%|███       | 44.6M/147M [00:40<01:25, 1.20MB/s]
mimic4.db:  30%|███       | 44.8M/147M [00:40<01:21, 1.26MB/s]
mimic4.db:  31%|███       | 44.9M/147M [00:40<01:15, 1.35MB/s]
mimic4.db:  31%|███       | 45.1M/147M [00:40<01:13, 1.39MB/s]
mimic4.db:  31%|███       | 45.2M/147M [00:40<01:12, 1.41MB/s]
mimic4.db:  31%|███       | 45.4M/147M [00:40<01:31, 1.11MB/s]
mimic4.db:  31%|███       | 45.5M/147M [00:40<01:28, 1.15MB/s]
mimic4.db:  31%|███       | 45.7M/147M [00:41<01:25, 1.19MB/s]
mimic4.db:  31%|███       | 45.9M/147M [00:41<01:23, 1.21MB/s]
mimic4.db:  31%|███▏      | 46.0M/147M [00:41<01:21, 1.24MB/s]
mimic4.db:  31%|███▏      | 46.1M/147M [00:41<01:20, 1.25MB/s]
mimic4.db:  31%|███▏      | 46.3M/147M [00:41<01:19, 1.27MB/s]
mimic4.db:  32%|███▏      | 46.4M/147M [00:41<01:19, 1.27MB/s]
mimic4.db:  32%|███▏      | 46.5M/147M [00:41<01:40, 1.01MB/s]
mimic4.db:  32%|███▏      | 46.6M/147M [00:41<01:36, 1.04MB/s]
mimic4.db:  32%|███▏      | 46.8M/147M [00:42<01:34, 1.06MB/s]
mimic4.db:  32%|███▏      | 46.9M/147M [00:42<01:32, 1.08MB/s]
mimic4.db:  32%|███▏      | 47.1M/147M [00:42<01:39, 1.01MB/s]
mimic4.db:  32%|███▏      | 47.2M/147M [00:42<01:23, 1.19MB/s]
mimic4.db:  32%|███▏      | 47.4M/147M [00:42<01:38, 1.01MB/s]
mimic4.db:  32%|███▏      | 47.5M/147M [00:42<01:34, 1.06MB/s]
mimic4.db:  32%|███▏      | 47.7M/147M [00:42<01:21, 1.22MB/s]
mimic4.db:  33%|███▎      | 47.8M/147M [00:43<01:31, 1.09MB/s]
mimic4.db:  33%|███▎      | 48.0M/147M [00:43<01:35, 1.03MB/s]
mimic4.db:  33%|███▎      | 48.3M/147M [00:43<01:20, 1.23MB/s]
mimic4.db:  33%|███▎      | 48.5M/147M [00:43<01:26, 1.14MB/s]
mimic4.db:  33%|███▎      | 48.7M/147M [00:43<01:31, 1.07MB/s]
mimic4.db:  33%|███▎      | 48.9M/147M [00:44<01:30, 1.08MB/s]
mimic4.db:  33%|███▎      | 49.1M/147M [00:44<01:29, 1.09MB/s]
mimic4.db:  34%|███▎      | 49.3M/147M [00:44<01:29, 1.10MB/s]
mimic4.db:  34%|███▎      | 49.6M/147M [00:44<01:28, 1.10MB/s]
mimic4.db:  34%|███▍      | 49.7M/147M [00:44<01:35, 1.03MB/s]
mimic4.db:  34%|███▍      | 49.9M/147M [00:44<01:30, 1.08MB/s]
mimic4.db:  34%|███▍      | 50.7M/147M [00:45<00:48, 1.99MB/s]
mimic4.db:  35%|███▌      | 52.2M/147M [00:45<00:25, 3.66MB/s]
mimic4.db:  36%|███▌      | 52.9M/147M [00:46<01:11, 1.31MB/s]
mimic4.db:  36%|███▌      | 53.2M/147M [00:46<01:06, 1.42MB/s]
mimic4.db:  37%|███▋      | 53.8M/147M [00:47<00:55, 1.68MB/s]
mimic4.db:  37%|███▋      | 54.6M/147M [00:47<00:42, 2.19MB/s]
mimic4.db:  37%|███▋      | 55.0M/147M [00:47<00:38, 2.38MB/s]
mimic4.db:  38%|███▊      | 55.4M/147M [00:47<00:35, 2.56MB/s]
mimic4.db:  38%|███▊      | 55.9M/147M [00:47<00:33, 2.74MB/s]
mimic4.db:  38%|███▊      | 56.6M/147M [00:47<00:29, 3.03MB/s]
mimic4.db:  39%|███▉      | 57.5M/147M [00:47<00:25, 3.49MB/s]
mimic4.db:  40%|███▉      | 58.3M/147M [00:48<00:23, 3.75MB/s]
mimic4.db:  40%|████      | 59.2M/147M [00:48<00:22, 3.95MB/s]
mimic4.db:  41%|████      | 59.7M/147M [00:48<00:20, 4.27MB/s]
mimic4.db:  41%|████      | 60.2M/147M [00:48<00:24, 3.62MB/s]
mimic4.db:  41%|████▏     | 60.7M/147M [00:48<00:22, 3.90MB/s]
mimic4.db:  42%|████▏     | 61.2M/147M [00:48<00:21, 4.07MB/s]
mimic4.db:  42%|████▏     | 61.7M/147M [00:48<00:19, 4.33MB/s]
mimic4.db:  42%|████▏     | 62.3M/147M [00:49<00:18, 4.62MB/s]
mimic4.db:  43%|████▎     | 62.9M/147M [00:49<00:21, 3.89MB/s]
mimic4.db:  43%|████▎     | 63.5M/147M [00:49<00:23, 3.57MB/s]
mimic4.db:  44%|████▎     | 64.2M/147M [00:49<00:19, 4.33MB/s]
mimic4.db:  44%|████▍     | 64.7M/147M [00:49<00:22, 3.68MB/s]
mimic4.db:  44%|████▍     | 65.3M/147M [00:49<00:19, 4.30MB/s]
mimic4.db:  45%|████▍     | 65.9M/147M [00:50<00:21, 3.82MB/s]
mimic4.db:  45%|████▌     | 66.8M/147M [00:50<00:20, 4.01MB/s]
mimic4.db:  46%|████▌     | 67.3M/147M [00:50<00:18, 4.34MB/s]
mimic4.db:  46%|████▌     | 68.0M/147M [00:50<00:20, 3.94MB/s]
mimic4.db:  47%|████▋     | 68.6M/147M [00:50<00:17, 4.42MB/s]
mimic4.db:  47%|████▋     | 69.1M/147M [00:50<00:17, 4.52MB/s]
mimic4.db:  47%|████▋     | 69.6M/147M [00:50<00:16, 4.62MB/s]
mimic4.db:  48%|████▊     | 70.1M/147M [00:51<00:19, 3.87MB/s]
mimic4.db:  48%|████▊     | 70.8M/147M [00:51<00:16, 4.72MB/s]
mimic4.db:  48%|████▊     | 71.4M/147M [00:51<00:19, 3.97MB/s]
mimic4.db:  49%|████▉     | 72.2M/147M [00:51<00:18, 4.06MB/s]
mimic4.db:  50%|████▉     | 73.0M/147M [00:51<00:17, 4.13MB/s]
mimic4.db:  50%|█████     | 73.8M/147M [00:51<00:17, 4.20MB/s]
mimic4.db:  51%|█████     | 74.7M/147M [00:52<00:16, 4.33MB/s]
mimic4.db:  51%|█████▏    | 75.5M/147M [00:52<00:16, 4.31MB/s]
mimic4.db:  52%|█████▏    | 76.4M/147M [00:52<00:16, 4.30MB/s]
mimic4.db:  52%|█████▏    | 77.1M/147M [00:52<00:16, 4.14MB/s]
mimic4.db:  53%|█████▎    | 78.0M/147M [00:53<00:26, 2.64MB/s]
mimic4.db:  53%|█████▎    | 78.4M/147M [00:53<00:23, 2.89MB/s]
mimic4.db:  54%|█████▎    | 79.1M/147M [00:53<00:22, 3.04MB/s]
mimic4.db:  54%|█████▍    | 79.7M/147M [00:53<00:19, 3.43MB/s]
mimic4.db:  54%|█████▍    | 80.2M/147M [00:53<00:18, 3.55MB/s]
mimic4.db:  55%|█████▍    | 80.7M/147M [00:53<00:19, 3.42MB/s]
mimic4.db:  55%|█████▌    | 81.3M/147M [00:54<00:17, 3.80MB/s]
mimic4.db:  56%|█████▌    | 81.9M/147M [00:54<00:16, 3.87MB/s]
mimic4.db:  56%|█████▌    | 82.6M/147M [00:54<00:15, 4.11MB/s]
mimic4.db:  57%|█████▋    | 83.2M/147M [00:54<00:15, 4.10MB/s]
mimic4.db:  57%|█████▋    | 83.9M/147M [00:54<00:14, 4.36MB/s]
mimic4.db:  57%|█████▋    | 84.4M/147M [00:54<00:15, 4.02MB/s]
mimic4.db:  58%|█████▊    | 85.3M/147M [00:54<00:14, 4.22MB/s]
mimic4.db:  58%|█████▊    | 86.0M/147M [00:55<00:14, 4.17MB/s]
mimic4.db:  59%|█████▉    | 86.7M/147M [00:55<00:15, 3.98MB/s]
mimic4.db:  59%|█████▉    | 87.5M/147M [00:55<00:15, 3.95MB/s]
mimic4.db:  60%|█████▉    | 88.3M/147M [00:55<00:14, 4.05MB/s]
mimic4.db:  61%|██████    | 89.1M/147M [00:55<00:14, 4.06MB/s]
mimic4.db:  61%|██████    | 90.0M/147M [00:56<00:13, 4.23MB/s]
mimic4.db:  62%|██████▏   | 90.8M/147M [00:56<00:13, 4.24MB/s]
mimic4.db:  62%|██████▏   | 91.7M/147M [00:56<00:12, 4.31MB/s]
mimic4.db:  63%|██████▎   | 92.1M/147M [00:57<00:28, 1.95MB/s]
mimic4.db:  63%|██████▎   | 92.4M/147M [00:57<00:26, 2.07MB/s]
mimic4.db:  63%|██████▎   | 92.9M/147M [00:57<00:21, 2.50MB/s]
mimic4.db:  63%|██████▎   | 93.3M/147M [00:57<00:20, 2.68MB/s]
mimic4.db:  64%|██████▎   | 93.7M/147M [00:57<00:21, 2.48MB/s]
mimic4.db:  64%|██████▍   | 94.0M/147M [00:57<00:20, 2.54MB/s]
mimic4.db:  64%|██████▍   | 94.3M/147M [00:58<00:22, 2.40MB/s]
mimic4.db:  64%|██████▍   | 94.7M/147M [00:58<00:19, 2.69MB/s]
mimic4.db:  65%|██████▍   | 95.2M/147M [00:58<00:16, 3.17MB/s]
mimic4.db:  65%|██████▍   | 95.6M/147M [00:58<00:17, 2.93MB/s]
mimic4.db:  65%|██████▌   | 95.9M/147M [00:58<00:17, 2.99MB/s]
mimic4.db:  66%|██████▌   | 96.4M/147M [00:58<00:14, 3.48MB/s]
mimic4.db:  66%|██████▌   | 96.8M/147M [00:58<00:14, 3.60MB/s]
mimic4.db:  66%|██████▌   | 97.2M/147M [00:58<00:14, 3.42MB/s]
mimic4.db:  66%|██████▋   | 97.6M/147M [00:58<00:14, 3.47MB/s]
mimic4.db:  67%|██████▋   | 98.0M/147M [00:59<00:13, 3.73MB/s]
mimic4.db:  67%|██████▋   | 98.5M/147M [00:59<00:11, 4.12MB/s]
mimic4.db:  67%|██████▋   | 99.2M/147M [00:59<00:09, 4.88MB/s]
mimic4.db:  68%|██████▊   | 99.9M/147M [00:59<00:08, 5.34MB/s]
mimic4.db:  68%|██████▊   | 101M/147M [00:59<00:08, 5.79MB/s]
mimic4.db:  69%|██████▉   | 101M/147M [00:59<00:09, 4.84MB/s]
mimic4.db:  69%|██████▉   | 102M/147M [00:59<00:12, 3.75MB/s]
mimic4.db:  69%|██████▉   | 102M/147M [01:00<00:12, 3.52MB/s]
mimic4.db:  70%|██████▉   | 103M/147M [01:00<00:12, 3.66MB/s]
mimic4.db:  70%|███████   | 103M/147M [01:00<00:10, 4.04MB/s]
mimic4.db:  70%|███████   | 104M/147M [01:00<00:10, 4.34MB/s]
mimic4.db:  71%|███████   | 104M/147M [01:00<00:08, 5.05MB/s]
mimic4.db:  71%|███████▏  | 105M/147M [01:00<00:07, 5.54MB/s]
mimic4.db:  72%|███████▏  | 106M/147M [01:00<00:09, 4.19MB/s]
mimic4.db:  72%|███████▏  | 106M/147M [01:00<00:10, 3.99MB/s]
mimic4.db:  72%|███████▏  | 107M/147M [01:00<00:09, 4.20MB/s]
mimic4.db:  73%|███████▎  | 107M/147M [01:01<00:09, 4.43MB/s]
mimic4.db:  73%|███████▎  | 108M/147M [01:01<00:07, 5.04MB/s]
mimic4.db:  74%|███████▎  | 109M/147M [01:01<00:07, 5.40MB/s]
mimic4.db:  74%|███████▍  | 109M/147M [01:01<00:07, 5.31MB/s]
mimic4.db:  75%|███████▍  | 110M/147M [01:01<00:06, 5.62MB/s]
mimic4.db:  75%|███████▌  | 111M/147M [01:01<00:05, 6.34MB/s]
mimic4.db:  76%|███████▌  | 112M/147M [01:01<00:04, 7.14MB/s]
mimic4.db:  76%|███████▋  | 112M/147M [01:01<00:04, 7.15MB/s]
mimic4.db:  77%|███████▋  | 113M/147M [01:01<00:04, 6.92MB/s]
mimic4.db:  77%|███████▋  | 114M/147M [01:02<00:04, 6.89MB/s]
mimic4.db:  78%|███████▊  | 114M/147M [01:02<00:04, 6.62MB/s]
mimic4.db:  78%|███████▊  | 115M/147M [01:02<00:05, 6.05MB/s]
mimic4.db:  79%|███████▊  | 116M/147M [01:02<00:05, 5.56MB/s]
mimic4.db:  79%|███████▉  | 116M/147M [01:02<00:07, 4.12MB/s]
mimic4.db:  79%|███████▉  | 117M/147M [01:02<00:09, 3.32MB/s]
mimic4.db:  80%|███████▉  | 117M/147M [01:03<00:08, 3.42MB/s]
mimic4.db:  80%|███████▉  | 118M/147M [01:03<00:07, 3.91MB/s]
mimic4.db:  80%|████████  | 118M/147M [01:03<00:06, 4.42MB/s]
mimic4.db:  81%|████████  | 119M/147M [01:03<00:05, 4.86MB/s]
mimic4.db:  81%|████████▏ | 120M/147M [01:03<00:04, 5.54MB/s]
mimic4.db:  82%|████████▏ | 120M/147M [01:03<00:04, 6.12MB/s]
mimic4.db:  83%|████████▎ | 121M/147M [01:03<00:03, 7.16MB/s]
mimic4.db:  83%|████████▎ | 122M/147M [01:03<00:03, 7.58MB/s]
mimic4.db:  84%|████████▍ | 123M/147M [01:03<00:02, 8.45MB/s]
mimic4.db:  85%|████████▍ | 124M/147M [01:03<00:02, 8.99MB/s]
mimic4.db:  85%|████████▌ | 125M/147M [01:04<00:02, 8.05MB/s]
mimic4.db:  86%|████████▌ | 126M/147M [01:04<00:02, 8.02MB/s]
mimic4.db:  86%|████████▋ | 127M/147M [01:04<00:02, 8.53MB/s]
mimic4.db:  87%|████████▋ | 128M/147M [01:04<00:02, 7.14MB/s]
mimic4.db:  88%|████████▊ | 129M/147M [01:04<00:02, 6.28MB/s]
mimic4.db:  88%|████████▊ | 130M/147M [01:04<00:03, 5.74MB/s]
mimic4.db:  88%|████████▊ | 130M/147M [01:04<00:02, 5.68MB/s]
mimic4.db:  89%|████████▉ | 131M/147M [01:04<00:02, 5.54MB/s]
mimic4.db:  89%|████████▉ | 131M/147M [01:05<00:03, 4.88MB/s]
mimic4.db:  90%|████████▉ | 132M/147M [01:05<00:03, 4.47MB/s]
mimic4.db:  90%|████████▉ | 132M/147M [01:05<00:03, 4.55MB/s]
mimic4.db:  90%|█████████ | 133M/147M [01:05<00:03, 3.99MB/s]
mimic4.db:  91%|█████████ | 133M/147M [01:05<00:03, 4.07MB/s]
mimic4.db:  91%|█████████ | 134M/147M [01:05<00:02, 4.69MB/s]
mimic4.db:  91%|█████████▏| 135M/147M [01:05<00:02, 5.40MB/s]
mimic4.db:  92%|█████████▏| 136M/147M [01:05<00:01, 6.34MB/s]
mimic4.db:  93%|█████████▎| 136M/147M [01:06<00:01, 6.83MB/s]
mimic4.db:  93%|█████████▎| 137M/147M [01:06<00:01, 7.00MB/s]
mimic4.db:  94%|█████████▎| 138M/147M [01:06<00:01, 6.07MB/s]
mimic4.db:  94%|█████████▍| 139M/147M [01:06<00:01, 6.10MB/s]
mimic4.db:  95%|█████████▍| 139M/147M [01:06<00:01, 6.12MB/s]
mimic4.db:  95%|█████████▌| 140M/147M [01:06<00:01, 6.49MB/s]
mimic4.db:  96%|█████████▌| 141M/147M [01:06<00:00, 7.33MB/s]
mimic4.db:  96%|█████████▋| 142M/147M [01:06<00:00, 8.44MB/s]
mimic4.db:  97%|█████████▋| 143M/147M [01:06<00:00, 8.57MB/s]
mimic4.db:  98%|█████████▊| 144M/147M [01:07<00:00, 8.06MB/s]
mimic4.db:  98%|█████████▊| 145M/147M [01:07<00:00, 6.39MB/s]
mimic4.db:  99%|█████████▊| 145M/147M [01:07<00:00, 5.21MB/s]
mimic4.db:  99%|█████████▉| 146M/147M [01:07<00:00, 5.30MB/s]
mimic4.db: 100%|█████████▉| 147M/147M [01:07<00:00, 5.64MB/s]
mimic4.db: 100%|██████████| 147M/147M [01:07<00:00, 2.17MB/s]
┌─ Interval SequenceStore
│
│ Step 1/4: Sorting & preparing data
│
│ Step 2/4: Building sequence index
│
│ Step 3/4: Writing entity, time index & static features
│
│ Step 4/4: Computing & writing metadata
│
└─ Done (100 sequences · 275 entities · 0.01s)
print(pool)
┌────────────────────────────────────────────────┐
│          IntervalSequencePool Summary          │
└────────────────────────────────────────────────┘

Overview
─────────────────────────
  Sequences          100
  Store              /home/runner/.tanat_workspace/building_pools_tutorial/admissions_store
  id_column          id

Time Index
─────────────────────────
  Type               Datetime(time_unit='us', time_zone=None) [2110-04-11 15:08:00 → 2201-12-17 13:45:00]
  Columns            ['start', 'end']
  t0                 position=0, anchor=start

Entity Features (2)
─────────────────────────
  • admission_location  String [len 4 → 38]
  • admission_type      Categorical (9 categories)

Static Features (2)
─────────────────────────
  • age                 String [len 2 → 2]
  • gender              String [len 1 → 1]

Describe the cohort#

describe() summarises the pool. by_id=False returns aggregate statistics across all patients; by_id=True returns one row per patient.

pool.describe(by_id=False)
length n_unique_entities temporal_span mean_duration median_duration duration_std
count 100.0 100.0 100 100 100 48
mean 2.75 1.99 413 days, 0:10:54.600000 7 days, 4:56:27.743589 6 days, 18:02:05.100000 4 days, 23:11:59.681726
std 3.1794 1.772375 741 days, 2:30:07.516422 4 days, 16:37:15.025824 4 days, 17:27:50.846985 4 days, 6:06:17.577637
min 1.0 1.0 1 day, 17:41:00 1 day, 10:40:00 1 day, 1:05:00 4:13:51.080066
25% 1.0 1.0 5 days 07:14:15 4 days 06:05:41.250000 3 days 14:53:00 1 days 23:23:12.226422
50% 1.0 1.0 17 days 15:58:00 5 days 20:20:30 5 days 14:16:00 4 days 00:05:44.921627
75% 3.0 2.0 378 days 03:34:15 9 days 00:45:07.500000 8 days 02:43:07.500000 5 days 17:36:44.883104
max 20.0 12.0 2919 days, 23:04:00 31 days, 7:23:00 31 days, 7:23:00 19 days, 8:22:02.894585


pool.describe(by_id=True).head()
id length n_unique_entities temporal_span mean_duration median_duration duration_std
0 10000032 4 2 92 days 19:27:00 1 days 10:40:00 1 days 09:14:00 0 days 15:54:37.681517
1 10001217 2 2 35 days 15:59:00 6 days 08:30:30 6 days 08:30:30 0 days 14:55:54.257505
2 10001725 1 1 2 days 23:52:00 2 days 23:52:00 2 days 23:52:00 <NA>
3 10002428 7 3 1828 days 23:34:00 5 days 14:54:34.285714 2 days 20:01:00 6 days 02:49:59.949894
4 10002495 1 1 6 days 21:24:00 6 days 21:24:00 6 days 21:24:00 <NA>


Distribution of admission types#

A barplot gives a quick overview of how often each admission type appears across the full cohort.

# fmt: off
SequenceVisualizer.barplot() \
    .title("Admission-type distribution (all patients)") \
    .colors("tab10") \
    .draw(pool, entity_feature="admission_type") \
    .show()
# fmt: on
Admission-type distribution (all patients)

Individual patient timeline#

Indexing the pool by a patient ID returns a Sequence whose admissions can be rendered as a horizontal timeline.

pid = pool.unique_ids[0]
seq = pool[pid]

print(f"Patient {pid}: {len(seq)} admissions")
print(seq.temporal_data())
Patient 10000032: 4 admissions
         id                start  ...      admission_location admission_type
0  10000032  2180-05-06 22:23:00  ...  TRANSFER FROM HOSPITAL         URGENT
1  10000032  2180-06-26 18:27:00  ...          EMERGENCY ROOM       EW EMER.
2  10000032  2180-07-23 12:35:00  ...          EMERGENCY ROOM       EW EMER.
3  10000032  2180-08-05 23:44:00  ...          EMERGENCY ROOM       EW EMER.

[4 rows x 5 columns]
# fmt: off
SequenceVisualizer.timeline() \
    .title(f"Admission timeline - patient {pid}") \
    .colors("tab10") \
    .draw(seq, entity_feature="admission_type") \
    .show()
# fmt: on
Admission timeline - patient 10000032

Explore duration of admissions#

A span plot shows the duration of each admission type as a box plot. This reveals which admission types tend to be short (e.g. observation) vs. long (e.g. elective surgery).

# fmt: off
SequenceVisualizer.spanplot(display_unit="hours") \
    .title("Admission durations") \
    .colors("tab10") \
    .x_axis(rotation=80) \
    .y_axis(label="Duration (hours)") \
    .draw(pool, entity_feature="admission_type") \
    .show()
# fmt: on
Admission durations

Train / test split#

train_test_split() splits at the patient level for downstream predictive modelling.

train, test = pool.train_test_split(test_size=0.2, random_state=42)

print(f"Train : {len(train)} patients")
print(f"Test  : {len(test)} patients")
Train : 80 patients
Test  : 20 patients

Merging splits#

extend() merges two pools back into one. Here we verify that the combined pool recovers all original patients.

extended = train.extend(test)
print(len(extended))
100

Total running time of the script: (1 minutes 9.699 seconds)

Gallery generated by Sphinx-Gallery