diff --git a/gtfs_funnel/stop_times_with_direction.py b/gtfs_funnel/stop_times_with_direction.py
index 57a4679fb..d8d78c982 100644
--- a/gtfs_funnel/stop_times_with_direction.py
+++ b/gtfs_funnel/stop_times_with_direction.py
@@ -9,6 +9,8 @@
import numpy as np
import pandas as pd
+from typing import Literal
+
from calitp_data_analysis import utils
from shared_utils import rt_utils
from segment_speed_utils import helpers, wrangle_shapes
@@ -79,15 +81,31 @@ def find_prior_stop(
.groupby("trip_instance_key")
.stop_sequence
.shift(1)
+ ),
+ subseq_stop_sequence = (
+ prior_stop
+ .sort_values(["trip_instance_key", "stop_sequence"])
+ .groupby("trip_instance_key")
+ .stop_sequence
+ .shift(-1)
)
)
- prior_stop_geom = stop_times[
- ["trip_instance_key", "stop_sequence", "geometry"]
- ].rename(columns = {
- "stop_sequence": "prior_stop_sequence",
- "geometry": "prior_geometry"
- }).set_geometry("prior_geometry").repartition(npartitions=1)
+ def renamed_geom_stop_times(
+ stop_times: dd.DataFrame,
+ suffix: Literal["prior", "subseq"]
+ ) -> dd.DataFrame:
+
+ renamed_stop_geom = stop_times[
+ ["trip_instance_key", "stop_sequence", "geometry"]
+ ].rename(columns = {
+ "stop_sequence": f"{suffix}_stop_sequence",
+ "geometry": f"{suffix}_geometry"
+ }).set_geometry(f"{suffix}_geometry").repartition(npartitions=1)
+
+ return renamed_stop_geom
+
+ prior_stop_geom = renamed_geom_stop_times(stop_times, suffix="prior")
stop_times_with_prior = dd.merge(
stop_times,
@@ -101,7 +119,10 @@ def find_prior_stop(
prior_stop_geom,
on = ["trip_instance_key", "prior_stop_sequence"],
how = "left"
- ).astype({"prior_stop_sequence": "Int64"})
+ ).astype({
+ "prior_stop_sequence": "Int64",
+ "subseq_stop_sequence": "Int64"
+ })
return stop_times_with_prior_geom
diff --git a/gtfs_funnel/update_vars.py b/gtfs_funnel/update_vars.py
index 8faa8bb12..8ccbc59cd 100644
--- a/gtfs_funnel/update_vars.py
+++ b/gtfs_funnel/update_vars.py
@@ -3,12 +3,15 @@
from shared_utils import rt_dates
months = [
+ "mar", "apr", "may",
+ "jun", "jul", "aug",
+ "sep",
"oct"
]
analysis_date_list = [
- rt_dates.DATES["oct2023a"],
- rt_dates.DATES["oct2023b"]
+ #rt_dates.DATES["sep2023"],
+ rt_dates.DATES[f"{m}2023"] for m in months
]
CONFIG_PATH = Path("config.yml")
diff --git a/rt_segment_speeds/23_project_all_vp_explore.ipynb b/rt_segment_speeds/23_project_all_vp_explore.ipynb
index 190bc613d..4f682dd7f 100644
--- a/rt_segment_speeds/23_project_all_vp_explore.ipynb
+++ b/rt_segment_speeds/23_project_all_vp_explore.ipynb
@@ -17,13 +17,23 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"id": "73ced776-d521-4467-beb4-8d67d147aea4",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "DataTransformerRegistry.enable('default')"
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"import altair as alt\n",
- "import dask.dataframe as dd\n",
"import geopandas as gpd\n",
"import numpy as np\n",
"import pandas as pd\n",
@@ -31,13 +41,16 @@
"from segment_speed_utils import helpers\n",
"from segment_speed_utils.project_vars import SEGMENT_GCS, PROJECT_CRS\n",
"from shared_utils import rt_dates\n",
+ "from calitp_data_analysis import calitp_color_palette as cp\n",
+ "\n",
+ "analysis_date = rt_dates.DATES[\"sep2023\"]\n",
"\n",
- "analysis_date = rt_dates.DATES[\"sep2023\"]"
+ "alt.data_transformers.disable_max_rows()"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "c289f689-c0fe-4ea2-9e14-4e80f77566ae",
"metadata": {},
"outputs": [],
@@ -62,7 +75,8 @@
"# Find whether it's loop or inlining\n",
"shapes_loop_inlining = pd.read_parquet(\n",
" f\"{SEGMENT_GCS}stop_segments_{analysis_date}.parquet\",\n",
- " columns = [\"shape_array_key\", \"loop_or_inlining\"]\n",
+ " columns = [\"shape_array_key\", \"loop_or_inlining\"],\n",
+ " filters = [[(\"loop_or_inlining\", \"==\", 1)]]\n",
").drop_duplicates().merge(\n",
" trip_to_shape,\n",
" on = \"shape_array_key\",\n",
@@ -72,185 +86,1171 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "1b0ba620-e24e-4197-b665-c6111ad03307",
+ "execution_count": 3,
+ "id": "b95e35da-cf34-4696-80a1-0ab3a9e99ebf",
"metadata": {},
"outputs": [],
"source": [
- "ok_trips = (shapes_loop_inlining[\n",
- " shapes_loop_inlining.loop_or_inlining==0]\n",
- " .sample(25).trip_instance_key.tolist()\n",
- " )\n",
- "\n",
- "ok_trips"
+ "loopy_trips = shapes_loop_inlining.trip_instance_key.tolist()"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "b95e35da-cf34-4696-80a1-0ab3a9e99ebf",
+ "execution_count": 4,
+ "id": "20eb7d88-63e5-4695-82fd-141e8712396d",
"metadata": {},
"outputs": [],
"source": [
- "loopy_trips = (shapes_loop_inlining[\n",
- " shapes_loop_inlining.loop_or_inlining==1]\n",
- " .sample(25).trip_instance_key.tolist()\n",
- " )\n",
+ "def merge_vp_with_projected_shape_meters(\n",
+ " analysis_date,\n",
+ " vp_filters: tuple\n",
+ "):\n",
+ " projected_shape_meters = pd.read_parquet(\n",
+ " f\"{SEGMENT_GCS}projection/vp_projected_{analysis_date}.parquet\"\n",
+ " )\n",
"\n",
- "loopy_trips"
+ " vp = pd.read_parquet(\n",
+ " f\"{SEGMENT_GCS}vp_usable_{analysis_date}\",\n",
+ " filters = vp_filters,\n",
+ " columns = [\"gtfs_dataset_key\", \"gtfs_dataset_name\", \n",
+ " \"vp_idx\", \"trip_instance_key\", \"trip_id\"]\n",
+ " ).merge(\n",
+ " projected_shape_meters,\n",
+ " on = \"vp_idx\",\n",
+ " how = \"inner\"\n",
+ " )\n",
+ " \n",
+ " return vp"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"id": "276cab58-94ff-4f72-a651-88a4f1ea890a",
"metadata": {},
"outputs": [],
"source": [
- "subset_trips = ok_trips + loopy_trips\n",
- "\n",
- "projected_shape_meters = pd.read_parquet(\n",
- " f\"{SEGMENT_GCS}projection/vp_projected_{analysis_date}.parquet\"\n",
- ")\n",
- "\n",
- "vp = pd.read_parquet(\n",
- " f\"{SEGMENT_GCS}vp_usable_{analysis_date}\",\n",
- " filters = [[(\"trip_instance_key\", \"in\", subset_trips)]]\n",
- ").merge(\n",
- " projected_shape_meters,\n",
- " on = \"vp_idx\",\n",
- " how = \"inner\"\n",
- ").drop(columns = \"location_timestamp\")"
+ "vp = merge_vp_with_projected_shape_meters(\n",
+ " analysis_date,\n",
+ " vp_filters = [[(\"trip_instance_key\", \"in\", loopy_trips)]]\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "9d8f339f-f832-45f2-9f2c-f96125799a38",
+ "execution_count": 6,
+ "id": "1fbfe823-6a98-40b8-8c71-87cf686e5830",
"metadata": {},
"outputs": [],
"source": [
- "def plot_shape_meters(df: pd.DataFrame, one_trip: str):\n",
- " \"\"\"\n",
- " Plot how the projected shape meters looks for one trip.\n",
- " \n",
- " vp_idx is ordered by timestamp, use as x.\n",
- " \"\"\"\n",
- " subset_df = df[df.trip_instance_key==one_trip]\n",
- " \n",
- " print(f\"{subset_df.gtfs_dataset_name.iloc[0]}\")\n",
- " print(f\"trip_instance_key: {one_trip}, trip_id: {subset_df.trip_id.iloc[0]}\")\n",
+ "#https://stackoverflow.com/questions/10226551/whats-the-most-pythonic-way-to-calculate-percentage-changes-on-a-list-of-numbers\n",
+ "def pct_change(arr):\n",
+ " if not isinstance(arr, np.ndarray):\n",
+ " arr = np.asarray(arr)\n",
+ " \n",
+ " pct = np.zeros_like(arr)\n",
+ " pct[1:] = np.diff(arr) / np.abs(arr[:-1])\n",
" \n",
- " chart = (alt.Chart(subset_df)\n",
- " .mark_line()\n",
- " .encode(\n",
- " x=\"vp_idx\",\n",
- " y=\"shape_meters:Q\"\n",
- " )\n",
- " )\n",
- " \n",
- " display(chart)\n"
+ " return pct * 100\n",
+ "\n",
+ "def number_of_elements_over_threshold(\n",
+ " arr, \n",
+ " pct_change_threshold\n",
+ "):\n",
+ " return len((pct_change(arr) > pct_change_threshold).nonzero()[0])"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "6aaf6652-307b-41ba-9059-72ae010b7928",
+ "execution_count": 7,
+ "id": "de934f1c-f5db-4c89-ba5a-d84a48b18ce3",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/tmp/ipykernel_871/1096090739.py:7: RuntimeWarning: divide by zero encountered in divide\n",
+ " pct[1:] = np.diff(arr) / np.abs(arr[:-1])\n",
+ "/tmp/ipykernel_871/1096090739.py:7: RuntimeWarning: invalid value encountered in divide\n",
+ " pct[1:] = np.diff(arr) / np.abs(arr[:-1])\n"
+ ]
+ }
+ ],
"source": [
- "for t in ok_trips:\n",
- " plot_shape_meters(vp, t)"
+ "# Find most jumpy trips\n",
+ "vp2 = (vp.groupby(\"trip_instance_key\")\n",
+ " .agg({\"shape_meters\": lambda x: list(x)})\n",
+ " .reset_index()\n",
+ " )\n",
+ "\n",
+ "vp2 = vp2.assign(\n",
+ " big_jumps = vp2.apply(\n",
+ " lambda x: \n",
+ " number_of_elements_over_threshold(\n",
+ " x.shape_meters, 20), axis=1\n",
+ " )\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "284fb053-ffc9-411a-ab46-82f6cfb08af1",
+ "execution_count": 27,
+ "id": "29a91576-ae53-4464-b0fa-40291431aa16",
"metadata": {},
"outputs": [],
"source": [
- "for t in loopy_trips:\n",
- " plot_shape_meters(vp, t)"
+ "all_colors = (cp.CALITP_CATEGORY_BRIGHT_COLORS + cp.CALITP_CATEGORY_BOLD_COLORS + \n",
+ " cp.CALITP_DIVERGING_COLORS + cp.CALITP_SEQUENTIAL_COLORS\n",
+ " )\n",
+ "\n",
+ "\n",
+ "final_trip_keys = {\n",
+ " \"afaf17f1c2816652f0e4522a5c7f206b\": cp.CALITP_CATEGORY_BRIGHT_COLORS[1], # anaheim orange\n",
+ " \"a880d82a382929aa1de15be733f10a51\": cp.CALITP_CATEGORY_BOLD_COLORS[2], # kings green\n",
+ " \"d628de22f56dbb4c0e3f8242a2fe78d3\": cp.CALITP_CATEGORY_BRIGHT_COLORS[0], # vine blue\n",
+ " \"f1a0a79baa78db2c26b3248a30662a7b\": cp.CALITP_CATEGORY_BRIGHT_COLORS[5], # presidgo purple\n",
+ " \"26146503b5bf0235c0c8fe98dcd8d90b\": cp.CALITP_SEQUENTIAL_COLORS[4], # dumbarton navy\n",
+ " \"4f76b1c357ee534ac931a5c1bd1cbb87\": cp.CALITP_CATEGORY_BOLD_COLORS[2], # santa maria yellow\n",
+ " \"e5bcf460be0899f437b1e53b7f3feced\": cp.CALITP_CATEGORY_BOLD_COLORS[4], # tcrta gray blue\n",
+ " \"18cc0764a463566e8690f0d44c32c199\": cp.CALITP_CATEGORY_BRIGHT_COLORS[3], # sd green\n",
+ " \"45d8634a92be1fa10ae4f4aa5aa6d5b9\": cp.CALITP_CATEGORY_BRIGHT_COLORS[4], # foothill light blue\n",
+ " \"aa851696959462180fe04f189dc75584\": cp.CALITP_CATEGORY_BRIGHT_COLORS[3], # big blue bus green\n",
+ "}"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "ced6dbff-008e-4ccf-b284-cc1d79d3e801",
+ "execution_count": 28,
+ "id": "6c7f04b1-9966-4c6c-980d-a63e61c814f1",
"metadata": {},
"outputs": [],
"source": [
- "speed = pd.read_parquet(\n",
- " f\"{SEGMENT_GCS}speeds_comparison_{analysis_date}.parquet\"\n",
+ "shapes = helpers.import_scheduled_shapes(\n",
+ " analysis_date, \n",
+ " columns = [\"shape_array_key\", \"shape_id\", \"geometry\"],\n",
+ " get_pandas = True,\n",
+ " crs = \"EPSG:4326\"\n",
+ ").merge(\n",
+ " shapes_loop_inlining[\n",
+ " shapes_loop_inlining.trip_instance_key.isin(final_trip_keys.keys())],\n",
+ " on = \"shape_array_key\",\n",
+ " how = \"inner\"\n",
")"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "8243b13f-323b-4b0f-8fff-75cd2837d165",
- "metadata": {},
- "outputs": [],
- "source": [
- "trip = \"10096002510743-JUNE23\"\n",
- "speed[speed.trip_id==trip]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "394956b9-a02c-4b7d-b604-3775c4e55a51",
+ "execution_count": 29,
+ "id": "2339c9ab-2241-4087-abf8-cee4d1b2a9cc",
"metadata": {},
"outputs": [],
"source": [
- "metro_trip = helpers.import_scheduled_trips(\n",
- " analysis_date,\n",
- " columns = [\"trip_instance_key\", \"trip_id\"],\n",
- " filters = [[(\"trip_id\", \"==\", trip)]],\n",
- " get_pandas = True\n",
+ "gdf = pd.merge(\n",
+ " shapes,\n",
+ " vp,\n",
+ " on = \"trip_instance_key\",\n",
+ " how = \"inner\"\n",
")\n",
"\n",
- "trip_key = metro_trip.trip_instance_key.iloc[0]"
+ "# assign colors\n",
+ "gdf = gdf.assign(\n",
+ " color = gdf.trip_instance_key.map(final_trip_keys),\n",
+ " gtfs_dataset_name = gdf.gtfs_dataset_name.str.replace(\"VehiclePositions\", \"Vehicle Positions\")\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "5c5b8f1d-6571-4072-a9ea-dc1c36173453",
+ "execution_count": 30,
+ "id": "9d8f339f-f832-45f2-9f2c-f96125799a38",
"metadata": {},
"outputs": [],
"source": [
- "vp_pared = pd.read_parquet(\n",
- " f\"{SEGMENT_GCS}vp_pared_stops_{analysis_date}\",\n",
- " filters = [[(\"trip_instance_key\", \"==\", trip_key)]])"
+ "def make_chart_map(df: pd.DataFrame, one_trip: str):\n",
+ " \"\"\"\n",
+ " Plot how the projected shape meters looks for one trip.\n",
+ " \n",
+ " vp_idx is ordered by timestamp, use as x.\n",
+ " \"\"\"\n",
+ " subset_df = df[df.trip_instance_key==one_trip].drop(columns = \"geometry\")\n",
+ " subset_gdf = df[df.trip_instance_key==one_trip][[\n",
+ " \"shape_id\", \"geometry\"]].drop_duplicates()\n",
+ " \n",
+ " GTFS_DATA = subset_df.gtfs_dataset_name.iloc[0]\n",
+ " TRIP_ID = subset_df.trip_id.iloc[0]\n",
+ " COLOR = subset_df.color.iloc[0]\n",
+ " \n",
+ " grid_bool = False\n",
+ " grid_opacity = 0\n",
+ " WIDTH = 400\n",
+ " HEIGHT = 400\n",
+ " \n",
+ " chart = (alt.Chart(subset_df)\n",
+ " .mark_line(color=COLOR)\n",
+ " .encode(\n",
+ " x=alt.X(\"vp_idx\", \n",
+ " title = \"\", \n",
+ " axis=alt.Axis(labels=False, \n",
+ " gridOpacity=grid_opacity, \n",
+ " tickOpacity=grid_opacity)\n",
+ " ),\n",
+ " y=alt.Y(\"shape_meters:Q\", \n",
+ " title = \"\",\n",
+ " axis=alt.Axis(labels=False, \n",
+ " gridOpacity=grid_opacity, \n",
+ " tickOpacity=grid_opacity)\n",
+ " ),\n",
+ " ).properties(\n",
+ " title = {\"text\": [GTFS_DATA], \n",
+ " \"subtitle\": f\"trip_id: {TRIP_ID}\"}\n",
+ " )\n",
+ " )\n",
+ " \n",
+ " chart = (chart\n",
+ " .configure_axis(grid=grid_bool, labelFontSize=0)\n",
+ " .configure_axis(gridOpacity=grid_opacity, \n",
+ " domainOpacity=grid_opacity)\n",
+ " .configure_axisBand(grid=grid_bool)\n",
+ " .configure_view(strokeOpacity=grid_opacity)\n",
+ " .properties(width = WIDTH*1.2, height = HEIGHT)\n",
+ " )\n",
+ " \n",
+ " display(chart)\n",
+ " \n",
+ " m = subset_gdf.explore(\n",
+ " \"shape_id\", \n",
+ " tiles = \"CartoDB Positron\",\n",
+ " legend = False,\n",
+ " style_kwds = {\n",
+ " \"color\": COLOR, \n",
+ " },\n",
+ " map_kwds = {\n",
+ " \"dragging\": False,\n",
+ " \"scrollWheelZoom\": False,\n",
+ " \"tileOpacity\": 0\n",
+ " },\n",
+ " zoom_control = False,\n",
+ " width = WIDTH, height = HEIGHT\n",
+ " )\n",
+ " \n",
+ " display(m)\n"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "c83f420e-99a2-40d8-b3ef-5d13f68b4226",
+ "execution_count": 31,
+ "id": "284fb053-ffc9-411a-ab46-82f6cfb08af1",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ "alt.Chart(...)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Make this Notebook Trusted to load map: File -> Trust Notebook
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "# 27:13, 27:56 * 29:14, 29:52, * 30:13\n",
- "vp_pared[vp_pared.stop_sequence==36]"
+ "for t in final_trip_keys.keys():\n",
+ " make_chart_map(gdf, t)"
]
},
{
"cell_type": "code",
"execution_count": null,
- "id": "145ac1ce-93a7-4abb-b72b-977541a98163",
+ "id": "9763b29b-381b-4f76-9e88-a117e3d82a5a",
"metadata": {},
"outputs": [],
- "source": [
- "metro_trip"
- ]
+ "source": []
},
{
"cell_type": "code",
"execution_count": null,
- "id": "0a950ad3-a1bd-4f6f-b7ff-6ee95ffbf8e2",
+ "id": "71b15470-8c6d-4370-adab-96f3b3edb78b",
"metadata": {},
"outputs": [],
"source": []
diff --git a/rt_segment_speeds/logs/avg_speeds.log b/rt_segment_speeds/logs/avg_speeds.log
index ca492f4c4..7d59ff9f7 100644
--- a/rt_segment_speeds/logs/avg_speeds.log
+++ b/rt_segment_speeds/logs/avg_speeds.log
@@ -1,30 +1,43 @@
-2023-08-14 10:45:18.623 | INFO | __main__::143 - Analysis date: 2023-07-12
-2023-08-14 10:52:06.516 | INFO | __main__::165 - execution time: 0:06:47.892861
-2023-08-14 10:54:13.170 | INFO | __main__::143 - Analysis date: 2023-06-14
-2023-08-14 11:01:01.301 | INFO | __main__::165 - execution time: 0:06:48.130654
-2023-08-14 11:12:26.319 | INFO | __main__::143 - Analysis date: 2023-05-17
-2023-08-14 11:20:25.045 | INFO | __main__::165 - execution time: 0:07:58.724683
-2023-08-14 11:21:03.494 | INFO | __main__::143 - Analysis date: 2023-04-12
-2023-08-14 11:28:45.925 | INFO | __main__::165 - execution time: 0:07:42.429806
-2023-08-14 11:33:17.821 | INFO | __main__::143 - Analysis date: 2023-03-15
-2023-08-14 11:40:28.316 | INFO | __main__::165 - execution time: 0:07:10.494542
-2023-08-18 14:48:01.479 | INFO | __main__::143 - Analysis date: 2023-08-16
-2023-08-18 14:53:19.222 | INFO | __main__::165 - execution time: 0:05:17.742302
-2023-08-24 14:56:29.366 | INFO | __main__::143 - Analysis date: 2023-08-15
-2023-08-24 15:02:21.592 | INFO | __main__::165 - execution time: 0:05:52.222770
-2023-09-21 14:37:32.197 | INFO | __main__::167 - Analysis date: 2023-09-13
-2023-09-21 14:43:35.784 | INFO | __main__::189 - execution time: 0:06:03.584427
-2023-09-21 15:49:19.146 | INFO | __main__::167 - Analysis date: 2023-06-14
-2023-09-21 15:54:51.743 | INFO | __main__::189 - execution time: 0:05:32.595873
-2023-09-21 17:54:03.991 | INFO | __main__::167 - Analysis date: 2023-05-17
-2023-09-21 18:00:12.730 | INFO | __main__::189 - execution time: 0:06:08.738161
-2023-09-21 18:40:52.924 | INFO | __main__::159 - Analysis date: 2023-04-12
-2023-09-21 18:47:14.179 | INFO | __main__::181 - execution time: 0:06:21.254666
-2023-09-21 19:28:44.034 | INFO | __main__::159 - Analysis date: 2023-03-15
-2023-09-21 19:34:39.639 | INFO | __main__::181 - execution time: 0:05:55.604394
-2023-09-21 19:36:10.116 | INFO | __main__::159 - Analysis date: 2023-07-12
-2023-09-21 19:41:33.957 | INFO | __main__::181 - execution time: 0:05:23.840096
-2023-09-21 19:43:00.511 | INFO | __main__::159 - Analysis date: 2023-08-15
-2023-09-21 19:49:14.412 | INFO | __main__::181 - execution time: 0:06:13.900161
-2023-10-17 18:34:48.535 | INFO | __main__::159 - Analysis date: 2023-10-11
-2023-10-17 18:40:48.183 | INFO | __main__::181 - execution time: 0:05:59.631201
+2023-11-06 15:57:16.305 | INFO | __main__::249 - Analysis date: 2023-10-11
+2023-11-06 15:59:18.120 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:01.813076
+2023-11-06 15:59:26.899 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.655715
+2023-11-06 15:59:26.911 | INFO | __main__::249 - Analysis date: 2023-09-13
+2023-11-06 16:01:24.513 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:57.601884
+2023-11-06 16:01:32.899 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.277026
+2023-11-06 16:01:32.910 | INFO | __main__::249 - Analysis date: 2023-08-15
+2023-11-06 16:03:34.836 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:01.925195
+2023-11-06 16:03:43.726 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.779732
+2023-11-06 16:03:43.739 | INFO | __main__::249 - Analysis date: 2023-07-12
+2023-11-06 16:05:28.192 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:44.451632
+2023-11-06 16:05:37.199 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.899107
+2023-11-06 16:05:37.210 | INFO | __main__::249 - Analysis date: 2023-06-14
+2023-11-06 16:07:20.946 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:43.736212
+2023-11-06 16:07:30.071 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:09.023577
+2023-11-06 16:07:30.083 | INFO | __main__::249 - Analysis date: 2023-05-17
+2023-11-06 16:09:26.014 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:55.930926
+2023-11-06 16:09:35.119 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:09.005461
+2023-11-06 16:09:35.131 | INFO | __main__::249 - Analysis date: 2023-04-12
+2023-11-06 16:14:19.095 | INFO | __main__::249 - Analysis date: 2023-10-11
+2023-11-06 16:16:23.123 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:04.027868
+2023-11-06 16:16:32.544 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:09.299333
+2023-11-06 16:16:32.557 | INFO | __main__::249 - Analysis date: 2023-09-13
+2023-11-06 16:18:31.595 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:59.037028
+2023-11-06 16:18:39.862 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.143427
+2023-11-06 16:18:39.874 | INFO | __main__::249 - Analysis date: 2023-08-15
+2023-11-06 16:20:44.117 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:04.241983
+2023-11-06 16:20:52.968 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.742420
+2023-11-06 16:20:52.980 | INFO | __main__::249 - Analysis date: 2023-07-12
+2023-11-06 16:22:41.130 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:48.149524
+2023-11-06 16:22:50.098 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.871341
+2023-11-06 16:22:50.111 | INFO | __main__::249 - Analysis date: 2023-06-14
+2023-11-06 16:24:38.042 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:47.930386
+2023-11-06 16:24:47.008 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.854655
+2023-11-06 16:24:47.021 | INFO | __main__::249 - Analysis date: 2023-05-17
+2023-11-06 16:26:48.437 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:01.414883
+2023-11-06 16:26:57.608 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:09.058372
+2023-11-06 16:26:57.622 | INFO | __main__::249 - Analysis date: 2023-04-12
+2023-11-06 16:29:01.767 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:02:04.143738
+2023-11-06 16:29:10.778 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:08.902052
+2023-11-06 16:29:10.791 | INFO | __main__::249 - Analysis date: 2023-03-15
+2023-11-06 16:31:05.067 | INFO | __main__:speeds_with_segment_geom:130 - segment averages execution time: 0:01:54.274974
+2023-11-06 16:31:14.376 | INFO | __main__:avg_trip_speeds_with_time_of_day:231 - trip summary execution time: 0:00:09.212622
diff --git a/rt_segment_speeds/logs/cut_road_segments.log b/rt_segment_speeds/logs/cut_road_segments.log
index e935a62ed..a0c97e1bf 100644
--- a/rt_segment_speeds/logs/cut_road_segments.log
+++ b/rt_segment_speeds/logs/cut_road_segments.log
@@ -1,34 +1,3 @@
-2023-10-04 14:49:11.624 | INFO | __main__::337 - cut primary/secondary roads: 0:05:12.326594
-2023-10-04 14:57:49.674 | INFO | __main__::353 - cut local roads base: 0:08:38.050766
-2023-10-04 14:57:49.675 | INFO | __main__::356 - execution time: 0:13:50.378197
-2023-10-04 15:01:32.642 | INFO | __main__::99 - Analysis date: 2023-09-13
-2023-10-04 15:03:04.641 | INFO | __main__::106 - add local linearids for this month: 0:01:31.998829
-2023-10-04 15:03:55.610 | INFO | __main__::149 - concatenate road segments: 0:00:50.969056
-2023-10-04 15:03:55.611 | INFO | __main__::150 - execution time: 0:02:22.967885
-2023-10-04 15:04:29.207 | INFO | __main__::99 - Analysis date: 2023-08-15
-2023-10-04 15:06:03.121 | INFO | __main__::106 - add local linearids for this month: 0:01:33.913428
-2023-10-04 15:06:53.739 | INFO | __main__::149 - concatenate road segments: 0:00:50.618163
-2023-10-04 15:06:53.741 | INFO | __main__::150 - execution time: 0:02:24.531591
-2023-10-04 15:07:31.183 | INFO | __main__::99 - Analysis date: 2023-07-12
-2023-10-04 15:08:56.917 | INFO | __main__::106 - add local linearids for this month: 0:01:25.733453
-2023-10-04 15:09:47.263 | INFO | __main__::149 - concatenate road segments: 0:00:50.346193
-2023-10-04 15:09:47.265 | INFO | __main__::150 - execution time: 0:02:16.079646
-2023-10-10 13:17:21.899 | INFO | __main__::337 - cut primary/secondary roads: 0:02:55.449737
-2023-10-10 13:21:41.094 | INFO | __main__::353 - cut local roads base: 0:04:19.194981
-2023-10-10 13:21:41.094 | INFO | __main__::356 - execution time: 0:07:14.645388
-2023-10-10 13:26:23.986 | INFO | __main__::99 - Analysis date: 2023-09-13
-2023-10-10 13:27:20.525 | INFO | __main__::106 - add local linearids for this month: 0:00:56.537886
-2023-10-10 13:27:49.172 | INFO | __main__::149 - concatenate road segments: 0:00:28.647259
-2023-10-10 13:27:49.172 | INFO | __main__::150 - execution time: 0:01:25.185145
-2023-10-10 14:49:09.851 | INFO | __main__::99 - Analysis date: 2023-08-15
-2023-10-10 14:50:13.055 | INFO | __main__::106 - add local linearids for this month: 0:01:03.202748
-2023-10-10 14:50:40.658 | INFO | __main__::149 - concatenate road segments: 0:00:27.603282
-2023-10-10 14:50:40.659 | INFO | __main__::150 - execution time: 0:01:30.806030
-2023-10-10 15:06:20.252 | INFO | __main__::96 - Analysis date: 2023-07-12
-2023-10-10 15:07:19.611 | INFO | __main__::103 - add local linearids for this month: 0:00:59.359330
-2023-10-10 15:07:46.994 | INFO | __main__::146 - concatenate road segments: 0:00:27.382778
-2023-10-10 15:07:46.995 | INFO | __main__::147 - execution time: 0:01:26.742108
-2023-10-12 11:09:05.353 | INFO | __main__::96 - Analysis date: 2023-10-11
-2023-10-12 11:10:33.776 | INFO | __main__::103 - add local linearids for this month: 0:01:28.401366
-2023-10-12 11:11:07.558 | INFO | __main__::146 - concatenate road segments: 0:00:33.781990
-2023-10-12 11:11:07.559 | INFO | __main__::147 - execution time: 0:02:02.183356
+2023-11-01 13:54:23.167 | INFO | __main__::280 - cut primary/secondary roads: 0:02:48.274895
+2023-11-01 13:58:41.143 | INFO | __main__::295 - cut local roads base: 0:04:17.975700
+2023-11-01 13:58:41.143 | INFO | __main__::298 - execution time: 0:07:06.251281
diff --git a/rt_segment_speeds/logs/interpolate_stop_arrival.log b/rt_segment_speeds/logs/interpolate_stop_arrival.log
index 6178d8156..c6452bd27 100644
--- a/rt_segment_speeds/logs/interpolate_stop_arrival.log
+++ b/rt_segment_speeds/logs/interpolate_stop_arrival.log
@@ -2,3 +2,31 @@
2023-10-31 18:11:18.958 | INFO | __main__::134 - set up df with nearest / subseq vp info: 0:01:18.690602
2023-10-31 18:12:06.833 | INFO | __main__::139 - interpolate stop arrival: 0:00:47.874819
2023-10-31 18:12:14.756 | INFO | __main__::145 - execution time: 0:02:14.488207
+2023-11-03 13:50:00.660 | INFO | __main__::153 - Analysis date: 2023-10-11
+2023-11-03 13:51:28.630 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:27.969585
+2023-11-03 13:52:31.928 | INFO | __main__:main:129 - interpolate stop arrival: 0:01:03.298093
+2023-11-03 13:52:41.114 | INFO | __main__:main:135 - execution time: 0:02:40.453737
+2023-11-03 15:59:50.277 | INFO | __main__::153 - Analysis date: 2023-08-15
+2023-11-03 16:01:18.175 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:27.896964
+2023-11-03 16:02:21.641 | INFO | __main__:main:129 - interpolate stop arrival: 0:01:03.466104
+2023-11-03 16:02:31.047 | INFO | __main__:main:135 - execution time: 0:02:40.768508
+2023-11-03 16:02:31.231 | INFO | __main__::153 - Analysis date: 2023-07-12
+2023-11-03 16:03:55.074 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:23.841921
+2023-11-03 16:04:51.717 | INFO | __main__:main:129 - interpolate stop arrival: 0:00:56.643267
+2023-11-03 16:05:00.003 | INFO | __main__:main:135 - execution time: 0:02:28.771041
+2023-11-03 16:05:00.125 | INFO | __main__::153 - Analysis date: 2023-06-14
+2023-11-03 16:06:28.304 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:28.178540
+2023-11-03 16:07:24.310 | INFO | __main__:main:129 - interpolate stop arrival: 0:00:56.005986
+2023-11-03 16:07:33.890 | INFO | __main__:main:135 - execution time: 0:02:33.764494
+2023-11-03 16:07:34.155 | INFO | __main__::153 - Analysis date: 2023-05-17
+2023-11-03 16:08:58.194 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:24.038301
+2023-11-03 16:09:56.769 | INFO | __main__:main:129 - interpolate stop arrival: 0:00:58.574171
+2023-11-03 16:10:05.405 | INFO | __main__:main:135 - execution time: 0:02:31.248634
+2023-11-03 16:10:05.597 | INFO | __main__::153 - Analysis date: 2023-04-12
+2023-11-03 16:11:35.069 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:29.471108
+2023-11-03 16:12:36.102 | INFO | __main__:main:129 - interpolate stop arrival: 0:01:01.033072
+2023-11-03 16:12:44.655 | INFO | __main__:main:135 - execution time: 0:02:39.056691
+2023-11-03 16:12:44.788 | INFO | __main__::153 - Analysis date: 2023-03-15
+2023-11-03 16:14:10.249 | INFO | __main__:main:124 - set up df with nearest / subseq vp info: 0:01:25.460793
+2023-11-03 16:15:11.212 | INFO | __main__:main:129 - interpolate stop arrival: 0:01:00.962506
+2023-11-03 16:15:19.953 | INFO | __main__:main:135 - execution time: 0:02:35.163939
diff --git a/rt_segment_speeds/logs/nearest_vp.log b/rt_segment_speeds/logs/nearest_vp.log
index d8ce12b9d..7fbeeca39 100644
--- a/rt_segment_speeds/logs/nearest_vp.log
+++ b/rt_segment_speeds/logs/nearest_vp.log
@@ -1,7 +1,32 @@
-2023-10-31 17:45:52.135 | INFO | __main__::332 - Analysis date: 2023-09-13
-2023-10-31 17:51:23.974 | INFO | __main__:find_nearest_vp_to_stop:277 - map partitions to transform vp: 0:05:31.838490
-2023-10-31 17:51:25.093 | INFO | __main__:find_nearest_vp_to_stop:309 - map partitions to find nearest vp to stop: 0:00:01.118975
2023-10-31 17:57:10.858 | INFO | __main__::337 - Analysis date: 2023-09-13
2023-10-31 18:03:30.506 | INFO | __main__:find_nearest_vp_to_stop:282 - map partitions to transform vp: 0:06:19.646465
2023-10-31 18:03:31.676 | INFO | __main__:find_nearest_vp_to_stop:314 - map partitions to find nearest vp to stop: 0:00:01.170538
2023-10-31 18:08:58.296 | INFO | __main__::344 - execution time: 0:11:47.436826
+2023-11-03 13:36:23.516 | INFO | __main__::337 - Analysis date: 2023-10-11
+2023-11-03 13:43:22.702 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:59.134110
+2023-11-03 13:43:23.916 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.213424
+2023-11-03 13:49:42.958 | INFO | __main__::344 - execution time: 0:13:19.390402
+2023-11-03 14:46:33.465 | INFO | __main__::339 - Analysis date: 2023-08-15
+2023-11-03 14:52:52.919 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:19.452868
+2023-11-03 14:52:54.211 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.292626
+2023-11-03 14:58:59.779 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:12:26.312844
+2023-11-03 14:59:00.212 | INFO | __main__::339 - Analysis date: 2023-07-12
+2023-11-03 15:05:48.714 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:48.501285
+2023-11-03 15:05:49.885 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.170919
+2023-11-03 15:11:33.748 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:12:33.535236
+2023-11-03 15:11:34.299 | INFO | __main__::339 - Analysis date: 2023-06-14
+2023-11-03 15:18:00.501 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:26.201462
+2023-11-03 15:18:01.751 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.250351
+2023-11-03 15:23:48.451 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:12:14.151951
+2023-11-03 15:23:48.847 | INFO | __main__::339 - Analysis date: 2023-05-17
+2023-11-03 15:30:10.910 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:22.061854
+2023-11-03 15:30:12.094 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.184575
+2023-11-03 15:35:50.028 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:12:01.179564
+2023-11-03 15:35:50.589 | INFO | __main__::339 - Analysis date: 2023-04-12
+2023-11-03 15:42:09.950 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:06:19.358835
+2023-11-03 15:42:11.157 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.207248
+2023-11-03 15:47:59.635 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:12:09.044200
+2023-11-03 15:48:00.252 | INFO | __main__::339 - Analysis date: 2023-03-15
+2023-11-03 15:53:58.273 | INFO | __main__:find_nearest_vp_to_stop:281 - map partitions to transform vp: 0:05:58.019210
+2023-11-03 15:53:59.500 | INFO | __main__:find_nearest_vp_to_stop:313 - map partitions to find nearest vp to stop: 0:00:01.226720
+2023-11-03 15:59:30.250 | INFO | __main__:find_nearest_vp_to_stop:323 - execution time: 0:11:29.995820
diff --git a/rt_segment_speeds/logs/prep_stop_segments.log b/rt_segment_speeds/logs/prep_stop_segments.log
index 2598c728c..04b599d8d 100644
--- a/rt_segment_speeds/logs/prep_stop_segments.log
+++ b/rt_segment_speeds/logs/prep_stop_segments.log
@@ -1,24 +1,24 @@
-2023-10-17 13:14:46.275 | INFO | __main__::256 - Analysis date: 2023-03-15
-2023-10-17 13:15:24.496 | INFO | __main__::263 - Prep stop segment df: 0:00:38.214426
-2023-10-17 13:15:29.098 | INFO | __main__::271 - execution time: 0:00:42.816073
-2023-10-17 13:15:29.099 | INFO | __main__::256 - Analysis date: 2023-04-12
-2023-10-17 13:15:57.485 | INFO | __main__::263 - Prep stop segment df: 0:00:28.385523
-2023-10-17 13:16:02.499 | INFO | __main__::271 - execution time: 0:00:33.400098
-2023-10-17 13:16:02.500 | INFO | __main__::256 - Analysis date: 2023-05-17
-2023-10-17 13:16:31.425 | INFO | __main__::263 - Prep stop segment df: 0:00:28.904607
-2023-10-17 13:16:35.854 | INFO | __main__::271 - execution time: 0:00:33.333007
-2023-10-17 13:16:35.854 | INFO | __main__::256 - Analysis date: 2023-06-14
-2023-10-17 13:17:04.723 | INFO | __main__::263 - Prep stop segment df: 0:00:28.867982
-2023-10-17 13:17:09.278 | INFO | __main__::271 - execution time: 0:00:33.423347
-2023-10-17 13:17:09.279 | INFO | __main__::256 - Analysis date: 2023-07-12
-2023-10-17 13:17:44.243 | INFO | __main__::263 - Prep stop segment df: 0:00:34.964086
-2023-10-17 13:17:48.637 | INFO | __main__::271 - execution time: 0:00:39.358247
-2023-10-17 13:17:48.639 | INFO | __main__::256 - Analysis date: 2023-08-15
-2023-10-17 13:18:36.553 | INFO | __main__::263 - Prep stop segment df: 0:00:47.913322
-2023-10-17 13:18:41.395 | INFO | __main__::271 - execution time: 0:00:52.755389
-2023-10-24 10:03:59.640 | INFO | __main__::252 - Analysis date: 2023-09-13
-2023-10-24 10:04:30.868 | INFO | __main__::259 - Prep stop segment df: 0:00:31.227214
-2023-10-24 10:04:36.329 | INFO | __main__::267 - execution time: 0:00:36.688195
-2023-10-24 10:04:36.330 | INFO | __main__::252 - Analysis date: 2023-10-11
-2023-10-24 10:05:12.397 | INFO | __main__::259 - Prep stop segment df: 0:00:36.067067
-2023-10-24 10:05:18.498 | INFO | __main__::267 - execution time: 0:00:42.167738
+2023-11-01 15:40:53.915 | INFO | __main__::252 - Analysis date: 2023-10-11
+2023-11-01 15:41:23.984 | INFO | __main__::259 - Prep stop segment df: 0:00:30.068163
+2023-11-01 15:41:28.115 | INFO | __main__::267 - execution time: 0:00:34.200081
+2023-11-01 15:41:28.116 | INFO | __main__::252 - Analysis date: 2023-09-13
+2023-11-01 15:41:55.989 | INFO | __main__::259 - Prep stop segment df: 0:00:27.872887
+2023-11-01 15:42:00.094 | INFO | __main__::267 - execution time: 0:00:31.978206
+2023-11-01 15:42:00.095 | INFO | __main__::252 - Analysis date: 2023-08-15
+2023-11-01 15:42:28.584 | INFO | __main__::259 - Prep stop segment df: 0:00:28.488285
+2023-11-01 15:42:32.818 | INFO | __main__::267 - execution time: 0:00:32.722970
+2023-11-01 15:42:32.819 | INFO | __main__::252 - Analysis date: 2023-07-12
+2023-11-01 15:43:01.069 | INFO | __main__::259 - Prep stop segment df: 0:00:28.250004
+2023-11-01 15:43:04.835 | INFO | __main__::267 - execution time: 0:00:32.016018
+2023-11-01 15:43:04.837 | INFO | __main__::252 - Analysis date: 2023-06-14
+2023-11-01 15:43:32.841 | INFO | __main__::259 - Prep stop segment df: 0:00:28.004113
+2023-11-01 15:43:39.634 | INFO | __main__::267 - execution time: 0:00:34.796661
+2023-11-01 15:43:39.634 | INFO | __main__::252 - Analysis date: 2023-05-17
+2023-11-01 15:44:07.928 | INFO | __main__::259 - Prep stop segment df: 0:00:28.293002
+2023-11-01 15:44:13.436 | INFO | __main__::267 - execution time: 0:00:33.800758
+2023-11-01 15:44:13.436 | INFO | __main__::252 - Analysis date: 2023-04-12
+2023-11-01 15:44:49.328 | INFO | __main__::259 - Prep stop segment df: 0:00:35.870067
+2023-11-01 15:44:53.144 | INFO | __main__::267 - execution time: 0:00:39.686215
+2023-11-01 15:44:53.145 | INFO | __main__::252 - Analysis date: 2023-03-15
+2023-11-01 15:45:20.814 | INFO | __main__::259 - Prep stop segment df: 0:00:27.669192
+2023-11-01 15:45:24.707 | INFO | __main__::267 - execution time: 0:00:31.561927
diff --git a/rt_segment_speeds/logs/shapely_project_vp.log b/rt_segment_speeds/logs/shapely_project_vp.log
new file mode 100644
index 000000000..bf632164b
--- /dev/null
+++ b/rt_segment_speeds/logs/shapely_project_vp.log
@@ -0,0 +1,27 @@
+2023-11-03 13:29:37.759 | INFO | __main__::59 - Analysis date: 2023-10-11
+2023-11-03 13:30:34.396 | INFO | __main__::108 - map partitions: 0:00:56.633350
+2023-11-03 13:36:05.124 | INFO | __main__::115 - compute and export: 0:05:30.728361
+2023-11-03 14:06:48.833 | INFO | __main__::125 - Analysis date: 2023-08-15
+2023-11-03 14:07:35.513 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:00:46.678890
+2023-11-03 14:12:57.494 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:05:21.981347
+2023-11-03 14:12:57.497 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:06:08.660237
+2023-11-03 14:12:57.511 | INFO | __main__::125 - Analysis date: 2023-07-12
+2023-11-03 14:13:45.518 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:00:48.005825
+2023-11-03 14:19:44.076 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:05:58.557858
+2023-11-03 14:19:44.078 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:06:46.563683
+2023-11-03 14:19:44.088 | INFO | __main__::125 - Analysis date: 2023-06-14
+2023-11-03 14:21:06.750 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:01:22.660793
+2023-11-03 14:25:55.035 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:04:48.284841
+2023-11-03 14:25:55.036 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:06:10.945634
+2023-11-03 14:25:55.045 | INFO | __main__::125 - Analysis date: 2023-05-17
+2023-11-03 14:26:58.867 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:01:03.820596
+2023-11-03 14:34:19.919 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:07:21.052399
+2023-11-03 14:34:19.919 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:08:24.872995
+2023-11-03 14:34:19.928 | INFO | __main__::125 - Analysis date: 2023-04-12
+2023-11-03 14:35:19.182 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:00:59.253906
+2023-11-03 14:40:20.944 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:05:01.761581
+2023-11-03 14:40:20.944 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:06:01.015487
+2023-11-03 14:40:20.953 | INFO | __main__::125 - Analysis date: 2023-03-15
+2023-11-03 14:41:13.621 | INFO | __main__:project_usable_vp_one_day:98 - map partitions: 0:00:52.667374
+2023-11-03 14:46:15.016 | INFO | __main__:project_usable_vp_one_day:105 - compute and export: 0:05:01.394757
+2023-11-03 14:46:15.017 | INFO | __main__:project_usable_vp_one_day:106 - execution time: 0:05:54.062131
diff --git a/rt_segment_speeds/logs/sjoin_shapes_roads.log b/rt_segment_speeds/logs/sjoin_shapes_roads.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/rt_segment_speeds/logs/sjoin_vp_segments.log b/rt_segment_speeds/logs/sjoin_vp_segments.log
deleted file mode 100644
index 2ce93e885..000000000
--- a/rt_segment_speeds/logs/sjoin_vp_segments.log
+++ /dev/null
@@ -1,69 +0,0 @@
-2023-08-13 15:32:42.979 | INFO | __main__::211 - Analysis date: 2023-07-12
-2023-08-13 15:34:48.942 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:05.928211
-2023-08-13 15:34:49.037 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.094836
-2023-08-13 15:41:29.266 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:06:40.228903
-2023-08-13 15:41:33.115 | INFO | __main__::223 - execution time: 0:08:50.105129
-2023-08-13 21:21:05.325 | INFO | __main__::211 - Analysis date: 2023-06-14
-2023-08-13 21:23:03.599 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:01:58.270024
-2023-08-13 21:23:03.616 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.016758
-2023-08-13 21:28:45.980 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:05:42.364145
-2023-08-13 21:28:49.685 | INFO | __main__::223 - execution time: 0:07:44.360210
-2023-08-13 22:04:16.808 | INFO | __main__::211 - Analysis date: 2023-05-17
-2023-08-13 22:06:20.536 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:03.724408
-2023-08-13 22:06:20.559 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.022602
-2023-08-13 22:12:19.877 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:05:59.317878
-2023-08-13 22:12:23.653 | INFO | __main__::223 - execution time: 0:08:06.844146
-2023-08-13 22:40:05.238 | INFO | __main__::211 - Analysis date: 2023-04-12
-2023-08-13 22:42:09.037 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:03.793820
-2023-08-13 22:42:09.061 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.023704
-2023-08-13 22:48:10.880 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:06:01.819976
-2023-08-13 22:48:14.912 | INFO | __main__::223 - execution time: 0:08:09.673477
-2023-08-14 07:54:28.210 | INFO | __main__::211 - Analysis date: 2023-03-15
-2023-08-14 07:56:58.975 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:30.645154
-2023-08-14 07:56:59.002 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.026733
-2023-08-14 08:07:24.889 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:10:25.887360
-2023-08-14 08:07:29.336 | INFO | __main__::223 - execution time: 0:13:01.059573
-2023-08-18 14:12:59.926 | INFO | __main__::211 - Analysis date: 2023-08-16
-2023-08-18 14:15:43.911 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:43.951955
-2023-08-18 14:15:43.969 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.057488
-2023-08-18 14:22:15.411 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:06:31.441789
-2023-08-18 14:22:19.302 | INFO | __main__::223 - execution time: 0:09:19.346578
-2023-08-24 14:23:28.328 | INFO | __main__::211 - Analysis date: 2023-08-15
-2023-08-24 14:25:38.717 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:10.371530
-2023-08-24 14:25:38.767 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.050300
-2023-08-24 14:32:56.013 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:07:17.246282
-2023-08-24 14:33:01.424 | INFO | __main__::223 - execution time: 0:09:33.082155
-2023-09-09 13:26:39.979 | INFO | __main__::457 - Analysis date: 2023-07-12
-2023-09-09 13:34:38.631 | INFO | __main__::465 - remove erroneous sjoin results: 0:07:58.650611
-2023-09-14 12:54:12.157 | INFO | __main__::211 - Analysis date: 2023-09-13
-2023-09-14 12:56:46.821 | INFO | __main__:sjoin_vp_to_segments:176 - prep vp and persist: 0:02:34.658525
-2023-09-14 12:56:46.912 | INFO | __main__:sjoin_vp_to_segments:191 - sjoin with map_partitions: 0:00:00.091034
-2023-09-14 13:06:11.390 | INFO | __main__:sjoin_vp_to_segments:200 - export partitioned results: 0:09:24.477597
-2023-09-14 13:06:15.758 | INFO | __main__::223 - execution time: 0:12:03.599629
-2023-09-14 13:06:31.913 | INFO | __main__::457 - Analysis date: 2023-09-13
-2023-09-14 13:14:08.656 | INFO | __main__::465 - remove erroneous sjoin results: 0:07:36.742381
-2023-09-21 10:58:58.711 | INFO | __main__::457 - Analysis date: 2023-09-13
-2023-09-21 11:05:58.377 | INFO | __main__::465 - remove erroneous sjoin results: 0:06:59.626650
-2023-09-21 12:11:55.875 | INFO | __main__::456 - Analysis date: 2023-08-15
-2023-09-21 12:19:13.216 | INFO | __main__::464 - remove erroneous sjoin results: 0:07:17.337816
-2023-09-21 12:58:44.489 | INFO | __main__::456 - Analysis date: 2023-07-12
-2023-09-21 13:07:33.610 | INFO | __main__::464 - remove erroneous sjoin results: 0:08:49.120980
-2023-09-21 15:22:02.693 | INFO | __main__::456 - Analysis date: 2023-06-14
-2023-09-21 15:29:14.363 | INFO | __main__::464 - remove erroneous sjoin results: 0:07:11.668827
-2023-09-21 17:26:50.733 | INFO | __main__::456 - Analysis date: 2023-05-17
-2023-09-21 17:33:37.420 | INFO | __main__::464 - remove erroneous sjoin results: 0:06:46.686094
-2023-09-21 18:03:52.838 | INFO | __main__::456 - Analysis date: 2023-04-12
-2023-09-21 18:11:04.091 | INFO | __main__::464 - remove erroneous sjoin results: 0:07:11.251722
-2023-09-21 18:55:33.230 | INFO | __main__::456 - Analysis date: 2023-03-15
-2023-09-21 19:05:26.800 | INFO | __main__::464 - remove erroneous sjoin results: 0:09:53.569193
-2023-10-10 16:26:03.401 | INFO | __main__::189 - Analysis date: 2023-09-13
-2023-10-10 16:26:54.759 | INFO | __main__:sjoin_vp_to_segments:111 - import vp and segments: 0:00:51.353998
-2023-10-10 16:26:55.499 | INFO | __main__:sjoin_vp_to_segments:125 - sjoin with map_partitions: 0:00:00.739841
-2023-10-10 16:29:18.592 | INFO | __main__:sjoin_vp_to_segments:136 - export partitioned results: 0:02:23.093345
-2023-10-17 13:33:28.504 | INFO | __main__::259 - Analysis date: 2023-10-11
-2023-10-17 13:35:02.438 | INFO | __main__:sjoin_vp_to_segments:222 - prep vp and persist: 0:01:33.930536
-2023-10-17 13:39:08.674 | INFO | __main__:sjoin_vp_to_segments:237 - sjoin with map_partitions: 0:04:06.236607
-2023-10-17 13:39:16.788 | INFO | __main__:sjoin_vp_to_segments:248 - export partitioned results: 0:00:08.113816
-2023-10-17 13:39:16.993 | INFO | __main__::271 - execution time: 0:05:48.489259
-2023-10-17 18:14:35.528 | INFO | __main__::456 - Analysis date: 2023-10-11
-2023-10-17 18:19:27.790 | INFO | __main__::464 - remove erroneous sjoin results: 0:04:52.262114
diff --git a/rt_segment_speeds/logs/speeds_by_segment_trip.log b/rt_segment_speeds/logs/speeds_by_segment_trip.log
index e2527e55d..f5654c876 100644
--- a/rt_segment_speeds/logs/speeds_by_segment_trip.log
+++ b/rt_segment_speeds/logs/speeds_by_segment_trip.log
@@ -1,12 +1,32 @@
-2023-10-17 18:24:17.885 | INFO | __main__::369 - Analysis date: 2023-10-11
-2023-10-17 18:24:23.381 | INFO | __main__:linear_referencing_vp_against_line:58 - set up merged vp with segments: 0:00:00.132646
-2023-10-17 18:24:23.430 | INFO | __main__:linear_referencing_vp_against_line:76 - linear referencing: 0:00:00.049441
-2023-10-17 18:28:11.254 | INFO | __main__:linear_referencing_and_speed_by_segment:302 - linear referencing: 0:03:53.340694
-2023-10-17 18:32:08.241 | INFO | __main__:linear_referencing_and_speed_by_segment:313 - make wide and get initial speeds: 0:03:56.986736
-2023-10-17 18:34:24.377 | INFO | __main__:linear_referencing_and_speed_by_segment:354 - recalculate speeds and get final: 0:02:16.135938
-2023-10-17 18:34:34.838 | INFO | __main__::377 - speeds for stop segments: 0:10:16.927674
-2023-10-17 18:34:34.838 | INFO | __main__::378 - execution time: 0:10:16.928330
-2023-10-31 12:29:06.200 | INFO | __main__::23 - Analysis date: 2023-09-13
-2023-10-31 12:29:29.129 | INFO | __main__::69 - execution time: 0:00:22.926565
2023-10-31 18:12:34.943 | INFO | __main__::23 - Analysis date: 2023-09-13
2023-10-31 18:12:57.436 | INFO | __main__::69 - execution time: 0:00:22.465316
+2023-11-03 13:53:00.175 | INFO | __main__::77 - Analysis date: 2023-10-11
+2023-11-03 13:53:24.360 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:24.139367
+2023-11-03 16:15:37.605 | INFO | __main__::77 - Analysis date: 2023-08-15
+2023-11-03 16:16:03.643 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:26.037613
+2023-11-03 16:16:03.760 | INFO | __main__::77 - Analysis date: 2023-07-12
+2023-11-03 16:16:26.371 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:22.610908
+2023-11-03 16:16:26.436 | INFO | __main__::77 - Analysis date: 2023-06-14
+2023-11-03 16:16:46.858 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:20.420953
+2023-11-03 16:16:46.941 | INFO | __main__::77 - Analysis date: 2023-05-17
+2023-11-03 16:17:08.225 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:21.282876
+2023-11-03 16:17:08.290 | INFO | __main__::77 - Analysis date: 2023-04-12
+2023-11-03 16:17:33.748 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:25.457256
+2023-11-03 16:17:33.827 | INFO | __main__::77 - Analysis date: 2023-03-15
+2023-11-03 16:18:00.624 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:26.796081
+2023-11-06 16:11:26.549 | INFO | __main__::77 - Analysis date: 2023-10-11
+2023-11-06 16:11:47.642 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:21.073421
+2023-11-06 16:11:47.709 | INFO | __main__::77 - Analysis date: 2023-09-13
+2023-11-06 16:12:06.201 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:18.491937
+2023-11-06 16:12:06.258 | INFO | __main__::77 - Analysis date: 2023-08-15
+2023-11-06 16:12:26.412 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:20.153804
+2023-11-06 16:12:26.478 | INFO | __main__::77 - Analysis date: 2023-07-12
+2023-11-06 16:12:45.627 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:19.146422
+2023-11-06 16:12:45.688 | INFO | __main__::77 - Analysis date: 2023-06-14
+2023-11-06 16:13:03.685 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:17.996113
+2023-11-06 16:13:03.740 | INFO | __main__::77 - Analysis date: 2023-05-17
+2023-11-06 16:13:22.611 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:18.869696
+2023-11-06 16:13:22.672 | INFO | __main__::77 - Analysis date: 2023-04-12
+2023-11-06 16:13:42.942 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:20.269320
+2023-11-06 16:13:43.001 | INFO | __main__::77 - Analysis date: 2023-03-15
+2023-11-06 16:14:02.267 | INFO | __main__:calculate_speed_from_stop_arrivals:59 - execution time: 0:00:19.265320
diff --git a/rt_segment_speeds/logs/valid_vehicle_positions.log b/rt_segment_speeds/logs/valid_vehicle_positions.log
deleted file mode 100644
index 66aa86804..000000000
--- a/rt_segment_speeds/logs/valid_vehicle_positions.log
+++ /dev/null
@@ -1,135 +0,0 @@
-2023-08-13 16:04:05.150 | INFO | __main__::349 - Analysis date: 2023-07-12
-2023-08-13 16:12:31.355 | INFO | __main__::363 - pare down vp by stop segments special cases 0:08:26.201267
-2023-08-13 16:12:31.356 | INFO | __main__::366 - execution time: 0:08:26.205295
-2023-08-13 20:45:54.933 | INFO | __main__::160 - Analysis date: 2023-07-12
-2023-08-13 20:48:03.182 | INFO | __main__:pare_down_vp_by_segment:132 - merge usable vp with sjoin results: 0:02:08.244979
-2023-08-13 20:48:03.285 | INFO | __main__:pare_down_vp_by_segment:141 - keep enter/exit points: 0:00:00.103224
-2023-08-13 20:50:54.420 | INFO | __main__:pare_down_vp_by_segment:149 - exported: 0:02:51.134568
-2023-08-13 20:50:54.422 | INFO | __main__::174 - pare down vp by stop segments normal cases 0:04:59.485200
-2023-08-13 20:50:54.423 | INFO | __main__::177 - execution time: 0:04:59.488991
-2023-08-13 20:51:37.688 | INFO | __main__::351 - Analysis date: 2023-07-12
-2023-08-13 21:00:17.993 | INFO | __main__::365 - pare down vp by stop segments special cases 0:08:40.301265
-2023-08-13 21:00:17.994 | INFO | __main__::368 - execution time: 0:08:40.305588
-2023-08-13 21:29:04.380 | INFO | __main__::160 - Analysis date: 2023-06-14
-2023-08-13 21:31:30.681 | INFO | __main__:pare_down_vp_by_segment:132 - merge usable vp with sjoin results: 0:02:26.297493
-2023-08-13 21:31:30.753 | INFO | __main__:pare_down_vp_by_segment:141 - keep enter/exit points: 0:00:00.072037
-2023-08-13 21:34:24.288 | INFO | __main__:pare_down_vp_by_segment:149 - exported: 0:02:53.534893
-2023-08-13 21:34:24.290 | INFO | __main__::174 - pare down vp by stop segments normal cases 0:05:19.906925
-2023-08-13 21:34:24.291 | INFO | __main__::177 - execution time: 0:05:19.910619
-2023-08-13 21:34:38.073 | INFO | __main__::351 - Analysis date: 2023-06-14
-2023-08-13 21:43:18.603 | INFO | __main__::365 - pare down vp by stop segments special cases 0:08:40.525052
-2023-08-13 21:43:18.604 | INFO | __main__::368 - execution time: 0:08:40.529666
-2023-08-13 22:12:36.662 | INFO | __main__::160 - Analysis date: 2023-05-17
-2023-08-13 22:15:12.892 | INFO | __main__:pare_down_vp_by_segment:132 - merge usable vp with sjoin results: 0:02:36.226611
-2023-08-13 22:15:12.971 | INFO | __main__:pare_down_vp_by_segment:141 - keep enter/exit points: 0:00:00.078677
-2023-08-13 22:18:03.325 | INFO | __main__:pare_down_vp_by_segment:149 - exported: 0:02:50.353998
-2023-08-13 22:18:03.327 | INFO | __main__::174 - pare down vp by stop segments normal cases 0:05:26.661411
-2023-08-13 22:18:03.327 | INFO | __main__::177 - execution time: 0:05:26.664871
-2023-08-13 22:18:18.278 | INFO | __main__::351 - Analysis date: 2023-05-17
-2023-08-13 22:26:56.589 | INFO | __main__::365 - pare down vp by stop segments special cases 0:08:38.303835
-2023-08-13 22:26:56.590 | INFO | __main__::368 - execution time: 0:08:38.310902
-2023-08-13 22:48:28.482 | INFO | __main__::160 - Analysis date: 2023-04-12
-2023-08-13 22:51:34.171 | INFO | __main__:pare_down_vp_by_segment:132 - merge usable vp with sjoin results: 0:03:05.685506
-2023-08-13 22:51:34.253 | INFO | __main__:pare_down_vp_by_segment:141 - keep enter/exit points: 0:00:00.081727
-2023-08-13 22:54:36.123 | INFO | __main__:pare_down_vp_by_segment:149 - exported: 0:03:01.870409
-2023-08-13 22:54:36.125 | INFO | __main__: