{ "cells": [ { "cell_type": "markdown", "id": "67fc810a", "metadata": {}, "source": [ "# Comparing runtimes of different stop detection algorithms on toy datasets" ] }, { "cell_type": "markdown", "id": "f152187c", "metadata": {}, "source": [ "Here we compare the runtimes of four different stop detection algorithms: Lachesis, grid-based, temporal DBSCAN, and HDBSCAN." ] }, { "cell_type": "code", "execution_count": 1, "id": "474229df", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:44.456328Z", "iopub.status.busy": "2026-08-13T02:23:44.456328Z", "iopub.status.idle": "2026-08-13T02:23:47.743328Z", "shell.execute_reply": "2026-08-13T02:23:47.743328Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lachesis execution time: 0.02348613739013672 seconds\n", "TA-DBSCAN execution time: 0.06668949127197266 seconds\n", "TA-DBSCAN clustering time: 0.06668949127197266 seconds\n", "TA-DBSCAN label extraction time: 0.0 seconds\n", "Grid-Based execution time: 0.03886771202087402 seconds\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "HDBSCAN execution time: 0.45995259284973145 seconds\n", "HDBSCAN clustering time: 0.45995259284973145 seconds\n", "HDBSCAN label extraction time: 0.0 seconds\n" ] } ], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "# Imports\n", "import nomad.io.base as loader\n", "import geopandas as gpd\n", "from shapely.geometry import box\n", "import pandas as pd\n", "import numpy as np\n", "from nomad.stop_detection.viz import plot_stops_barcode, plot_pings, plot_stops, plot_time_barcode\n", "from nomad.stop_detection.density_algs import ta_dbscan_labels\n", "from nomad.stop_detection.sequential_algs import lachesis\n", "from nomad.stop_detection.sequential_algs import grid_based\n", "from nomad.stop_detection.density_algs import hdbscan_labels\n", "import nomad.filters as filters \n", "import nomad.stop_detection.postprocessing as post\n", "import time\n", "from tqdm import tqdm\n", "\n", "# Load data\n", "import nomad.data as data_folder\n", "from pathlib import Path\n", "data_dir = Path(data_folder.__file__).parent\n", "city = gpd.read_parquet(data_dir / 'garden-city-buildings-mercator.parquet')\n", "outer_box = box(*city.total_bounds).buffer(15, join_style='mitre')\n", "\n", "filepath_root = data_dir / \"gc_data_long\"\n", "tc = {\n", " \"user_id\": \"gc_identifier\",\n", " \"timestamp\": \"unix_ts\",\n", " \"x\": \"dev_x\",\n", " \"y\": \"dev_y\",\n", " \"ha\":\"ha\",\n", " \"date\":\"date\"}\n", "\n", "users = ['admiring_brattain']\n", "traj = loader.sample_from_file(filepath_root, format='parquet', users=users, filters=('date','==', '2024-01-01'), traj_cols=tc)\n", "\n", "# Lachesis (sequential stop detection)\n", "start_time = time.time()\n", "stops = lachesis(traj, delta_roam=20, dt_max = 60, dur_min=5, complete_output=True, keep_col_names=True, traj_cols=tc)\n", "execution_time_lachesis = time.time() - start_time\n", "print(f\"Lachesis execution time: {execution_time_lachesis} seconds\")\n", "\n", "# Density based stop detection (Temporal DBSCAN)\n", "start_time = time.time()\n", "user_data_tadb = traj.assign(cluster=ta_dbscan_labels(traj, time_thresh=240, dist_thresh=15, min_pts=3, traj_cols=tc))\n", "clustering_time_tadbscan = time.time() - start_time\n", "start_time_post = time.time()\n", "cluster_labels_tadb = user_data_tadb['cluster']\n", "execution_time_tadbscan = time.time() - start_time\n", "post_time_tadbscan = time.time() - start_time_post\n", "print(f\"TA-DBSCAN execution time: {execution_time_tadbscan} seconds\")\n", "print(f\"TA-DBSCAN clustering time: {clustering_time_tadbscan} seconds\")\n", "print(f\"TA-DBSCAN label extraction time: {post_time_tadbscan} seconds\")\n", "\n", "# Grid-based\n", "start_time = time.time()\n", "traj['h3_cell'] = filters.to_tessellation(traj, index=\"h3\", res=10, traj_cols=tc, data_crs='EPSG:3857')\n", "stops_gb = grid_based(traj, time_thresh=240, complete_output=True, traj_cols=tc, location_id='h3_cell')\n", "execution_time_grid = time.time() - start_time\n", "print(f\"Grid-Based execution time: {execution_time_grid} seconds\")\n", "\n", "# HDBSCAN\n", "start_time = time.time()\n", "user_data_hdb = traj.assign(cluster=hdbscan_labels(traj, time_thresh=240, min_pts=3, min_cluster_size=2, traj_cols=tc))\n", "clustering_time_hdbscan = time.time() - start_time\n", "start_time_post = time.time()\n", "cluster_labels_hdb = user_data_hdb['cluster']\n", "execution_time_hdbscan = time.time() - start_time\n", "post_time_hdbscan = time.time() - start_time_post\n", "print(f\"HDBSCAN execution time: {execution_time_hdbscan} seconds\")\n", "print(f\"HDBSCAN clustering time: {clustering_time_hdbscan} seconds\")\n", "print(f\"HDBSCAN label extraction time: {post_time_hdbscan} seconds\")" ] }, { "cell_type": "markdown", "id": "c88f426d", "metadata": {}, "source": [ "## Summary of Single-User Performance" ] }, { "cell_type": "markdown", "id": "6a678431", "metadata": {}, "source": [ "### Lachesis" ] }, { "cell_type": "code", "execution_count": 2, "id": "b7480c93", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:47.745330Z", "iopub.status.busy": "2026-08-13T02:23:47.745330Z", "iopub.status.idle": "2026-08-13T02:23:48.058843Z", "shell.execute_reply": "2026-08-13T02:23:48.058843Z" } }, "outputs": [ { "data": { "image/png": "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ffXV1iWXXDLka15zzTWW1+u1urq6+m7/wAc+YF177bWWJOvpp59O8p1gPEabB3GvvPKKJcnavHnzsI+58MILrY997GP9bvvABz5gHXfccZZlWdbTTz/dNwdOP/30vsd0dXVZRUVFfXMAE+M973mPdfnll/f9OxqNWjNnzrS+//3vD3ps/LPbtWvXqHWZB5klmXkQ9+CDD1oej8cKh8PDPubkk0+2vvrVr/a7bcGCBda5555rWZZl3XPPPVZRUZG1bNky6wtf+ELfY5qbm63s7Gzrm9/8pjV79uyxvSkkbSzz4I033rAkWY2NjcM+JhPnwaTcJ+3pp59WV1eXTj/9dJ1//vm6//77tW/fvkGPO/roo1VVVaWHH35YkrRlyxY999xzWrp06US3jCTs2bNHDodDxcXFST0vNzdXoVCo321Lly5VXV2dtmzZIkl6+OGHVVVVpSVLlqSqXYwiFArptdde0+mnn953m9Pp1Omnnz7o12wqMA/MNNZ5sGfPHnm9XrndCV2Kus9Q8+Ciiy7Sgw8+qK6uLkn7t8iceeaZKisrS6o2xm4s82Dfvn265557NGfOHFVUVCT1eqbPg0kZ0u666y6de+65crlcWrx4sebOnauHHnpoyMdedNFFuvvuuyXt/yA+9KEPadq0aRPZLpLQ09Ojq6++Wp/5zGcSvliuZVl68skn9be//U2nnXZav/tKS0t11llnafny5ZKku+++WxdddFGq28YIOjo6FI1GBy0Ay8rK1NbWlrLXYR6YbSzzoKOjQzfffLMuvfTShF8nGo3qd7/7nd58881B8+Coo47S3Llz9cc//lGWZWn58uXMgwmWzDy44447VFBQoIKCAv31r3/VP/7xD3k8noReJ1PmwaQLabt379Yjjzyi888/v++2888/X3fdddeQjz///PP14osvauPGjXwhDRcOh3XOOefIsiz96le/GvXxf/7zn1VQUKCcnBydddZZ+vSnP60bbrhh0OMuuugiLV++XBs3btSLL76o8847z4bukS7Mg8kpGAyqtrZWixYtGvLzHCj+Bz03N1eXXHKJvva1r+lLX/rSoMdddNFFuueee/Tss89q3759+tCHPmRD90iF8847T6+//rqeffZZVVdX65xzzhl0ANBAmTYPkls/nAF+//vfq6enR+9973v7brMsS7FYTA0NDaquru73+KlTp+rDH/6wLr74YvX09Oiss85SZ2fnRLeNUcQD2ubNm/XPf/4zobVop556qn71q1/J4/Fo5syZw24OOeuss3TppZfq4osv1kc+8hFNnTo11e1jBCUlJXK5XNq+fXu/27dv367p06ePuz7zIDMkMw86Ozt15pln9h3wkZWVNWr98847T9/+9reVm5urGTNmyOkceh3Feeedp2984xu64YYbtHTp0qQ3o2J8kpkHRUVFKioq0oIFC3TcccdpypQpevTRR/WZz3xm2PqZNg8m3Zq0u+66S1deeaVWrVrV998bb7whv9/ft1lzoIsuukjPPPOMLrjgArlcrgnuGKOJB7T169frySefTPiPZ35+vubPn6/KysoRv2But1sXXHCBnnnmGdakpoHH49HRRx+tp556qu+2WCymp556Sscff/y46zMPMkOi8yAYDOqMM86Qx+PR448/rpycnITqFxUVaf78+Zo1a9awf5glyefz6aMf/aieffZZ5kEajHV5YFmWLMtSb2/viPUzbR6k7SfC3r171djY2PfvTZs2adWqVfL5fH2HuQYCAW3ZsqXvnFhvv/22JGn69OlD/sJetWqVVq5cqfvuu08LFy7sd99nPvMZ3XTTTfrOd74zaEF95plnaseOHQnv44TUGW0ehMNhffKTn9TKlSv15z//WdFotG+/BJ/Pl/D+B6O5+eabddVVV7H2JE2uuOIKXXjhhTrmmGP0nve8R7feeqv27dunz3/+832PaWtrU1tbW998Wb16tQoLC1VZWSmfz5eSPpgH6TXaPIgHtK6uLv3ud79TMBhUMBiUJE2bNi1lP7KXL1+uO+64g3mQJqPNg40bN+qBBx7QGWecoWnTpqmlpUU/+MEPlJubm9LNkibMg7SFtFdffVWnnnpq37+vuOIKSdKFF17Yt/Pu448/3m8hfe6550qSrr/++iH3Qbjrrru0aNGiQQFNks4++2wtW7ZMf/nLXwadY8vhcKikpGS8bwljMNo82Lp1qx5//HFJ0pFHHtnvuU8//bROOeWUlPTh8XiYA2n06U9/Wjt27NB1112ntrY2HXnkkXriiSf67Tx855136sYbb+z790knnSRJuueee/S5z30uJX0wD9JrtHmwcuXKvvNezp8/v99zN23alLITjebm5io3NzcltZC80eZBTk6O6urqdOutt2rXrl0qKyvTSSedpBdeeEGlpaUp68OEeeCwLMtKawcAAAAYZNLtkwYAADAZENIAAAAMREgDAAAwECENAADAQIQ0AAAAAxHSAAAADERIAwAAMBAhDQAAwECENAAAAAMR0gAAAAxESAMAADAQIQ0AAMBA/x/7tqdy38WWvgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, (ax_map, ax_barcode) = plt.subplots(2, 1, figsize=(6,6.5),\n", " gridspec_kw={'height_ratios':[10,1]})\n", "\n", "gpd.GeoDataFrame(geometry=[outer_box], crs='EPSG:3857').plot(ax=ax_map, color='#d3d3d3')\n", "city.plot(ax=ax_map, edgecolor='white', linewidth=1, color='#8c8c8c')\n", "\n", "plot_stops(stops, ax=ax_map, cmap='Reds')\n", "plot_pings(traj, ax=ax_map, s=6, point_color='black', cmap='twilight', traj_cols=tc)\n", "ax_map.set_axis_off()\n", "\n", "plot_time_barcode(traj[tc['timestamp']], ax=ax_barcode, set_xlim=True)\n", "plot_stops_barcode(stops, ax=ax_barcode, cmap='Reds', set_xlim=False, timestamp='unix_ts')\n", "\n", "plt.tight_layout(pad=0.1)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 3, "id": "98cdda1f", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:48.060845Z", "iopub.status.busy": "2026-08-13T02:23:48.060845Z", "iopub.status.idle": "2026-08-13T02:23:48.074525Z", "shell.execute_reply": "2026-08-13T02:23:48.074525Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Summary of Single-User Performance\n", "Lachesis execution time: 0.02348613739013672 seconds\n", "TA-DBSCAN execution time: 0.06668949127197266 seconds\n", "Grid-Based execution time: 0.03886771202087402 seconds\n", "HDBSCAN execution time: 0.45995259284973145 seconds\n" ] } ], "source": [ "print(\"Summary of Single-User Performance\")\n", "print(f\"Lachesis execution time: {execution_time_lachesis} seconds\")\n", "print(f\"TA-DBSCAN execution time: {execution_time_tadbscan} seconds\")\n", "print(f\"Grid-Based execution time: {execution_time_grid} seconds\")\n", "print(f\"HDBSCAN execution time: {execution_time_hdbscan} seconds\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "41e9a154", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:48.076526Z", "iopub.status.busy": "2026-08-13T02:23:48.075526Z", "iopub.status.idle": "2026-08-13T02:23:48.090205Z", "shell.execute_reply": "2026-08-13T02:23:48.090205Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Runtime Disaggregation\n", "Lachesis clustering time: 0.02348613739013672 seconds\n", "--------------------------------\n", "TA-DBSCAN clustering time: 0.06668949127197266 seconds\n", "TA-DBSCAN label extraction time: 0.0 seconds\n", "--------------------------------\n", "Grid-Based clustering time: 0.03886771202087402 seconds\n", "--------------------------------\n", "HDBSCAN clustering time: 0.45995259284973145 seconds\n", "HDBSCAN label extraction time: 0.0 seconds\n" ] } ], "source": [ "print(\"Runtime Disaggregation\")\n", "print(f\"Lachesis clustering time: {execution_time_lachesis} seconds\")\n", "print(\"--------------------------------\")\n", "print(f\"TA-DBSCAN clustering time: {clustering_time_tadbscan} seconds\")\n", "print(f\"TA-DBSCAN label extraction time: {post_time_tadbscan} seconds\")\n", "print(\"--------------------------------\")\n", "print(f\"Grid-Based clustering time: {execution_time_grid} seconds\")\n", "print(\"--------------------------------\")\n", "print(f\"HDBSCAN clustering time: {clustering_time_hdbscan} seconds\")\n", "print(f\"HDBSCAN label extraction time: {post_time_hdbscan} seconds\")" ] }, { "cell_type": "markdown", "id": "5c9ee070", "metadata": {}, "source": [ "## Pings vs Runtime" ] }, { "cell_type": "code", "execution_count": 5, "id": "62ed6a42", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:48.092207Z", "iopub.status.busy": "2026-08-13T02:23:48.091207Z", "iopub.status.idle": "2026-08-13T02:23:48.185209Z", "shell.execute_reply": "2026-08-13T02:23:48.185209Z" } }, "outputs": [], "source": [ "traj = loader.sample_from_file(filepath_root, format='parquet', traj_cols=tc, seed=10)\n", "\n", "# H3 cells for grid_based stop detection method\n", "traj['h3_cell'] = filters.to_tessellation(traj, index=\"h3\", res=10, traj_cols=tc, data_crs='EPSG:3857')\n", "pings_per_user = traj['gc_identifier'].value_counts()" ] }, { "cell_type": "code", "execution_count": 6, "id": "baafc0b8", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:23:48.187210Z", "iopub.status.busy": "2026-08-13T02:23:48.187210Z", "iopub.status.idle": "2026-08-13T02:24:49.549301Z", "shell.execute_reply": "2026-08-13T02:24:49.549301Z" } }, "outputs": [], "source": [ "# Approximately 5 minutes for 40 users\n", "results = []\n", "for user, n_pings in tqdm(pings_per_user.items(), total=len(pings_per_user)):\n", " user_data = traj.query(\"gc_identifier == @user\")\n", "\n", " # For location based\n", " start_time = time.time()\n", " stops_gb = grid_based(user_data, time_thresh=240, complete_output=True, traj_cols=tc, location_id='h3_cell')\n", " execution_time = time.time() - start_time\n", " results += [pd.Series({'user':user, 'algo':'grid_based', 'execution_time':execution_time, 'n_pings':n_pings})]\n", " \n", " # For Lachesis\n", " start_time = time.time()\n", " stops_lac = lachesis(user_data, delta_roam=30, dt_max=240, complete_output=True, traj_cols=tc)\n", " execution_time = time.time() - start_time\n", " results += [pd.Series({'user':user, 'algo':'lachesis', 'execution_time':execution_time, 'n_pings':n_pings})]\n", "\n", " # For TADbscan\n", " start_time = time.time()\n", " user_data_tadb = user_data.assign(cluster=ta_dbscan_labels(user_data, time_thresh=240, dist_thresh=15, min_pts=3, traj_cols=tc))\n", " # - post-processing\n", " stops_tadb = user_data_tadb[user_data_tadb.cluster != -1]\n", " execution_time = time.time() - start_time\n", " results += [pd.Series({'user':user, 'algo':'tadbscan', 'execution_time':execution_time, 'n_pings':n_pings})]\n", "\n", " # For HDBSCAN\n", " start_time = time.time()\n", " user_data_hdb = user_data.assign(cluster=hdbscan_labels(user_data, time_thresh=240, min_pts=3, min_cluster_size=2, traj_cols=tc))\n", " # - post-processing\n", " stops_hdb = user_data_hdb[user_data_hdb.cluster != -1]\n", " execution_time = time.time() - start_time\n", " results += [pd.Series({'user':user, 'algo':'hdbscan', 'execution_time':execution_time, 'n_pings':n_pings})]\n", "\n", "results = pd.DataFrame(results)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8e8546e8", "metadata": { "execution": { "iopub.execute_input": "2026-08-13T02:24:49.552301Z", "iopub.status.busy": "2026-08-13T02:24:49.551302Z", "iopub.status.idle": "2026-08-13T02:24:49.978930Z", "shell.execute_reply": "2026-08-13T02:24:49.978930Z" } }, "outputs": [ { "data": { "image/png": "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UryUJd1OfKqVcgHmfCXGgkhOTmbRokUsW7aMTp06AbBgwQIqXjLh7m233eaWJC5tSc2ePZtatWoxffp0AOrUqcPevXt544038h2LzWbjgw8+oFWrVgAsWrSIevXqsWXLFlq2bEmTJk1o0qSJq/5rr73GypUr+fbbbxk2bBgnT57E39+fe+65h8DAQKpVq0azZs0AyMzMZMqUKfz888+0bt0agJo1a/L777/z4Ycf0qFDhyJ5D0KIkqWcTuLmzgUg7IknSuTmwwUhifESvkY9+yZ1yVddg05HkK8hz+QY5GsgMtCHlUPb5Hu/+XX06FFsNhstW7Z0lQUHB1OnTh23es2bN7/idv755x9XQsuWnYDyy2Aw0KJFC9frunXrEhISwj///EPLli1JSUlh4sSJfP/995w9exa73U56ejonT54E4Pbbb6datWrUrFmTrl270rVrV+6//378/Pw4fPgwaWlp3H777W77tFqtruRZFO9BCFGyUjZsIPPQYXT+/oQ+1tPT4eQiifESmqbl+5RmutVOvzY1eHftoVzL+rWp4fHeqf7+/h7bd7YxY8awZs0a3nrrLWrXro2vry8PPvggVmtWKzowMJAdO3awYcMGfvrpJyZMmMDEiRPZunUrKSkpAHz//fdUqlTJbbtms7nE34sQ4toppYj7MOvWUqGP9UQfFOThiHKTzjfXwNdk4OmOtRjRKZog36wEGORrYESnaJ7uWKvYkmLNmjUxGo1s3brVVZaUlMTBgwcLtJ3sU545/fnnnwXaht1uZ9u2ba7XBw4cIDExkXr16gGwceNG+vbty/3330+jRo2oUKFCrlO6BoOBzp07M23aNPbs2cPx48dZt24d9evXx2w2c/LkSWrXru32qFKlSpG9ByFEyUnbspX03bvRzGbC+vTxdDh5khbjNTIb9TzVoSZDb63tNo6xOIdqBAYG0qdPH8aOHUtYWBiRkZG88sor6HS6As0aMXjwYKZPn87YsWMZMGAA27dvZ+HChQWKxWg08swzz/Dee+9hMBgYNmwYN998s+s0b3R0NF999RXdunVD0zTGjx+P0+l0rf/dd99x9OhR2rdvT2hoKD/88ANOp5M6deoQGBjImDFjePbZZ3E6nbRr146kpCQ2btxIUFAQffr0KZL3IIQoOXEffghASI8HMHjpmGppMRYBP5MBk0FHeIAZk0FXIqdP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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "algos = ['grid_based', 'lachesis', 'tadbscan', 'hdbscan']\n", "palette = dict(zip(algos, sns.color_palette(n_colors=len(algos))))\n", "\n", "fig, ax = plt.subplots(figsize=(5, 5))\n", "sns.lineplot(data=results, marker='o', x='n_pings', y='execution_time', hue='algo', ax=ax)\n", "ax.set_title('n_pings vs execution_time')\n", "plt.show()" ] } ], "metadata": { "jupytext": { "cell_metadata_filter": "all", "formats": "ipynb,py:percent" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.0" } }, "nbformat": 4, "nbformat_minor": 5 }