{ "cells": [ { "cell_type": "markdown", "id": "4f16fcbe", "metadata": {}, "source": [ "# HDBSCAN Stop Detection" ] }, { "cell_type": "markdown", "id": "f69ed80f", "metadata": {}, "source": [ "The HDBSCAN algorithm constructs a hierarchy of non-overlapping clusters from different radius values and selects those that maximize stability." ] }, { "cell_type": "code", "execution_count": 1, "id": "3561532d", "metadata": {}, "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.hdbscan as HDBSCAN\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)\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", "stops_hdb = HDBSCAN.st_hdbscan(traj,\n", " time_thresh=720,\n", " min_pts=3,\n", " complete_output=True,\n", " traj_cols=tc) " ] }, { "cell_type": "code", "execution_count": 2, "id": "ca45c6c3", "metadata": {}, "outputs": [ { "data": { "image/png": "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aVFLS4t+/vOfa9u2bbr77rv11FNP6eMf//iIZX/iE59Qa2urtm/frhtuuEGf+cxndM899/T/PjMzU21tbXrllVcGrEc/SL7RHA+WLl2qu+66S++8847Wrl2reDyuVatWKRodfsL7KdcP4iYgKf7www8P+fs9e/bEJcU3bdo0qvJisVh87ty58aeeeir+ta99Lf6JT3xi0Dq/9a1vxb1eb7ynp6f/9csuuyz+7W9/Oy4pXl1dPcYtwUSM1A8SNmzYEJcUb2hoGHKZ22+/PX7ttdcOeO2yyy6Ln3feefF4PB6vrq7u7wMrV67sX6anpyeek5PT3weQHOecc078M5/5TP/P0Wg0PmvWrPhPfvKT45ZNvHeHDh0asVz6wdQyln6QcN9998Xdbnc8HA4PucxFF10U/4d/+IcBr5100knxG2+8MR6Px+N33XVXPCcnJ/7Zz342/rd/+7f9yzQ1NcXT0tLi//RP/xQvLS0d30ZhzMbTD7Zs2RKXFN+5c+eQy0zFfmDJe9Kqq6vV09OjlStX6pZbbtFf//pXdXd3H7fc0qVLVVZWpgcffFCS1NjYqBdeeEG33nprspuMMejo6JDNZtO0adPGtF56erpCodCA12699VbV1NSosbFRkvTggw+qrKxMS5YsmazmYgShUEhvvvmmVq5c2f+a3W7XypUrj/trdjLQD8xpvP2go6NDXq9XTueopqLuN1g/uOOOO3Tfffepp6dH0pErMldccYUKCgrGVDbGbzz9oLu7W3fddZfmzJmj4uLiMdVn9n5gyZB255136sYbb5TD4dDChQs1d+5c3X///YMue8cdd+gPf/iDpCNvxJVXXqm8vLxkNhdjEAwG9bWvfU033XTTqCfLjcfjWrdundauXatLLrlkwO/y8/O1evVq3X333ZKkP/zhD7rjjjsmu9kYRnt7u6LR6HEHwIKCAu3bt2/S6qEfmNt4+kF7e7t++MMf6pOf/OSo64lGo/rzn/+st95667h+sHjxYs2dO1cPPPCA4vG47r77bvpBko2lH/zmN79RVlaWsrKytGbNGj3zzDNyu92jqmeq9APLhbTDhw/roYce0i233NL/2i233KI777xz0OVvueUWvfLKK9q9ezcfSJMLh8O64YYbFI/H9dvf/nbE5Z944gllZWXJ4/Fo9erV+shHPqLvfe97xy13xx136O6779bu3bv1yiuv6Oabbzag9UgV+oE1BQIBVVZWasGCBYO+n8dKfKGnp6frE5/4hP7xH/9Rn/70p49b7o477tBdd92l559/Xt3d3bryyisNaD0mw80336xNmzbp+eef1/z583XDDTcc9wDQsaZaPxjb+eEp4C9/+YuCwaDOPffc/tfi8bhisZjq6uo0f/78AcvPmDFDV111lT7+8Y8rGAxq9erV6uzsTHazMYJEQGtoaNBzzz03qrNoK1as0G9/+1u53W7NmjVryMshq1ev1ic/+Ul9/OMf19VXX60ZM2ZMdvMxjNzcXDkcDu3fv3/A6/v379fMmTMnXD79YGoYSz/o7OzUFVdc0f/Ah8vlGrH8m2++Wd/85jeVnp6uwsJC2e2Dn6O4+eab9dWvflXf+973dOutt475MiomZiz9ICcnRzk5OTrppJN03nnnafr06Xr44Yd10003DVn+VOsHljuTduedd+pLX/qSNm/e3P/fli1bVFFR0X9Z81h33HGH1q9fr9tuu00OhyPJLcZIEgFtx44dWrdu3ai/PDMzM1VeXq6SkpJhP2BOp1O33Xab1q9fz5nUFHC73Vq6dKmeffbZ/tdisZieffZZLVu2bMLl0w+mhtH2g0AgoFWrVsntduuxxx6Tx+MZVfk5OTkqLy9XUVHRkF/MkuTz+XTNNdfo+eefpx+kwHiPB/F4XPF4XH19fcOWP9X6Qcr+ROjq6tLOnTv7f96zZ482b94sn8/X/5ir3+9XY2Nj/5hY7777riRp5syZg/6FvXnzZm3cuFH/93//p1NOOWXA72666Sb94Ac/0I9+9KPjDtRXXHGFDhw4MOp7nDB5RuoH4XBYH/7wh7Vx40Y98cQTikaj/fcl+Hy+Ud9/MJIf/vCH+spXvsLZkxT54he/qNtvv11nnXWWzjnnHP3iF79Qd3e3/uZv/qZ/mX379mnfvn39/WXr1q3Kzs5WSUmJfD7fpLSDfpBaI/WDREDr6enRn//8ZwUCAQUCAUlSXl7epP2Rfffdd+s3v/kN/SBFRuoHu3fv1r333qtVq1YpLy9Pe/fu1U9/+lOlp6dP6mVJM/SDlIW0N954QytWrOj/+Ytf/KIk6fbbb++/efexxx4bcJC+8cYbJUnf/e53B70H4c4779SCBQuOC2iSdN111+mzn/2snnzyyePG2LLZbMrNzZ3oJmEcRuoHzc3NeuyxxyRJZ5555oB1q6urdfHFF09KO9xuN30ghT7ykY/owIED+s53vqN9+/bpzDPP1FNPPTXg5uHf/e53+v73v9//84UXXihJuuuuu/Sxj31sUtpBP0itkfrBxo0b+8e9LC8vH7Dunj17Jm2g0fT0dKWnp09KWRi7kfqBx+NRTU2NfvGLX+jQoUMqKCjQhRdeqJdffln5+fmT1g4z9ANbPB6Pp7QFAAAAOI7l7kkDAACwAkIaAACACRHSAAAATIiQBgAAYEKENAAAABMipAEAAJgQIQ0AAMCECGkAAAAmREgDAAAwIUIaAACACRHSAAAATIiQBgAAYEL/H+ZpMbFD8AhQAAAAAElFTkSuQmCC", "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_hdb, 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_hdb, ax=ax_barcode, cmap='Blues', set_xlim=False, timestamp='unix_ts')\n", "\n", "plt.tight_layout(pad=0.1)\n", "plt.show()" ] } ], "metadata": { "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.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }