{ "cells": [ { "cell_type": "markdown", "id": "97080af1", "metadata": {}, "source": [ "# Lachesis Stop Detection" ] }, { "cell_type": "markdown", "id": "bf26eee1", "metadata": {}, "source": [ "The first stop detection algorithm implemented in ```nomad``` is a sequential algorithm insipired by the one in _Project Lachesis: Parsing and Modeling Location Histories_ (Hariharan & Toyama). This algorithm for extracting stays is dependent on two parameters: the roaming distance and the stay duration. \n", "\n", "* Roaming distance represents the maximum distance an object can move away from a point location and still be considered to be staying at that location.\n", "* Stop duration is the minimum amount of time an object must spend within the roaming distance of a location to qualify as a stop.\n", "\n", "The algorithm identifies stops as contiguous sequences of pings that stay within the roaming distance for at least the duration of the stop duration.\n", "\n", "This algorithm has the following parameters, which determine the size of the resulting stops:\n", "* ```dur_min```: Minimum duration for a stay in minutes.\n", "* ```dt_max```: Maximum time gap permitted between consecutive pings in a stay in minutes (dt_max should be greater than dur_min).\n", "* ```delta_roam```: Maximum roaming distance for a stay in meters." ] }, { "cell_type": "code", "execution_count": 1, "id": "ea8f3067", "metadata": { "execution": { "iopub.execute_input": "2026-04-24T17:17:38.281554Z", "iopub.status.busy": "2026-04-24T17:17:38.280554Z", "iopub.status.idle": "2026-04-24T17:17:40.604247Z", "shell.execute_reply": "2026-04-24T17:17:40.603247Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "\n", "# Imports\n", "import nomad.io.base as loader\n", "import geopandas as gpd\n", "from shapely.geometry import box\n", "from nomad.stop_detection.viz import plot_stops_barcode, plot_time_barcode, plot_stops, plot_pings\n", "import nomad.stop_detection.lachesis as LACHESIS\n", "import nomad.data as data_folder\n", "from pathlib import Path\n", "\n", "# Load data\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)\n", "\n", "filepath_root = 'gc_data_long/'\n", "tc = {\"user_id\": \"gc_identifier\", \"x\": \"dev_x\", \"y\": \"dev_y\", \"timestamp\": \"unix_ts\"}\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", "stops = LACHESIS.lachesis(traj, delta_roam=20, dt_max = 60, dur_min=5, complete_output=True, keep_col_names=True, traj_cols=tc)" ] }, { "cell_type": "code", "execution_count": 2, "id": "f97a717d", "metadata": { "execution": { "iopub.execute_input": "2026-04-24T17:17:40.607248Z", "iopub.status.busy": "2026-04-24T17:17:40.607248Z", "iopub.status.idle": "2026-04-24T17:17:40.933321Z", "shell.execute_reply": "2026-04-24T17:17:40.933321Z" } }, "outputs": [ { "data": { "image/png": "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", "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='Blues')\n", "plot_pings(traj, ax=ax_map, s=6, color='black', alpha=0.5, traj_cols=tc)\n", "ax_map.set_axis_off()\n", "\n", "plot_time_barcode(traj['unix_ts'], ax=ax_barcode, set_xlim=True)\n", "plot_stops_barcode(stops, ax=ax_barcode, cmap='Blues', set_xlim=False, timestamp='unix_ts')\n", "\n", "plt.tight_layout(pad=0.1)\n", "plt.show()" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".py", "format_name": "percent", "format_version": "1.3", "jupytext_version": "1.18.1" } }, "kernelspec": { "display_name": "base", "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 }