From 039719e1819bd590e83ceceebe1c9d4d36d35d4f Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 17:16:13 +0000 Subject: [PATCH 01/21] census data query and join with ridership data --- .../ahsc_acs_2/04_prepare_acs_data.ipynb | 892 ++++++ .../ahsc_acs_2/05_data_processing.ipynb | 2568 +++++++++++++++++ 2 files changed, 3460 insertions(+) create mode 100644 ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb create mode 100644 ahsc_grant/ahsc_acs_2/05_data_processing.ipynb diff --git a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb new file mode 100644 index 000000000..a0f7e9db8 --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb @@ -0,0 +1,892 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "77e2b1ea-6883-4d17-8d0f-2557048cf485", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pygris in /opt/conda/lib/python3.11/site-packages (0.2.1)\n", + "Requirement already satisfied: geopandas>=0.9 in /opt/conda/lib/python3.11/site-packages (from pygris) (0.14.4)\n", + "Requirement already satisfied: requests in /opt/conda/lib/python3.11/site-packages (from pygris) (2.32.3)\n", + "Requirement already satisfied: platformdirs in /opt/conda/lib/python3.11/site-packages (from pygris) (4.3.6)\n", + "Requirement already satisfied: fiona>=1.8.21 in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (1.10.1)\n", + "Requirement already satisfied: numpy>=1.22 in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (1.26.4)\n", + "Requirement already satisfied: packaging in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (26.0)\n", + "Requirement already satisfied: pandas>=1.4.0 in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (2.2.3)\n", + "Requirement already satisfied: pyproj>=3.3.0 in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (3.7.2)\n", + "Requirement already satisfied: shapely>=1.8.0 in /opt/conda/lib/python3.11/site-packages (from geopandas>=0.9->pygris) (2.1.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/conda/lib/python3.11/site-packages (from requests->pygris) (3.4.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.11/site-packages (from requests->pygris) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.11/site-packages (from requests->pygris) (2.2.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.11/site-packages (from requests->pygris) (2024.8.30)\n", + "Requirement already satisfied: attrs>=19.2.0 in /opt/conda/lib/python3.11/site-packages (from fiona>=1.8.21->geopandas>=0.9->pygris) (24.2.0)\n", + "Requirement already satisfied: click~=8.0 in /opt/conda/lib/python3.11/site-packages (from fiona>=1.8.21->geopandas>=0.9->pygris) (8.1.7)\n", + "Requirement already satisfied: click-plugins>=1.0 in /opt/conda/lib/python3.11/site-packages (from fiona>=1.8.21->geopandas>=0.9->pygris) (1.1.1.2)\n", + "Requirement already satisfied: cligj>=0.5 in /opt/conda/lib/python3.11/site-packages (from fiona>=1.8.21->geopandas>=0.9->pygris) (0.7.2)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.4.0->geopandas>=0.9->pygris) (2.9.0)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.4.0->geopandas>=0.9->pygris) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in /opt/conda/lib/python3.11/site-packages (from pandas>=1.4.0->geopandas>=0.9->pygris) (2024.2)\n", + "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->geopandas>=0.9->pygris) (1.16.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install pygris" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "69420521-98d1-4dd9-a75e-044442f6b2fb", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import google.auth\n", + "import os\n", + "import gcsfs\n", + "import requests\n", + "from pygris import tracts \n", + "from pygris.utils import erase_water\n", + "fs = gcsfs.GCSFileSystem()\n", + "pd.set_option('display.max_columns', None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d1585cd3-1090-47f4-b95c-54bb6fb02ce7", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c76cbff0-9b5f-4fdb-9e67-a3e5817142df", + "metadata": {}, + "outputs": [], + "source": [ + "with open (\"ACS_apikey\", \"r\") as file:\n", + " api_key = file.read().strip()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "75bba03d-0287-4dc8-b29e-265576b49b3e", + "metadata": {}, + "outputs": [], + "source": [ + "# County Level Metrics required: \"Total Population\", \"Total Veteran Population\", \"Total Senior Population\", \"Total Low Income Population\"\n", + "variables = [\n", + " \"B01003_001E\", # Total Population\n", + " \"B17001_002E\", # Population with Income in the past 12 months below poverty level\n", + " \"B16008_037E\", # Non US Citizen Population\n", + " \"B01001_020E\", \"B01001_021E\", \"B01001_022E\", \"B01001_023E\", \"B01001_024E\", \"B01001_025E\", # Male senior population : 65 and above\n", + " \"B01001_044E\", \"B01001_045E\", \"B01001_046E\", \"B01001_047E\", \"B01001_048E\", \"B01001_049E\", # Female senior population : 65 and above\n", + " \"B01001_006E\", \"B01001_007E\", \"B01001_008E\", \"B01001_009E\", \"B01001_010E\", # Male population : 15-24\n", + " \"B01001_030E\", \"B01001_031E\", \"B01001_032E\", \"B01001_033E\", \"B01001_034E\", # Female population: 15-24\n", + " \"B19013_001E\", # Median household income in the past 12 months (2023 Inflation adjusted dollars)\n", + " \"B06010_004E\", \"B06010_005E\", \"B06010_006E\", # Population with extremely low income\n", + " \"B06010_007E\", \"B06010_008E\", # Population with very low income\n", + " \"B06010_009E\", \"B06010_010E\", # Population with low income \n", + " \"B08014_002E\", \"B08201_002E\", # Workers and Households with no cars\n", + " \"B18101_001E\", # Total Population with Disability\n", + " \"B19058_001E\", # Public Assistance Income or Food Stamps/SNAP in past 12 months for Households\n", + " \"B21001_002E\", # Population with veteran status: 18 and above\n", + " \"B18101_004E\", \"B18101_007E\", \"B18101_010E\", \"B18101_013E\", \"B18101_016E\", # Population with disability (Male and Female)\n", + " \"B18101_019E\", \"B18101_023E\", \"B18101_026E\", \"B18101_029E\", \"B18101_032E\", \n", + " \"B18101_035E\", \"B18101_038E\"\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "59a84531-0de9-4064-b974-e8135cec36a0", + "metadata": {}, + "outputs": [], + "source": [ + "def fetch_acs(vars_subset, api_key):\n", + " var_str = \"NAME,\" + \",\".join(vars_subset)\n", + " url = (\n", + " \"https://api.census.gov/data/2023/acs/acs5\"\n", + " f\"?get={var_str}&for=tract:*&in=state:06&key={api_key}\"\n", + " )\n", + "\n", + " r = requests.get(url)\n", + " r.raise_for_status()\n", + "\n", + " data = r.json()\n", + " df = pd.DataFrame(data[1:], columns=data[0])\n", + "\n", + " df[\"GEOID\"] = df[\"state\"] + df[\"county\"] + df[\"tract\"]\n", + " return df.drop(columns=[\"state\", \"county\", \"tract\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8e3e09c1-5f36-4b4d-9ad3-c44ebd1ffd3b", + "metadata": {}, + "outputs": [], + "source": [ + "def chunk(lst, size=35):\n", + " return [lst[i:i+size] for i in range(0, len(lst), size)]\n", + "\n", + "chunks = chunk(variables, size=35)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ad5e592d-8c63-4c03-a971-035149319c4d", + "metadata": {}, + "outputs": [], + "source": [ + "dfs = [fetch_acs(chunk, api_key) for chunk in chunks]\n", + "\n", + "census_data = dfs[0]\n", + "for df in dfs[1:]:\n", + " census_data = census_data.merge(df, on=[\"GEOID\", \"NAME\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4d3f15fc-79c7-4f44-8eb6-56968aaa8329", + "metadata": {}, + "outputs": [], + "source": [ + "census_data[\"county_name\"] = census_data[\"NAME\"].str.extract(\n", + " r';\\s*(.*?)(?: County)?;'\n", + ")\n", + "\n", + "census_data = census_data.drop(columns=[\"NAME\"])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a28beb54-79f2-4503-a831-c4b85f921a96", + "metadata": {}, + "outputs": [], + "source": [ + "num_cols = census_data.columns.difference([\"GEOID\", \"county_name\"])\n", + "census_data[num_cols] = census_data[num_cols].astype(int)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "927d80f8-9a76-4bd7-b4e6-b91d3d2094d1", + "metadata": {}, + "outputs": [], + "source": [ + "census_data = census_data.rename(columns = {\n", + " 'B01003_001E': 'total_pop',\n", + " 'B17001_002E': 'poverty_pop',\n", + " 'B16008_037E': 'non_us_citizen',\n", + " 'B01001_020E': 'male_65_to_66', 'B01001_021E': 'male_67_to_69', 'B01001_022E': 'male_70_to_74', \n", + " 'B01001_023E': 'male_75_to_79', 'B01001_024E': 'male_80_to_84', 'B01001_025E': 'male_85_and_over',\n", + " 'B01001_044E': 'female_65_to_66', 'B01001_045E': 'female_67_to_69', 'B01001_046E': 'female_70_to_74', \n", + " 'B01001_047E': 'female_75_to_79', 'B01001_048E': 'female_80_to_84', 'B01001_049E': 'female_85_and_over',\n", + " 'B01001_006E': 'male_15_17', 'B01001_007E': 'male_18_19', 'B01001_008E': 'male_20', 'B01001_009E': 'male_21',\n", + " 'B01001_010E': 'male_22_24', 'B01001_030E': 'female_15_17', 'B01001_031E': 'female_18_19', 'B01001_032E': 'female_20',\n", + " 'B01001_033E': 'female_21', 'B01001_034E': 'female_22_24',\n", + " 'B19013_001E': 'median_household_income',\n", + " 'B06010_004E': 'income_less_10000', 'B06010_005E': 'income_10000_14999', 'B06010_006E': 'income_15000_24999', \n", + " 'B06010_007E': 'income_25000_34999', 'B06010_008E': 'income_35000_49999',\n", + " 'B06010_009E': 'income_50000_64999', 'B06010_010E': 'income_65000_74999',\n", + " 'B08014_002E': 'workers_with_no_car', 'B08201_002E': 'households_with_no_cars',\n", + " # 'B18101_001E': 'disabled_pop',\n", + " 'B19058_001E': 'public_asst_pop',\n", + " 'B21001_002E': 'veteran_pop',\n", + " 'B18101_004E': 'male_under5_with_disability',\n", + " 'B18101_007E': 'male_5_17_with_disability',\n", + " 'B18101_010E': 'male_18_34_with_disability',\n", + " 'B18101_013E': 'male_35_64_with_disability',\n", + " 'B18101_016E': 'male_65_74_with_disability',\n", + " 'B18101_019E': 'male_75_plus_with_disability',\n", + " 'B18101_023E': 'female_under5_with_disability',\n", + " 'B18101_026E': 'female_5_17_with_disability',\n", + " 'B18101_029E': 'female_18_34_with_disability',\n", + " 'B18101_032E': 'female_35_64_with_disability',\n", + " 'B18101_035E': 'female_65_74_with_disability',\n", + " 'B18101_038E': 'female_75_plus_with_disability' \n", + "})" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8fc1045a-ed04-465b-b919-fd15b1f55a6d", + "metadata": {}, + "outputs": [], + "source": [ + "exclude = ['state', 'county', 'tract', 'county_name', 'GEOID']\n", + "cols_to_numeric = [col for col in census_data.columns if col not in exclude]\n", + "census_data[cols_to_numeric] = census_data[cols_to_numeric].apply(pd.to_numeric, errors='coerce')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8bd075af-bae9-4987-8a62-e55605df4068", + "metadata": {}, + "outputs": [], + "source": [ + "## Aggregate ACS income brackets into broader income group categories: extremely low, very low, and low income.\n", + "census_data['inc_extremelylow'] = census_data['income_less_10000'] + census_data['income_10000_14999'] + census_data['income_15000_24999']\n", + "census_data['inc_verylow'] = census_data['income_25000_34999'] + census_data['income_35000_49999']\n", + "census_data['inc_low'] = census_data['income_50000_64999'] + census_data['income_65000_74999']" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "533cad22-6f5a-44c0-bacd-9cd7424d27e3", + "metadata": {}, + "outputs": [], + "source": [ + "# Sum all senior age brackets (65+) to calculate total male and female senior populations.\n", + "census_data['male_seniors'] = census_data.loc[:, \"male_65_to_66\":\"male_85_and_over\"].sum(axis=1)\n", + "census_data['female_seniors'] = census_data.loc[:, \"female_65_to_66\":\"female_85_and_over\"].sum(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "afbfea83-8c4b-4d31-9012-db3764b55fd5", + "metadata": {}, + "outputs": [], + "source": [ + "census_data['male_youth'] = census_data.loc[:, 'male_15_17':'male_22_24'].sum(axis=1)\n", + "census_data['female_youth'] = census_data.loc[:, 'female_15_17':'female_22_24'].sum(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1b1d6c35-8f48-45b2-97f1-4e7326f9ce1d", + "metadata": {}, + "outputs": [], + "source": [ + "disability_cols = ['male_under5_with_disability','male_5_17_with_disability','male_18_34_with_disability','male_35_64_with_disability','male_65_74_with_disability','male_75_plus_with_disability','female_under5_with_disability','female_5_17_with_disability','female_18_34_with_disability','female_35_64_with_disability','female_65_74_with_disability','female_75_plus_with_disability']\n", + "census_data['disabled_pop'] = census_data[disability_cols].sum(axis=1)\n", + "census_data = census_data.drop(columns=disability_cols)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3b5e0c7c-e345-4b99-84b9-c1da87692aff", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
total_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carsGEOIDB18101_001Epublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowmale_seniorsfemale_seniorsmale_youthfemale_youthdisabled_pop
03094134264478411949467852707285105107190002626130141925000118875134157871297028850600140010030941316129Alameda3972441994234914572313
12093164961860595828264035679634133303010289000225880757089122077732929506001400200209386138Alameda2342191092492854637168
2572731030623471131002425108621941581314294880693553302643157731383201300251400148291157416060014003005727271380Alameda884651439332677281157459
34395343185317089192636551051044323303041000279003815961218710528721520717887134204060014004004376180388Alameda5794222652713607174339
438223972314132564140194751506020326819011570098469625025691244213385387244741690600140050038221655115Alameda591598631174430231151270
\n", + "
" + ], + "text/plain": [ + " total_pop poverty_pop non_us_citizen male_65_to_66 male_67_to_69 \\\n", + "0 3094 134 264 47 84 \n", + "1 2093 164 96 18 60 \n", + "2 5727 310 306 23 47 \n", + "3 4395 343 185 31 70 \n", + "4 3822 397 231 41 32 \n", + "\n", + " male_70_to_74 male_75_to_79 male_80_to_84 male_85_and_over \\\n", + "0 119 49 46 78 \n", + "1 59 58 28 26 \n", + "2 113 100 24 25 \n", + "3 89 19 26 36 \n", + "4 56 41 4 0 \n", + "\n", + " female_65_to_66 female_67_to_69 female_70_to_74 female_75_to_79 \\\n", + "0 52 70 72 85 \n", + "1 40 35 67 96 \n", + "2 108 62 194 158 \n", + "3 55 105 104 43 \n", + "4 19 47 51 50 \n", + "\n", + " female_80_to_84 female_85_and_over male_15_17 male_18_19 male_20 \\\n", + "0 105 107 19 0 0 \n", + "1 34 13 33 0 3 \n", + "2 13 142 94 88 0 \n", + "3 23 30 30 41 0 \n", + "4 60 203 26 81 9 \n", + "\n", + " male_21 male_22_24 female_15_17 female_18_19 female_20 female_21 \\\n", + "0 0 26 26 13 0 14 \n", + "1 0 10 28 9 0 0 \n", + "2 6 93 55 33 0 26 \n", + "3 0 0 27 9 0 0 \n", + "4 0 115 7 0 0 98 \n", + "\n", + " female_22_24 median_household_income income_less_10000 \\\n", + "0 19 250001 188 \n", + "1 0 225880 75 \n", + "2 43 157731 383 \n", + "3 38 159612 187 \n", + "4 46 96250 256 \n", + "\n", + " income_10000_14999 income_15000_24999 income_25000_34999 \\\n", + "0 75 134 157 \n", + "1 70 89 12 \n", + "2 201 300 251 \n", + "3 105 287 215 \n", + "4 91 244 213 \n", + "\n", + " income_35000_49999 income_50000_64999 income_65000_74999 \\\n", + "0 87 129 70 \n", + "1 207 77 32 \n", + "2 400 148 291 \n", + "3 207 178 87 \n", + "4 385 387 244 \n", + "\n", + " workers_with_no_car households_with_no_cars GEOID B18101_001E \\\n", + "0 28 85 06001400100 3094 \n", + "1 92 95 06001400200 2093 \n", + "2 157 416 06001400300 5727 \n", + "3 134 204 06001400400 4376 \n", + "4 74 169 06001400500 3822 \n", + "\n", + " public_asst_pop veteran_pop county_name inc_extremelylow inc_verylow \\\n", + "0 1316 129 Alameda 397 244 \n", + "1 861 38 Alameda 234 219 \n", + "2 2713 80 Alameda 884 651 \n", + "3 1803 88 Alameda 579 422 \n", + "4 1655 115 Alameda 591 598 \n", + "\n", + " inc_low male_seniors female_seniors male_youth female_youth \\\n", + "0 199 423 491 45 72 \n", + "1 109 249 285 46 37 \n", + "2 439 332 677 281 157 \n", + "3 265 271 360 71 74 \n", + "4 631 174 430 231 151 \n", + "\n", + " disabled_pop \n", + "0 313 \n", + "1 168 \n", + "2 459 \n", + "3 339 \n", + "4 270 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "census_data.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e2341578-5d79-4c2f-a6a5-ee556abcbc17", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 9129 entries, 0 to 9128\n", + "Data columns (total 48 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 total_pop 9129 non-null int64 \n", + " 1 poverty_pop 9129 non-null int64 \n", + " 2 non_us_citizen 9129 non-null int64 \n", + " 3 male_65_to_66 9129 non-null int64 \n", + " 4 male_67_to_69 9129 non-null int64 \n", + " 5 male_70_to_74 9129 non-null int64 \n", + " 6 male_75_to_79 9129 non-null int64 \n", + " 7 male_80_to_84 9129 non-null int64 \n", + " 8 male_85_and_over 9129 non-null int64 \n", + " 9 female_65_to_66 9129 non-null int64 \n", + " 10 female_67_to_69 9129 non-null int64 \n", + " 11 female_70_to_74 9129 non-null int64 \n", + " 12 female_75_to_79 9129 non-null int64 \n", + " 13 female_80_to_84 9129 non-null int64 \n", + " 14 female_85_and_over 9129 non-null int64 \n", + " 15 male_15_17 9129 non-null int64 \n", + " 16 male_18_19 9129 non-null int64 \n", + " 17 male_20 9129 non-null int64 \n", + " 18 male_21 9129 non-null int64 \n", + " 19 male_22_24 9129 non-null int64 \n", + " 20 female_15_17 9129 non-null int64 \n", + " 21 female_18_19 9129 non-null int64 \n", + " 22 female_20 9129 non-null int64 \n", + " 23 female_21 9129 non-null int64 \n", + " 24 female_22_24 9129 non-null int64 \n", + " 25 median_household_income 9129 non-null int64 \n", + " 26 income_less_10000 9129 non-null int64 \n", + " 27 income_10000_14999 9129 non-null int64 \n", + " 28 income_15000_24999 9129 non-null int64 \n", + " 29 income_25000_34999 9129 non-null int64 \n", + " 30 income_35000_49999 9129 non-null int64 \n", + " 31 income_50000_64999 9129 non-null int64 \n", + " 32 income_65000_74999 9129 non-null int64 \n", + " 33 workers_with_no_car 9129 non-null int64 \n", + " 34 households_with_no_cars 9129 non-null int64 \n", + " 35 GEOID 9129 non-null object\n", + " 36 B18101_001E 9129 non-null int64 \n", + " 37 public_asst_pop 9129 non-null int64 \n", + " 38 veteran_pop 9129 non-null int64 \n", + " 39 county_name 9129 non-null object\n", + " 40 inc_extremelylow 9129 non-null int64 \n", + " 41 inc_verylow 9129 non-null int64 \n", + " 42 inc_low 9129 non-null int64 \n", + " 43 male_seniors 9129 non-null int64 \n", + " 44 female_seniors 9129 non-null int64 \n", + " 45 male_youth 9129 non-null int64 \n", + " 46 female_youth 9129 non-null int64 \n", + " 47 disabled_pop 9129 non-null int64 \n", + "dtypes: int64(46), object(2)\n", + "memory usage: 3.3+ MB\n" + ] + } + ], + "source": [ + "census_data.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "6806f203-fc02-402a-97de-ed6ef73df0dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using FIPS code '06' for input 'CA'\n" + ] + } + ], + "source": [ + "#Retrieving Tract Geometries for California\n", + "ca_tracts_full = tracts(state=\"CA\", cb=True, year=2023, cache=True)\n", + "ca_tracts_full.to_crs(3310, inplace=True)\n", + "ca_tracts_full = ca_tracts_full.explode(index_parts=False).reset_index(drop=True)\n", + "ca_tracts_full = ca_tracts_full[~ca_tracts_full.is_empty]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d55b0985-e8f2-45e4-829f-5cc4f7f51241", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:2475: UserWarning: `keep_geom_type=True` in overlay resulted in 812 dropped geometries of different geometry types than df1 has. Set `keep_geom_type=False` to retain all geometries\n", + " return geopandas.overlay(\n" + ] + } + ], + "source": [ + "ca_tracts_land = erase_water(ca_tracts_full.copy())" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "6c31979d-b0b4-4e12-93e4-7ace297b5c8b", + "metadata": {}, + "outputs": [], + "source": [ + "# Merging the census tract geometries with the census data based on the GEOID\n", + "tracts_ca_acs = ca_tracts_full.merge(census_data, how=\"inner\", on=\"GEOID\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2ed3d76d-d51b-4e10-8045-6ce49845da53", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate the area of each census tract in square meters.\n", + "tracts_ca_acs[\"area_m2\"] = tracts_ca_acs.geometry.area" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e3374031-fae9-4711-8407-b59aef3093dd", + "metadata": {}, + "outputs": [], + "source": [ + "# Store data in warehouse\n", + "with fs.open(f\"{GCS_FILE_PATH}/AHSC_2026/census_tracts_data.parquet\", \"wb\") as f:\n", + " tracts_ca_acs.to_parquet(f, index=False)" + ] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_acs_2/05_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/05_data_processing.ipynb new file mode 100644 index 000000000..7b064d70d --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/05_data_processing.ipynb @@ -0,0 +1,2568 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "873ef61b-098a-49da-9c28-2667af4ffd64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dfd19a35-4791-4c64-a90a-88ec37c3b4b9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import google.auth\n", + "import os\n", + "import gcsfs\n", + "import requests\n", + "import fsspec\n", + "from shapely import wkt\n", + "import re\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "fs = gcsfs.GCSFileSystem()\n", + "\n", + "\n", + "pd.set_option('display.max_columns', None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "af0504b4-642c-4977-b166-d800acfc82a0", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f7477af7-e3ee-44f5-b292-bd423280a0f2", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/AHSC_2026/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4916dd04-523b-4dda-aca7-599a90560b19", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Load the stored organization, ridership, stop, data from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/AHSC_2026/ridership_trips_routes_weekday.csv\", \"rb\") as f:\n", + " ridership_trips_routes_weekday = pd.read_csv(f)" + ] + }, + { + "cell_type": "markdown", + "id": "703d3c9d-c755-45d9-aa74-467b315549dc", + "metadata": {}, + "source": [ + "## Spatial Analysis: Stop Buffers and Census Tract Intersections" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4f0323de-b195-4fdf-a9a4-2d2170716ac0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 28545 entries, 0 to 28544\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 28545 non-null object \n", + " 1 feed_key 28544 non-null object \n", + " 2 route_id 26875 non-null object \n", + " 3 route_name 13556 non-null object \n", + " 4 stop_id 28544 non-null object \n", + " 5 stop_name 28545 non-null object \n", + " 6 stop_code 27483 non-null object \n", + " 7 n_trips 28544 non-null float64\n", + " 8 n_routes 28544 non-null float64\n", + " 9 pt_geom 28515 non-null object \n", + " 10 day_type 28545 non-null object \n", + " 11 average_daily_boardings 28545 non-null float64\n", + " 12 average_daily_alightings 25942 non-null float64\n", + " 13 start_date 28545 non-null object \n", + " 14 end_date 28545 non-null object \n", + "dtypes: float64(4), object(11)\n", + "memory usage: 3.3+ MB\n" + ] + } + ], + "source": [ + "ridership_trips_routes_weekday.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9dbdebc4-b26b-4779-ab2f-83f565adf55f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keyroute_idroute_namestop_idstop_namestop_coden_tripsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
0Gold Coast Transit3cb676436aad669e52042c0e97a9a05116NaNVNACLR1.NaN32.01.0POINT(-119.294028 34.343645)Weekday0.0000003.0000002025-05-012025-05-31
1Samtransdb97cc02836aa5f0cf647d80160b23ecECRNaN3450171000 El Camino Real-Menlo College345017143.01.0POINT(-122.191284 37.457543)Weekday9.52381024.5714292025-08-012025-08-31
2Golden Gate Transitde77cb40e92fb47fa8d16228977cfb86130NaN404691011 Andersen Dr4046939.01.0POINT(-122.504252 37.955391)Weekday1.9090910.0000002025-09-012025-09-30
3Samtransdb97cc02836aa5f0cf647d80160b23ec61NaN3431191011 Crestview Dr3431195.01.0POINT(-122.284103 37.484282)Weekday1.4444441.8888892025-08-012025-08-31
4Samtransdb97cc02836aa5f0cf647d80160b23ec46NaN3406061060 Carolan Ave3406067.01.0POINT(-122.359627 37.586685)Weekday10.3333335.5000002025-08-012025-08-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key route_id route_name \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 NaN \n", + "1 Samtrans db97cc02836aa5f0cf647d80160b23ec ECR NaN \n", + "2 Golden Gate Transit de77cb40e92fb47fa8d16228977cfb86 130 NaN \n", + "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 61 NaN \n", + "4 Samtrans db97cc02836aa5f0cf647d80160b23ec 46 NaN \n", + "\n", + " stop_id stop_name stop_code n_trips n_routes \\\n", + "0 VNACLR1 . NaN 32.0 1.0 \n", + "1 345017 1000 El Camino Real-Menlo College 345017 143.0 1.0 \n", + "2 40469 1011 Andersen Dr 40469 39.0 1.0 \n", + "3 343119 1011 Crestview Dr 343119 5.0 1.0 \n", + "4 340606 1060 Carolan Ave 340606 7.0 1.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", + "1 POINT(-122.191284 37.457543) Weekday 9.523810 \n", + "2 POINT(-122.504252 37.955391) Weekday 1.909091 \n", + "3 POINT(-122.284103 37.484282) Weekday 1.444444 \n", + "4 POINT(-122.359627 37.586685) Weekday 10.333333 \n", + "\n", + " average_daily_alightings start_date end_date \n", + "0 3.000000 2025-05-01 2025-05-31 \n", + "1 24.571429 2025-08-01 2025-08-31 \n", + "2 0.000000 2025-09-01 2025-09-30 \n", + "3 1.888889 2025-08-01 2025-08-31 \n", + "4 5.500000 2025-08-01 2025-08-31 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_trips_routes_weekday.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fc371c6b-1e27-41e7-9e4d-130acdbf4154", + "metadata": {}, + "outputs": [], + "source": [ + "# Ensure pt_geom is string type\n", + "ridership_trips_routes_weekday['pt_geom'] = ridership_trips_routes_weekday['pt_geom'].astype(str)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "02ded3e0-8d73-4577-ab83-eac497b63673", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keyroute_idroute_namestop_idstop_namestop_coden_tripsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
28515Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN7002122nd StreetNaN104.03.0NaNWeekday1016.712073NaN2023-11-012025-07-31
28516Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70031BayshoreNaN75.01.0NaNWeekday137.102282NaN2023-11-012025-07-31
28517Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70121BelmontNaN75.01.0NaNWeekday543.256104NaN2023-11-012025-07-31
28518Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70291Blossom HillNaN8.01.0NaNWeekday57.459493NaN2023-11-012025-07-31
28519CaltrainNaNNaNNaNNaNBroadwayNaNNaNNaNNaNWeekday0.000000NaN2023-11-012025-07-31
28520Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70081BurlingameNaN75.01.0NaNWeekday542.005575NaN2023-11-012025-07-31
28521Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70191California AveNaN90.02.0NaNWeekday654.561279NaN2023-11-012025-07-31
28522Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70281CapitolNaN8.01.0NaNWeekday40.128541NaN2023-11-012025-07-31
28523Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70251College ParkNaN75.01.0NaNWeekday36.239420NaN2023-11-012025-07-31
28524Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70321GilroyNaN8.01.0NaNWeekday94.688588NaN2023-11-012025-07-31
28525Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70101Hayward ParkNaN75.01.0NaNWeekday291.195338NaN2023-11-012025-07-31
28526Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70111HillsdaleNaN104.03.0NaNWeekday1314.491035NaN2023-11-012025-07-31
28527Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70231LawrenceNaN90.02.0NaNWeekday571.968909NaN2023-11-012025-07-31
28528Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70161Menlo ParkNaN90.02.0NaNWeekday748.130990NaN2023-11-012025-07-31
28529Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70061MillbraeNaN104.03.0NaNWeekday1343.219117NaN2023-11-012025-07-31
28530Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70301Morgan HillNaN8.01.0NaNWeekday103.849297NaN2023-11-012025-07-31
28531Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70211Mountain ViewNaN104.03.0NaNWeekday1906.881882NaN2023-11-012025-07-31
28532Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70171Palo AltoNaN104.03.0NaNWeekday3139.693563NaN2023-11-012025-07-31
28533Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70141Redwood CityNaN104.03.0NaNWeekday1802.931211NaN2023-11-012025-07-31
28534Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70201San AntonioNaN90.02.0NaNWeekday537.773367NaN2023-11-012025-07-31
28535Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70051San BrunoNaN75.01.0NaNWeekday312.963513NaN2023-11-012025-07-31
28536Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70131San CarlosNaN75.01.0NaNWeekday545.405328NaN2023-11-012025-07-31
28537Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70011San FranciscoNaN104.03.0NaNWeekday5656.512364NaN2023-11-012025-07-31
28538Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70261San Jose DiridonNaN112.04.0NaNWeekday1789.561827NaN2023-11-012025-07-31
28539Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70311San MartinNaN8.01.0NaNWeekday23.949743NaN2023-11-012025-07-31
28540Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70091San MateoNaN104.03.0NaNWeekday1074.189854NaN2023-11-012025-07-31
28541Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70241Santa ClaraNaN90.02.0NaNWeekday718.467622NaN2023-11-012025-07-31
28542Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70041South San FranciscoNaN104.03.0NaNWeekday559.501648NaN2023-11-012025-07-31
28543Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70221SunnyvaleNaN104.03.0NaNWeekday1408.195136NaN2023-11-012025-07-31
28544Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70271TamienNaN83.02.0NaNWeekday198.883066NaN2023-11-012025-07-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key route_id route_name \\\n", + "28515 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28516 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28517 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28518 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28519 Caltrain NaN NaN NaN \n", + "28520 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28521 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28522 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28523 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28524 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28525 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28526 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28527 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28528 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28529 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28530 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28531 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28532 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28533 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28534 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28535 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28536 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28537 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28538 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28539 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28540 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28541 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28542 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28543 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "28544 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + "\n", + " stop_id stop_name stop_code n_trips n_routes pt_geom \\\n", + "28515 70021 22nd Street NaN 104.0 3.0 NaN \n", + "28516 70031 Bayshore NaN 75.0 1.0 NaN \n", + "28517 70121 Belmont NaN 75.0 1.0 NaN \n", + "28518 70291 Blossom Hill NaN 8.0 1.0 NaN \n", + "28519 NaN Broadway NaN NaN NaN NaN \n", + "28520 70081 Burlingame NaN 75.0 1.0 NaN \n", + "28521 70191 California Ave NaN 90.0 2.0 NaN \n", + "28522 70281 Capitol NaN 8.0 1.0 NaN \n", + "28523 70251 College Park NaN 75.0 1.0 NaN \n", + "28524 70321 Gilroy NaN 8.0 1.0 NaN \n", + "28525 70101 Hayward Park NaN 75.0 1.0 NaN \n", + "28526 70111 Hillsdale NaN 104.0 3.0 NaN \n", + "28527 70231 Lawrence NaN 90.0 2.0 NaN \n", + "28528 70161 Menlo Park NaN 90.0 2.0 NaN \n", + "28529 70061 Millbrae NaN 104.0 3.0 NaN \n", + "28530 70301 Morgan Hill NaN 8.0 1.0 NaN \n", + "28531 70211 Mountain View NaN 104.0 3.0 NaN \n", + "28532 70171 Palo Alto NaN 104.0 3.0 NaN \n", + "28533 70141 Redwood City NaN 104.0 3.0 NaN \n", + "28534 70201 San Antonio NaN 90.0 2.0 NaN \n", + "28535 70051 San Bruno NaN 75.0 1.0 NaN \n", + "28536 70131 San Carlos NaN 75.0 1.0 NaN \n", + "28537 70011 San Francisco NaN 104.0 3.0 NaN \n", + "28538 70261 San Jose Diridon NaN 112.0 4.0 NaN \n", + "28539 70311 San Martin NaN 8.0 1.0 NaN \n", + "28540 70091 San Mateo NaN 104.0 3.0 NaN \n", + "28541 70241 Santa Clara NaN 90.0 2.0 NaN \n", + "28542 70041 South San Francisco NaN 104.0 3.0 NaN \n", + "28543 70221 Sunnyvale NaN 104.0 3.0 NaN \n", + "28544 70271 Tamien NaN 83.0 2.0 NaN \n", + "\n", + " day_type average_daily_boardings average_daily_alightings start_date \\\n", + "28515 Weekday 1016.712073 NaN 2023-11-01 \n", + "28516 Weekday 137.102282 NaN 2023-11-01 \n", + "28517 Weekday 543.256104 NaN 2023-11-01 \n", + "28518 Weekday 57.459493 NaN 2023-11-01 \n", + "28519 Weekday 0.000000 NaN 2023-11-01 \n", + "28520 Weekday 542.005575 NaN 2023-11-01 \n", + "28521 Weekday 654.561279 NaN 2023-11-01 \n", + "28522 Weekday 40.128541 NaN 2023-11-01 \n", + "28523 Weekday 36.239420 NaN 2023-11-01 \n", + "28524 Weekday 94.688588 NaN 2023-11-01 \n", + "28525 Weekday 291.195338 NaN 2023-11-01 \n", + "28526 Weekday 1314.491035 NaN 2023-11-01 \n", + "28527 Weekday 571.968909 NaN 2023-11-01 \n", + "28528 Weekday 748.130990 NaN 2023-11-01 \n", + "28529 Weekday 1343.219117 NaN 2023-11-01 \n", + "28530 Weekday 103.849297 NaN 2023-11-01 \n", + "28531 Weekday 1906.881882 NaN 2023-11-01 \n", + "28532 Weekday 3139.693563 NaN 2023-11-01 \n", + "28533 Weekday 1802.931211 NaN 2023-11-01 \n", + "28534 Weekday 537.773367 NaN 2023-11-01 \n", + "28535 Weekday 312.963513 NaN 2023-11-01 \n", + "28536 Weekday 545.405328 NaN 2023-11-01 \n", + "28537 Weekday 5656.512364 NaN 2023-11-01 \n", + "28538 Weekday 1789.561827 NaN 2023-11-01 \n", + "28539 Weekday 23.949743 NaN 2023-11-01 \n", + "28540 Weekday 1074.189854 NaN 2023-11-01 \n", + "28541 Weekday 718.467622 NaN 2023-11-01 \n", + "28542 Weekday 559.501648 NaN 2023-11-01 \n", + "28543 Weekday 1408.195136 NaN 2023-11-01 \n", + "28544 Weekday 198.883066 NaN 2023-11-01 \n", + "\n", + " end_date \n", + "28515 2025-07-31 \n", + "28516 2025-07-31 \n", + "28517 2025-07-31 \n", + "28518 2025-07-31 \n", + "28519 2025-07-31 \n", + "28520 2025-07-31 \n", + "28521 2025-07-31 \n", + "28522 2025-07-31 \n", + "28523 2025-07-31 \n", + "28524 2025-07-31 \n", + "28525 2025-07-31 \n", + "28526 2025-07-31 \n", + "28527 2025-07-31 \n", + "28528 2025-07-31 \n", + "28529 2025-07-31 \n", + "28530 2025-07-31 \n", + "28531 2025-07-31 \n", + "28532 2025-07-31 \n", + "28533 2025-07-31 \n", + "28534 2025-07-31 \n", + "28535 2025-07-31 \n", + "28536 2025-07-31 \n", + "28537 2025-07-31 \n", + "28538 2025-07-31 \n", + "28539 2025-07-31 \n", + "28540 2025-07-31 \n", + "28541 2025-07-31 \n", + "28542 2025-07-31 \n", + "28543 2025-07-31 \n", + "28544 2025-07-31 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Show rows with missing pt_geom (NaN or 'nan')\n", + "missing_rows = ridership_trips_routes_weekday[\n", + " ridership_trips_routes_weekday['pt_geom'].isna() | \n", + " (ridership_trips_routes_weekday['pt_geom'] == 'nan')\n", + "]\n", + "missing_rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19c2eb9f-340c-46aa-b83d-91d46c7debf4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a47e7dfa-f157-4e0e-b779-c559ead48ecc", + "metadata": {}, + "outputs": [ + { + "ename": "GEOSException", + "evalue": "ParseException: Expected word but encountered number: 'nan'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mGEOSException\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Convert pt_geom column from WKT to shapely geometry\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m ridership_trips_routes_weekday[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mridership_trips_routes_weekday\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mpt_geom\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply\u001b[49m\u001b[43m(\u001b[49m\u001b[43mwkt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Create a GeoDataFrame\u001b[39;00m\n\u001b[1;32m 5\u001b[0m gdf_ridership \u001b[38;5;241m=\u001b[39m gpd\u001b[38;5;241m.\u001b[39mGeoDataFrame(ridership_trips_routes_weekday, geometry\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/series.py:4924\u001b[0m, in \u001b[0;36mSeries.apply\u001b[0;34m(self, func, convert_dtype, args, by_row, **kwargs)\u001b[0m\n\u001b[1;32m 4789\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mapply\u001b[39m(\n\u001b[1;32m 4790\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 4791\u001b[0m func: AggFuncType,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 4796\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 4797\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m DataFrame \u001b[38;5;241m|\u001b[39m Series:\n\u001b[1;32m 4798\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 4799\u001b[0m \u001b[38;5;124;03m Invoke function on values of Series.\u001b[39;00m\n\u001b[1;32m 4800\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 4915\u001b[0m \u001b[38;5;124;03m dtype: float64\u001b[39;00m\n\u001b[1;32m 4916\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 4917\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mSeriesApply\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 4918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4919\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4920\u001b[0m \u001b[43m \u001b[49m\u001b[43mconvert_dtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert_dtype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4921\u001b[0m \u001b[43m \u001b[49m\u001b[43mby_row\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mby_row\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4922\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4923\u001b[0m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m-> 4924\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/apply.py:1427\u001b[0m, in \u001b[0;36mSeriesApply.apply\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1424\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapply_compat()\n\u001b[1;32m 1426\u001b[0m \u001b[38;5;66;03m# self.func is Callable\u001b[39;00m\n\u001b[0;32m-> 1427\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply_standard\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/apply.py:1507\u001b[0m, in \u001b[0;36mSeriesApply.apply_standard\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1501\u001b[0m \u001b[38;5;66;03m# row-wise access\u001b[39;00m\n\u001b[1;32m 1502\u001b[0m \u001b[38;5;66;03m# apply doesn't have a `na_action` keyword and for backward compat reasons\u001b[39;00m\n\u001b[1;32m 1503\u001b[0m \u001b[38;5;66;03m# we need to give `na_action=\"ignore\"` for categorical data.\u001b[39;00m\n\u001b[1;32m 1504\u001b[0m \u001b[38;5;66;03m# TODO: remove the `na_action=\"ignore\"` when that default has been changed in\u001b[39;00m\n\u001b[1;32m 1505\u001b[0m \u001b[38;5;66;03m# Categorical (GH51645).\u001b[39;00m\n\u001b[1;32m 1506\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(obj\u001b[38;5;241m.\u001b[39mdtype, CategoricalDtype) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1507\u001b[0m mapped \u001b[38;5;241m=\u001b[39m \u001b[43mobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_map_values\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1508\u001b[0m \u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurried\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_action\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maction\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconvert_dtype\u001b[49m\n\u001b[1;32m 1509\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1511\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(mapped) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(mapped[\u001b[38;5;241m0\u001b[39m], ABCSeries):\n\u001b[1;32m 1512\u001b[0m \u001b[38;5;66;03m# GH#43986 Need to do list(mapped) in order to get treated as nested\u001b[39;00m\n\u001b[1;32m 1513\u001b[0m \u001b[38;5;66;03m# See also GH#25959 regarding EA support\u001b[39;00m\n\u001b[1;32m 1514\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj\u001b[38;5;241m.\u001b[39m_constructor_expanddim(\u001b[38;5;28mlist\u001b[39m(mapped), index\u001b[38;5;241m=\u001b[39mobj\u001b[38;5;241m.\u001b[39mindex)\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/base.py:921\u001b[0m, in \u001b[0;36mIndexOpsMixin._map_values\u001b[0;34m(self, mapper, na_action, convert)\u001b[0m\n\u001b[1;32m 918\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(arr, ExtensionArray):\n\u001b[1;32m 919\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m arr\u001b[38;5;241m.\u001b[39mmap(mapper, na_action\u001b[38;5;241m=\u001b[39mna_action)\n\u001b[0;32m--> 921\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43malgorithms\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap_array\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_action\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mna_action\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/algorithms.py:1743\u001b[0m, in \u001b[0;36mmap_array\u001b[0;34m(arr, mapper, na_action, convert)\u001b[0m\n\u001b[1;32m 1741\u001b[0m values \u001b[38;5;241m=\u001b[39m arr\u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mobject\u001b[39m, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 1742\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m na_action \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1743\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap_infer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1744\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1745\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m lib\u001b[38;5;241m.\u001b[39mmap_infer_mask(\n\u001b[1;32m 1746\u001b[0m values, mapper, mask\u001b[38;5;241m=\u001b[39misna(values)\u001b[38;5;241m.\u001b[39mview(np\u001b[38;5;241m.\u001b[39muint8), convert\u001b[38;5;241m=\u001b[39mconvert\n\u001b[1;32m 1747\u001b[0m )\n", + "File \u001b[0;32mlib.pyx:2972\u001b[0m, in \u001b[0;36mpandas._libs.lib.map_infer\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/shapely/wkt.py:22\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mloads\u001b[39m(data):\n\u001b[1;32m 10\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Load a geometry from a WKT string.\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \n\u001b[1;32m 12\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 20\u001b[0m \n\u001b[1;32m 21\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mshapely\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_wkt\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/shapely/io.py:305\u001b[0m, in \u001b[0;36mfrom_wkt\u001b[0;34m(geometry, on_invalid, **kwargs)\u001b[0m\n\u001b[1;32m 301\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_invalid only accepts scalar values\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 303\u001b[0m invalid_handler \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39muint8(DecodingErrorOptions\u001b[38;5;241m.\u001b[39mget_value(on_invalid))\n\u001b[0;32m--> 305\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_wkt\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minvalid_handler\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mGEOSException\u001b[0m: ParseException: Expected word but encountered number: 'nan'" + ] + } + ], + "source": [ + "# Convert pt_geom column from WKT to shapely geometry\n", + "ridership_trips_routes_weekday['geometry'] = ridership_trips_routes_weekday['pt_geom'].apply(wkt.loads)\n", + "\n", + "# Create a GeoDataFrame\n", + "gdf_ridership = gpd.GeoDataFrame(ridership_trips_routes_weekday, geometry='geometry')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "29888876-97a7-4462-9149-7a19ba540104", + "metadata": {}, + "outputs": [], + "source": [ + "# Reproject to match census tracts CRS\n", + "gdf_ridership = gdf_ridership.to_crs(tracts_ca_acs.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "806da12f-9cf6-4306-81c0-dd057f31d8a9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "orgs_stop_buffered = orgs_stops_merged.copy()\n", + "orgs_stop_buffered[\"geometry\"] = orgs_stop_buffered.geometry.buffer(804.672)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4bafb6fb-f42e-4e70-81aa-9dec5bce7991", + "metadata": {}, + "outputs": [], + "source": [ + "orgs_stop_dissolved = orgs_stop_buffered.dissolve(by='name')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "53f8fd3d-7d0a-4570-aa02-3df6df277380", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 107671 entries, 0 to 107670\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 107671 non-null object \n", + " 1 ntd_id_x 81966 non-null object \n", + " 2 ntd_id_2022_x 82066 non-null object \n", + " 3 stop_id 107671 non-null object \n", + " 4 stop_name 107671 non-null object \n", + " 5 schedule_gtfs_dataset_name 92779 non-null object \n", + " 6 organization_source_record_id 95351 non-null object \n", + " 7 geometry 107671 non-null geometry\n", + " 8 organization_name 95351 non-null object \n", + " 9 name_clean 107671 non-null object \n", + " 10 source_record_id 88562 non-null object \n", + " 11 key 88954 non-null object \n", + " 12 organization_type 88954 non-null object \n", + " 13 ntd_id_y 84115 non-null object \n", + " 14 ntd_id_2022_y 84215 non-null object \n", + "dtypes: geometry(1), object(14)\n", + "memory usage: 13.1+ MB\n" + ] + } + ], + "source": [ + "orgs_stop_buffered.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "9de1e91a-aa0b-4eea-b6c2-05537cf21aea", + "metadata": {}, + "outputs": [], + "source": [ + "orgs_stop_dissolved = orgs_stop_dissolved.reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "538d7740-f3b7-477e-a2ec-81560e3966c5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 207 entries, 0 to 206\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 207 non-null object \n", + " 1 geometry 207 non-null geometry\n", + " 2 ntd_id_x 143 non-null object \n", + " 3 ntd_id_2022_x 145 non-null object \n", + " 4 stop_id 207 non-null object \n", + " 5 stop_name 207 non-null object \n", + " 6 schedule_gtfs_dataset_name 186 non-null object \n", + " 7 organization_source_record_id 197 non-null object \n", + " 8 organization_name 197 non-null object \n", + " 9 name_clean 207 non-null object \n", + " 10 source_record_id 179 non-null object \n", + " 11 key 182 non-null object \n", + " 12 organization_type 182 non-null object \n", + " 13 ntd_id_y 150 non-null object \n", + " 14 ntd_id_2022_y 152 non-null object \n", + "dtypes: geometry(1), object(14)\n", + "memory usage: 24.4+ KB\n" + ] + } + ], + "source": [ + "orgs_stop_dissolved.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "98dd17d1-56e0-4dfc-b566-d5ae3eb66881", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namegeometryntd_id_xntd_id_2022_xstop_idstop_nameschedule_gtfs_dataset_nameorganization_source_record_idorganization_namename_cleansource_record_idkeyorganization_typentd_id_yntd_id_2022_y
0Alhambra SchedulePOLYGON ((169690.507 -438032.396, 169637.476 -...90247902472619788Alamansor St & Los Higos StAlhambra SchedulerecNaKvzVQhGX1puuCity of AlhambraAlhambrarecNaKvzVQhGX1puu897ce086b03388bc914f5c239298fb85City/Town9024790247
1Amador ScheduleMULTIPOLYGON (((-79576.548 30778.572, -79623.5...9R02-910009100019009WalmartAmador SchedulerecSBFiK95hJnJuYxAmador Regional Transit SystemAmadorrecSBFiK95hJnJuYx71b58e792726688aef31d4712480d350Independent Agency9R02-9100091000
2Amtrak ScheduleMULTIPOLYGON (((-170145.246 -163121.073, -1702...NoneNoneAUSAustinAmtrak SchedulerecKsb5FnJy70up78AmtrakAmtrakrecKsb5FnJy70up787225e6e33a67f74bc42fe137d9f9be23Federal GovernmentNoneNone
3Anaheim Resort ScheduleMULTIPOLYGON (((192212.099 -467839.848, 192171...90211902118e75ec44-01e5-4319-adbe-d96e78c3837bBall & FloreAnaheim Resort SchedulerecsrIZdx5Wt6n3olAnaheim Transportation NetworkAnaheim ResortrecsrIZdx5Wt6n3ola49a3c2c1b56a748da002e3f343fa1c5Independent Agency9021190211
4Antelope Valley Transit Authority ScheduleMULTIPOLYGON (((143232.265 -439728.624, 143168...9012190121461110th St. E. & Ave. R-8Antelope Valley Transit Authority SchedulerecxsWR0KRrQTdjmgAntelope Valley Transit AuthorityAntelope Valley Transit AuthorityrecxsWR0KRrQTdjmg86e23a9a896696a1d14e026b3f17843bIndependent Agency9012190121
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 Alhambra Schedule \n", + "1 Amador Schedule \n", + "2 Amtrak Schedule \n", + "3 Anaheim Resort Schedule \n", + "4 Antelope Valley Transit Authority Schedule \n", + "\n", + " geometry ntd_id_x \\\n", + "0 POLYGON ((169690.507 -438032.396, 169637.476 -... 90247 \n", + "1 MULTIPOLYGON (((-79576.548 30778.572, -79623.5... 9R02-91000 \n", + "2 MULTIPOLYGON (((-170145.246 -163121.073, -1702... None \n", + "3 MULTIPOLYGON (((192212.099 -467839.848, 192171... 90211 \n", + "4 MULTIPOLYGON (((143232.265 -439728.624, 143168... 90121 \n", + "\n", + " ntd_id_2022_x stop_id \\\n", + "0 90247 2619788 \n", + "1 91000 19009 \n", + "2 None AUS \n", + "3 90211 8e75ec44-01e5-4319-adbe-d96e78c3837b \n", + "4 90121 461 \n", + "\n", + " stop_name schedule_gtfs_dataset_name \\\n", + "0 Alamansor St & Los Higos St Alhambra Schedule \n", + "1 Walmart Amador Schedule \n", + "2 Austin Amtrak Schedule \n", + "3 Ball & Flore Anaheim Resort Schedule \n", + "4 110th St. E. & Ave. R-8 Antelope Valley Transit Authority Schedule \n", + "\n", + " organization_source_record_id organization_name \\\n", + "0 recNaKvzVQhGX1puu City of Alhambra \n", + "1 recSBFiK95hJnJuYx Amador Regional Transit System \n", + "2 recKsb5FnJy70up78 Amtrak \n", + "3 recsrIZdx5Wt6n3ol Anaheim Transportation Network \n", + "4 recxsWR0KRrQTdjmg Antelope Valley Transit Authority \n", + "\n", + " name_clean source_record_id \\\n", + "0 Alhambra recNaKvzVQhGX1puu \n", + "1 Amador recSBFiK95hJnJuYx \n", + "2 Amtrak recKsb5FnJy70up78 \n", + "3 Anaheim Resort recsrIZdx5Wt6n3ol \n", + "4 Antelope Valley Transit Authority recxsWR0KRrQTdjmg \n", + "\n", + " key organization_type ntd_id_y \\\n", + "0 897ce086b03388bc914f5c239298fb85 City/Town 90247 \n", + "1 71b58e792726688aef31d4712480d350 Independent Agency 9R02-91000 \n", + "2 7225e6e33a67f74bc42fe137d9f9be23 Federal Government None \n", + "3 a49a3c2c1b56a748da002e3f343fa1c5 Independent Agency 90211 \n", + "4 86e23a9a896696a1d14e026b3f17843b Independent Agency 90121 \n", + "\n", + " ntd_id_2022_y \n", + "0 90247 \n", + "1 91000 \n", + "2 None \n", + "3 90211 \n", + "4 90121 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "orgs_stop_dissolved.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "2e231b7d-d744-419d-b442-810b166fcd3d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Compute the intersection between buffered stops and census tracts.\n", + "geometry_intersect = gpd.overlay(\n", + " orgs_stop_dissolved, \n", + " tracts_ca_acs, \n", + " how = 'intersection', \n", + " keep_geom_type=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "fa657799-42aa-46d7-a789-c4d86b226c13", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Calculate the area of each intersected geometry in square meters.\n", + "geometry_intersect['area_2'] = geometry_intersect.geometry.area" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "59ce3254-f021-40cd-869b-3c7a21f9002e", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namentd_id_xntd_id_2022_xstop_idstop_nameschedule_gtfs_dataset_nameorganization_source_record_idorganization_namename_cleansource_record_idkeyorganization_typentd_id_yntd_id_2022_ySTATEFPCOUNTYFPTRACTCEGEOIDFQGEOIDNAMENAMELSADSTUSPSNAMELSADCOSTATE_NAMELSADALANDAWATERtotal_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carsB18101_001Epublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowmale_seniorsfemale_seniorsmale_youthfemale_youthdisabled_poparea_m2geometryarea_2
0Alhambra Schedule90247902472619788Alamansor St & Los Higos StAlhambra SchedulerecNaKvzVQhGX1puuCity of AlhambraAlhambrarecNaKvzVQhGX1puu897ce086b03388bc914f5c239298fb85City/Town9024790247060374811031400000US06037481103060374811034811.03Census Tract 4811.03CALos Angeles CountyCaliforniaCT141360705315879101719797920467681855076891851211409809386181382769305093475655538443532171191865284187657Los Angeles142113975703195662242924981.406019e+06POLYGON ((174546.535 -434262.136, 174543.285 -...23.630888
1LA Metro Bus Schedule9015490154142294Candlewood / HayterLA Metro Bus SchedulerecPnGkwdpnr8jmHBLos Angeles County Metropolitan Transportation...LA Metro BusrecPnGkwdpnr8jmHB9e96bde610e80d71f500eea119c4723cIndependent Agency9015490154060374811031400000US06037481103060374811034811.03Census Tract 4811.03CALos Angeles CountyCaliforniaCT141360705315879101719797920467681855076891851211409809386181382769305093475655538443532171191865284187657Los Angeles142113975703195662242924981.406019e+06POLYGON ((175957.387 -433744.848, 175878.515 -...747957.619083
\n", + "
" + ], + "text/plain": [ + " name ntd_id_x ntd_id_2022_x stop_id \\\n", + "0 Alhambra Schedule 90247 90247 2619788 \n", + "1 LA Metro Bus Schedule 90154 90154 142294 \n", + "\n", + " stop_name schedule_gtfs_dataset_name \\\n", + "0 Alamansor St & Los Higos St Alhambra Schedule \n", + "1 Candlewood / Hayter LA Metro Bus Schedule \n", + "\n", + " organization_source_record_id \\\n", + "0 recNaKvzVQhGX1puu \n", + "1 recPnGkwdpnr8jmHB \n", + "\n", + " organization_name name_clean \\\n", + "0 City of Alhambra Alhambra \n", + "1 Los Angeles County Metropolitan Transportation... LA Metro Bus \n", + "\n", + " source_record_id key organization_type \\\n", + "0 recNaKvzVQhGX1puu 897ce086b03388bc914f5c239298fb85 City/Town \n", + "1 recPnGkwdpnr8jmHB 9e96bde610e80d71f500eea119c4723c Independent Agency \n", + "\n", + " ntd_id_y ntd_id_2022_y STATEFP COUNTYFP TRACTCE GEOIDFQ \\\n", + "0 90247 90247 06 037 481103 1400000US06037481103 \n", + "1 90154 90154 06 037 481103 1400000US06037481103 \n", + "\n", + " GEOID NAME NAMELSAD STUSPS NAMELSADCO \\\n", + "0 06037481103 4811.03 Census Tract 4811.03 CA Los Angeles County \n", + "1 06037481103 4811.03 Census Tract 4811.03 CA Los Angeles County \n", + "\n", + " STATE_NAME LSAD ALAND AWATER total_pop poverty_pop non_us_citizen \\\n", + "0 California CT 1413607 0 5315 879 1017 \n", + "1 California CT 1413607 0 5315 879 1017 \n", + "\n", + " male_65_to_66 male_67_to_69 male_70_to_74 male_75_to_79 male_80_to_84 \\\n", + "0 19 79 79 20 46 \n", + "1 19 79 79 20 46 \n", + "\n", + " male_85_and_over female_65_to_66 female_67_to_69 female_70_to_74 \\\n", + "0 76 81 85 50 \n", + "1 76 81 85 50 \n", + "\n", + " female_75_to_79 female_80_to_84 female_85_and_over male_15_17 \\\n", + "0 76 89 185 121 \n", + "1 76 89 185 121 \n", + "\n", + " male_18_19 male_20 male_21 male_22_24 female_15_17 female_18_19 \\\n", + "0 14 0 9 80 93 86 \n", + "1 14 0 9 80 93 86 \n", + "\n", + " female_20 female_21 female_22_24 median_household_income \\\n", + "0 18 13 82 76930 \n", + "1 18 13 82 76930 \n", + "\n", + " income_less_10000 income_10000_14999 income_15000_24999 \\\n", + "0 509 347 565 \n", + "1 509 347 565 \n", + "\n", + " income_25000_34999 income_35000_49999 income_50000_64999 \\\n", + "0 553 844 353 \n", + "1 553 844 353 \n", + "\n", + " income_65000_74999 workers_with_no_car households_with_no_cars \\\n", + "0 217 119 186 \n", + "1 217 119 186 \n", + "\n", + " B18101_001E public_asst_pop veteran_pop county_name inc_extremelylow \\\n", + "0 5284 1876 57 Los Angeles 1421 \n", + "1 5284 1876 57 Los Angeles 1421 \n", + "\n", + " inc_verylow inc_low male_seniors female_seniors male_youth \\\n", + "0 1397 570 319 566 224 \n", + "1 1397 570 319 566 224 \n", + "\n", + " female_youth disabled_pop area_m2 \\\n", + "0 292 498 1.406019e+06 \n", + "1 292 498 1.406019e+06 \n", + "\n", + " geometry area_2 \n", + "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", + "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 " + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geometry_intersect.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "9c706362-1ebf-408f-8ae2-b119a9bccd5c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 20839 entries, 0 to 20838\n", + "Data columns (total 77 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 20839 non-null object \n", + " 1 ntd_id_x 15048 non-null object \n", + " 2 ntd_id_2022_x 15110 non-null object \n", + " 3 stop_id 20839 non-null object \n", + " 4 stop_name 20839 non-null object \n", + " 5 schedule_gtfs_dataset_name 17866 non-null object \n", + " 6 organization_source_record_id 18848 non-null object \n", + " 7 organization_name 18848 non-null object \n", + " 8 name_clean 20839 non-null object \n", + " 9 source_record_id 17485 non-null object \n", + " 10 key 18001 non-null object \n", + " 11 organization_type 18001 non-null object \n", + " 12 ntd_id_y 15508 non-null object \n", + " 13 ntd_id_2022_y 15570 non-null object \n", + " 14 STATEFP 20839 non-null object \n", + " 15 COUNTYFP 20839 non-null object \n", + " 16 TRACTCE 20839 non-null object \n", + " 17 GEOIDFQ 20839 non-null object \n", + " 18 GEOID 20839 non-null object \n", + " 19 NAME 20839 non-null object \n", + " 20 NAMELSAD 20839 non-null object \n", + " 21 STUSPS 20839 non-null object \n", + " 22 NAMELSADCO 20839 non-null object \n", + " 23 STATE_NAME 20839 non-null object \n", + " 24 LSAD 20839 non-null object \n", + " 25 ALAND 20839 non-null int64 \n", + " 26 AWATER 20839 non-null int64 \n", + " 27 total_pop 20839 non-null int64 \n", + " 28 poverty_pop 20839 non-null int64 \n", + " 29 non_us_citizen 20839 non-null int64 \n", + " 30 male_65_to_66 20839 non-null int64 \n", + " 31 male_67_to_69 20839 non-null int64 \n", + " 32 male_70_to_74 20839 non-null int64 \n", + " 33 male_75_to_79 20839 non-null int64 \n", + " 34 male_80_to_84 20839 non-null int64 \n", + " 35 male_85_and_over 20839 non-null int64 \n", + " 36 female_65_to_66 20839 non-null int64 \n", + " 37 female_67_to_69 20839 non-null int64 \n", + " 38 female_70_to_74 20839 non-null int64 \n", + " 39 female_75_to_79 20839 non-null int64 \n", + " 40 female_80_to_84 20839 non-null int64 \n", + " 41 female_85_and_over 20839 non-null int64 \n", + " 42 male_15_17 20839 non-null int64 \n", + " 43 male_18_19 20839 non-null int64 \n", + " 44 male_20 20839 non-null int64 \n", + " 45 male_21 20839 non-null int64 \n", + " 46 male_22_24 20839 non-null int64 \n", + " 47 female_15_17 20839 non-null int64 \n", + " 48 female_18_19 20839 non-null int64 \n", + " 49 female_20 20839 non-null int64 \n", + " 50 female_21 20839 non-null int64 \n", + " 51 female_22_24 20839 non-null int64 \n", + " 52 median_household_income 20839 non-null int64 \n", + " 53 income_less_10000 20839 non-null int64 \n", + " 54 income_10000_14999 20839 non-null int64 \n", + " 55 income_15000_24999 20839 non-null int64 \n", + " 56 income_25000_34999 20839 non-null int64 \n", + " 57 income_35000_49999 20839 non-null int64 \n", + " 58 income_50000_64999 20839 non-null int64 \n", + " 59 income_65000_74999 20839 non-null int64 \n", + " 60 workers_with_no_car 20839 non-null int64 \n", + " 61 households_with_no_cars 20839 non-null int64 \n", + " 62 B18101_001E 20839 non-null int64 \n", + " 63 public_asst_pop 20839 non-null int64 \n", + " 64 veteran_pop 20839 non-null int64 \n", + " 65 county_name 20839 non-null object \n", + " 66 inc_extremelylow 20839 non-null int64 \n", + " 67 inc_verylow 20839 non-null int64 \n", + " 68 inc_low 20839 non-null int64 \n", + " 69 male_seniors 20839 non-null int64 \n", + " 70 female_seniors 20839 non-null int64 \n", + " 71 male_youth 20839 non-null int64 \n", + " 72 female_youth 20839 non-null int64 \n", + " 73 disabled_pop 20839 non-null int64 \n", + " 74 area_m2 20839 non-null float64 \n", + " 75 geometry 20839 non-null geometry\n", + " 76 area_2 20839 non-null float64 \n", + "dtypes: float64(2), geometry(1), int64(48), object(26)\n", + "memory usage: 12.2+ MB\n" + ] + } + ], + "source": [ + "geometry_intersect.info()" + ] + }, + { + "cell_type": "markdown", + "id": "92eb767d-b477-4e14-ab51-fac6f615e621", + "metadata": {}, + "source": [ + "## Adjusting Population and Demographic Metrics for Stop Service Areas" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "ed44c28b-0eb9-4d7c-b9a5-3739ea9f5133", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Adjust total population by the proportion of the tract area that intersects the stop buffer.\n", + "# Calculate the proportion of each tract's area that intersects the stop buffer\n", + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2']" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "597c67ad-9913-435f-8c9b-ddc1a9fbd297", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'poverty_pop', 'non_us_citizen', 'workers_with_no_car', \n", + " 'households_with_no_cars', 'disabled_pop', 'public_asst_pop', \n", + " 'inc_extremelylow', 'inc_verylow', 'inc_low', \n", + " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth'\n", + "]\n", + "\n", + "# Apply area ratio to create adjusted metrics\n", + "geometry_intersect[[f'{col}_adj' for col in cols_to_weight]] = (\n", + " geometry_intersect[cols_to_weight].multiply(geometry_intersect['area_ratio'], axis=0)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "e1e4d484-1748-4027-83b2-bbb8dc441ed9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nameorganization_typeorganization_namentd_id_yntd_id_2022_ystop_idstop_nameGEOIDFQgeometryarea_2total_pop_adjpoverty_pop_adjnon_us_citizen_adjworkers_with_no_car_adjhouseholds_with_no_cars_adjdisabled_pop_adjpublic_asst_pop_adjinc_extremelylow_adjinc_verylow_adjinc_low_adjmale_seniors_adjfemale_seniors_adjmale_youth_adjfemale_youth_adjveteran_pop_adj
0Alhambra ScheduleCity/TownCity of Alhambra90247902472619788Alamansor St & Los Higos St1400000US06037481103POLYGON ((174546.535 -434262.136, 174543.285 -...23.6308880.0893290.0147730.0170930.0020000.0031260.0083700.0315300.0238830.0234790.0095800.0053610.0095130.0037650.0049080.000958
1LA Metro Bus ScheduleIndependent AgencyLos Angeles County Metropolitan Transportation...9015490154142294Candlewood / Hayter1400000US06037481103POLYGON ((175957.387 -433744.848, 175878.515 -...747957.6190832827.411664467.600160541.01179063.30423198.946109264.920227997.972584755.926994743.159754303.221947169.697897301.094074119.160905155.33475230.322195
\n", + "
" + ], + "text/plain": [ + " name organization_type \\\n", + "0 Alhambra Schedule City/Town \n", + "1 LA Metro Bus Schedule Independent Agency \n", + "\n", + " organization_name ntd_id_y ntd_id_2022_y \\\n", + "0 City of Alhambra 90247 90247 \n", + "1 Los Angeles County Metropolitan Transportation... 90154 90154 \n", + "\n", + " stop_id stop_name GEOIDFQ \\\n", + "0 2619788 Alamansor St & Los Higos St 1400000US06037481103 \n", + "1 142294 Candlewood / Hayter 1400000US06037481103 \n", + "\n", + " geometry area_2 \\\n", + "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", + "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 \n", + "\n", + " total_pop_adj poverty_pop_adj non_us_citizen_adj \\\n", + "0 0.089329 0.014773 0.017093 \n", + "1 2827.411664 467.600160 541.011790 \n", + "\n", + " workers_with_no_car_adj households_with_no_cars_adj disabled_pop_adj \\\n", + "0 0.002000 0.003126 0.008370 \n", + "1 63.304231 98.946109 264.920227 \n", + "\n", + " public_asst_pop_adj inc_extremelylow_adj inc_verylow_adj inc_low_adj \\\n", + "0 0.031530 0.023883 0.023479 0.009580 \n", + "1 997.972584 755.926994 743.159754 303.221947 \n", + "\n", + " male_seniors_adj female_seniors_adj male_youth_adj female_youth_adj \\\n", + "0 0.005361 0.009513 0.003765 0.004908 \n", + "1 169.697897 301.094074 119.160905 155.334752 \n", + "\n", + " veteran_pop_adj \n", + "0 0.000958 \n", + "1 30.322195 " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Stop level demography data \n", + "filtered_final_data = geometry_intersect[['name', 'organization_type', 'organization_name', 'ntd_id_y', 'ntd_id_2022_y', 'stop_id', 'stop_name', \n", + " 'GEOIDFQ', 'geometry', 'area_2',\t'total_pop_adj',\t'poverty_pop_adj',\t\n", + " 'non_us_citizen_adj',\t'workers_with_no_car_adj',\t'households_with_no_cars_adj',\t'disabled_pop_adj',\t\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\t'inc_low_adj',\t'male_seniors_adj',\t\n", + " 'female_seniors_adj', 'male_youth_adj', 'female_youth_adj', 'veteran_pop_adj']]\n", + "\n", + "filtered_final_data.head(2)" + ] + }, + { + "cell_type": "markdown", + "id": "6119ef50-cc16-43b9-a2aa-28d36a4428f8", + "metadata": {}, + "source": [ + "## Agency Level Demography Data " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "893d1d91-1f1d-43af-870d-abfba2ccccdf", + "metadata": {}, + "outputs": [], + "source": [ + "group_key = ['name']\n", + "\n", + "# Identify adjusted demographic columns\n", + "adj_cols = [col for col in geometry_intersect.columns if col.endswith('_adj')]\n", + "\n", + "# Extra non-demographic attributes to keep (take first occurrence per agency)\n", + "extra_cols = ['organization_type', 'ntd_id_y', 'ntd_id_2022_y', 'key']\n", + "\n", + "# Dissolve stop buffers to get agency shapes\n", + "agency_geometry = orgs_stop_dissolved.dissolve(by=group_key, as_index=False)\n", + "\n", + "# --- DROP overlapping extra columns from agency_geometry ---\n", + "agency_geometry = agency_geometry.drop(columns=extra_cols, errors='ignore')\n", + "\n", + "# Aggregate population metrics\n", + "agency_demo = geometry_intersect.groupby(group_key, as_index=False)[adj_cols].sum()\n", + "\n", + "# Merge demographics with geometry\n", + "agency_summary = agency_geometry.merge(agency_demo, on=group_key, how='left')\n", + "\n", + "# Merge extra attributes (take first)\n", + "extra_attrs = orgs_stop_dissolved[group_key + extra_cols].drop_duplicates(subset=group_key)\n", + "agency_summary = agency_summary.merge(extra_attrs, on=group_key, how='left')\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "d4712014-ac05-4411-b48e-8ff985371e9c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "agency_summary = gpd.GeoDataFrame(\n", + " agency_summary,\n", + " geometry='geometry',\n", + " crs=tracts_ca_acs.crs\n", + ").to_crs(epsg=4326)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "23e6568e-b163-40d3-999b-e05416c2b6e6", + "metadata": {}, + "outputs": [], + "source": [ + "agency_summary = agency_summary.drop(columns=[\"ntd_id_x\", \"ntd_id_2022_x\"])\n", + "\n", + "agency_summary = agency_summary.rename(\n", + " columns={\n", + " \"ntd_id_y\": \"ntd_id\",\n", + " \"ntd_id_2022_y\": \"ntd_id_2022\"\n", + " }\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "a7fd704c-6a7b-4573-85d1-8d27bbaf43a7", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 207 entries, 0 to 206\n", + "Data columns (total 28 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 name 207 non-null object \n", + " 1 geometry 207 non-null geometry\n", + " 2 stop_id 207 non-null object \n", + " 3 stop_name 207 non-null object \n", + " 4 schedule_gtfs_dataset_name 186 non-null object \n", + " 5 organization_source_record_id 197 non-null object \n", + " 6 organization_name 197 non-null object \n", + " 7 name_clean 207 non-null object \n", + " 8 source_record_id 179 non-null object \n", + " 9 total_pop_adj 207 non-null float64 \n", + " 10 poverty_pop_adj 207 non-null float64 \n", + " 11 non_us_citizen_adj 207 non-null float64 \n", + " 12 workers_with_no_car_adj 207 non-null float64 \n", + " 13 households_with_no_cars_adj 207 non-null float64 \n", + " 14 disabled_pop_adj 207 non-null float64 \n", + " 15 public_asst_pop_adj 207 non-null float64 \n", + " 16 inc_extremelylow_adj 207 non-null float64 \n", + " 17 inc_verylow_adj 207 non-null float64 \n", + " 18 inc_low_adj 207 non-null float64 \n", + " 19 male_seniors_adj 207 non-null float64 \n", + " 20 female_seniors_adj 207 non-null float64 \n", + " 21 veteran_pop_adj 207 non-null float64 \n", + " 22 male_youth_adj 207 non-null float64 \n", + " 23 female_youth_adj 207 non-null float64 \n", + " 24 organization_type 182 non-null object \n", + " 25 ntd_id 150 non-null object \n", + " 26 ntd_id_2022 152 non-null object \n", + " 27 key 182 non-null object \n", + "dtypes: float64(15), geometry(1), object(12)\n", + "memory usage: 46.9+ KB\n" + ] + } + ], + "source": [ + "agency_summary.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "f6060e9a-6fd1-48a0-80d0-84f4f8f402a7", + "metadata": {}, + "outputs": [], + "source": [ + "# Merge acs and ntd data \n", + "merged_agency_ntd = (\n", + " pd.merge(\n", + " agency_summary,\n", + " ridership_data_grouped,\n", + " how='left',\n", + " left_on='ntd_id_2022',\n", + " right_on='ntd_id'\n", + " )\n", + " .sort_values(by='agency')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "55e5088d-0ccd-4a53-be4a-b88d90e91afd", + "metadata": {}, + "outputs": [], + "source": [ + "merged_agency_ntd = gpd.GeoDataFrame(\n", + " merged_agency_ntd, \n", + " geometry='geometry', \n", + " crs=agency_summary.crs\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "4b87f77d-56cf-4bb5-81e6-687ae8e304e7", + "metadata": {}, + "outputs": [], + "source": [ + "merged_agency_ntd = merged_agency_ntd[['key', 'name', 'organization_type', 'organization_name', 'ntd_id_2022', 'agency', 'total_pop_adj', 'poverty_pop_adj', 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj', 'male_youth_adj', 'female_youth_adj',\n", + " 'veteran_pop_adj', 'unlinked_passenger_trips_upt', 'agency_voms']]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "3dd76252-8511-4ca1-a32b-792c4ef20ab4", + "metadata": {}, + "outputs": [], + "source": [ + "#Store data in warehouse\n", + "with fs.open(f\"{GCS_FILE_PATH}/transit_provider_dashboard/merged_agency_ntd.parquet\", \"wb\") as f:\n", + " merged_agency_ntd.to_parquet(f, index=False)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "366986a8-b17b-4e19-b7c2-82608e14d250", + "metadata": {}, + "outputs": [], + "source": [ + "def export_gdf(gdf, filename: str, export_csv: bool = True):\n", + " # Update the path\n", + " gcs_target_path = f\"{GCS_FILE_PATH}/transit_provider_dashboard/\"\n", + "\n", + " # Export as Parquet\n", + " parquet_file = f\"{filename}.parquet\"\n", + " gdf.to_parquet(parquet_file, engine=\"pyarrow\", index=False)\n", + " \n", + " fs.put(\n", + " parquet_file,\n", + " f\"{gcs_target_path}{parquet_file}\",\n", + " token=credentials.token\n", + " )\n", + " os.remove(parquet_file)\n", + " print(f\"Saved Parquet: {gcs_target_path}{parquet_file}\")\n", + " \n", + " if export_csv:\n", + " # Export as CSV\n", + " csv_file = f\"{filename}.csv\"\n", + " gdf.to_csv(csv_file, index=False)\n", + " \n", + " fs.put(\n", + " csv_file,\n", + " f\"{gcs_target_path}{csv_file}\",\n", + " token=credentials.token\n", + " )\n", + " os.remove(csv_file)\n", + " print(f\"Saved CSV: {gcs_target_path}{csv_file}\")\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "e4f586a2-1591-45fe-9170-ea7df1ac1177", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved Parquet: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/merged_agency_ntd.parquet\n", + "Saved CSV: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/merged_agency_ntd.csv\n" + ] + } + ], + "source": [ + "# Store data in warehouse\n", + "export_gdf(merged_agency_ntd, \"merged_agency_ntd\")" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "d6cc3be8-b52b-4ec0-97c6-1fc3c7e108d9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved Parquet: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/organization_stops_buffered.parquet\n", + "Saved CSV: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/organization_stops_buffered.csv\n" + ] + } + ], + "source": [ + "# Store data in warehouse\n", + "export_gdf(orgs_stop_buffered, \"organization_stops_buffered\")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "b7d230c1-b9ec-4bb7-80c7-f356470bf1e8", + "metadata": {}, + "outputs": [], + "source": [ + "GCS__PUBLIC_FILE_PATH = f\"{PUBLIC_GCS}transit_provider_dashboard/\"\n", + "\n", + "def export_gdf_public(gdf, filename: str, export_csv: bool = True, export_parquet: bool = True):\n", + " # --- GeoJSON ---\n", + " geojson_file = f\"{GCS__PUBLIC_FILE_PATH}{filename}.geojson\"\n", + " geojson_str = gdf.to_json()\n", + " with fsspec.open(geojson_file, 'w') as f_out:\n", + " f_out.write(geojson_str)\n", + " print(f\"Saved GeoJSON: {geojson_file}\")\n", + "\n", + " # --- Parquet ---\n", + " if export_parquet:\n", + " parquet_file = f\"{filename}.parquet\"\n", + " gdf.to_parquet(parquet_file, engine=\"pyarrow\", index=False)\n", + " with fsspec.open(f\"{GCS__PUBLIC_FILE_PATH}{filename}.parquet\", 'wb') as f_out:\n", + " with open(parquet_file, 'rb') as f_in:\n", + " f_out.write(f_in.read())\n", + " os.remove(parquet_file)\n", + " print(f\"Saved Parquet: {GCS__PUBLIC_FILE_PATH}{filename}.parquet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "44cd8c32-05c5-4852-b58c-a8dff66cfba2", + "metadata": {}, + "outputs": [], + "source": [ + "def export_gdf_public_with_metadata(gdf, filename: str):\n", + " \"\"\"\n", + " Export GeoDataFrame to a single XLSX file that includes:\n", + " - Main data sheet\n", + " - Metadata sheet describing the columns\n", + " \"\"\"\n", + " \n", + " # ---- Metadata dictionary ----\n", + " metadata = {\n", + " \"key\": \"Unique identifier for the agency record.\",\n", + " \"name\": \"Organization name.\",\n", + " \"organization_type\": \"Type of organization (e.g., transit agency, nonprofit).\",\n", + " \"geometry\": \"Spatial geometry for the agency boundary or location.\",\n", + " \"ntd_id_2022\": \"National Transit Database ID for 2022 reporting.\",\n", + " \"agency\": \"Transit agency name.\",\n", + " \"gtfs_dataset_key\": \"Identifier linking to the GTFS dataset.\",\n", + " \"total_pop_adj\": \"Adjusted total population.\",\n", + " \"poverty_pop_adj\": \"Adjusted population living below the poverty level.\",\n", + " \"non_us_citizen_adj\": \"Adjusted count of non-U.S. citizens.\",\n", + " \"workers_with_no_car_adj\": \"Adjusted count of workers without access to a vehicle.\",\n", + " \"households_with_no_cars_adj\": \"Adjusted number of households without a vehicle.\",\n", + " \"disabled_pop_adj\": \"Adjusted population with disabilities.\",\n", + " \"public_asst_pop_adj\": \"Adjusted population receiving public assistance.\",\n", + " \"inc_extremelylow_adj\": \"Adjusted number of extremely low-income households.\",\n", + " \"inc_verylow_adj\": \"Adjusted number of very low-income households.\",\n", + " \"inc_low_adj\": \"Adjusted number of low-income households.\",\n", + " \"male_seniors_adj\": \"Adjusted male senior population (65+).\",\n", + " \"female_seniors_adj\": \"Adjusted female senior population (65+).\",\n", + " \"male_youth_adj\": \"Adjusted male youth population (15-24).\", \n", + " \"female_youth_adj\": \"Adjusted female youth population (15-24).\",\n", + " \"veteran_pop_adj\": \"Adjusted veteran population.\",\n", + " \"unlinked_passenger_trips_upt\": \"Annual number of unlinked passenger trips.\",\n", + " \"agency_voms\": \"Vehicles operated in maximum service (peak vehicles).\"\n", + " }\n", + "\n", + "\n", + "\n", + " metadata_df = pd.DataFrame(\n", + " [(col, metadata.get(col, \"\")) for col in gdf.columns],\n", + " columns=[\"column\", \"description\"]\n", + " )\n", + "\n", + " # ---- Local temporary file ----\n", + " xlsx_file = f\"{filename}.xlsx\"\n", + "\n", + " # ---- Write XLSX with data + metadata ----\n", + " with ExcelWriter(xlsx_file, engine=\"openpyxl\") as writer:\n", + " gdf.to_excel(writer, sheet_name=\"data\", index=False)\n", + " metadata_df.to_excel(writer, sheet_name=\"metadata\", index=False)\n", + "\n", + " # ---- Upload to GCS ----\n", + " gcs_path = f\"{GCS__PUBLIC_FILE_PATH}{filename}.xlsx\"\n", + "\n", + " with fsspec.open(gcs_path, \"wb\") as f_out:\n", + " with open(xlsx_file, \"rb\") as f_in:\n", + " f_out.write(f_in.read())\n", + "\n", + " os.remove(xlsx_file)\n", + "\n", + " print(f\"Saved XLSX with metadata: {gcs_path}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "83cbfb70-c4d7-4bb5-870f-3e3fbb3eef43", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved GeoJSON: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.geojson\n", + "Saved Parquet: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.parquet\n" + ] + } + ], + "source": [ + "export_gdf_public(merged_agency_ntd, \"transitprovider_acs_ridership_data\")" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "d0549fb6-e2cb-4e1a-b8ee-67ba22e6c295", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved XLSX with metadata: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.xlsx\n" + ] + } + ], + "source": [ + "export_gdf_public_with_metadata(merged_agency_ntd, \"transitprovider_acs_ridership_data\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60431a4d-8e6e-4ee1-89b3-569d08653582", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From e852dbf58827eb35600eb6e4ce07f116e70572dd Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 18:11:35 +0000 Subject: [PATCH 02/21] lehd data processing file added and acs data processing started --- ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb | 258 ++++ ...cessing.ipynb => 06_data_processing.ipynb} | 1276 +++++++---------- 2 files changed, 745 insertions(+), 789 deletions(-) create mode 100644 ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb rename ahsc_grant/ahsc_acs_2/{05_data_processing.ipynb => 06_data_processing.ipynb} (62%) diff --git a/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb b/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb new file mode 100644 index 000000000..d0e6cbd6f --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "092a77f2-64b2-4de5-9eb3-45ab44dd6751", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "os.environ[\"CALITP_BQ_MAX_BYTES\"] = str(800_000_000_000)\n", + "\n", + "import shared_utils\n", + "import pandas as pd\n", + "import geopandas as gpd\n", + "\n", + "import gcsfs\n", + "from calitp_data_analysis import get_fs\n", + "from calitp_data_analysis import geography_utils, utils\n", + "fs = get_fs()\n", + "import re\n", + "import google.auth\n", + "import os\n", + "import gcsfs\n", + "credentials, project = google.auth.default()\n", + "fs = gcsfs.GCSFileSystem()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e8fa3c35-7db6-4856-a0cd-61d1517a0dd7", + "metadata": {}, + "outputs": [], + "source": [ + "pd.options.display.max_columns = 100\n", + "pd.options.display.float_format = \"{:.2f}\".format\n", + "pd.set_option(\"display.max_rows\", None)\n", + "pd.set_option(\"display.max_colwidth\", None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "403b3f09-7881-4d1b-a31d-6c99a34fc982", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1b062163-8b62-4dec-8a0a-0edd514c4865", + "metadata": {}, + "outputs": [], + "source": [ + "job_density_prv = pd.read_csv(f\"{GCS_FILE_PATH}/Job Density Raw File Private.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7ae6a36d-844c-4e92-95de-f6b7bcafcf2b", + "metadata": {}, + "outputs": [], + "source": [ + "job_density_tot = pd.read_csv(f\"{GCS_FILE_PATH}/Job Density Raw File Total.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b7fe33a9-165a-4b93-a714-81615c182a1a", + "metadata": {}, + "outputs": [], + "source": [ + "job_density_prv = job_density_prv.rename(columns={'C000': 'jobs_prv'})\n", + "job_density_tot = job_density_tot.rename(columns={'C000': 'jobs_tot'})" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fab55900-24f6-4172-a92f-874341cd41fc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 255006 entries, 0 to 255005\n", + "Data columns (total 4 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 w_geocode 255006 non-null int64 \n", + " 1 segment 255006 non-null object\n", + " 2 year 255006 non-null int64 \n", + " 3 jobs_prv 255006 non-null int64 \n", + "dtypes: int64(3), object(1)\n", + "memory usage: 7.8+ MB\n" + ] + } + ], + "source": [ + "job_density_prv.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a5b4ef5a-220e-4aba-aa3c-417709afa3f7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 257557 entries, 0 to 257556\n", + "Data columns (total 4 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 w_geocode 257557 non-null int64 \n", + " 1 segment 257557 non-null object\n", + " 2 year 257557 non-null int64 \n", + " 3 jobs_tot 257557 non-null int64 \n", + "dtypes: int64(3), object(1)\n", + "memory usage: 7.9+ MB\n" + ] + } + ], + "source": [ + "job_density_tot.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1e63f8e5-a3e0-4f49-b057-8036baf38aab", + "metadata": {}, + "outputs": [], + "source": [ + "merged_df = pd.merge(\n", + " job_density_tot,\n", + " job_density_prv[['w_geocode', 'jobs_prv']],\n", + " on='w_geocode',\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "77b5f65a-7079-4b05-8cdb-cea0aec812bc", + "metadata": {}, + "outputs": [], + "source": [ + "#Sort by GEOID\n", + "merged_df = merged_df.sort_values(by='w_geocode')\n", + "\n", + "#Create jobs_fed = jobs_total - jobs_prv\n", + "merged_df['jobs_fed'] = merged_df['jobs_tot'] - merged_df['jobs_prv']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a95c452e-ecbf-434f-a202-f4c642b70638", + "metadata": {}, + "outputs": [], + "source": [ + "merged_df['GEOID'] = merged_df['w_geocode'].astype(str).str.zfill(15).str[:11]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "1aef57f6-b2d7-4fa5-8445-63a04d0718f1", + "metadata": {}, + "outputs": [], + "source": [ + "grouped_df = merged_df.groupby('GEOID', as_index=False).agg({\n", + " 'jobs_tot': 'sum',\n", + " 'jobs_prv': 'sum',\n", + " 'jobs_fed': 'sum',\n", + " 'year': 'first'\n", + "})" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c932b790-c532-4ee9-8c15-c3fe290a9307", + "metadata": {}, + "outputs": [], + "source": [ + "def export_gdf(gdf, filename: str):\n", + " \n", + " gdf.to_parquet(f\"{filename}.parquet\")\n", + " \n", + " fs.put(\n", + " f\"{filename}.parquet\",\n", + " f\"{GCS_FILE_PATH}/{filename}.parquet\",\n", + " token = credentials.token\n", + " )\n", + " \n", + " os.remove(f\"{filename}.parquet\")\n", + " print(f\"saved {GCS_FILE_PATH}/{filename}.parquet\")\n", + " \n", + " return" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "54686340-bb8c-41eb-8ca2-cb53d93228be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "saved gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026/job_density_2022.parquet\n" + ] + } + ], + "source": [ + "export_gdf(grouped_df, \"job_density_2022\")" + ] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_acs_2/05_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb similarity index 62% rename from ahsc_grant/ahsc_acs_2/05_data_processing.ipynb rename to ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 7b064d70d..f391ad45b 100644 --- a/ahsc_grant/ahsc_acs_2/05_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -49,29 +49,29 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "id": "af0504b4-642c-4977-b166-d800acfc82a0", "metadata": {}, "outputs": [], "source": [ - "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships'" + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 34, "id": "f7477af7-e3ee-44f5-b292-bd423280a0f2", "metadata": {}, "outputs": [], "source": [ "# Load the stored ACS dataset from the specified GCS file path.\n", - "with fs.open(f\"{GCS_FILE_PATH}/AHSC_2026/census_tracts_data.parquet\", \"rb\") as f:\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", " tracts_ca_acs = gpd.read_parquet(f)" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 5, "id": "4916dd04-523b-4dda-aca7-599a90560b19", "metadata": { "tags": [] @@ -79,10 +79,26 @@ "outputs": [], "source": [ "# Load the stored organization, ridership, stop, data from the specified GCS file path.\n", - "with fs.open(f\"{GCS_FILE_PATH}/AHSC_2026/ridership_trips_routes_weekday.csv\", \"rb\") as f:\n", + "with fs.open(f\"{GCS_FILE_PATH}/ridership_trips_routes_weekday.csv\", \"rb\") as f:\n", " ridership_trips_routes_weekday = pd.read_csv(f)" ] }, + { + "cell_type": "code", + "execution_count": 21, + "id": "80eeec73-8a7d-4d75-aebb-1c70333874f4", + "metadata": {}, + "outputs": [], + "source": [ + "# Load job density data from GCS and select required columns\n", + "# Open the GCS file using your existing fs object\n", + "with fs.open(f\"{GCS_FILE_PATH}/job_density_2022.parquet\", \"rb\") as f:\n", + " jobdata = pd.read_parquet(f)\n", + "\n", + "# Select only the columns you want, including geometry\n", + "jobdata = jobdata[['GEOID', 'jobs_tot']]" + ] + }, { "cell_type": "markdown", "id": "703d3c9d-c755-45d9-aa74-467b315549dc", @@ -93,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "id": "4f0323de-b195-4fdf-a9a4-2d2170716ac0", "metadata": {}, "outputs": [ @@ -102,27 +118,27 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 28545 entries, 0 to 28544\n", + "Index: 28544 entries, 0 to 28544\n", "Data columns (total 15 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 28545 non-null object \n", + " 0 organization_name 28544 non-null object \n", " 1 feed_key 28544 non-null object \n", " 2 route_id 26875 non-null object \n", " 3 route_name 13556 non-null object \n", " 4 stop_id 28544 non-null object \n", - " 5 stop_name 28545 non-null object \n", + " 5 stop_name 28544 non-null object \n", " 6 stop_code 27483 non-null object \n", " 7 n_trips 28544 non-null float64\n", " 8 n_routes 28544 non-null float64\n", - " 9 pt_geom 28515 non-null object \n", - " 10 day_type 28545 non-null object \n", - " 11 average_daily_boardings 28545 non-null float64\n", + " 9 pt_geom 28544 non-null object \n", + " 10 day_type 28544 non-null object \n", + " 11 average_daily_boardings 28544 non-null float64\n", " 12 average_daily_alightings 25942 non-null float64\n", - " 13 start_date 28545 non-null object \n", - " 14 end_date 28545 non-null object \n", + " 13 start_date 28544 non-null object \n", + " 14 end_date 28544 non-null object \n", "dtypes: float64(4), object(11)\n", - "memory usage: 3.3+ MB\n" + "memory usage: 3.5+ MB\n" ] } ], @@ -132,8 +148,47 @@ }, { "cell_type": "code", - "execution_count": 12, - "id": "9dbdebc4-b26b-4779-ab2f-83f565adf55f", + "execution_count": 7, + "id": "02ded3e0-8d73-4577-ab83-eac497b63673", + "metadata": {}, + "outputs": [], + "source": [ + "# Drop rows with missing pt_geom\n", + "ridership_trips_routes_weekday = ridership_trips_routes_weekday[\n", + " ridership_trips_routes_weekday['pt_geom'].notna() & \n", + " (ridership_trips_routes_weekday['pt_geom'] != 'nan')\n", + "].copy()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fc371c6b-1e27-41e7-9e4d-130acdbf4154", + "metadata": {}, + "outputs": [], + "source": [ + "# Ensure pt_geom is string type\n", + "ridership_trips_routes_weekday['pt_geom'] = ridership_trips_routes_weekday['pt_geom'].astype(str)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a47e7dfa-f157-4e0e-b779-c559ead48ecc", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert pt_geom column from WKT to shapely geometry\n", + "ridership_trips_routes_weekday['geometry'] = ridership_trips_routes_weekday['pt_geom'].apply(wkt.loads)\n", + "\n", + "# Create a GeoDataFrame\n", + "gdf_ridership = gpd.GeoDataFrame(ridership_trips_routes_weekday, geometry='geometry')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1d07604c-8bb0-4f11-b188-b7753fab5b50", "metadata": {}, "outputs": [ { @@ -172,6 +227,7 @@ " average_daily_alightings\n", " start_date\n", " end_date\n", + " geometry\n", " \n", " \n", " \n", @@ -192,6 +248,7 @@ " 3.000000\n", " 2025-05-01\n", " 2025-05-31\n", + " POINT (-119.29403 34.34365)\n", " \n", " \n", " 1\n", @@ -210,6 +267,7 @@ " 24.571429\n", " 2025-08-01\n", " 2025-08-31\n", + " POINT (-122.19128 37.45754)\n", " \n", " \n", " 2\n", @@ -228,6 +286,7 @@ " 0.000000\n", " 2025-09-01\n", " 2025-09-30\n", + " POINT (-122.50425 37.95539)\n", " \n", " \n", " 3\n", @@ -246,6 +305,7 @@ " 1.888889\n", " 2025-08-01\n", " 2025-08-31\n", + " POINT (-122.28410 37.48428)\n", " \n", " \n", " 4\n", @@ -264,874 +324,430 @@ " 5.500000\n", " 2025-08-01\n", " 2025-08-31\n", + " POINT (-122.35963 37.58669)\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " organization_name feed_key route_id route_name \\\n", - "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 NaN \n", - "1 Samtrans db97cc02836aa5f0cf647d80160b23ec ECR NaN \n", - "2 Golden Gate Transit de77cb40e92fb47fa8d16228977cfb86 130 NaN \n", - "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 61 NaN \n", - "4 Samtrans db97cc02836aa5f0cf647d80160b23ec 46 NaN \n", - "\n", - " stop_id stop_name stop_code n_trips n_routes \\\n", - "0 VNACLR1 . NaN 32.0 1.0 \n", - "1 345017 1000 El Camino Real-Menlo College 345017 143.0 1.0 \n", - "2 40469 1011 Andersen Dr 40469 39.0 1.0 \n", - "3 343119 1011 Crestview Dr 343119 5.0 1.0 \n", - "4 340606 1060 Carolan Ave 340606 7.0 1.0 \n", - "\n", - " pt_geom day_type average_daily_boardings \\\n", - "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", - "1 POINT(-122.191284 37.457543) Weekday 9.523810 \n", - "2 POINT(-122.504252 37.955391) Weekday 1.909091 \n", - "3 POINT(-122.284103 37.484282) Weekday 1.444444 \n", - "4 POINT(-122.359627 37.586685) Weekday 10.333333 \n", - "\n", - " average_daily_alightings start_date end_date \n", - "0 3.000000 2025-05-01 2025-05-31 \n", - "1 24.571429 2025-08-01 2025-08-31 \n", - "2 0.000000 2025-09-01 2025-09-30 \n", - "3 1.888889 2025-08-01 2025-08-31 \n", - "4 5.500000 2025-08-01 2025-08-31 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ridership_trips_routes_weekday.head(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "fc371c6b-1e27-41e7-9e4d-130acdbf4154", - "metadata": {}, - "outputs": [], - "source": [ - "# Ensure pt_geom is string type\n", - "ridership_trips_routes_weekday['pt_geom'] = ridership_trips_routes_weekday['pt_geom'].astype(str)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "02ded3e0-8d73-4577-ab83-eac497b63673", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", "
organization_namefeed_keyroute_idroute_namestop_idstop_namestop_coden_tripsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
...................................................
2851528540Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN7002122nd Street70091San MateoNaN104.03.0NaNWeekday1016.712073NaN2023-11-012025-07-31
28516Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70031BayshoreNaN75.01.0NaNWeekday137.102282NaN2023-11-012025-07-31
28517Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70121BelmontNaN75.01.0NaNWeekday543.256104NaN2023-11-012025-07-31
28518Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70291Blossom HillNaN8.01.0NaNWeekday57.459493NaN2023-11-012025-07-31
28519CaltrainNaNNaNNaNNaNBroadwayNaNNaNNaNNaNWeekday0.000000NaN2023-11-012025-07-31
28520Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70081BurlingameNaN75.01.0NaNPOINT(-122.323851 37.568087)Weekday542.0055751074.189854NaN2023-11-012025-07-31POINT (-122.32385 37.56809)
2852128541Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70191California Ave70241Santa ClaraNaN90.02.0NaNWeekday654.561279NaN2023-11-012025-07-31
28522Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70281CapitolNaN8.01.0NaNWeekday40.128541NaN2023-11-012025-07-31
28523Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70251College ParkNaN75.01.0NaNWeekday36.239420NaN2023-11-012025-07-31
28524Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70321GilroyNaN8.01.0NaNPOINT(-121.93608 37.353238)Weekday94.688588718.467622NaN2023-11-012025-07-31POINT (-121.93608 37.35324)
2852528542Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70101Hayward ParkNaN75.01.070041South San FranciscoNaN104.03.0POINT(-122.404979051 37.655941395)Weekday291.195338559.501648NaN2023-11-012025-07-31POINT (-122.40498 37.65594)
2852628543Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70111Hillsdale70221SunnyvaleNaN104.03.0NaNPOINT(-122.031372 37.378916)Weekday1314.4910351408.195136NaN2023-11-012025-07-31POINT (-122.03137 37.37892)
2852728544Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70231Lawrence70271TamienNaN90.083.02.0NaNPOINT(-121.883721 37.31174)Weekday571.968909NaN2023-11-012025-07-31
28528Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70161Menlo ParkNaN90.02.0NaNWeekday748.130990NaN2023-11-012025-07-31
28529Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70061MillbraeNaN104.03.0NaNWeekday1343.219117NaN2023-11-012025-07-31
28530Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70301Morgan HillNaN8.01.0NaNWeekday103.849297NaN2023-11-012025-07-31
28531Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70211Mountain ViewNaN104.03.0NaNWeekday1906.881882NaN2023-11-012025-07-31
28532Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70171Palo AltoNaN104.03.0NaNWeekday3139.693563NaN2023-11-012025-07-31
28533Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70141Redwood CityNaN104.03.0NaNWeekday1802.931211NaN2023-11-012025-07-31
28534Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70201San AntonioNaN90.02.0NaNWeekday537.773367NaN2023-11-012025-07-31
28535Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70051San BrunoNaN75.01.0NaNWeekday312.963513NaN2023-11-012025-07-31
28536Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70131San CarlosNaN75.01.0NaNWeekday545.405328NaN2023-11-012025-07-31
28537Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70011San FranciscoNaN104.03.0NaNWeekday5656.512364NaN2023-11-012025-07-31
28538Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70261San Jose DiridonNaN112.04.0NaNWeekday1789.561827NaN2023-11-012025-07-31
28539Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70311San MartinNaN8.01.0NaNWeekday23.949743NaN2023-11-012025-07-31
28540Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70091San MateoNaN104.03.0NaNWeekday1074.189854NaN2023-11-012025-07-31
28541Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70241Santa ClaraNaN90.02.0NaNWeekday718.467622NaN2023-11-012025-07-31
28542Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70041South San FranciscoNaN104.03.0NaNWeekday559.501648NaN2023-11-012025-07-31
28543Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70221SunnyvaleNaN104.03.0NaNWeekday1408.195136NaN2023-11-012025-07-31
28544Caltrainf189d5677d4a106b98585f3c5d4fd42cNaNNaN70271TamienNaN83.02.0NaNWeekday198.883066198.883066NaN2023-11-012025-07-31POINT (-121.88372 37.31174)
\n", + "

28544 rows × 16 columns

\n", "
" ], "text/plain": [ - " organization_name feed_key route_id route_name \\\n", - "28515 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28516 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28517 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28518 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28519 Caltrain NaN NaN NaN \n", - "28520 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28521 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28522 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28523 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28524 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28525 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28526 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28527 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28528 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28529 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28530 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28531 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28532 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28533 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28534 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28535 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28536 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28537 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28538 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28539 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28540 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28541 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28542 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28543 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", - "28544 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN NaN \n", + " organization_name feed_key route_id \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 \n", + "1 Samtrans db97cc02836aa5f0cf647d80160b23ec ECR \n", + "2 Golden Gate Transit de77cb40e92fb47fa8d16228977cfb86 130 \n", + "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 61 \n", + "4 Samtrans db97cc02836aa5f0cf647d80160b23ec 46 \n", + "... ... ... ... \n", + "28540 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + "28541 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + "28542 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + "28543 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + "28544 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + "\n", + " route_name stop_id stop_name stop_code \\\n", + "0 NaN VNACLR1 . NaN \n", + "1 NaN 345017 1000 El Camino Real-Menlo College 345017 \n", + "2 NaN 40469 1011 Andersen Dr 40469 \n", + "3 NaN 343119 1011 Crestview Dr 343119 \n", + "4 NaN 340606 1060 Carolan Ave 340606 \n", + "... ... ... ... ... \n", + "28540 NaN 70091 San Mateo NaN \n", + "28541 NaN 70241 Santa Clara NaN \n", + "28542 NaN 70041 South San Francisco NaN \n", + "28543 NaN 70221 Sunnyvale NaN \n", + "28544 NaN 70271 Tamien NaN \n", "\n", - " stop_id stop_name stop_code n_trips n_routes pt_geom \\\n", - "28515 70021 22nd Street NaN 104.0 3.0 NaN \n", - "28516 70031 Bayshore NaN 75.0 1.0 NaN \n", - "28517 70121 Belmont NaN 75.0 1.0 NaN \n", - "28518 70291 Blossom Hill NaN 8.0 1.0 NaN \n", - "28519 NaN Broadway NaN NaN NaN NaN \n", - "28520 70081 Burlingame NaN 75.0 1.0 NaN \n", - "28521 70191 California Ave NaN 90.0 2.0 NaN \n", - "28522 70281 Capitol NaN 8.0 1.0 NaN \n", - "28523 70251 College Park NaN 75.0 1.0 NaN \n", - "28524 70321 Gilroy NaN 8.0 1.0 NaN \n", - "28525 70101 Hayward Park NaN 75.0 1.0 NaN \n", - "28526 70111 Hillsdale NaN 104.0 3.0 NaN \n", - "28527 70231 Lawrence NaN 90.0 2.0 NaN \n", - "28528 70161 Menlo Park NaN 90.0 2.0 NaN \n", - "28529 70061 Millbrae NaN 104.0 3.0 NaN \n", - "28530 70301 Morgan Hill NaN 8.0 1.0 NaN \n", - "28531 70211 Mountain View NaN 104.0 3.0 NaN \n", - "28532 70171 Palo Alto NaN 104.0 3.0 NaN \n", - "28533 70141 Redwood City NaN 104.0 3.0 NaN \n", - "28534 70201 San Antonio NaN 90.0 2.0 NaN \n", - "28535 70051 San Bruno NaN 75.0 1.0 NaN \n", - "28536 70131 San Carlos NaN 75.0 1.0 NaN \n", - "28537 70011 San Francisco NaN 104.0 3.0 NaN \n", - "28538 70261 San Jose Diridon NaN 112.0 4.0 NaN \n", - "28539 70311 San Martin NaN 8.0 1.0 NaN \n", - "28540 70091 San Mateo NaN 104.0 3.0 NaN \n", - "28541 70241 Santa Clara NaN 90.0 2.0 NaN \n", - "28542 70041 South San Francisco NaN 104.0 3.0 NaN \n", - "28543 70221 Sunnyvale NaN 104.0 3.0 NaN \n", - "28544 70271 Tamien NaN 83.0 2.0 NaN \n", + " n_trips n_routes pt_geom day_type \\\n", + "0 32.0 1.0 POINT(-119.294028 34.343645) Weekday \n", + "1 143.0 1.0 POINT(-122.191284 37.457543) Weekday \n", + "2 39.0 1.0 POINT(-122.504252 37.955391) Weekday \n", + "3 5.0 1.0 POINT(-122.284103 37.484282) Weekday \n", + "4 7.0 1.0 POINT(-122.359627 37.586685) Weekday \n", + "... ... ... ... ... \n", + "28540 104.0 3.0 POINT(-122.323851 37.568087) Weekday \n", + "28541 90.0 2.0 POINT(-121.93608 37.353238) Weekday \n", + "28542 104.0 3.0 POINT(-122.404979051 37.655941395) Weekday \n", + "28543 104.0 3.0 POINT(-122.031372 37.378916) Weekday \n", + "28544 83.0 2.0 POINT(-121.883721 37.31174) Weekday \n", "\n", - " day_type average_daily_boardings average_daily_alightings start_date \\\n", - "28515 Weekday 1016.712073 NaN 2023-11-01 \n", - "28516 Weekday 137.102282 NaN 2023-11-01 \n", - "28517 Weekday 543.256104 NaN 2023-11-01 \n", - "28518 Weekday 57.459493 NaN 2023-11-01 \n", - "28519 Weekday 0.000000 NaN 2023-11-01 \n", - "28520 Weekday 542.005575 NaN 2023-11-01 \n", - "28521 Weekday 654.561279 NaN 2023-11-01 \n", - "28522 Weekday 40.128541 NaN 2023-11-01 \n", - "28523 Weekday 36.239420 NaN 2023-11-01 \n", - "28524 Weekday 94.688588 NaN 2023-11-01 \n", - "28525 Weekday 291.195338 NaN 2023-11-01 \n", - "28526 Weekday 1314.491035 NaN 2023-11-01 \n", - "28527 Weekday 571.968909 NaN 2023-11-01 \n", - "28528 Weekday 748.130990 NaN 2023-11-01 \n", - "28529 Weekday 1343.219117 NaN 2023-11-01 \n", - "28530 Weekday 103.849297 NaN 2023-11-01 \n", - "28531 Weekday 1906.881882 NaN 2023-11-01 \n", - "28532 Weekday 3139.693563 NaN 2023-11-01 \n", - "28533 Weekday 1802.931211 NaN 2023-11-01 \n", - "28534 Weekday 537.773367 NaN 2023-11-01 \n", - "28535 Weekday 312.963513 NaN 2023-11-01 \n", - "28536 Weekday 545.405328 NaN 2023-11-01 \n", - "28537 Weekday 5656.512364 NaN 2023-11-01 \n", - "28538 Weekday 1789.561827 NaN 2023-11-01 \n", - "28539 Weekday 23.949743 NaN 2023-11-01 \n", - "28540 Weekday 1074.189854 NaN 2023-11-01 \n", - "28541 Weekday 718.467622 NaN 2023-11-01 \n", - "28542 Weekday 559.501648 NaN 2023-11-01 \n", - "28543 Weekday 1408.195136 NaN 2023-11-01 \n", - "28544 Weekday 198.883066 NaN 2023-11-01 \n", + " average_daily_boardings average_daily_alightings start_date \\\n", + "0 0.000000 3.000000 2025-05-01 \n", + "1 9.523810 24.571429 2025-08-01 \n", + "2 1.909091 0.000000 2025-09-01 \n", + "3 1.444444 1.888889 2025-08-01 \n", + "4 10.333333 5.500000 2025-08-01 \n", + "... ... ... ... \n", + "28540 1074.189854 NaN 2023-11-01 \n", + "28541 718.467622 NaN 2023-11-01 \n", + "28542 559.501648 NaN 2023-11-01 \n", + "28543 1408.195136 NaN 2023-11-01 \n", + "28544 198.883066 NaN 2023-11-01 \n", "\n", - " end_date \n", - "28515 2025-07-31 \n", - "28516 2025-07-31 \n", - "28517 2025-07-31 \n", - "28518 2025-07-31 \n", - "28519 2025-07-31 \n", - "28520 2025-07-31 \n", - "28521 2025-07-31 \n", - "28522 2025-07-31 \n", - "28523 2025-07-31 \n", - "28524 2025-07-31 \n", - "28525 2025-07-31 \n", - "28526 2025-07-31 \n", - "28527 2025-07-31 \n", - "28528 2025-07-31 \n", - "28529 2025-07-31 \n", - "28530 2025-07-31 \n", - "28531 2025-07-31 \n", - "28532 2025-07-31 \n", - "28533 2025-07-31 \n", - "28534 2025-07-31 \n", - "28535 2025-07-31 \n", - "28536 2025-07-31 \n", - "28537 2025-07-31 \n", - "28538 2025-07-31 \n", - "28539 2025-07-31 \n", - "28540 2025-07-31 \n", - "28541 2025-07-31 \n", - "28542 2025-07-31 \n", - "28543 2025-07-31 \n", - "28544 2025-07-31 " + " end_date geometry \n", + "0 2025-05-31 POINT (-119.29403 34.34365) \n", + "1 2025-08-31 POINT (-122.19128 37.45754) \n", + "2 2025-09-30 POINT (-122.50425 37.95539) \n", + "3 2025-08-31 POINT (-122.28410 37.48428) \n", + "4 2025-08-31 POINT (-122.35963 37.58669) \n", + "... ... ... \n", + "28540 2025-07-31 POINT (-122.32385 37.56809) \n", + "28541 2025-07-31 POINT (-121.93608 37.35324) \n", + "28542 2025-07-31 POINT (-122.40498 37.65594) \n", + "28543 2025-07-31 POINT (-122.03137 37.37892) \n", + "28544 2025-07-31 POINT (-121.88372 37.31174) \n", + "\n", + "[28544 rows x 16 columns]" ] }, - "execution_count": 22, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Show rows with missing pt_geom (NaN or 'nan')\n", - "missing_rows = ridership_trips_routes_weekday[\n", - " ridership_trips_routes_weekday['pt_geom'].isna() | \n", - " (ridership_trips_routes_weekday['pt_geom'] == 'nan')\n", - "]\n", - "missing_rows" + "# Set CRS (assuming WGS84)\n", + "gdf_ridership.set_crs(epsg=4326, inplace=True)" ] }, { "cell_type": "code", - "execution_count": null, - "id": "19c2eb9f-340c-46aa-b83d-91d46c7debf4", + "execution_count": 15, + "id": "29888876-97a7-4462-9149-7a19ba540104", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Reproject to match census tracts CRS\n", + "gdf_ridership = gdf_ridership.to_crs(tracts_ca_acs.crs)" + ] }, { "cell_type": "code", - "execution_count": 15, - "id": "a47e7dfa-f157-4e0e-b779-c559ead48ecc", + "execution_count": 16, + "id": "806da12f-9cf6-4306-81c0-dd057f31d8a9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "stop_buffered = gdf_ridership.copy()\n", + "stop_buffered[\"geometry\"] = stop_buffered.geometry.buffer(804.672)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "bbec8fe2-2ae9-4057-b89a-b896e6065c0a", + "metadata": {}, + "outputs": [], + "source": [ + "# Inner join with ACS data on 'geo_id'\n", + "tracts_ca_acs = tracts_ca_acs.merge(jobdata, on = 'GEOID', how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "3167fe7f-a5dd-4350-af61-77c01a4eb8d0", "metadata": {}, "outputs": [ { - "ename": "GEOSException", - "evalue": "ParseException: Expected word but encountered number: 'nan'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mGEOSException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[15], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Convert pt_geom column from WKT to shapely geometry\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m ridership_trips_routes_weekday[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mridership_trips_routes_weekday\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mpt_geom\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply\u001b[49m\u001b[43m(\u001b[49m\u001b[43mwkt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Create a GeoDataFrame\u001b[39;00m\n\u001b[1;32m 5\u001b[0m gdf_ridership \u001b[38;5;241m=\u001b[39m gpd\u001b[38;5;241m.\u001b[39mGeoDataFrame(ridership_trips_routes_weekday, geometry\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/series.py:4924\u001b[0m, in \u001b[0;36mSeries.apply\u001b[0;34m(self, func, convert_dtype, args, by_row, **kwargs)\u001b[0m\n\u001b[1;32m 4789\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mapply\u001b[39m(\n\u001b[1;32m 4790\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 4791\u001b[0m func: AggFuncType,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 4796\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 4797\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m DataFrame \u001b[38;5;241m|\u001b[39m Series:\n\u001b[1;32m 4798\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 4799\u001b[0m \u001b[38;5;124;03m Invoke function on values of Series.\u001b[39;00m\n\u001b[1;32m 4800\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 4915\u001b[0m \u001b[38;5;124;03m dtype: float64\u001b[39;00m\n\u001b[1;32m 4916\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 4917\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mSeriesApply\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 4918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4919\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4920\u001b[0m \u001b[43m \u001b[49m\u001b[43mconvert_dtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert_dtype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4921\u001b[0m \u001b[43m \u001b[49m\u001b[43mby_row\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mby_row\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4922\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4923\u001b[0m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m-> 4924\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/apply.py:1427\u001b[0m, in \u001b[0;36mSeriesApply.apply\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1424\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapply_compat()\n\u001b[1;32m 1426\u001b[0m \u001b[38;5;66;03m# self.func is Callable\u001b[39;00m\n\u001b[0;32m-> 1427\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply_standard\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/apply.py:1507\u001b[0m, in \u001b[0;36mSeriesApply.apply_standard\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1501\u001b[0m \u001b[38;5;66;03m# row-wise access\u001b[39;00m\n\u001b[1;32m 1502\u001b[0m \u001b[38;5;66;03m# apply doesn't have a `na_action` keyword and for backward compat reasons\u001b[39;00m\n\u001b[1;32m 1503\u001b[0m \u001b[38;5;66;03m# we need to give `na_action=\"ignore\"` for categorical data.\u001b[39;00m\n\u001b[1;32m 1504\u001b[0m \u001b[38;5;66;03m# TODO: remove the `na_action=\"ignore\"` when that default has been changed in\u001b[39;00m\n\u001b[1;32m 1505\u001b[0m \u001b[38;5;66;03m# Categorical (GH51645).\u001b[39;00m\n\u001b[1;32m 1506\u001b[0m action \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(obj\u001b[38;5;241m.\u001b[39mdtype, CategoricalDtype) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1507\u001b[0m mapped \u001b[38;5;241m=\u001b[39m \u001b[43mobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_map_values\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1508\u001b[0m \u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurried\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_action\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maction\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconvert_dtype\u001b[49m\n\u001b[1;32m 1509\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1511\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(mapped) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(mapped[\u001b[38;5;241m0\u001b[39m], ABCSeries):\n\u001b[1;32m 1512\u001b[0m \u001b[38;5;66;03m# GH#43986 Need to do list(mapped) in order to get treated as nested\u001b[39;00m\n\u001b[1;32m 1513\u001b[0m \u001b[38;5;66;03m# See also GH#25959 regarding EA support\u001b[39;00m\n\u001b[1;32m 1514\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj\u001b[38;5;241m.\u001b[39m_constructor_expanddim(\u001b[38;5;28mlist\u001b[39m(mapped), index\u001b[38;5;241m=\u001b[39mobj\u001b[38;5;241m.\u001b[39mindex)\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/base.py:921\u001b[0m, in \u001b[0;36mIndexOpsMixin._map_values\u001b[0;34m(self, mapper, na_action, convert)\u001b[0m\n\u001b[1;32m 918\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(arr, ExtensionArray):\n\u001b[1;32m 919\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m arr\u001b[38;5;241m.\u001b[39mmap(mapper, na_action\u001b[38;5;241m=\u001b[39mna_action)\n\u001b[0;32m--> 921\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43malgorithms\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap_array\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_action\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mna_action\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/pandas/core/algorithms.py:1743\u001b[0m, in \u001b[0;36mmap_array\u001b[0;34m(arr, mapper, na_action, convert)\u001b[0m\n\u001b[1;32m 1741\u001b[0m values \u001b[38;5;241m=\u001b[39m arr\u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mobject\u001b[39m, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 1742\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m na_action \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1743\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap_infer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmapper\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconvert\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconvert\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1744\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1745\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m lib\u001b[38;5;241m.\u001b[39mmap_infer_mask(\n\u001b[1;32m 1746\u001b[0m values, mapper, mask\u001b[38;5;241m=\u001b[39misna(values)\u001b[38;5;241m.\u001b[39mview(np\u001b[38;5;241m.\u001b[39muint8), convert\u001b[38;5;241m=\u001b[39mconvert\n\u001b[1;32m 1747\u001b[0m )\n", - "File \u001b[0;32mlib.pyx:2972\u001b[0m, in \u001b[0;36mpandas._libs.lib.map_infer\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/shapely/wkt.py:22\u001b[0m, in \u001b[0;36mloads\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mloads\u001b[39m(data):\n\u001b[1;32m 10\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Load a geometry from a WKT string.\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \n\u001b[1;32m 12\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 20\u001b[0m \n\u001b[1;32m 21\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mshapely\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_wkt\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/conda/lib/python3.11/site-packages/shapely/io.py:305\u001b[0m, in \u001b[0;36mfrom_wkt\u001b[0;34m(geometry, on_invalid, **kwargs)\u001b[0m\n\u001b[1;32m 301\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_invalid only accepts scalar values\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 303\u001b[0m invalid_handler \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39muint8(DecodingErrorOptions\u001b[38;5;241m.\u001b[39mget_value(on_invalid))\n\u001b[0;32m--> 305\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_wkt\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minvalid_handler\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mGEOSException\u001b[0m: ParseException: Expected word but encountered number: 'nan'" + "data": { + "text/plain": [ + "\n", + "Name: NAD83 / California Albers\n", + "Axis Info [cartesian]:\n", + "- X[east]: Easting (metre)\n", + "- Y[north]: Northing (metre)\n", + "Area of Use:\n", + "- name: United States (USA) - California.\n", + "- bounds: (-124.45, 32.53, -114.12, 42.01)\n", + "Coordinate Operation:\n", + "- name: California Albers\n", + "- method: Albers Equal Area\n", + "Datum: North American Datum 1983\n", + "- Ellipsoid: GRS 1980\n", + "- Prime Meridian: Greenwich" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tracts_ca_acs.crs" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "8a9a2022-eb39-4fba-b76c-33f2fe8b7479", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 28544 entries, 0 to 28544\n", + "Data columns (total 16 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 28544 non-null object \n", + " 1 feed_key 28544 non-null object \n", + " 2 route_id 26875 non-null object \n", + " 3 route_name 13556 non-null object \n", + " 4 stop_id 28544 non-null object \n", + " 5 stop_name 28544 non-null object \n", + " 6 stop_code 27483 non-null object \n", + " 7 n_trips 28544 non-null float64 \n", + " 8 n_routes 28544 non-null float64 \n", + " 9 pt_geom 28544 non-null object \n", + " 10 day_type 28544 non-null object \n", + " 11 average_daily_boardings 28544 non-null float64 \n", + " 12 average_daily_alightings 25942 non-null float64 \n", + " 13 start_date 28544 non-null object \n", + " 14 end_date 28544 non-null object \n", + " 15 geometry 28544 non-null geometry\n", + "dtypes: float64(4), geometry(1), object(11)\n", + "memory usage: 3.7+ MB\n" ] } ], "source": [ - "# Convert pt_geom column from WKT to shapely geometry\n", - "ridership_trips_routes_weekday['geometry'] = ridership_trips_routes_weekday['pt_geom'].apply(wkt.loads)\n", + "stop_buffered.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "41157912-0ead-4261-9624-042522e122a8", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect = gpd.overlay(\n", + " stop_buffered, \n", + " tracts_ca_acs, \n", + " how='intersection', \n", + " keep_geom_type=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "43735de5-8b17-42de-8fc9-85f82cf89bf1", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate intersected area\n", + "geometry_intersect['area_2'] = geometry_intersect.geometry.area\n", "\n", - "# Create a GeoDataFrame\n", - "gdf_ridership = gpd.GeoDataFrame(ridership_trips_routes_weekday, geometry='geometry')" + "# Calculate the proportion of the tract that intersects each stop\n", + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['ALAND']" ] }, { "cell_type": "code", - "execution_count": 23, - "id": "29888876-97a7-4462-9149-7a19ba540104", + "execution_count": 52, + "id": "1a1d6c3d-e4a0-4bf1-b1a7-130fb18f336e", "metadata": {}, "outputs": [], "source": [ - "# Reproject to match census tracts CRS\n", - "gdf_ridership = gdf_ridership.to_crs(tracts_ca_acs.crs)" + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'poverty_pop', 'non_us_citizen', 'workers_with_no_car', \n", + " 'households_with_no_cars', 'disabled_pop', 'public_asst_pop', \n", + " 'inc_extremelylow', 'inc_verylow', 'inc_low', \n", + " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth', 'jobs_tot'\n", + "]\n", + "\n", + "# Apply area_ratio\n", + "for col in cols_to_weight:\n", + " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']" ] }, { "cell_type": "code", - "execution_count": 24, - "id": "806da12f-9cf6-4306-81c0-dd057f31d8a9", - "metadata": { - "tags": [] - }, + "execution_count": 53, + "id": "63cece92-0b80-427b-807d-d4eb05fb6820", + "metadata": {}, "outputs": [], "source": [ - "orgs_stop_buffered = orgs_stops_merged.copy()\n", - "orgs_stop_buffered[\"geometry\"] = orgs_stop_buffered.geometry.buffer(804.672)" + "group_key = ['feed_key', 'stop_id']\n", + "\n", + "stop_acs_rollup = geometry_intersect.groupby(group_key, as_index=False)[[f'{col}_adj' for col in cols_to_weight]].sum()\n", + "\n", + "# Optionally rename columns to original names for clarity\n", + "stop_acs_rollup = stop_acs_rollup.rename(columns={f'{col}_adj': f'sum_{col}' for col in cols_to_weight})" ] }, { "cell_type": "code", - "execution_count": 25, - "id": "4bafb6fb-f42e-4e70-81aa-9dec5bce7991", + "execution_count": null, + "id": "a5d22150-1322-4b22-af41-0e576e58de2f", + "metadata": {}, + "outputs": [], + "source": [ + "def add_acs_metrics(df):\n", + " df = df.copy()\n", + "\n", + " # Basic area conversion\n", + " df['land_area_sqkm'] = df['sum_land_area'] / 1_000_000\n", + "\n", + " # Densities\n", + " df['pop_density'] = df['sum_total_pop'] / df['land_area_sqkm']\n", + " df['job_density'] = df['sum_jobs'] / df['land_area_sqkm']\n", + "\n", + " # Population percentages\n", + " df['pct_not_us_citizen_pop'] = df['sum_not_us_citizen_pop'] / df['sum_total_pop']\n", + " df['pct_black_pop'] = df['sum_black_pop'] / df['sum_total_pop']\n", + " df['pct_hispanic_pop'] = df['sum_hispanic_pop'] / df['sum_total_pop']\n", + " df['pct_youth_pop'] = df['sum_youth_pop'] / df['sum_total_pop']\n", + " df['pct_seniors_pop'] = df['sum_seniors_pop'] / df['sum_total_pop']\n", + "\n", + " # Income levels\n", + " df['pct_inc_extremelylow'] = df['sum_inc_extremelylow'] / df['sum_households']\n", + " df['pct_inc_verylow'] = df['sum_inc_verylow'] / df['sum_households']\n", + " df['pct_inc_low'] = df['sum_inc_low'] / df['sum_households']\n", + "\n", + " # Poverty & transportation\n", + " df['pct_poverty'] = df['sum_poverty'] / df['sum_pop_determined_poverty_status']\n", + " df['pct_pop_workers_no_car'] = df['sum_no_car'] / df['sum_total_pop']\n", + " df['pct_hh_no_cars'] = df['sum_no_car'] / df['sum_households']\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6b03d5a-21dc-4f00-b03f-34e69d5b9402", "metadata": {}, "outputs": [], "source": [ - "orgs_stop_dissolved = orgs_stop_buffered.dissolve(by='name')" + "stop_acs_rollup = add_acs_metrics(stop_acs_rollup)" ] }, { "cell_type": "code", - "execution_count": 26, - "id": "53f8fd3d-7d0a-4570-aa02-3df6df277380", + "execution_count": 47, + "id": "7f886a72-6394-42d0-98f3-b165e553a7ec", "metadata": {}, "outputs": [ { @@ -1139,32 +755,114 @@ "output_type": "stream", "text": [ "\n", - "Int64Index: 107671 entries, 0 to 107670\n", - "Data columns (total 15 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 name 107671 non-null object \n", - " 1 ntd_id_x 81966 non-null object \n", - " 2 ntd_id_2022_x 82066 non-null object \n", - " 3 stop_id 107671 non-null object \n", - " 4 stop_name 107671 non-null object \n", - " 5 schedule_gtfs_dataset_name 92779 non-null object \n", - " 6 organization_source_record_id 95351 non-null object \n", - " 7 geometry 107671 non-null geometry\n", - " 8 organization_name 95351 non-null object \n", - " 9 name_clean 107671 non-null object \n", - " 10 source_record_id 88562 non-null object \n", - " 11 key 88954 non-null object \n", - " 12 organization_type 88954 non-null object \n", - " 13 ntd_id_y 84115 non-null object \n", - " 14 ntd_id_2022_y 84215 non-null object \n", - "dtypes: geometry(1), object(14)\n", - "memory usage: 13.1+ MB\n" + "Index: 151037 entries, 0 to 28544\n", + "Data columns (total 79 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 151037 non-null object \n", + " 1 feed_key 151037 non-null object \n", + " 2 route_id 143325 non-null object \n", + " 3 route_name 71252 non-null object \n", + " 4 stop_id 151037 non-null object \n", + " 5 stop_name 151037 non-null object \n", + " 6 stop_code 145736 non-null object \n", + " 7 n_trips 151037 non-null float64 \n", + " 8 n_routes 151037 non-null float64 \n", + " 9 pt_geom 151037 non-null object \n", + " 10 day_type 151037 non-null object \n", + " 11 average_daily_boardings 151037 non-null float64 \n", + " 12 average_daily_alightings 140789 non-null float64 \n", + " 13 start_date 151037 non-null object \n", + " 14 end_date 151037 non-null object \n", + " 15 geometry 151037 non-null geometry\n", + " 16 index_right 151037 non-null int64 \n", + " 17 STATEFP 151037 non-null object \n", + " 18 COUNTYFP 151037 non-null object \n", + " 19 TRACTCE 151037 non-null object \n", + " 20 GEOIDFQ 151037 non-null object \n", + " 21 GEOID 151037 non-null object \n", + " 22 NAME 151037 non-null object \n", + " 23 NAMELSAD 151037 non-null object \n", + " 24 STUSPS 151037 non-null object \n", + " 25 NAMELSADCO 151037 non-null object \n", + " 26 STATE_NAME 151037 non-null object \n", + " 27 LSAD 151037 non-null object \n", + " 28 ALAND 151037 non-null int64 \n", + " 29 AWATER 151037 non-null int64 \n", + " 30 total_pop 151037 non-null int64 \n", + " 31 poverty_pop 151037 non-null int64 \n", + " 32 non_us_citizen 151037 non-null int64 \n", + " 33 male_65_to_66 151037 non-null int64 \n", + " 34 male_67_to_69 151037 non-null int64 \n", + " 35 male_70_to_74 151037 non-null int64 \n", + " 36 male_75_to_79 151037 non-null int64 \n", + " 37 male_80_to_84 151037 non-null int64 \n", + " 38 male_85_and_over 151037 non-null int64 \n", + " 39 female_65_to_66 151037 non-null int64 \n", + " 40 female_67_to_69 151037 non-null int64 \n", + " 41 female_70_to_74 151037 non-null int64 \n", + " 42 female_75_to_79 151037 non-null int64 \n", + " 43 female_80_to_84 151037 non-null int64 \n", + " 44 female_85_and_over 151037 non-null int64 \n", + " 45 male_15_17 151037 non-null int64 \n", + " 46 male_18_19 151037 non-null int64 \n", + " 47 male_20 151037 non-null int64 \n", + " 48 male_21 151037 non-null int64 \n", + " 49 male_22_24 151037 non-null int64 \n", + " 50 female_15_17 151037 non-null int64 \n", + " 51 female_18_19 151037 non-null int64 \n", + " 52 female_20 151037 non-null int64 \n", + " 53 female_21 151037 non-null int64 \n", + " 54 female_22_24 151037 non-null int64 \n", + " 55 median_household_income 151037 non-null int64 \n", + " 56 income_less_10000 151037 non-null int64 \n", + " 57 income_10000_14999 151037 non-null int64 \n", + " 58 income_15000_24999 151037 non-null int64 \n", + " 59 income_25000_34999 151037 non-null int64 \n", + " 60 income_35000_49999 151037 non-null int64 \n", + " 61 income_50000_64999 151037 non-null int64 \n", + " 62 income_65000_74999 151037 non-null int64 \n", + " 63 workers_with_no_car 151037 non-null int64 \n", + " 64 households_with_no_cars 151037 non-null int64 \n", + " 65 B18101_001E 151037 non-null int64 \n", + " 66 public_asst_pop 151037 non-null int64 \n", + " 67 veteran_pop 151037 non-null int64 \n", + " 68 county_name 151037 non-null object \n", + " 69 inc_extremelylow 151037 non-null int64 \n", + " 70 inc_verylow 151037 non-null int64 \n", + " 71 inc_low 151037 non-null int64 \n", + " 72 male_seniors 151037 non-null int64 \n", + " 73 female_seniors 151037 non-null int64 \n", + " 74 male_youth 151037 non-null int64 \n", + " 75 female_youth 151037 non-null int64 \n", + " 76 disabled_pop 151037 non-null int64 \n", + " 77 area_m2 151037 non-null float64 \n", + " 78 jobs_tot 151037 non-null float64 \n", + "dtypes: float64(6), geometry(1), int64(49), object(23)\n", + "memory usage: 92.2+ MB\n" ] } ], "source": [ - "orgs_stop_buffered.info()" + "stops_acs_joined.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47864ece-5031-4e08-b7af-c36291b69596", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "4bafb6fb-f42e-4e70-81aa-9dec5bce7991", + "metadata": {}, + "outputs": [], + "source": [ + "stop_buffered_dissolved = stop_buffered.dissolve(by='organization_name')" ] }, { @@ -1213,7 +911,7 @@ } ], "source": [ - "orgs_stop_dissolved.info()" + "# orgs_stop_dissolved.info()" ] }, { From 002c767631d3a69d225c3a3b23a8b40ab7bfa6d1 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 19:16:45 +0000 Subject: [PATCH 03/21] lehd data processing file added and acs data processing started --- .../ahsc_acs_2/06_data_processing.ipynb | 1696 +++-------------- 1 file changed, 247 insertions(+), 1449 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index f391ad45b..627a15078 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 3, "id": "af0504b4-642c-4977-b166-d800acfc82a0", "metadata": {}, "outputs": [], @@ -59,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 4, "id": "f7477af7-e3ee-44f5-b292-bd423280a0f2", "metadata": {}, "outputs": [], @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 6, "id": "80eeec73-8a7d-4d75-aebb-1c70333874f4", "metadata": {}, "outputs": [], @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "4f0323de-b195-4fdf-a9a4-2d2170716ac0", "metadata": {}, "outputs": [ @@ -118,27 +118,27 @@ "output_type": "stream", "text": [ "\n", - "Index: 28544 entries, 0 to 28544\n", + "RangeIndex: 28545 entries, 0 to 28544\n", "Data columns (total 15 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 28544 non-null object \n", + " 0 organization_name 28545 non-null object \n", " 1 feed_key 28544 non-null object \n", " 2 route_id 26875 non-null object \n", " 3 route_name 13556 non-null object \n", " 4 stop_id 28544 non-null object \n", - " 5 stop_name 28544 non-null object \n", + " 5 stop_name 28545 non-null object \n", " 6 stop_code 27483 non-null object \n", " 7 n_trips 28544 non-null float64\n", " 8 n_routes 28544 non-null float64\n", " 9 pt_geom 28544 non-null object \n", - " 10 day_type 28544 non-null object \n", - " 11 average_daily_boardings 28544 non-null float64\n", + " 10 day_type 28545 non-null object \n", + " 11 average_daily_boardings 28545 non-null float64\n", " 12 average_daily_alightings 25942 non-null float64\n", - " 13 start_date 28544 non-null object \n", - " 14 end_date 28544 non-null object \n", + " 13 start_date 28545 non-null object \n", + " 14 end_date 28545 non-null object \n", "dtypes: float64(4), object(11)\n", - "memory usage: 3.5+ MB\n" + "memory usage: 3.3+ MB\n" ] } ], @@ -148,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "02ded3e0-8d73-4577-ab83-eac497b63673", "metadata": {}, "outputs": [], @@ -162,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "fc371c6b-1e27-41e7-9e4d-130acdbf4154", "metadata": {}, "outputs": [], @@ -173,7 +173,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "a47e7dfa-f157-4e0e-b779-c559ead48ecc", "metadata": {}, "outputs": [], @@ -187,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "1d07604c-8bb0-4f11-b188-b7753fab5b50", "metadata": {}, "outputs": [ @@ -514,7 +514,7 @@ "[28544 rows x 16 columns]" ] }, - "execution_count": 14, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -526,7 +526,36 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, + "id": "a7157072-a9b2-4717-825b-a95a8f0fb7cc", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "533e2aa4-c5e1-4d91-8ed9-fbc9bc3f27e5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([nan], dtype=object)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_ridership_check.route_name.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, "id": "29888876-97a7-4462-9149-7a19ba540104", "metadata": {}, "outputs": [], @@ -537,7 +566,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "806da12f-9cf6-4306-81c0-dd057f31d8a9", "metadata": { "tags": [] @@ -550,7 +579,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 14, "id": "bbec8fe2-2ae9-4057-b89a-b896e6065c0a", "metadata": {}, "outputs": [], @@ -561,7 +590,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 15, "id": "3167fe7f-a5dd-4350-af61-77c01a4eb8d0", "metadata": {}, "outputs": [ @@ -584,7 +613,7 @@ "- Prime Meridian: Greenwich" ] }, - "execution_count": 44, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -595,7 +624,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 16, "id": "8a9a2022-eb39-4fba-b76c-33f2fe8b7479", "metadata": {}, "outputs": [ @@ -635,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 17, "id": "41157912-0ead-4261-9624-042522e122a8", "metadata": {}, "outputs": [], @@ -650,7 +679,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 18, "id": "43735de5-8b17-42de-8fc9-85f82cf89bf1", "metadata": {}, "outputs": [], @@ -659,12 +688,12 @@ "geometry_intersect['area_2'] = geometry_intersect.geometry.area\n", "\n", "# Calculate the proportion of the tract that intersects each stop\n", - "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['ALAND']" + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2']" ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 19, "id": "1a1d6c3d-e4a0-4bf1-b1a7-130fb18f336e", "metadata": {}, "outputs": [], @@ -674,7 +703,7 @@ " 'total_pop', 'poverty_pop', 'non_us_citizen', 'workers_with_no_car', \n", " 'households_with_no_cars', 'disabled_pop', 'public_asst_pop', \n", " 'inc_extremelylow', 'inc_verylow', 'inc_low', \n", - " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth', 'jobs_tot'\n", + " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth', 'jobs_tot', 'ALAND'\n", "]\n", "\n", "# Apply area_ratio\n", @@ -684,240 +713,159 @@ }, { "cell_type": "code", - "execution_count": 53, - "id": "63cece92-0b80-427b-807d-d4eb05fb6820", + "execution_count": 20, + "id": "203d6f46-a2f3-4b5c-b557-4ab2583a1441", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Gold Coast Transit', 'Samtrans', 'Golden Gate Transit', 'SDMTS',\n", + " 'SacRT Bus', 'Orange County Transportation Authority',\n", + " 'Long Beach Transit', 'Foothill Transit', 'Fresno County',\n", + " 'San Francisco Bay Area Rapid Transit District', 'Big Blue Bus',\n", + " 'Culver City Bus', 'Riverside Transit', 'Golden Gate Park Shuttle',\n", + " 'Caltrain'], dtype=object)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "group_key = ['feed_key', 'stop_id']\n", - "\n", - "stop_acs_rollup = geometry_intersect.groupby(group_key, as_index=False)[[f'{col}_adj' for col in cols_to_weight]].sum()\n", - "\n", - "# Optionally rename columns to original names for clarity\n", - "stop_acs_rollup = stop_acs_rollup.rename(columns={f'{col}_adj': f'sum_{col}' for col in cols_to_weight})" + "geometry_intersect.organization_name.unique()" ] }, { "cell_type": "code", - "execution_count": null, - "id": "a5d22150-1322-4b22-af41-0e576e58de2f", + "execution_count": 21, + "id": "a9d2c804-4ad5-41b1-bf59-c41220ac394f", "metadata": {}, "outputs": [], "source": [ - "def add_acs_metrics(df):\n", - " df = df.copy()\n", + "orgs_with_routes = [\n", + " 'Foothill Transit', 'Gold Coast Transit', 'Golden Gate Transit', 'Long Beach Transit', 'Orange County Transportation Authority', 'SacRT Bus', 'Samtrans', 'SDMTS', \n", + " 'Culver City Bus', 'Big Blue Bus', 'Riverside Transit']\n", "\n", - " # Basic area conversion\n", - " df['land_area_sqkm'] = df['sum_land_area'] / 1_000_000\n", + "orgs_stop_only = ['San Francisco Bay Area Rapid Transit District', 'Fresno County', 'Golden Gate Park Shuttle', 'Caltrain' ]\n", "\n", - " # Densities\n", - " df['pop_density'] = df['sum_total_pop'] / df['land_area_sqkm']\n", - " df['job_density'] = df['sum_jobs'] / df['land_area_sqkm']\n", + "# Split geometry_intersect based on organization\n", + "has_route = geometry_intersect[geometry_intersect['organization_name'].isin(orgs_with_routes)]\n", + "stop_only = geometry_intersect[geometry_intersect['organization_name'].isin(orgs_stop_only)]\n", "\n", - " # Population percentages\n", - " df['pct_not_us_citizen_pop'] = df['sum_not_us_citizen_pop'] / df['sum_total_pop']\n", - " df['pct_black_pop'] = df['sum_black_pop'] / df['sum_total_pop']\n", - " df['pct_hispanic_pop'] = df['sum_hispanic_pop'] / df['sum_total_pop']\n", - " df['pct_youth_pop'] = df['sum_youth_pop'] / df['sum_total_pop']\n", - " df['pct_seniors_pop'] = df['sum_seniors_pop'] / df['sum_total_pop']\n", + "# Aggregate route-level stops\n", + "stop_acs_route = has_route.groupby(\n", + " ['organization_name', 'feed_key','stop_id','route_id','n_trips','n_routes','average_daily_boardings','average_daily_alightings','start_date','end_date', 'geometry'], \n", + " as_index=False\n", + ")[[f'{col}_adj' for col in cols_to_weight]].sum()\n", "\n", - " # Income levels\n", - " df['pct_inc_extremelylow'] = df['sum_inc_extremelylow'] / df['sum_households']\n", - " df['pct_inc_verylow'] = df['sum_inc_verylow'] / df['sum_households']\n", - " df['pct_inc_low'] = df['sum_inc_low'] / df['sum_households']\n", - "\n", - " # Poverty & transportation\n", - " df['pct_poverty'] = df['sum_poverty'] / df['sum_pop_determined_poverty_status']\n", - " df['pct_pop_workers_no_car'] = df['sum_no_car'] / df['sum_total_pop']\n", - " df['pct_hh_no_cars'] = df['sum_no_car'] / df['sum_households']\n", + "# Aggregate stop-only stops\n", + "stop_acs_noroute = stop_only.groupby(\n", + " ['organization_name', 'feed_key','stop_id','n_trips','n_routes','average_daily_boardings','average_daily_alightings','start_date','end_date', 'geometry'], \n", + " as_index=False\n", + ")[[f'{col}_adj' for col in cols_to_weight]].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "c18724f5-5b87-4b3e-9f68-5f36d121db86", + "metadata": {}, + "outputs": [], + "source": [ + "# Assign dummy route_id for stop-only\n", + "stop_acs_noroute['route_id'] = 'STOP_ONLY'\n", "\n", - " return df" + "# Reorder columns to match route-level table\n", + "stop_acs_noroute = stop_acs_noroute[stop_acs_route.columns]\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "c6b03d5a-21dc-4f00-b03f-34e69d5b9402", + "execution_count": 23, + "id": "55f82c28-d04a-4f0b-8008-1dc98e970055", "metadata": {}, "outputs": [], "source": [ - "stop_acs_rollup = add_acs_metrics(stop_acs_rollup)" + "stop_acs_rollup = pd.concat([stop_acs_route, stop_acs_noroute], ignore_index=True)" ] }, { "cell_type": "code", - "execution_count": 47, - "id": "7f886a72-6394-42d0-98f3-b165e553a7ec", + "execution_count": 24, + "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Index: 151037 entries, 0 to 28544\n", - "Data columns (total 79 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 organization_name 151037 non-null object \n", - " 1 feed_key 151037 non-null object \n", - " 2 route_id 143325 non-null object \n", - " 3 route_name 71252 non-null object \n", - " 4 stop_id 151037 non-null object \n", - " 5 stop_name 151037 non-null object \n", - " 6 stop_code 145736 non-null object \n", - " 7 n_trips 151037 non-null float64 \n", - " 8 n_routes 151037 non-null float64 \n", - " 9 pt_geom 151037 non-null object \n", - " 10 day_type 151037 non-null object \n", - " 11 average_daily_boardings 151037 non-null float64 \n", - " 12 average_daily_alightings 140789 non-null float64 \n", - " 13 start_date 151037 non-null object \n", - " 14 end_date 151037 non-null object \n", - " 15 geometry 151037 non-null geometry\n", - " 16 index_right 151037 non-null int64 \n", - " 17 STATEFP 151037 non-null object \n", - " 18 COUNTYFP 151037 non-null object \n", - " 19 TRACTCE 151037 non-null object \n", - " 20 GEOIDFQ 151037 non-null object \n", - " 21 GEOID 151037 non-null object \n", - " 22 NAME 151037 non-null object \n", - " 23 NAMELSAD 151037 non-null object \n", - " 24 STUSPS 151037 non-null object \n", - " 25 NAMELSADCO 151037 non-null object \n", - " 26 STATE_NAME 151037 non-null object \n", - " 27 LSAD 151037 non-null object \n", - " 28 ALAND 151037 non-null int64 \n", - " 29 AWATER 151037 non-null int64 \n", - " 30 total_pop 151037 non-null int64 \n", - " 31 poverty_pop 151037 non-null int64 \n", - " 32 non_us_citizen 151037 non-null int64 \n", - " 33 male_65_to_66 151037 non-null int64 \n", - " 34 male_67_to_69 151037 non-null int64 \n", - " 35 male_70_to_74 151037 non-null int64 \n", - " 36 male_75_to_79 151037 non-null int64 \n", - " 37 male_80_to_84 151037 non-null int64 \n", - " 38 male_85_and_over 151037 non-null int64 \n", - " 39 female_65_to_66 151037 non-null int64 \n", - " 40 female_67_to_69 151037 non-null int64 \n", - " 41 female_70_to_74 151037 non-null int64 \n", - " 42 female_75_to_79 151037 non-null int64 \n", - " 43 female_80_to_84 151037 non-null int64 \n", - " 44 female_85_and_over 151037 non-null int64 \n", - " 45 male_15_17 151037 non-null int64 \n", - " 46 male_18_19 151037 non-null int64 \n", - " 47 male_20 151037 non-null int64 \n", - " 48 male_21 151037 non-null int64 \n", - " 49 male_22_24 151037 non-null int64 \n", - " 50 female_15_17 151037 non-null int64 \n", - " 51 female_18_19 151037 non-null int64 \n", - " 52 female_20 151037 non-null int64 \n", - " 53 female_21 151037 non-null int64 \n", - " 54 female_22_24 151037 non-null int64 \n", - " 55 median_household_income 151037 non-null int64 \n", - " 56 income_less_10000 151037 non-null int64 \n", - " 57 income_10000_14999 151037 non-null int64 \n", - " 58 income_15000_24999 151037 non-null int64 \n", - " 59 income_25000_34999 151037 non-null int64 \n", - " 60 income_35000_49999 151037 non-null int64 \n", - " 61 income_50000_64999 151037 non-null int64 \n", - " 62 income_65000_74999 151037 non-null int64 \n", - " 63 workers_with_no_car 151037 non-null int64 \n", - " 64 households_with_no_cars 151037 non-null int64 \n", - " 65 B18101_001E 151037 non-null int64 \n", - " 66 public_asst_pop 151037 non-null int64 \n", - " 67 veteran_pop 151037 non-null int64 \n", - " 68 county_name 151037 non-null object \n", - " 69 inc_extremelylow 151037 non-null int64 \n", - " 70 inc_verylow 151037 non-null int64 \n", - " 71 inc_low 151037 non-null int64 \n", - " 72 male_seniors 151037 non-null int64 \n", - " 73 female_seniors 151037 non-null int64 \n", - " 74 male_youth 151037 non-null int64 \n", - " 75 female_youth 151037 non-null int64 \n", - " 76 disabled_pop 151037 non-null int64 \n", - " 77 area_m2 151037 non-null float64 \n", - " 78 jobs_tot 151037 non-null float64 \n", - "dtypes: float64(6), geometry(1), int64(49), object(23)\n", - "memory usage: 92.2+ MB\n" - ] + "data": { + "text/plain": [ + "array(['Big Blue Bus', 'Culver City Bus', 'Foothill Transit',\n", + " 'Gold Coast Transit', 'Golden Gate Transit', 'Long Beach Transit',\n", + " 'Orange County Transportation Authority', 'SDMTS', 'SacRT Bus',\n", + " 'Samtrans', 'Fresno County',\n", + " 'San Francisco Bay Area Rapid Transit District'], dtype=object)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "stops_acs_joined.info()" + "stop_acs_rollup.organization_name.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "b067dde4-2044-45b8-8234-8ada3f868bda", + "metadata": {}, + "outputs": [], + "source": [ + "stop_acs_rollup_gdf = gpd.GeoDataFrame(\n", + " stop_acs_rollup, \n", + " geometry='geometry', \n", + " crs=geometry_intersect.crs\n", + ")" ] }, { "cell_type": "code", "execution_count": null, - "id": "47864ece-5031-4e08-b7af-c36291b69596", + "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 25, - "id": "4bafb6fb-f42e-4e70-81aa-9dec5bce7991", + "execution_count": null, + "id": "9705c91c-6a8c-4e4f-86a5-39e8dbf99f14", "metadata": {}, "outputs": [], - "source": [ - "stop_buffered_dissolved = stop_buffered.dissolve(by='organization_name')" - ] + "source": [] }, { "cell_type": "code", - "execution_count": 27, - "id": "9de1e91a-aa0b-4eea-b6c2-05537cf21aea", + "execution_count": null, + "id": "57b34d5a-ca96-48be-98e4-83eac8a3ceae", "metadata": {}, "outputs": [], - "source": [ - "orgs_stop_dissolved = orgs_stop_dissolved.reset_index()" - ] + "source": [] }, { - "cell_type": "code", - "execution_count": 28, - "id": "538d7740-f3b7-477e-a2ec-81560e3966c5", + "cell_type": "markdown", + "id": "92eb767d-b477-4e14-ab51-fac6f615e621", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 207 entries, 0 to 206\n", - "Data columns (total 15 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 name 207 non-null object \n", - " 1 geometry 207 non-null geometry\n", - " 2 ntd_id_x 143 non-null object \n", - " 3 ntd_id_2022_x 145 non-null object \n", - " 4 stop_id 207 non-null object \n", - " 5 stop_name 207 non-null object \n", - " 6 schedule_gtfs_dataset_name 186 non-null object \n", - " 7 organization_source_record_id 197 non-null object \n", - " 8 organization_name 197 non-null object \n", - " 9 name_clean 207 non-null object \n", - " 10 source_record_id 179 non-null object \n", - " 11 key 182 non-null object \n", - " 12 organization_type 182 non-null object \n", - " 13 ntd_id_y 150 non-null object \n", - " 14 ntd_id_2022_y 152 non-null object \n", - "dtypes: geometry(1), object(14)\n", - "memory usage: 24.4+ KB\n" - ] - } - ], "source": [ - "# orgs_stop_dissolved.info()" + "## Adjusting Population and Demographic Metrics for Stop Service Areas" ] }, { "cell_type": "code", - "execution_count": 29, - "id": "98dd17d1-56e0-4dfc-b566-d5ae3eb66881", + "execution_count": 36, + "id": "e1e4d484-1748-4027-83b2-bbb8dc441ed9", "metadata": {}, "outputs": [ { @@ -942,878 +890,132 @@ " \n", " \n", " name\n", - " geometry\n", - " ntd_id_x\n", - " ntd_id_2022_x\n", - " stop_id\n", - " stop_name\n", - " schedule_gtfs_dataset_name\n", - " organization_source_record_id\n", - " organization_name\n", - " name_clean\n", - " source_record_id\n", - " key\n", " organization_type\n", + " organization_name\n", " ntd_id_y\n", " ntd_id_2022_y\n", + " stop_id\n", + " stop_name\n", + " GEOIDFQ\n", + " geometry\n", + " area_2\n", + " total_pop_adj\n", + " poverty_pop_adj\n", + " non_us_citizen_adj\n", + " workers_with_no_car_adj\n", + " households_with_no_cars_adj\n", + " disabled_pop_adj\n", + " public_asst_pop_adj\n", + " inc_extremelylow_adj\n", + " inc_verylow_adj\n", + " inc_low_adj\n", + " male_seniors_adj\n", + " female_seniors_adj\n", + " male_youth_adj\n", + " female_youth_adj\n", + " veteran_pop_adj\n", " \n", " \n", " \n", " \n", " 0\n", " Alhambra Schedule\n", - " POLYGON ((169690.507 -438032.396, 169637.476 -...\n", + " City/Town\n", + " City of Alhambra\n", " 90247\n", " 90247\n", " 2619788\n", " Alamansor St & Los Higos St\n", - " Alhambra Schedule\n", - " recNaKvzVQhGX1puu\n", - " City of Alhambra\n", - " Alhambra\n", - " recNaKvzVQhGX1puu\n", - " 897ce086b03388bc914f5c239298fb85\n", - " City/Town\n", - " 90247\n", - " 90247\n", + " 1400000US06037481103\n", + " POLYGON ((174546.535 -434262.136, 174543.285 -...\n", + " 23.630888\n", + " 0.089329\n", + " 0.014773\n", + " 0.017093\n", + " 0.002000\n", + " 0.003126\n", + " 0.008370\n", + " 0.031530\n", + " 0.023883\n", + " 0.023479\n", + " 0.009580\n", + " 0.005361\n", + " 0.009513\n", + " 0.003765\n", + " 0.004908\n", + " 0.000958\n", " \n", " \n", " 1\n", - " Amador Schedule\n", - " MULTIPOLYGON (((-79576.548 30778.572, -79623.5...\n", - " 9R02-91000\n", - " 91000\n", - " 19009\n", - " Walmart\n", - " Amador Schedule\n", - " recSBFiK95hJnJuYx\n", - " Amador Regional Transit System\n", - " Amador\n", - " recSBFiK95hJnJuYx\n", - " 71b58e792726688aef31d4712480d350\n", - " Independent Agency\n", - " 9R02-91000\n", - " 91000\n", - " \n", - " \n", - " 2\n", - " Amtrak Schedule\n", - " MULTIPOLYGON (((-170145.246 -163121.073, -1702...\n", - " None\n", - " None\n", - " AUS\n", - " Austin\n", - " Amtrak Schedule\n", - " recKsb5FnJy70up78\n", - " Amtrak\n", - " Amtrak\n", - " recKsb5FnJy70up78\n", - " 7225e6e33a67f74bc42fe137d9f9be23\n", - " Federal Government\n", - " None\n", - " None\n", - " \n", - " \n", - " 3\n", - " Anaheim Resort Schedule\n", - " MULTIPOLYGON (((192212.099 -467839.848, 192171...\n", - " 90211\n", - " 90211\n", - " 8e75ec44-01e5-4319-adbe-d96e78c3837b\n", - " Ball & Flore\n", - " Anaheim Resort Schedule\n", - " recsrIZdx5Wt6n3ol\n", - " Anaheim Transportation Network\n", - " Anaheim Resort\n", - " recsrIZdx5Wt6n3ol\n", - " a49a3c2c1b56a748da002e3f343fa1c5\n", - " Independent Agency\n", - " 90211\n", - " 90211\n", - " \n", - " \n", - " 4\n", - " Antelope Valley Transit Authority Schedule\n", - " MULTIPOLYGON (((143232.265 -439728.624, 143168...\n", - " 90121\n", - " 90121\n", - " 461\n", - " 110th St. E. & Ave. R-8\n", - " Antelope Valley Transit Authority Schedule\n", - " recxsWR0KRrQTdjmg\n", - " Antelope Valley Transit Authority\n", - " Antelope Valley Transit Authority\n", - " recxsWR0KRrQTdjmg\n", - " 86e23a9a896696a1d14e026b3f17843b\n", + " LA Metro Bus Schedule\n", " Independent Agency\n", - " 90121\n", - " 90121\n", + " Los Angeles County Metropolitan Transportation...\n", + " 90154\n", + " 90154\n", + " 142294\n", + " Candlewood / Hayter\n", + " 1400000US06037481103\n", + " POLYGON ((175957.387 -433744.848, 175878.515 -...\n", + " 747957.619083\n", + " 2827.411664\n", + " 467.600160\n", + " 541.011790\n", + " 63.304231\n", + " 98.946109\n", + " 264.920227\n", + " 997.972584\n", + " 755.926994\n", + " 743.159754\n", + " 303.221947\n", + " 169.697897\n", + " 301.094074\n", + " 119.160905\n", + " 155.334752\n", + " 30.322195\n", " \n", " \n", "\n", "" ], "text/plain": [ - " name \\\n", - "0 Alhambra Schedule \n", - "1 Amador Schedule \n", - "2 Amtrak Schedule \n", - "3 Anaheim Resort Schedule \n", - "4 Antelope Valley Transit Authority Schedule \n", + " name organization_type \\\n", + "0 Alhambra Schedule City/Town \n", + "1 LA Metro Bus Schedule Independent Agency \n", + "\n", + " organization_name ntd_id_y ntd_id_2022_y \\\n", + "0 City of Alhambra 90247 90247 \n", + "1 Los Angeles County Metropolitan Transportation... 90154 90154 \n", "\n", - " geometry ntd_id_x \\\n", - "0 POLYGON ((169690.507 -438032.396, 169637.476 -... 90247 \n", - "1 MULTIPOLYGON (((-79576.548 30778.572, -79623.5... 9R02-91000 \n", - "2 MULTIPOLYGON (((-170145.246 -163121.073, -1702... None \n", - "3 MULTIPOLYGON (((192212.099 -467839.848, 192171... 90211 \n", - "4 MULTIPOLYGON (((143232.265 -439728.624, 143168... 90121 \n", + " stop_id stop_name GEOIDFQ \\\n", + "0 2619788 Alamansor St & Los Higos St 1400000US06037481103 \n", + "1 142294 Candlewood / Hayter 1400000US06037481103 \n", "\n", - " ntd_id_2022_x stop_id \\\n", - "0 90247 2619788 \n", - "1 91000 19009 \n", - "2 None AUS \n", - "3 90211 8e75ec44-01e5-4319-adbe-d96e78c3837b \n", - "4 90121 461 \n", + " geometry area_2 \\\n", + "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", + "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 \n", "\n", - " stop_name schedule_gtfs_dataset_name \\\n", - "0 Alamansor St & Los Higos St Alhambra Schedule \n", - "1 Walmart Amador Schedule \n", - "2 Austin Amtrak Schedule \n", - "3 Ball & Flore Anaheim Resort Schedule \n", - "4 110th St. E. & Ave. R-8 Antelope Valley Transit Authority Schedule \n", + " total_pop_adj poverty_pop_adj non_us_citizen_adj \\\n", + "0 0.089329 0.014773 0.017093 \n", + "1 2827.411664 467.600160 541.011790 \n", "\n", - " organization_source_record_id organization_name \\\n", - "0 recNaKvzVQhGX1puu City of Alhambra \n", - "1 recSBFiK95hJnJuYx Amador Regional Transit System \n", - "2 recKsb5FnJy70up78 Amtrak \n", - "3 recsrIZdx5Wt6n3ol Anaheim Transportation Network \n", - "4 recxsWR0KRrQTdjmg Antelope Valley Transit Authority \n", + " workers_with_no_car_adj households_with_no_cars_adj disabled_pop_adj \\\n", + "0 0.002000 0.003126 0.008370 \n", + "1 63.304231 98.946109 264.920227 \n", "\n", - " name_clean source_record_id \\\n", - "0 Alhambra recNaKvzVQhGX1puu \n", - "1 Amador recSBFiK95hJnJuYx \n", - "2 Amtrak recKsb5FnJy70up78 \n", - "3 Anaheim Resort recsrIZdx5Wt6n3ol \n", - "4 Antelope Valley Transit Authority recxsWR0KRrQTdjmg \n", + " public_asst_pop_adj inc_extremelylow_adj inc_verylow_adj inc_low_adj \\\n", + "0 0.031530 0.023883 0.023479 0.009580 \n", + "1 997.972584 755.926994 743.159754 303.221947 \n", "\n", - " key organization_type ntd_id_y \\\n", - "0 897ce086b03388bc914f5c239298fb85 City/Town 90247 \n", - "1 71b58e792726688aef31d4712480d350 Independent Agency 9R02-91000 \n", - "2 7225e6e33a67f74bc42fe137d9f9be23 Federal Government None \n", - "3 a49a3c2c1b56a748da002e3f343fa1c5 Independent Agency 90211 \n", - "4 86e23a9a896696a1d14e026b3f17843b Independent Agency 90121 \n", + " male_seniors_adj female_seniors_adj male_youth_adj female_youth_adj \\\n", + "0 0.005361 0.009513 0.003765 0.004908 \n", + "1 169.697897 301.094074 119.160905 155.334752 \n", "\n", - " ntd_id_2022_y \n", - "0 90247 \n", - "1 91000 \n", - "2 None \n", - "3 90211 \n", - "4 90121 " + " veteran_pop_adj \n", + "0 0.000958 \n", + "1 30.322195 " ] }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "orgs_stop_dissolved.head(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "2e231b7d-d744-419d-b442-810b166fcd3d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Compute the intersection between buffered stops and census tracts.\n", - "geometry_intersect = gpd.overlay(\n", - " orgs_stop_dissolved, \n", - " tracts_ca_acs, \n", - " how = 'intersection', \n", - " keep_geom_type=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "fa657799-42aa-46d7-a789-c4d86b226c13", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Calculate the area of each intersected geometry in square meters.\n", - "geometry_intersect['area_2'] = geometry_intersect.geometry.area" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "59ce3254-f021-40cd-869b-3c7a21f9002e", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
namentd_id_xntd_id_2022_xstop_idstop_nameschedule_gtfs_dataset_nameorganization_source_record_idorganization_namename_cleansource_record_idkeyorganization_typentd_id_yntd_id_2022_ySTATEFPCOUNTYFPTRACTCEGEOIDFQGEOIDNAMENAMELSADSTUSPSNAMELSADCOSTATE_NAMELSADALANDAWATERtotal_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carsB18101_001Epublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowmale_seniorsfemale_seniorsmale_youthfemale_youthdisabled_poparea_m2geometryarea_2
0Alhambra Schedule90247902472619788Alamansor St & Los Higos StAlhambra SchedulerecNaKvzVQhGX1puuCity of AlhambraAlhambrarecNaKvzVQhGX1puu897ce086b03388bc914f5c239298fb85City/Town9024790247060374811031400000US06037481103060374811034811.03Census Tract 4811.03CALos Angeles CountyCaliforniaCT141360705315879101719797920467681855076891851211409809386181382769305093475655538443532171191865284187657Los Angeles142113975703195662242924981.406019e+06POLYGON ((174546.535 -434262.136, 174543.285 -...23.630888
1LA Metro Bus Schedule9015490154142294Candlewood / HayterLA Metro Bus SchedulerecPnGkwdpnr8jmHBLos Angeles County Metropolitan Transportation...LA Metro BusrecPnGkwdpnr8jmHB9e96bde610e80d71f500eea119c4723cIndependent Agency9015490154060374811031400000US06037481103060374811034811.03Census Tract 4811.03CALos Angeles CountyCaliforniaCT141360705315879101719797920467681855076891851211409809386181382769305093475655538443532171191865284187657Los Angeles142113975703195662242924981.406019e+06POLYGON ((175957.387 -433744.848, 175878.515 -...747957.619083
\n", - "
" - ], - "text/plain": [ - " name ntd_id_x ntd_id_2022_x stop_id \\\n", - "0 Alhambra Schedule 90247 90247 2619788 \n", - "1 LA Metro Bus Schedule 90154 90154 142294 \n", - "\n", - " stop_name schedule_gtfs_dataset_name \\\n", - "0 Alamansor St & Los Higos St Alhambra Schedule \n", - "1 Candlewood / Hayter LA Metro Bus Schedule \n", - "\n", - " organization_source_record_id \\\n", - "0 recNaKvzVQhGX1puu \n", - "1 recPnGkwdpnr8jmHB \n", - "\n", - " organization_name name_clean \\\n", - "0 City of Alhambra Alhambra \n", - "1 Los Angeles County Metropolitan Transportation... LA Metro Bus \n", - "\n", - " source_record_id key organization_type \\\n", - "0 recNaKvzVQhGX1puu 897ce086b03388bc914f5c239298fb85 City/Town \n", - "1 recPnGkwdpnr8jmHB 9e96bde610e80d71f500eea119c4723c Independent Agency \n", - "\n", - " ntd_id_y ntd_id_2022_y STATEFP COUNTYFP TRACTCE GEOIDFQ \\\n", - "0 90247 90247 06 037 481103 1400000US06037481103 \n", - "1 90154 90154 06 037 481103 1400000US06037481103 \n", - "\n", - " GEOID NAME NAMELSAD STUSPS NAMELSADCO \\\n", - "0 06037481103 4811.03 Census Tract 4811.03 CA Los Angeles County \n", - "1 06037481103 4811.03 Census Tract 4811.03 CA Los Angeles County \n", - "\n", - " STATE_NAME LSAD ALAND AWATER total_pop poverty_pop non_us_citizen \\\n", - "0 California CT 1413607 0 5315 879 1017 \n", - "1 California CT 1413607 0 5315 879 1017 \n", - "\n", - " male_65_to_66 male_67_to_69 male_70_to_74 male_75_to_79 male_80_to_84 \\\n", - "0 19 79 79 20 46 \n", - "1 19 79 79 20 46 \n", - "\n", - " male_85_and_over female_65_to_66 female_67_to_69 female_70_to_74 \\\n", - "0 76 81 85 50 \n", - "1 76 81 85 50 \n", - "\n", - " female_75_to_79 female_80_to_84 female_85_and_over male_15_17 \\\n", - "0 76 89 185 121 \n", - "1 76 89 185 121 \n", - "\n", - " male_18_19 male_20 male_21 male_22_24 female_15_17 female_18_19 \\\n", - "0 14 0 9 80 93 86 \n", - "1 14 0 9 80 93 86 \n", - "\n", - " female_20 female_21 female_22_24 median_household_income \\\n", - "0 18 13 82 76930 \n", - "1 18 13 82 76930 \n", - "\n", - " income_less_10000 income_10000_14999 income_15000_24999 \\\n", - "0 509 347 565 \n", - "1 509 347 565 \n", - "\n", - " income_25000_34999 income_35000_49999 income_50000_64999 \\\n", - "0 553 844 353 \n", - "1 553 844 353 \n", - "\n", - " income_65000_74999 workers_with_no_car households_with_no_cars \\\n", - "0 217 119 186 \n", - "1 217 119 186 \n", - "\n", - " B18101_001E public_asst_pop veteran_pop county_name inc_extremelylow \\\n", - "0 5284 1876 57 Los Angeles 1421 \n", - "1 5284 1876 57 Los Angeles 1421 \n", - "\n", - " inc_verylow inc_low male_seniors female_seniors male_youth \\\n", - "0 1397 570 319 566 224 \n", - "1 1397 570 319 566 224 \n", - "\n", - " female_youth disabled_pop area_m2 \\\n", - "0 292 498 1.406019e+06 \n", - "1 292 498 1.406019e+06 \n", - "\n", - " geometry area_2 \n", - "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", - "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 " - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "geometry_intersect.head(2)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "9c706362-1ebf-408f-8ae2-b119a9bccd5c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 20839 entries, 0 to 20838\n", - "Data columns (total 77 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 name 20839 non-null object \n", - " 1 ntd_id_x 15048 non-null object \n", - " 2 ntd_id_2022_x 15110 non-null object \n", - " 3 stop_id 20839 non-null object \n", - " 4 stop_name 20839 non-null object \n", - " 5 schedule_gtfs_dataset_name 17866 non-null object \n", - " 6 organization_source_record_id 18848 non-null object \n", - " 7 organization_name 18848 non-null object \n", - " 8 name_clean 20839 non-null object \n", - " 9 source_record_id 17485 non-null object \n", - " 10 key 18001 non-null object \n", - " 11 organization_type 18001 non-null object \n", - " 12 ntd_id_y 15508 non-null object \n", - " 13 ntd_id_2022_y 15570 non-null object \n", - " 14 STATEFP 20839 non-null object \n", - " 15 COUNTYFP 20839 non-null object \n", - " 16 TRACTCE 20839 non-null object \n", - " 17 GEOIDFQ 20839 non-null object \n", - " 18 GEOID 20839 non-null object \n", - " 19 NAME 20839 non-null object \n", - " 20 NAMELSAD 20839 non-null object \n", - " 21 STUSPS 20839 non-null object \n", - " 22 NAMELSADCO 20839 non-null object \n", - " 23 STATE_NAME 20839 non-null object \n", - " 24 LSAD 20839 non-null object \n", - " 25 ALAND 20839 non-null int64 \n", - " 26 AWATER 20839 non-null int64 \n", - " 27 total_pop 20839 non-null int64 \n", - " 28 poverty_pop 20839 non-null int64 \n", - " 29 non_us_citizen 20839 non-null int64 \n", - " 30 male_65_to_66 20839 non-null int64 \n", - " 31 male_67_to_69 20839 non-null int64 \n", - " 32 male_70_to_74 20839 non-null int64 \n", - " 33 male_75_to_79 20839 non-null int64 \n", - " 34 male_80_to_84 20839 non-null int64 \n", - " 35 male_85_and_over 20839 non-null int64 \n", - " 36 female_65_to_66 20839 non-null int64 \n", - " 37 female_67_to_69 20839 non-null int64 \n", - " 38 female_70_to_74 20839 non-null int64 \n", - " 39 female_75_to_79 20839 non-null int64 \n", - " 40 female_80_to_84 20839 non-null int64 \n", - " 41 female_85_and_over 20839 non-null int64 \n", - " 42 male_15_17 20839 non-null int64 \n", - " 43 male_18_19 20839 non-null int64 \n", - " 44 male_20 20839 non-null int64 \n", - " 45 male_21 20839 non-null int64 \n", - " 46 male_22_24 20839 non-null int64 \n", - " 47 female_15_17 20839 non-null int64 \n", - " 48 female_18_19 20839 non-null int64 \n", - " 49 female_20 20839 non-null int64 \n", - " 50 female_21 20839 non-null int64 \n", - " 51 female_22_24 20839 non-null int64 \n", - " 52 median_household_income 20839 non-null int64 \n", - " 53 income_less_10000 20839 non-null int64 \n", - " 54 income_10000_14999 20839 non-null int64 \n", - " 55 income_15000_24999 20839 non-null int64 \n", - " 56 income_25000_34999 20839 non-null int64 \n", - " 57 income_35000_49999 20839 non-null int64 \n", - " 58 income_50000_64999 20839 non-null int64 \n", - " 59 income_65000_74999 20839 non-null int64 \n", - " 60 workers_with_no_car 20839 non-null int64 \n", - " 61 households_with_no_cars 20839 non-null int64 \n", - " 62 B18101_001E 20839 non-null int64 \n", - " 63 public_asst_pop 20839 non-null int64 \n", - " 64 veteran_pop 20839 non-null int64 \n", - " 65 county_name 20839 non-null object \n", - " 66 inc_extremelylow 20839 non-null int64 \n", - " 67 inc_verylow 20839 non-null int64 \n", - " 68 inc_low 20839 non-null int64 \n", - " 69 male_seniors 20839 non-null int64 \n", - " 70 female_seniors 20839 non-null int64 \n", - " 71 male_youth 20839 non-null int64 \n", - " 72 female_youth 20839 non-null int64 \n", - " 73 disabled_pop 20839 non-null int64 \n", - " 74 area_m2 20839 non-null float64 \n", - " 75 geometry 20839 non-null geometry\n", - " 76 area_2 20839 non-null float64 \n", - "dtypes: float64(2), geometry(1), int64(48), object(26)\n", - "memory usage: 12.2+ MB\n" - ] - } - ], - "source": [ - "geometry_intersect.info()" - ] - }, - { - "cell_type": "markdown", - "id": "92eb767d-b477-4e14-ab51-fac6f615e621", - "metadata": {}, - "source": [ - "## Adjusting Population and Demographic Metrics for Stop Service Areas" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "ed44c28b-0eb9-4d7c-b9a5-3739ea9f5133", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Adjust total population by the proportion of the tract area that intersects the stop buffer.\n", - "# Calculate the proportion of each tract's area that intersects the stop buffer\n", - "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2']" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "597c67ad-9913-435f-8c9b-ddc1a9fbd297", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", - "cols_to_weight = [\n", - " 'total_pop', 'poverty_pop', 'non_us_citizen', 'workers_with_no_car', \n", - " 'households_with_no_cars', 'disabled_pop', 'public_asst_pop', \n", - " 'inc_extremelylow', 'inc_verylow', 'inc_low', \n", - " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth'\n", - "]\n", - "\n", - "# Apply area ratio to create adjusted metrics\n", - "geometry_intersect[[f'{col}_adj' for col in cols_to_weight]] = (\n", - " geometry_intersect[cols_to_weight].multiply(geometry_intersect['area_ratio'], axis=0)\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "e1e4d484-1748-4027-83b2-bbb8dc441ed9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nameorganization_typeorganization_namentd_id_yntd_id_2022_ystop_idstop_nameGEOIDFQgeometryarea_2total_pop_adjpoverty_pop_adjnon_us_citizen_adjworkers_with_no_car_adjhouseholds_with_no_cars_adjdisabled_pop_adjpublic_asst_pop_adjinc_extremelylow_adjinc_verylow_adjinc_low_adjmale_seniors_adjfemale_seniors_adjmale_youth_adjfemale_youth_adjveteran_pop_adj
0Alhambra ScheduleCity/TownCity of Alhambra90247902472619788Alamansor St & Los Higos St1400000US06037481103POLYGON ((174546.535 -434262.136, 174543.285 -...23.6308880.0893290.0147730.0170930.0020000.0031260.0083700.0315300.0238830.0234790.0095800.0053610.0095130.0037650.0049080.000958
1LA Metro Bus ScheduleIndependent AgencyLos Angeles County Metropolitan Transportation...9015490154142294Candlewood / Hayter1400000US06037481103POLYGON ((175957.387 -433744.848, 175878.515 -...747957.6190832827.411664467.600160541.01179063.30423198.946109264.920227997.972584755.926994743.159754303.221947169.697897301.094074119.160905155.33475230.322195
\n", - "
" - ], - "text/plain": [ - " name organization_type \\\n", - "0 Alhambra Schedule City/Town \n", - "1 LA Metro Bus Schedule Independent Agency \n", - "\n", - " organization_name ntd_id_y ntd_id_2022_y \\\n", - "0 City of Alhambra 90247 90247 \n", - "1 Los Angeles County Metropolitan Transportation... 90154 90154 \n", - "\n", - " stop_id stop_name GEOIDFQ \\\n", - "0 2619788 Alamansor St & Los Higos St 1400000US06037481103 \n", - "1 142294 Candlewood / Hayter 1400000US06037481103 \n", - "\n", - " geometry area_2 \\\n", - "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", - "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 \n", - "\n", - " total_pop_adj poverty_pop_adj non_us_citizen_adj \\\n", - "0 0.089329 0.014773 0.017093 \n", - "1 2827.411664 467.600160 541.011790 \n", - "\n", - " workers_with_no_car_adj households_with_no_cars_adj disabled_pop_adj \\\n", - "0 0.002000 0.003126 0.008370 \n", - "1 63.304231 98.946109 264.920227 \n", - "\n", - " public_asst_pop_adj inc_extremelylow_adj inc_verylow_adj inc_low_adj \\\n", - "0 0.031530 0.023883 0.023479 0.009580 \n", - "1 997.972584 755.926994 743.159754 303.221947 \n", - "\n", - " male_seniors_adj female_seniors_adj male_youth_adj female_youth_adj \\\n", - "0 0.005361 0.009513 0.003765 0.004908 \n", - "1 169.697897 301.094074 119.160905 155.334752 \n", - "\n", - " veteran_pop_adj \n", - "0 0.000958 \n", - "1 30.322195 " - ] - }, - "execution_count": 36, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1829,410 +1031,6 @@ "filtered_final_data.head(2)" ] }, - { - "cell_type": "markdown", - "id": "6119ef50-cc16-43b9-a2aa-28d36a4428f8", - "metadata": {}, - "source": [ - "## Agency Level Demography Data " - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "893d1d91-1f1d-43af-870d-abfba2ccccdf", - "metadata": {}, - "outputs": [], - "source": [ - "group_key = ['name']\n", - "\n", - "# Identify adjusted demographic columns\n", - "adj_cols = [col for col in geometry_intersect.columns if col.endswith('_adj')]\n", - "\n", - "# Extra non-demographic attributes to keep (take first occurrence per agency)\n", - "extra_cols = ['organization_type', 'ntd_id_y', 'ntd_id_2022_y', 'key']\n", - "\n", - "# Dissolve stop buffers to get agency shapes\n", - "agency_geometry = orgs_stop_dissolved.dissolve(by=group_key, as_index=False)\n", - "\n", - "# --- DROP overlapping extra columns from agency_geometry ---\n", - "agency_geometry = agency_geometry.drop(columns=extra_cols, errors='ignore')\n", - "\n", - "# Aggregate population metrics\n", - "agency_demo = geometry_intersect.groupby(group_key, as_index=False)[adj_cols].sum()\n", - "\n", - "# Merge demographics with geometry\n", - "agency_summary = agency_geometry.merge(agency_demo, on=group_key, how='left')\n", - "\n", - "# Merge extra attributes (take first)\n", - "extra_attrs = orgs_stop_dissolved[group_key + extra_cols].drop_duplicates(subset=group_key)\n", - "agency_summary = agency_summary.merge(extra_attrs, on=group_key, how='left')\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "d4712014-ac05-4411-b48e-8ff985371e9c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "agency_summary = gpd.GeoDataFrame(\n", - " agency_summary,\n", - " geometry='geometry',\n", - " crs=tracts_ca_acs.crs\n", - ").to_crs(epsg=4326)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "23e6568e-b163-40d3-999b-e05416c2b6e6", - "metadata": {}, - "outputs": [], - "source": [ - "agency_summary = agency_summary.drop(columns=[\"ntd_id_x\", \"ntd_id_2022_x\"])\n", - "\n", - "agency_summary = agency_summary.rename(\n", - " columns={\n", - " \"ntd_id_y\": \"ntd_id\",\n", - " \"ntd_id_2022_y\": \"ntd_id_2022\"\n", - " }\n", - ")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "a7fd704c-6a7b-4573-85d1-8d27bbaf43a7", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Int64Index: 207 entries, 0 to 206\n", - "Data columns (total 28 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 name 207 non-null object \n", - " 1 geometry 207 non-null geometry\n", - " 2 stop_id 207 non-null object \n", - " 3 stop_name 207 non-null object \n", - " 4 schedule_gtfs_dataset_name 186 non-null object \n", - " 5 organization_source_record_id 197 non-null object \n", - " 6 organization_name 197 non-null object \n", - " 7 name_clean 207 non-null object \n", - " 8 source_record_id 179 non-null object \n", - " 9 total_pop_adj 207 non-null float64 \n", - " 10 poverty_pop_adj 207 non-null float64 \n", - " 11 non_us_citizen_adj 207 non-null float64 \n", - " 12 workers_with_no_car_adj 207 non-null float64 \n", - " 13 households_with_no_cars_adj 207 non-null float64 \n", - " 14 disabled_pop_adj 207 non-null float64 \n", - " 15 public_asst_pop_adj 207 non-null float64 \n", - " 16 inc_extremelylow_adj 207 non-null float64 \n", - " 17 inc_verylow_adj 207 non-null float64 \n", - " 18 inc_low_adj 207 non-null float64 \n", - " 19 male_seniors_adj 207 non-null float64 \n", - " 20 female_seniors_adj 207 non-null float64 \n", - " 21 veteran_pop_adj 207 non-null float64 \n", - " 22 male_youth_adj 207 non-null float64 \n", - " 23 female_youth_adj 207 non-null float64 \n", - " 24 organization_type 182 non-null object \n", - " 25 ntd_id 150 non-null object \n", - " 26 ntd_id_2022 152 non-null object \n", - " 27 key 182 non-null object \n", - "dtypes: float64(15), geometry(1), object(12)\n", - "memory usage: 46.9+ KB\n" - ] - } - ], - "source": [ - "agency_summary.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "f6060e9a-6fd1-48a0-80d0-84f4f8f402a7", - "metadata": {}, - "outputs": [], - "source": [ - "# Merge acs and ntd data \n", - "merged_agency_ntd = (\n", - " pd.merge(\n", - " agency_summary,\n", - " ridership_data_grouped,\n", - " how='left',\n", - " left_on='ntd_id_2022',\n", - " right_on='ntd_id'\n", - " )\n", - " .sort_values(by='agency')\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "55e5088d-0ccd-4a53-be4a-b88d90e91afd", - "metadata": {}, - "outputs": [], - "source": [ - "merged_agency_ntd = gpd.GeoDataFrame(\n", - " merged_agency_ntd, \n", - " geometry='geometry', \n", - " crs=agency_summary.crs\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "4b87f77d-56cf-4bb5-81e6-687ae8e304e7", - "metadata": {}, - "outputs": [], - "source": [ - "merged_agency_ntd = merged_agency_ntd[['key', 'name', 'organization_type', 'organization_name', 'ntd_id_2022', 'agency', 'total_pop_adj', 'poverty_pop_adj', 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", - " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", - " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", - " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj', 'male_youth_adj', 'female_youth_adj',\n", - " 'veteran_pop_adj', 'unlinked_passenger_trips_upt', 'agency_voms']]" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "3dd76252-8511-4ca1-a32b-792c4ef20ab4", - "metadata": {}, - "outputs": [], - "source": [ - "#Store data in warehouse\n", - "with fs.open(f\"{GCS_FILE_PATH}/transit_provider_dashboard/merged_agency_ntd.parquet\", \"wb\") as f:\n", - " merged_agency_ntd.to_parquet(f, index=False)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "366986a8-b17b-4e19-b7c2-82608e14d250", - "metadata": {}, - "outputs": [], - "source": [ - "def export_gdf(gdf, filename: str, export_csv: bool = True):\n", - " # Update the path\n", - " gcs_target_path = f\"{GCS_FILE_PATH}/transit_provider_dashboard/\"\n", - "\n", - " # Export as Parquet\n", - " parquet_file = f\"{filename}.parquet\"\n", - " gdf.to_parquet(parquet_file, engine=\"pyarrow\", index=False)\n", - " \n", - " fs.put(\n", - " parquet_file,\n", - " f\"{gcs_target_path}{parquet_file}\",\n", - " token=credentials.token\n", - " )\n", - " os.remove(parquet_file)\n", - " print(f\"Saved Parquet: {gcs_target_path}{parquet_file}\")\n", - " \n", - " if export_csv:\n", - " # Export as CSV\n", - " csv_file = f\"{filename}.csv\"\n", - " gdf.to_csv(csv_file, index=False)\n", - " \n", - " fs.put(\n", - " csv_file,\n", - " f\"{gcs_target_path}{csv_file}\",\n", - " token=credentials.token\n", - " )\n", - " os.remove(csv_file)\n", - " print(f\"Saved CSV: {gcs_target_path}{csv_file}\")\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "e4f586a2-1591-45fe-9170-ea7df1ac1177", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved Parquet: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/merged_agency_ntd.parquet\n", - "Saved CSV: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/merged_agency_ntd.csv\n" - ] - } - ], - "source": [ - "# Store data in warehouse\n", - "export_gdf(merged_agency_ntd, \"merged_agency_ntd\")" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "d6cc3be8-b52b-4ec0-97c6-1fc3c7e108d9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved Parquet: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/organization_stops_buffered.parquet\n", - "Saved CSV: gs://calitp-analytics-data/data-analyses/transit_provider_dashboard/organization_stops_buffered.csv\n" - ] - } - ], - "source": [ - "# Store data in warehouse\n", - "export_gdf(orgs_stop_buffered, \"organization_stops_buffered\")" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "b7d230c1-b9ec-4bb7-80c7-f356470bf1e8", - "metadata": {}, - "outputs": [], - "source": [ - "GCS__PUBLIC_FILE_PATH = f\"{PUBLIC_GCS}transit_provider_dashboard/\"\n", - "\n", - "def export_gdf_public(gdf, filename: str, export_csv: bool = True, export_parquet: bool = True):\n", - " # --- GeoJSON ---\n", - " geojson_file = f\"{GCS__PUBLIC_FILE_PATH}{filename}.geojson\"\n", - " geojson_str = gdf.to_json()\n", - " with fsspec.open(geojson_file, 'w') as f_out:\n", - " f_out.write(geojson_str)\n", - " print(f\"Saved GeoJSON: {geojson_file}\")\n", - "\n", - " # --- Parquet ---\n", - " if export_parquet:\n", - " parquet_file = f\"{filename}.parquet\"\n", - " gdf.to_parquet(parquet_file, engine=\"pyarrow\", index=False)\n", - " with fsspec.open(f\"{GCS__PUBLIC_FILE_PATH}{filename}.parquet\", 'wb') as f_out:\n", - " with open(parquet_file, 'rb') as f_in:\n", - " f_out.write(f_in.read())\n", - " os.remove(parquet_file)\n", - " print(f\"Saved Parquet: {GCS__PUBLIC_FILE_PATH}{filename}.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "44cd8c32-05c5-4852-b58c-a8dff66cfba2", - "metadata": {}, - "outputs": [], - "source": [ - "def export_gdf_public_with_metadata(gdf, filename: str):\n", - " \"\"\"\n", - " Export GeoDataFrame to a single XLSX file that includes:\n", - " - Main data sheet\n", - " - Metadata sheet describing the columns\n", - " \"\"\"\n", - " \n", - " # ---- Metadata dictionary ----\n", - " metadata = {\n", - " \"key\": \"Unique identifier for the agency record.\",\n", - " \"name\": \"Organization name.\",\n", - " \"organization_type\": \"Type of organization (e.g., transit agency, nonprofit).\",\n", - " \"geometry\": \"Spatial geometry for the agency boundary or location.\",\n", - " \"ntd_id_2022\": \"National Transit Database ID for 2022 reporting.\",\n", - " \"agency\": \"Transit agency name.\",\n", - " \"gtfs_dataset_key\": \"Identifier linking to the GTFS dataset.\",\n", - " \"total_pop_adj\": \"Adjusted total population.\",\n", - " \"poverty_pop_adj\": \"Adjusted population living below the poverty level.\",\n", - " \"non_us_citizen_adj\": \"Adjusted count of non-U.S. citizens.\",\n", - " \"workers_with_no_car_adj\": \"Adjusted count of workers without access to a vehicle.\",\n", - " \"households_with_no_cars_adj\": \"Adjusted number of households without a vehicle.\",\n", - " \"disabled_pop_adj\": \"Adjusted population with disabilities.\",\n", - " \"public_asst_pop_adj\": \"Adjusted population receiving public assistance.\",\n", - " \"inc_extremelylow_adj\": \"Adjusted number of extremely low-income households.\",\n", - " \"inc_verylow_adj\": \"Adjusted number of very low-income households.\",\n", - " \"inc_low_adj\": \"Adjusted number of low-income households.\",\n", - " \"male_seniors_adj\": \"Adjusted male senior population (65+).\",\n", - " \"female_seniors_adj\": \"Adjusted female senior population (65+).\",\n", - " \"male_youth_adj\": \"Adjusted male youth population (15-24).\", \n", - " \"female_youth_adj\": \"Adjusted female youth population (15-24).\",\n", - " \"veteran_pop_adj\": \"Adjusted veteran population.\",\n", - " \"unlinked_passenger_trips_upt\": \"Annual number of unlinked passenger trips.\",\n", - " \"agency_voms\": \"Vehicles operated in maximum service (peak vehicles).\"\n", - " }\n", - "\n", - "\n", - "\n", - " metadata_df = pd.DataFrame(\n", - " [(col, metadata.get(col, \"\")) for col in gdf.columns],\n", - " columns=[\"column\", \"description\"]\n", - " )\n", - "\n", - " # ---- Local temporary file ----\n", - " xlsx_file = f\"{filename}.xlsx\"\n", - "\n", - " # ---- Write XLSX with data + metadata ----\n", - " with ExcelWriter(xlsx_file, engine=\"openpyxl\") as writer:\n", - " gdf.to_excel(writer, sheet_name=\"data\", index=False)\n", - " metadata_df.to_excel(writer, sheet_name=\"metadata\", index=False)\n", - "\n", - " # ---- Upload to GCS ----\n", - " gcs_path = f\"{GCS__PUBLIC_FILE_PATH}{filename}.xlsx\"\n", - "\n", - " with fsspec.open(gcs_path, \"wb\") as f_out:\n", - " with open(xlsx_file, \"rb\") as f_in:\n", - " f_out.write(f_in.read())\n", - "\n", - " os.remove(xlsx_file)\n", - "\n", - " print(f\"Saved XLSX with metadata: {gcs_path}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "83cbfb70-c4d7-4bb5-870f-3e3fbb3eef43", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved GeoJSON: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.geojson\n", - "Saved Parquet: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.parquet\n" - ] - } - ], - "source": [ - "export_gdf_public(merged_agency_ntd, \"transitprovider_acs_ridership_data\")" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "d0549fb6-e2cb-4e1a-b8ee-67ba22e6c295", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved XLSX with metadata: gs://calitp-publish-data-analysis/transit_provider_dashboard/transitprovider_acs_ridership_data.xlsx\n" - ] - } - ], - "source": [ - "export_gdf_public_with_metadata(merged_agency_ntd, \"transitprovider_acs_ridership_data\")" - ] - }, { "cell_type": "code", "execution_count": null, From 65a6799678957da59f083c1fec3ec759095098be Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 19:43:04 +0000 Subject: [PATCH 04/21] lehd data processing file added and acs data processing started --- .../ahsc_acs_2/06_data_processing.ipynb | 99 +++++-------------- 1 file changed, 22 insertions(+), 77 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 627a15078..760c029a5 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -524,35 +524,6 @@ "gdf_ridership.set_crs(epsg=4326, inplace=True)" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "a7157072-a9b2-4717-825b-a95a8f0fb7cc", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "533e2aa4-c5e1-4d91-8ed9-fbc9bc3f27e5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([nan], dtype=object)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdf_ridership_check.route_name.unique()" - ] - }, { "cell_type": "code", "execution_count": 12, @@ -740,91 +711,65 @@ { "cell_type": "code", "execution_count": 21, - "id": "a9d2c804-4ad5-41b1-bf59-c41220ac394f", + "id": "a39eacf0-644e-4956-a252-e6029f08d01b", "metadata": {}, "outputs": [], "source": [ - "orgs_with_routes = [\n", - " 'Foothill Transit', 'Gold Coast Transit', 'Golden Gate Transit', 'Long Beach Transit', 'Orange County Transportation Authority', 'SacRT Bus', 'Samtrans', 'SDMTS', \n", - " 'Culver City Bus', 'Big Blue Bus', 'Riverside Transit']\n", - "\n", - "orgs_stop_only = ['San Francisco Bay Area Rapid Transit District', 'Fresno County', 'Golden Gate Park Shuttle', 'Caltrain' ]\n", - "\n", - "# Split geometry_intersect based on organization\n", - "has_route = geometry_intersect[geometry_intersect['organization_name'].isin(orgs_with_routes)]\n", - "stop_only = geometry_intersect[geometry_intersect['organization_name'].isin(orgs_stop_only)]\n", - "\n", - "# Aggregate route-level stops\n", - "stop_acs_route = has_route.groupby(\n", - " ['organization_name', 'feed_key','stop_id','route_id','n_trips','n_routes','average_daily_boardings','average_daily_alightings','start_date','end_date', 'geometry'], \n", - " as_index=False\n", - ")[[f'{col}_adj' for col in cols_to_weight]].sum()\n", - "\n", - "# Aggregate stop-only stops\n", - "stop_acs_noroute = stop_only.groupby(\n", - " ['organization_name', 'feed_key','stop_id','n_trips','n_routes','average_daily_boardings','average_daily_alightings','start_date','end_date', 'geometry'], \n", + "stop_acs_rollup = geometry_intersect.groupby(\n", + " ['feed_key', 'stop_id', 'organization_name', 'geometry'], \n", " as_index=False\n", ")[[f'{col}_adj' for col in cols_to_weight]].sum()" ] }, { "cell_type": "code", - "execution_count": 22, - "id": "c18724f5-5b87-4b3e-9f68-5f36d121db86", - "metadata": {}, - "outputs": [], - "source": [ - "# Assign dummy route_id for stop-only\n", - "stop_acs_noroute['route_id'] = 'STOP_ONLY'\n", - "\n", - "# Reorder columns to match route-level table\n", - "stop_acs_noroute = stop_acs_noroute[stop_acs_route.columns]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "55f82c28-d04a-4f0b-8008-1dc98e970055", + "execution_count": 25, + "id": "3246e8fd-fda2-4e23-a2ab-fa04280256b7", "metadata": {}, "outputs": [], "source": [ - "stop_acs_rollup = pd.concat([stop_acs_route, stop_acs_noroute], ignore_index=True)" + "stop_route_df = gdf_ridership.merge(\n", + " stop_acs_rollup,\n", + " on=['feed_key', 'stop_id','organization_name'],\n", + " how='left'\n", + ")" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(['Big Blue Bus', 'Culver City Bus', 'Foothill Transit',\n", - " 'Gold Coast Transit', 'Golden Gate Transit', 'Long Beach Transit',\n", - " 'Orange County Transportation Authority', 'SDMTS', 'SacRT Bus',\n", - " 'Samtrans', 'Fresno County',\n", - " 'San Francisco Bay Area Rapid Transit District'], dtype=object)" + "array(['Gold Coast Transit', 'Samtrans', 'Golden Gate Transit', 'SDMTS',\n", + " 'SacRT Bus', 'Orange County Transportation Authority',\n", + " 'Long Beach Transit', 'Foothill Transit', 'Fresno County',\n", + " 'San Francisco Bay Area Rapid Transit District', 'Big Blue Bus',\n", + " 'Culver City Bus', 'Riverside Transit', 'Golden Gate Park Shuttle',\n", + " 'Caltrain'], dtype=object)" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "stop_acs_rollup.organization_name.unique()" + "stop_route_df.organization_name.unique()" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "b067dde4-2044-45b8-8234-8ada3f868bda", "metadata": {}, "outputs": [], "source": [ - "stop_acs_rollup_gdf = gpd.GeoDataFrame(\n", - " stop_acs_rollup, \n", + "stop_route_df = gpd.GeoDataFrame(\n", + " stop_route_df, \n", " geometry='geometry', \n", " crs=geometry_intersect.crs\n", ")" From 1b19e9275fb1704e8d68294632599b7f2517f3c7 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 23:02:55 +0000 Subject: [PATCH 05/21] ridership modeling started --- .../ahsc_acs_2/06_data_processing.ipynb | 261 +++++------------- 1 file changed, 69 insertions(+), 192 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 760c029a5..629c3f8a8 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -723,7 +723,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "id": "3246e8fd-fda2-4e23-a2ab-fa04280256b7", "metadata": {}, "outputs": [], @@ -737,7 +737,65 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, + "id": "740b84e5-b090-4285-bd3f-081869e2deb6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 151044 entries, 0 to 151043\n", + "Data columns (total 34 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 151044 non-null object \n", + " 1 feed_key 151044 non-null object \n", + " 2 route_id 143325 non-null object \n", + " 3 route_name 71252 non-null object \n", + " 4 stop_id 151044 non-null object \n", + " 5 stop_name 151044 non-null object \n", + " 6 stop_code 145743 non-null object \n", + " 7 n_trips 151044 non-null float64 \n", + " 8 n_routes 151044 non-null float64 \n", + " 9 pt_geom 151044 non-null object \n", + " 10 day_type 151044 non-null object \n", + " 11 average_daily_boardings 151044 non-null float64 \n", + " 12 average_daily_alightings 140796 non-null float64 \n", + " 13 start_date 151044 non-null object \n", + " 14 end_date 151044 non-null object \n", + " 15 geometry_x 151044 non-null geometry\n", + " 16 geometry_y 151044 non-null geometry\n", + " 17 total_pop_adj 151044 non-null float64 \n", + " 18 poverty_pop_adj 151044 non-null float64 \n", + " 19 non_us_citizen_adj 151044 non-null float64 \n", + " 20 workers_with_no_car_adj 151044 non-null float64 \n", + " 21 households_with_no_cars_adj 151044 non-null float64 \n", + " 22 disabled_pop_adj 151044 non-null float64 \n", + " 23 public_asst_pop_adj 151044 non-null float64 \n", + " 24 inc_extremelylow_adj 151044 non-null float64 \n", + " 25 inc_verylow_adj 151044 non-null float64 \n", + " 26 inc_low_adj 151044 non-null float64 \n", + " 27 male_seniors_adj 151044 non-null float64 \n", + " 28 female_seniors_adj 151044 non-null float64 \n", + " 29 veteran_pop_adj 151044 non-null float64 \n", + " 30 male_youth_adj 151044 non-null float64 \n", + " 31 female_youth_adj 151044 non-null float64 \n", + " 32 jobs_tot_adj 151044 non-null float64 \n", + " 33 ALAND_adj 151044 non-null float64 \n", + "dtypes: float64(21), geometry(2), object(11)\n", + "memory usage: 39.2+ MB\n" + ] + } + ], + "source": [ + "stop_route_df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ @@ -752,7 +810,7 @@ " 'Caltrain'], dtype=object)" ] }, - "execution_count": 26, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -763,25 +821,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "id": "b067dde4-2044-45b8-8234-8ada3f868bda", "metadata": {}, "outputs": [], "source": [ "stop_route_df = gpd.GeoDataFrame(\n", " stop_route_df, \n", - " geometry='geometry', \n", + " geometry='geometry_x', \n", " crs=geometry_intersect.crs\n", ")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Store data in warehouse\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_stop_ridershipdata.parquet\", \"wb\") as f:\n", + " stop_route_df.to_parquet(f, index=False)" + ] }, { "cell_type": "code", @@ -798,191 +860,6 @@ "metadata": {}, "outputs": [], "source": [] - }, - { - "cell_type": "markdown", - "id": "92eb767d-b477-4e14-ab51-fac6f615e621", - "metadata": {}, - "source": [ - "## Adjusting Population and Demographic Metrics for Stop Service Areas" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "e1e4d484-1748-4027-83b2-bbb8dc441ed9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nameorganization_typeorganization_namentd_id_yntd_id_2022_ystop_idstop_nameGEOIDFQgeometryarea_2total_pop_adjpoverty_pop_adjnon_us_citizen_adjworkers_with_no_car_adjhouseholds_with_no_cars_adjdisabled_pop_adjpublic_asst_pop_adjinc_extremelylow_adjinc_verylow_adjinc_low_adjmale_seniors_adjfemale_seniors_adjmale_youth_adjfemale_youth_adjveteran_pop_adj
0Alhambra ScheduleCity/TownCity of Alhambra90247902472619788Alamansor St & Los Higos St1400000US06037481103POLYGON ((174546.535 -434262.136, 174543.285 -...23.6308880.0893290.0147730.0170930.0020000.0031260.0083700.0315300.0238830.0234790.0095800.0053610.0095130.0037650.0049080.000958
1LA Metro Bus ScheduleIndependent AgencyLos Angeles County Metropolitan Transportation...9015490154142294Candlewood / Hayter1400000US06037481103POLYGON ((175957.387 -433744.848, 175878.515 -...747957.6190832827.411664467.600160541.01179063.30423198.946109264.920227997.972584755.926994743.159754303.221947169.697897301.094074119.160905155.33475230.322195
\n", - "
" - ], - "text/plain": [ - " name organization_type \\\n", - "0 Alhambra Schedule City/Town \n", - "1 LA Metro Bus Schedule Independent Agency \n", - "\n", - " organization_name ntd_id_y ntd_id_2022_y \\\n", - "0 City of Alhambra 90247 90247 \n", - "1 Los Angeles County Metropolitan Transportation... 90154 90154 \n", - "\n", - " stop_id stop_name GEOIDFQ \\\n", - "0 2619788 Alamansor St & Los Higos St 1400000US06037481103 \n", - "1 142294 Candlewood / Hayter 1400000US06037481103 \n", - "\n", - " geometry area_2 \\\n", - "0 POLYGON ((174546.535 -434262.136, 174543.285 -... 23.630888 \n", - "1 POLYGON ((175957.387 -433744.848, 175878.515 -... 747957.619083 \n", - "\n", - " total_pop_adj poverty_pop_adj non_us_citizen_adj \\\n", - "0 0.089329 0.014773 0.017093 \n", - "1 2827.411664 467.600160 541.011790 \n", - "\n", - " workers_with_no_car_adj households_with_no_cars_adj disabled_pop_adj \\\n", - "0 0.002000 0.003126 0.008370 \n", - "1 63.304231 98.946109 264.920227 \n", - "\n", - " public_asst_pop_adj inc_extremelylow_adj inc_verylow_adj inc_low_adj \\\n", - "0 0.031530 0.023883 0.023479 0.009580 \n", - "1 997.972584 755.926994 743.159754 303.221947 \n", - "\n", - " male_seniors_adj female_seniors_adj male_youth_adj female_youth_adj \\\n", - "0 0.005361 0.009513 0.003765 0.004908 \n", - "1 169.697897 301.094074 119.160905 155.334752 \n", - "\n", - " veteran_pop_adj \n", - "0 0.000958 \n", - "1 30.322195 " - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Stop level demography data \n", - "filtered_final_data = geometry_intersect[['name', 'organization_type', 'organization_name', 'ntd_id_y', 'ntd_id_2022_y', 'stop_id', 'stop_name', \n", - " 'GEOIDFQ', 'geometry', 'area_2',\t'total_pop_adj',\t'poverty_pop_adj',\t\n", - " 'non_us_citizen_adj',\t'workers_with_no_car_adj',\t'households_with_no_cars_adj',\t'disabled_pop_adj',\t\n", - " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\t'inc_low_adj',\t'male_seniors_adj',\t\n", - " 'female_seniors_adj', 'male_youth_adj', 'female_youth_adj', 'veteran_pop_adj']]\n", - "\n", - "filtered_final_data.head(2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "60431a4d-8e6e-4ee1-89b3-569d08653582", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 03556558fc9bde65b121c445f745debfffdf0b70 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 19 Mar 2026 23:37:13 +0000 Subject: [PATCH 06/21] model check --- ahsc_grant/ahsc_acs_2/06_data_processing.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 629c3f8a8..03cfadc7d 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -723,7 +723,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 22, "id": "3246e8fd-fda2-4e23-a2ab-fa04280256b7", "metadata": {}, "outputs": [], @@ -737,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 23, "id": "740b84e5-b090-4285-bd3f-081869e2deb6", "metadata": {}, "outputs": [ @@ -795,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 24, "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ @@ -810,7 +810,7 @@ " 'Caltrain'], dtype=object)" ] }, - "execution_count": 29, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -821,7 +821,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "id": "b067dde4-2044-45b8-8234-8ada3f868bda", "metadata": {}, "outputs": [], @@ -835,13 +835,13 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 27, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], "source": [ "# Store data in warehouse\n", - "with fs.open(f\"{GCS_FILE_PATH}/census_stop_ridershipdata.parquet\", \"wb\") as f:\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"wb\") as f:\n", " stop_route_df.to_parquet(f, index=False)" ] }, From 8745ad51512187dbf31b759941455658aebd2dba Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 26 Mar 2026 21:31:45 +0000 Subject: [PATCH 07/21] ols, ppml and negative binomial models explored --- .../ahsc_acs_2/04_prepare_acs_data.ipynb | 106 +- .../ahsc_acs_2/06_data_processing.ipynb | 37 +- .../ahsc_acs_2/07_Model_exploration.ipynb | 984 ++++++++++++++++++ ahsc_grant/ahsc_acs_2/Notes.md | 14 + 4 files changed, 1094 insertions(+), 47 deletions(-) create mode 100644 ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb create mode 100644 ahsc_grant/ahsc_acs_2/Notes.md diff --git a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb index a0f7e9db8..d413424e5 100644 --- a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb +++ b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb @@ -256,6 +256,20 @@ { "cell_type": "code", "execution_count": 14, + "id": "7a3c623b-0e1a-4d1a-b6c5-002660fdee87", + "metadata": {}, + "outputs": [], + "source": [ + "census_data['inc_total_lowincome'] = (\n", + " census_data['inc_extremelylow'] +\n", + " census_data['inc_verylow'] +\n", + " census_data['inc_low']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, "id": "533cad22-6f5a-44c0-bacd-9cd7424d27e3", "metadata": {}, "outputs": [], @@ -267,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "afbfea83-8c4b-4d31-9012-db3764b55fd5", "metadata": {}, "outputs": [], @@ -278,7 +292,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, + "id": "1c1f974f-923f-4d22-a38c-238ac609b33b", + "metadata": {}, + "outputs": [], + "source": [ + "census_data['total_seniors'] = census_data['male_seniors'] + census_data['female_seniors']\n", + "census_data['total_youth'] = census_data['male_youth'] + census_data['female_youth']" + ] + }, + { + "cell_type": "code", + "execution_count": 18, "id": "1b1d6c35-8f48-45b2-97f1-4e7326f9ce1d", "metadata": {}, "outputs": [], @@ -290,7 +315,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "id": "3b5e0c7c-e345-4b99-84b9-c1da87692aff", "metadata": {}, "outputs": [ @@ -358,10 +383,13 @@ " inc_extremelylow\n", " inc_verylow\n", " inc_low\n", + " inc_total_lowincome\n", " male_seniors\n", " female_seniors\n", " male_youth\n", " female_youth\n", + " total_seniors\n", + " total_youth\n", " disabled_pop\n", " \n", " \n", @@ -411,10 +439,13 @@ " 397\n", " 244\n", " 199\n", + " 840\n", " 423\n", " 491\n", " 45\n", " 72\n", + " 914\n", + " 117\n", " 313\n", " \n", " \n", @@ -462,10 +493,13 @@ " 234\n", " 219\n", " 109\n", + " 562\n", " 249\n", " 285\n", " 46\n", " 37\n", + " 534\n", + " 83\n", " 168\n", " \n", " \n", @@ -513,10 +547,13 @@ " 884\n", " 651\n", " 439\n", + " 1974\n", " 332\n", " 677\n", " 281\n", " 157\n", + " 1009\n", + " 438\n", " 459\n", " \n", " \n", @@ -564,10 +601,13 @@ " 579\n", " 422\n", " 265\n", + " 1266\n", " 271\n", " 360\n", " 71\n", " 74\n", + " 631\n", + " 145\n", " 339\n", " \n", " \n", @@ -615,10 +655,13 @@ " 591\n", " 598\n", " 631\n", + " 1820\n", " 174\n", " 430\n", " 231\n", " 151\n", + " 604\n", + " 382\n", " 270\n", " \n", " \n", @@ -696,22 +739,22 @@ "3 1803 88 Alameda 579 422 \n", "4 1655 115 Alameda 591 598 \n", "\n", - " inc_low male_seniors female_seniors male_youth female_youth \\\n", - "0 199 423 491 45 72 \n", - "1 109 249 285 46 37 \n", - "2 439 332 677 281 157 \n", - "3 265 271 360 71 74 \n", - "4 631 174 430 231 151 \n", + " inc_low inc_total_lowincome male_seniors female_seniors male_youth \\\n", + "0 199 840 423 491 45 \n", + "1 109 562 249 285 46 \n", + "2 439 1974 332 677 281 \n", + "3 265 1266 271 360 71 \n", + "4 631 1820 174 430 231 \n", "\n", - " disabled_pop \n", - "0 313 \n", - "1 168 \n", - "2 459 \n", - "3 339 \n", - "4 270 " + " female_youth total_seniors total_youth disabled_pop \n", + "0 72 914 117 313 \n", + "1 37 534 83 168 \n", + "2 157 1009 438 459 \n", + "3 74 631 145 339 \n", + "4 151 604 382 270 " ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -722,7 +765,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "id": "e2341578-5d79-4c2f-a6a5-ee556abcbc17", "metadata": {}, "outputs": [ @@ -732,7 +775,7 @@ "text": [ "\n", "RangeIndex: 9129 entries, 0 to 9128\n", - "Data columns (total 48 columns):\n", + "Data columns (total 51 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 total_pop 9129 non-null int64 \n", @@ -778,13 +821,16 @@ " 40 inc_extremelylow 9129 non-null int64 \n", " 41 inc_verylow 9129 non-null int64 \n", " 42 inc_low 9129 non-null int64 \n", - " 43 male_seniors 9129 non-null int64 \n", - " 44 female_seniors 9129 non-null int64 \n", - " 45 male_youth 9129 non-null int64 \n", - " 46 female_youth 9129 non-null int64 \n", - " 47 disabled_pop 9129 non-null int64 \n", - "dtypes: int64(46), object(2)\n", - "memory usage: 3.3+ MB\n" + " 43 inc_total_lowincome 9129 non-null int64 \n", + " 44 male_seniors 9129 non-null int64 \n", + " 45 female_seniors 9129 non-null int64 \n", + " 46 male_youth 9129 non-null int64 \n", + " 47 female_youth 9129 non-null int64 \n", + " 48 total_seniors 9129 non-null int64 \n", + " 49 total_youth 9129 non-null int64 \n", + " 50 disabled_pop 9129 non-null int64 \n", + "dtypes: int64(49), object(2)\n", + "memory usage: 3.6+ MB\n" ] } ], @@ -794,7 +840,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "id": "6806f203-fc02-402a-97de-ed6ef73df0dc", "metadata": {}, "outputs": [ @@ -816,7 +862,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "id": "d55b0985-e8f2-45e4-829f-5cc4f7f51241", "metadata": {}, "outputs": [ @@ -835,7 +881,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "id": "6c31979d-b0b4-4e12-93e4-7ace297b5c8b", "metadata": {}, "outputs": [], @@ -846,7 +892,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "id": "2ed3d76d-d51b-4e10-8045-6ce49845da53", "metadata": {}, "outputs": [], @@ -857,7 +903,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "id": "e3374031-fae9-4711-8407-b59aef3093dd", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 03cfadc7d..d504f83c0 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -664,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 27, "id": "1a1d6c3d-e4a0-4bf1-b1a7-130fb18f336e", "metadata": {}, "outputs": [], @@ -674,7 +674,7 @@ " 'total_pop', 'poverty_pop', 'non_us_citizen', 'workers_with_no_car', \n", " 'households_with_no_cars', 'disabled_pop', 'public_asst_pop', \n", " 'inc_extremelylow', 'inc_verylow', 'inc_low', \n", - " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'female_youth', 'jobs_tot', 'ALAND'\n", + " 'male_seniors', 'female_seniors', 'veteran_pop', 'male_youth', 'inc_total_lowincome', 'female_youth', 'total_seniors', 'jobs_tot', 'total_youth', 'ALAND'\n", "]\n", "\n", "# Apply area_ratio\n", @@ -684,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 28, "id": "203d6f46-a2f3-4b5c-b557-4ab2583a1441", "metadata": {}, "outputs": [ @@ -699,7 +699,7 @@ " 'Caltrain'], dtype=object)" ] }, - "execution_count": 20, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -710,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 29, "id": "a39eacf0-644e-4956-a252-e6029f08d01b", "metadata": {}, "outputs": [], @@ -723,7 +723,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 30, "id": "3246e8fd-fda2-4e23-a2ab-fa04280256b7", "metadata": {}, "outputs": [], @@ -737,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 31, "id": "740b84e5-b090-4285-bd3f-081869e2deb6", "metadata": {}, "outputs": [ @@ -747,7 +747,7 @@ "text": [ "\n", "RangeIndex: 151044 entries, 0 to 151043\n", - "Data columns (total 34 columns):\n", + "Data columns (total 37 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 organization_name 151044 non-null object \n", @@ -781,11 +781,14 @@ " 28 female_seniors_adj 151044 non-null float64 \n", " 29 veteran_pop_adj 151044 non-null float64 \n", " 30 male_youth_adj 151044 non-null float64 \n", - " 31 female_youth_adj 151044 non-null float64 \n", - " 32 jobs_tot_adj 151044 non-null float64 \n", - " 33 ALAND_adj 151044 non-null float64 \n", - "dtypes: float64(21), geometry(2), object(11)\n", - "memory usage: 39.2+ MB\n" + " 31 inc_total_lowincome_adj 151044 non-null float64 \n", + " 32 female_youth_adj 151044 non-null float64 \n", + " 33 total_seniors_adj 151044 non-null float64 \n", + " 34 jobs_tot_adj 151044 non-null float64 \n", + " 35 total_youth_adj 151044 non-null float64 \n", + " 36 ALAND_adj 151044 non-null float64 \n", + "dtypes: float64(24), geometry(2), object(11)\n", + "memory usage: 42.6+ MB\n" ] } ], @@ -795,7 +798,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 32, "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ @@ -810,7 +813,7 @@ " 'Caltrain'], dtype=object)" ] }, - "execution_count": 24, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -821,7 +824,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 33, "id": "b067dde4-2044-45b8-8234-8ada3f868bda", "metadata": {}, "outputs": [], @@ -835,7 +838,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 34, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb new file mode 100644 index 000000000..cb71750ce --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -0,0 +1,984 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5e29508b-a83d-4db6-8169-bc02716376c3", + "metadata": {}, + "source": [ + "Ridership ≈ Service × Demand × Accessibility" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1a78891f-6527-4e6b-a9a0-a0987c17ec23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "680b8ce3-5e22-4c9d-ad18-a46748b6f1b6", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "pd.set_option('display.max_columns', None)\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "import statsmodels.api as sm\n", + "import numpy as np\n", + "from scipy.stats import skew\n", + "\n", + "\n", + "import statsmodels.api as sm\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0b8ddae9-3e5b-4ac3-91cd-c09460c4485f", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "be790e00-9dc6-4977-95de-b6bba8507a54", + "metadata": {}, + "outputs": [], + "source": [ + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "faf985a0-8ade-4830-8eb6-739b1254e55c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keyroute_idroute_namestop_idstop_namestop_coden_tripsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_dategeometry_xgeometry_ytotal_pop_adjpoverty_pop_adjnon_us_citizen_adjworkers_with_no_car_adjhouseholds_with_no_cars_adjdisabled_pop_adjpublic_asst_pop_adjinc_extremelylow_adjinc_verylow_adjinc_low_adjmale_seniors_adjfemale_seniors_adjveteran_pop_adjmale_youth_adjinc_total_lowincome_adjfemale_youth_adjtotal_seniors_adjjobs_tot_adjtotal_youth_adjALAND_adjis_route_leveln_routes_effective
0Gold Coast Transit3cb676436aad669e52042c0e97a9a05116NoneVNACLR1.None32.01.0POINT(-119.294028 34.343645)Weekday0.03.02025-05-012025-05-31POINT (64936.582 -407800.219)POLYGON ((65737.380 -407879.090, 65725.793 -40...23.4213822.9886192.4739630.3340750.2708722.6003696.8982024.9840414.5325882.1218291.4807661.5168820.6591210.74038311.6384592.0947422.9976484.2075422.8351251.092105e+0610.0
1Gold Coast Transit3cb676436aad669e52042c0e97a9a05116NoneVNACLR1.None32.01.0POINT(-119.294028 34.343645)Weekday0.03.02025-05-012025-05-31POINT (64936.582 -407800.219)POLYGON ((65015.454 -408601.016, 64936.582 -40...19.3383291.6170580.5852790.1025750.2413523.2522188.3749144.4348435.0925271.4420782.4557572.8238181.3395040.95937410.9694480.6456175.2795752.5945341.6049918.775517e+0510.0
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key route_id route_name \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 None \n", + "1 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 None \n", + "\n", + " stop_id stop_name stop_code n_trips n_routes \\\n", + "0 VNACLR1 . None 32.0 1.0 \n", + "1 VNACLR1 . None 32.0 1.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "0 POINT(-119.294028 34.343645) Weekday 0.0 \n", + "1 POINT(-119.294028 34.343645) Weekday 0.0 \n", + "\n", + " average_daily_alightings start_date end_date \\\n", + "0 3.0 2025-05-01 2025-05-31 \n", + "1 3.0 2025-05-01 2025-05-31 \n", + "\n", + " geometry_x \\\n", + "0 POINT (64936.582 -407800.219) \n", + "1 POINT (64936.582 -407800.219) \n", + "\n", + " geometry_y total_pop_adj \\\n", + "0 POLYGON ((65737.380 -407879.090, 65725.793 -40... 23.421382 \n", + "1 POLYGON ((65015.454 -408601.016, 64936.582 -40... 19.338329 \n", + "\n", + " poverty_pop_adj non_us_citizen_adj workers_with_no_car_adj \\\n", + "0 2.988619 2.473963 0.334075 \n", + "1 1.617058 0.585279 0.102575 \n", + "\n", + " households_with_no_cars_adj disabled_pop_adj public_asst_pop_adj \\\n", + "0 0.270872 2.600369 6.898202 \n", + "1 0.241352 3.252218 8.374914 \n", + "\n", + " inc_extremelylow_adj inc_verylow_adj inc_low_adj male_seniors_adj \\\n", + "0 4.984041 4.532588 2.121829 1.480766 \n", + "1 4.434843 5.092527 1.442078 2.455757 \n", + "\n", + " female_seniors_adj veteran_pop_adj male_youth_adj \\\n", + "0 1.516882 0.659121 0.740383 \n", + "1 2.823818 1.339504 0.959374 \n", + "\n", + " inc_total_lowincome_adj female_youth_adj total_seniors_adj jobs_tot_adj \\\n", + "0 11.638459 2.094742 2.997648 4.207542 \n", + "1 10.969448 0.645617 5.279575 2.594534 \n", + "\n", + " total_youth_adj ALAND_adj is_route_level n_routes_effective \n", + "0 2.835125 1.092105e+06 1 0.0 \n", + "1 1.604991 8.775517e+05 1 0.0 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stop_route_df.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f7c88d39-b2b4-46b0-9ef4-b3ea49fb09ea", + "metadata": {}, + "outputs": [], + "source": [ + "stop_route_df['is_route_level'] = stop_route_df['organization_name'].isin([\n", + " 'Foothill Transit',\n", + " 'Gold Coast Transit',\n", + " 'Golden Gate Transit',\n", + " 'Long Beach Transit',\n", + " 'Orange County Transportation Authority',\n", + " 'SacRT Bus',\n", + " 'Samtrans',\n", + " 'SDMTS',\n", + " 'Culver City Bus',\n", + " 'Big Blue Bus',\n", + " 'Riverside Transit'\n", + "]).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2b189045-61bc-4910-b093-78e9f5e79f97", + "metadata": {}, + "outputs": [], + "source": [ + "stop_route_df['n_routes_effective'] = stop_route_df['n_routes'] * (1 - stop_route_df['is_route_level'])" + ] + }, + { + "cell_type": "markdown", + "id": "c9738ec6-6efb-48cc-b323-77517d639525", + "metadata": {}, + "source": [ + "### Log-linear Regression Model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "51b66e14-9371-46ab-810b-73e577b142aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings R-squared: 0.268\n", + "Model: OLS Adj. R-squared: 0.268\n", + "Method: Least Squares F-statistic: 1.383e+04\n", + "Date: Thu, 26 Mar 2026 Prob (F-statistic): 0.00\n", + "Time: 19:13:53 Log-Likelihood: -1.1223e+06\n", + "No. Observations: 151044 AIC: 2.245e+06\n", + "Df Residuals: 151039 BIC: 2.245e+06\n", + "Df Model: 4 \n", + "Covariance Type: nonrobust \n", + "===============================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-----------------------------------------------------------------------------------------------\n", + "const -136.7256 1.931 -70.795 0.000 -140.511 -132.940\n", + "n_trips 2.3449 0.023 102.025 0.000 2.300 2.390\n", + "n_routes_effective 459.8605 2.861 160.725 0.000 454.253 465.468\n", + "total_pop_adj 0.0010 0.000 2.639 0.008 0.000 0.002\n", + "households_with_no_cars_adj 0.0293 0.003 11.352 0.000 0.024 0.034\n", + "==============================================================================\n", + "Omnibus: 386596.460 Durbin-Watson: 0.231\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 20197847190.183\n", + "Skew: 28.630 Prob(JB): 0.00\n", + "Kurtosis: 1793.542 Cond. No. 1.22e+04\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The condition number is large, 1.22e+04. This might indicate that there are\n", + "strong multicollinearity or other numerical problems.\n" + ] + } + ], + "source": [ + "# Log-linear regression\n", + "# Dependent variable: log('average_daily_boardings')\n", + "# Predictors: n_trips, n_routes, total_pop_adj, households_with_no_cars_adj, jobs_tot_adj\n", + "\n", + "# Copy the dataframe\n", + "df = stop_route_df.copy()\n", + "\n", + "# 2. Create log dependent variable\n", + "# Replace 0 with NaN BEFORE log (log(0) = -inf)\n", + "df['log_boardings'] = np.log(df['average_daily_boardings'].replace(0, np.nan))\n", + "\n", + "# 3. Select only rows with all needed variables\n", + "df = df.dropna(subset=[\n", + " 'average_daily_boardings',\n", + " 'n_trips',\n", + " 'n_routes_effective',\n", + " 'total_pop_adj',\n", + " 'households_with_no_cars_adj'\n", + "])\n", + "\n", + "# 4. Define Y and X\n", + "y = df['average_daily_boardings']\n", + "\n", + "X = df[['n_trips', 'n_routes_effective',\n", + " 'total_pop_adj', 'households_with_no_cars_adj']]\n", + "\n", + "# 5. Add constant\n", + "X = sm.add_constant(X)\n", + "\n", + "# 6. Fit model\n", + "model = sm.OLS(y, X).fit()\n", + "\n", + "# 7. Show results\n", + "print(model.summary())" + ] + }, + { + "cell_type": "markdown", + "id": "ad40b63a-1a6f-4543-90f6-d009244e5d19", + "metadata": {}, + "source": [ + "- About 26.8% of the variation in dependent variable (here, stop-level ridership) is explained by the predictors in the model.\n", + "- Skew = 28.63 → Residuals are extremely asymmetric, violating normality.\n", + "- Kurtosis = 1793.542 → Residuals have ultra‑heavy tails, far from a normal distribution.\n", + "- JB statistic = 20 billion → The Jarque–Bera test overwhelmingly rejects normality.\n", + "- Durbin–Watson = 0.231 → Strong positive autocorrelation remains in the residuals.\n", + "- Condition number = 1.22e+04 → Predictors have scaling issues and possible multicollinearity." + ] + }, + { + "cell_type": "markdown", + "id": "e92ba749-d788-45fd-9376-ff4e16fcabc5", + "metadata": {}, + "source": [ + "### Checking Multicollinearity using VIF" + ] + }, + { + "cell_type": "markdown", + "id": "c15e07de-0e74-4dc8-b0c0-2bc6b4f272bf", + "metadata": {}, + "source": [ + "VIF checks multicollinearity (correlation among predictors)\n", + "\n", + "- Idea:\n", + "If a variable can be well explained by other predictors,\n", + "its coefficient becomes unstable and its standard error increases\n", + "- Interpretation:\n", + "VIF ≈ 1 → no correlation (good);\n", + "VIF > 5 → moderate concern;\n", + "VIF > 10 → serious multicollinearity\n", + "- Key point:\n", + "High VIF doesn't bias coefficients, but makes them noisy and hard to interpret" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "35f60d93-ebce-4d2d-af7c-bc203e093dc9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " variable VIF\n", + "0 const 3.381647\n", + "1 n_trips 1.157433\n", + "2 n_routes_effective 1.153209\n", + "3 total_pop_adj 1.688035\n", + "4 households_with_no_cars_adj 1.686701\n" + ] + } + ], + "source": [ + "# Selecting only numeric regressors (Ridership ≈ Service × Demand × Accessibility)\n", + "X = stop_route_df[\n", + " ['n_trips', 'n_routes_effective', 'total_pop_adj', 'households_with_no_cars_adj' ]\n", + "].copy()\n", + "\n", + "# Add constant\n", + "X = sm.add_constant(X)\n", + "\n", + "vif_df = pd.DataFrame()\n", + "vif_df[\"variable\"] = X.columns\n", + "vif_df[\"VIF\"] = [\n", + " variance_inflation_factor(X.values, i)\n", + " for i in range(X.shape[1])\n", + "]\n", + "\n", + "print(vif_df)" + ] + }, + { + "cell_type": "markdown", + "id": "168eabd3-b429-4cb9-b10d-1049eb9b0581", + "metadata": {}, + "source": [ + "All predictors have low VIFs (≈1–1.8), which means very little multicollinearity among chosen variables.\n", + "The model’s coefficients should therefore be stable and interpretable, with no inflation of standard errors.\n", + "The high VIF on the constant is not meaningful and can be ignored." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0dc85524-799b-4f3d-a98f-9d414c63cd0d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 151044.000000\n", + "mean 51.376269\n", + "std 477.085033\n", + "min 0.000000\n", + "25% 1.590909\n", + "50% 6.285714\n", + "75% 20.531565\n", + "max 41893.868537\n", + "Name: average_daily_boardings, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stop_route_df['average_daily_boardings'].describe()" + ] + }, + { + "cell_type": "markdown", + "id": "89c7f80e-f8ae-4207-9ede-f719f75434ce", + "metadata": {}, + "source": [ + "Data is highly skewed (28.63) .\n", + "Skewed data is data that isn’t evenly distributed around the center, values bunch up on one side and stretch into a long tail.\n", + "This means a few stops have very high boardings and push the distribution out into a long tail.\n", + "75% of stops board ≤ 20 people" + ] + }, + { + "cell_type": "markdown", + "id": "b0842ba3-4716-4acf-ba51-01fa3662fb3f", + "metadata": {}, + "source": [ + "Possible solution: Use a count model (Poisson or Negative Binomial) \n", + "Other models to check:\n", + "- Poisson\n", + "- Negative Binomial (handles overdispersion better)\n", + "- Zero‑inflated Poisson (if many zeros)\n", + "- Zero‑inflated NB (most flexible)" + ] + }, + { + "cell_type": "markdown", + "id": "6f9fc777-8170-4c3a-a3c3-9935bb8e1f44", + "metadata": {}, + "source": [ + "### Poisson Model" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4a507286-b0a3-49ec-b6e2-6e30d5714f30", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 151044\n", + "Model: GLM Df Residuals: 151039\n", + "Model Family: Poisson Df Model: 4\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -9.3019e+06\n", + "Date: Thu, 26 Mar 2026 Deviance: 1.8065e+07\n", + "Time: 19:13:54 Pearson chi2: 8.65e+07\n", + "No. Iterations: 8 Pseudo R-squ. (CS): 1.000\n", + "Covariance Type: nonrobust \n", + "===============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-----------------------------------------------------------------------------------------------\n", + "const 2.2794 0.001 3383.521 0.000 2.278 2.281\n", + "n_trips 0.0163 3.25e-06 5028.930 0.000 0.016 0.016\n", + "n_routes_effective -0.2682 0.000 -1159.847 0.000 -0.269 -0.268\n", + "total_pop_adj -3.301e-05 1.69e-07 -195.688 0.000 -3.33e-05 -3.27e-05\n", + "households_with_no_cars_adj 0.0003 8.96e-07 370.277 0.000 0.000 0.000\n", + "===============================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df.copy()\n", + "\n", + "# 2. Select needed variables (drop missing)\n", + "df = df.dropna(subset=[\n", + " 'average_daily_boardings',\n", + " 'n_trips', 'n_routes_effective',\n", + " 'total_pop_adj', 'households_with_no_cars_adj'\n", + "])\n", + "\n", + "# 3. Define Y and X\n", + "y = df['average_daily_boardings']\n", + "\n", + "X = df[['n_trips', 'n_routes_effective',\n", + " 'total_pop_adj', 'households_with_no_cars_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# 5. Fit Poisson GLM\n", + "poisson_model = sm.GLM(y, X, family=sm.families.Poisson()).fit()\n", + "\n", + "# 6. Output summary\n", + "print(poisson_model.summary())\n" + ] + }, + { + "cell_type": "markdown", + "id": "3b8e82ab-6589-4803-b598-54970d084eff", + "metadata": {}, + "source": [ + "This Poisson model fits very poorly: the Pearson chi‑square is huge, meaning the data are heavily over‑dispersed and the Poisson assumptions break.\n", + "- The coefficient for n_trips (0.0163) means each extra trip increases expected ridership by about 1.6%.\n", + "- n_routes (–0.268) is negative, which is unrealistic and indicates model misspecification due to over‑dispersion.\n", + "- total_pop_adj is negative, also unrealistic — another sign the Poisson model is not appropriate.\n", + "- households_with_no_cars_adj is positive, meaning more zero‑car households predict higher ridership.\n", + "Overall: the Poisson model’s signs are distorted." + ] + }, + { + "cell_type": "markdown", + "id": "038cea10-05be-4cbe-9359-a174e014d6b3", + "metadata": {}, + "source": [ + "Pearson chi‑square = 4.77e+07 and Degrees of freedom ≈ 143325.\n", + "Hence, \n", + "Dispersion estimate = Pearson χ² / df; 8.30e+07 / 151,044 ≈ 332.8\n", + "\n", + "A valid Poisson model should have dispersion ≈ 1. Dispersion ≈ 550, which means:\n", + "Poisson model is severely overdispersed. >1 → overdispersion (variance is larger than the model assumes).\n", + "\n", + "Variance >> mean:\n", + "- Poisson standard errors become too small\n", + "- p‑values become artificially tiny\n", + "- coefficients look falsely “precise”\n", + "- model fit is misleading" + ] + }, + { + "cell_type": "markdown", + "id": "f2038998-3c28-4fe5-ad47-a4560787d1d6", + "metadata": {}, + "source": [ + "### Negative Binomial Model " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "489a8955-f107-4a22-9601-847a29165d9e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 151044\n", + "Model: GLM Df Residuals: 151039\n", + "Model Family: NegativeBinomial Df Model: 4\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -5.7523e+05\n", + "Date: Thu, 26 Mar 2026 Deviance: 2.7721e+05\n", + "Time: 19:13:56 Pearson chi2: 8.17e+05\n", + "No. Iterations: 16 Pseudo R-squ. (CS): 0.8978\n", + "Covariance Type: nonrobust \n", + "===============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-----------------------------------------------------------------------------------------------\n", + "const 1.1117 0.005 219.090 0.000 1.102 1.122\n", + "n_trips 0.0245 5.86e-05 417.746 0.000 0.024 0.025\n", + "n_routes_effective 0.3380 0.007 47.796 0.000 0.324 0.352\n", + "total_pop_adj 2.296e-05 9.5e-07 24.179 0.000 2.11e-05 2.48e-05\n", + "households_with_no_cars_adj 4.162e-05 6.65e-06 6.259 0.000 2.86e-05 5.47e-05\n", + "===============================================================================================\n" + ] + } + ], + "source": [ + "# Same X and y as Poisson\n", + "nb_model = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model.summary())" + ] + }, + { + "cell_type": "markdown", + "id": "9543a788-bd4d-45dd-88fa-a012f6ac8486", + "metadata": {}, + "source": [ + "The Negative Binomial model behaves much better than the Poisson model because it corrects the strongly overdispersed nature of ridership data. After switching to a Negative Binomial model, the dispersion dropped to a reasonable level (≈5), the standard errors became realistic, the z‑values returned to interpretable ranges, and the overall fit stabilized. \n", + "\n", + "\n", + "The NB model is used when:\n", + "- counts vary wildly\n", + "- some stops have way more riders than others\n", + "- data is highly skewed\n", + "- there are outliers or “hot spots”\n", + "\n", + "Variance > Mean\n", + "This matches real transit ridership perfectly." + ] + }, + { + "cell_type": "markdown", + "id": "b4aa8620-a1ba-4cd0-88ba-4b45a3d8ac3a", + "metadata": {}, + "source": [ + "In the above model,\n", + "Pseudo R² (Cragg‑Uhler / Nagelkerke): 0.8978\n", + "Very high — the predictors explain a large proportion of the variation in ridership.\n", + "For transit ridership data (often noisy and over‑dispersed), this is exceptionally strong.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "9d86c3c2-ba00-4f62-b433-350da6fb93d1", + "metadata": {}, + "source": [ + "### Variables Interpretation" + ] + }, + { + "cell_type": "markdown", + "id": "3398af4b-6234-48ea-9200-e06d402865fe", + "metadata": {}, + "source": [ + "1. n_trips coefficient = 0.0245\n", + "Interpretation: Each additional trip serving the stop increases expected daily boardings by:\n", + "exp(0.0245) − 1 ≈ 2.48%\n", + "\n", + "2. n_routes_effective coefficient = 0.3380\n", + "Interpretation: For stops/agencies where n_routes_effective > 0 (aggregated stop-level data), each additional route increases expected daily boardings by:\n", + "exp(0.3380)−1 ≈ 40.2%\n", + "Important: This coefficient only applies to stops/organizations where aggregated route data exists.\n", + "Route-level agencies (is_route_level = 1) have n_routes_effective = 0, so this coefficient does not affect them.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "22118574-ccbb-47ac-ad85-a92cc2babf7d", + "metadata": {}, + "source": [ + "3. total_pop_adj – Population in stop buffer\n", + "total_pop_adj represents the estimated number of residents physically inside a stop’s 600 m buffer, after adjusting each census tract by the fraction of its area that overlaps the buffer.\n", + "Example: if 10% of a tract lies inside a stop’s buffer, 10% of the tract’s population is assigned to that stop.\n", + "Coefficient interpretation:\n", + "Model coefficient: 2.296e-05\n", + "Effect per additional person: exp(2.296𝑒−05)−1≈0.0023% increase in expected daily boardings per person\n", + "\n", + " This looks tiny for one person, but stop buffers usually contain hundreds or thousands of people.\n", + " Scaling to realistic population changes:\n", + "\n", + " +1,000 residents in the stop buffer: exp(1000×2.296𝑒−05)−1 ≈ 2.32% increase in ridership\n", + " +10,000 residents in the stop buffer: exp(10,000×2.296𝑒−05)−1 ≈ 25.8% increase in ridership" + ] + }, + { + "cell_type": "markdown", + "id": "6f10edb6-92ca-4719-8574-599c9b2139a1", + "metadata": {}, + "source": [ + "4. households_with_no_cars_adj (coef = 4.162e-05)\n", + "households_with_no_cars_adj is the estimated number of zero‑car households within the stop catchment, computed the same area-weighted way.\n", + "\n", + "For each additional zero-car household in the catchment:\n", + "exp(4.162e-05) – 1 ≈ 0.00416% increase in expected boardings\n", + "\n", + "- +100 zero-car households in buffer : ≈ 0.42% ridership increase\n", + "- +1,000 zero-car households : ≈ 4.2% ridership increase" + ] + }, + { + "cell_type": "markdown", + "id": "c449b3d1-6cdc-4899-9cea-11d504a504af", + "metadata": {}, + "source": [ + "#### Adding more variables in the model" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "252de74b-d050-4c06-b526-3110aff74815", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 151044\n", + "Model: GLM Df Residuals: 151038\n", + "Model Family: NegativeBinomial Df Model: 5\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -5.9748e+05\n", + "Date: Thu, 26 Mar 2026 Deviance: 3.2170e+05\n", + "Time: 19:26:30 Pearson chi2: 1.26e+06\n", + "No. Iterations: 20 Pseudo R-squ. (CS): 0.8628\n", + "Covariance Type: nonrobust \n", + "===============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-----------------------------------------------------------------------------------------------\n", + "n_trips 0.0358 3.86e-05 926.555 0.000 0.036 0.036\n", + "n_routes_effective 0.3503 0.007 50.093 0.000 0.337 0.364\n", + "total_pop_adj 9.699e-05 1.7e-06 57.126 0.000 9.37e-05 0.000\n", + "households_with_no_cars_adj 3.543e-05 7.21e-06 4.912 0.000 2.13e-05 4.96e-05\n", + "total_youth_adj 2.4e-05 5.77e-06 4.159 0.000 1.27e-05 3.53e-05\n", + "total_seniors_adj -3.337e-05 8.55e-06 -3.903 0.000 -5.01e-05 -1.66e-05\n", + "===============================================================================================\n" + ] + } + ], + "source": [ + "X_extra = df[['n_trips', 'n_routes_effective',\n", + " 'total_pop_adj', 'households_with_no_cars_adj', 'total_youth_adj', 'total_seniors_adj']]\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended = sm.GLM(\n", + " y,\n", + " X_extra,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended.summary())" + ] + }, + { + "cell_type": "markdown", + "id": "aca27ba2-2c31-41fd-b97a-f441f1854cd8", + "metadata": {}, + "source": [ + "## Negative Binomial GLM (Log‑Link) Model Equation" + ] + }, + { + "cell_type": "markdown", + "id": "ef756a7a-2e7b-486d-b31a-d712d3252652", + "metadata": {}, + "source": [ + "The model estimates the expected daily boardings at stop *i* using a Negative Binomial\n", + "Generalized Linear Model with a log link.\n", + "\n", + "The linear predictor is:\n", + "\n", + "$$\n", + "\\log(\\mu_i) =\n", + "\\beta_0\n", + "+ \\beta_1 \\, (\\text{n\\_trips}_i)\n", + "+ \\beta_2 \\, (\\text{n\\_routes}_i)\n", + "+ \\beta_3 \\, (\\text{total\\_pop\\_adj}_i)\n", + "+ \\beta_4 \\, (\\text{households\\_with\\_no\\_cars\\_adj}_i)\n", + "+ \\beta_5 \\, (\\text{total\\_youth\\_adj}_i)\n", + "+ \\beta_6 \\, (\\text{inc\\_total\\_lowincome\\_adj}_i)\n", + "+ \\beta_7 \\, (\\text{total\\_seniors\\_adj}_i)\n", + "$$\n", + "\n", + "Where the expected value of daily boardings is:\n", + "\n", + "$$\n", + "\\mu_i = E[\\text{average\\_daily\\_boardings}_i]\n", + "$$\n", + "\n", + "The outcome follows a Negative Binomial distribution:\n", + "\n", + "$$\n", + "Y_i \\sim \\text{NB}(\\mu_i, \\alpha)\n", + "$$\n", + "\n", + "The log link implies that predictor effects are multiplicative:\n", + "\n", + "$$\n", + "\\mu_i = \\exp\\left(\n", + "\\beta_0\n", + "+ \\beta_1 \\, \\text{n\\_trips}_i\n", + "+ \\beta_2 \\, \\text{n\\_routes}_i\n", + "+ \\beta_3 \\, \\text{total\\_pop\\_adj}_i\n", + "+ \\beta_4 \\, \\text{households\\_with\\_no\\_cars\\_adj}_i\n", + "+ \\beta_5 \\, \\text{total\\_youth\\_adj}_i\n", + "+ \\beta_6 \\, \\text{inc\\_total\\_lowincome\\_adj}_i\n", + "+ \\beta_7 \\, \\text{total\\_seniors\\_adj}_i\n", + "\\right)\n", + "$$\n", + "\n", + "Statsmodels’ `GLM(..., family=NegativeBinomial())` uses a fixed dispersion parameter $\\alpha$\n", + "unless otherwise specified." + ] + }, + { + "cell_type": "markdown", + "id": "5fc3cc4c-400c-417f-9c06-19b009216815", + "metadata": {}, + "source": [ + "In log_linear ols regression model Y is continuous variable i.e. if n_trip has coefficient of 0.1 it means A one‑unit increase in trips increases the geometric mean of ridership by 10%.\n", + "While in this model: it means Each additional daily trip increases expected ridership by about 10%." + ] + }, + { + "cell_type": "markdown", + "id": "f71734cb-86ba-49cd-b4ff-2dd415d060e3", + "metadata": {}, + "source": [ + "1) Log-linear OLS model\n", + "Modeling log(ridership). \n", + "When the coefficient is 0.1, it means:\n", + "→ adding 1 trip increases ridership by about 10% on average (geometric mean).\n", + "2) Negative Binomial model\n", + "This model is built for count data (like number of riders).\n", + "A coefficient of 0.1 also means about a 10% increase, but interpreted as:\n", + "→ each extra trip increases the expected number of riders by 10%.\n", + "\n", + "They sound almost identical, but:\n", + "- Log-linear OLS focuses on modeling a transformed version of ridership (log scale). Talks about the geometric mean (a bit abstract)\n", + "Negative Binomial\n", + "- directly models counts (actual riders). Talks about expected ridership (more natural and realistic for counts)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "751c0d23-b477-454a-87a0-4ab09eb23e91", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_acs_2/Notes.md b/ahsc_grant/ahsc_acs_2/Notes.md new file mode 100644 index 000000000..c24ae57ae --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/Notes.md @@ -0,0 +1,14 @@ +Route-level agencies (e.g., SacRT Bus, SamTrans, Gold Coast Transit): + +They report ridership per route per stop per day. +Any service increase (extra trips) can be directly linked to a specific route. +The model coefficient for n_trips tells you how adding a bus trip on that route increases ridership. +The n_routes coefficient is irrelevant because each route is already counted individually. + + +Aggregated agencies (e.g., Caltrain, BART): +They report ridership aggregated across multiple routes at a stop or over the whole system — not per route. +Any service increase is spread across the stop’s ridership, so we cannot directly tie extra trips to a single route. +The model coefficient for n_trips still tells us the expected increase in ridership per additional trip, but it reflects the average effect across all routes included in the aggregation. +Example: If Caltrain runs 4 trains per day and you add 1 more train, the n_trips coefficient predicts the average ridership increase per stop. +The n_routes_effective coefficient is meaningful here, because the number of routes contributes to the total aggregated ridership — more routes generally mean more total boardings at a stop. From 267ce0b3a5f9acc9165c36a37ad333d02d34e49c Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Fri, 3 Apr 2026 23:46:32 +0000 Subject: [PATCH 08/21] model exploration using 2024 acs data --- .../ahsc_acs_2/04_prepare_acs_data.ipynb | 599 +++++++++--------- .../ahsc_acs_2/06_data_processing.ipynb | 404 ++++++------ .../ahsc_acs_2/07_Model_exploration.ipynb | 504 ++++++++------- 3 files changed, 731 insertions(+), 776 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb index d413424e5..e8a2144fd 100644 --- a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb +++ b/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb @@ -92,7 +92,7 @@ "variables = [\n", " \"B01003_001E\", # Total Population\n", " \"B17001_002E\", # Population with Income in the past 12 months below poverty level\n", - " \"B16008_037E\", # Non US Citizen Population\n", + " \"B05001_006E\", # Non US Citizen Population\n", " \"B01001_020E\", \"B01001_021E\", \"B01001_022E\", \"B01001_023E\", \"B01001_024E\", \"B01001_025E\", # Male senior population : 65 and above\n", " \"B01001_044E\", \"B01001_045E\", \"B01001_046E\", \"B01001_047E\", \"B01001_048E\", \"B01001_049E\", # Female senior population : 65 and above\n", " \"B01001_006E\", \"B01001_007E\", \"B01001_008E\", \"B01001_009E\", \"B01001_010E\", # Male population : 15-24\n", @@ -102,8 +102,8 @@ " \"B06010_007E\", \"B06010_008E\", # Population with very low income\n", " \"B06010_009E\", \"B06010_010E\", # Population with low income \n", " \"B08014_002E\", \"B08201_002E\", # Workers and Households with no cars\n", - " \"B18101_001E\", # Total Population with Disability\n", - " \"B19058_001E\", # Public Assistance Income or Food Stamps/SNAP in past 12 months for Households\n", + " # \"B18101_001E\", # Total Population with Disability\n", + " \"B19058_002E\", # Public Assistance Income or Food Stamps/SNAP in past 12 months for Households\n", " \"B21001_002E\", # Population with veteran status: 18 and above\n", " \"B18101_004E\", \"B18101_007E\", \"B18101_010E\", \"B18101_013E\", \"B18101_016E\", # Population with disability (Male and Female)\n", " \"B18101_019E\", \"B18101_023E\", \"B18101_026E\", \"B18101_029E\", \"B18101_032E\", \n", @@ -121,7 +121,7 @@ "def fetch_acs(vars_subset, api_key):\n", " var_str = \"NAME,\" + \",\".join(vars_subset)\n", " url = (\n", - " \"https://api.census.gov/data/2023/acs/acs5\"\n", + " \"https://api.census.gov/data/2024/acs/acs5\"\n", " f\"?get={var_str}&for=tract:*&in=state:06&key={api_key}\"\n", " )\n", "\n", @@ -197,7 +197,7 @@ "census_data = census_data.rename(columns = {\n", " 'B01003_001E': 'total_pop',\n", " 'B17001_002E': 'poverty_pop',\n", - " 'B16008_037E': 'non_us_citizen',\n", + " 'B05001_006E': 'non_us_citizen',\n", " 'B01001_020E': 'male_65_to_66', 'B01001_021E': 'male_67_to_69', 'B01001_022E': 'male_70_to_74', \n", " 'B01001_023E': 'male_75_to_79', 'B01001_024E': 'male_80_to_84', 'B01001_025E': 'male_85_and_over',\n", " 'B01001_044E': 'female_65_to_66', 'B01001_045E': 'female_67_to_69', 'B01001_046E': 'female_70_to_74', \n", @@ -211,7 +211,7 @@ " 'B06010_009E': 'income_50000_64999', 'B06010_010E': 'income_65000_74999',\n", " 'B08014_002E': 'workers_with_no_car', 'B08201_002E': 'households_with_no_cars',\n", " # 'B18101_001E': 'disabled_pop',\n", - " 'B19058_001E': 'public_asst_pop',\n", + " 'B19058_002E': 'public_asst_pop',\n", " 'B21001_002E': 'veteran_pop',\n", " 'B18101_004E': 'male_under5_with_disability',\n", " 'B18101_007E': 'male_5_17_with_disability',\n", @@ -376,7 +376,6 @@ " workers_with_no_car\n", " households_with_no_cars\n", " GEOID\n", - " B18101_001E\n", " public_asst_pop\n", " veteran_pop\n", " county_name\n", @@ -396,273 +395,268 @@ " \n", " \n", " 0\n", - " 3094\n", - " 134\n", - " 264\n", - " 47\n", - " 84\n", - " 119\n", + " 3132\n", + " 131\n", + " 259\n", + " 58\n", + " 140\n", + " 141\n", + " 44\n", + " 55\n", " 49\n", - " 46\n", + " 26\n", " 78\n", - " 52\n", - " 70\n", - " 72\n", - " 85\n", - " 105\n", - " 107\n", - " 19\n", + " 103\n", + " 83\n", + " 51\n", + " 116\n", + " 28\n", " 0\n", " 0\n", " 0\n", - " 26\n", - " 26\n", - " 13\n", + " 31\n", + " 28\n", + " 7\n", " 0\n", - " 14\n", - " 19\n", + " 0\n", + " 21\n", " 250001\n", - " 188\n", - " 75\n", - " 134\n", - " 157\n", - " 87\n", - " 129\n", - " 70\n", - " 28\n", - " 85\n", + " 161\n", + " 111\n", + " 76\n", + " 163\n", + " 107\n", + " 112\n", + " 41\n", + " 89\n", + " 107\n", " 06001400100\n", - " 3094\n", - " 1316\n", - " 129\n", + " 62\n", + " 55\n", " Alameda\n", - " 397\n", - " 244\n", - " 199\n", - " 840\n", - " 423\n", - " 491\n", - " 45\n", - " 72\n", - " 914\n", - " 117\n", - " 313\n", + " 348\n", + " 270\n", + " 153\n", + " 771\n", + " 487\n", + " 457\n", + " 59\n", + " 56\n", + " 944\n", + " 115\n", + " 206\n", " \n", " \n", " 1\n", - " 2093\n", - " 164\n", - " 96\n", - " 18\n", - " 60\n", - " 59\n", + " 2203\n", + " 170\n", + " 123\n", + " 22\n", + " 58\n", " 58\n", + " 59\n", " 28\n", - " 26\n", - " 40\n", - " 35\n", - " 67\n", - " 96\n", + " 23\n", + " 36\n", " 34\n", - " 13\n", - " 33\n", + " 74\n", + " 105\n", + " 32\n", + " 19\n", + " 25\n", " 0\n", - " 3\n", + " 4\n", " 0\n", " 10\n", + " 24\n", " 28\n", - " 9\n", - " 0\n", " 0\n", " 0\n", - " 225880\n", - " 75\n", - " 70\n", - " 89\n", - " 12\n", - " 207\n", - " 77\n", - " 32\n", - " 92\n", - " 95\n", + " 22\n", + " 208438\n", + " 110\n", + " 68\n", + " 108\n", + " 30\n", + " 226\n", + " 121\n", + " 34\n", + " 99\n", + " 110\n", " 06001400200\n", - " 2093\n", - " 861\n", - " 38\n", + " 42\n", + " 35\n", " Alameda\n", - " 234\n", - " 219\n", - " 109\n", - " 562\n", - " 249\n", - " 285\n", - " 46\n", - " 37\n", - " 534\n", - " 83\n", - " 168\n", + " 286\n", + " 256\n", + " 155\n", + " 697\n", + " 248\n", + " 300\n", + " 39\n", + " 74\n", + " 548\n", + " 113\n", + " 167\n", " \n", " \n", " 2\n", - " 5727\n", - " 310\n", - " 306\n", - " 23\n", - " 47\n", - " 113\n", - " 100\n", - " 24\n", - " 25\n", - " 108\n", - " 62\n", - " 194\n", - " 158\n", - " 13\n", - " 142\n", - " 94\n", - " 88\n", + " 5990\n", + " 256\n", + " 280\n", + " 43\n", + " 49\n", + " 68\n", + " 130\n", + " 83\n", + " 22\n", + " 87\n", + " 85\n", + " 205\n", + " 193\n", + " 33\n", + " 109\n", + " 98\n", + " 144\n", " 0\n", " 6\n", - " 93\n", - " 55\n", - " 33\n", + " 91\n", + " 89\n", + " 31\n", " 0\n", - " 26\n", - " 43\n", - " 157731\n", - " 383\n", - " 201\n", - " 300\n", + " 0\n", + " 50\n", + " 176618\n", + " 350\n", + " 210\n", + " 324\n", + " 308\n", + " 324\n", " 251\n", - " 400\n", - " 148\n", - " 291\n", - " 157\n", - " 416\n", + " 181\n", + " 237\n", + " 466\n", " 06001400300\n", - " 5727\n", - " 2713\n", - " 80\n", + " 203\n", + " 74\n", " Alameda\n", " 884\n", - " 651\n", - " 439\n", - " 1974\n", - " 332\n", - " 677\n", - " 281\n", - " 157\n", - " 1009\n", - " 438\n", - " 459\n", + " 632\n", + " 432\n", + " 1948\n", + " 395\n", + " 712\n", + " 339\n", + " 170\n", + " 1107\n", + " 509\n", + " 479\n", " \n", " \n", " 3\n", - " 4395\n", - " 343\n", - " 185\n", - " 31\n", - " 70\n", - " 89\n", - " 19\n", - " 26\n", - " 36\n", - " 55\n", - " 105\n", - " 104\n", - " 43\n", - " 23\n", - " 30\n", - " 30\n", - " 41\n", - " 0\n", + " 4399\n", + " 345\n", + " 221\n", + " 73\n", + " 90\n", + " 73\n", + " 39\n", + " 48\n", + " 21\n", + " 72\n", + " 83\n", + " 109\n", + " 47\n", + " 22\n", + " 17\n", + " 28\n", + " 38\n", " 0\n", " 0\n", - " 27\n", + " 26\n", + " 21\n", " 9\n", " 0\n", " 0\n", - " 38\n", - " 159612\n", - " 187\n", - " 105\n", - " 287\n", - " 215\n", - " 207\n", - " 178\n", - " 87\n", - " 134\n", - " 204\n", + " 20\n", + " 165134\n", + " 192\n", + " 108\n", + " 321\n", + " 185\n", + " 246\n", + " 186\n", + " 55\n", + " 133\n", + " 212\n", " 06001400400\n", - " 4376\n", - " 1803\n", + " 168\n", " 88\n", " Alameda\n", - " 579\n", - " 422\n", - " 265\n", - " 1266\n", - " 271\n", - " 360\n", - " 71\n", - " 74\n", - " 631\n", - " 145\n", - " 339\n", + " 621\n", + " 431\n", + " 241\n", + " 1293\n", + " 344\n", + " 350\n", + " 92\n", + " 50\n", + " 694\n", + " 142\n", + " 366\n", " \n", " \n", " 4\n", - " 3822\n", - " 397\n", - " 231\n", - " 41\n", - " 32\n", - " 56\n", - " 41\n", - " 4\n", + " 3579\n", + " 395\n", + " 117\n", + " 37\n", + " 45\n", + " 43\n", + " 46\n", + " 10\n", " 0\n", - " 19\n", - " 47\n", - " 51\n", - " 50\n", " 60\n", - " 203\n", - " 26\n", - " 81\n", - " 9\n", + " 48\n", + " 90\n", + " 27\n", + " 31\n", + " 197\n", + " 23\n", + " 79\n", + " 24\n", " 0\n", - " 115\n", - " 7\n", + " 46\n", + " 18\n", " 0\n", " 0\n", - " 98\n", - " 46\n", - " 96250\n", - " 256\n", - " 91\n", - " 244\n", - " 213\n", - " 385\n", - " 387\n", - " 244\n", - " 74\n", - " 169\n", - " 06001400500\n", - " 3822\n", - " 1655\n", + " 94\n", + " 20\n", + " 96641\n", + " 236\n", + " 125\n", + " 234\n", " 115\n", - " Alameda\n", - " 591\n", - " 598\n", - " 631\n", - " 1820\n", - " 174\n", " 430\n", - " 231\n", - " 151\n", - " 604\n", - " 382\n", - " 270\n", + " 383\n", + " 141\n", + " 78\n", + " 227\n", + " 06001400500\n", + " 188\n", + " 100\n", + " Alameda\n", + " 595\n", + " 545\n", + " 524\n", + " 1664\n", + " 181\n", + " 453\n", + " 172\n", + " 132\n", + " 634\n", + " 304\n", + " 291\n", " \n", " \n", "\n", @@ -670,88 +664,88 @@ ], "text/plain": [ " total_pop poverty_pop non_us_citizen male_65_to_66 male_67_to_69 \\\n", - "0 3094 134 264 47 84 \n", - "1 2093 164 96 18 60 \n", - "2 5727 310 306 23 47 \n", - "3 4395 343 185 31 70 \n", - "4 3822 397 231 41 32 \n", + "0 3132 131 259 58 140 \n", + "1 2203 170 123 22 58 \n", + "2 5990 256 280 43 49 \n", + "3 4399 345 221 73 90 \n", + "4 3579 395 117 37 45 \n", "\n", " male_70_to_74 male_75_to_79 male_80_to_84 male_85_and_over \\\n", - "0 119 49 46 78 \n", - "1 59 58 28 26 \n", - "2 113 100 24 25 \n", - "3 89 19 26 36 \n", - "4 56 41 4 0 \n", + "0 141 44 55 49 \n", + "1 58 59 28 23 \n", + "2 68 130 83 22 \n", + "3 73 39 48 21 \n", + "4 43 46 10 0 \n", "\n", " female_65_to_66 female_67_to_69 female_70_to_74 female_75_to_79 \\\n", - "0 52 70 72 85 \n", - "1 40 35 67 96 \n", - "2 108 62 194 158 \n", - "3 55 105 104 43 \n", - "4 19 47 51 50 \n", + "0 26 78 103 83 \n", + "1 36 34 74 105 \n", + "2 87 85 205 193 \n", + "3 72 83 109 47 \n", + "4 60 48 90 27 \n", "\n", " female_80_to_84 female_85_and_over male_15_17 male_18_19 male_20 \\\n", - "0 105 107 19 0 0 \n", - "1 34 13 33 0 3 \n", - "2 13 142 94 88 0 \n", - "3 23 30 30 41 0 \n", - "4 60 203 26 81 9 \n", + "0 51 116 28 0 0 \n", + "1 32 19 25 0 4 \n", + "2 33 109 98 144 0 \n", + "3 22 17 28 38 0 \n", + "4 31 197 23 79 24 \n", "\n", " male_21 male_22_24 female_15_17 female_18_19 female_20 female_21 \\\n", - "0 0 26 26 13 0 14 \n", - "1 0 10 28 9 0 0 \n", - "2 6 93 55 33 0 26 \n", - "3 0 0 27 9 0 0 \n", - "4 0 115 7 0 0 98 \n", + "0 0 31 28 7 0 0 \n", + "1 0 10 24 28 0 0 \n", + "2 6 91 89 31 0 0 \n", + "3 0 26 21 9 0 0 \n", + "4 0 46 18 0 0 94 \n", "\n", " female_22_24 median_household_income income_less_10000 \\\n", - "0 19 250001 188 \n", - "1 0 225880 75 \n", - "2 43 157731 383 \n", - "3 38 159612 187 \n", - "4 46 96250 256 \n", + "0 21 250001 161 \n", + "1 22 208438 110 \n", + "2 50 176618 350 \n", + "3 20 165134 192 \n", + "4 20 96641 236 \n", "\n", " income_10000_14999 income_15000_24999 income_25000_34999 \\\n", - "0 75 134 157 \n", - "1 70 89 12 \n", - "2 201 300 251 \n", - "3 105 287 215 \n", - "4 91 244 213 \n", + "0 111 76 163 \n", + "1 68 108 30 \n", + "2 210 324 308 \n", + "3 108 321 185 \n", + "4 125 234 115 \n", "\n", " income_35000_49999 income_50000_64999 income_65000_74999 \\\n", - "0 87 129 70 \n", - "1 207 77 32 \n", - "2 400 148 291 \n", - "3 207 178 87 \n", - "4 385 387 244 \n", + "0 107 112 41 \n", + "1 226 121 34 \n", + "2 324 251 181 \n", + "3 246 186 55 \n", + "4 430 383 141 \n", "\n", - " workers_with_no_car households_with_no_cars GEOID B18101_001E \\\n", - "0 28 85 06001400100 3094 \n", - "1 92 95 06001400200 2093 \n", - "2 157 416 06001400300 5727 \n", - "3 134 204 06001400400 4376 \n", - "4 74 169 06001400500 3822 \n", + " workers_with_no_car households_with_no_cars GEOID public_asst_pop \\\n", + "0 89 107 06001400100 62 \n", + "1 99 110 06001400200 42 \n", + "2 237 466 06001400300 203 \n", + "3 133 212 06001400400 168 \n", + "4 78 227 06001400500 188 \n", "\n", - " public_asst_pop veteran_pop county_name inc_extremelylow inc_verylow \\\n", - "0 1316 129 Alameda 397 244 \n", - "1 861 38 Alameda 234 219 \n", - "2 2713 80 Alameda 884 651 \n", - "3 1803 88 Alameda 579 422 \n", - "4 1655 115 Alameda 591 598 \n", + " veteran_pop county_name inc_extremelylow inc_verylow inc_low \\\n", + "0 55 Alameda 348 270 153 \n", + "1 35 Alameda 286 256 155 \n", + "2 74 Alameda 884 632 432 \n", + "3 88 Alameda 621 431 241 \n", + "4 100 Alameda 595 545 524 \n", "\n", - " inc_low inc_total_lowincome male_seniors female_seniors male_youth \\\n", - "0 199 840 423 491 45 \n", - "1 109 562 249 285 46 \n", - "2 439 1974 332 677 281 \n", - "3 265 1266 271 360 71 \n", - "4 631 1820 174 430 231 \n", + " inc_total_lowincome male_seniors female_seniors male_youth \\\n", + "0 771 487 457 59 \n", + "1 697 248 300 39 \n", + "2 1948 395 712 339 \n", + "3 1293 344 350 92 \n", + "4 1664 181 453 172 \n", "\n", " female_youth total_seniors total_youth disabled_pop \n", - "0 72 914 117 313 \n", - "1 37 534 83 168 \n", - "2 157 1009 438 459 \n", - "3 74 631 145 339 \n", - "4 151 604 382 270 " + "0 56 944 115 206 \n", + "1 74 548 113 167 \n", + "2 170 1107 509 479 \n", + "3 50 694 142 366 \n", + "4 132 634 304 291 " ] }, "execution_count": 19, @@ -775,7 +769,7 @@ "text": [ "\n", "RangeIndex: 9129 entries, 0 to 9128\n", - "Data columns (total 51 columns):\n", + "Data columns (total 50 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 total_pop 9129 non-null int64 \n", @@ -814,23 +808,22 @@ " 33 workers_with_no_car 9129 non-null int64 \n", " 34 households_with_no_cars 9129 non-null int64 \n", " 35 GEOID 9129 non-null object\n", - " 36 B18101_001E 9129 non-null int64 \n", - " 37 public_asst_pop 9129 non-null int64 \n", - " 38 veteran_pop 9129 non-null int64 \n", - " 39 county_name 9129 non-null object\n", - " 40 inc_extremelylow 9129 non-null int64 \n", - " 41 inc_verylow 9129 non-null int64 \n", - " 42 inc_low 9129 non-null int64 \n", - " 43 inc_total_lowincome 9129 non-null int64 \n", - " 44 male_seniors 9129 non-null int64 \n", - " 45 female_seniors 9129 non-null int64 \n", - " 46 male_youth 9129 non-null int64 \n", - " 47 female_youth 9129 non-null int64 \n", - " 48 total_seniors 9129 non-null int64 \n", - " 49 total_youth 9129 non-null int64 \n", - " 50 disabled_pop 9129 non-null int64 \n", - "dtypes: int64(49), object(2)\n", - "memory usage: 3.6+ MB\n" + " 36 public_asst_pop 9129 non-null int64 \n", + " 37 veteran_pop 9129 non-null int64 \n", + " 38 county_name 9129 non-null object\n", + " 39 inc_extremelylow 9129 non-null int64 \n", + " 40 inc_verylow 9129 non-null int64 \n", + " 41 inc_low 9129 non-null int64 \n", + " 42 inc_total_lowincome 9129 non-null int64 \n", + " 43 male_seniors 9129 non-null int64 \n", + " 44 female_seniors 9129 non-null int64 \n", + " 45 male_youth 9129 non-null int64 \n", + " 46 female_youth 9129 non-null int64 \n", + " 47 total_seniors 9129 non-null int64 \n", + " 48 total_youth 9129 non-null int64 \n", + " 49 disabled_pop 9129 non-null int64 \n", + "dtypes: int64(48), object(2)\n", + "memory usage: 3.5+ MB\n" ] } ], @@ -854,7 +847,7 @@ ], "source": [ "#Retrieving Tract Geometries for California\n", - "ca_tracts_full = tracts(state=\"CA\", cb=True, year=2023, cache=True)\n", + "ca_tracts_full = tracts(state=\"CA\", cb=True, year=2024, cache=True)\n", "ca_tracts_full.to_crs(3310, inplace=True)\n", "ca_tracts_full = ca_tracts_full.explode(index_parts=False).reset_index(drop=True)\n", "ca_tracts_full = ca_tracts_full[~ca_tracts_full.is_empty]" @@ -870,7 +863,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:2475: UserWarning: `keep_geom_type=True` in overlay resulted in 812 dropped geometries of different geometry types than df1 has. Set `keep_geom_type=False` to retain all geometries\n", + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:2475: UserWarning: `keep_geom_type=True` in overlay resulted in 819 dropped geometries of different geometry types than df1 has. Set `keep_geom_type=False` to retain all geometries\n", " return geopandas.overlay(\n" ] } diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index d504f83c0..0a95e7093 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -10,7 +10,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.3)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -118,27 +118,25 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 28545 entries, 0 to 28544\n", - "Data columns (total 15 columns):\n", + "RangeIndex: 21220 entries, 0 to 21219\n", + "Data columns (total 13 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 28545 non-null object \n", - " 1 feed_key 28544 non-null object \n", - " 2 route_id 26875 non-null object \n", - " 3 route_name 13556 non-null object \n", - " 4 stop_id 28544 non-null object \n", - " 5 stop_name 28545 non-null object \n", - " 6 stop_code 27483 non-null object \n", - " 7 n_trips 28544 non-null float64\n", - " 8 n_routes 28544 non-null float64\n", - " 9 pt_geom 28544 non-null object \n", - " 10 day_type 28545 non-null object \n", - " 11 average_daily_boardings 28545 non-null float64\n", - " 12 average_daily_alightings 25942 non-null float64\n", - " 13 start_date 28545 non-null object \n", - " 14 end_date 28545 non-null object \n", - "dtypes: float64(4), object(11)\n", - "memory usage: 3.3+ MB\n" + " 0 organization_name 21220 non-null object \n", + " 1 feed_key 21219 non-null object \n", + " 2 stop_id 21219 non-null object \n", + " 3 stop_name 21220 non-null object \n", + " 4 stop_code 20543 non-null object \n", + " 5 n_arrivals 21219 non-null float64\n", + " 6 n_routes 21219 non-null float64\n", + " 7 pt_geom 21219 non-null object \n", + " 8 day_type 21220 non-null object \n", + " 9 average_daily_boardings 21220 non-null float64\n", + " 10 average_daily_alightings 19042 non-null float64\n", + " 11 start_date 21220 non-null object \n", + " 12 end_date 21220 non-null object \n", + "dtypes: float64(4), object(9)\n", + "memory usage: 2.1+ MB\n" ] } ], @@ -214,12 +212,10 @@ " \n", " organization_name\n", " feed_key\n", - " route_id\n", - " route_name\n", " stop_id\n", " stop_name\n", " stop_code\n", - " n_trips\n", + " n_arrivals\n", " n_routes\n", " pt_geom\n", " day_type\n", @@ -235,12 +231,10 @@ " 0\n", " Gold Coast Transit\n", " 3cb676436aad669e52042c0e97a9a051\n", - " 16\n", - " NaN\n", " VNACLR1\n", " .\n", " NaN\n", - " 32.0\n", + " 14.0\n", " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", @@ -254,12 +248,10 @@ " 1\n", " Samtrans\n", " db97cc02836aa5f0cf647d80160b23ec\n", - " ECR\n", - " NaN\n", " 345017\n", " 1000 El Camino Real-Menlo College\n", " 345017\n", - " 143.0\n", + " 72.0\n", " 1.0\n", " POINT(-122.191284 37.457543)\n", " Weekday\n", @@ -271,29 +263,8 @@ " \n", " \n", " 2\n", - " Golden Gate Transit\n", - " de77cb40e92fb47fa8d16228977cfb86\n", - " 130\n", - " NaN\n", - " 40469\n", - " 1011 Andersen Dr\n", - " 40469\n", - " 39.0\n", - " 1.0\n", - " POINT(-122.504252 37.955391)\n", - " Weekday\n", - " 1.909091\n", - " 0.000000\n", - " 2025-09-01\n", - " 2025-09-30\n", - " POINT (-122.50425 37.95539)\n", - " \n", - " \n", - " 3\n", " Samtrans\n", " db97cc02836aa5f0cf647d80160b23ec\n", - " 61\n", - " NaN\n", " 343119\n", " 1011 Crestview Dr\n", " 343119\n", @@ -308,11 +279,9 @@ " POINT (-122.28410 37.48428)\n", " \n", " \n", - " 4\n", + " 3\n", " Samtrans\n", " db97cc02836aa5f0cf647d80160b23ec\n", - " 46\n", - " NaN\n", " 340606\n", " 1060 Carolan Ave\n", " 340606\n", @@ -327,6 +296,23 @@ " POINT (-122.35963 37.58669)\n", " \n", " \n", + " 4\n", + " SDMTS\n", + " 1fff52f9349da228c56eef492df5001b\n", + " 12049\n", + " 10th Av & A St\n", + " 12049\n", + " 18.0\n", + " 3.0\n", + " POINT(-117.15569071 32.71857729)\n", + " Weekday\n", + " 3.485637\n", + " 42.889568\n", + " 2024-09-01\n", + " 2025-01-25\n", + " POINT (-117.15569 32.71858)\n", + " \n", + " \n", " ...\n", " ...\n", " ...\n", @@ -342,19 +328,15 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", " \n", " \n", - " 28540\n", + " 21215\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " NaN\n", - " NaN\n", " 70091\n", " San Mateo\n", " NaN\n", - " 104.0\n", + " 52.0\n", " 3.0\n", " POINT(-122.323851 37.568087)\n", " Weekday\n", @@ -365,15 +347,13 @@ " POINT (-122.32385 37.56809)\n", " \n", " \n", - " 28541\n", + " 21216\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " NaN\n", - " NaN\n", " 70241\n", " Santa Clara\n", " NaN\n", - " 90.0\n", + " 45.0\n", " 2.0\n", " POINT(-121.93608 37.353238)\n", " Weekday\n", @@ -384,15 +364,13 @@ " POINT (-121.93608 37.35324)\n", " \n", " \n", - " 28542\n", + " 21217\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " NaN\n", - " NaN\n", " 70041\n", " South San Francisco\n", " NaN\n", - " 104.0\n", + " 52.0\n", " 3.0\n", " POINT(-122.404979051 37.655941395)\n", " Weekday\n", @@ -403,15 +381,13 @@ " POINT (-122.40498 37.65594)\n", " \n", " \n", - " 28543\n", + " 21218\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " NaN\n", - " NaN\n", " 70221\n", " Sunnyvale\n", " NaN\n", - " 104.0\n", + " 52.0\n", " 3.0\n", " POINT(-122.031372 37.378916)\n", " Weekday\n", @@ -422,15 +398,13 @@ " POINT (-122.03137 37.37892)\n", " \n", " \n", - " 28544\n", + " 21219\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " NaN\n", - " NaN\n", " 70271\n", " Tamien\n", " NaN\n", - " 83.0\n", + " 23.0\n", " 2.0\n", " POINT(-121.883721 37.31174)\n", " Weekday\n", @@ -442,76 +416,76 @@ " \n", " \n", "\n", - "

28544 rows × 16 columns

\n", + "

21219 rows × 14 columns

\n", "" ], "text/plain": [ - " organization_name feed_key route_id \\\n", - "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 \n", - "1 Samtrans db97cc02836aa5f0cf647d80160b23ec ECR \n", - "2 Golden Gate Transit de77cb40e92fb47fa8d16228977cfb86 130 \n", - "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 61 \n", - "4 Samtrans db97cc02836aa5f0cf647d80160b23ec 46 \n", - "... ... ... ... \n", - "28540 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", - "28541 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", - "28542 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", - "28543 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", - "28544 Caltrain f189d5677d4a106b98585f3c5d4fd42c NaN \n", + " organization_name feed_key stop_id \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 \n", + "1 Samtrans db97cc02836aa5f0cf647d80160b23ec 345017 \n", + "2 Samtrans db97cc02836aa5f0cf647d80160b23ec 343119 \n", + "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 340606 \n", + "4 SDMTS 1fff52f9349da228c56eef492df5001b 12049 \n", + "... ... ... ... \n", + "21215 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70091 \n", + "21216 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70241 \n", + "21217 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70041 \n", + "21218 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", + "21219 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 \n", "\n", - " route_name stop_id stop_name stop_code \\\n", - "0 NaN VNACLR1 . NaN \n", - "1 NaN 345017 1000 El Camino Real-Menlo College 345017 \n", - "2 NaN 40469 1011 Andersen Dr 40469 \n", - "3 NaN 343119 1011 Crestview Dr 343119 \n", - "4 NaN 340606 1060 Carolan Ave 340606 \n", - "... ... ... ... ... \n", - "28540 NaN 70091 San Mateo NaN \n", - "28541 NaN 70241 Santa Clara NaN \n", - "28542 NaN 70041 South San Francisco NaN \n", - "28543 NaN 70221 Sunnyvale NaN \n", - "28544 NaN 70271 Tamien NaN \n", + " stop_name stop_code n_arrivals n_routes \\\n", + "0 . NaN 14.0 1.0 \n", + "1 1000 El Camino Real-Menlo College 345017 72.0 1.0 \n", + "2 1011 Crestview Dr 343119 5.0 1.0 \n", + "3 1060 Carolan Ave 340606 7.0 1.0 \n", + "4 10th Av & A St 12049 18.0 3.0 \n", + "... ... ... ... ... \n", + "21215 San Mateo NaN 52.0 3.0 \n", + "21216 Santa Clara NaN 45.0 2.0 \n", + "21217 South San Francisco NaN 52.0 3.0 \n", + "21218 Sunnyvale NaN 52.0 3.0 \n", + "21219 Tamien NaN 23.0 2.0 \n", "\n", - " n_trips n_routes pt_geom day_type \\\n", - "0 32.0 1.0 POINT(-119.294028 34.343645) Weekday \n", - "1 143.0 1.0 POINT(-122.191284 37.457543) Weekday \n", - "2 39.0 1.0 POINT(-122.504252 37.955391) Weekday \n", - "3 5.0 1.0 POINT(-122.284103 37.484282) Weekday \n", - "4 7.0 1.0 POINT(-122.359627 37.586685) Weekday \n", - "... ... ... ... ... \n", - "28540 104.0 3.0 POINT(-122.323851 37.568087) Weekday \n", - "28541 90.0 2.0 POINT(-121.93608 37.353238) Weekday \n", - "28542 104.0 3.0 POINT(-122.404979051 37.655941395) Weekday \n", - "28543 104.0 3.0 POINT(-122.031372 37.378916) Weekday \n", - "28544 83.0 2.0 POINT(-121.883721 37.31174) Weekday \n", + " pt_geom day_type average_daily_boardings \\\n", + "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", + "1 POINT(-122.191284 37.457543) Weekday 9.523810 \n", + "2 POINT(-122.284103 37.484282) Weekday 1.444444 \n", + "3 POINT(-122.359627 37.586685) Weekday 10.333333 \n", + "4 POINT(-117.15569071 32.71857729) Weekday 3.485637 \n", + "... ... ... ... \n", + "21215 POINT(-122.323851 37.568087) Weekday 1074.189854 \n", + "21216 POINT(-121.93608 37.353238) Weekday 718.467622 \n", + "21217 POINT(-122.404979051 37.655941395) Weekday 559.501648 \n", + "21218 POINT(-122.031372 37.378916) Weekday 1408.195136 \n", + "21219 POINT(-121.883721 37.31174) Weekday 198.883066 \n", "\n", - " average_daily_boardings average_daily_alightings start_date \\\n", - "0 0.000000 3.000000 2025-05-01 \n", - "1 9.523810 24.571429 2025-08-01 \n", - "2 1.909091 0.000000 2025-09-01 \n", - "3 1.444444 1.888889 2025-08-01 \n", - "4 10.333333 5.500000 2025-08-01 \n", - "... ... ... ... \n", - "28540 1074.189854 NaN 2023-11-01 \n", - "28541 718.467622 NaN 2023-11-01 \n", - "28542 559.501648 NaN 2023-11-01 \n", - "28543 1408.195136 NaN 2023-11-01 \n", - "28544 198.883066 NaN 2023-11-01 \n", + " average_daily_alightings start_date end_date \\\n", + "0 3.000000 2025-05-01 2025-05-31 \n", + "1 24.571429 2025-08-01 2025-08-31 \n", + "2 1.888889 2025-08-01 2025-08-31 \n", + "3 5.500000 2025-08-01 2025-08-31 \n", + "4 42.889568 2024-09-01 2025-01-25 \n", + "... ... ... ... \n", + "21215 NaN 2023-11-01 2025-07-31 \n", + "21216 NaN 2023-11-01 2025-07-31 \n", + "21217 NaN 2023-11-01 2025-07-31 \n", + "21218 NaN 2023-11-01 2025-07-31 \n", + "21219 NaN 2023-11-01 2025-07-31 \n", "\n", - " end_date geometry \n", - "0 2025-05-31 POINT (-119.29403 34.34365) \n", - "1 2025-08-31 POINT (-122.19128 37.45754) \n", - "2 2025-09-30 POINT (-122.50425 37.95539) \n", - "3 2025-08-31 POINT (-122.28410 37.48428) \n", - "4 2025-08-31 POINT (-122.35963 37.58669) \n", - "... ... ... \n", - "28540 2025-07-31 POINT (-122.32385 37.56809) \n", - "28541 2025-07-31 POINT (-121.93608 37.35324) \n", - "28542 2025-07-31 POINT (-122.40498 37.65594) \n", - "28543 2025-07-31 POINT (-122.03137 37.37892) \n", - "28544 2025-07-31 POINT (-121.88372 37.31174) \n", + " geometry \n", + "0 POINT (-119.29403 34.34365) \n", + "1 POINT (-122.19128 37.45754) \n", + "2 POINT (-122.28410 37.48428) \n", + "3 POINT (-122.35963 37.58669) \n", + "4 POINT (-117.15569 32.71858) \n", + "... ... \n", + "21215 POINT (-122.32385 37.56809) \n", + "21216 POINT (-121.93608 37.35324) \n", + "21217 POINT (-122.40498 37.65594) \n", + "21218 POINT (-122.03137 37.37892) \n", + "21219 POINT (-121.88372 37.31174) \n", "\n", - "[28544 rows x 16 columns]" + "[21219 rows x 14 columns]" ] }, "execution_count": 11, @@ -604,28 +578,26 @@ "output_type": "stream", "text": [ "\n", - "Index: 28544 entries, 0 to 28544\n", - "Data columns (total 16 columns):\n", + "Index: 21219 entries, 0 to 21219\n", + "Data columns (total 14 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 28544 non-null object \n", - " 1 feed_key 28544 non-null object \n", - " 2 route_id 26875 non-null object \n", - " 3 route_name 13556 non-null object \n", - " 4 stop_id 28544 non-null object \n", - " 5 stop_name 28544 non-null object \n", - " 6 stop_code 27483 non-null object \n", - " 7 n_trips 28544 non-null float64 \n", - " 8 n_routes 28544 non-null float64 \n", - " 9 pt_geom 28544 non-null object \n", - " 10 day_type 28544 non-null object \n", - " 11 average_daily_boardings 28544 non-null float64 \n", - " 12 average_daily_alightings 25942 non-null float64 \n", - " 13 start_date 28544 non-null object \n", - " 14 end_date 28544 non-null object \n", - " 15 geometry 28544 non-null geometry\n", - "dtypes: float64(4), geometry(1), object(11)\n", - "memory usage: 3.7+ MB\n" + " 0 organization_name 21219 non-null object \n", + " 1 feed_key 21219 non-null object \n", + " 2 stop_id 21219 non-null object \n", + " 3 stop_name 21219 non-null object \n", + " 4 stop_code 20543 non-null object \n", + " 5 n_arrivals 21219 non-null float64 \n", + " 6 n_routes 21219 non-null float64 \n", + " 7 pt_geom 21219 non-null object \n", + " 8 day_type 21219 non-null object \n", + " 9 average_daily_boardings 21219 non-null float64 \n", + " 10 average_daily_alightings 19042 non-null float64 \n", + " 11 start_date 21219 non-null object \n", + " 12 end_date 21219 non-null object \n", + " 13 geometry 21219 non-null geometry\n", + "dtypes: float64(4), geometry(1), object(9)\n", + "memory usage: 2.4+ MB\n" ] } ], @@ -664,7 +636,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 19, "id": "1a1d6c3d-e4a0-4bf1-b1a7-130fb18f336e", "metadata": {}, "outputs": [], @@ -684,22 +656,21 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 20, "id": "203d6f46-a2f3-4b5c-b557-4ab2583a1441", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(['Gold Coast Transit', 'Samtrans', 'Golden Gate Transit', 'SDMTS',\n", + "array(['Gold Coast Transit', 'Samtrans', 'SDMTS', 'Fresno County',\n", " 'SacRT Bus', 'Orange County Transportation Authority',\n", - " 'Long Beach Transit', 'Foothill Transit', 'Fresno County',\n", - " 'San Francisco Bay Area Rapid Transit District', 'Big Blue Bus',\n", - " 'Culver City Bus', 'Riverside Transit', 'Golden Gate Park Shuttle',\n", - " 'Caltrain'], dtype=object)" + " 'Long Beach Transit', 'Foothill Transit',\n", + " 'Golden Gate Park Shuttle', 'Big Blue Bus', 'Culver City Bus',\n", + " 'Riverside Transit', 'Caltrain'], dtype=object)" ] }, - "execution_count": 28, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -710,7 +681,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 21, "id": "a39eacf0-644e-4956-a252-e6029f08d01b", "metadata": {}, "outputs": [], @@ -723,7 +694,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 22, "id": "3246e8fd-fda2-4e23-a2ab-fa04280256b7", "metadata": {}, "outputs": [], @@ -737,7 +708,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 23, "id": "740b84e5-b090-4285-bd3f-081869e2deb6", "metadata": {}, "outputs": [ @@ -746,49 +717,47 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 151044 entries, 0 to 151043\n", - "Data columns (total 37 columns):\n", + "RangeIndex: 107213 entries, 0 to 107212\n", + "Data columns (total 35 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 151044 non-null object \n", - " 1 feed_key 151044 non-null object \n", - " 2 route_id 143325 non-null object \n", - " 3 route_name 71252 non-null object \n", - " 4 stop_id 151044 non-null object \n", - " 5 stop_name 151044 non-null object \n", - " 6 stop_code 145743 non-null object \n", - " 7 n_trips 151044 non-null float64 \n", - " 8 n_routes 151044 non-null float64 \n", - " 9 pt_geom 151044 non-null object \n", - " 10 day_type 151044 non-null object \n", - " 11 average_daily_boardings 151044 non-null float64 \n", - " 12 average_daily_alightings 140796 non-null float64 \n", - " 13 start_date 151044 non-null object \n", - " 14 end_date 151044 non-null object \n", - " 15 geometry_x 151044 non-null geometry\n", - " 16 geometry_y 151044 non-null geometry\n", - " 17 total_pop_adj 151044 non-null float64 \n", - " 18 poverty_pop_adj 151044 non-null float64 \n", - " 19 non_us_citizen_adj 151044 non-null float64 \n", - " 20 workers_with_no_car_adj 151044 non-null float64 \n", - " 21 households_with_no_cars_adj 151044 non-null float64 \n", - " 22 disabled_pop_adj 151044 non-null float64 \n", - " 23 public_asst_pop_adj 151044 non-null float64 \n", - " 24 inc_extremelylow_adj 151044 non-null float64 \n", - " 25 inc_verylow_adj 151044 non-null float64 \n", - " 26 inc_low_adj 151044 non-null float64 \n", - " 27 male_seniors_adj 151044 non-null float64 \n", - " 28 female_seniors_adj 151044 non-null float64 \n", - " 29 veteran_pop_adj 151044 non-null float64 \n", - " 30 male_youth_adj 151044 non-null float64 \n", - " 31 inc_total_lowincome_adj 151044 non-null float64 \n", - " 32 female_youth_adj 151044 non-null float64 \n", - " 33 total_seniors_adj 151044 non-null float64 \n", - " 34 jobs_tot_adj 151044 non-null float64 \n", - " 35 total_youth_adj 151044 non-null float64 \n", - " 36 ALAND_adj 151044 non-null float64 \n", - "dtypes: float64(24), geometry(2), object(11)\n", - "memory usage: 42.6+ MB\n" + " 0 organization_name 107213 non-null object \n", + " 1 feed_key 107213 non-null object \n", + " 2 stop_id 107213 non-null object \n", + " 3 stop_name 107213 non-null object \n", + " 4 stop_code 103948 non-null object \n", + " 5 n_arrivals 107213 non-null float64 \n", + " 6 n_routes 107213 non-null float64 \n", + " 7 pt_geom 107213 non-null object \n", + " 8 day_type 107213 non-null object \n", + " 9 average_daily_boardings 107213 non-null float64 \n", + " 10 average_daily_alightings 98658 non-null float64 \n", + " 11 start_date 107213 non-null object \n", + " 12 end_date 107213 non-null object \n", + " 13 geometry_x 107213 non-null geometry\n", + " 14 geometry_y 107213 non-null geometry\n", + " 15 total_pop_adj 107213 non-null float64 \n", + " 16 poverty_pop_adj 107213 non-null float64 \n", + " 17 non_us_citizen_adj 107213 non-null float64 \n", + " 18 workers_with_no_car_adj 107213 non-null float64 \n", + " 19 households_with_no_cars_adj 107213 non-null float64 \n", + " 20 disabled_pop_adj 107213 non-null float64 \n", + " 21 public_asst_pop_adj 107213 non-null float64 \n", + " 22 inc_extremelylow_adj 107213 non-null float64 \n", + " 23 inc_verylow_adj 107213 non-null float64 \n", + " 24 inc_low_adj 107213 non-null float64 \n", + " 25 male_seniors_adj 107213 non-null float64 \n", + " 26 female_seniors_adj 107213 non-null float64 \n", + " 27 veteran_pop_adj 107213 non-null float64 \n", + " 28 male_youth_adj 107213 non-null float64 \n", + " 29 inc_total_lowincome_adj 107213 non-null float64 \n", + " 30 female_youth_adj 107213 non-null float64 \n", + " 31 total_seniors_adj 107213 non-null float64 \n", + " 32 jobs_tot_adj 107213 non-null float64 \n", + " 33 total_youth_adj 107213 non-null float64 \n", + " 34 ALAND_adj 107213 non-null float64 \n", + "dtypes: float64(24), geometry(2), object(9)\n", + "memory usage: 28.6+ MB\n" ] } ], @@ -798,22 +767,21 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 24, "id": "a78ac3a9-9373-4adb-bcea-8cba82820b10", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array(['Gold Coast Transit', 'Samtrans', 'Golden Gate Transit', 'SDMTS',\n", + "array(['Gold Coast Transit', 'Samtrans', 'SDMTS', 'Fresno County',\n", " 'SacRT Bus', 'Orange County Transportation Authority',\n", - " 'Long Beach Transit', 'Foothill Transit', 'Fresno County',\n", - " 'San Francisco Bay Area Rapid Transit District', 'Big Blue Bus',\n", - " 'Culver City Bus', 'Riverside Transit', 'Golden Gate Park Shuttle',\n", - " 'Caltrain'], dtype=object)" + " 'Long Beach Transit', 'Foothill Transit',\n", + " 'Golden Gate Park Shuttle', 'Big Blue Bus', 'Culver City Bus',\n", + " 'Riverside Transit', 'Caltrain'], dtype=object)" ] }, - "execution_count": 32, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -824,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 25, "id": "b067dde4-2044-45b8-8234-8ada3f868bda", "metadata": {}, "outputs": [], @@ -838,7 +806,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 26, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb index cb71750ce..38a8a6a90 100644 --- a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -18,7 +18,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.3)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "faf985a0-8ade-4830-8eb6-739b1254e55c", "metadata": {}, "outputs": [ @@ -101,12 +101,10 @@ " \n", " organization_name\n", " feed_key\n", - " route_id\n", - " route_name\n", " stop_id\n", " stop_name\n", " stop_code\n", - " n_trips\n", + " n_arrivals\n", " n_routes\n", " pt_geom\n", " day_type\n", @@ -136,8 +134,6 @@ " jobs_tot_adj\n", " total_youth_adj\n", " ALAND_adj\n", - " is_route_level\n", - " n_routes_effective\n", " \n", " \n", " \n", @@ -145,12 +141,10 @@ " 0\n", " Gold Coast Transit\n", " 3cb676436aad669e52042c0e97a9a051\n", - " 16\n", - " None\n", " VNACLR1\n", " .\n", " None\n", - " 32.0\n", + " 14.0\n", " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", @@ -160,39 +154,35 @@ " 2025-05-31\n", " POINT (64936.582 -407800.219)\n", " POLYGON ((65737.380 -407879.090, 65725.793 -40...\n", - " 23.421382\n", - " 2.988619\n", - " 2.473963\n", - " 0.334075\n", - " 0.270872\n", - " 2.600369\n", - " 6.898202\n", - " 4.984041\n", - " 4.532588\n", - " 2.121829\n", - " 1.480766\n", - " 1.516882\n", - " 0.659121\n", - " 0.740383\n", - " 11.638459\n", - " 2.094742\n", - " 2.997648\n", - " 4.207542\n", - " 2.835125\n", - " 1.092105e+06\n", - " 1\n", - " 0.0\n", + " 23.285073\n", + " 2.446784\n", + " 2.699588\n", + " 0.352120\n", + " 0.325034\n", + " 3.114909\n", + " 1.191791\n", + " 5.372089\n", + " 4.550476\n", + " 1.977290\n", + " 1.589055\n", + " 1.877974\n", + " 0.749384\n", + " 0.993159\n", + " 11.899855\n", + " 2.248152\n", + " 3.467029\n", + " 4.207384\n", + " 3.241311\n", + " 1.092064e+06\n", " \n", " \n", " 1\n", " Gold Coast Transit\n", " 3cb676436aad669e52042c0e97a9a051\n", - " 16\n", - " None\n", " VNACLR1\n", " .\n", " None\n", - " 32.0\n", + " 14.0\n", " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", @@ -202,84 +192,78 @@ " 2025-05-31\n", " POINT (64936.582 -407800.219)\n", " POLYGON ((65015.454 -408601.016, 64936.582 -40...\n", - " 19.338329\n", - " 1.617058\n", - " 0.585279\n", - " 0.102575\n", - " 0.241352\n", - " 3.252218\n", - " 8.374914\n", - " 4.434843\n", - " 5.092527\n", - " 1.442078\n", - " 2.455757\n", - " 2.823818\n", - " 1.339504\n", - " 0.959374\n", - " 10.969448\n", - " 0.645617\n", - " 5.279575\n", - " 2.594534\n", - " 1.604991\n", - " 8.775517e+05\n", - " 1\n", - " 0.0\n", + " 18.168282\n", + " 1.502458\n", + " 0.458582\n", + " 0.072408\n", + " 0.138781\n", + " 2.594607\n", + " 0.971469\n", + " 3.843638\n", + " 5.346097\n", + " 1.574866\n", + " 2.226535\n", + " 2.974747\n", + " 1.092148\n", + " 0.886993\n", + " 10.764601\n", + " 0.524955\n", + " 5.201282\n", + " 2.594607\n", + " 1.411949\n", + " 8.775763e+05\n", " \n", " \n", "\n", "" ], "text/plain": [ - " organization_name feed_key route_id route_name \\\n", - "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 None \n", - "1 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 16 None \n", - "\n", - " stop_id stop_name stop_code n_trips n_routes \\\n", - "0 VNACLR1 . None 32.0 1.0 \n", - "1 VNACLR1 . None 32.0 1.0 \n", + " organization_name feed_key stop_id stop_name \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 . \n", + "1 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 . \n", "\n", - " pt_geom day_type average_daily_boardings \\\n", - "0 POINT(-119.294028 34.343645) Weekday 0.0 \n", - "1 POINT(-119.294028 34.343645) Weekday 0.0 \n", + " stop_code n_arrivals n_routes pt_geom day_type \\\n", + "0 None 14.0 1.0 POINT(-119.294028 34.343645) Weekday \n", + "1 None 14.0 1.0 POINT(-119.294028 34.343645) Weekday \n", "\n", - " average_daily_alightings start_date end_date \\\n", - "0 3.0 2025-05-01 2025-05-31 \n", - "1 3.0 2025-05-01 2025-05-31 \n", + " average_daily_boardings average_daily_alightings start_date end_date \\\n", + "0 0.0 3.0 2025-05-01 2025-05-31 \n", + "1 0.0 3.0 2025-05-01 2025-05-31 \n", "\n", " geometry_x \\\n", "0 POINT (64936.582 -407800.219) \n", "1 POINT (64936.582 -407800.219) \n", "\n", " geometry_y total_pop_adj \\\n", - "0 POLYGON ((65737.380 -407879.090, 65725.793 -40... 23.421382 \n", - "1 POLYGON ((65015.454 -408601.016, 64936.582 -40... 19.338329 \n", + "0 POLYGON ((65737.380 -407879.090, 65725.793 -40... 23.285073 \n", + "1 POLYGON ((65015.454 -408601.016, 64936.582 -40... 18.168282 \n", "\n", " poverty_pop_adj non_us_citizen_adj workers_with_no_car_adj \\\n", - "0 2.988619 2.473963 0.334075 \n", - "1 1.617058 0.585279 0.102575 \n", + "0 2.446784 2.699588 0.352120 \n", + "1 1.502458 0.458582 0.072408 \n", "\n", " households_with_no_cars_adj disabled_pop_adj public_asst_pop_adj \\\n", - "0 0.270872 2.600369 6.898202 \n", - "1 0.241352 3.252218 8.374914 \n", + "0 0.325034 3.114909 1.191791 \n", + "1 0.138781 2.594607 0.971469 \n", "\n", " inc_extremelylow_adj inc_verylow_adj inc_low_adj male_seniors_adj \\\n", - "0 4.984041 4.532588 2.121829 1.480766 \n", - "1 4.434843 5.092527 1.442078 2.455757 \n", + "0 5.372089 4.550476 1.977290 1.589055 \n", + "1 3.843638 5.346097 1.574866 2.226535 \n", "\n", " female_seniors_adj veteran_pop_adj male_youth_adj \\\n", - "0 1.516882 0.659121 0.740383 \n", - "1 2.823818 1.339504 0.959374 \n", + "0 1.877974 0.749384 0.993159 \n", + "1 2.974747 1.092148 0.886993 \n", "\n", " inc_total_lowincome_adj female_youth_adj total_seniors_adj jobs_tot_adj \\\n", - "0 11.638459 2.094742 2.997648 4.207542 \n", - "1 10.969448 0.645617 5.279575 2.594534 \n", + "0 11.899855 2.248152 3.467029 4.207384 \n", + "1 10.764601 0.524955 5.201282 2.594607 \n", "\n", - " total_youth_adj ALAND_adj is_route_level n_routes_effective \n", - "0 2.835125 1.092105e+06 1 0.0 \n", - "1 1.604991 8.775517e+05 1 0.0 " + " total_youth_adj ALAND_adj \n", + "0 3.241311 1.092064e+06 \n", + "1 1.411949 8.775763e+05 " ] }, - "execution_count": 14, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -288,6 +272,77 @@ "stop_route_df.head(2)" ] }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c232f5df-33b8-480d-bd83-2be29d3718d3", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "968fb96b-dfdd-41ae-8d1c-42b61d875f13", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 107213 entries, 0 to 107212\n", + "Data columns (total 35 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 107213 non-null object \n", + " 1 feed_key 107213 non-null object \n", + " 2 stop_id 107213 non-null object \n", + " 3 stop_name 107213 non-null object \n", + " 4 stop_code 103948 non-null object \n", + " 5 n_arrivals 107213 non-null float64 \n", + " 6 n_routes 107213 non-null float64 \n", + " 7 pt_geom 107213 non-null object \n", + " 8 day_type 107213 non-null object \n", + " 9 average_daily_boardings 107213 non-null float64 \n", + " 10 average_daily_alightings 98658 non-null float64 \n", + " 11 start_date 107213 non-null object \n", + " 12 end_date 107213 non-null object \n", + " 13 geometry_x 107213 non-null geometry\n", + " 14 geometry_y 107213 non-null geometry\n", + " 15 total_pop_adj 107213 non-null float64 \n", + " 16 poverty_pop_adj 107213 non-null float64 \n", + " 17 non_us_citizen_adj 107213 non-null float64 \n", + " 18 workers_with_no_car_adj 107213 non-null float64 \n", + " 19 households_with_no_cars_adj 107213 non-null float64 \n", + " 20 disabled_pop_adj 107213 non-null float64 \n", + " 21 public_asst_pop_adj 107213 non-null float64 \n", + " 22 inc_extremelylow_adj 107213 non-null float64 \n", + " 23 inc_verylow_adj 107213 non-null float64 \n", + " 24 inc_low_adj 107213 non-null float64 \n", + " 25 male_seniors_adj 107213 non-null float64 \n", + " 26 female_seniors_adj 107213 non-null float64 \n", + " 27 veteran_pop_adj 107213 non-null float64 \n", + " 28 male_youth_adj 107213 non-null float64 \n", + " 29 inc_total_lowincome_adj 107213 non-null float64 \n", + " 30 female_youth_adj 107213 non-null float64 \n", + " 31 total_seniors_adj 107213 non-null float64 \n", + " 32 jobs_tot_adj 107213 non-null float64 \n", + " 33 total_youth_adj 107213 non-null float64 \n", + " 34 ALAND_adj 107213 non-null float64 \n", + "dtypes: float64(24), geometry(2), object(9)\n", + "memory usage: 28.6+ MB\n" + ] + } + ], + "source": [ + "stop_route_df.info()" + ] + }, { "cell_type": "code", "execution_count": 6, @@ -295,19 +350,19 @@ "metadata": {}, "outputs": [], "source": [ - "stop_route_df['is_route_level'] = stop_route_df['organization_name'].isin([\n", - " 'Foothill Transit',\n", - " 'Gold Coast Transit',\n", - " 'Golden Gate Transit',\n", - " 'Long Beach Transit',\n", - " 'Orange County Transportation Authority',\n", - " 'SacRT Bus',\n", - " 'Samtrans',\n", - " 'SDMTS',\n", - " 'Culver City Bus',\n", - " 'Big Blue Bus',\n", - " 'Riverside Transit'\n", - "]).astype(int)" + "# stop_route_df['is_route_level'] = stop_route_df['organization_name'].isin([\n", + "# 'Foothill Transit',\n", + "# 'Gold Coast Transit',\n", + "# 'Golden Gate Transit',\n", + "# 'Long Beach Transit',\n", + "# 'Orange County Transportation Authority',\n", + "# 'SacRT Bus',\n", + "# 'Samtrans',\n", + "# 'SDMTS',\n", + "# 'Culver City Bus',\n", + "# 'Big Blue Bus',\n", + "# 'Riverside Transit'\n", + "# ]).astype(int)" ] }, { @@ -317,7 +372,7 @@ "metadata": {}, "outputs": [], "source": [ - "stop_route_df['n_routes_effective'] = stop_route_df['n_routes'] * (1 - stop_route_df['is_route_level'])" + "# stop_route_df['n_routes_effective'] = stop_route_df['n_routes'] * (1 - stop_route_df['is_route_level'])" ] }, { @@ -340,33 +395,33 @@ "text": [ " OLS Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings R-squared: 0.268\n", - "Model: OLS Adj. R-squared: 0.268\n", - "Method: Least Squares F-statistic: 1.383e+04\n", - "Date: Thu, 26 Mar 2026 Prob (F-statistic): 0.00\n", - "Time: 19:13:53 Log-Likelihood: -1.1223e+06\n", - "No. Observations: 151044 AIC: 2.245e+06\n", - "Df Residuals: 151039 BIC: 2.245e+06\n", + "Dep. Variable: average_daily_boardings R-squared: 0.064\n", + "Model: OLS Adj. R-squared: 0.063\n", + "Method: Least Squares F-statistic: 1817.\n", + "Date: Fri, 03 Apr 2026 Prob (F-statistic): 0.00\n", + "Time: 23:29:04 Log-Likelihood: -8.1512e+05\n", + "No. Observations: 107213 AIC: 1.630e+06\n", + "Df Residuals: 107208 BIC: 1.630e+06\n", "Df Model: 4 \n", "Covariance Type: nonrobust \n", "===============================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-----------------------------------------------------------------------------------------------\n", - "const -136.7256 1.931 -70.795 0.000 -140.511 -132.940\n", - "n_trips 2.3449 0.023 102.025 0.000 2.300 2.390\n", - "n_routes_effective 459.8605 2.861 160.725 0.000 454.253 465.468\n", - "total_pop_adj 0.0010 0.000 2.639 0.008 0.000 0.002\n", - "households_with_no_cars_adj 0.0293 0.003 11.352 0.000 0.024 0.034\n", + "const -17.3976 3.196 -5.443 0.000 -23.663 -11.133\n", + "n_arrivals 3.9255 0.048 81.190 0.000 3.831 4.020\n", + "n_routes -71.5650 2.019 -35.444 0.000 -75.522 -67.608\n", + "total_pop_adj -0.0144 0.001 -10.304 0.000 -0.017 -0.012\n", + "households_with_no_cars_adj 0.2885 0.021 13.894 0.000 0.248 0.329\n", "==============================================================================\n", - "Omnibus: 386596.460 Durbin-Watson: 0.231\n", - "Prob(Omnibus): 0.000 Jarque-Bera (JB): 20197847190.183\n", - "Skew: 28.630 Prob(JB): 0.00\n", - "Kurtosis: 1793.542 Cond. No. 1.22e+04\n", + "Omnibus: 303976.581 Durbin-Watson: 0.237\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 19935120639.743\n", + "Skew: 37.746 Prob(JB): 0.00\n", + "Kurtosis: 2114.124 Cond. No. 4.00e+03\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The condition number is large, 1.22e+04. This might indicate that there are\n", + "[2] The condition number is large, 4e+03. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } @@ -386,8 +441,8 @@ "# 3. Select only rows with all needed variables\n", "df = df.dropna(subset=[\n", " 'average_daily_boardings',\n", - " 'n_trips',\n", - " 'n_routes_effective',\n", + " 'n_arrivals',\n", + " 'n_routes',\n", " 'total_pop_adj',\n", " 'households_with_no_cars_adj'\n", "])\n", @@ -395,7 +450,7 @@ "# 4. Define Y and X\n", "y = df['average_daily_boardings']\n", "\n", - "X = df[['n_trips', 'n_routes_effective',\n", + "X = df[['n_arrivals', 'n_routes',\n", " 'total_pop_adj', 'households_with_no_cars_adj']]\n", "\n", "# 5. Add constant\n", @@ -458,18 +513,18 @@ "output_type": "stream", "text": [ " variable VIF\n", - "0 const 3.381647\n", - "1 n_trips 1.157433\n", - "2 n_routes_effective 1.153209\n", - "3 total_pop_adj 1.688035\n", - "4 households_with_no_cars_adj 1.686701\n" + "0 const 4.659402\n", + "1 n_arrivals 1.468672\n", + "2 n_routes 1.451546\n", + "3 total_pop_adj 1.382273\n", + "4 households_with_no_cars_adj 1.415487\n" ] } ], "source": [ "# Selecting only numeric regressors (Ridership ≈ Service × Demand × Accessibility)\n", "X = stop_route_df[\n", - " ['n_trips', 'n_routes_effective', 'total_pop_adj', 'households_with_no_cars_adj' ]\n", + " ['n_arrivals', 'n_routes', 'total_pop_adj', 'households_with_no_cars_adj' ]\n", "].copy()\n", "\n", "# Add constant\n", @@ -504,13 +559,13 @@ { "data": { "text/plain": [ - "count 151044.000000\n", - "mean 51.376269\n", - "std 477.085033\n", + "count 107213.000000\n", + "mean 53.838787\n", + "std 501.035998\n", "min 0.000000\n", - "25% 1.590909\n", - "50% 6.285714\n", - "75% 20.531565\n", + "25% 2.270677\n", + "50% 8.316155\n", + "75% 26.162374\n", "max 41893.868537\n", "Name: average_daily_boardings, dtype: float64" ] @@ -558,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 17, "id": "4a507286-b0a3-49ec-b6e2-6e30d5714f30", "metadata": {}, "outputs": [ @@ -568,23 +623,24 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 151044\n", - "Model: GLM Df Residuals: 151039\n", - "Model Family: Poisson Df Model: 4\n", + "Dep. Variable: average_daily_boardings No. Observations: 107213\n", + "Model: GLM Df Residuals: 107207\n", + "Model Family: Poisson Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -9.3019e+06\n", - "Date: Thu, 26 Mar 2026 Deviance: 1.8065e+07\n", - "Time: 19:13:54 Pearson chi2: 8.65e+07\n", - "No. Iterations: 8 Pseudo R-squ. (CS): 1.000\n", + "Method: IRLS Log-Likelihood: -8.7676e+06\n", + "Date: Fri, 03 Apr 2026 Deviance: 1.7120e+07\n", + "Time: 23:34:26 Pearson chi2: 1.68e+08\n", + "No. Iterations: 15 Pseudo R-squ. (CS): 1.000\n", "Covariance Type: nonrobust \n", "===============================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-----------------------------------------------------------------------------------------------\n", - "const 2.2794 0.001 3383.521 0.000 2.278 2.281\n", - "n_trips 0.0163 3.25e-06 5028.930 0.000 0.016 0.016\n", - "n_routes_effective -0.2682 0.000 -1159.847 0.000 -0.269 -0.268\n", - "total_pop_adj -3.301e-05 1.69e-07 -195.688 0.000 -3.33e-05 -3.27e-05\n", - "households_with_no_cars_adj 0.0003 8.96e-07 370.277 0.000 0.000 0.000\n", + "const 4.1372 0.001 5664.297 0.000 4.136 4.139\n", + "n_arrivals 0.0251 7.2e-06 3487.886 0.000 0.025 0.025\n", + "n_routes -1.2591 0.001 -1973.686 0.000 -1.260 -1.258\n", + "total_pop_adj -0.0001 5.24e-07 -251.929 0.000 -0.000 -0.000\n", + "households_with_no_cars_adj 0.0025 3.1e-06 790.608 0.000 0.002 0.002\n", + "poverty_pop_adj -0.0001 2.76e-06 -51.420 0.000 -0.000 -0.000\n", "===============================================================================================\n" ] } @@ -596,15 +652,15 @@ "# 2. Select needed variables (drop missing)\n", "df = df.dropna(subset=[\n", " 'average_daily_boardings',\n", - " 'n_trips', 'n_routes_effective',\n", + " 'n_arrivals', 'n_routes',\n", " 'total_pop_adj', 'households_with_no_cars_adj'\n", "])\n", "\n", "# 3. Define Y and X\n", "y = df['average_daily_boardings']\n", "\n", - "X = df[['n_trips', 'n_routes_effective',\n", - " 'total_pop_adj', 'households_with_no_cars_adj']]\n", + "X = df[['n_arrivals', 'n_routes',\n", + " 'total_pop_adj', 'households_with_no_cars_adj', 'poverty_pop_adj']]\n", "\n", "# 4. Add intercept\n", "X = sm.add_constant(X)\n", @@ -648,18 +704,10 @@ "- model fit is misleading" ] }, - { - "cell_type": "markdown", - "id": "f2038998-3c28-4fe5-ad47-a4560787d1d6", - "metadata": {}, - "source": [ - "### Negative Binomial Model " - ] - }, { "cell_type": "code", - "execution_count": 12, - "id": "489a8955-f107-4a22-9601-847a29165d9e", + "execution_count": 20, + "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ { @@ -676,36 +724,48 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 151044\n", - "Model: GLM Df Residuals: 151039\n", - "Model Family: NegativeBinomial Df Model: 4\n", + "Dep. Variable: average_daily_boardings No. Observations: 107213\n", + "Model: GLM Df Residuals: 107207\n", + "Model Family: NegativeBinomial Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -5.7523e+05\n", - "Date: Thu, 26 Mar 2026 Deviance: 2.7721e+05\n", - "Time: 19:13:56 Pearson chi2: 8.17e+05\n", - "No. Iterations: 16 Pseudo R-squ. (CS): 0.8978\n", + "Method: IRLS Log-Likelihood: -4.5370e+05\n", + "Date: Fri, 03 Apr 2026 Deviance: 2.2957e+05\n", + "Time: 23:38:53 Pearson chi2: 9.56e+05\n", + "No. Iterations: 21 Pseudo R-squ. (CS): 0.7828\n", "Covariance Type: nonrobust \n", - "===============================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-----------------------------------------------------------------------------------------------\n", - "const 1.1117 0.005 219.090 0.000 1.102 1.122\n", - "n_trips 0.0245 5.86e-05 417.746 0.000 0.024 0.025\n", - "n_routes_effective 0.3380 0.007 47.796 0.000 0.324 0.352\n", - "total_pop_adj 2.296e-05 9.5e-07 24.179 0.000 2.11e-05 2.48e-05\n", - "households_with_no_cars_adj 4.162e-05 6.65e-06 6.259 0.000 2.86e-05 5.47e-05\n", - "===============================================================================================\n" + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "n_arrivals 0.0483 0.000 477.765 0.000 0.048 0.049\n", + "n_routes 0.3658 0.004 99.198 0.000 0.359 0.373\n", + "total_pop_adj 0.0001 6.78e-06 19.563 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0006 6.52e-05 9.197 0.000 0.000 0.001\n", + "total_youth_adj 0.0004 1.95e-05 22.020 0.000 0.000 0.000\n", + "total_seniors_adj -0.0002 3.24e-05 -6.078 0.000 -0.000 -0.000\n", + "===========================================================================================\n" ] } ], "source": [ + "X = df[['n_arrivals', 'n_routes',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj']]\n", + "\n", "# Same X and y as Poisson\n", - "nb_model = sm.GLM(\n", + "nb_model_extended = sm.GLM(\n", " y,\n", " X,\n", " family=sm.families.NegativeBinomial()\n", ").fit()\n", "\n", - "print(nb_model.summary())" + "print(nb_model_extended.summary())" + ] + }, + { + "cell_type": "markdown", + "id": "f2038998-3c28-4fe5-ad47-a4560787d1d6", + "metadata": {}, + "source": [ + "### Negative Binomial Model " ] }, { @@ -751,15 +811,13 @@ "id": "3398af4b-6234-48ea-9200-e06d402865fe", "metadata": {}, "source": [ - "1. n_trips coefficient = 0.0245\n", + "1. n_arrivals coefficient = 0.0483\n", "Interpretation: Each additional trip serving the stop increases expected daily boardings by:\n", - "exp(0.0245) − 1 ≈ 2.48%\n", + "exp(0.0483) − 1 ≈ 4.95%\n", "\n", - "2. n_routes_effective coefficient = 0.3380\n", + "2. n_routes coefficient = 0.3658\n", "Interpretation: For stops/agencies where n_routes_effective > 0 (aggregated stop-level data), each additional route increases expected daily boardings by:\n", - "exp(0.3380)−1 ≈ 40.2%\n", - "Important: This coefficient only applies to stops/organizations where aggregated route data exists.\n", - "Route-level agencies (is_route_level = 1) have n_routes_effective = 0, so this coefficient does not affect them.\n", + "exp(0.3658)−1 ≈ 44.1%\n", "\n" ] }, @@ -772,14 +830,14 @@ "total_pop_adj represents the estimated number of residents physically inside a stop’s 600 m buffer, after adjusting each census tract by the fraction of its area that overlaps the buffer.\n", "Example: if 10% of a tract lies inside a stop’s buffer, 10% of the tract’s population is assigned to that stop.\n", "Coefficient interpretation:\n", - "Model coefficient: 2.296e-05\n", - "Effect per additional person: exp(2.296𝑒−05)−1≈0.0023% increase in expected daily boardings per person\n", + "Model coefficient: 0.0001\n", + "Effect per additional person: exp(0.0001)−1≈0.01% increase in expected daily boardings per person\n", "\n", " This looks tiny for one person, but stop buffers usually contain hundreds or thousands of people.\n", " Scaling to realistic population changes:\n", "\n", - " +1,000 residents in the stop buffer: exp(1000×2.296𝑒−05)−1 ≈ 2.32% increase in ridership\n", - " +10,000 residents in the stop buffer: exp(10,000×2.296𝑒−05)−1 ≈ 25.8% increase in ridership" + " +1,000 residents in the stop buffer: exp(1000×0.0001)−1 ≈ 10.5% increase in ridership\n", + " +10,000 residents in the stop buffer: exp(10,000×0.0001)−1 ≈ 171.8% increase in ridership" ] }, { @@ -787,78 +845,14 @@ "id": "6f10edb6-92ca-4719-8574-599c9b2139a1", "metadata": {}, "source": [ - "4. households_with_no_cars_adj (coef = 4.162e-05)\n", - "households_with_no_cars_adj is the estimated number of zero‑car households within the stop catchment, computed the same area-weighted way.\n", + "4. workers_with_no_car_adj (coef = 0.0006)\n", + "workers_with_no_car_adj is the estimated number of population that do not own a car within the stop catchment, computed the same area-weighted way.\n", "\n", "For each additional zero-car household in the catchment:\n", - "exp(4.162e-05) – 1 ≈ 0.00416% increase in expected boardings\n", - "\n", - "- +100 zero-car households in buffer : ≈ 0.42% ridership increase\n", - "- +1,000 zero-car households : ≈ 4.2% ridership increase" - ] - }, - { - "cell_type": "markdown", - "id": "c449b3d1-6cdc-4899-9cea-11d504a504af", - "metadata": {}, - "source": [ - "#### Adding more variables in the model" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "252de74b-d050-4c06-b526-3110aff74815", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", - " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Generalized Linear Model Regression Results \n", - "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 151044\n", - "Model: GLM Df Residuals: 151038\n", - "Model Family: NegativeBinomial Df Model: 5\n", - "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -5.9748e+05\n", - "Date: Thu, 26 Mar 2026 Deviance: 3.2170e+05\n", - "Time: 19:26:30 Pearson chi2: 1.26e+06\n", - "No. Iterations: 20 Pseudo R-squ. (CS): 0.8628\n", - "Covariance Type: nonrobust \n", - "===============================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-----------------------------------------------------------------------------------------------\n", - "n_trips 0.0358 3.86e-05 926.555 0.000 0.036 0.036\n", - "n_routes_effective 0.3503 0.007 50.093 0.000 0.337 0.364\n", - "total_pop_adj 9.699e-05 1.7e-06 57.126 0.000 9.37e-05 0.000\n", - "households_with_no_cars_adj 3.543e-05 7.21e-06 4.912 0.000 2.13e-05 4.96e-05\n", - "total_youth_adj 2.4e-05 5.77e-06 4.159 0.000 1.27e-05 3.53e-05\n", - "total_seniors_adj -3.337e-05 8.55e-06 -3.903 0.000 -5.01e-05 -1.66e-05\n", - "===============================================================================================\n" - ] - } - ], - "source": [ - "X_extra = df[['n_trips', 'n_routes_effective',\n", - " 'total_pop_adj', 'households_with_no_cars_adj', 'total_youth_adj', 'total_seniors_adj']]\n", - "\n", - "# Same X and y as Poisson\n", - "nb_model_extended = sm.GLM(\n", - " y,\n", - " X_extra,\n", - " family=sm.families.NegativeBinomial()\n", - ").fit()\n", + "exp(0.0006) – 1 ≈ 0.06%% increase in expected boardings\n", "\n", - "print(nb_model_extended.summary())" + "- +100 zero-car households in buffer : ≈ 6.18% ridership increase\n", + "- +1,000 zero-car households : ≈ 82.2% ridership increase" ] }, { From 64f4be0b73dbdd20f416c7d7b9d5e5d91a223313 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Mon, 6 Apr 2026 16:37:05 +0000 Subject: [PATCH 09/21] model exploration with jobs data from 2023 added --- ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb | 54 +-- .../ahsc_acs_2/06_data_processing.ipynb | 6 +- .../ahsc_acs_2/07_Model_exploration.ipynb | 371 +++++++++++++----- ahsc_grant/ahsc_acs_2/Notes.md | 14 - 4 files changed, 296 insertions(+), 149 deletions(-) delete mode 100644 ahsc_grant/ahsc_acs_2/Notes.md diff --git a/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb b/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb index d0e6cbd6f..641f8a7dc 100644 --- a/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb +++ b/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb @@ -53,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "1b062163-8b62-4dec-8a0a-0edd514c4865", "metadata": {}, "outputs": [], @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "7ae6a36d-844c-4e92-95de-f6b7bcafcf2b", "metadata": {}, "outputs": [], @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "b7fe33a9-165a-4b93-a714-81615c182a1a", "metadata": {}, "outputs": [], @@ -84,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "fab55900-24f6-4172-a92f-874341cd41fc", "metadata": {}, "outputs": [ @@ -93,16 +93,16 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 255006 entries, 0 to 255005\n", + "RangeIndex: 368595 entries, 0 to 368594\n", "Data columns (total 4 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 w_geocode 255006 non-null int64 \n", - " 1 segment 255006 non-null object\n", - " 2 year 255006 non-null int64 \n", - " 3 jobs_prv 255006 non-null int64 \n", + " 0 h_geocode 368595 non-null int64 \n", + " 1 segment 368595 non-null object\n", + " 2 year 368595 non-null int64 \n", + " 3 jobs_prv 368595 non-null int64 \n", "dtypes: int64(3), object(1)\n", - "memory usage: 7.8+ MB\n" + "memory usage: 11.2+ MB\n" ] } ], @@ -112,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "a5b4ef5a-220e-4aba-aa3c-417709afa3f7", "metadata": {}, "outputs": [ @@ -121,16 +121,16 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 257557 entries, 0 to 257556\n", + "RangeIndex: 370418 entries, 0 to 370417\n", "Data columns (total 4 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 w_geocode 257557 non-null int64 \n", - " 1 segment 257557 non-null object\n", - " 2 year 257557 non-null int64 \n", - " 3 jobs_tot 257557 non-null int64 \n", + " 0 h_geocode 370418 non-null int64 \n", + " 1 segment 370418 non-null object\n", + " 2 year 370418 non-null int64 \n", + " 3 jobs_tot 370418 non-null int64 \n", "dtypes: int64(3), object(1)\n", - "memory usage: 7.9+ MB\n" + "memory usage: 11.3+ MB\n" ] } ], @@ -147,8 +147,8 @@ "source": [ "merged_df = pd.merge(\n", " job_density_tot,\n", - " job_density_prv[['w_geocode', 'jobs_prv']],\n", - " on='w_geocode',\n", + " job_density_prv[['h_geocode', 'jobs_prv']],\n", + " on='h_geocode',\n", " how='left'\n", ")" ] @@ -161,7 +161,7 @@ "outputs": [], "source": [ "#Sort by GEOID\n", - "merged_df = merged_df.sort_values(by='w_geocode')\n", + "merged_df = merged_df.sort_values(by='h_geocode')\n", "\n", "#Create jobs_fed = jobs_total - jobs_prv\n", "merged_df['jobs_fed'] = merged_df['jobs_tot'] - merged_df['jobs_prv']\n" @@ -174,7 +174,7 @@ "metadata": {}, "outputs": [], "source": [ - "merged_df['GEOID'] = merged_df['w_geocode'].astype(str).str.zfill(15).str[:11]" + "merged_df['GEOID'] = merged_df['h_geocode'].astype(str).str.zfill(15).str[:11]" ] }, { @@ -225,13 +225,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "saved gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026/job_density_2022.parquet\n" + "saved gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026/job_density_2023.parquet\n" ] } ], "source": [ - "export_gdf(grouped_df, \"job_density_2022\")" + "export_gdf(grouped_df, \"job_density_2023\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a41db33f-0db0-4123-a289-e7813eafac88", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 0a95e7093..4bd324fa2 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -10,7 +10,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.3)\n", + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -92,7 +92,7 @@ "source": [ "# Load job density data from GCS and select required columns\n", "# Open the GCS file using your existing fs object\n", - "with fs.open(f\"{GCS_FILE_PATH}/job_density_2022.parquet\", \"rb\") as f:\n", + "with fs.open(f\"{GCS_FILE_PATH}/job_density_2023.parquet\", \"rb\") as f:\n", " jobdata = pd.read_parquet(f)\n", "\n", "# Select only the columns you want, including geometry\n", @@ -806,7 +806,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb index 38a8a6a90..ba80e8e6e 100644 --- a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -18,7 +18,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.3)\n", + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -76,7 +76,9 @@ "cell_type": "code", "execution_count": 5, "id": "faf985a0-8ade-4830-8eb6-739b1254e55c", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -171,7 +173,7 @@ " 11.899855\n", " 2.248152\n", " 3.467029\n", - " 4.207384\n", + " 15.294654\n", " 3.241311\n", " 1.092064e+06\n", " \n", @@ -209,7 +211,7 @@ " 10.764601\n", " 0.524955\n", " 5.201282\n", - " 2.594607\n", + " 11.024062\n", " 1.411949\n", " 8.775763e+05\n", " \n", @@ -255,8 +257,8 @@ "1 2.974747 1.092148 0.886993 \n", "\n", " inc_total_lowincome_adj female_youth_adj total_seniors_adj jobs_tot_adj \\\n", - "0 11.899855 2.248152 3.467029 4.207384 \n", - "1 10.764601 0.524955 5.201282 2.594607 \n", + "0 11.899855 2.248152 3.467029 15.294654 \n", + "1 10.764601 0.524955 5.201282 11.024062 \n", "\n", " total_youth_adj ALAND_adj \n", "0 3.241311 1.092064e+06 \n", @@ -274,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "id": "c232f5df-33b8-480d-bd83-2be29d3718d3", "metadata": {}, "outputs": [], @@ -286,7 +288,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "id": "968fb96b-dfdd-41ae-8d1c-42b61d875f13", "metadata": {}, "outputs": [ @@ -304,8 +306,8 @@ " 2 stop_id 107213 non-null object \n", " 3 stop_name 107213 non-null object \n", " 4 stop_code 103948 non-null object \n", - " 5 n_arrivals 107213 non-null float64 \n", - " 6 n_routes 107213 non-null float64 \n", + " 5 n_arrivals 107213 non-null int64 \n", + " 6 n_routes 107213 non-null int64 \n", " 7 pt_geom 107213 non-null object \n", " 8 day_type 107213 non-null object \n", " 9 average_daily_boardings 107213 non-null float64 \n", @@ -334,7 +336,7 @@ " 32 jobs_tot_adj 107213 non-null float64 \n", " 33 total_youth_adj 107213 non-null float64 \n", " 34 ALAND_adj 107213 non-null float64 \n", - "dtypes: float64(24), geometry(2), object(9)\n", + "dtypes: float64(22), geometry(2), int64(2), object(9)\n", "memory usage: 28.6+ MB\n" ] } @@ -343,38 +345,6 @@ "stop_route_df.info()" ] }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f7c88d39-b2b4-46b0-9ef4-b3ea49fb09ea", - "metadata": {}, - "outputs": [], - "source": [ - "# stop_route_df['is_route_level'] = stop_route_df['organization_name'].isin([\n", - "# 'Foothill Transit',\n", - "# 'Gold Coast Transit',\n", - "# 'Golden Gate Transit',\n", - "# 'Long Beach Transit',\n", - "# 'Orange County Transportation Authority',\n", - "# 'SacRT Bus',\n", - "# 'Samtrans',\n", - "# 'SDMTS',\n", - "# 'Culver City Bus',\n", - "# 'Big Blue Bus',\n", - "# 'Riverside Transit'\n", - "# ]).astype(int)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "2b189045-61bc-4910-b093-78e9f5e79f97", - "metadata": {}, - "outputs": [], - "source": [ - "# stop_route_df['n_routes_effective'] = stop_route_df['n_routes'] * (1 - stop_route_df['is_route_level'])" - ] - }, { "cell_type": "markdown", "id": "c9738ec6-6efb-48cc-b323-77517d639525", @@ -395,33 +365,33 @@ "text": [ " OLS Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings R-squared: 0.064\n", + "Dep. Variable: average_daily_boardings R-squared: 0.063\n", "Model: OLS Adj. R-squared: 0.063\n", - "Method: Least Squares F-statistic: 1817.\n", - "Date: Fri, 03 Apr 2026 Prob (F-statistic): 0.00\n", - "Time: 23:29:04 Log-Likelihood: -8.1512e+05\n", + "Method: Least Squares F-statistic: 1794.\n", + "Date: Mon, 06 Apr 2026 Prob (F-statistic): 0.00\n", + "Time: 16:25:35 Log-Likelihood: -8.1516e+05\n", "No. Observations: 107213 AIC: 1.630e+06\n", "Df Residuals: 107208 BIC: 1.630e+06\n", "Df Model: 4 \n", "Covariance Type: nonrobust \n", - "===============================================================================================\n", - " coef std err t P>|t| [0.025 0.975]\n", - "-----------------------------------------------------------------------------------------------\n", - "const -17.3976 3.196 -5.443 0.000 -23.663 -11.133\n", - "n_arrivals 3.9255 0.048 81.190 0.000 3.831 4.020\n", - "n_routes -71.5650 2.019 -35.444 0.000 -75.522 -67.608\n", - "total_pop_adj -0.0144 0.001 -10.304 0.000 -0.017 -0.012\n", - "households_with_no_cars_adj 0.2885 0.021 13.894 0.000 0.248 0.329\n", + "===========================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -19.7679 3.189 -6.199 0.000 -26.018 -13.518\n", + "n_arrivals 3.9544 0.048 81.915 0.000 3.860 4.049\n", + "n_routes -71.0191 2.019 -35.173 0.000 -74.977 -67.062\n", + "total_pop_adj -0.0113 0.001 -8.190 0.000 -0.014 -0.009\n", + "workers_with_no_car_adj 0.3106 0.031 10.181 0.000 0.251 0.370\n", "==============================================================================\n", - "Omnibus: 303976.581 Durbin-Watson: 0.237\n", - "Prob(Omnibus): 0.000 Jarque-Bera (JB): 19935120639.743\n", - "Skew: 37.746 Prob(JB): 0.00\n", - "Kurtosis: 2114.124 Cond. No. 4.00e+03\n", + "Omnibus: 303996.022 Durbin-Watson: 0.236\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 19913715319.427\n", + "Skew: 37.754 Prob(JB): 0.00\n", + "Kurtosis: 2112.989 Cond. No. 3.98e+03\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The condition number is large, 4e+03. This might indicate that there are\n", + "[2] The condition number is large, 3.98e+03. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } @@ -444,14 +414,14 @@ " 'n_arrivals',\n", " 'n_routes',\n", " 'total_pop_adj',\n", - " 'households_with_no_cars_adj'\n", + " 'workers_with_no_car_adj'\n", "])\n", "\n", "# 4. Define Y and X\n", "y = df['average_daily_boardings']\n", "\n", "X = df[['n_arrivals', 'n_routes',\n", - " 'total_pop_adj', 'households_with_no_cars_adj']]\n", + " 'total_pop_adj', 'workers_with_no_car_adj']]\n", "\n", "# 5. Add constant\n", "X = sm.add_constant(X)\n", @@ -468,12 +438,13 @@ "id": "ad40b63a-1a6f-4543-90f6-d009244e5d19", "metadata": {}, "source": [ - "- About 26.8% of the variation in dependent variable (here, stop-level ridership) is explained by the predictors in the model.\n", - "- Skew = 28.63 → Residuals are extremely asymmetric, violating normality.\n", - "- Kurtosis = 1793.542 → Residuals have ultra‑heavy tails, far from a normal distribution.\n", - "- JB statistic = 20 billion → The Jarque–Bera test overwhelmingly rejects normality.\n", - "- Durbin–Watson = 0.231 → Strong positive autocorrelation remains in the residuals.\n", - "- Condition number = 1.22e+04 → Predictors have scaling issues and possible multicollinearity." + "- About 6.3% of the variation in dependent variable (here, stop-level ridership) is explained by the predictors in the model.\n", + "- 93.7% of the variation is due to other factors not captured by this model.\n", + "- Skew = 37.74 → Residuals are extremely asymmetric, violating normality.\n", + "- Kurtosis = 2112.989 → Residuals have ultra‑heavy tails, far from a normal distribution.\n", + "- JB statistic = 19 billion → The Jarque–Bera test overwhelmingly rejects normality.\n", + "- Durbin–Watson = 0.236 → Strong positive autocorrelation remains in the residuals.\n", + "- Condition number = 3.98e+03 → Predictors have scaling issues and possible multicollinearity." ] }, { @@ -504,7 +475,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 24, "id": "35f60d93-ebce-4d2d-af7c-bc203e093dc9", "metadata": {}, "outputs": [ @@ -512,19 +483,19 @@ "name": "stdout", "output_type": "stream", "text": [ - " variable VIF\n", - "0 const 4.659402\n", - "1 n_arrivals 1.468672\n", - "2 n_routes 1.451546\n", - "3 total_pop_adj 1.382273\n", - "4 households_with_no_cars_adj 1.415487\n" + " variable VIF\n", + "0 const 4.632923\n", + "1 n_arrivals 1.462856\n", + "2 n_routes 1.450437\n", + "3 total_pop_adj 1.341458\n", + "4 workers_with_no_car_adj 1.361639\n" ] } ], "source": [ "# Selecting only numeric regressors (Ridership ≈ Service × Demand × Accessibility)\n", "X = stop_route_df[\n", - " ['n_arrivals', 'n_routes', 'total_pop_adj', 'households_with_no_cars_adj' ]\n", + " ['n_arrivals', 'n_routes', 'total_pop_adj', 'workers_with_no_car_adj']\n", "].copy()\n", "\n", "# Add constant\n", @@ -613,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 11, "id": "4a507286-b0a3-49ec-b6e2-6e30d5714f30", "metadata": {}, "outputs": [ @@ -627,21 +598,21 @@ "Model: GLM Df Residuals: 107207\n", "Model Family: Poisson Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -8.7676e+06\n", - "Date: Fri, 03 Apr 2026 Deviance: 1.7120e+07\n", - "Time: 23:34:26 Pearson chi2: 1.68e+08\n", + "Method: IRLS Log-Likelihood: -8.8661e+06\n", + "Date: Mon, 06 Apr 2026 Deviance: 1.7317e+07\n", + "Time: 16:25:36 Pearson chi2: 1.73e+08\n", "No. Iterations: 15 Pseudo R-squ. (CS): 1.000\n", "Covariance Type: nonrobust \n", - "===============================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-----------------------------------------------------------------------------------------------\n", - "const 4.1372 0.001 5664.297 0.000 4.136 4.139\n", - "n_arrivals 0.0251 7.2e-06 3487.886 0.000 0.025 0.025\n", - "n_routes -1.2591 0.001 -1973.686 0.000 -1.260 -1.258\n", - "total_pop_adj -0.0001 5.24e-07 -251.929 0.000 -0.000 -0.000\n", - "households_with_no_cars_adj 0.0025 3.1e-06 790.608 0.000 0.002 0.002\n", - "poverty_pop_adj -0.0001 2.76e-06 -51.420 0.000 -0.000 -0.000\n", - "===============================================================================================\n" + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const 4.1326 0.001 5681.880 0.000 4.131 4.134\n", + "n_arrivals 0.0252 7.21e-06 3498.191 0.000 0.025 0.025\n", + "n_routes -1.2700 0.001 -1984.629 0.000 -1.271 -1.269\n", + "total_pop_adj -0.0002 5.23e-07 -293.795 0.000 -0.000 -0.000\n", + "workers_with_no_car_adj 0.0027 3.7e-06 733.624 0.000 0.003 0.003\n", + "poverty_pop_adj 0.0003 2.35e-06 146.321 0.000 0.000 0.000\n", + "===========================================================================================\n" ] } ], @@ -653,14 +624,14 @@ "df = df.dropna(subset=[\n", " 'average_daily_boardings',\n", " 'n_arrivals', 'n_routes',\n", - " 'total_pop_adj', 'households_with_no_cars_adj'\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'poverty_pop_adj'\n", "])\n", "\n", "# 3. Define Y and X\n", "y = df['average_daily_boardings']\n", "\n", "X = df[['n_arrivals', 'n_routes',\n", - " 'total_pop_adj', 'households_with_no_cars_adj', 'poverty_pop_adj']]\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'poverty_pop_adj']]\n", "\n", "# 4. Add intercept\n", "X = sm.add_constant(X)\n", @@ -678,10 +649,11 @@ "metadata": {}, "source": [ "This Poisson model fits very poorly: the Pearson chi‑square is huge, meaning the data are heavily over‑dispersed and the Poisson assumptions break.\n", - "- The coefficient for n_trips (0.0163) means each extra trip increases expected ridership by about 1.6%.\n", - "- n_routes (–0.268) is negative, which is unrealistic and indicates model misspecification due to over‑dispersion.\n", + "- The coefficient for n_arrivals (0.0252) means each extra trip increases expected ridership by about 2.5%.\n", + "- n_routes (-1.2700) is negative, which is unrealistic and indicates model misspecification due to over‑dispersion.\n", "- total_pop_adj is negative, also unrealistic — another sign the Poisson model is not appropriate.\n", - "- households_with_no_cars_adj is positive, meaning more zero‑car households predict higher ridership.\n", + "- workers_with_no_car_adj is positive, meaning more zero‑car households predict higher ridership.\n", + "- poverty_pop_adj is positive, meaning as the adjusted population living below the poverty level increases in a transit agency’s service area, ridership tends to increase.\n", "Overall: the Poisson model’s signs are distorted." ] }, @@ -690,23 +662,31 @@ "id": "038cea10-05be-4cbe-9359-a174e014d6b3", "metadata": {}, "source": [ - "Pearson chi‑square = 4.77e+07 and Degrees of freedom ≈ 143325.\n", + "Pearson chi‑square = 1.73e+08 and Degrees of freedom ≈ 143325.\n", "Hence, \n", - "Dispersion estimate = Pearson χ² / df; 8.30e+07 / 151,044 ≈ 332.8\n", + "Dispersion estimate = Pearson χ² / df; 1.73e+08 / 107213 ≈ 1613.61\n", "\n", - "A valid Poisson model should have dispersion ≈ 1. Dispersion ≈ 550, which means:\n", + "A valid Poisson model should have dispersion ≈ 1. Dispersion ≈ 1613.61, which means:\n", "Poisson model is severely overdispersed. >1 → overdispersion (variance is larger than the model assumes).\n", "\n", "Variance >> mean:\n", "- Poisson standard errors become too small\n", "- p‑values become artificially tiny\n", "- coefficients look falsely “precise”\n", - "- model fit is misleading" + "- model fit is misleading\"" + ] + }, + { + "cell_type": "markdown", + "id": "bf8627ce-e380-417d-b5db-5382b8e35162", + "metadata": {}, + "source": [ + "### Negative Binomial Model" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 25, "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ @@ -729,8 +709,8 @@ "Model Family: NegativeBinomial Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -4.5370e+05\n", - "Date: Fri, 03 Apr 2026 Deviance: 2.2957e+05\n", - "Time: 23:38:53 Pearson chi2: 9.56e+05\n", + "Date: Mon, 06 Apr 2026 Deviance: 2.2957e+05\n", + "Time: 16:31:24 Pearson chi2: 9.56e+05\n", "No. Iterations: 21 Pseudo R-squ. (CS): 0.7828\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -848,13 +828,58 @@ "4. workers_with_no_car_adj (coef = 0.0006)\n", "workers_with_no_car_adj is the estimated number of population that do not own a car within the stop catchment, computed the same area-weighted way.\n", "\n", - "For each additional zero-car household in the catchment:\n", + "For each additional zero-car population in the catchment:\n", "exp(0.0006) – 1 ≈ 0.06%% increase in expected boardings\n", "\n", - "- +100 zero-car households in buffer : ≈ 6.18% ridership increase\n", - "- +1,000 zero-car households : ≈ 82.2% ridership increase" + "- +100 zero-car population in buffer : ≈ 6.18% ridership increase\n", + "- +1,000 zero-car population : ≈ 82.2% ridership increase" + ] + }, + { + "cell_type": "markdown", + "id": "8b03bd41-06af-4a89-b626-d1a641665a4c", + "metadata": {}, + "source": [ + "5. total_youth_adj (coef = 0.0004)\n", + "total_youth_adj is the estimated number of youth population within the stop catchment, computed the same area-weighted way.\n", + "\n", + "For each additional youth population in the catchment:\n", + "exp(0.0006) – 1 ≈ 0.04% increase in expected boardings\n", + "\n", + "- +100 youths in buffer : ≈ 4.08% ridership increase\n", + "- +1,000 youths in buffer : ≈ 49.18% ridership increase" + ] + }, + { + "cell_type": "markdown", + "id": "6bc0cb46-12de-4a5d-bb88-ffb40890a497", + "metadata": {}, + "source": [ + "5. total_senior_adj (coef = -0.0002)\n", + "total_senior_adj is the estimated number of senior population within the stop catchment, computed the same area-weighted way.\n", + "\n", + "For each additional senior population in the catchment:\n", + "exp(-0.0002) – 1 ≈ –0.02% change in expected boardings\n", + "\n", + "- +100 seniors in buffer : ≈ 1.98% ridership decrease\n", + "- +1,000 seniors in buffer : ≈ 18.13% ridership decrease\n", + "Seniors are less likely to use transit in this dataset" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "28e43141-f8c0-4761-8fde-bb30ef460a66", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "37ae94b4-579d-4a8c-b9d6-86212c7d9200", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "id": "aca27ba2-2c31-41fd-b97a-f441f1854cd8", @@ -879,9 +904,8 @@ "+ \\beta_1 \\, (\\text{n\\_trips}_i)\n", "+ \\beta_2 \\, (\\text{n\\_routes}_i)\n", "+ \\beta_3 \\, (\\text{total\\_pop\\_adj}_i)\n", - "+ \\beta_4 \\, (\\text{households\\_with\\_no\\_cars\\_adj}_i)\n", + "+ \\beta_4 \\, (\\text{workers\\_with\\_no\\_cars\\_adj}_i)\n", "+ \\beta_5 \\, (\\text{total\\_youth\\_adj}_i)\n", - "+ \\beta_6 \\, (\\text{inc\\_total\\_lowincome\\_adj}_i)\n", "+ \\beta_7 \\, (\\text{total\\_seniors\\_adj}_i)\n", "$$\n", "\n", @@ -905,9 +929,8 @@ "+ \\beta_1 \\, \\text{n\\_trips}_i\n", "+ \\beta_2 \\, \\text{n\\_routes}_i\n", "+ \\beta_3 \\, \\text{total\\_pop\\_adj}_i\n", - "+ \\beta_4 \\, \\text{households\\_with\\_no\\_cars\\_adj}_i\n", + "+ \\beta_4 \\, \\text{workers\\_with\\_no\\_cars\\_adj}_i\n", "+ \\beta_5 \\, \\text{total\\_youth\\_adj}_i\n", - "+ \\beta_6 \\, \\text{inc\\_total\\_lowincome\\_adj}_i\n", "+ \\beta_7 \\, \\text{total\\_seniors\\_adj}_i\n", "\\right)\n", "$$\n", @@ -948,8 +971,138 @@ { "cell_type": "code", "execution_count": null, + "id": "47da5b71-14f7-42c6-9d62-fd8879173dc7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "a305f1ed-6ea6-4ad0-8f7a-24a8dd792ede", + "metadata": {}, + "source": [ + "### Other Tests " + ] + }, + { + "cell_type": "markdown", + "id": "7b65d031-ff8d-4c1c-9325-bfed7a9a4cdc", + "metadata": {}, + "source": [ + "Total Jobs variable added" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "247a1b69-f5ff-4414-8e06-05a786d2b13c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " variable VIF\n", + "0 const 4.687084\n", + "1 n_arrivals 1.472680\n", + "2 n_routes 1.454191\n", + "3 total_pop_adj 32.355664\n", + "4 workers_with_no_car_adj 1.399311\n", + "5 total_youth_adj 2.977953\n", + "6 total_seniors_adj 3.963322\n", + "7 jobs_tot_adj 23.697123\n" + ] + } + ], + "source": [ + "# Selecting only numeric regressors (Ridership ≈ Service × Demand × Accessibility)\n", + "X = stop_route_df[\n", + " ['n_arrivals', 'n_routes', 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'jobs_tot_adj']\n", + "].copy()\n", + "\n", + "# Add constant\n", + "X = sm.add_constant(X)\n", + "\n", + "vif_df = pd.DataFrame()\n", + "vif_df[\"variable\"] = X.columns\n", + "vif_df[\"VIF\"] = [\n", + " variance_inflation_factor(X.values, i)\n", + " for i in range(X.shape[1])\n", + "]\n", + "\n", + "print(vif_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "5b21ac3d-f52d-48c7-92cb-4cd40e14fda9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 107213\n", + "Model: GLM Df Residuals: 107206\n", + "Model Family: NegativeBinomial Df Model: 6\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -4.5361e+05\n", + "Date: Mon, 06 Apr 2026 Deviance: 2.2938e+05\n", + "Time: 16:33:10 Pearson chi2: 9.58e+05\n", + "No. Iterations: 20 Pseudo R-squ. (CS): 0.7832\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "n_arrivals 0.0483 0.000 477.751 0.000 0.048 0.049\n", + "n_routes 0.3627 0.004 98.338 0.000 0.355 0.370\n", + "total_pop_adj -5.927e-05 1.45e-05 -4.100 0.000 -8.76e-05 -3.09e-05\n", + "workers_with_no_car_adj 0.0006 6.52e-05 8.728 0.000 0.000 0.001\n", + "total_youth_adj 0.0005 2.14e-05 25.471 0.000 0.001 0.001\n", + "total_seniors_adj -0.0002 3.28e-05 -7.492 0.000 -0.000 -0.000\n", + "jobs_tot_adj 0.0004 2.69e-05 15.052 0.000 0.000 0.000\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "X = df[['n_arrivals', 'n_routes',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'jobs_tot_adj']]\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended.summary())" + ] + }, + { + "cell_type": "markdown", "id": "751c0d23-b477-454a-87a0-4ab09eb23e91", "metadata": {}, + "source": [ + "The addition of `jobs_tot_adj` introduces **substantial multicollinearity** into the model, as evidenced by the sharp increase in VIF values for both `jobs_tot_adj` and `total_pop_adj` (from ~1.3 to over 18). This indicates that these two variables are highly correlated and capture overlapping spatial characteristics, namely, that areas with higher population tend to also have higher employment. As a result, the model has difficulty disentangling their individual effects. This is reflected in the coefficient changes: most notably, `total_pop_adj` switches from a positive coefficient in the original model to a **negative and statistically significant coefficient** after adding jobs, which is counterintuitive and suggests instability due to multicollinearity rather than a true negative relationship. Meanwhile, `jobs_tot_adj` enters the model as a positive and significant predictor, absorbing much of the explanatory power previously attributed to population. Despite only a marginal improvement in overall model fit (Pseudo R² increasing slightly from 0.7828 to 0.7832), the interpretability of individual coefficients is reduced. Overall, the inclusion of jobs reveals that employment and population are not independently contributing to ridership in this specification, but rather competing to explain the same underlying spatial variation.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75c1f086-5bf3-448c-91cc-2617d4d750e8", + "metadata": {}, "outputs": [], "source": [] } diff --git a/ahsc_grant/ahsc_acs_2/Notes.md b/ahsc_grant/ahsc_acs_2/Notes.md deleted file mode 100644 index c24ae57ae..000000000 --- a/ahsc_grant/ahsc_acs_2/Notes.md +++ /dev/null @@ -1,14 +0,0 @@ -Route-level agencies (e.g., SacRT Bus, SamTrans, Gold Coast Transit): - -They report ridership per route per stop per day. -Any service increase (extra trips) can be directly linked to a specific route. -The model coefficient for n_trips tells you how adding a bus trip on that route increases ridership. -The n_routes coefficient is irrelevant because each route is already counted individually. - - -Aggregated agencies (e.g., Caltrain, BART): -They report ridership aggregated across multiple routes at a stop or over the whole system — not per route. -Any service increase is spread across the stop’s ridership, so we cannot directly tie extra trips to a single route. -The model coefficient for n_trips still tells us the expected increase in ridership per additional trip, but it reflects the average effect across all routes included in the aggregation. -Example: If Caltrain runs 4 trains per day and you add 1 more train, the n_trips coefficient predicts the average ridership increase per stop. -The n_routes_effective coefficient is meaningful here, because the number of routes contributes to the total aggregated ridership — more routes generally mean more total boardings at a stop. From add5ae2038d77f434953149a68b64d9c79e8ebc1 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 9 Apr 2026 19:21:10 +0000 Subject: [PATCH 10/21] groupby variables changed that changed the model coefficients --- .../ahsc_acs_2/06_data_processing.ipynb | 243 +++++---- .../ahsc_acs_2/07_Model_exploration.ipynb | 503 +++++++++--------- 2 files changed, 374 insertions(+), 372 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb index 4bd324fa2..656e40c7a 100644 --- a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb @@ -118,23 +118,23 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 21220 entries, 0 to 21219\n", + "RangeIndex: 21265 entries, 0 to 21264\n", "Data columns (total 13 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 21220 non-null object \n", - " 1 feed_key 21219 non-null object \n", - " 2 stop_id 21219 non-null object \n", - " 3 stop_name 21220 non-null object \n", + " 0 organization_name 21265 non-null object \n", + " 1 feed_key 21264 non-null object \n", + " 2 stop_id 21264 non-null object \n", + " 3 stop_name 21265 non-null object \n", " 4 stop_code 20543 non-null object \n", - " 5 n_arrivals 21219 non-null float64\n", - " 6 n_routes 21219 non-null float64\n", - " 7 pt_geom 21219 non-null object \n", - " 8 day_type 21220 non-null object \n", - " 9 average_daily_boardings 21220 non-null float64\n", - " 10 average_daily_alightings 19042 non-null float64\n", - " 11 start_date 21220 non-null object \n", - " 12 end_date 21220 non-null object \n", + " 5 n_arrivals 21264 non-null float64\n", + " 6 n_routes 21264 non-null float64\n", + " 7 pt_geom 21264 non-null object \n", + " 8 day_type 21265 non-null object \n", + " 9 average_daily_boardings 21265 non-null float64\n", + " 10 average_daily_alightings 19087 non-null float64\n", + " 11 start_date 21265 non-null object \n", + " 12 end_date 21265 non-null object \n", "dtypes: float64(4), object(9)\n", "memory usage: 2.1+ MB\n" ] @@ -330,24 +330,7 @@ " ...\n", " \n", " \n", - " 21215\n", - " Caltrain\n", - " f189d5677d4a106b98585f3c5d4fd42c\n", - " 70091\n", - " San Mateo\n", - " NaN\n", - " 52.0\n", - " 3.0\n", - " POINT(-122.323851 37.568087)\n", - " Weekday\n", - " 1074.189854\n", - " NaN\n", - " 2023-11-01\n", - " 2025-07-31\n", - " POINT (-122.32385 37.56809)\n", - " \n", - " \n", - " 21216\n", + " 21260\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70241\n", @@ -364,7 +347,7 @@ " POINT (-121.93608 37.35324)\n", " \n", " \n", - " 21217\n", + " 21261\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70041\n", @@ -381,7 +364,7 @@ " POINT (-122.40498 37.65594)\n", " \n", " \n", - " 21218\n", + " 21262\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70221\n", @@ -398,7 +381,7 @@ " POINT (-122.03137 37.37892)\n", " \n", " \n", - " 21219\n", + " 21263\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70271\n", @@ -414,9 +397,26 @@ " 2025-07-31\n", " POINT (-121.88372 37.31174)\n", " \n", + " \n", + " 21264\n", + " City of Burbank\n", + " cc6a68a39d22c29b49116584971e69a8\n", + " 5625332\n", + " Universal Redline Station\n", + " NaN\n", + " 96.0\n", + " 1.0\n", + " POINT(-118.363289 34.138588)\n", + " Weekday\n", + " 34.045455\n", + " 32.454545\n", + " 2024-05-01\n", + " 2024-05-31\n", + " POINT (-118.36329 34.13859)\n", + " \n", " \n", "\n", - "

21219 rows × 14 columns

\n", + "

21264 rows × 14 columns

\n", "" ], "text/plain": [ @@ -427,11 +427,11 @@ "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 340606 \n", "4 SDMTS 1fff52f9349da228c56eef492df5001b 12049 \n", "... ... ... ... \n", - "21215 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70091 \n", - "21216 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70241 \n", - "21217 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70041 \n", - "21218 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", - "21219 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 \n", + "21260 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70241 \n", + "21261 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70041 \n", + "21262 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", + "21263 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 \n", + "21264 City of Burbank cc6a68a39d22c29b49116584971e69a8 5625332 \n", "\n", " stop_name stop_code n_arrivals n_routes \\\n", "0 . NaN 14.0 1.0 \n", @@ -440,11 +440,11 @@ "3 1060 Carolan Ave 340606 7.0 1.0 \n", "4 10th Av & A St 12049 18.0 3.0 \n", "... ... ... ... ... \n", - "21215 San Mateo NaN 52.0 3.0 \n", - "21216 Santa Clara NaN 45.0 2.0 \n", - "21217 South San Francisco NaN 52.0 3.0 \n", - "21218 Sunnyvale NaN 52.0 3.0 \n", - "21219 Tamien NaN 23.0 2.0 \n", + "21260 Santa Clara NaN 45.0 2.0 \n", + "21261 South San Francisco NaN 52.0 3.0 \n", + "21262 Sunnyvale NaN 52.0 3.0 \n", + "21263 Tamien NaN 23.0 2.0 \n", + "21264 Universal Redline Station NaN 96.0 1.0 \n", "\n", " pt_geom day_type average_daily_boardings \\\n", "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", @@ -453,11 +453,11 @@ "3 POINT(-122.359627 37.586685) Weekday 10.333333 \n", "4 POINT(-117.15569071 32.71857729) Weekday 3.485637 \n", "... ... ... ... \n", - "21215 POINT(-122.323851 37.568087) Weekday 1074.189854 \n", - "21216 POINT(-121.93608 37.353238) Weekday 718.467622 \n", - "21217 POINT(-122.404979051 37.655941395) Weekday 559.501648 \n", - "21218 POINT(-122.031372 37.378916) Weekday 1408.195136 \n", - "21219 POINT(-121.883721 37.31174) Weekday 198.883066 \n", + "21260 POINT(-121.93608 37.353238) Weekday 718.467622 \n", + "21261 POINT(-122.404979051 37.655941395) Weekday 559.501648 \n", + "21262 POINT(-122.031372 37.378916) Weekday 1408.195136 \n", + "21263 POINT(-121.883721 37.31174) Weekday 198.883066 \n", + "21264 POINT(-118.363289 34.138588) Weekday 34.045455 \n", "\n", " average_daily_alightings start_date end_date \\\n", "0 3.000000 2025-05-01 2025-05-31 \n", @@ -466,11 +466,11 @@ "3 5.500000 2025-08-01 2025-08-31 \n", "4 42.889568 2024-09-01 2025-01-25 \n", "... ... ... ... \n", - "21215 NaN 2023-11-01 2025-07-31 \n", - "21216 NaN 2023-11-01 2025-07-31 \n", - "21217 NaN 2023-11-01 2025-07-31 \n", - "21218 NaN 2023-11-01 2025-07-31 \n", - "21219 NaN 2023-11-01 2025-07-31 \n", + "21260 NaN 2023-11-01 2025-07-31 \n", + "21261 NaN 2023-11-01 2025-07-31 \n", + "21262 NaN 2023-11-01 2025-07-31 \n", + "21263 NaN 2023-11-01 2025-07-31 \n", + "21264 32.454545 2024-05-01 2024-05-31 \n", "\n", " geometry \n", "0 POINT (-119.29403 34.34365) \n", @@ -479,13 +479,13 @@ "3 POINT (-122.35963 37.58669) \n", "4 POINT (-117.15569 32.71858) \n", "... ... \n", - "21215 POINT (-122.32385 37.56809) \n", - "21216 POINT (-121.93608 37.35324) \n", - "21217 POINT (-122.40498 37.65594) \n", - "21218 POINT (-122.03137 37.37892) \n", - "21219 POINT (-121.88372 37.31174) \n", + "21260 POINT (-121.93608 37.35324) \n", + "21261 POINT (-122.40498 37.65594) \n", + "21262 POINT (-122.03137 37.37892) \n", + "21263 POINT (-121.88372 37.31174) \n", + "21264 POINT (-118.36329 34.13859) \n", "\n", - "[21219 rows x 14 columns]" + "[21264 rows x 14 columns]" ] }, "execution_count": 11, @@ -578,24 +578,24 @@ "output_type": "stream", "text": [ "\n", - "Index: 21219 entries, 0 to 21219\n", + "Index: 21264 entries, 0 to 21264\n", "Data columns (total 14 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 organization_name 21219 non-null object \n", - " 1 feed_key 21219 non-null object \n", - " 2 stop_id 21219 non-null object \n", - " 3 stop_name 21219 non-null object \n", + " 0 organization_name 21264 non-null object \n", + " 1 feed_key 21264 non-null object \n", + " 2 stop_id 21264 non-null object \n", + " 3 stop_name 21264 non-null object \n", " 4 stop_code 20543 non-null object \n", - " 5 n_arrivals 21219 non-null float64 \n", - " 6 n_routes 21219 non-null float64 \n", - " 7 pt_geom 21219 non-null object \n", - " 8 day_type 21219 non-null object \n", - " 9 average_daily_boardings 21219 non-null float64 \n", - " 10 average_daily_alightings 19042 non-null float64 \n", - " 11 start_date 21219 non-null object \n", - " 12 end_date 21219 non-null object \n", - " 13 geometry 21219 non-null geometry\n", + " 5 n_arrivals 21264 non-null float64 \n", + " 6 n_routes 21264 non-null float64 \n", + " 7 pt_geom 21264 non-null object \n", + " 8 day_type 21264 non-null object \n", + " 9 average_daily_boardings 21264 non-null float64 \n", + " 10 average_daily_alightings 19087 non-null float64 \n", + " 11 start_date 21264 non-null object \n", + " 12 end_date 21264 non-null object \n", + " 13 geometry 21264 non-null geometry\n", "dtypes: float64(4), geometry(1), object(9)\n", "memory usage: 2.4+ MB\n" ] @@ -667,7 +667,7 @@ " 'SacRT Bus', 'Orange County Transportation Authority',\n", " 'Long Beach Transit', 'Foothill Transit',\n", " 'Golden Gate Park Shuttle', 'Big Blue Bus', 'Culver City Bus',\n", - " 'Riverside Transit', 'Caltrain'], dtype=object)" + " 'Riverside Transit', 'Caltrain', 'City of Burbank'], dtype=object)" ] }, "execution_count": 20, @@ -687,7 +687,7 @@ "outputs": [], "source": [ "stop_acs_rollup = geometry_intersect.groupby(\n", - " ['feed_key', 'stop_id', 'organization_name', 'geometry'], \n", + " ['feed_key', 'stop_id', 'organization_name'], \n", " as_index=False\n", ")[[f'{col}_adj' for col in cols_to_weight]].sum()" ] @@ -716,48 +716,47 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "RangeIndex: 107213 entries, 0 to 107212\n", - "Data columns (total 35 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 organization_name 107213 non-null object \n", - " 1 feed_key 107213 non-null object \n", - " 2 stop_id 107213 non-null object \n", - " 3 stop_name 107213 non-null object \n", - " 4 stop_code 103948 non-null object \n", - " 5 n_arrivals 107213 non-null float64 \n", - " 6 n_routes 107213 non-null float64 \n", - " 7 pt_geom 107213 non-null object \n", - " 8 day_type 107213 non-null object \n", - " 9 average_daily_boardings 107213 non-null float64 \n", - " 10 average_daily_alightings 98658 non-null float64 \n", - " 11 start_date 107213 non-null object \n", - " 12 end_date 107213 non-null object \n", - " 13 geometry_x 107213 non-null geometry\n", - " 14 geometry_y 107213 non-null geometry\n", - " 15 total_pop_adj 107213 non-null float64 \n", - " 16 poverty_pop_adj 107213 non-null float64 \n", - " 17 non_us_citizen_adj 107213 non-null float64 \n", - " 18 workers_with_no_car_adj 107213 non-null float64 \n", - " 19 households_with_no_cars_adj 107213 non-null float64 \n", - " 20 disabled_pop_adj 107213 non-null float64 \n", - " 21 public_asst_pop_adj 107213 non-null float64 \n", - " 22 inc_extremelylow_adj 107213 non-null float64 \n", - " 23 inc_verylow_adj 107213 non-null float64 \n", - " 24 inc_low_adj 107213 non-null float64 \n", - " 25 male_seniors_adj 107213 non-null float64 \n", - " 26 female_seniors_adj 107213 non-null float64 \n", - " 27 veteran_pop_adj 107213 non-null float64 \n", - " 28 male_youth_adj 107213 non-null float64 \n", - " 29 inc_total_lowincome_adj 107213 non-null float64 \n", - " 30 female_youth_adj 107213 non-null float64 \n", - " 31 total_seniors_adj 107213 non-null float64 \n", - " 32 jobs_tot_adj 107213 non-null float64 \n", - " 33 total_youth_adj 107213 non-null float64 \n", - " 34 ALAND_adj 107213 non-null float64 \n", - "dtypes: float64(24), geometry(2), object(9)\n", - "memory usage: 28.6+ MB\n" + "\n", + "RangeIndex: 21264 entries, 0 to 21263\n", + "Data columns (total 34 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 21264 non-null object \n", + " 1 feed_key 21264 non-null object \n", + " 2 stop_id 21264 non-null object \n", + " 3 stop_name 21264 non-null object \n", + " 4 stop_code 20543 non-null object \n", + " 5 n_arrivals 21264 non-null float64 \n", + " 6 n_routes 21264 non-null float64 \n", + " 7 pt_geom 21264 non-null object \n", + " 8 day_type 21264 non-null object \n", + " 9 average_daily_boardings 21264 non-null float64 \n", + " 10 average_daily_alightings 19087 non-null float64 \n", + " 11 start_date 21264 non-null object \n", + " 12 end_date 21264 non-null object \n", + " 13 geometry 21264 non-null geometry\n", + " 14 total_pop_adj 21264 non-null float64 \n", + " 15 poverty_pop_adj 21264 non-null float64 \n", + " 16 non_us_citizen_adj 21264 non-null float64 \n", + " 17 workers_with_no_car_adj 21264 non-null float64 \n", + " 18 households_with_no_cars_adj 21264 non-null float64 \n", + " 19 disabled_pop_adj 21264 non-null float64 \n", + " 20 public_asst_pop_adj 21264 non-null float64 \n", + " 21 inc_extremelylow_adj 21264 non-null float64 \n", + " 22 inc_verylow_adj 21264 non-null float64 \n", + " 23 inc_low_adj 21264 non-null float64 \n", + " 24 male_seniors_adj 21264 non-null float64 \n", + " 25 female_seniors_adj 21264 non-null float64 \n", + " 26 veteran_pop_adj 21264 non-null float64 \n", + " 27 male_youth_adj 21264 non-null float64 \n", + " 28 inc_total_lowincome_adj 21264 non-null float64 \n", + " 29 female_youth_adj 21264 non-null float64 \n", + " 30 total_seniors_adj 21264 non-null float64 \n", + " 31 jobs_tot_adj 21264 non-null float64 \n", + " 32 total_youth_adj 21264 non-null float64 \n", + " 33 ALAND_adj 21264 non-null float64 \n", + "dtypes: float64(24), geometry(1), object(9)\n", + "memory usage: 5.5+ MB\n" ] } ], @@ -778,7 +777,7 @@ " 'SacRT Bus', 'Orange County Transportation Authority',\n", " 'Long Beach Transit', 'Foothill Transit',\n", " 'Golden Gate Park Shuttle', 'Big Blue Bus', 'Culver City Bus',\n", - " 'Riverside Transit', 'Caltrain'], dtype=object)" + " 'Riverside Transit', 'Caltrain', 'City of Burbank'], dtype=object)" ] }, "execution_count": 24, @@ -799,14 +798,14 @@ "source": [ "stop_route_df = gpd.GeoDataFrame(\n", " stop_route_df, \n", - " geometry='geometry_x', \n", + " geometry='geometry', \n", " crs=geometry_intersect.crs\n", ")" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "id": "a7e7e776-72b1-4092-9ec7-cc800a4e1595", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb index ba80e8e6e..987ffcc15 100644 --- a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -114,8 +114,7 @@ " average_daily_alightings\n", " start_date\n", " end_date\n", - " geometry_x\n", - " geometry_y\n", + " geometry\n", " total_pop_adj\n", " poverty_pop_adj\n", " non_us_citizen_adj\n", @@ -150,119 +149,113 @@ " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", - " 0.0\n", - " 3.0\n", + " 0.00000\n", + " 3.000000\n", " 2025-05-01\n", " 2025-05-31\n", " POINT (64936.582 -407800.219)\n", - " POLYGON ((65737.380 -407879.090, 65725.793 -40...\n", - " 23.285073\n", - " 2.446784\n", - " 2.699588\n", - " 0.352120\n", - " 0.325034\n", - " 3.114909\n", - " 1.191791\n", - " 5.372089\n", - " 4.550476\n", - " 1.977290\n", - " 1.589055\n", - " 1.877974\n", - " 0.749384\n", - " 0.993159\n", - " 11.899855\n", - " 2.248152\n", - " 3.467029\n", - " 15.294654\n", - " 3.241311\n", - " 1.092064e+06\n", + " 41.453354\n", + " 3.949242\n", + " 3.158169\n", + " 0.424528\n", + " 0.463815\n", + " 5.709516\n", + " 2.163260\n", + " 9.215728\n", + " 9.896572\n", + " 3.552156\n", + " 3.815590\n", + " 4.852721\n", + " 1.841532\n", + " 1.880153\n", + " 22.664456\n", + " 2.773107\n", + " 8.668311\n", + " 26.318716\n", + " 4.653260\n", + " 1.969641e+06\n", " \n", " \n", " 1\n", - " Gold Coast Transit\n", - " 3cb676436aad669e52042c0e97a9a051\n", - " VNACLR1\n", - " .\n", - " None\n", - " 14.0\n", + " Samtrans\n", + " db97cc02836aa5f0cf647d80160b23ec\n", + " 345017\n", + " 1000 El Camino Real-Menlo College\n", + " 345017\n", + " 72.0\n", " 1.0\n", - " POINT(-119.294028 34.343645)\n", + " POINT(-122.191284 37.457543)\n", " Weekday\n", - " 0.0\n", - " 3.0\n", - " 2025-05-01\n", - " 2025-05-31\n", - " POINT (64936.582 -407800.219)\n", - " POLYGON ((65015.454 -408601.016, 64936.582 -40...\n", - " 18.168282\n", - " 1.502458\n", - " 0.458582\n", - " 0.072408\n", - " 0.138781\n", - " 2.594607\n", - " 0.971469\n", - " 3.843638\n", - " 5.346097\n", - " 1.574866\n", - " 2.226535\n", - " 2.974747\n", - " 1.092148\n", - " 0.886993\n", - " 10.764601\n", - " 0.524955\n", - " 5.201282\n", - " 11.024062\n", - " 1.411949\n", - " 8.775763e+05\n", + " 9.52381\n", + " 24.571429\n", + " 2025-08-01\n", + " 2025-08-31\n", + " POINT (-193547.746 -59885.338)\n", + " 2537.657815\n", + " 137.769913\n", + " 429.179726\n", + " 163.623904\n", + " 133.342872\n", + " 193.085414\n", + " 49.337153\n", + " 357.458768\n", + " 290.410532\n", + " 176.891016\n", + " 198.211651\n", + " 295.773462\n", + " 68.365482\n", + " 145.896194\n", + " 824.760316\n", + " 253.752229\n", + " 493.985113\n", + " 1266.679117\n", + " 399.648424\n", + " 2.028257e+06\n", " \n", " \n", "\n", "" ], "text/plain": [ - " organization_name feed_key stop_id stop_name \\\n", - "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 . \n", - "1 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 . \n", - "\n", - " stop_code n_arrivals n_routes pt_geom day_type \\\n", - "0 None 14.0 1.0 POINT(-119.294028 34.343645) Weekday \n", - "1 None 14.0 1.0 POINT(-119.294028 34.343645) Weekday \n", + " organization_name feed_key stop_id \\\n", + "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 \n", + "1 Samtrans db97cc02836aa5f0cf647d80160b23ec 345017 \n", "\n", - " average_daily_boardings average_daily_alightings start_date end_date \\\n", - "0 0.0 3.0 2025-05-01 2025-05-31 \n", - "1 0.0 3.0 2025-05-01 2025-05-31 \n", + " stop_name stop_code n_arrivals n_routes \\\n", + "0 . None 14.0 1.0 \n", + "1 1000 El Camino Real-Menlo College 345017 72.0 1.0 \n", "\n", - " geometry_x \\\n", - "0 POINT (64936.582 -407800.219) \n", - "1 POINT (64936.582 -407800.219) \n", + " pt_geom day_type average_daily_boardings \\\n", + "0 POINT(-119.294028 34.343645) Weekday 0.00000 \n", + "1 POINT(-122.191284 37.457543) Weekday 9.52381 \n", "\n", - " geometry_y total_pop_adj \\\n", - "0 POLYGON ((65737.380 -407879.090, 65725.793 -40... 23.285073 \n", - "1 POLYGON ((65015.454 -408601.016, 64936.582 -40... 18.168282 \n", + " average_daily_alightings start_date end_date \\\n", + "0 3.000000 2025-05-01 2025-05-31 \n", + "1 24.571429 2025-08-01 2025-08-31 \n", "\n", - " poverty_pop_adj non_us_citizen_adj workers_with_no_car_adj \\\n", - "0 2.446784 2.699588 0.352120 \n", - "1 1.502458 0.458582 0.072408 \n", + " geometry total_pop_adj poverty_pop_adj \\\n", + "0 POINT (64936.582 -407800.219) 41.453354 3.949242 \n", + "1 POINT (-193547.746 -59885.338) 2537.657815 137.769913 \n", "\n", - " households_with_no_cars_adj disabled_pop_adj public_asst_pop_adj \\\n", - "0 0.325034 3.114909 1.191791 \n", - "1 0.138781 2.594607 0.971469 \n", + " non_us_citizen_adj workers_with_no_car_adj households_with_no_cars_adj \\\n", + "0 3.158169 0.424528 0.463815 \n", + "1 429.179726 163.623904 133.342872 \n", "\n", - " inc_extremelylow_adj inc_verylow_adj inc_low_adj male_seniors_adj \\\n", - "0 5.372089 4.550476 1.977290 1.589055 \n", - "1 3.843638 5.346097 1.574866 2.226535 \n", + " disabled_pop_adj public_asst_pop_adj inc_extremelylow_adj \\\n", + "0 5.709516 2.163260 9.215728 \n", + "1 193.085414 49.337153 357.458768 \n", "\n", - " female_seniors_adj veteran_pop_adj male_youth_adj \\\n", - "0 1.877974 0.749384 0.993159 \n", - "1 2.974747 1.092148 0.886993 \n", + " inc_verylow_adj inc_low_adj male_seniors_adj female_seniors_adj \\\n", + "0 9.896572 3.552156 3.815590 4.852721 \n", + "1 290.410532 176.891016 198.211651 295.773462 \n", "\n", - " inc_total_lowincome_adj female_youth_adj total_seniors_adj jobs_tot_adj \\\n", - "0 11.899855 2.248152 3.467029 15.294654 \n", - "1 10.764601 0.524955 5.201282 11.024062 \n", + " veteran_pop_adj male_youth_adj inc_total_lowincome_adj female_youth_adj \\\n", + "0 1.841532 1.880153 22.664456 2.773107 \n", + "1 68.365482 145.896194 824.760316 253.752229 \n", "\n", - " total_youth_adj ALAND_adj \n", - "0 3.241311 1.092064e+06 \n", - "1 1.411949 8.775763e+05 " + " total_seniors_adj jobs_tot_adj total_youth_adj ALAND_adj \n", + "0 8.668311 26.318716 4.653260 1.969641e+06 \n", + "1 493.985113 1266.679117 399.648424 2.028257e+06 " ] }, "execution_count": 5, @@ -297,47 +290,46 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 107213 entries, 0 to 107212\n", - "Data columns (total 35 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 organization_name 107213 non-null object \n", - " 1 feed_key 107213 non-null object \n", - " 2 stop_id 107213 non-null object \n", - " 3 stop_name 107213 non-null object \n", - " 4 stop_code 103948 non-null object \n", - " 5 n_arrivals 107213 non-null int64 \n", - " 6 n_routes 107213 non-null int64 \n", - " 7 pt_geom 107213 non-null object \n", - " 8 day_type 107213 non-null object \n", - " 9 average_daily_boardings 107213 non-null float64 \n", - " 10 average_daily_alightings 98658 non-null float64 \n", - " 11 start_date 107213 non-null object \n", - " 12 end_date 107213 non-null object \n", - " 13 geometry_x 107213 non-null geometry\n", - " 14 geometry_y 107213 non-null geometry\n", - " 15 total_pop_adj 107213 non-null float64 \n", - " 16 poverty_pop_adj 107213 non-null float64 \n", - " 17 non_us_citizen_adj 107213 non-null float64 \n", - " 18 workers_with_no_car_adj 107213 non-null float64 \n", - " 19 households_with_no_cars_adj 107213 non-null float64 \n", - " 20 disabled_pop_adj 107213 non-null float64 \n", - " 21 public_asst_pop_adj 107213 non-null float64 \n", - " 22 inc_extremelylow_adj 107213 non-null float64 \n", - " 23 inc_verylow_adj 107213 non-null float64 \n", - " 24 inc_low_adj 107213 non-null float64 \n", - " 25 male_seniors_adj 107213 non-null float64 \n", - " 26 female_seniors_adj 107213 non-null float64 \n", - " 27 veteran_pop_adj 107213 non-null float64 \n", - " 28 male_youth_adj 107213 non-null float64 \n", - " 29 inc_total_lowincome_adj 107213 non-null float64 \n", - " 30 female_youth_adj 107213 non-null float64 \n", - " 31 total_seniors_adj 107213 non-null float64 \n", - " 32 jobs_tot_adj 107213 non-null float64 \n", - " 33 total_youth_adj 107213 non-null float64 \n", - " 34 ALAND_adj 107213 non-null float64 \n", - "dtypes: float64(22), geometry(2), int64(2), object(9)\n", - "memory usage: 28.6+ MB\n" + "RangeIndex: 21264 entries, 0 to 21263\n", + "Data columns (total 34 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 21264 non-null object \n", + " 1 feed_key 21264 non-null object \n", + " 2 stop_id 21264 non-null object \n", + " 3 stop_name 21264 non-null object \n", + " 4 stop_code 20543 non-null object \n", + " 5 n_arrivals 21264 non-null int64 \n", + " 6 n_routes 21264 non-null int64 \n", + " 7 pt_geom 21264 non-null object \n", + " 8 day_type 21264 non-null object \n", + " 9 average_daily_boardings 21264 non-null float64 \n", + " 10 average_daily_alightings 19087 non-null float64 \n", + " 11 start_date 21264 non-null object \n", + " 12 end_date 21264 non-null object \n", + " 13 geometry 21264 non-null geometry\n", + " 14 total_pop_adj 21264 non-null float64 \n", + " 15 poverty_pop_adj 21264 non-null float64 \n", + " 16 non_us_citizen_adj 21264 non-null float64 \n", + " 17 workers_with_no_car_adj 21264 non-null float64 \n", + " 18 households_with_no_cars_adj 21264 non-null float64 \n", + " 19 disabled_pop_adj 21264 non-null float64 \n", + " 20 public_asst_pop_adj 21264 non-null float64 \n", + " 21 inc_extremelylow_adj 21264 non-null float64 \n", + " 22 inc_verylow_adj 21264 non-null float64 \n", + " 23 inc_low_adj 21264 non-null float64 \n", + " 24 male_seniors_adj 21264 non-null float64 \n", + " 25 female_seniors_adj 21264 non-null float64 \n", + " 26 veteran_pop_adj 21264 non-null float64 \n", + " 27 male_youth_adj 21264 non-null float64 \n", + " 28 inc_total_lowincome_adj 21264 non-null float64 \n", + " 29 female_youth_adj 21264 non-null float64 \n", + " 30 total_seniors_adj 21264 non-null float64 \n", + " 31 jobs_tot_adj 21264 non-null float64 \n", + " 32 total_youth_adj 21264 non-null float64 \n", + " 33 ALAND_adj 21264 non-null float64 \n", + "dtypes: float64(22), geometry(1), int64(2), object(9)\n", + "memory usage: 5.5+ MB\n" ] } ], @@ -365,33 +357,33 @@ "text": [ " OLS Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings R-squared: 0.063\n", - "Model: OLS Adj. R-squared: 0.063\n", - "Method: Least Squares F-statistic: 1794.\n", - "Date: Mon, 06 Apr 2026 Prob (F-statistic): 0.00\n", - "Time: 16:25:35 Log-Likelihood: -8.1516e+05\n", - "No. Observations: 107213 AIC: 1.630e+06\n", - "Df Residuals: 107208 BIC: 1.630e+06\n", + "Dep. Variable: average_daily_boardings R-squared: 0.056\n", + "Model: OLS Adj. R-squared: 0.056\n", + "Method: Least Squares F-statistic: 313.7\n", + "Date: Thu, 09 Apr 2026 Prob (F-statistic): 1.16e-262\n", + "Time: 19:03:47 Log-Likelihood: -1.5966e+05\n", + "No. Observations: 21264 AIC: 3.193e+05\n", + "Df Residuals: 21259 BIC: 3.194e+05\n", "Df Model: 4 \n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const -19.7679 3.189 -6.199 0.000 -26.018 -13.518\n", - "n_arrivals 3.9544 0.048 81.915 0.000 3.860 4.049\n", - "n_routes -71.0191 2.019 -35.173 0.000 -74.977 -67.062\n", - "total_pop_adj -0.0113 0.001 -8.190 0.000 -0.014 -0.009\n", - "workers_with_no_car_adj 0.3106 0.031 10.181 0.000 0.251 0.370\n", + "const 7.6464 7.788 0.982 0.326 -7.619 22.912\n", + "n_arrivals 3.6535 0.108 33.798 0.000 3.442 3.865\n", + "n_routes -65.1697 4.400 -14.810 0.000 -73.795 -56.545\n", + "total_pop_adj -0.0065 0.001 -6.117 0.000 -0.009 -0.004\n", + "workers_with_no_car_adj 0.0937 0.014 6.889 0.000 0.067 0.120\n", "==============================================================================\n", - "Omnibus: 303996.022 Durbin-Watson: 0.236\n", - "Prob(Omnibus): 0.000 Jarque-Bera (JB): 19913715319.427\n", - "Skew: 37.754 Prob(JB): 0.00\n", - "Kurtosis: 2112.989 Cond. No. 3.98e+03\n", + "Omnibus: 68977.611 Durbin-Watson: 1.374\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 15885836967.349\n", + "Skew: 54.357 Prob(JB): 0.00\n", + "Kurtosis: 4235.968 Cond. No. 1.92e+04\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The condition number is large, 3.98e+03. This might indicate that there are\n", + "[2] The condition number is large, 1.92e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } @@ -438,13 +430,13 @@ "id": "ad40b63a-1a6f-4543-90f6-d009244e5d19", "metadata": {}, "source": [ - "- About 6.3% of the variation in dependent variable (here, stop-level ridership) is explained by the predictors in the model.\n", - "- 93.7% of the variation is due to other factors not captured by this model.\n", - "- Skew = 37.74 → Residuals are extremely asymmetric, violating normality.\n", - "- Kurtosis = 2112.989 → Residuals have ultra‑heavy tails, far from a normal distribution.\n", - "- JB statistic = 19 billion → The Jarque–Bera test overwhelmingly rejects normality.\n", - "- Durbin–Watson = 0.236 → Strong positive autocorrelation remains in the residuals.\n", - "- Condition number = 3.98e+03 → Predictors have scaling issues and possible multicollinearity." + "- About 5.6% of the variation in dependent variable (here, stop-level ridership) is explained by the predictors in the model.\n", + "- 94.4% of the variation is due to other factors not captured by this model.\n", + "- Skew = 54.357 → Residuals are extremely asymmetric, violating normality.\n", + "- Kurtosis = 4235.968 → Residuals have ultra‑heavy tails, far from a normal distribution.\n", + "- JB statistic = 15 billion → The Jarque–Bera test overwhelmingly rejects normality.\n", + "- Durbin–Watson = 1.374 → Strong positive autocorrelation remains in the residuals.\n", + "- Condition number = 1.92e+04 → Predictors have scaling issues and possible multicollinearity." ] }, { @@ -475,8 +467,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "id": "35f60d93-ebce-4d2d-af7c-bc203e093dc9", + "execution_count": 9, + "id": "056483f9-31b4-4c1b-9248-1b2b2593a08d", "metadata": {}, "outputs": [ { @@ -484,11 +476,11 @@ "output_type": "stream", "text": [ " variable VIF\n", - "0 const 4.632923\n", - "1 n_arrivals 1.462856\n", - "2 n_routes 1.450437\n", - "3 total_pop_adj 1.341458\n", - "4 workers_with_no_car_adj 1.361639\n" + "0 const 6.623978\n", + "1 n_arrivals 1.527425\n", + "2 n_routes 1.420235\n", + "3 total_pop_adj 1.701594\n", + "4 workers_with_no_car_adj 1.610496\n" ] } ], @@ -530,14 +522,14 @@ { "data": { "text/plain": [ - "count 107213.000000\n", - "mean 53.838787\n", - "std 501.035998\n", - "min 0.000000\n", - "25% 2.270677\n", - "50% 8.316155\n", - "75% 26.162374\n", - "max 41893.868537\n", + "count 21264.000000\n", + "mean 43.375367\n", + "std 454.066948\n", + "min 0.000000\n", + "25% 2.000000\n", + "50% 6.880785\n", + "75% 21.795550\n", + "max 41893.868537\n", "Name: average_daily_boardings, dtype: float64" ] }, @@ -585,7 +577,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "4a507286-b0a3-49ec-b6e2-6e30d5714f30", + "id": "262e95d5-41fe-4beb-8e7d-ff6d9e43be70", "metadata": {}, "outputs": [ { @@ -594,24 +586,24 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 107213\n", - "Model: GLM Df Residuals: 107207\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21258\n", "Model Family: Poisson Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -8.8661e+06\n", - "Date: Mon, 06 Apr 2026 Deviance: 1.7317e+07\n", - "Time: 16:25:36 Pearson chi2: 1.73e+08\n", - "No. Iterations: 15 Pseudo R-squ. (CS): 1.000\n", + "Method: IRLS Log-Likelihood: -1.3658e+06\n", + "Date: Thu, 09 Apr 2026 Deviance: 2.6532e+06\n", + "Time: 19:05:18 Pearson chi2: 3.09e+07\n", + "No. Iterations: 14 Pseudo R-squ. (CS): 1.000\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const 4.1326 0.001 5681.880 0.000 4.131 4.134\n", - "n_arrivals 0.0252 7.21e-06 3498.191 0.000 0.025 0.025\n", - "n_routes -1.2700 0.001 -1984.629 0.000 -1.271 -1.269\n", - "total_pop_adj -0.0002 5.23e-07 -293.795 0.000 -0.000 -0.000\n", - "workers_with_no_car_adj 0.0027 3.7e-06 733.624 0.000 0.003 0.003\n", - "poverty_pop_adj 0.0003 2.35e-06 146.321 0.000 0.000 0.000\n", + "const 3.8035 0.002 1558.381 0.000 3.799 3.808\n", + "n_arrivals 0.0253 1.69e-05 1500.890 0.000 0.025 0.025\n", + "n_routes -1.3051 0.002 -839.527 0.000 -1.308 -1.302\n", + "total_pop_adj -1.777e-05 4.38e-07 -40.535 0.000 -1.86e-05 -1.69e-05\n", + "workers_with_no_car_adj 0.0003 1.67e-06 166.785 0.000 0.000 0.000\n", + "poverty_pop_adj 0.0002 1.87e-06 126.302 0.000 0.000 0.000\n", "===========================================================================================\n" ] } @@ -649,8 +641,8 @@ "metadata": {}, "source": [ "This Poisson model fits very poorly: the Pearson chi‑square is huge, meaning the data are heavily over‑dispersed and the Poisson assumptions break.\n", - "- The coefficient for n_arrivals (0.0252) means each extra trip increases expected ridership by about 2.5%.\n", - "- n_routes (-1.2700) is negative, which is unrealistic and indicates model misspecification due to over‑dispersion.\n", + "- The coefficient for n_arrivals (0.0253) means each extra trip increases expected ridership by about 2.5%.\n", + "- n_routes (-1.3051) is negative, which is unrealistic and indicates model misspecification due to over‑dispersion.\n", "- total_pop_adj is negative, also unrealistic — another sign the Poisson model is not appropriate.\n", "- workers_with_no_car_adj is positive, meaning more zero‑car households predict higher ridership.\n", "- poverty_pop_adj is positive, meaning as the adjusted population living below the poverty level increases in a transit agency’s service area, ridership tends to increase.\n", @@ -662,11 +654,11 @@ "id": "038cea10-05be-4cbe-9359-a174e014d6b3", "metadata": {}, "source": [ - "Pearson chi‑square = 1.73e+08 and Degrees of freedom ≈ 143325.\n", + "Pearson chi‑square = 3.09e+07 and Degrees of freedom ≈ 21264.\n", "Hence, \n", - "Dispersion estimate = Pearson χ² / df; 1.73e+08 / 107213 ≈ 1613.61\n", + "Dispersion estimate = Pearson χ² / df; 3.09e+07 / 21264 ≈ 1453.5\n", "\n", - "A valid Poisson model should have dispersion ≈ 1. Dispersion ≈ 1613.61, which means:\n", + "A valid Poisson model should have dispersion ≈ 1. Dispersion ≈ 1453.5, which means:\n", "Poisson model is severely overdispersed. >1 → overdispersion (variance is larger than the model assumes).\n", "\n", "Variance >> mean:\n", @@ -686,7 +678,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 12, "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ @@ -704,24 +696,24 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 107213\n", - "Model: GLM Df Residuals: 107207\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21258\n", "Model Family: NegativeBinomial Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -4.5370e+05\n", - "Date: Mon, 06 Apr 2026 Deviance: 2.2957e+05\n", - "Time: 16:31:24 Pearson chi2: 9.56e+05\n", - "No. Iterations: 21 Pseudo R-squ. (CS): 0.7828\n", + "Method: IRLS Log-Likelihood: -83586.\n", + "Date: Thu, 09 Apr 2026 Deviance: 39854.\n", + "Time: 19:06:55 Pearson chi2: 1.63e+05\n", + "No. Iterations: 30 Pseudo R-squ. (CS): 0.8175\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "n_arrivals 0.0483 0.000 477.765 0.000 0.048 0.049\n", - "n_routes 0.3658 0.004 99.198 0.000 0.359 0.373\n", - "total_pop_adj 0.0001 6.78e-06 19.563 0.000 0.000 0.000\n", - "workers_with_no_car_adj 0.0006 6.52e-05 9.197 0.000 0.000 0.001\n", - "total_youth_adj 0.0004 1.95e-05 22.020 0.000 0.000 0.000\n", - "total_seniors_adj -0.0002 3.24e-05 -6.078 0.000 -0.000 -0.000\n", + "n_arrivals 0.0425 0.000 167.091 0.000 0.042 0.043\n", + "n_routes 0.1426 0.009 15.700 0.000 0.125 0.160\n", + "total_pop_adj 8.518e-05 4.61e-06 18.467 0.000 7.61e-05 9.42e-05\n", + "workers_with_no_car_adj -0.0002 3.01e-05 -6.835 0.000 -0.000 -0.000\n", + "total_youth_adj 0.0003 1.26e-05 23.027 0.000 0.000 0.000\n", + "total_seniors_adj 6.758e-06 2.45e-05 0.276 0.782 -4.12e-05 5.47e-05\n", "===========================================================================================\n" ] } @@ -791,13 +783,13 @@ "id": "3398af4b-6234-48ea-9200-e06d402865fe", "metadata": {}, "source": [ - "1. n_arrivals coefficient = 0.0483\n", + "1. n_arrivals coefficient = 0.0425\n", "Interpretation: Each additional trip serving the stop increases expected daily boardings by:\n", - "exp(0.0483) − 1 ≈ 4.95%\n", + "exp(0.0425) − 1 ≈ 4.34%\n", "\n", - "2. n_routes coefficient = 0.3658\n", + "2. n_routes coefficient = 0.1426\n", "Interpretation: For stops/agencies where n_routes_effective > 0 (aggregated stop-level data), each additional route increases expected daily boardings by:\n", - "exp(0.3658)−1 ≈ 44.1%\n", + "exp(0.1426)−1 ≈ 15.34%\n", "\n" ] }, @@ -810,14 +802,14 @@ "total_pop_adj represents the estimated number of residents physically inside a stop’s 600 m buffer, after adjusting each census tract by the fraction of its area that overlaps the buffer.\n", "Example: if 10% of a tract lies inside a stop’s buffer, 10% of the tract’s population is assigned to that stop.\n", "Coefficient interpretation:\n", - "Model coefficient: 0.0001\n", - "Effect per additional person: exp(0.0001)−1≈0.01% increase in expected daily boardings per person\n", + "Model coefficient: 8.518e-05\n", + "Effect per additional person: exp(8.518e-05)−1≈0.0085% increase in expected daily boardings per person\n", "\n", " This looks tiny for one person, but stop buffers usually contain hundreds or thousands of people.\n", " Scaling to realistic population changes:\n", "\n", - " +1,000 residents in the stop buffer: exp(1000×0.0001)−1 ≈ 10.5% increase in ridership\n", - " +10,000 residents in the stop buffer: exp(10,000×0.0001)−1 ≈ 171.8% increase in ridership" + " +1,000 residents in the stop buffer: exp(1000×8.518e-05)−1 ≈ 8.89% increase in ridership\n", + " +10,000 residents in the stop buffer: exp(10,000×8.518e-05)−1 ≈ 134.4% increase in ridership" ] }, { @@ -825,14 +817,14 @@ "id": "6f10edb6-92ca-4719-8574-599c9b2139a1", "metadata": {}, "source": [ - "4. workers_with_no_car_adj (coef = 0.0006)\n", + "4. workers_with_no_car_adj (coef = 0.0002)\n", "workers_with_no_car_adj is the estimated number of population that do not own a car within the stop catchment, computed the same area-weighted way.\n", "\n", "For each additional zero-car population in the catchment:\n", - "exp(0.0006) – 1 ≈ 0.06%% increase in expected boardings\n", + "exp(0.0002) – 1 ≈ 0.02% increase in expected boardings\n", "\n", - "- +100 zero-car population in buffer : ≈ 6.18% ridership increase\n", - "- +1,000 zero-car population : ≈ 82.2% ridership increase" + "- +100 zero-car population in buffer : ≈ 2.02% ridership increase\n", + "- +1,000 zero-car population : ≈ 22.1% ridership increase" ] }, { @@ -840,14 +832,14 @@ "id": "8b03bd41-06af-4a89-b626-d1a641665a4c", "metadata": {}, "source": [ - "5. total_youth_adj (coef = 0.0004)\n", + "5. total_youth_adj (coef = 0.0003)\n", "total_youth_adj is the estimated number of youth population within the stop catchment, computed the same area-weighted way.\n", "\n", "For each additional youth population in the catchment:\n", - "exp(0.0006) – 1 ≈ 0.04% increase in expected boardings\n", + "exp(0.0003) – 1 ≈ 0.03% increase in expected boardings\n", "\n", - "- +100 youths in buffer : ≈ 4.08% ridership increase\n", - "- +1,000 youths in buffer : ≈ 49.18% ridership increase" + "- +100 youths in buffer : ≈ 3.05% ridership increase\n", + "- +1,000 youths in buffer : ≈ 35.0% ridership increase" ] }, { @@ -855,15 +847,17 @@ "id": "6bc0cb46-12de-4a5d-bb88-ffb40890a497", "metadata": {}, "source": [ - "5. total_senior_adj (coef = -0.0002)\n", + "5. total_senior_adj (coef = 6.758e-06)\n", "total_senior_adj is the estimated number of senior population within the stop catchment, computed the same area-weighted way.\n", "\n", "For each additional senior population in the catchment:\n", - "exp(-0.0002) – 1 ≈ –0.02% change in expected boardings\n", + "exp(6.758e-06) – 1 ≈ 0.000676% change in expected boardings\n", + "\n", + "- +100 seniors in buffer : ≈ 0.0676% ridership increase\n", + "- +1,000 seniors in buffer : ≈ 0.678% ridership increase\n", + "(Negligible effect),\n", "\n", - "- +100 seniors in buffer : ≈ 1.98% ridership decrease\n", - "- +1,000 seniors in buffer : ≈ 18.13% ridership decrease\n", - "Seniors are less likely to use transit in this dataset" + "p = 0.782 → far greater than 0.05, meaning not statistically significant." ] }, { @@ -994,7 +988,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 13, "id": "247a1b69-f5ff-4414-8e06-05a786d2b13c", "metadata": {}, "outputs": [ @@ -1003,14 +997,14 @@ "output_type": "stream", "text": [ " variable VIF\n", - "0 const 4.687084\n", - "1 n_arrivals 1.472680\n", - "2 n_routes 1.454191\n", - "3 total_pop_adj 32.355664\n", - "4 workers_with_no_car_adj 1.399311\n", - "5 total_youth_adj 2.977953\n", - "6 total_seniors_adj 3.963322\n", - "7 jobs_tot_adj 23.697123\n" + "0 const 6.991227\n", + "1 n_arrivals 1.540762\n", + "2 n_routes 1.427478\n", + "3 total_pop_adj 28.958436\n", + "4 workers_with_no_car_adj 1.632586\n", + "5 total_youth_adj 2.653703\n", + "6 total_seniors_adj 3.405191\n", + "7 jobs_tot_adj 22.094876\n" ] } ], @@ -1035,7 +1029,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 14, "id": "5b21ac3d-f52d-48c7-92cb-4cd40e14fda9", "metadata": {}, "outputs": [ @@ -1053,25 +1047,25 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 107213\n", - "Model: GLM Df Residuals: 107206\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21257\n", "Model Family: NegativeBinomial Df Model: 6\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -4.5361e+05\n", - "Date: Mon, 06 Apr 2026 Deviance: 2.2938e+05\n", - "Time: 16:33:10 Pearson chi2: 9.58e+05\n", - "No. Iterations: 20 Pseudo R-squ. (CS): 0.7832\n", + "Method: IRLS Log-Likelihood: -83560.\n", + "Date: Thu, 09 Apr 2026 Deviance: 39802.\n", + "Time: 19:16:01 Pearson chi2: 1.64e+05\n", + "No. Iterations: 30 Pseudo R-squ. (CS): 0.8179\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "n_arrivals 0.0483 0.000 477.751 0.000 0.048 0.049\n", - "n_routes 0.3627 0.004 98.338 0.000 0.355 0.370\n", - "total_pop_adj -5.927e-05 1.45e-05 -4.100 0.000 -8.76e-05 -3.09e-05\n", - "workers_with_no_car_adj 0.0006 6.52e-05 8.728 0.000 0.000 0.001\n", - "total_youth_adj 0.0005 2.14e-05 25.471 0.000 0.001 0.001\n", - "total_seniors_adj -0.0002 3.28e-05 -7.492 0.000 -0.000 -0.000\n", - "jobs_tot_adj 0.0004 2.69e-05 15.052 0.000 0.000 0.000\n", + "n_arrivals 0.0426 0.000 167.276 0.000 0.042 0.043\n", + "n_routes 0.1378 0.009 15.154 0.000 0.120 0.156\n", + "total_pop_adj 8.343e-06 1.03e-05 0.813 0.416 -1.18e-05 2.84e-05\n", + "workers_with_no_car_adj -0.0002 3.01e-05 -7.111 0.000 -0.000 -0.000\n", + "total_youth_adj 0.0003 1.41e-05 24.251 0.000 0.000 0.000\n", + "total_seniors_adj -4.059e-06 2.49e-05 -0.163 0.870 -5.28e-05 4.47e-05\n", + "jobs_tot_adj 0.0002 1.92e-05 8.143 0.000 0.000 0.000\n", "===========================================================================================\n" ] } @@ -1092,16 +1086,25 @@ }, { "cell_type": "markdown", - "id": "751c0d23-b477-454a-87a0-4ab09eb23e91", + "id": "75c1f086-5bf3-448c-91cc-2617d4d750e8", "metadata": {}, "source": [ - "The addition of `jobs_tot_adj` introduces **substantial multicollinearity** into the model, as evidenced by the sharp increase in VIF values for both `jobs_tot_adj` and `total_pop_adj` (from ~1.3 to over 18). This indicates that these two variables are highly correlated and capture overlapping spatial characteristics, namely, that areas with higher population tend to also have higher employment. As a result, the model has difficulty disentangling their individual effects. This is reflected in the coefficient changes: most notably, `total_pop_adj` switches from a positive coefficient in the original model to a **negative and statistically significant coefficient** after adding jobs, which is counterintuitive and suggests instability due to multicollinearity rather than a true negative relationship. Meanwhile, `jobs_tot_adj` enters the model as a positive and significant predictor, absorbing much of the explanatory power previously attributed to population. Despite only a marginal improvement in overall model fit (Pseudo R² increasing slightly from 0.7828 to 0.7832), the interpretability of individual coefficients is reduced. Overall, the inclusion of jobs reveals that employment and population are not independently contributing to ridership in this specification, but rather competing to explain the same underlying spatial variation.\n" + "The addition of `jobs_tot_adj` into the model introduces **substantial multicollinearity**, as evidenced by very high VIF values for both `total_pop_adj` (VIF ≈ 28.96) and `jobs_tot_adj` (VIF ≈ 22.09). This indicates that these two variables are highly correlated, reflecting overlapping spatial characteristics: areas with higher population tend to also have higher employment.\n", + "\n", + "As a result, the model struggles to disentangle their individual effects. Specifically:\n", + "\n", + "`total_pop_adj` now has a coefficient of 8.343e-06 with a p-value of 0.416, making it statistically insignificant. Its effect on ridership cannot be reliably interpreted in the presence of `jobs_tot_adj`'.\n", + "`jobs_tot_adj` enters as a positive and significant predictor (coef = 0.0002, p < 0.001), absorbing much of the explanatory power that `total_pop_adj` previously provided.\n", + "\n", + "Other predictors, including 'n_arrivals', 'n_routes', and 'total_youth_adj', remain significant with interpretable effects, while 'total_seniors_adj' remains statistically insignificant.\n", + "\n", + "Despite only a marginal improvement in overall model fit (Pseudo R² increasing slightly from 0.8175 to 0.8179), the interpretability of individual coefficients, particularly for `total_pop_adj`, is reduced. In this specification, employment and population do not independently contribute to ridership; rather, they compete to explain the same underlying spatial variation. This demonstrates the importance of considering multicollinearity when interpreting coefficients in spatial ridership models." ] }, { "cell_type": "code", "execution_count": null, - "id": "75c1f086-5bf3-448c-91cc-2617d4d750e8", + "id": "30c2afcd-c996-48fd-93c0-ce39c3447fcc", "metadata": {}, "outputs": [], "source": [] From d52639877c84cd7a495b43d8c22ee2c1c11669c5 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Tue, 28 Apr 2026 16:22:06 +0000 Subject: [PATCH 11/21] burbank blue route and orange stops effect on ridership changes --- .../ahsc_acs_2/07_Model_exploration.ipynb | 42 +- .../08_Model_Exploration_Burbank.ipynb | 3619 +++++++++++++++++ ahsc_grant/ahsc_acs_2/Burbank_ridership.md | 64 + .../ahsc_acs_2/burbank_blue_new_stops.csv | 60 + .../ahsc_acs_2/burbank_orange_new_stops.csv | 55 + 5 files changed, 3807 insertions(+), 33 deletions(-) create mode 100644 ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb create mode 100644 ahsc_grant/ahsc_acs_2/Burbank_ridership.md create mode 100644 ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv create mode 100644 ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb index 987ffcc15..e5d0af5af 100644 --- a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -678,43 +678,19 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 1, "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", - " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Generalized Linear Model Regression Results \n", - "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21258\n", - "Model Family: NegativeBinomial Df Model: 5\n", - "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -83586.\n", - "Date: Thu, 09 Apr 2026 Deviance: 39854.\n", - "Time: 19:06:55 Pearson chi2: 1.63e+05\n", - "No. Iterations: 30 Pseudo R-squ. (CS): 0.8175\n", - "Covariance Type: nonrobust \n", - "===========================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-------------------------------------------------------------------------------------------\n", - "n_arrivals 0.0425 0.000 167.091 0.000 0.042 0.043\n", - "n_routes 0.1426 0.009 15.700 0.000 0.125 0.160\n", - "total_pop_adj 8.518e-05 4.61e-06 18.467 0.000 7.61e-05 9.42e-05\n", - "workers_with_no_car_adj -0.0002 3.01e-05 -6.835 0.000 -0.000 -0.000\n", - "total_youth_adj 0.0003 1.26e-05 23.027 0.000 0.000 0.000\n", - "total_seniors_adj 6.758e-06 2.45e-05 0.276 0.782 -4.12e-05 5.47e-05\n", - "===========================================================================================\n" + "ename": "NameError", + "evalue": "name 'df' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[43mdf\u001b[49m[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_arrivals\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_routes\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 2\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_pop_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mworkers_with_no_car_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_youth_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_seniors_adj\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# 4. Add intercept\u001b[39;00m\n\u001b[1;32m 5\u001b[0m X \u001b[38;5;241m=\u001b[39m sm\u001b[38;5;241m.\u001b[39madd_constant(X)\n", + "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" ] } ], diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb new file mode 100644 index 000000000..5afcf6b0b --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -0,0 +1,3619 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", + "metadata": {}, + "source": [ + "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "markdown", + "id": "e5b6b27c-db78-4a8f-90cf-f89bccd474e2", + "metadata": {}, + "source": [ + "1. Load Stop-Level Data\n", + "2. Prepare Data for Negative Binomial Regression\n", + "- Create a log-transformed variable for arrivals: log_arrivals = log(n_arrivals + 1)\n", + "- Select explanatory variables: number of routes, arrivals, population-adjusted measures.\n", + "3. Get Stop-Level Data for Existing Operators\n", + "- Query GTFS scheduled stop data across Burbank, Metro, and Metrolink\n", + "- Load new stop lists for Orange and Blue route changes.\n", + "4. Assign Missing Coordinates for New Stops\n", + "5. Spatial Buffering and ACS Demographic Overlays\n", + "- Convert new stops to UTM projection, buffer, overlay census tract and compute proportional demographic counts using area ratios\n", + "6. Match New Stops to Nearest Existing Stops\n", + "- Inherit baseline n_routes and daily_arrivals where applicable.\n", + "7. Construct Baseline and Scenario Service Variables\n", + "- New stops assigned 1 route in scenario, 0 in baseline.\n", + "- Scenario arrivals set to baseline arrivals + 51 additional trips.\n", + "8. Generate Prediction Inputs\n", + "- Create scenario (X_scn) and baseline (X_base) covariate matrices.\n", + "9. Predict Ridership Effects\n", + "- Apply fitted NB model to scenario and baseline inputs.\n", + "- Compute predicted ridership change as: pred_scenario - pred_baseline\n", + "- Sum stop-level changes to obtain systemwide change\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "dd2eb2bc-ba32-4faf-a61f-64b8d4a93dd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ebdc88e9-5c08-4416-bb29-9931f927f551", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "pd.set_option('display.max_columns', None)\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "import statsmodels.api as sm\n", + "import numpy as np\n", + "from scipy.stats import skew\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "fs = gcsfs.GCSFileSystem()\n", + "\n", + "import statsmodels.api as sm\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "69782f04-24f3-48ea-a502-6d1589c68fa5", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "6b90669b-5d97-47da-9056-00496b8001a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "94775a9b-31d2-4207-92cb-4edfc5dd4d94", + "metadata": {}, + "outputs": [], + "source": [ + "stop_route_df_Burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8c83beb5-9ccd-4175-878b-8b0d9fb07817", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", + " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", + " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", + " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", + " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", + " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", + " 'total_youth_adj', 'ALAND_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stop_route_df_Burbank.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "708d5e19-89dd-45f4-a18e-72c7a083f505", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 45\n", + "Model: GLM Df Residuals: 39\n", + "Model Family: NegativeBinomial Df Model: 5\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -106.92\n", + "Date: Tue, 28 Apr 2026 Deviance: 31.163\n", + "Time: 16:18:12 Pearson chi2: 27.4\n", + "No. Iterations: 20 Pseudo R-squ. (CS): 0.4822\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "n_routes -12.3185 4.007 -3.074 0.002 -20.172 -4.465\n", + "log_arrivals 3.5259 1.049 3.362 0.001 1.471 5.581\n", + "total_pop_adj -0.0010 0.000 -2.712 0.007 -0.002 -0.000\n", + "workers_with_no_car_adj 0.0042 0.005 0.783 0.434 -0.006 0.015\n", + "total_youth_adj 0.0048 0.003 1.485 0.138 -0.002 0.011\n", + "total_seniors_adj 0.0034 0.001 2.812 0.005 0.001 0.006\n", + "===========================================================================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df_Burbank.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended_burbank = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended_burbank.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e5233074-13e1-434e-a65b-31afd59e7fb1", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21243\n", + "Model Family: NegativeBinomial Df Model: 20\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -80573.\n", + "Date: Tue, 28 Apr 2026 Deviance: 33828.\n", + "Time: 16:18:13 Pearson chi2: 1.67e+05\n", + "No. Iterations: 32 Pseudo R-squ. (CS): 0.8625\n", + "Covariance Type: nonrobust \n", + "==================================================================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "----------------------------------------------------------------------------------------------------------------------------------\n", + "Intercept -1.8390 0.058 -31.478 0.000 -1.954 -1.725\n", + "C(organization_name)[T.Caltrain] 4.0001 0.190 21.068 0.000 3.628 4.372\n", + "C(organization_name)[T.City of Burbank] -1.7948 0.171 -10.483 0.000 -2.130 -1.459\n", + "C(organization_name)[T.Culver City Bus] -0.0913 0.064 -1.419 0.156 -0.217 0.035\n", + "C(organization_name)[T.Foothill Transit] -0.3941 0.045 -8.743 0.000 -0.482 -0.306\n", + "C(organization_name)[T.Fresno County] -0.2260 0.050 -4.480 0.000 -0.325 -0.127\n", + "C(organization_name)[T.Gold Coast Transit] 0.4003 0.056 7.113 0.000 0.290 0.511\n", + "C(organization_name)[T.Golden Gate Park Shuttle] 0.6241 0.250 2.496 0.013 0.134 1.114\n", + "C(organization_name)[T.Long Beach Transit] 0.0915 0.044 2.095 0.036 0.006 0.177\n", + "C(organization_name)[T.Orange County Transportation Authority] 0.1432 0.039 3.650 0.000 0.066 0.220\n", + "C(organization_name)[T.Riverside Transit] -0.2841 0.047 -6.069 0.000 -0.376 -0.192\n", + "C(organization_name)[T.SDMTS] 0.7232 0.041 17.773 0.000 0.643 0.803\n", + "C(organization_name)[T.SacRT Bus] -0.6236 0.058 -10.811 0.000 -0.737 -0.511\n", + "C(organization_name)[T.Samtrans] 0.4124 0.045 9.074 0.000 0.323 0.501\n", + "n_routes -0.0844 0.011 -7.752 0.000 -0.106 -0.063\n", + "log_arrivals 1.2755 0.013 100.655 0.000 1.251 1.300\n", + "total_pop_adj -1.074e-05 6.02e-06 -1.786 0.074 -2.25e-05 1.05e-06\n", + "workers_with_no_car_adj 0.0001 3.64e-05 3.610 0.000 6e-05 0.000\n", + "total_youth_adj 0.0002 1.3e-05 16.845 0.000 0.000 0.000\n", + "public_asst_pop_adj 0.0006 4.46e-05 13.031 0.000 0.000 0.001\n", + "total_seniors_adj -0.0002 2.69e-05 -9.020 0.000 -0.000 -0.000\n", + "==================================================================================================================================\n" + ] + } + ], + "source": [ + "import statsmodels.formula.api as smf\n", + "\n", + "df = stop_route_df.copy()\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "\n", + "nb_model_extended = smf.glm(\n", + " formula=\"\"\"\n", + " average_daily_boardings ~ n_routes + log_arrivals +\n", + " total_pop_adj + workers_with_no_car_adj +\n", + " total_youth_adj + public_asst_pop_adj +\n", + " total_seniors_adj + C(organization_name)\n", + " \"\"\",\n", + " data=df,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "362e041e-18d9-4bc7-8de7-0550869adf5f", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21256\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -82715.\n", + "Date: Tue, 28 Apr 2026 Deviance: 38113.\n", + "Time: 16:18:13 Pearson chi2: 2.80e+05\n", + "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -2.0303 0.037 -55.232 0.000 -2.102 -1.958\n", + "n_routes -0.1100 0.009 -11.643 0.000 -0.129 -0.091\n", + "log_arrivals 1.4157 0.011 126.517 0.000 1.394 1.438\n", + "total_pop_adj 5.629e-06 5.69e-06 0.989 0.323 -5.53e-06 1.68e-05\n", + "workers_with_no_car_adj 0.0010 3.45e-05 30.033 0.000 0.001 0.001\n", + "total_youth_adj 0.0002 1.29e-05 16.642 0.000 0.000 0.000\n", + "public_asst_pop_adj 3.942e-05 3.73e-05 1.056 0.291 -3.37e-05 0.000\n", + "total_seniors_adj -0.0003 2.58e-05 -12.337 0.000 -0.000 -0.000\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended.summary())" + ] + }, + { + "cell_type": "markdown", + "id": "618bdb53-6387-4c97-b48f-f5a1a4ee2660", + "metadata": {}, + "source": [ + "adding a route while holding arrivals constant reduces ridership per stop" + ] + }, + { + "cell_type": "markdown", + "id": "aa758fee-cd65-4935-a1b8-4d7c5838ae1e", + "metadata": {}, + "source": [ + "- New Blue Route\tn_routes +1\n", + "- Extended Orange Route\tn_routes +1 (partial effect)\n", + "- More service / frequency\tn_arrivals ↑\n", + "- Weekend service\t: currently this model is just weekday model\n", + "- New stops\tnew rows (or modified features)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying stop level data for City of Burbank " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "75df8b20-dee7-420d-9231-229db9d53915", + "metadata": {}, + "outputs": [], + "source": [ + "# Burbank, Metrolink, LA Metro Bus and LA metro rail\n", + "feed_keys = [\"cc6a68a39d22c29b49116584971e69a8\", \"0f80473907c7613e9fefbb71220e9e56\", \"8d9623a1823a27925b7e2f00e44fc5bb\", \"f1ba526e631625c1d6816d055265ed65\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals, arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening, route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2025-05-21')\n", + " AND feed_key IN ({feed_keys_str})\n", + " \"\"\"\n", + " df_agency = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "98205773-013c-45d4-a8bc-302d8a33e97f", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"burbank_orange_new_stops.csv\")\n", + "df[\"stop_dir_key\"] = df[\"stop_name\"] + \" \" + df[\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b3165da9-4c91-44f2-bad2-941995d22b73", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"Hollywood & Jeffries eastbound\": (34.18141305368438, -118.34903738211447),\n", + "\"Hollywood & Victory Bl eastbound\": (34.18508535157502, -118.34929119735641),\n", + "\"Hollywood & Pacific eastbound\": (34.18825119276962, -118.34886491064228),\n", + "\"Hollywood & Valhalla eastbound\": (34.19012427165374, -118.34916328937923),\n", + "\"Hollywood & Thorton eastbound\": (34.19656151035557, -118.34876716762236),\n", + "\"Hollywood & Thorton westbound\": (34.195980179882646, -118.34894014653726),\n", + "\"New BUR terminal eastbound\": (34.19359656711031, -118.35357055101639),\n", + "\"New BUR terminal westbound\": (34.19359656711031, -118.35357055101639),\n", + "\"Winona / Ontario eastbound\": (34.199490557715684, -118.3443711434909),\n", + "\"Winona / Ontario westbound\": (34.1992091874645, -118.34484346690523),\n", + "\"Ontario & Thorton eastbound\": (34.19593202043652, -118.34444331137956),\n", + "\"Ontario & Thorton westbound\": (34.19541510602419, -118.34460558501739),\n", + "\"Empire & Ontario eastbound\": (34.192108542580186, -118.3443394102755),\n", + "\"Empire & Buena Vista eastbound\": (34.19195822628478, -118.33787457476522),\n", + "\"Empire & Valpreda eastbound\": (34.19194945024493, -118.33285175184913),\n", + "\"Empire & Valpreda westbound\": (34.19179144771815, -118.33244032844016),\n", + "\"Empire & Grismer eastbound\": (34.19175476406717, -118.32509312643347),\n", + "\"Empire & Grismer westbound\": (34.19154206721876, -118.3254365921081),\n", + "\"Amherst Dr / San Fernando eastbound\": (34.19012800601128, -118.32086710181368),\n", + "\"Amherst Dr / San Fernando westbound\": (34.189934438443714, -118.32176619076398),\n", + "\"Glenoaks & Bethany eastbound\": (34.191647095345786, -118.31754103475315),\n", + "\"Glenoaks & Bethany westbound\": (34.19168659607283, -118.3180498038794),\n", + "\"Glenoaks & Fairmount eastbound\": (34.18922976877985, -118.31426181767534),\n", + "\"Glenoaks & Fairmount westbound\": (34.18869054389077, -118.3139580922512),\n", + "\"Glenoaks & Cypress eastbound\": (34.18708018484801, -118.31127153444093),\n", + "\"Glenoaks & Cypress westbound\": (34.18677382226348, -118.31135025143384),\n", + "\"Glenoaks & Magnolia eastbound\": (34.18566039664216, -118.30935620418528),\n", + "\"Glenoaks & Magnolia westbound\": (34.1853950731641, -118.3094180753144),\n", + "\"Glenoaks & Olive eastbound\": (34.18338784687265, -118.30666291160377),\n", + "\"Glenoaks & Olive westbound\": (34.183750381812565, -118.30682928383196),\n", + "\"Glenoaks & Verdugo eastbound\": (34.1810536128531, -118.30348086446116),\n", + "\"Glenoaks & Verdugo westbound\": (34.18130060913145, -118.30290962506388),\n", + "\"Glenoaks & Providencia eastbound\": (34.17964641863243, -118.30103491619572),\n", + "\"Glenoaks & Providencia westbound\": (34.17927416886304, -118.30121771535951),\n", + "\"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + "\"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + "\"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + "\"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + "\"Flower & Alameda eastbound\": (34.17106795233713, -118.30268518471172),\n", + "\"Flower & Alameda westbound\": (34.17166407022795, -118.3032739880033)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", + "metadata": {}, + "outputs": [], + "source": [ + "df_blue = pd.read_csv(\"burbank_blue_new_stops.csv\")\n", + "df_blue[\"stop_dir_key\"] = df_blue [\"stop_name\"] + \" \" + df_blue [\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6210a31b-85be-44a6-8cce-9569778e094d", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords_blue = {\n", + " \"Metrolink Station eastside terminal at Front St eastbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Metrolink Station eastside terminal at Front St westbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Verdugo & Ikea Way eastbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & Ikea Way westbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & San Fernando eastbound\": (34.17878489736103, -118.30541531103879),\n", + " \"Verdugo & San Fernando westbound\": (34.17851879621711, -118.30606420445262),\n", + " \"Glenoaks & Providencia eastbound\": (34.17962336385441, -118.30104441612727),\n", + " \"Glenoaks & Providencia westbound\": (34.17927459077334, -118.30121849159424),\n", + " \"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + " \"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + " \"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + " \"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + " \"Alameda & Lake eastbound\": (34.16893683695737, -118.30550179211235),\n", + " \"Alameda & Lake westbound\": (34.169039897393205, -118.30583857000296),\n", + " \"Alameda & Victory eastbound\": (34.166763977999786, -118.30764556757374),\n", + " \"Alameda & Victory westbound\": (34.16653844596177, -118.30776671277157),\n", + " \"Alameda & Main eastbound\": (34.05882507328523, -118.2372783904341),\n", + " \"Alameda & Main westbound\": (34.05926978274522, -118.23693452367304),\n", + " \"Alameda & Mariposa eastbound\": (34.16232050313561, -118.3156158302872),\n", + " \"Alameda & Mariposa westbound\": (34.16231163244352, -118.3163406121734),\n", + " \"Alameda & Reese eastbound\": (34.160989586571944, -118.31959642185599),\n", + " \"Alameda & Reese westbound\": (34.16116470453852, -118.32011647018618),\n", + " \"Alameda & Keystone eastbound\": (34.15960879667507, -118.32369063587736),\n", + " \"Alameda & Keystone westbound\": (34.159809285768965, -118.32415899113134),\n", + " \"Alameda / Buena Vista eastbound\": (34.15830550275982, -118.32847444534262),\n", + " \"Alameda / Buena Vista westbound\": (34.158061055695796, -118.32827576408872),\n", + " \"Buena Vista & Olive eastbound\": (34.16071171372398, -118.32948693260309),\n", + " \"Buena Vista & Olive westbound\": (34.16108254215271, -118.32933331481632),\n", + " \"Buena Vista & Verdugo eastbound\": (34.16511269756838, -118.33111018379287),\n", + " \"Buena Vista & Verdugo westbound\": (34.165299805818485, -118.33167323237512),\n", + " \"Buena Vista & Clark eastbound\": (34.168565005129715, -118.33283674907685),\n", + " \"Buena Vista & Clark westbound\": (34.16866971383002, -118.33328130798998),\n", + " \"Buena Vista & Magnolia eastbound\": (34.17195186709472, -118.33452224880612),\n", + " \"Buena Vista & Magnolia westbound\": (34.17211056589883, -118.33495282578686),\n", + " \"Buena Vista & Chandler eastbound\": (34.175468005263646, -118.33584132009098),\n", + " \"Buena Vista & Chandler westbound\": (34.17564123355154, -118.33666600223994),\n", + " \"Buena Vista & Burbank eastbound\": (34.178999088200214, -118.33829343490339),\n", + " \"Buena Vista & Burbank westbound\": (34.17876464082475, -118.33765850526345),\n", + " \"Buena Vista & Jeffries eastbound\": (34.18121005878122, -118.33854591221447),\n", + " \"Buena Vista & Jeffries westbound\": (34.180900571549294, -118.33814871081255),\n", + " \"Buena Vista & Victory eastbound\": (34.18449938252548, -118.3380410337855),\n", + " \"Buena Vista & Victory westbound\": (34.18466457669643, -118.33870399111125),\n", + " \"Buena Vista & Pacific eastbound\": (34.188461988919315, -118.33840245172041),\n", + " \"Buena Vista & Pacific westbound\": (34.18806979207031, -118.33819315186547),\n", + " \"Buena Vista & Empire eastbound\": (34.19198270314381, -118.33837161247952),\n", + " \"Buena Vista & Empire westbound\": (34.19177371161881, -118.3376321369762),\n", + " \"Buena Vista & Thorton eastbound\": (34.19573279798583, -118.33806248639054),\n", + " \"Buena Vista & Thorton westbound\": (34.19545983217905, -118.33766900330374),\n", + " \"Buena Vista & Winona eastbound\": (34.19971384309687, -118.33802251372927),\n", + " \"Buena Vista & Winona westbound\": (34.19955262101271, -118.33759639149243),\n", + " \"Buena Vista & Tulare eastbound\": (34.20288213768749, -118.33803238893368),\n", + " \"Buena Vista & Tulare westbound\": (34.202779515064044, -118.33757227833074),\n", + " \"Glenoaks / Buena Vista eastbound\": (34.205108109416635, -118.33787452049432),\n", + " \"Glenoaks / Buena Vista westbound\": (34.20469583946896, -118.33746105567633),\n", + " \"Glenoaks / Cohasset eastbound\": (34.206545468267606, -118.34143554899393),\n", + " \"Glenoaks / Cohasset westbound\": (34.2067229265355, -118.34135508272895),\n", + " \"Cohasset & Bloomington eastbound\": (34.2065471711793, -118.34523843199325),\n", + " \"Cohasset & Bloomington westbound\": (34.206793697966674, -118.34551974845968),\n", + " \"N San Fernando / Lima / Avon eastbound\": (34.19149816424647, -118.34706760310583),\n", + " \"N San Fernando / Lima / Avon westbound\": (34.192392404649915, -118.3479249843664)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", + "metadata": {}, + "outputs": [], + "source": [ + "def apply_manual_coords(df, manual_coords):\n", + " # filter rows\n", + " df = df[(df['change_type'] != 'no_change') & \n", + " (df['change_type'] != 'relocating')].copy()\n", + " \n", + " latitudes, longitudes, geoms = [], [], []\n", + "\n", + " for key in df[\"stop_dir_key\"]:\n", + " coords = manual_coords.get(key)\n", + "\n", + " if coords:\n", + " lat, lon = coords\n", + " latitudes.append(lat)\n", + " longitudes.append(lon)\n", + " geoms.append(Point(lon, lat))\n", + " else:\n", + " latitudes.append(None)\n", + " longitudes.append(None)\n", + " geoms.append(None)\n", + "\n", + " df[\"latitude\"] = latitudes\n", + " df[\"longitude\"] = longitudes\n", + " df[\"pt_geom\"] = geoms\n", + "\n", + " df[\"stop_id\"] = [\"new_\" + str(i + 1) for i in range(len(df))]\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
6Hollywood & Jeffrieseastboundadding_existingHollywood & Jeffries eastbound34.181413-118.349037POINT (-118.34903738211447 34.18141305368438)new_1
8Hollywood & Victory Bleastboundadding_existingHollywood & Victory Bl eastbound34.185085-118.349291POINT (-118.34929119735641 34.18508535157502)new_2
10Hollywood & Pacificeastboundadding_existingHollywood & Pacific eastbound34.188251-118.348865POINT (-118.34886491064228 34.18825119276962)new_3
12Hollywood & Valhallaeastboundadding_existingHollywood & Valhalla eastbound34.190124-118.349163POINT (-118.34916328937923 34.19012427165374)new_4
14Hollywood & Thortoneastboundadding_existingHollywood & Thorton eastbound34.196562-118.348767POINT (-118.34876716762236 34.19656151035557)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "6 Hollywood & Jeffries eastbound adding_existing \n", + "8 Hollywood & Victory Bl eastbound adding_existing \n", + "10 Hollywood & Pacific eastbound adding_existing \n", + "12 Hollywood & Valhalla eastbound adding_existing \n", + "14 Hollywood & Thorton eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "6 Hollywood & Jeffries eastbound 34.181413 -118.349037 \n", + "8 Hollywood & Victory Bl eastbound 34.185085 -118.349291 \n", + "10 Hollywood & Pacific eastbound 34.188251 -118.348865 \n", + "12 Hollywood & Valhalla eastbound 34.190124 -118.349163 \n", + "14 Hollywood & Thorton eastbound 34.196562 -118.348767 \n", + "\n", + " pt_geom stop_id \n", + "6 POINT (-118.34903738211447 34.18141305368438) new_1 \n", + "8 POINT (-118.34929119735641 34.18508535157502) new_2 \n", + "10 POINT (-118.34886491064228 34.18825119276962) new_3 \n", + "12 POINT (-118.34916328937923 34.19012427165374) new_4 \n", + "14 POINT (-118.34876716762236 34.19656151035557) new_5 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = apply_manual_coords(df, manual_coords)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
2Verdugo & San Fernandoeastboundadding_existingVerdugo & San Fernando eastbound34.178785-118.305415POINT (-118.30541531103879 34.17878489736103)new_1
3Glenoaks & Providenciaeastboundadding_existingGlenoaks & Providencia eastbound34.179623-118.301044POINT (-118.30104441612727 34.17962336385441)new_2
4Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (-118.29787237592716 34.1769213295822)new_3
5Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (-118.29952381900989 34.174365721132396)new_4
6Alameda & Lakeeastboundadding_existingAlameda & Lake eastbound34.168937-118.305502POINT (-118.30550179211235 34.16893683695737)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "2 Verdugo & San Fernando eastbound adding_existing \n", + "3 Glenoaks & Providencia eastbound adding_existing \n", + "4 Glenoaks / Alameda eastbound adding_existing \n", + "5 Alameda & San Fernando eastbound adding_existing \n", + "6 Alameda & Lake eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "2 Verdugo & San Fernando eastbound 34.178785 -118.305415 \n", + "3 Glenoaks & Providencia eastbound 34.179623 -118.301044 \n", + "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "5 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "6 Alameda & Lake eastbound 34.168937 -118.305502 \n", + "\n", + " pt_geom stop_id \n", + "2 POINT (-118.30541531103879 34.17878489736103) new_1 \n", + "3 POINT (-118.30104441612727 34.17962336385441) new_2 \n", + "4 POINT (-118.29787237592716 34.1769213295822) new_3 \n", + "5 POINT (-118.29952381900989 34.174365721132396) new_4 \n", + "6 POINT (-118.30550179211235 34.16893683695737) new_5 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_blue = apply_manual_coords(df_blue, manual_coords_blue)\n", + "df_blue.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d3b5d469-48b5-49df-ae91-315466705ddb", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_orange = gpd.GeoDataFrame(df, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "gdf_blue = gpd.GeoDataFrame(df_blue, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_orange = gdf_orange.to_crs(epsg=32611)\n", + "gdf_blue = gdf_blue.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 804.672 # in meters\n", + "gdf_orange['buffer'] = gdf_orange.geometry.buffer(buffer_distance)\n", + "gdf_blue['buffer'] = gdf_blue.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_orange.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange = gpd.overlay(acs_gdf, gdf_orange.set_geometry('buffer'), how='intersection')\n", + "geometry_intersect_blue = gpd.overlay(acs_gdf, gdf_blue.set_geometry('buffer'), how='intersection')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "174076a2-a975-41d8-88d3-ca874351d57a", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange['area_2'] = geometry_intersect_orange.geometry.area # area of overlap\n", + "geometry_intersect_orange['area_ratio'] = geometry_intersect_orange['area_2'] / geometry_intersect_orange['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_orange[f'{col}_adj'] = geometry_intersect_orange[col] * geometry_intersect_orange['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_blue['area_2'] = geometry_intersect_blue.geometry.area # area of overlap\n", + "geometry_intersect_blue['area_ratio'] = geometry_intersect_blue['area_2'] / geometry_intersect_blue['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_blue[f'{col}_adj'] = geometry_intersect_blue[col] * geometry_intersect_blue['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "bbf7b71a-c05a-4651-955b-484947ced81c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFPCOUNTYFPTRACTCEGEOIDFQGEOIDNAMENAMELSADSTUSPSNAMELSADCOSTATE_NAMELSADALANDAWATERtotal_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carspublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowinc_total_lowincomemale_seniorsfemale_seniorsmale_youthfemale_youthtotal_seniorstotal_youthdisabled_poparea_m2stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idgeometryarea_2area_ratiototal_pop_adjworkers_with_no_car_adjtotal_youth_adjtotal_seniors_adjpublic_asst_pop_adj
0060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Verdugoeastboundadding_existingGlenoaks & Verdugo eastbound34.181054-118.303481POINT (379878.502 3782998.867)new_31POLYGON ((380620.646 3782807.227, 380651.934 3...32832.4254910.048562364.1215128.40131052.20467152.01042142.589299
1060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Verdugowestboundnew_stopGlenoaks & Verdugo westbound34.181301-118.302910POINT (379931.498 3783025.584)new_32POLYGON ((380620.646 3782807.227, 380685.842 3...44149.4461940.065302489.63068911.29716070.19911869.93791257.269420
2060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Providenciaeastboundadding_existingGlenoaks & Providencia eastbound34.179646-118.301035POINT (380101.930 3782839.941)new_33POLYGON ((380620.646 3782807.227, 380864.729 3...130996.7928840.1937581452.79398633.520053208.289349207.514318169.925357
3060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Providenciawestboundadding_existingGlenoaks & Providencia westbound34.179274-118.301218POINT (380084.556 3782798.877)new_34POLYGON ((380620.646 3782807.227, 380860.718 3...132889.9080020.1965581473.78920534.004472211.299466210.513235172.381053
4060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (380389.550 3782534.037)new_35POLYGON ((380620.646 3782807.227, 381011.875 3...274680.7342320.4062813046.29228070.286552436.751694435.126571356.308126
\n", + "
" + ], + "text/plain": [ + " STATEFP COUNTYFP TRACTCE GEOIDFQ GEOID NAME \\\n", + "0 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "1 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "2 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "3 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "4 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "\n", + " NAMELSAD STUSPS NAMELSADCO STATE_NAME LSAD ALAND \\\n", + "0 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "1 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "2 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "3 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "4 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "\n", + " AWATER total_pop poverty_pop non_us_citizen male_65_to_66 \\\n", + "0 0 7498 1296 1753 55 \n", + "1 0 7498 1296 1753 55 \n", + "2 0 7498 1296 1753 55 \n", + "3 0 7498 1296 1753 55 \n", + "4 0 7498 1296 1753 55 \n", + "\n", + " male_67_to_69 male_70_to_74 male_75_to_79 male_80_to_84 \\\n", + "0 48 81 133 49 \n", + "1 48 81 133 49 \n", + "2 48 81 133 49 \n", + "3 48 81 133 49 \n", + "4 48 81 133 49 \n", + "\n", + " male_85_and_over female_65_to_66 female_67_to_69 female_70_to_74 \\\n", + "0 67 131 160 156 \n", + "1 67 131 160 156 \n", + "2 67 131 160 156 \n", + "3 67 131 160 156 \n", + "4 67 131 160 156 \n", + "\n", + " female_75_to_79 female_80_to_84 female_85_and_over male_15_17 \\\n", + "0 0 80 111 59 \n", + "1 0 80 111 59 \n", + "2 0 80 111 59 \n", + "3 0 80 111 59 \n", + "4 0 80 111 59 \n", + "\n", + " male_18_19 male_20 male_21 male_22_24 female_15_17 female_18_19 \\\n", + "0 153 26 86 307 53 82 \n", + "1 153 26 86 307 53 82 \n", + "2 153 26 86 307 53 82 \n", + "3 153 26 86 307 53 82 \n", + "4 153 26 86 307 53 82 \n", + "\n", + " female_20 female_21 female_22_24 median_household_income \\\n", + "0 0 119 190 80459 \n", + "1 0 119 190 80459 \n", + "2 0 119 190 80459 \n", + "3 0 119 190 80459 \n", + "4 0 119 190 80459 \n", + "\n", + " income_less_10000 income_10000_14999 income_15000_24999 \\\n", + "0 997 835 554 \n", + "1 997 835 554 \n", + "2 997 835 554 \n", + "3 997 835 554 \n", + "4 997 835 554 \n", + "\n", + " income_25000_34999 income_35000_49999 income_50000_64999 \\\n", + "0 626 532 465 \n", + "1 626 532 465 \n", + "2 626 532 465 \n", + "3 626 532 465 \n", + "4 626 532 465 \n", + "\n", + " income_65000_74999 workers_with_no_car households_with_no_cars \\\n", + "0 260 173 262 \n", + "1 260 173 262 \n", + "2 260 173 262 \n", + "3 260 173 262 \n", + "4 260 173 262 \n", + "\n", + " public_asst_pop veteran_pop county_name inc_extremelylow inc_verylow \\\n", + "0 877 51 Los Angeles 2386 1158 \n", + "1 877 51 Los Angeles 2386 1158 \n", + "2 877 51 Los Angeles 2386 1158 \n", + "3 877 51 Los Angeles 2386 1158 \n", + "4 877 51 Los Angeles 2386 1158 \n", + "\n", + " inc_low inc_total_lowincome male_seniors female_seniors male_youth \\\n", + "0 725 4269 433 638 631 \n", + "1 725 4269 433 638 631 \n", + "2 725 4269 433 638 631 \n", + "3 725 4269 433 638 631 \n", + "4 725 4269 433 638 631 \n", + "\n", + " female_youth total_seniors total_youth disabled_pop area_m2 \\\n", + "0 444 1071 1075 1197 676086.191403 \n", + "1 444 1071 1075 1197 676086.191403 \n", + "2 444 1071 1075 1197 676086.191403 \n", + "3 444 1071 1075 1197 676086.191403 \n", + "4 444 1071 1075 1197 676086.191403 \n", + "\n", + " stop_name direction change_type \\\n", + "0 Glenoaks & Verdugo eastbound adding_existing \n", + "1 Glenoaks & Verdugo westbound new_stop \n", + "2 Glenoaks & Providencia eastbound adding_existing \n", + "3 Glenoaks & Providencia westbound adding_existing \n", + "4 Glenoaks / Alameda eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "0 Glenoaks & Verdugo eastbound 34.181054 -118.303481 \n", + "1 Glenoaks & Verdugo westbound 34.181301 -118.302910 \n", + "2 Glenoaks & Providencia eastbound 34.179646 -118.301035 \n", + "3 Glenoaks & Providencia westbound 34.179274 -118.301218 \n", + "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "\n", + " pt_geom stop_id \\\n", + "0 POINT (379878.502 3782998.867) new_31 \n", + "1 POINT (379931.498 3783025.584) new_32 \n", + "2 POINT (380101.930 3782839.941) new_33 \n", + "3 POINT (380084.556 3782798.877) new_34 \n", + "4 POINT (380389.550 3782534.037) new_35 \n", + "\n", + " geometry area_2 \\\n", + "0 POLYGON ((380620.646 3782807.227, 380651.934 3... 32832.425491 \n", + "1 POLYGON ((380620.646 3782807.227, 380685.842 3... 44149.446194 \n", + "2 POLYGON ((380620.646 3782807.227, 380864.729 3... 130996.792884 \n", + "3 POLYGON ((380620.646 3782807.227, 380860.718 3... 132889.908002 \n", + "4 POLYGON ((380620.646 3782807.227, 381011.875 3... 274680.734232 \n", + "\n", + " area_ratio total_pop_adj workers_with_no_car_adj total_youth_adj \\\n", + "0 0.048562 364.121512 8.401310 52.204671 \n", + "1 0.065302 489.630689 11.297160 70.199118 \n", + "2 0.193758 1452.793986 33.520053 208.289349 \n", + "3 0.196558 1473.789205 34.004472 211.299466 \n", + "4 0.406281 3046.292280 70.286552 436.751694 \n", + "\n", + " total_seniors_adj public_asst_pop_adj \n", + "0 52.010421 42.589299 \n", + "1 69.937912 57.269420 \n", + "2 207.514318 169.925357 \n", + "3 210.513235 172.381053 \n", + "4 435.126571 356.308126 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geometry_intersect_orange.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", + "metadata": {}, + "outputs": [], + "source": [ + "agg_orange = geometry_intersect_orange.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'public_asst_pop_adj': 'sum'\n", + "})\n", + " \n", + "gdf_orange = gdf_orange.merge(\n", + " agg_orange,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "36e31d14-b88f-4b54-849a-615f5755f369", + "metadata": {}, + "outputs": [], + "source": [ + "agg_blue = geometry_intersect_blue.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'public_asst_pop_adj': 'sum'\n", + "})\n", + " \n", + "gdf_blue = gdf_blue.merge(\n", + " agg_blue,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", + "metadata": {}, + "outputs": [], + "source": [ + "# add missing columns with placeholder values for now\n", + "gdf_orange['n_arrivals'] = np.nan\n", + "gdf_orange['n_routes'] = np.nan\n", + "gdf_blue['n_arrivals'] = np.nan\n", + "gdf_blue['n_routes'] = np.nan" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
0f1ba526e631625c1d6816d055265ed65802142025-05-21 03:01:24.218747+00:002126233554[802][1]19ece2493f631e3ac0eb036d9a225447NonePOINT(-118.234249 34.056197)Union Station - Metro B & D Lines0.0None80214
1f1ba526e631625c1d6816d055265ed65804222025-05-21 03:01:24.218747+00:002323833554[801][0]96a07f9fd5811203743ac58ee5fb78c2NonePOINT(-118.029199 34.14286)Arcadia Station0.0None80422
2f1ba526e631625c1d6816d055265ed65803102025-05-21 03:01:24.218747+00:002222333554[803][0]ff2bde5e745f3c0e14b9431c1dbab52fNonePOINT(-118.265217 33.927465)Avalon Station0.0None80310
3f1ba526e631625c1d6816d055265ed65804272025-05-21 03:01:24.218747+00:002323633554[801][0]1c194d4ef3de4021dc8988645e46d48aNonePOINT(-117.891636 34.136814)APU / Citrus College Station0.0None80427
4f1ba526e631625c1d6816d055265ed65801202025-05-21 03:01:24.218747+00:002123733554[801][0]f0091ce2ee1d481154131e9b1773db75NonePOINT(-118.269333 34.033155)Grand / LATTC Station0.0None80120
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 f1ba526e631625c1d6816d055265ed65 80214 2025-05-21 03:01:24.218747+00:00 \n", + "1 f1ba526e631625c1d6816d055265ed65 80422 2025-05-21 03:01:24.218747+00:00 \n", + "2 f1ba526e631625c1d6816d055265ed65 80310 2025-05-21 03:01:24.218747+00:00 \n", + "3 f1ba526e631625c1d6816d055265ed65 80427 2025-05-21 03:01:24.218747+00:00 \n", + "4 f1ba526e631625c1d6816d055265ed65 80120 2025-05-21 03:01:24.218747+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 21 262 3 3 \n", + "1 23 238 3 3 \n", + "2 22 223 3 3 \n", + "3 23 236 3 3 \n", + "4 21 237 3 3 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 5 5 4 [802] \n", + "1 5 5 4 [801] \n", + "2 5 5 4 [803] \n", + "3 5 5 4 [801] \n", + "4 5 5 4 [801] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [1] 19ece2493f631e3ac0eb036d9a225447 None \n", + "1 [0] 96a07f9fd5811203743ac58ee5fb78c2 None \n", + "2 [0] ff2bde5e745f3c0e14b9431c1dbab52f None \n", + "3 [0] 1c194d4ef3de4021dc8988645e46d48a None \n", + "4 [0] f0091ce2ee1d481154131e9b1773db75 None \n", + "\n", + " pt_geom stop_name \\\n", + "0 POINT(-118.234249 34.056197) Union Station - Metro B & D Lines \n", + "1 POINT(-118.029199 34.14286) Arcadia Station \n", + "2 POINT(-118.265217 33.927465) Avalon Station \n", + "3 POINT(-117.891636 34.136814) APU / Citrus College Station \n", + "4 POINT(-118.269333 34.033155) Grand / LATTC Station \n", + "\n", + " location_type stop_desc stop_code \n", + "0 0.0 None 80214 \n", + "1 0.0 None 80422 \n", + "2 0.0 None 80310 \n", + "3 0.0 None 80427 \n", + "4 0.0 None 80120 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_agency.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "4ca8d618-a539-41ff-980c-45a628569ce6", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_agency.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
0f1ba526e631625c1d6816d055265ed65802142025-05-21 03:01:24.218747+00:002126233554[802][1]19ece2493f631e3ac0eb036d9a225447NonePOINT(-118.234249 34.056197)Union Station - Metro B & D Lines0.0None80214[802]1
1f1ba526e631625c1d6816d055265ed65804222025-05-21 03:01:24.218747+00:002323833554[801][0]96a07f9fd5811203743ac58ee5fb78c2NonePOINT(-118.029199 34.14286)Arcadia Station0.0None80422[801]1
2f1ba526e631625c1d6816d055265ed65803102025-05-21 03:01:24.218747+00:002222333554[803][0]ff2bde5e745f3c0e14b9431c1dbab52fNonePOINT(-118.265217 33.927465)Avalon Station0.0None80310[803]1
3f1ba526e631625c1d6816d055265ed65804272025-05-21 03:01:24.218747+00:002323633554[801][0]1c194d4ef3de4021dc8988645e46d48aNonePOINT(-117.891636 34.136814)APU / Citrus College Station0.0None80427[801]1
4f1ba526e631625c1d6816d055265ed65801202025-05-21 03:01:24.218747+00:002123733554[801][0]f0091ce2ee1d481154131e9b1773db75NonePOINT(-118.269333 34.033155)Grand / LATTC Station0.0None80120[801]1
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 f1ba526e631625c1d6816d055265ed65 80214 2025-05-21 03:01:24.218747+00:00 \n", + "1 f1ba526e631625c1d6816d055265ed65 80422 2025-05-21 03:01:24.218747+00:00 \n", + "2 f1ba526e631625c1d6816d055265ed65 80310 2025-05-21 03:01:24.218747+00:00 \n", + "3 f1ba526e631625c1d6816d055265ed65 80427 2025-05-21 03:01:24.218747+00:00 \n", + "4 f1ba526e631625c1d6816d055265ed65 80120 2025-05-21 03:01:24.218747+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 21 262 3 3 \n", + "1 23 238 3 3 \n", + "2 22 223 3 3 \n", + "3 23 236 3 3 \n", + "4 21 237 3 3 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 5 5 4 [802] \n", + "1 5 5 4 [801] \n", + "2 5 5 4 [803] \n", + "3 5 5 4 [801] \n", + "4 5 5 4 [801] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [1] 19ece2493f631e3ac0eb036d9a225447 None \n", + "1 [0] 96a07f9fd5811203743ac58ee5fb78c2 None \n", + "2 [0] ff2bde5e745f3c0e14b9431c1dbab52f None \n", + "3 [0] 1c194d4ef3de4021dc8988645e46d48a None \n", + "4 [0] f0091ce2ee1d481154131e9b1773db75 None \n", + "\n", + " pt_geom stop_name \\\n", + "0 POINT(-118.234249 34.056197) Union Station - Metro B & D Lines \n", + "1 POINT(-118.029199 34.14286) Arcadia Station \n", + "2 POINT(-118.265217 33.927465) Avalon Station \n", + "3 POINT(-117.891636 34.136814) APU / Citrus College Station \n", + "4 POINT(-118.269333 34.033155) Grand / LATTC Station \n", + "\n", + " location_type stop_desc stop_code route_id_array_parsed n_routes \n", + "0 0.0 None 80214 [802] 1 \n", + "1 0.0 None 80422 [801] 1 \n", + "2 0.0 None 80310 [803] 1 \n", + "3 0.0 None 80427 [801] 1 \n", + "4 0.0 None 80120 [801] 1 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely import wkt\n", + "\n", + "# convert WKT string → geometry object\n", + "df_existing['geometry'] = df_existing['pt_geom'].apply(wkt.loads)\n", + "\n", + "# extract lon/lat\n", + "df_existing['longitude'] = df_existing['geometry'].apply(lambda geom: geom.x)\n", + "df_existing['latitude'] = df_existing['geometry'].apply(lambda geom: geom.y)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "935a70bd-867a-49b2-867b-12a1b4f71635", + "metadata": {}, + "outputs": [], + "source": [ + "# drop missing coords just in case\n", + "df_existing = df_existing.dropna(subset=['latitude', 'longitude'])\n", + "df_new_orange = gdf_orange.dropna(subset=['latitude', 'longitude'])\n", + "df_new_blue = gdf_blue.dropna(subset=['latitude', 'longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "da409a53-ae7b-4f11-a157-d76388882c32", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import BallTree\n", + "import numpy as np\n", + "\n", + "existing_coords = np.radians(df_existing[['latitude', 'longitude']])\n", + "new_coords_orange = np.radians(df_new_orange[['latitude', 'longitude']])\n", + "new_coords_blue = np.radians(df_new_blue[['latitude', 'longitude']])\n", + "\n", + "tree = BallTree(existing_coords, metric='haversine')\n", + "dist_orange, ind_orange = tree.query(new_coords_orange, k=1)\n", + "dist_blue, ind_blue = tree.query(new_coords_blue, k=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_orange = ind_orange.flatten()\n", + "\n", + "df_new_orange['n_routes_base'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "\n", + "df_new_orange['nearest_stop_distance_m'] = dist_orange.flatten() * 6371000\n", + "\n", + "df_new_orange['matched_stop_name'] = df_existing.iloc[matched_idx_orange]['stop_name'].values\n", + "df_new_orange['matched_stop_id'] = df_existing.iloc[matched_idx_orange]['stop_id'].values\n", + "df_new_orange['matched_n_routes'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "df_new_orange['matched_agency_name'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", + "df_new_orange['n_arrivals_base'] = df_existing.iloc[matched_idx_orange]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "e15d37f1-42de-441c-b46c-2ed73103df13", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_blue = ind_blue.flatten()\n", + "df_new_blue['n_routes_base'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "\n", + "df_new_blue['nearest_stop_distance_m'] = dist_blue.flatten() * 6371000\n", + "\n", + "df_new_blue['matched_stop_name'] = df_existing.iloc[matched_idx_blue]['stop_name'].values\n", + "df_new_blue['matched_stop_id'] = df_existing.iloc[matched_idx_blue]['stop_id'].values\n", + "df_new_blue['matched_n_routes'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "df_new_blue['matched_agency_name'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", + "df_new_blue['n_arrivals_base'] = df_existing.iloc[matched_idx_blue]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routes
37Alameda & San Fernandowestbound24Alameda / San Fernando180091
36Alameda & San Fernandoeastbound62San Fernando / Alameda54531
19Amherst Dr / San Fernandowestbound102San Fernando / Scott123482
18Amherst Dr / San Fernandoeastbound96San Fernando / Amherst38652
13Empire & Buena Vistaeastbound96Empire / Buena Vista18172
17Empire & Grismerwestbound102San Fernando / Grismer123462
16Empire & Grismereastbound96San Fernando / Grismer38682
12Empire & Ontarioeastbound51Empire & Ontario30674571
15Empire & Valpredawestbound102Empire / Valpreda46352
14Empire & Valpredaeastbound96Empire / Valpreda12492
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "37 Alameda & San Fernando westbound 24 \n", + "36 Alameda & San Fernando eastbound 62 \n", + "19 Amherst Dr / San Fernando westbound 102 \n", + "18 Amherst Dr / San Fernando eastbound 96 \n", + "13 Empire & Buena Vista eastbound 96 \n", + "17 Empire & Grismer westbound 102 \n", + "16 Empire & Grismer eastbound 96 \n", + "12 Empire & Ontario eastbound 51 \n", + "15 Empire & Valpreda westbound 102 \n", + "14 Empire & Valpreda eastbound 96 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \n", + "37 Alameda / San Fernando 18009 1 \n", + "36 San Fernando / Alameda 5453 1 \n", + "19 San Fernando / Scott 12348 2 \n", + "18 San Fernando / Amherst 3865 2 \n", + "13 Empire / Buena Vista 1817 2 \n", + "17 San Fernando / Grismer 12346 2 \n", + "16 San Fernando / Grismer 3868 2 \n", + "12 Empire & Ontario 3067457 1 \n", + "15 Empire / Valpreda 4635 2 \n", + "14 Empire / Valpreda 1249 2 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_orange[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes',]].sort_values('stop_name').head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "51ba1872-0315-4e91-ac93-1e4512191513", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routes
8Alameda & Keystoneeastbound18Buena Vista / Alameda158401
35Alameda & Keystonewestbound18Buena Vista / Alameda158401
4Alameda & Lakeeastbound23Alameda / Lake181191
31Alameda & Lakewestbound24Alameda / Lake180751
32Alameda & Mainwestbound392Cesar E Chavez / Alameda92184
5Alameda & Maineastbound392Cesar E Chavez / Alameda92184
6Alameda & Mariposaeastbound24Victory / Alameda180761
33Alameda & Mariposawestbound18Olive / Reese180711
7Alameda & Reeseeastbound18Olive / Parish180701
34Alameda & Reesewestbound18Olive / Keystone180691
30Alameda & San Fernandowestbound24Alameda / San Fernando180091
3Alameda & San Fernandoeastbound62San Fernando / Alameda54531
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "8 Alameda & Keystone eastbound 18 \n", + "35 Alameda & Keystone westbound 18 \n", + "4 Alameda & Lake eastbound 23 \n", + "31 Alameda & Lake westbound 24 \n", + "32 Alameda & Main westbound 392 \n", + "5 Alameda & Main eastbound 392 \n", + "6 Alameda & Mariposa eastbound 24 \n", + "33 Alameda & Mariposa westbound 18 \n", + "7 Alameda & Reese eastbound 18 \n", + "34 Alameda & Reese westbound 18 \n", + "30 Alameda & San Fernando westbound 24 \n", + "3 Alameda & San Fernando eastbound 62 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \n", + "8 Buena Vista / Alameda 15840 1 \n", + "35 Buena Vista / Alameda 15840 1 \n", + "4 Alameda / Lake 18119 1 \n", + "31 Alameda / Lake 18075 1 \n", + "32 Cesar E Chavez / Alameda 9218 4 \n", + "5 Cesar E Chavez / Alameda 9218 4 \n", + "6 Victory / Alameda 18076 1 \n", + "33 Olive / Reese 18071 1 \n", + "7 Olive / Parish 18070 1 \n", + "34 Olive / Keystone 18069 1 \n", + "30 Alameda / San Fernando 18009 1 \n", + "3 San Fernando / Alameda 5453 1 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_blue[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes',]].sort_values('stop_name').head(12)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing')]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "orange_stops = set(zip(df_new_orange['stop_name'], df_new_orange['direction'], df_new_orange['change_type'], ))\n", + "blue_stops = set(zip(df_new_blue['stop_name'], df_new_blue['direction'], df_new_blue['change_type']))\n", + "\n", + "common_stops = orange_stops & blue_stops\n", + "list(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", + "metadata": {}, + "outputs": [], + "source": [ + "df_new_orange['source'] = 'orange'\n", + "df_new_blue['source'] = 'blue'" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined = pd.concat([df_new_orange, df_new_blue], ignore_index=True)\n", + "df_combined = df_combined[\n", + " df_combined['change_type'].isin(['new_stop', 'adding_existing'])\n", + "].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['key'] = list(zip(\n", + " df_combined['stop_name'],\n", + " df_combined['direction'],\n", + " df_combined['change_type']\n", + "))\n", + "\n", + "df_combined['is_common'] = df_combined['key'].isin(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", + "metadata": {}, + "outputs": [], + "source": [ + "# REMOVE duplicate rows for common stops\n", + "df_combined = (\n", + " df_combined\n", + " .sort_values('source') # keeps orange if duplicate exists\n", + " .drop_duplicates(subset=['key'], keep='first')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "f706ac72-936a-46fa-8994-908e72968689", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['n_routes_base'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 0,\n", + " df_combined['n_routes_base']\n", + ")\n", + "\n", + "df_combined['n_routes_scn'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 1,\n", + " df_combined['n_routes_base'] + 1\n", + ")\n", + "\n", + "# instead of forcing 2, increment properly\n", + "df_combined.loc[\n", + " df_combined['is_common'] & (df_combined['change_type'] == 'adding_existing'),\n", + " 'n_routes_scn'\n", + "] += 1\n" + ] + }, + { + "cell_type": "markdown", + "id": "64cf3875-a0cc-43e9-a19b-b36252fbbd9f", + "metadata": {}, + "source": [ + "Orange route currently has 51 arrivals; Proposed Blue Routes service :would operate every 20 minutes from 6:00am to 8:00pm, Monday through Friday = 43 arrivals per day." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "93666c83-c8be-4e00-b455-005fa305e6aa", + "metadata": {}, + "outputs": [], + "source": [ + "# apply base reset\n", + "is_new = df_combined['change_type'] == 'new_stop'\n", + "df_combined.loc[is_new, 'n_arrivals_base'] = 0\n", + "\n", + "# define correct increment\n", + "increment = np.where(\n", + " df_combined['is_common'],\n", + " 94, \n", + " df_combined['source'].map({'orange': 51, 'blue': 43})\n", + ")\n", + "\n", + "# final calculation \n", + "df_combined['n_arrivals_scn'] = df_combined['n_arrivals_base'] + increment\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idbuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjpublic_asst_pop_adjn_arrivalsn_routesn_routes_basenearest_stop_distance_mmatched_stop_namematched_stop_idmatched_n_routesmatched_agency_namen_arrivals_basesourcekeyis_commonn_routes_scnn_arrivals_scn
45Alameda & Maineastboundnew_stopAlameda & Main eastbound34.058825-118.237278POINT (385815.509 3769368.949)new_6POLYGON ((386620.181 3769368.949, 386616.307 3...14468.600454387.6234671715.9962541559.8729171321.068363NaNNaN094.938646Cesar E Chavez / Alameda921848d9623a1823a27925b7e2f00e44fc5bb0blue(Alameda & Main, eastbound, new_stop)False143
66Verdugo & Ikea Waywestboundadding_existingVerdugo & Ikea Way westbound34.177147-118.307473POINT (379505.037 3782570.325)new_27POLYGON ((380309.709 3782570.325, 380305.834 3...10611.944862306.9873851827.3755481019.2655551240.892220NaNNaN69.406820Verdugo / Ikea168268d9623a1823a27925b7e2f00e44fc5bb217blue(Verdugo & Ikea Way, westbound, adding_existing)False7260
65Cohasset & Bloomingtoneastboundnew_stopCohasset & Bloomington eastbound34.206547-118.345238POINT (376067.409 3785875.904)new_26POLYGON ((376872.081 3785875.904, 376868.207 3...4265.08936841.173862772.300857466.130639201.046230NaNNaN0290.160070Glenoaks / Cabrini1076018d9623a1823a27925b7e2f00e44fc5bb0blue(Cohasset & Bloomington, eastbound, new_stop)False143
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "45 Alameda & Main eastbound new_stop \n", + "66 Verdugo & Ikea Way westbound adding_existing \n", + "65 Cohasset & Bloomington eastbound new_stop \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "45 Alameda & Main eastbound 34.058825 -118.237278 \n", + "66 Verdugo & Ikea Way westbound 34.177147 -118.307473 \n", + "65 Cohasset & Bloomington eastbound 34.206547 -118.345238 \n", + "\n", + " pt_geom stop_id \\\n", + "45 POINT (385815.509 3769368.949) new_6 \n", + "66 POINT (379505.037 3782570.325) new_27 \n", + "65 POINT (376067.409 3785875.904) new_26 \n", + "\n", + " buffer total_pop_adj \\\n", + "45 POLYGON ((386620.181 3769368.949, 386616.307 3... 14468.600454 \n", + "66 POLYGON ((380309.709 3782570.325, 380305.834 3... 10611.944862 \n", + "65 POLYGON ((376872.081 3785875.904, 376868.207 3... 4265.089368 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "45 387.623467 1715.996254 1559.872917 \n", + "66 306.987385 1827.375548 1019.265555 \n", + "65 41.173862 772.300857 466.130639 \n", + "\n", + " public_asst_pop_adj n_arrivals n_routes n_routes_base \\\n", + "45 1321.068363 NaN NaN 0 \n", + "66 1240.892220 NaN NaN 6 \n", + "65 201.046230 NaN NaN 0 \n", + "\n", + " nearest_stop_distance_m matched_stop_name matched_stop_id \\\n", + "45 94.938646 Cesar E Chavez / Alameda 9218 \n", + "66 9.406820 Verdugo / Ikea 1682 \n", + "65 290.160070 Glenoaks / Cabrini 10760 \n", + "\n", + " matched_n_routes matched_agency_name n_arrivals_base \\\n", + "45 4 8d9623a1823a27925b7e2f00e44fc5bb 0 \n", + "66 6 8d9623a1823a27925b7e2f00e44fc5bb 217 \n", + "65 1 8d9623a1823a27925b7e2f00e44fc5bb 0 \n", + "\n", + " source key is_common \\\n", + "45 blue (Alameda & Main, eastbound, new_stop) False \n", + "66 blue (Verdugo & Ikea Way, westbound, adding_existing) False \n", + "65 blue (Cohasset & Bloomington, eastbound, new_stop) False \n", + "\n", + " n_routes_scn n_arrivals_scn \n", + "45 1 43 \n", + "66 7 260 \n", + "65 1 43 " + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['stop_group'] = df_combined['stop_name']\n", + "\n", + "df_grouped = df_combined.groupby('stop_group').agg({\n", + " 'n_arrivals_base': 'mean',\n", + " 'n_arrivals_scn': 'mean',\n", + " 'n_routes_base': 'mean',\n", + " 'n_routes_scn': 'mean',\n", + " 'total_pop_adj': 'mean',\n", + " 'workers_with_no_car_adj': 'mean',\n", + " 'total_youth_adj': 'mean',\n", + " 'total_seniors_adj': 'mean',\n", + " 'public_asst_pop_adj': 'mean',\n", + " 'change_type': lambda x: ', '.join(sorted(x.unique()))\n", + "}).reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_grouped[[\n", + " 'n_routes_scn',\n", + " 'n_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'public_asst_pop_adj'\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'n_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[nb_model_extended.model.exog_names]\n", + "df_grouped['pred_scenario'] = nb_model_extended.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", + "metadata": {}, + "outputs": [], + "source": [ + "X_base = df_grouped[[\n", + " 'n_routes_base',\n", + " 'n_arrivals_base',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'public_asst_pop_adj'\n", + "]].fillna(0)\n", + "\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes_base': 'n_routes',\n", + " 'n_arrivals_base': 'n_arrivals'\n", + "})\n", + "\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "\n", + "X_base = sm.add_constant(X_base)\n", + "X_base = X_base[nb_model_extended.model.exog_names]\n", + "df_grouped['pred_baseline'] = nb_model_extended.predict(X_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", + "metadata": {}, + "outputs": [], + "source": [ + "df_grouped['ridership_change'] = (\n", + " df_grouped['pred_scenario'] - df_grouped['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_grouptotal_pop_adjn_arrivals_basen_arrivals_scnn_routes_basen_routes_scnworkers_with_no_car_adjtotal_youth_adjtotal_seniors_adjpublic_asst_pop_adjchange_typeridership_changepred_scenariopred_baseline
0Alameda & Keystone4293.7087950.043.00.01.033.057828240.491509761.82514597.771031new_stop21.83500121.9505060.115506
1Alameda & Lake9227.69343123.566.51.02.0252.765168949.2440581084.409976750.030442adding_existing36.82013650.15531913.335182
2Alameda & Main14507.5213420.043.00.01.0388.9964961558.8573851725.9425941327.662417new_stop34.28002734.4613660.181339
3Alameda & Mariposa5341.0429300.043.00.01.066.341354321.765127913.488790184.402549new_stop22.12124822.2382680.117020
4Alameda & Reese4670.3779700.043.00.01.022.194411198.756101918.90703397.789073new_stop20.39995520.5078690.107914
5Alameda & San Fernando10714.97364943.0137.01.03.0238.0252001168.6279351697.5962171222.747642adding_existing81.270071107.93480226.664730
6Alameda / Buena Vista4375.65396120.063.00.51.556.714377395.084899608.501816121.759197adding_existing, new_stop30.26558639.3307149.065128
7Amherst Dr / San Fernando7680.3032600.051.00.01.0111.935435849.4885891137.810544565.381572new_stop31.54790431.6794960.131592
8Buena Vista & Burbank6163.1069178.051.00.51.530.013337561.422704841.882362229.641547adding_existing, new_stop25.24067727.8345392.593862
9Buena Vista & Chandler6280.1969570.043.00.01.023.792660659.106148843.444579243.804705new_stop23.44733223.5713670.124035
\n", + "
" + ], + "text/plain": [ + " stop_group total_pop_adj n_arrivals_base n_arrivals_scn \\\n", + "0 Alameda & Keystone 4293.708795 0.0 43.0 \n", + "1 Alameda & Lake 9227.693431 23.5 66.5 \n", + "2 Alameda & Main 14507.521342 0.0 43.0 \n", + "3 Alameda & Mariposa 5341.042930 0.0 43.0 \n", + "4 Alameda & Reese 4670.377970 0.0 43.0 \n", + "5 Alameda & San Fernando 10714.973649 43.0 137.0 \n", + "6 Alameda / Buena Vista 4375.653961 20.0 63.0 \n", + "7 Amherst Dr / San Fernando 7680.303260 0.0 51.0 \n", + "8 Buena Vista & Burbank 6163.106917 8.0 51.0 \n", + "9 Buena Vista & Chandler 6280.196957 0.0 43.0 \n", + "\n", + " n_routes_base n_routes_scn workers_with_no_car_adj total_youth_adj \\\n", + "0 0.0 1.0 33.057828 240.491509 \n", + "1 1.0 2.0 252.765168 949.244058 \n", + "2 0.0 1.0 388.996496 1558.857385 \n", + "3 0.0 1.0 66.341354 321.765127 \n", + "4 0.0 1.0 22.194411 198.756101 \n", + "5 1.0 3.0 238.025200 1168.627935 \n", + "6 0.5 1.5 56.714377 395.084899 \n", + "7 0.0 1.0 111.935435 849.488589 \n", + "8 0.5 1.5 30.013337 561.422704 \n", + "9 0.0 1.0 23.792660 659.106148 \n", + "\n", + " total_seniors_adj public_asst_pop_adj change_type \\\n", + "0 761.825145 97.771031 new_stop \n", + "1 1084.409976 750.030442 adding_existing \n", + "2 1725.942594 1327.662417 new_stop \n", + "3 913.488790 184.402549 new_stop \n", + "4 918.907033 97.789073 new_stop \n", + "5 1697.596217 1222.747642 adding_existing \n", + "6 608.501816 121.759197 adding_existing, new_stop \n", + "7 1137.810544 565.381572 new_stop \n", + "8 841.882362 229.641547 adding_existing, new_stop \n", + "9 843.444579 243.804705 new_stop \n", + "\n", + " ridership_change pred_scenario pred_baseline \n", + "0 21.835001 21.950506 0.115506 \n", + "1 36.820136 50.155319 13.335182 \n", + "2 34.280027 34.461366 0.181339 \n", + "3 22.121248 22.238268 0.117020 \n", + "4 20.399955 20.507869 0.107914 \n", + "5 81.270071 107.934802 26.664730 \n", + "6 30.265586 39.330714 9.065128 \n", + "7 31.547904 31.679496 0.131592 \n", + "8 25.240677 27.834539 2.593862 \n", + "9 23.447332 23.571367 0.124035 " + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_grouped[['stop_group', 'total_pop_adj', 'n_arrivals_base', 'n_arrivals_scn', 'n_routes_base', 'n_routes_scn',\n", + " 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'public_asst_pop_adj', 'change_type', 'ridership_change', 'pred_scenario', 'pred_baseline' ]].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "c7c18a84-8c64-40ef-9521-cf4b6c371de8", + "metadata": {}, + "outputs": [], + "source": [ + "df_grouped_filter = df_grouped[df_grouped['stop_group'] == \"Empire & Grismer\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1579.5463419913115\n" + ] + } + ], + "source": [ + "ridership_change = df_grouped[\"ridership_change\"].sum()\n", + "print(ridership_change)" + ] + }, + { + "cell_type": "markdown", + "id": "79bdc190-3bf0-4fc8-ac41-4df7eefe99ee", + "metadata": {}, + "source": [ + "## Querying Ridership Data for Burbank Bus Service" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 \n", + " AND agency IN (\n", + " 'City of Burbank',\n", + " 'Southern California Regional Rail Authority, dba: Metrolink',\n", + " 'Los Angeles County Metropolitan Transportation Authority , dba: Metro'\n", + " )\n", + " \"\"\"\n", + " ridership_data= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "87d940d7-c839-44d6-80b6-13467e9de035", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agencyntd_idreporter_typereport_yearprimary_uza_nameunlinked_passenger_trips_uptagency_voms
0Los Angeles County Metropolitan Transportation...90154Full Reporter2024Los Angeles--Long Beach--Anaheim, CA302611788.02722.0
1Southern California Regional Rail Authority, d...90151Full Reporter2024Los Angeles--Long Beach--Anaheim, CA4321271.0195.0
2City of Burbank90256Reduced Reporter2024Los Angeles--Long Beach--Anaheim, CA211543.017.0
\n", + "
" + ], + "text/plain": [ + " agency ntd_id reporter_type \\\n", + "0 Los Angeles County Metropolitan Transportation... 90154 Full Reporter \n", + "1 Southern California Regional Rail Authority, d... 90151 Full Reporter \n", + "2 City of Burbank 90256 Reduced Reporter \n", + "\n", + " report_year primary_uza_name \\\n", + "0 2024 Los Angeles--Long Beach--Anaheim, CA \n", + "1 2024 Los Angeles--Long Beach--Anaheim, CA \n", + "2 2024 Los Angeles--Long Beach--Anaheim, CA \n", + "\n", + " unlinked_passenger_trips_upt agency_voms \n", + "0 302611788.0 2722.0 \n", + "1 4321271.0 195.0 \n", + "2 211543.0 17.0 " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "4794fc04-095a-49fa-a2bd-f5b09889542e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "841492.0602739726" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summed_ridership = ridership_data['unlinked_passenger_trips_upt'].sum()\n", + "average_daily_ridership = summed_ridership / 365\n", + "average_daily_ridership" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.06887407384747071" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# City of Burbank UPT\n", + "burbank_upt = ridership_data.loc[\n", + " ridership_data[\"agency\"] == \"City of Burbank\",\n", + " \"unlinked_passenger_trips_upt\"\n", + "].iloc[0]\n", + "\n", + "# City of Burbank average daily ridership\n", + "burbank_avg_daily = burbank_upt / 365\n", + "\n", + "# percentage share of daily ridership\n", + "burbank_share_daily_pct = (burbank_avg_daily / average_daily_ridership) * 100\n", + "\n", + "burbank_share_daily_pct" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "da312c75-80af-4dfc-8297-68cabdabe6de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "579.5698630136986" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "burbank_avg_daily" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "f03e393c-bab7-46cd-8f65-551bc38f7599", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "108.78979140381182" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "burbank_share_daily_pct*ridership_change" + ] + }, + { + "cell_type": "markdown", + "id": "77b86263-ba2f-4f82-af8a-6c67eef47d96", + "metadata": {}, + "source": [ + "According to NTD ridership data, Burbank has daily average of 579.56 ridership. Addition of new route (blue route and few stops in orange route will increase burbank ridership by 18.76% ( Based on NTD data)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8106785-671a-401c-9a4f-6f8b7fe56041", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_acs_2/Burbank_ridership.md b/ahsc_grant/ahsc_acs_2/Burbank_ridership.md new file mode 100644 index 000000000..fb4e92a15 --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/Burbank_ridership.md @@ -0,0 +1,64 @@ +# BurbankBus Ridership Modeling: Analytical Summary and Interpretation + +## Summary of Improvements Received from the Agency. +Three-year pilot system expansion of BurbankBus service with a new line (Blue Route), an extended line (Orange Route), and addition of weekend service on all lines +- Will add two new transit connections to the Downtown Metrolink station, which serves Metrolink’s Antelope Valley and Ventura County lines, Amtrak’s LOSSAN corridor, six Metro lines, Santa Clarita Transit, and Glendale Beeline +- Orange Route is the only transit connection from BUR airport to Metro rail (North Hollywood B Line); it currently does not run on weekends, limiting potential for employee mode shift and utility for weekend visitors +- Will add transit connections to major regional retail at the Empire Center (Target, Walmart, Lowes, REI, etc.) and Downtown Burbank +- Will adapt service to post-pandemic ridership changes by shifting from a primarily commuter focus to providing weekend service, with connections to major tourist destinations at the Warner Brothers and Universal studios as well as the BUR airport +- Expand and improve transit service to increase ridership for other major destinations and for major events including the LA28 Olympics +• Woodbury University +• Providence Saint Joseph Medical Center +• Major employers such as Disney Studios and Netflix + + +1. Purpose of the Analysis +The goal of this modeling exercise is to estimate how BurbankBus ridership is expected to change under a system expansion scenario that: +- New Blue Route n_routes +1 +- Extended Orange Route n_routes +1 (partial effect) +- More service / frequency n_arrivals ↑ +- Weekend service : currently this model is just weekday model +- New stops new rows (or modified features) + + +2. Methodology +A statistical model is used to predict ridership changes at the stop level, based on service characteristics and surrounding population demographics. +Transit ridership data are count data—they are non-negative integers with skewness and often over-dispersion (variance > mean). The Negative Binomial model is ideal for this because: + + It handles over-dispersed count outcomes better than a Poisson model. + It directly models the expected number of daily boardings at each stop. + The model estimates how ridership responds to changes in: + +- Number of routes serving a stop, +- Number of daily scheduled arrivals, +- Surrounding population and socioeconomic characteristics. + + + +3. Interpretation of Key Predictors + +a. Number of Routes (n_routes) +Surprisingly, the model suggests that adding a route, holding arrivals constant, is associated with lower ridership. This happens because: +- If a stop gains a second route but both routes have low frequencies, the model detects that “more routes” alone does not increase accessibility. +- In most systems, frequency, not the count of routes, is the strongest driver of ridership. +- Routes with low headways or overlapping coverage can inflate the route count without increasing usable service. +- The model interprets “more routes without more service” as route fragmentation rather than increased access. +- Thus, the negative sign is not implausible—it reflects that routes matter only when they come with meaningful service levels. + +b. Arrivals / Frequency (n_arrivals and log_arrivals) +This is the strongest operational predictor. More scheduled arrivals → shorter waits → more usable transit. +The log transformation captures diminishing marginal returns: + +Going from 0 → 30 arrivals produces a large ridership jump. +Going from 30 → 60 arrivals has a smaller incremental effect. + + + +c. Demographic Variables +Population-weighted demographics within a 0.5-mile buffer approximate the market for transit: + +Total population: more people → more potential riders. +Workers with no car: high transit reliance → higher ridership baseline. +Youth and senior populations: proxies for transit-dependent groups. +Public assistance population: indicator of economic need and transit dependency. +All contribute proportionally to expected boardings. diff --git a/ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv b/ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv new file mode 100644 index 000000000..8d95e4974 --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv @@ -0,0 +1,60 @@ +stop_name,direction,change_type +Metrolink Station eastside terminal at Front St,eastbound,no_change +Verdugo & Ikea Way,eastbound,relocating +Verdugo & San Fernando,eastbound,adding_existing +Glenoaks & Providencia,eastbound,adding_existing +Glenoaks / Alameda,eastbound,adding_existing +Alameda & San Fernando,eastbound,adding_existing +Alameda & Lake,eastbound,adding_existing +Alameda & Victory,eastbound,relocating +Alameda & Main,eastbound,new_stop +Alameda & Mariposa,eastbound,new_stop +Alameda & Reese,eastbound,new_stop +Alameda & Keystone,eastbound,new_stop +Alameda / Buena Vista,eastbound,adding_existing +Buena Vista & Olive,eastbound,adding_existing +Buena Vista & Verdugo,eastbound,signage_update_required (nearside in NBR turn pocket; allow buses to proceed through) +Buena Vista & Clark,eastbound,new_stop +Buena Vista & Magnolia,eastbound,new_stop +Buena Vista & Chandler,eastbound,new_stop +Buena Vista & Burbank,eastbound,new_stop +Buena Vista & Jeffries,eastbound,new_stop +Buena Vista & Victory,eastbound,new_stop +Buena Vista & Pacific,eastbound,new_stop +Buena Vista & Empire,eastbound,new_stop +Buena Vista & Thorton,eastbound,new_stop +Buena Vista & Winona,eastbound,new_stop +Buena Vista & Tulare,eastbound,new_stop +Glenoaks / Buena Vista,eastbound,new_stop +Glenoaks / Cohasset,eastbound,new_stop +Cohasset & Bloomington,eastbound,new_stop +Metrolink Station eastside terminal at Front St,westbound,no_change +Verdugo & Ikea Way,westbound,adding_existing +Verdugo & San Fernando,westbound,new_stop +Glenoaks & Providencia,westbound,adding_existing +Glenoaks / Alameda,westbound,adding_existing +Alameda & San Fernando,westbound,adding_existing +Alameda & Lake,westbound,adding_existing +Alameda & Victory,westbound,relocating +Alameda & Main,westbound,new_stop +Alameda & Mariposa,westbound,new_stop +Alameda & Reese,westbound,new_stop +Alameda & Keystone,westbound,reactivate +Alameda / Buena Vista,westbound,new_stop +Buena Vista & Olive,westbound,adding_existing +Buena Vista & Verdugo,westbound,new_stop +Buena Vista & Clark,westbound,new_stop +Buena Vista & Magnolia,westbound,relocating +Buena Vista & Chandler,westbound,new_stop +Buena Vista & Burbank,westbound,adding_existing +Buena Vista & Jeffries,westbound,new_stop +Buena Vista & Victory,westbound,new_stop +Buena Vista & Pacific,westbound,adding_existing +Buena Vista & Empire,westbound,new_stop +Buena Vista & Thorton,westbound,new_stop +Buena Vista & Winona,westbound,new_stop +Buena Vista & Tulare,westbound,new_stop +Glenoaks / Buena Vista,westbound,new_stop +Glenoaks / Cohasset,westbound,adding_existing +Cohasset & Bloomington,westbound,new_stop +N San Fernando / Lima / Avon,westbound,terminus_nearside_stop (on San Fernando facing west; parking modifications) diff --git a/ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv b/ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv new file mode 100644 index 000000000..c12902ec8 --- /dev/null +++ b/ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv @@ -0,0 +1,55 @@ +stop_name,direction,change_type +Burbank & Clybourn,eastbound,no_change +Burbank & Clybourn,westbound,no_change +Burbank & Pass/Maple,eastbound,no_change +Burbank & Pass/Maple,westbound,no_change +Burbank & Hollywood,eastbound,relocating +Burbank & Hollywood,westbound,no_change +Hollywood & Jeffries,eastbound,adding_existing +Hollywood & Jeffries,westbound,no_change +Hollywood & Victory Bl,eastbound,adding_existing +Hollywood & Victory Bl,westbound,no_change +Hollywood & Pacific,eastbound,adding_existing +Hollywood & Pacific,westbound,no_change +Hollywood & Valhalla,eastbound,adding_existing +Hollywood & Valhalla,westbound,no_change +Hollywood & Thorton,eastbound,adding_existing +Hollywood & Thorton,westbound,adding_existing +New BUR terminal,eastbound,new_stop +New BUR terminal,westbound,new_stop +Winona / Ontario,eastbound,new_stop +Winona / Ontario,westbound,new_stop +Ontario & Thorton,eastbound,replacing +Ontario & Thorton,westbound,replacing +Empire & Ontario,eastbound,adding_existing +Empire & Ontario,westbound,no_change +Empire & Buena Vista,eastbound,adding_existing +Empire & Buena Vista,westbound,no_change +Empire & Valpreda,eastbound,adding_existing +Empire & Valpreda,westbound,adding_existing +Empire & Grismer,eastbound,adding_existing +Empire & Grismer,westbound,adding_existing +Amherst Dr / San Fernando,eastbound,new_stop +Amherst Dr / San Fernando,westbound,new_stop +Glenoaks & Bethany,eastbound,adding_existing +Glenoaks & Bethany,westbound,adding_existing +Glenoaks & Fairmount,eastbound,adding_existing +Glenoaks & Fairmount,westbound,adding_existing +Glenoaks & Cypress,eastbound,adding_existing +Glenoaks & Cypress,westbound,adding_existing +Glenoaks & Magnolia,eastbound,adding_existing +Glenoaks & Magnolia,westbound,adding_existing +Glenoaks & Olive,eastbound,new_stop +Glenoaks & Olive,westbound,new_stop +Glenoaks & Verdugo,eastbound,adding_existing +Glenoaks & Verdugo,westbound,new_stop +Glenoaks & Providencia,eastbound,adding_existing +Glenoaks & Providencia,westbound,adding_existing +Glenoaks / Alameda,eastbound,adding_existing +Glenoaks / Alameda,westbound,adding_existing +Alameda & San Fernando,eastbound,adding_existing +Alameda & San Fernando,westbound,adding_existing +Flower & Alameda,eastbound,adding_existing +Flower & Alameda,westbound,adding_existing +Metrolink Station (Olive overpass loop),eastbound,no_change +Metrolink Station (Olive overpass loop),westbound,no_change From e3ef85e7435e71ba8141fad01e50951aa4dc4510 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Tue, 28 Apr 2026 16:48:26 +0000 Subject: [PATCH 12/21] more burbank details added --- ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb index 5afcf6b0b..0c26d01d3 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -3583,7 +3583,9 @@ "id": "77b86263-ba2f-4f82-af8a-6c67eef47d96", "metadata": {}, "source": [ - "According to NTD ridership data, Burbank has daily average of 579.56 ridership. Addition of new route (blue route and few stops in orange route will increase burbank ridership by 18.76% ( Based on NTD data)." + "According to NTD ridership data, Burbank currently records an average daily ridership of 579.56 passengers. With the addition of a new Blue Route and several enhancements to the Orange Route, ridership is projected to increase by 18.76%, based on NTD-based estimates.\n", + "\n", + "This expansion includes 35 new Blue Line stops and 10 new Orange Line stops, along with additional stops integrated into existing LA Metro and Metrolink services." ] }, { From 321cef61031cc0c4d6a3aed3afc69db0b1754c31 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Wed, 29 Apr 2026 18:36:07 +0000 Subject: [PATCH 13/21] scatter plot added for orange county and burbank --- .../ahsc_acs_2/07_Model_exploration.ipynb | 174 +++++++- .../08_Model_Exploration_Burbank.ipynb | 407 ++++++++++-------- 2 files changed, 378 insertions(+), 203 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb index e5d0af5af..7e6b6c057 100644 --- a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb @@ -360,8 +360,8 @@ "Dep. Variable: average_daily_boardings R-squared: 0.056\n", "Model: OLS Adj. R-squared: 0.056\n", "Method: Least Squares F-statistic: 313.7\n", - "Date: Thu, 09 Apr 2026 Prob (F-statistic): 1.16e-262\n", - "Time: 19:03:47 Log-Likelihood: -1.5966e+05\n", + "Date: Wed, 29 Apr 2026 Prob (F-statistic): 1.16e-262\n", + "Time: 18:32:12 Log-Likelihood: -1.5966e+05\n", "No. Observations: 21264 AIC: 3.193e+05\n", "Df Residuals: 21259 BIC: 3.194e+05\n", "Df Model: 4 \n", @@ -591,8 +591,8 @@ "Model Family: Poisson Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -1.3658e+06\n", - "Date: Thu, 09 Apr 2026 Deviance: 2.6532e+06\n", - "Time: 19:05:18 Pearson chi2: 3.09e+07\n", + "Date: Wed, 29 Apr 2026 Deviance: 2.6532e+06\n", + "Time: 18:32:12 Pearson chi2: 3.09e+07\n", "No. Iterations: 14 Pseudo R-squ. (CS): 1.000\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -678,34 +678,67 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 12, "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'df' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[43mdf\u001b[49m[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_arrivals\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_routes\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 2\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_pop_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mworkers_with_no_car_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_youth_adj\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_seniors_adj\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# 4. Add intercept\u001b[39;00m\n\u001b[1;32m 5\u001b[0m X \u001b[38;5;241m=\u001b[39m sm\u001b[38;5;241m.\u001b[39madd_constant(X)\n", - "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21256\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -82715.\n", + "Date: Wed, 29 Apr 2026 Deviance: 38113.\n", + "Time: 18:32:13 Pearson chi2: 2.80e+05\n", + "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -2.0303 0.037 -55.232 0.000 -2.102 -1.958\n", + "n_routes -0.1100 0.009 -11.643 0.000 -0.129 -0.091\n", + "log_arrivals 1.4157 0.011 126.517 0.000 1.394 1.438\n", + "total_pop_adj 5.629e-06 5.69e-06 0.989 0.323 -5.53e-06 1.68e-05\n", + "workers_with_no_car_adj 0.0010 3.45e-05 30.033 0.000 0.001 0.001\n", + "total_youth_adj 0.0002 1.29e-05 16.642 0.000 0.000 0.000\n", + "public_asst_pop_adj 3.942e-05 3.73e-05 1.056 0.291 -3.37e-05 0.000\n", + "total_seniors_adj -0.0003 2.58e-05 -12.337 0.000 -0.000 -0.000\n", + "===========================================================================================\n" ] } ], "source": [ - "X = df[['n_arrivals', 'n_routes',\n", - " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj']]\n", + "# Copy the dataset\n", + "df = stop_route_df.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", "\n", "# Same X and y as Poisson\n", - "nb_model_extended = sm.GLM(\n", + "nb_model_extended_final = sm.GLM(\n", " y,\n", " X,\n", " family=sm.families.NegativeBinomial()\n", ").fit()\n", "\n", - "print(nb_model_extended.summary())" + "print(nb_model_extended_final.summary())" ] }, { @@ -1028,8 +1061,8 @@ "Model Family: NegativeBinomial Df Model: 6\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -83560.\n", - "Date: Thu, 09 Apr 2026 Deviance: 39802.\n", - "Time: 19:16:01 Pearson chi2: 1.64e+05\n", + "Date: Wed, 29 Apr 2026 Deviance: 39802.\n", + "Time: 18:32:27 Pearson chi2: 1.64e+05\n", "No. Iterations: 30 Pseudo R-squ. (CS): 0.8179\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -1079,10 +1112,111 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "30c2afcd-c996-48fd-93c0-ce39c3447fcc", "metadata": {}, "outputs": [], + "source": [ + "stop_route_df_orange = stop_route_df[stop_route_df['organization_name'] == \"Orange County Transportation Authority\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ae81647c-fa1d-4328-acd0-0626cd5af66c", + "metadata": {}, + "outputs": [], + "source": [ + "df_orange = stop_route_df_orange.copy()\n", + "\n", + "df_orange[\"log_arrivals\"] = np.log(df_orange[\"n_arrivals\"] + 1)\n", + "\n", + "feature_cols = [\n", + " 'n_routes',\n", + " 'log_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'public_asst_pop_adj',\n", + " 'total_seniors_adj'\n", + "]\n", + "\n", + "X_orange = df_orange[feature_cols]\n", + "\n", + "# FORCE constant\n", + "X_orange = sm.add_constant(X_orange, has_constant='add')\n", + "\n", + "X_orange = X_orange.reindex(\n", + " columns=nb_model_extended_final.model.exog_names,\n", + " fill_value=0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f6147e5b-2807-486d-b06a-3a3b9a17e52b", + "metadata": {}, + "outputs": [], + "source": [ + "df_orange[\"predicted_boardings\"] = nb_model_extended_final.predict(X_orange)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "49db6d6b-9464-4b6d-a5e4-4ed046089fe5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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er1iyJAhYt68eeKPf/yjKC4uFuPGjWv39zV06FAxa9as1OPm5max7777Ck3TxEUXXSTuv/9+8cc//lEceOCB4vPPPxeVlZXixhtvFIC4+OKLxT//+U/xz3/+U6xevVoIIbrFxt5A77NoN6axsVEA4oc//OF292tdSEOhkBBi8wJ+1llntdu3dYHbkieffFIA4v33309taz3GBRdc0GbfU045ReTn56ceL1myRADiqquuarPfeeed104ELrzwQjFgwABRW1vbZt8zzzxTZGdnt7GtsyIwfvx4kZ2dvd197rjjDgGI//73v0KIzYvLoEGDUp+ZEEI89dRTAhB//etfhRBCfP75520WvY5Yt26d0DRN/OlPf2qz/euvvxYOh6PN9tb3NH/+/Db7NjU1CbfbLX75y1+22X7LLbcIRVHE+vXr0zpXMpkURUVFYvz48SKRSKT2e/DBBwWwQxFYsWKFAMQ999zTZvtll10mAoFA6v/pyiuvFMFgUBiGsd3jdQQgLrzwQlFTUyOqq6vF4sWLxdSpUwUgbr/9diHE5v+nESNGtPnbsCxLjBo1SkybNq3NhUs0GhXDhw8XP/jBD1LbTj75ZOHxeFKfoRBCLF++XGiatkMR+P3vfy8A8dxzz7Wzv/W8n376qQDEww8/3O757rCxNyDdQT1Ic3MzAFlZWdvdr/X51tvkVn72s5+129fr9aZ+j8fj1NbWMnnyZACWLl3abv+tj3HYYYdRV1eXOtfrr78OwGWXXdZmvyuuuKLNYyEEzz77LDNmzEAIQW1tbepn2rRpNDU1tTn/woULEZ2YX9Tc3LzTn8+5557b5rU/+tGPGDBgAK+++ioA2dnZALzxxhvtXGCtPPfcc1iWxemnn97mPZWUlDBq1CjefffdNvu73W7OP//8NtuCwSDHH388Tz31VJv3/J///IfJkyczZMiQtM712WefUV1dzc9+9jNcLlfqeOedd17qPW2PPffck/Hjx/Of//wntc00TZ555hlmzJiR+hvKyckhEonw1ltv7fCYHfH3v/+dwsJCioqKmDRpEh9++CFz5szhqquuarPfrFmz2vzdfvHFF6xcuZIf//jH1NXVpT6HSCTC1KlTef/997EsC9M0eeONNzj55JNTnyHA3nvvzbRp03Zo37PPPst+++3XYdLFjlI3e8rGTCADwz1I6wLVKgbbYltiMXz48Hb71tfXc8MNN/Dvf/+b6urqNs9t7ecG2vxhAuTm5gLQ0NBAMBhk/fr1qKra7lx77LFHm8c1NTU0Njby4IMP8uCDD3b4Pra2pzNkZWVRW1u73X229fmMGjWqzWNFUdhjjz1Yt24dYH9+c+bM4Y477uDxxx/nsMMO46STTuInP/lJajFduXIlQoh2x2rF6XS2eTxo0KA2C3MrZ5xxBi+88AKLFi3i4IMPZvXq1SxZsoS77rortU9nz7V+/foO35/T6dxu8sDW9lx77bVs2rSJQYMGsXDhQqqrq9sE1y+77DKeeuopjj/+eAYNGsSxxx7L6aefznHHHdepc/zwhz/k8ssvR1EUsrKy2GeffTpMXtj6b2vlypWALQ7boqmpiUQiQSwW6/Dz2muvvVJivy1Wr17NzJkzO/NW2tFTNmYCKQI9SHZ2NgMGDOCrr77a7n5fffUVgwYNIhgMttm+5dVTK6effjofffQRc+fOZfz48QQCASzL4rjjjsOyrHb7a5rW4Tk7c5W+Ja3H/slPfrLNL8a4cePSOibYV0xffPEFZWVl7QSrldbPb8yYMWkf//bbb+e8887jxRdf5M033+TnP/858+bN4+OPP2bw4MFYloWiKLz22msdflaBQKDN447+TwBmzJiBz+fjqaee4uCDD+app55CVVVOO+201D7pnmtXOOOMM7jmmmt4+umnueqqq3jqqafIzs5us8AXFRXxxRdf8MYbb/Daa6/x2muv8fDDD3Puuefy6KOP7vAcgwcP5phjjtnhflt/Zq1/S7feeus20zIDgQCJRGKHx+4u+oKNO4sUgR7mxBNP5G9/+xsffPBBKsNnS/73v/+xbt06Lrnkkh0eq6GhgQULFnDDDTfw+9//PrW99aplZxg6dCiWZbF27do2VzOrVq1qs19hYSFZWVmYptmpL35nOfHEE3nyySd57LHHuO6669o9HwqFePHFFxk9enS7u5Ot37cQglWrVrUTo7FjxzJ27Fiuu+46PvroIw455BDmz5/PTTfdxMiRIxFCMHz4cPbcc8+dfh9+v58TTzyRp59+mjvuuIP//Oc/HHbYYQwcODC1T2fPNXTo0NT7O/roo1PbdV1n7dq17Lfffju0Z/jw4Rx00EH85z//4fLLL+e5557j5JNPbpdG6XK5mDFjBjNmzMCyLC677DIeeOABfve737X7vLuKkSNHArYbbXt/S4WFhXi93g7/vlesWNGp83zzzTfb3WdbbqGesjETyJhADzN37ly8Xi+XXHJJuzTO+vp6fvazn+Hz+Zg7d+4Oj9V69bj1VfyWLod0afVb3nfffW2233PPPe3OPXPmzFRK59bU1NS0edzZFNEf/ehHjBkzhptvvpnPPvuszXOWZXHppZfS0NDA9ddf3+61jz32WBtX2zPPPENFRUUqRz0UCmEYRpvXjB07FlVVU1dwp556KpqmccMNN7T7XIUQ7f7PtscZZ5xBeXk5Dz30EF9++WW7uobOnmvixIkUFhYyf/58kslkap9HHnmExsbGtOz5+OOP+cc//kFtbW07e7Z+b6qqpgS0O69wJ0yYwMiRI7ntttsIh8Ptnm/9W9I0jWnTpvHCCy9QVlaWev7bb7/ljTfe2OF5Zs6cyZdffsnzzz/f7rnWz7/VfbX159pTNmYCeSfQw4waNYpHH32Us88+m7Fjx7arGK6treXJJ59MXXlsj2AwyOGHH84tt9yCrusMGjSIN998M5WXvTNMmDCBmTNnctddd1FXV8fkyZN57733+P7774G2V0o333wz7777LpMmTeKiiy5izJgx1NfXs3TpUt5++23q6+tT+5577rm89957O3Q7uVwunnnmGaZOncqhhx7apmL4iSeeYOnSpfzyl7/kzDPPbPfavLy81Guqqqq466672GOPPbjooosAeOedd7j88ss57bTT2HPPPTEMg3/+858pQQP7iu+mm27immuuYd26dZx88slkZWWxdu1ann/+eS6++GKuvvrqTn2WJ5xwAllZWVx99dVtztFKZ8/ldDq56aabuOSSSzj66KM544wzWLt2LQ8//HCnYwJguw6vvvpqrr76avLy8tpd0f70pz+lvr6eo48+msGDB7N+/Xruuecexo8fz957793p86SLqqo89NBDHH/88eyzzz6cf/75DBo0iE2bNvHuu+8SDAZ56aWXALjhhht4/fXXOeyww7jsssswDIN77rmHffbZZ4du1rlz5/LMM89w2mmnccEFFzBhwgTq6+v573//y/z589lvv/0YOXIkOTk5zJ8/n6ysLPx+P5MmTWL48OE9YmNG6PF8JIkQws4lPuuss8SAAQOE0+kUJSUl4qyzzhJff/11u31b0ztramraPbdx40ZxyimniJycHJGdnS1OO+00UV5e3i6dc1vH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xx9/HI/Hk64Zu8Q111xDU1NT6mfDhg09en6JpN+xYQMcfzxEInY9gBSAXkPaIvB///d/OBwOnnnmGe6//34GDRoEwGuvvcZxxx3X6eMsWbKE6upqDjjgABwOBw6Hg/fee4+7774bh8NBcXExyWSSxsbGNq+rqqqipKQEgJKSknbZQq2PW/fpCLfbTTAYbPMjkUi6kdJS+PWv4dhj4cUXwevNtEWSFhQhhMjEiZubm1m/fn2bbeeffz6jR4/m17/+NaWlpRQWFvLkk08yc+ZMAFasWMHo0aNZtGgRkydP5rXXXuPEE0+koqKCoqIiAB588EHmzp1LdXU1bre7U7aEQiGys7NpamqSgiCRdCVCgKJsfmwY4JDlST1BZ9e1tP83tuX3VxQFt9uNy+Xq1HGysrLYd99922zz+/3k5+entl944YXMmTOHvLw8gsEgV1xxBVOmTGHy5MkAHHvssYwZM4ZzzjmHW265hcrKSq677jpmz57daQGQSCTdxDvvwC23wDPPbM7/lwLQ60j7fyQnJwdlS2XfisGDB3Peeedx/fXXo6q7Vot25513oqoqM2fOJJFIMG3aNO67777U85qm8fLLL3PppZcyZcoU/H4/s2bN4sYbb9yl80okkl1kwQKYMQNiMZg3D/70p0xbJNkGabuDHnvsMX77299y3nnncdBBBwHwySef8Oijj3LddddRU1PDbbfdxty5c7n22mu7xeiuRrqDJJIu5O23bQGIx2H6dHj2WZB35j1Ot7mDHn30UW6//XZOP/301LYZM2YwduxYHnjgARYsWMCQIUP405/+1GdEQCKRdBFvvQUnnWQLwIkn2q4gKQC9mrT9NR999BH7779/u+37779/qojr0EMPpaysbNetk0gkfYc33th8BzBjhhSAPkLaIlBaWsrf//73dtv//ve/p4qu6urqyM3N3XXrJBJJ3yAeh5/+FBIJ+OEPpQD0IdJ2B912222cdtppvPbaaxx44IEAfPbZZ3z33Xc888wzgN0Q7owzzuhaSyUSSe/F44FXXoG//hXuv99uCS3pE+xUncDatWt54IEH+P777wHYa6+9uOSSSxg2bFhX29cjyMCwRLKThEJyBGQvpbPrWsaKxXoTUgQkkp3g5Zdh1iy7AvjQQzNtjWQrui07CKCxsZFPPvmE6upqLMtq89y55567M4eUSCR9iZdegpkz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plot_df = df_orange[[\n", + " \"stop_id\",\n", + " \"stop_name\",\n", + " \"average_daily_boardings\",\n", + " \"predicted_boardings\"\n", + "]].dropna()\n", + "\n", + "plt.figure(figsize=(4,4))\n", + "\n", + "plt.scatter(\n", + " plot_df[\"average_daily_boardings\"],\n", + " plot_df[\"predicted_boardings\"],\n", + " alpha=0.4\n", + ")\n", + "\n", + "max_val = plot_df[[\n", + " \"average_daily_boardings\",\n", + " \"predicted_boardings\"\n", + "]].max().max()\n", + "\n", + "plt.plot([0, max_val], [0, max_val], 'r--')\n", + "\n", + "plt.xlabel(\"Observed Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Orange: Observed vs Predicted\")\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "600842e7-0e53-4423-9c58-8cc93738ab31", + "metadata": {}, + "outputs": [], "source": [] } ], diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb index 0c26d01d3..742aaa8e2 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -62,8 +62,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", - "Note: you may need to restart the kernel to use updated packages.\n" + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -125,111 +126,6 @@ { "cell_type": "code", "execution_count": 5, - "id": "94775a9b-31d2-4207-92cb-4edfc5dd4d94", - "metadata": {}, - "outputs": [], - "source": [ - "stop_route_df_Burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "8c83beb5-9ccd-4175-878b-8b0d9fb07817", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", - " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", - " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", - " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", - " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", - " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", - " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", - " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", - " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", - " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", - " 'total_youth_adj', 'ALAND_adj'],\n", - " dtype='object')" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "stop_route_df_Burbank.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "708d5e19-89dd-45f4-a18e-72c7a083f505", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Generalized Linear Model Regression Results \n", - "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 45\n", - "Model: GLM Df Residuals: 39\n", - "Model Family: NegativeBinomial Df Model: 5\n", - "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -106.92\n", - "Date: Tue, 28 Apr 2026 Deviance: 31.163\n", - "Time: 16:18:12 Pearson chi2: 27.4\n", - "No. Iterations: 20 Pseudo R-squ. (CS): 0.4822\n", - "Covariance Type: nonrobust \n", - "===========================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-------------------------------------------------------------------------------------------\n", - "n_routes -12.3185 4.007 -3.074 0.002 -20.172 -4.465\n", - "log_arrivals 3.5259 1.049 3.362 0.001 1.471 5.581\n", - "total_pop_adj -0.0010 0.000 -2.712 0.007 -0.002 -0.000\n", - "workers_with_no_car_adj 0.0042 0.005 0.783 0.434 -0.006 0.015\n", - "total_youth_adj 0.0048 0.003 1.485 0.138 -0.002 0.011\n", - "total_seniors_adj 0.0034 0.001 2.812 0.005 0.001 0.006\n", - "===========================================================================================\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", - " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" - ] - } - ], - "source": [ - "# Copy the dataset\n", - "df = stop_route_df_Burbank.copy()\n", - "y = df['average_daily_boardings']\n", - "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", - "X = df[['n_routes', 'log_arrivals',\n", - " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj']]\n", - "\n", - "# 4. Add intercept\n", - "X = sm.add_constant(X)\n", - "\n", - "# Same X and y as Poisson\n", - "nb_model_extended_burbank = sm.GLM(\n", - " y,\n", - " X,\n", - " family=sm.families.NegativeBinomial()\n", - ").fit()\n", - "\n", - "print(nb_model_extended_burbank.summary())" - ] - }, - { - "cell_type": "code", - "execution_count": 8, "id": "e5233074-13e1-434e-a65b-31afd59e7fb1", "metadata": {}, "outputs": [ @@ -252,8 +148,8 @@ "Model Family: NegativeBinomial Df Model: 20\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -80573.\n", - "Date: Tue, 28 Apr 2026 Deviance: 33828.\n", - "Time: 16:18:13 Pearson chi2: 1.67e+05\n", + "Date: Wed, 29 Apr 2026 Deviance: 33828.\n", + "Time: 18:07:36 Pearson chi2: 1.67e+05\n", "No. Iterations: 32 Pseudo R-squ. (CS): 0.8625\n", "Covariance Type: nonrobust \n", "==================================================================================================================================\n", @@ -306,7 +202,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "id": "362e041e-18d9-4bc7-8de7-0550869adf5f", "metadata": {}, "outputs": [ @@ -329,8 +225,8 @@ "Model Family: NegativeBinomial Df Model: 7\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -82715.\n", - "Date: Tue, 28 Apr 2026 Deviance: 38113.\n", - "Time: 16:18:13 Pearson chi2: 2.80e+05\n", + "Date: Wed, 29 Apr 2026 Deviance: 38113.\n", + "Time: 18:07:36 Pearson chi2: 2.80e+05\n", "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -391,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", "metadata": {}, "outputs": [], @@ -401,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "id": "75df8b20-dee7-420d-9231-229db9d53915", "metadata": {}, "outputs": [], @@ -426,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "id": "98205773-013c-45d4-a8bc-302d8a33e97f", "metadata": {}, "outputs": [], @@ -437,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "b3165da9-4c91-44f2-bad2-941995d22b73", "metadata": {}, "outputs": [], @@ -488,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", "metadata": {}, "outputs": [], @@ -499,7 +395,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "6210a31b-85be-44a6-8cce-9569778e094d", "metadata": {}, "outputs": [], @@ -570,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", "metadata": {}, "outputs": [], @@ -580,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", "metadata": {}, "outputs": [], @@ -616,7 +512,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", "metadata": {}, "outputs": [ @@ -734,7 +630,7 @@ "14 POINT (-118.34876716762236 34.19656151035557) new_5 " ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -746,7 +642,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", "metadata": {}, "outputs": [ @@ -864,7 +760,7 @@ "6 POINT (-118.30550179211235 34.16893683695737) new_5 " ] }, - "execution_count": 19, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -876,7 +772,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "id": "d3b5d469-48b5-49df-ae91-315466705ddb", "metadata": {}, "outputs": [], @@ -896,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", "metadata": {}, "outputs": [], @@ -910,7 +806,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", "metadata": {}, "outputs": [], @@ -921,7 +817,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "id": "174076a2-a975-41d8-88d3-ca874351d57a", "metadata": {}, "outputs": [], @@ -939,7 +835,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", "metadata": {}, "outputs": [], @@ -957,7 +853,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "id": "bbf7b71a-c05a-4651-955b-484947ced81c", "metadata": {}, "outputs": [ @@ -1620,7 +1516,7 @@ "4 435.126571 356.308126 " ] }, - "execution_count": 25, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1631,7 +1527,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 23, "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", "metadata": {}, "outputs": [], @@ -1653,7 +1549,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "id": "36e31d14-b88f-4b54-849a-615f5755f369", "metadata": {}, "outputs": [], @@ -1675,7 +1571,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 25, "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", "metadata": {}, "outputs": [], @@ -1689,7 +1585,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 26, "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", "metadata": {}, "outputs": [ @@ -1894,7 +1790,7 @@ "4 0.0 None 80120 " ] }, - "execution_count": 29, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -1905,7 +1801,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 27, "id": "4ca8d618-a539-41ff-980c-45a628569ce6", "metadata": {}, "outputs": [], @@ -1925,7 +1821,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 28, "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", "metadata": {}, "outputs": [ @@ -2142,7 +2038,7 @@ "4 0.0 None 80120 [801] 1 " ] }, - "execution_count": 31, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -2153,7 +2049,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 29, "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", "metadata": {}, "outputs": [], @@ -2170,7 +2066,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 30, "id": "935a70bd-867a-49b2-867b-12a1b4f71635", "metadata": {}, "outputs": [], @@ -2183,7 +2079,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 31, "id": "da409a53-ae7b-4f11-a157-d76388882c32", "metadata": {}, "outputs": [], @@ -2202,7 +2098,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 32, "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", "metadata": {}, "outputs": [], @@ -2222,7 +2118,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 33, "id": "e15d37f1-42de-441c-b46c-2ed73103df13", "metadata": {}, "outputs": [], @@ -2241,7 +2137,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 34, "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", "metadata": {}, "outputs": [ @@ -2395,7 +2291,7 @@ "14 Empire / Valpreda 1249 2 " ] }, - "execution_count": 37, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2406,7 +2302,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 35, "id": "51ba1872-0315-4e91-ac93-1e4512191513", "metadata": {}, "outputs": [ @@ -2582,7 +2478,7 @@ "3 San Fernando / Alameda 5453 1 " ] }, - "execution_count": 38, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -2593,22 +2489,22 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 36, "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing')]" + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing')]" ] }, - "execution_count": 39, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -2623,7 +2519,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 37, "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", "metadata": {}, "outputs": [], @@ -2634,7 +2530,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 38, "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", "metadata": {}, "outputs": [], @@ -2647,7 +2543,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 39, "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", "metadata": {}, "outputs": [], @@ -2663,7 +2559,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 40, "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", "metadata": {}, "outputs": [], @@ -2678,7 +2574,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 41, "id": "f706ac72-936a-46fa-8994-908e72968689", "metadata": {}, "outputs": [], @@ -2712,7 +2608,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 42, "id": "93666c83-c8be-4e00-b455-005fa305e6aa", "metadata": {}, "outputs": [], @@ -2734,7 +2630,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 43, "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", "metadata": {}, "outputs": [ @@ -2939,7 +2835,7 @@ "65 1 43 " ] }, - "execution_count": 47, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -2950,7 +2846,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 44, "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", "metadata": {}, "outputs": [], @@ -2973,7 +2869,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 45, "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", "metadata": {}, "outputs": [], @@ -3004,7 +2900,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 46, "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", "metadata": {}, "outputs": [], @@ -3033,7 +2929,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 47, "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", "metadata": {}, "outputs": [], @@ -3045,7 +2941,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 48, "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", "metadata": {}, "outputs": [ @@ -3311,7 +3207,7 @@ "9 23.447332 23.571367 0.124035 " ] }, - "execution_count": 52, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -3323,7 +3219,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 49, "id": "c7c18a84-8c64-40ef-9521-cf4b6c371de8", "metadata": {}, "outputs": [], @@ -3333,7 +3229,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 50, "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", "metadata": {}, "outputs": [ @@ -3360,7 +3256,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 51, "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", "metadata": {}, "outputs": [], @@ -3385,7 +3281,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 52, "id": "87d940d7-c839-44d6-80b6-13467e9de035", "metadata": {}, "outputs": [ @@ -3471,7 +3367,7 @@ "2 211543.0 17.0 " ] }, - "execution_count": 56, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -3482,7 +3378,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 53, "id": "4794fc04-095a-49fa-a2bd-f5b09889542e", "metadata": {}, "outputs": [ @@ -3492,7 +3388,7 @@ "841492.0602739726" ] }, - "execution_count": 57, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -3505,7 +3401,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 54, "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", "metadata": {}, "outputs": [ @@ -3515,7 +3411,7 @@ "0.06887407384747071" ] }, - "execution_count": 58, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -3538,7 +3434,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 55, "id": "da312c75-80af-4dfc-8297-68cabdabe6de", "metadata": {}, "outputs": [ @@ -3548,7 +3444,7 @@ "579.5698630136986" ] }, - "execution_count": 59, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -3559,7 +3455,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 56, "id": "f03e393c-bab7-46cd-8f65-551bc38f7599", "metadata": {}, "outputs": [ @@ -3569,7 +3465,7 @@ "108.78979140381182" ] }, - "execution_count": 60, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -3590,10 +3486,155 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 73, "id": "c8106785-671a-401c-9a4f-6f8b7fe56041", "metadata": {}, "outputs": [], + "source": [ + "stop_route_df_Burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "0e9f14d2-38e6-4541-8614-d05de534fdb6", + "metadata": {}, + "outputs": [], + "source": [ + "# Copy dataset\n", + "df_burbank = stop_route_df_Burbank.copy()\n", + "\n", + "feature_cols = [\n", + " 'n_routes',\n", + " 'log_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'public_asst_pop_adj',\n", + " 'total_seniors_adj'\n", + "]\n", + "\n", + "# Same feature engineering\n", + "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)\n", + "\n", + "# Build X using SAME feature list\n", + "X_burbank = df_burbank[feature_cols]\n", + "\n", + "# Force constant\n", + "X_burbank = sm.add_constant(X_burbank, has_constant='add')\n", + "\n", + "# Ensure exact column match + order\n", + "X_burbank = X_burbank.reindex(\n", + " columns=nb_model_extended.model.exog_names,\n", + " fill_value=0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "6f5cf2d8-33ec-4274-af9c-2babf1973daf", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank[\"predicted_boardings\"] = nb_model_extended.predict(X_burbank)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "f0f9a62a-59a8-47bf-a73b-81aba4560584", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAGJCAYAAABsCo9JAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlqpJREFUeJzsnXecFOX9x98zs3339nqhHB1EFERBir1FVDQWYkuioMYYo0Zj1J8ao7FEYjcaW5qiUWPX2Au2qIiKHQXpR7netu9OeX5/zN3CcQfcwt3tHfe8X697eTs7u/PdlXs+83yrIoQQSCQSiaRfombbAIlEIpFkDykCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCOyEHHXQQu+++e1auPWfOHAKBQFauvSnDhg3j6KOPzrYZPc5DDz2EoiisXr0626ZkldWrV6MoCg899FD62B//+EcURcmeUZvRkY3ZQIpAN9P6R7npT0lJCQcffDCvvvpqts3rMwgheOSRRzjggAPIy8vD5/Mxfvx4rrvuOqLRaLbNk2zGnDlz2vybDwaD7LHHHtx2220kk8lsm5cR9957b9YX6u5EikAPcd111/HII4/w8MMPc9lll1FbW8tRRx3FSy+9lG3Tej2maXLKKadw+umnA/Yd3Z133snEiRO59tprmTZtGtXV1Vm2UrI5brebRx55hEceeYQbb7yRgoICLrnkEmbPnp0Ve6666iri8XjGr9vZRcCRbQP6C0ceeSSTJ09OPz7rrLMoLS3l8ccf7zK3RTQaxe/3d8l79SZuvvlmnnzySS655BJuueWW9PFf/vKXnHTSSRx33HHMmTOnV+6sdtb/J53B4XDw85//PP3417/+NVOnTuWJJ57g9ttvZ+DAge1eI4QgkUjg9Xq7xR6HQy55myN3AlkiLy8Pr9fb5h/lu+++i6IovPvuu23O7ch32Op7X7FiBUcddRQ5OTn87Gc/a/O6RYsWsc8+++D1ehk+fDj3339/m+dTqRRXX301kyZNIjc3F7/fz/77788777zT4fVvvfVW/va3vzFy5Ejcbjd77703n3766TY/65dffklxcTEHHXQQkUgEgObmZpYsWUJzc/NWXxuPx7nlllsYM2YMc+fObff8Mcccw+zZs3nttdf4+OOP2z3/xhtvMHHiRDweD+PGjePZZ59t87yu61x77bWMHj0aj8dDYWEh++23H2+++Wab85YsWcJPfvITCgoK8Hg8TJ48mf/+979tzml1/b333nv8+te/pqSkhMGDB/P000+nj2/OAw88gKIofPvttxldC2Dx4sUccsgheL1eBg8ezA033IBlWVv9PgFuvfVWFEVhzZo17Z674oorcLlcNDY2ArBs2TJmzZpFWVkZHo+HwYMHc8opp2zz/1tHqKrKQQcdBJCOWbTGbl5//XUmT56M1+vlgQceAKCpqYmLLrqI8vJy3G43o0aN4qabbmr3GZuampgzZw65ubnk5eUxe/Zsmpqa2l1/SzGBf//730yZMgWfz0d+fj4HHHAAb7zxRtq+xYsX895776VdW62foTtszAZSFnuI5uZm6urqEEJQU1PD3XffTSQSaXOnlCmGYTBjxgz2228/br31Vnw+X/q5xsZGjjrqKE466SROPfVUnnzySc4991xcLhdnnnkmAKFQiH/84x+ceuqpnH322YTDYf75z38yY8YMPvnkEyZOnNjmeo899hjhcJhzzjkHRVG4+eabOeGEE1i5ciVOp7NDGz/99FNmzJjB5MmTeeGFF9J3eM899xxnnHEGDz74IHPmzNniZ/zggw9obGzkwgsv3OJd3Omnn86DDz7ISy+9xLRp09LHly1bxsknn8yvfvUrZs+ezYMPPsiJJ57Ia6+9xo9+9CPAXhjmzp3LL37xC6ZMmUIoFOKzzz7j888/T5+zePFi9t13XwYNGsTll1+O3+/nySef5LjjjuOZZ57h+OOPb2PPr3/9a4qLi7n66quJRqPMnDmTQCDAk08+yYEHHtjm3CeeeILddtstHcjv7LWqqqo4+OCDMQwjfd7f/va3Tt1Bn3TSSVx22WU8+eSTXHrppW2ee/LJJzn88MPJz88nlUoxY8YMkskkF1xwAWVlZaxfv56XXnqJpqYmcnNzt3mtzVmxYgUAhYWF6WNLly7l1FNP5ZxzzuHss89ml112IRaLceCBB7J+/XrOOecchgwZwkcffcQVV1xBZWUld955J2DvHI499lg++OADfvWrX7Hrrrvy3HPPddrldO211/LHP/6RffbZh+uuuw6Xy8XChQt5++23Ofzww7nzzju54IILCAQC/P73vwegtLQUoMds7HaEpFt58MEHBdDux+12i4ce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pe92hw4diqZpaV9iK/fee2/G728YRjrVDux00AceeIDi4mImTZoEbLyz3/ROfuHChSxYsCDj622Oy+Xi2WefZe+99+aYY47hk08+afN8Z1NEfT4fl1xyCUuXLk1nZ2zKyy+/zEMPPcSMGTPaZAaBLYSb+p9DoRAPP/wwEydOpKysDID6+vo2rwkEAowaNSpd1VpSUsJBBx3EAw88QGVlZbvr19bWbtX+TTnssMMoKCjgiSee4IknnmDKlCltXCGZXOuoo47i448/bvO91tbW8uijj3banlmzZqFpGo8//jhPPfUURx99dJubhlAolL5RaWX8+PGoqtrtVb8nnXQSCxYs4PXXX2/3XFNTU9quo446CsMwuO+++9LPm6bJ3Xffvc1rHHfccaiqynXXXdcupXPTvwm/399hOmdP2NgTyJ1AD/Hqq6+yZMkSwPYVPvbYYyxbtozLL7887YPNzc3lxBNP5O6770ZRFEaOHMlLL72U9i1mwsCBA7nppptYvXo1Y8aM4YknnuDLL7/kb3/7Wzqd8+ijj+bZZ5/l+OOPZ+bMmaxatYr777+fcePGpXcnO4LX6+Wll17ikEMO4cgjj+S9995Lp0J2NkUU4PLLL+eLL77gpptuYsGCBcyaNQuv18sHH3zAv//9b3bddVfmzZvX7nVjxozhrLPO4tNPP6W0tJR//etfVFdX8+CDD6bPGTduHAcddBCTJk2ioKCAzz77jKeffprzzz8/fc4999zDfvvtx/jx4zn77LMZMWIE1dXVLFiwgHXr1vHVV1916vtwOp2ccMIJ/Oc//yEajXLrrbe2O6ez17rssst45JFHOOKII7jwwgvTKaJDhw5Nu8e2RWv7kttvv51wONxmVwLw9ttvc/7553PiiScyZswYDMPgkUceQdM0Zs2a1alrbC+XXnop//3vfzn66KOZM2cOkyZNIhqN8s033/D000+zevVqioqKOOaYY9h33325/PLLWb16dboWpDN1DKNGjeL3v/89119/Pfvvvz8nnHACbrebTz/9lIEDB6brUiZNmsR9993HDTfcwKhRoygpKeGQQw7pERt7hKzlJfUTOkoR9Xg8YuLEieK+++5rk4omhBC1tbVi1qxZwufzifz8fHHOOeeIb7/9tsMU0dZUzM058MADxW677SY+++wzMX36dOHxeMTQoUPFX//61zbnWZYlbrzx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m5vLWWedxcUXX0xBQQHBYJALLriA6dOnM23aNAAOP/xwxo0bx2mnncbNN99MVVUVV111Feeddx5utzubH00ikexM1NXZO4CvvtooADvJjWZWRWDdunWceuqp1NfXU1xczH777cfHH39McXExAHfccQeqqjJr1iySySQzZszg3nvvTb9e0zReeuklzj33XKZPn47f72f27Nlcd9112fpIEolkZ6N1B/D111Baak8G20kEAEARQohsG5FtQqEQubm5NDc3y/iARCJpSzRqD4b/4Qd7B7BJV4PeTGfXtb4f1ZBIJJLuxO+35wFXVcGoUdm2psvpVYFhiUQi6RXU1MB99218HAjslAIAcicgkUgkbamuhkMOge++g0QCfvvbbFvUrcidgEQikbRSVQUHH2wLwKBB9oD4nRwpAhKJRAJQWWkLwPffw+DB9nD40aOzbVW3I91BEolE0ioAS5duFICRI7NtVY8gdwISiaR/k0jYMYClS6G8vF8JAEgRkEgk/R2PBy64AIYO7XcCAFIEJBKJBH79a1i8GEaMyLYlPY4UAYlE0v9Ytw5OPNFuCdGK3589e7KIDAxLJJL+xdq1dhB4xQowTXj22WxblFXkTkAikfQfKirgoINsARg+HO64I9sWZR0pAhKJpH+wZo0tACtX2r7/d9+1g8H9HCkCEolk52f1alsAVq2ys3/efReGDMmyUb0DGROQSCQ7N0LA6afbQtAqAIMHZ9uqXoPcCUgkkp0bRYEHH7SDwe+9JwVgM+ROQCKR7JzoOjid9u8jR9oTwSTtkDsBiUSy87FihT0C8pVXsm1Jr0eKgEQi2blYscIOAi9fDldeadcCSLaIFAGJRLLzsHw5HHigXRE8diy89hpoWrat6tVIEZBIJDsHy5bZO4D162HXXe0soLKybFvV65EiIJFI+j4//LBRAMaNg3fegdLSbFvVJ5AiIJFI+j5/+xts2AC77SYFIENkiqhEIun73HQT+Hxw/vlQUpJta/oUcicgkUj6JhUVGzN/NA2uu04KwHYgRUAikfQ9vvsOpkyB2bNlCugOIkVAIpH0LRYvtltAVFfbv4fD2baoTyNFQCKR9B2+/dYWgJoa2HNPeOstyMvLtlV9GikCEomkb/DNN3DIIVBbC3vtZQtAYWG2rerzSBGQSCS9n6+/3igAkybBm29CQUG2rdopkCIgkUh6P5WV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plot_df = df_burbank[[\n", + " \"stop_id\",\n", + " \"stop_name\",\n", + " \"average_daily_boardings\",\n", + " \"predicted_boardings\"\n", + "]].dropna()\n", + "\n", + "\n", + "plt.figure(figsize=(4,4))\n", + "\n", + "plt.scatter(\n", + " plot_df[\"average_daily_boardings\"],\n", + " plot_df[\"predicted_boardings\"],\n", + " alpha=0.4\n", + ")\n", + "\n", + "max_val = plot_df[[\n", + " \"average_daily_boardings\",\n", + " \"predicted_boardings\"\n", + "]].max().max()\n", + "\n", + "plt.plot([0, max_val], [0, max_val], 'r--')\n", + "\n", + "plt.xlabel(\"Observed Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Burbank: Observed vs Predicted\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "738da3f3-7a8d-4816-8ed5-20791eb103e5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAGJCAYAAACThGjuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWPdJREFUeJzt3Xd4VFX+x/H3zGRKekilhQ4CFlD6uggIUkQFRETFpYisu8Iq8ttdRXdFbLB2BURFBRsKUhekSEddEKQoKE2aoaaRnunn98c1AyEJZEKSm0m+r+eZh8ydyb3fGTKfe+bcc+8xKKUUQgghAo5R7wKEEEKUjQS4EEIEKAlwIYQIUBLgQggRoCTAhRAiQEmACyFEgJIAF0KIACUBLoQQAUoCXAghApQEeDnp3r0711xzjS7bHjlyJGFhYbpsu6oyGAyMGzdO7zIq3TPPPIPBYNC7DN1t3LgRg8HAxo0bfctGjhxJo0aNdKvpYsXV6K9qGeBz5szBYDAUusXHx9OjRw9Wrlypd3kBQc8dUnFcLhdvvfUWHTp0IDw8nLCwMDp06MBbb72Fy+XSuzxxke7duxf6/EVHR9OhQwc+/PBDvF6v3uX55cUXX2TJkiV6l1GsIL0LqEjPPvssjRs3RinF2bNnmTNnDrfeeivLli3jtttu07s8UUq5ubn079+fTZs2cdtttzFy5EiMRiOrVq3i0UcfZdGiRXz11VeEhobqXaq4QP369ZkyZQoAKSkpfPzxx4wePZqDBw8yderUSq9n1qxZZdp5vPjii9x1110MHDiw/Iu6QtU6wPv160f79u1990ePHk1CQgKff/55uQV4bm6uBEcFmzBhAps2bWLatGmFukX++te/MmPGDMaNG8ff//53Zs6cqWOVxavJfx+RkZHcf//9vvsPPfQQV111FdOnT+e5557DbDYX+R2v14vT6cRms5V7PcVtL9BVyy6UkkRFRREcHExQ0Pn9Vkn9UMeOHcNgMDBnzhzfsoK+5sOHD3PrrbcSHh7OsGHDCv3ejh07+MMf/kBwcDCNGzfmnXfeKfS40+nk6aefpl27dkRGRhIaGkrXrl3ZsGFDsdt/5ZVXeO+992jatClWq5UOHTqwffv2y77W3bt3ExcXR/fu3cnJyQEgMzOT/fv3k5mZWZq3q1Tefvttrr76aqxWK3Xr1mXs2LFkZGQUed6MGTNo0qQJwcHBdOzYkW+++Ybu3bvTvXv3S67/xIkTfPDBB9x8883F9mmPHTuWHj168P7773PixIkij3/22WdcddVV2Gw22rVrx+bNmws9np2dzfjx42nUqBFWq5X4+HhuueUWdu7cWeh533//PX379iUyMpKQkBC6devGd999V+g5Bf3Pv/zyC/fddx+1atXij3/8I6+88goGg4Hjx48XqW/ixIlYLBbOnTvn17YAvv32Wzp06IDNZqNp06a8++67l3wvC4wbN46wsDDy8vKKPHbvvfdSu3ZtPB4PAD/88AN9+vQhNjbW9zf9wAMPlGo7FwsJCaFz587k5uaSkpICnD9W8dlnn/n+jlatWgXAyZMneeCBB0hISMBqtXL11Vfz4YcfFlnviRMnGDhwIKGhocTHx/PYY4/hcDiKPK+4PnCv18ubb77Jtddei81mIy4ujr59+/LDDz/46svNzeWjjz7ydQeNHDnS9/vlXaO/qnULPDMzk9TUVJRSJCcnM23aNHJycgq1Cvzldrvp06eP74MZEhLie+zcuXPceuut3H333dx7773Mnz+fv/71r1gsFt8ffVZWFu+//z733nsvY8aMITs7mw8++IA+ffqwbds22rZtW2h7c+fOJTs7m4ceegiDwcBLL73EnXfeyZEjR0psUWzfvp0+ffrQvn17li5dSnBwMACLFy9m1KhRzJ49u9AfYVk988wzTJ48mV69evHXv/6VAwcOMHPmTLZv3853333nq2/mzJmMGzeOrl278thjj3Hs2DEGDhxIrVq1qF+//iW3sXLlSjweD8OHDy/xOcOHD2fDhg2sWrWKBx980Ld806ZNzJs3j0ceeQSr1crbb79N37592bZtm69//y9/+QsLFixg3LhxtG7dmrS0NL799lv27dvHDTfcAMD69evp168f7dq1Y9KkSRiNRmbPns3NN9/MN998Q8eOHQvVM2TIEJo3b86LL76IUorbbruNf/7zn8yfP59//OMfhZ47f/58evfuTa1atfza1p49e+jduzdxcXE888wzuN1uJk2aREJCwmX/34YOHcqMGTP46quvGDJkiG95Xl4ey5YtY+TIkZhMJpKTk33beOKJJ4iKiuLYsWMsWrTostsoyZEjRzCZTERFRfmWrV+/nvnz5zNu3DhiY2Np1KgRZ8+epXPnzr6Aj4uLY+XKlYwePZqsrCzGjx8P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+D6w2dnZ1K9fn7vuuos2bdoQFhbG2rVr2b59u299RqOR999/n379+nH11VczatQo6tWrx8mTJ9mwYQMREREsW7bssq8B8F3O4bXXXiM7O7tQd4W/25o8eTKrVq2ia9euPPzww7jdbqZNm8bVV1/t61K6nBtuuIFmzZrx1FNP4XA4itTz0Ucf8fbbbzNo0CCaNm1KdnY2s2bNIiIigltvvbVU2yirqVOnsmHDBjp16sSYMWNo3bo16enp7Ny5k7Vr15Keng5oB82nT5/O8OHD2bFjB3Xq1OGTTz4pNLy3JD169OBPf/oTb731FocOHaJv3754vV6++eYbevTo4TvvoF27dqxdu5bXXnuNunXr0rhxYzp16lQpNV5WmcevVGHFDSO02Wyqbdu2aubMmYWGCCmlVEpKiho8eLAKCQlRtWrVUg899JDau3dvscMIC4brXaxg2N0PP/ygunTpomw2m2rYsKGaPn16oed5vV714osvqoYNGyqr1aquv/56tXz58iJDnAqGEb788stFtgWoSZMmXbKu1NRU1bp1a1W7dm116NChQu9LaYcRXvweFtx69uzpe9706dNVy5YtldlsVgkJCeqvf/2rOnfuXJH1vfXWW77X3LFjR/Xdd9+pdu3aqb59+162FqW04Yivv/66ateunQoNDVUhISHqhhtuUG+88YZviObF79HYsWPVp59+qpo3b+57ry8csuVwONQ//vEP1aZNGxUeHq5CQ0NVmzZt1Ntvv11kfbt27VJ33nmniomJUVarVTVs2FDdfffdat26db7nFAwjTElJKfF1zJo1SwEqPDxc5efnF/uc0mxLKaU2bdqk2rVrpywWi2rSpIl65513fDWU1lNPPaUA1axZsyKP7dy5U917772qQYMGymq1qvj4eHXbbbcVGppZkssNQy1Q8P9UnLNnz6qxY8eqxMREZTabVe3atVXPnj3Ve++9V+h5x48fV3fccYcKCQlRsbGx6tFHH1WrVq267DBCpbRhvS+//LJq2bKlslgsKi4uTvXr10/t2LHD95z9+/erm266SQUHByug0JDC8q7RXwalLvqOJEQl8Hq9xMXFceeddzJr1iy9yxEiINWoPnChD7vdXqQv9eOPPyY9Pb1CD7QKUd1JC1xUuI0bN/LYY48xZMgQYmJi2LlzJx988AGtWrVix44dFT5mXYjqqlofxBRV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(4,4))\n", + "\n", + "plt.scatter(\n", + " np.log1p(plot_df[\"average_daily_boardings\"]),\n", + " np.log1p(plot_df[\"predicted_boardings\"]),\n", + " alpha=0.4\n", + ")\n", + "\n", + "plt.plot(\n", + " [0, np.log1p(max_val)],\n", + " [0, np.log1p(max_val)],\n", + " 'r--'\n", + ")\n", + "\n", + "plt.xlabel(\"Log Observed\")\n", + "plt.ylabel(\"Log Predicted\")\n", + "plt.title(\"Burbank: Log Observed vs Predicted\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2a38663-61fb-4e98-aacf-6b0f61149ab2", + "metadata": {}, + "outputs": [], "source": [] } ], From 8e10c82192d40c27c2680d1d7dd22d210b27d22d Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Wed, 29 Apr 2026 18:52:24 +0000 Subject: [PATCH 14/21] scatter plot added for orange county and burbank --- .../08_Model_Exploration_Burbank.ipynb | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb index 742aaa8e2..2b83d7edc 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -62,9 +62,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", - "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -149,7 +148,7 @@ "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -80573.\n", "Date: Wed, 29 Apr 2026 Deviance: 33828.\n", - "Time: 18:07:36 Pearson chi2: 1.67e+05\n", + "Time: 18:51:54 Pearson chi2: 1.67e+05\n", "No. Iterations: 32 Pseudo R-squ. (CS): 0.8625\n", "Covariance Type: nonrobust \n", "==================================================================================================================================\n", @@ -226,7 +225,7 @@ "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -82715.\n", "Date: Wed, 29 Apr 2026 Deviance: 38113.\n", - "Time: 18:07:36 Pearson chi2: 2.80e+05\n", + "Time: 18:51:54 Pearson chi2: 2.80e+05\n", "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -2496,11 +2495,11 @@ { "data": { "text/plain": [ - "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", " ('Glenoaks / Alameda', 'eastbound', 'adding_existing')]" ] }, @@ -3486,7 +3485,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 57, "id": "c8106785-671a-401c-9a4f-6f8b7fe56041", "metadata": {}, "outputs": [], @@ -3496,7 +3495,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 58, "id": "0e9f14d2-38e6-4541-8614-d05de534fdb6", "metadata": {}, "outputs": [], @@ -3532,7 +3531,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 59, "id": "6f5cf2d8-33ec-4274-af9c-2babf1973daf", "metadata": {}, "outputs": [], @@ -3542,13 +3541,13 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 60, "id": "f0f9a62a-59a8-47bf-a73b-81aba4560584", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAGJCAYAAABsCo9JAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlqpJREFUeJzsnXecFOX9x98zs3339nqhHB1EFERBir1FVDQWYkuioMYYo0Zj1J8ao7FEYjcaW5qiUWPX2Au2qIiKHQXpR7netu9OeX5/zN3CcQfcwt3tHfe8X697eTs7u/PdlXs+83yrIoQQSCQSiaRfombbAIlEIpFkDykCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCEolE0o+RIiCRSCT9GCkCOyEHHXQQu+++e1auPWfOHAKBQFauvSnDhg3j6KOPzrYZPc5DDz2EoiisXr0626ZkldWrV6MoCg899FD62B//+EcURcmeUZvRkY3ZQIpAN9P6R7npT0lJCQcffDCvvvpqts3rMwgheOSRRzjggAPIy8vD5/Mxfvx4rrvuOqLRaLbNk2zGnDlz2vybDwaD7LHHHtx2220kk8lsm5cR9957b9YX6u5EikAPcd111/HII4/w8MMPc9lll1FbW8tRRx3FSy+9lG3Tej2maXLKKadw+umnA/Yd3Z133snEiRO59tprmTZtGtXV1Vm2UrI5brebRx55hEceeYQbb7yRgoICLrnkEmbPnp0Ve6666iri8XjGr9vZRcCRbQP6C0ceeSSTJ09OPz7rrLMoLS3l8ccf7zK3RTQaxe/3d8l79SZuvvlmnnzySS655BJuueWW9PFf/vKXnHTSSRx33HHMmTOnV+6sdtb/J53B4XDw85//PP3417/+NVOnTuWJJ57g9ttvZ+DAge1eI4QgkUjg9Xq7xR6HQy55myN3AlkiLy8Pr9fb5h/lu+++i6IovPvuu23O7ch32Op7X7FiBUcddRQ5OTn87Gc/a/O6RYsWsc8+++D1ehk+fDj3339/m+dTqRRXX301kyZNIjc3F7/fz/77788777zT4fVvvfVW/va3vzFy5Ejcbjd77703n3766TY/65dffklxcTEHHXQQkUgEgObmZpYsWUJzc/NWXxuPx7nlllsYM2YMc+fObff8Mcccw+zZs3nttdf4+OOP2z3/xhtvMHHiRDweD+PGjePZZ59t87yu61x77bWMHj0aj8dDYWEh++23H2+++Wab85YsWcJPfvITCgoK8Hg8TJ48mf/+979tzml1/b333nv8+te/pqSkhMGDB/P000+nj2/OAw88gKIofPvttxldC2Dx4sUccsgheL1eBg8ezA033IBlWVv9PgFuvfVWFEVhzZo17Z674oorcLlcNDY2ArBs2TJmzZpFWVkZHo+HwYMHc8opp2zz/1tHqKrKQQcdBJCOWbTGbl5//XUmT56M1+vlgQceAKCpqYmLLrqI8vJy3G43o0aN4qabbmr3GZuampgzZw65ubnk5eUxe/Zsmpqa2l1/SzGBf//730yZMgWfz0d+fj4HHHAAb7zxRtq+xYsX895776VdW62foTtszAZSFnuI5uZm6urqEEJQU1PD3XffTSQSaXOnlCmGYTBjxgz2228/br31Vnw+X/q5xsZGjjrqKE466SROPfVUnnzySc4991xcLhdnnnkmAKFQiH/84x+ceuqpnH322YTDYf75z38yY8YMPvnkEyZOnNjmeo899hjhcJhzzjkHRVG4+eabOeGEE1i5ciVOp7NDGz/99FNmzJjB5MmTeeGFF9J3eM899xxnnHEGDz74IHPmzNniZ/zggw9obGzkwgsv3OJd3Omnn86DDz7ISy+9xLRp09LHly1bxsknn8yvfvUrZs+ezYMPPsiJJ57Ia6+9xo9+9CPAXhjmzp3LL37xC6ZMmUIoFOKzzz7j888/T5+zePFi9t13XwYNGsTll1+O3+/nySef5LjjjuOZZ57h+OOPb2PPr3/9a4qLi7n66quJRqPMnDmTQCDAk08+yYEHHtjm3CeeeILddtstHcjv7LWqqqo4+OCDMQwjfd7f/va3Tt1Bn3TSSVx22WU8+eSTXHrppW2ee/LJJzn88MPJz88nlUoxY8YMkskkF1xwAWVlZaxfv56XXnqJpqYmcnNzt3mtzVmxYgUAhYWF6WNLly7l1FNP5ZxzzuHss89ml112IRaLceCBB7J+/XrOOecchgwZwkcffcQVV1xBZWUld955J2DvHI499lg++OADfvWrX7Hrrrvy3HPPddrldO211/LHP/6RffbZh+uuuw6Xy8XChQt5++23Ofzww7nzzju54IILCAQC/P73vwegtLQUoMds7HaEpFt58MEHBdDux+12i4ce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pe92hw4diqZpaV9iK/fee2/G728YRjrVDux00AceeIDi4mImTZoEbLyz3/ROfuHChSxYsCDj622Oy+Xi2WefZe+99+aYY47hk08+afN8Z1NEfT4fl1xyCUuXLk1nZ2zKyy+/zEMPPcSMGTPaZAaBLYSb+p9DoRAPP/wwEydOpKysDID6+vo2rwkEAowaNSpd1VpSUsJBBx3EAw88QGVlZbvr19bWbtX+TTnssMMoKCjgiSee4IknnmDKlCltXCGZXOuoo47i448/bvO91tbW8uijj3banlmzZqFpGo8//jhPPfUURx99dJubhlAolL5RaWX8+PGoqtrtVb8nnXQSCxYs4PXXX2/3XFNTU9quo446CsMwuO+++9LPm6bJ3Xffvc1rHHfccaiqynXXXdcupXPTvwm/399hOmdP2NgTyJ1AD/Hqq6+yZMkSwPYVPvbYYyxbtozLL7887YPNzc3lxBNP5O6770ZRFEaOHMlLL72U9i1mwsCBA7nppptYvXo1Y8aM4YknnuDLL7/kb3/7Wzqd8+ijj+bZZ5/l+OOPZ+bMmaxatYr777+fcePGpXcnO4LX6+Wll17ikEMO4cgjj+S9995Lp0J2NkUU4PLLL+eLL77gpptuYsGCBcyaNQuv18sHH3zAv//9b3bddVfmzZvX7nVjxozhrLPO4tNPP6W0tJR//etfVFdX8+CDD6bPGTduHAcddBCTJk2ioKCAzz77jKeffprzzz8/fc4999zDfvvtx/jx4zn77LMZMWIE1dXVLFiwgHXr1vHVV1916vtwOp2ccMIJ/Oc//yEajXLrrbe2O6ez17rssst45JFHOOKII7jwwgvTKaJDhw5Nu8e2RWv7kttvv51wONxmVwLw9ttvc/7553PiiScyZswYDMPgkUceQdM0Zs2a1alrbC+XXnop//3vfzn66KOZM2cOkyZNIhqN8s033/D000+zevVqioqKOOaYY9h33325/PLLWb16dboWpDN1DKNGjeL3v/89119/Pfvvvz8nnHACbrebTz/9lIEDB6brUiZNmsR9993HDTfcwKhRoygpKeGQQw7pERt7hKzlJfUTOkoR9Xg8YuLEieK+++5rk4omhBC1tbVi1qxZwufzifz8fHHOOeeIb7/9tsMU0dZUzM058MADxW677SY+++wzMX36dOHxeMTQoUPFX//61zbnWZYlbrzx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m5vLWWedxcUXX0xBQQHBYJALLriA6dOnM23aNAAOP/xwxo0bx2mnncbNN99MVVUVV111Feeddx5utzubH00ikexM1NXZO4CvvtooADvJjWZWRWDdunWceuqp1NfXU1xczH777cfHH39McXExAHfccQeqqjJr1iySySQzZszg3nvvTb9e0zReeuklzj33XKZPn47f72f27Nlcd9112fpIEolkZ6N1B/D111Baak8G20kEAEARQohsG5FtQqEQubm5NDc3y/iARCJpSzRqD4b/4Qd7B7BJV4PeTGfXtb4f1ZBIJJLuxO+35wFXVcGoUdm2psvpVYFhiUQi6RXU1MB99218HAjslAIAcicgkUgkbamuhkMOge++g0QCfvvbbFvUrcidgEQikbRSVQUHH2wLwKBB9oD4nRwpAhKJRAJQWWkLwPffw+DB9nD40aOzbVW3I91BEolE0ioAS5duFICRI7NtVY8gdwISiaR/k0jYMYClS6G8vF8JAEgRkEgk/R2PBy64AIYO7XcCAFIEJBKJBH79a1i8GEaMyLYlPY4UAYlE0v9Ytw5OPNFuCdGK3589e7KIDAxLJJL+xdq1dhB4xQowTXj22WxblFXkTkAikfQfKirgoINsARg+HO64I9sWZR0pAhKJpH+wZo0tACtX2r7/d9+1g8H9HCkCEolk52f1alsAVq2ys3/efReGDMmyUb0DGROQSCQ7N0LA6afbQtAqAIMHZ9uqXoPcCUgkkp0bRYEHH7SDwe+9JwVgM+ROQCKR7JzoOjid9u8jR9oTwSTtkDsBiUSy87FihT0C8pVXsm1Jr0eKgEQi2blYscIOAi9fDldeadcCSLaIFAGJRLLzsHw5HHigXRE8diy89hpoWrat6tVIEZBIJDsHy5bZO4D162HXXe0soLKybFvV65EiIJFI+j4//LBRAMaNg3fegdLSbFvVJ5AiIJFI+j5/+xts2AC77SYFIENkiqhEIun73HQT+Hxw/vlQUpJta/oUcicgkUj6JhUVGzN/NA2uu04KwHYgRUAikfQ9vvsOpkyB2bNlCugOIkVAIpH0LRYvtltAVFfbv4fD2baoTyNFQCKR9B2+/dYWgJoa2HNPeOstyMvLtlV9GikCEomkb/DNN3DIIVBbC3vtZQtAYWG2rerzSBGQSCS9n6+/3igAkybBm29CQUG2rdopkCIgkUh6P5WV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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAGJCAYAAABsCo9JAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYOlJREFUeJzt3Xd4U+X7x/F3kjZpuinQlkJbypIhCoIgS1SqbEH5IiLKEAEVFH+IiigiylBBnAjiAFRQQAEVZU/RUjaKMspGoC2reyZ5fn8cGwgt0EDbpO39uq5cJuecJPdJMZ+c84yjU0ophBBClEt6VxcghBDCdSQEhBCiHJMQEEKIckxCQAghyjEJASGEKMckBIQQohyTEBBCiHJMQkAIIcoxCQEhhCjHJATKoLvuuoubb77ZJe/dv39/fH19XfLel6pevTpdunRxdRklbvbs2eh0Oo4ePerqUlzq6NGj6HQ6Zs+ebV/2+uuvo9PpXFfUZQqq0RUkBIpZ3v+Ul96Cg4O5++67WbZsmavLKzWUUnz99dfceeedBAYG4u3tTcOGDXnjjTdIT093dXniMv3793f4N+/v78+tt97Ku+++S3Z2tqvLc8onn3zi8i/q4iQhUELeeOMNvv76a7766itefPFFzpw5Q6dOnVi6dKmrS3N7VquVhx9+mL59+wLaL7r333+fRo0aMW7cOO644w4SEhJcXKW4nMlk4uuvv+brr79m4sSJBAUFMXLkSPr16+eSel599VUyMzOdfl5ZDwEPVxdQXnTs2JGmTZvaHw8cOJCQkBC+/fbbIjttkZ6ejo+PT5G8ljt55513WLBgASNHjmTy5Mn25YMHD+ahhx6ie/fu9O/f3y2PrMrq36QwPDw8ePTRR+2Pn376aZo3b878+fOZOnUqYWFh+Z6jlCIrKwuz2Vws9Xh4yFfe5eRIwEUCAwMxm80O/yjXr1+PTqdj/fr1DtsWdO4w79z7oUOH6NSpE35+fvTp08fhedu3b6dly5aYzWaioqKYMWOGw/qcnBxee+01mjRpQkBAAD4+PrRp04Z169YV+P5Tpkxh5syZ1KxZE5PJxO23387WrVuvua+7du2icuXK3HXXXaSlpQGQnJzMvn37SE5OvupzMzMzmTx5MnXq1GHSpEn51nft2pV+/fqxfPlyNm/enG/9ypUradSoEV5eXtSvX59FixY5rM/NzWXcuHHUrl0bLy8vKlasSOvWrVm1apXDdvv27eN///sfQUFBeHl50bRpU3766SeHbfJO/W3YsIGnn36a4OBgqlWrxvfff29ffrlPP/0UnU7Hnj17nHovgL///pt77rkHs9lMtWrVGD9+PDab7aqfJ8CUKVPQ6XQcO3Ys37qXX34Zo9HIhQsXAIiLi6NHjx6Ehobi5eVFtWrVePjhh6/5dyuIXq/nrrvuArC3WeS13axYsYKmTZtiNpv59NNPAUhKSuK5554jPDwck8lErVq1ePvtt/PtY1JSEv379ycgIIDAwED69etHUlJSvve/UpvAN998Q7NmzfD29qZChQrceeedrFy50l7f33//zYYNG+yntvL2oThqdAWJxRKSnJzM2bNnUUqRmJjIRx99RFpamsMvJWdZLBbat29P69atmTJlCt7e3vZ1Fy5coFOnTjz00EP07t2bBQsW8NRTT2E0Gnn88ccBSElJ4fPPP6d3794MGjSI1NRUvvjiC9q3b8+WLVto1KiRw/vNmzeP1NRUhgwZgk6n45133uHBBx/k8OHDeHp6Fljj1q1bad++PU2bNuXHH3+0/8JbvHgxAwYMYNasWfTv3/+K+7hp0yYuXLjA8OHDr/grrm/fvsyaNYulS5dyxx132JfHxcXRq1cvnnzySfr168esWbPo2bMny5cv59577wW0L4ZJkybxxBNP0KxZM1JSUti2bRs7duywb/P333/TqlUrqlatyqhRo/Dx8WHBggV0796dH374gQceeMChnqeffprKlSvz2muvkZ6eTufOnfH19WXBggW0bdvWYdv58+fToEEDe0N+Yd8rPj6eu+++G4vFYt9u5syZhfoF/dBDD/Hiiy+yYMECXnjhBYd1CxYs4L777qNChQrk5OTQvn17srOzeeaZZwgNDeXkyZMsXbqUpKQkAgICrvlelzt06BAAFStWtC/bv38/vXv3ZsiQIQwaNIibbrqJjIwM2rZty8mTJxkyZAgRERH88ccfvPzyy5w+fZr3338f0I4cunXrxqZNm3jyySepV68eixcvLvQpp3HjxvH666/TsmVL3njjDYxGI7Gxsaxdu5b77ruP999/n2eeeQZfX19eeeUVAEJCQgBKrMZip0SxmjVrlgLy3Uwmk5o9e7bDtuvWrVOAWrduncPyI0eOKEDNmjXLvqxfv34KUKNGjcr3nm3b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WrSI22+/na5du7JlyxaH9YXtIurt7c3IkSPZv3+/vXfGpX755Rdmz55N+/btHXoGgRaEl55/TklJ4auvvqJRo0aEhoYCcO7cOYfn+Pr6UqtWLfuo1uDgYO666y4+/fRTTp8+ne/9z5w5c9X6LxUdHU1QUBDz589n/vz5NGvWzOFUiDPv1alTJzZv3uzwuZ45c4a5c+cWup4ePXpgMBj49ttvWbhwIV26dHH40ZCSkmL/oZKnYcOG6PX6Yh/1+9BDDxETE8OKFSvyrUtKSrLX1alTJywWC9OnT7evt1qtfPTRR9d8j+7du6PX63njjTfydem89P8JHx+fArtzlkSNJUGOBErIsmXL2LdvH6CdK5w3bx5xcXGMGjXKfg42ICCAnj178tFHH6HT6ahZsyZLly61n1t0RlhYGG+//TZHjx6lTp06zJ8/n127djFz5kx7d84uXbqwaNEiHnjgATp37syRI0eYMWMG9evXtx+d3Aiz2czSpUu555576NixIxs2bLB3hSxsF1GAUaNGsXPnTt5++21iYmLo0aMHZrOZTZs28c0331CvXj3mzJmT73l16tRh4MCBbN26lZCQEL788ksSEhKYNWuWfZv69etz11130aRJE4KCgti2bRvff/89w4YNs28zbdo0WrduTcOGDRk0aBA1atQgISGBmJgY/v33X3bv3l2oz8PT05MHH3yQ7777jvT0dKZMmZJvm8K+14svvsjXX39Nhw4dGD58uL2LaGRkpP302LXkTV8ydepUUlNTHY5KANauXcuwYcPo2bMnderUwWKx8PXXX2MwGOjRo0eh3uN6vfDCC/z000906dKF/v3706RJE9LT0/nrr7/4/vvvOXr0KJUqVaJr1660atWKUaNGcfToUftYkMKMY6hVqxavvPIKb775Jm3atOHBBx/EZDKxdetWwsLC7ONSmjRpwvTp0xk/fjy1atUiODiYe+65p0RqLBEu65dUThTURdTLy0s1atRITZ8+3aErmlJKnTlzRvXo0UN5e3urChUqqCFDhqg9e/YU2EU0ryvm5dq2basaNGigtm3bplq0aKG8vLxUZGSk+vjjjx22s9lsauLEiSoyMlKZTCbVuHFjtXTpUtWvXz8VGRlp3y6vi+jkyZPzvRegxo4de9W6zp49q+rXr69CQ0NVXFycw+dS2O5xVqtVzZo1S7Vq1Ur5+/sr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JKB07culClN3aGgoiYmJDustFgvnz593630DCQGnGY1GmjRpwpo1a+zLbDYba9asoUWLFi6s7NqUUgwbNozFixezdu1aoqKiHNY3adIET09Ph33bv38/x48fd6t9a9euHX/99Re7du2y35o2bUqfPn3s90vDfgC0atUqXzfdAwcOEBkZCUBUVBShoaEO+5KSkkJsbKzb7UtGRka+i5cYDAZsNhtQuvblUoWpu0WLFiQlJbF9+3b7NmvXrsVms9G8efMSr9kprm6ZLo2+++47ZTKZ1OzZs9U///yjBg8erAIDA1V8fLyrS7uqp556SgUEBKj169er06dP228ZGRn2bZ588kkVERGh1q5dq7Zt26ZatGihWrRo4cKqC+fS3kFKlZ792LJli/Lw8FATJkxQcXFxau7cucrb21t988039m3eeustFRgYqH788Uf1559/qm7durlFt8rL9evXT1WtWtXeRXTRokWqUqVK6sUXX7Rv4677kpqaqnbu3Kl27typADV16lS1c+dOdezYsULX3aFDB9W4cWMVGxurNm3apGrXri1dRMuyjz76SEVERCij0aiaNWumNm/e7OqSrgko8DZr1iz7NpmZmerpp59WFSpUUN7e3uqBBx5Qp0+fdl3RhXR5CJSm/fj555/VzTffrEwmk6pbt66aOXOmw3qbzabGjBmjQkJClMlkUu3atVP79+93UbVXlpKSooYPH64iIiKUl5eXqlGjhnrllVdUdna2fRt33Zd169YV+P9Gv379lFKFq/vcuXOqd+/eytfXV/n7+6sBAwao1NRUF+yNc2QqaSGEKMekTUAIIcoxCQEhhCjHJASEEKIckxAQQohyTEJACCHKMQkBIYQoxyQEhBCiHJMQEEKIckxCQLiF6tWr8/7777u6jCJTGvdn9uzZDtNvv/766zRq1Mhl9YiSISEgitWJEyd4/PHHCQsLw2g0EhkZyfDhwzl37pyrS3Op119/HZ1OZ78FBATQpk0bNmzY4OrS7EaOHOkwaZoomyQERLE5fPgwTZs2JS4ujm+//ZaDBw8yY8YM+4yr58+fd1ltVqvVPrulqzRo0IDTp09z+vRpYmJiqF27Nl26dLFf8a245OTkFGo7X19fKlasWKy1CNeTEBDFZujQoRiNRlauXEnbtm2JiIigY8eOrF69mpMnT/LKK684bJ+amkrv3r3x8fGhatWqTJs2zb5OKcXrr79OREQEJpOJsLAwnn32Wfv67OxsRo4cSdWqVfHx8aF58+asX7/evj7vVMdPP/1E/fr1MZlMfP7553h5eeW77sDw4cO555577I83bdpEmzZtMJvNhIeH8+yzz5Kenm5fn5iYSNeuXTGbzURFRTF37txCfT4eHh6EhoYSGhpK/fr1eeONN0hLS7NfnhHg+PHjdOvWDV9fX/z9/XnooYcc5rU/dOgQ3bp1IyQkBF9fX26//XZWr17t8D7Vq1fnzTffpG/fvvj7+zN48GD7ZxIREYG3tzcPPPBAvqOzy08H9e/fn+7duzNlyhSqVKlCxYoVGTp0KLm5ufZtTp8+TefOne2fxbx58xxOjV3r7yhcwLXz14my6ty5c0qn06mJEycWuH7QoEGqQoUKymazKaWUioyMVH5+fmrSpElq//796sMPP1QGg0GtXLlSKaXUwoULlb+/v/r111/VsWPHVGxsrMNsm0888YRq2bKl2rhxozp48KCaPHmyMplM6sCBA0oppWbNmqU8PT1Vy5Yt1e+//6727dun0tLSVEhIiPr888/tr2OxWByWHTx4UPn4+Kj33ntPHThwQP3++++qcePGqn///vbndOzYUd16660qJiZGbdu2TbVs2VKZzWb13nvvXfHzGTt2rLr11lvtj7OystQbb7yhAgMDVXJyslJKKavVqho1aqRat26ttm3bpjZv3qyaNGmi2rZta3/erl271IwZM9Rff/2lDhw4oF599VXl5eVlnwI577P19/dXU6ZMUQcPHlQHDx5UmzdvVnq9Xr399ttq//796oMPPlCBgYEqICDgijX269dP+fv7qyeffFLt3btX/fzzz8rb29vh7xAdHa0aNWqkNm/erLZv367atm3r8Flc6+8oSp6EgCgWmzdvVoBavHhxgeunTp2qAJWQkKCU0r6oOnTo4LBNr169VMeOHZVSSr377ruqTp06KicnJ99rHTt2TBkMBnXy5EmH5e3atVMvv/yyUkoLAUDt2rXLYZvhw4ere+65x/54xYoVymQyqQsXLiillBo4cKAaPHiww3N+++03pdfrVWZmptq/f78C1JYtW+zr9+7dq4BrhoBer1c+Pj7Kx8dH6XQ65e/vr5YtW2bfZuXKlcpgMKjjx4/bl/3999/53u9yDRo0UB999JH9cWRkpOrevbvDNr1791ad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", "text/plain": [ "
" ] @@ -3592,7 +3591,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 61, "id": "738da3f3-7a8d-4816-8ed5-20791eb103e5", "metadata": {}, "outputs": [ From 2894320e7a0e95b6081e4a99293ef2ad9d709680 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Wed, 29 Apr 2026 22:41:27 +0000 Subject: [PATCH 15/21] burbank model changed to show rail connection stops --- .../08_Model_Exploration_Burbank.ipynb | 860 +++++++++--------- 1 file changed, 421 insertions(+), 439 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb index 2b83d7edc..e4db0d196 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -93,6 +93,7 @@ "db_engine = get_engine()\n", "credentials, project = google.auth.default()\n", "fs = gcsfs.GCSFileSystem()\n", + "import matplotlib.pyplot as plt\n", "\n", "import statsmodels.api as sm\n", "from statsmodels.stats.outliers_influence import variance_inflation_factor" @@ -113,90 +114,45 @@ { "cell_type": "code", "execution_count": 4, - "id": "6b90669b-5d97-47da-9056-00496b8001a1", + "id": "db56f926-980f-42af-89f8-6ba4468cdd76", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", + " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", + " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", + " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", + " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", + " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", + " 'total_youth_adj', 'ALAND_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Convert n_arrivals and n_routes to integer\n", - "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", - "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + "stop_route_df.columns" ] }, { "cell_type": "code", "execution_count": 5, - "id": "e5233074-13e1-434e-a65b-31afd59e7fb1", + "id": "6b90669b-5d97-47da-9056-00496b8001a1", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", - " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Generalized Linear Model Regression Results \n", - "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21243\n", - "Model Family: NegativeBinomial Df Model: 20\n", - "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -80573.\n", - "Date: Wed, 29 Apr 2026 Deviance: 33828.\n", - "Time: 18:51:54 Pearson chi2: 1.67e+05\n", - "No. Iterations: 32 Pseudo R-squ. (CS): 0.8625\n", - "Covariance Type: nonrobust \n", - "==================================================================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "----------------------------------------------------------------------------------------------------------------------------------\n", - "Intercept -1.8390 0.058 -31.478 0.000 -1.954 -1.725\n", - "C(organization_name)[T.Caltrain] 4.0001 0.190 21.068 0.000 3.628 4.372\n", - "C(organization_name)[T.City of Burbank] -1.7948 0.171 -10.483 0.000 -2.130 -1.459\n", - "C(organization_name)[T.Culver City Bus] -0.0913 0.064 -1.419 0.156 -0.217 0.035\n", - "C(organization_name)[T.Foothill Transit] -0.3941 0.045 -8.743 0.000 -0.482 -0.306\n", - "C(organization_name)[T.Fresno County] -0.2260 0.050 -4.480 0.000 -0.325 -0.127\n", - "C(organization_name)[T.Gold Coast Transit] 0.4003 0.056 7.113 0.000 0.290 0.511\n", - "C(organization_name)[T.Golden Gate Park Shuttle] 0.6241 0.250 2.496 0.013 0.134 1.114\n", - "C(organization_name)[T.Long Beach Transit] 0.0915 0.044 2.095 0.036 0.006 0.177\n", - "C(organization_name)[T.Orange County Transportation Authority] 0.1432 0.039 3.650 0.000 0.066 0.220\n", - "C(organization_name)[T.Riverside Transit] -0.2841 0.047 -6.069 0.000 -0.376 -0.192\n", - "C(organization_name)[T.SDMTS] 0.7232 0.041 17.773 0.000 0.643 0.803\n", - "C(organization_name)[T.SacRT Bus] -0.6236 0.058 -10.811 0.000 -0.737 -0.511\n", - "C(organization_name)[T.Samtrans] 0.4124 0.045 9.074 0.000 0.323 0.501\n", - "n_routes -0.0844 0.011 -7.752 0.000 -0.106 -0.063\n", - "log_arrivals 1.2755 0.013 100.655 0.000 1.251 1.300\n", - "total_pop_adj -1.074e-05 6.02e-06 -1.786 0.074 -2.25e-05 1.05e-06\n", - "workers_with_no_car_adj 0.0001 3.64e-05 3.610 0.000 6e-05 0.000\n", - "total_youth_adj 0.0002 1.3e-05 16.845 0.000 0.000 0.000\n", - "public_asst_pop_adj 0.0006 4.46e-05 13.031 0.000 0.000 0.001\n", - "total_seniors_adj -0.0002 2.69e-05 -9.020 0.000 -0.000 -0.000\n", - "==================================================================================================================================\n" - ] - } - ], + "outputs": [], "source": [ - "import statsmodels.formula.api as smf\n", - "\n", - "df = stop_route_df.copy()\n", - "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", - "\n", - "nb_model_extended = smf.glm(\n", - " formula=\"\"\"\n", - " average_daily_boardings ~ n_routes + log_arrivals +\n", - " total_pop_adj + workers_with_no_car_adj +\n", - " total_youth_adj + public_asst_pop_adj +\n", - " total_seniors_adj + C(organization_name)\n", - " \"\"\",\n", - " data=df,\n", - " family=sm.families.NegativeBinomial()\n", - ").fit()\n", - "\n", - "print(nb_model_extended.summary())" + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" ] }, { @@ -220,25 +176,26 @@ " Generalized Linear Model Regression Results \n", "===================================================================================\n", "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21256\n", - "Model Family: NegativeBinomial Df Model: 7\n", + "Model: GLM Df Residuals: 21255\n", + "Model Family: NegativeBinomial Df Model: 8\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -82715.\n", - "Date: Wed, 29 Apr 2026 Deviance: 38113.\n", - "Time: 18:51:54 Pearson chi2: 2.80e+05\n", - "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", + "Method: IRLS Log-Likelihood: -82687.\n", + "Date: Wed, 29 Apr 2026 Deviance: 38057.\n", + "Time: 22:37:44 Pearson chi2: 2.81e+05\n", + "No. Iterations: 54 Pseudo R-squ. (CS): 0.8323\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const -2.0303 0.037 -55.232 0.000 -2.102 -1.958\n", - "n_routes -0.1100 0.009 -11.643 0.000 -0.129 -0.091\n", - "log_arrivals 1.4157 0.011 126.517 0.000 1.394 1.438\n", - "total_pop_adj 5.629e-06 5.69e-06 0.989 0.323 -5.53e-06 1.68e-05\n", - "workers_with_no_car_adj 0.0010 3.45e-05 30.033 0.000 0.001 0.001\n", - "total_youth_adj 0.0002 1.29e-05 16.642 0.000 0.000 0.000\n", - "public_asst_pop_adj 3.942e-05 3.73e-05 1.056 0.291 -3.37e-05 0.000\n", - "total_seniors_adj -0.0003 2.58e-05 -12.337 0.000 -0.000 -0.000\n", + "const -2.0809 0.037 -55.778 0.000 -2.154 -2.008\n", + "n_routes -0.1182 0.009 -12.462 0.000 -0.137 -0.100\n", + "log_arrivals 1.4253 0.011 126.466 0.000 1.403 1.447\n", + "total_pop_adj 6.744e-05 9.88e-06 6.824 0.000 4.81e-05 8.68e-05\n", + "workers_with_no_car_adj 0.0009 3.55e-05 24.280 0.000 0.001 0.001\n", + "total_youth_adj 0.0003 1.41e-05 19.145 0.000 0.000 0.000\n", + "public_asst_pop_adj 0.0002 4.3e-05 5.217 0.000 0.000 0.000\n", + "total_seniors_adj -0.0003 2.58e-05 -11.571 0.000 -0.000 -0.000\n", + "inc_total_lowincome_adj -0.0001 1.9e-05 -7.763 0.000 -0.000 -0.000\n", "===========================================================================================\n" ] } @@ -249,7 +206,7 @@ "y = df['average_daily_boardings']\n", "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", "X = df[['n_routes', 'log_arrivals',\n", - " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj']]\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj', \"inc_total_lowincome_adj\",]]\n", "\n", "# 4. Add intercept\n", "X = sm.add_constant(X)\n", @@ -287,6 +244,202 @@ { "cell_type": "code", "execution_count": 7, + "id": "7e41c9f0-9e78-4f41-8657-37747218def7", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "23117df7-8e6b-47c3-aa0c-4965517dde3a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n", + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)\n", + "# regress log_arrivals on n_routes\n", + "temp_model = sm.OLS(df_burbank[\"log_arrivals\"], sm.add_constant(df_burbank[\"n_routes\"])).fit()\n", + "\n", + "# residual = arrivals not explained by routes\n", + "df_burbank[\"arrivals_resid\"] = temp_model.resid" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "aed87242-a621-4a69-8357-29a4ee260e13", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "import statsmodels.api as sm\n", + "\n", + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\"\n", + "]\n", + "\n", + "df_burbank[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_burbank.loc[\n", + " df_burbank[\"stop_name\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1\n", + "\n", + "\n", + "X = df_burbank[[\n", + " \"n_routes\",\n", + " \"log_arrivals\",\n", + " \"total_pop_adj\",\n", + " \"workers_with_no_car_adj\",\n", + " \"total_seniors_adj\",\n", + " \"inc_total_lowincome_adj\",\n", + " \"has_rail_connection_dummy\"\n", + "]].copy()\n", + "\n", + "X = sm.add_constant(X, has_constant=\"add\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "af3e0f0a-7ac4-4b36-8cdb-0785f620df79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 45\n", + "Model: GLM Df Residuals: 38\n", + "Model Family: NegativeBinomial Df Model: 6\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -104.36\n", + "Date: Wed, 29 Apr 2026 Deviance: 26.045\n", + "Time: 22:37:44 Pearson chi2: 22.3\n", + "No. Iterations: 17 Pseudo R-squ. (CS): 0.5379\n", + "Covariance Type: nonrobust \n", + "=============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "---------------------------------------------------------------------------------------------\n", + "const -3.2897 3.978 -0.827 0.408 -11.087 4.508\n", + "n_routes -3.2897 3.978 -0.827 0.408 -11.087 4.508\n", + "log_arrivals 1.6833 2.046 0.823 0.411 -2.327 5.693\n", + "total_pop_adj 0.0007 0.001 1.307 0.191 -0.000 0.002\n", + "workers_with_no_car_adj 0.0110 0.005 2.261 0.024 0.001 0.021\n", + "total_seniors_adj 0.0016 0.001 1.674 0.094 -0.000 0.004\n", + "inc_total_lowincome_adj -0.0020 0.001 -2.215 0.027 -0.004 -0.000\n", + "has_rail_connection_dummy 1.9216 1.135 1.694 0.090 -0.302 4.145\n", + "=============================================================================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + } + ], + "source": [ + "model_fe = sm.GLM(\n", + " df_burbank[\"average_daily_boardings\"],\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(model_fe.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "75d04dd7-b987-48d0-823d-9e29c6d71341", + "metadata": {}, + "outputs": [], + "source": [ + "# observed values\n", + "observed = df_burbank[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = model_fe.predict()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0308ac20-e164-4aa3-a22e-63ce66549980", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAIjCAYAAACzhTfbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjeBJREFUeJzs3Xt8zvX/x/HHtfN5M2LmMIfIISHi5xByPudQcqjQuQiJSn0dI9GB9CWVQoVKSSFKiOR87EAOxYiYYmZm27Vd798f13dXLtewse26tj3vt9tu9nl/Ptfnel2vXbu89v583u+3xRhjEBERERGP4+XuAEREREQkcyrURERERDyUCjURERERD6VCTURERMRDqVATERER8VAq1EREREQ8lAo1EREREQ+lQk1ERETEQ6lQExEREfFQKtQk14wZMwaLxcLff//t7lDynMViYcyYMe4Ow+2aNWtGs2bNHNuHDx/GYrEwZ84ct8V0qUtjvJLExESKFy/OvHnzcjcoN+jXrx/lypVzdxhX9P3332OxWPj+++/dHcoVZec9dan8+tnRs2dPevTo4e4wCiQVapItv/76K/feey+lSpXC39+f6Oho+vTpw6+//uru0OQSGf+pZXz5+vpSoUIF7r//fv744w93h5ctGzZsYMyYMcTHx7s1jjfeeIPQ0FB69uzpaMv4g6REiRIkJSW5PKZcuXJ07NgxL8O8rOPHjzNmzBh27drl7lAc+vXr5/Q+9fHxoUyZMvTs2ZM9e/a4OzyPlpCQwIQJE6hbty7h4eH4+/sTExPDPffcw7Jly5yOzfg8+Oyzz654zoyfw0MPPZTp/hdeeMFxzMV/hD/77LN8/vnn7N69+/pfmDjxcXcAkn8sWrSIXr16ERkZyYMPPkj58uU5fPgw7733Hp999hkff/wxXbt2dXeYcolBgwZx2223YbVa2bFjB++88w7Lli3j559/Jjo6Ok9jiYmJ4cKFC/j6+mbrcRs2bGDs2LH069ePiIiI3AnuKqxWK2+88QZPPfUU3t7eLvvj4uJ46623ePrpp90QXdYcP36csWPHUq5cOWrVquW0791338Vms7klLn9/f2bNmgVAWloav//+OzNnzmTFihXs2bPH8T5t0qQJFy5cwM/Pzy1xZtW3336b689x8OBB2rRpQ2xsLF27duX+++8nJCSEo0eP8vXXX9OxY0c++OAD7rvvvmyfOyAggM8//5wZM2a45HrBggUEBASQnJzs1F67dm3q1q3La6+9xgcffHBdr02cqVCTLPn999+57777qFChAuvWreOGG25w7Bs8eDC333479913Hz/99BMVKlRwY6SubDYbqampBAQEuDsUt7j99tu56667AOjfvz+VK1dm0KBBzJ07lxEjRmT6mPPnzxMcHJzjsVgslnz7c1i6dCmnTp267OWdWrVq8corr/DEE08QGBiYx9Fdv+wWzznJx8eHe++916nt//7v/+jYsSPLli3j4YcfBsDLyytfvH9yu5BMS0uja9eunDx5krVr19KoUSOn/aNHj+bbb78lPT39ms7ftm1bvvrqK5YvX86dd97paN+wYQOHDh2ie/fufP755y6P69GjB6NHj2bGjBmEhIRc03OLK136lCx55ZVXSEpK4p133nEq0gCKFSvG22+/zfnz55k8ebLLY//++2969OhBWFgYRYsWZfDgwS5/ja1cuZLGjRsTERFBSEgIN910E88//7zTMSkpKYwePZobb7wRf39/ypQpwzPPPENKSorTcRaLhYEDBzJv3jyqV6+Ov78/S5YsITIykv79+7vEl5CQQEBAAMOGDcv2c6WkpPDUU09xww03EBoaSufOnfnzzz+vms+TJ0/i4+PD2LFjXfbt27cPi8XCf//7X8DekzN27FgqVapEQEAARYsWpXHjxqxcufKqz5OZ5s2bA3Do0CHg30t3e/bsoXfv3hQpUoTGjRs7jv/oo4+oU6cOgYGBREZG0rNnT44ePepy3nfeeYeKFSsSGBhIvXr1+OGHH1yOudw9ar/99hs9evTghhtuIDAwkJtuuokXXnjBEd/w4cMBKF++vOOyy+HDh3MlxstZvHgx5cqVo2LFipnuHzVqFCdPnuStt9666rlsNhtTp06levXqBAQEUKJECR599FHOnDnjctyYMWOIjo4mKCiIO+64gz179lCuXDn69evnOO706dMMGzaMGjVqEBISQlhYGO3atXO6DPX9999z2223AfaCPSOPGT+Li+9Rs1qtufL7kh1RUVGAvYi7+DVceo9as2bNuPnmm9mzZw933HEHQUFBlCpVKtPPori4OB588EFKlChBQEAANWvWZO7cuU7HZLxHX331VaZPn06FChUICgqidevWHD16FGMML774IqVLlyYwMJA777yT06dPO53j0nvUUlNTGTVqFHXq1CE8PJzg4GBuv/121qxZc025WbhwIb/88gsjR450KdIytG7dmnbt2l3T+UuVKkWTJk2YP3++U/u8efOoUaMGN998c6aPa9WqFefPn7/mzybJnHrUJEuWLFlCuXLluP322zPd36RJE8qVK+dyXwTY/8oqV64cEydOZNOmTUybNo0zZ844usd//fVXOnbsyC233MK4cePw9/fn4MGD/Pjjj45z2Gw2OnfuzPr163nkkUeoWrUqP//8M1OmTGH//v0sXrzY6TlXr17Np59+ysCBAylWrBiVKlWia9euLFq0iLffftvpL97FixeTkpLiuO8oO8/10EMP8dFHH9G7d28aNmzI6tWr6dChw1XzWaJECZo2bcqnn37K6NGjnfZ98skneHt7c/fddwP2QmXixIk89NBD1KtXj4SEBLZt28aOHTto1arVVZ/rUr///jsARYsWdWq/++67qVSpEi+99BLGGAAmTJjAyJEj6dGjBw899BCnTp3izTffpEmTJuzcudNxGfK9997j0UcfpWHDhgwZMoQ//viDzp07ExkZSZkyZa4Yz08//cTtt9+Or68vjzzyCOXKleP3339nyZIlTJgwgW7durF//34WLFjAlClTKFasGIDjD4a8iBHsvQm33nrrZffffvvtNG/enMmTJ/P4449fsVft0UcfZc6cOfTv359BgwZx6NAh/vvf/7Jz505+/PFHR+/WiBEjmDx5Mp06daJNmzbs3r2bNm3auPyh88cff7B48WLuvvtuypcvz8mTJ3n77bdp2rSp49Jh1apVGTduHKNGjeKRRx5x/C43bNjQJT5fX99c+X25koz7ndLT0/njjz949tlnKVq0aJbu7ztz5gxt27alW7du9OjRg88++4xnn32WGjVqOIqVCxcu0KxZMw4ePMjAgQMpX748CxcupF+/fsTHxzN48GCnc86bN4/U1FSefPJJTp8+zeTJk+nRowfNmzfn+++/59lnn+XgwYO8+eabDBs2jPfff/+y8SUkJDBr1ix69erFww8/zLlz53jvvfdo06YNW7ZscbkMfTVLliwBcOmFzEm9e/dm8ODBJCYmEhISQlpaGgsXLmTo0KEu778M1apVIzAwkB9//FG3weQkI3IV8fHxBjB33nnnFY/r3LmzAUxCQoIxxpjRo0cbwHTu3NnpuCeeeMIAZvfu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s2LFCsdABBHxUMbA229D69ZQoYK97b773BuTiIiHueZ71PJKx44d6dix42X3WywWxo0bx7hx4/IwKhG5LmlpMGQITJ8OVavC1q0QHOzuqEREPE6WCrVu3bpl+YSLFi265mBEpBBISIB77oEVK8Bigf79tV6niMhlZKlQCw8Pd3xvjOGLL74gPDycunXrArB9+3bi4+OzVdCJSCEUGwsdO8Ivv0BgIMybB127ujsqERGPlaVC7eIlnJ599ll69OjBzJkz8fb2BiA9PZ0nnngiV+YgE5ECYutW6NQJTp6EqChYsgT+98eeiIhkLtuLsr///vsMGzbMUaQBeHt7M3ToUN5///0cDU5ECghjYPhwe5F2yy2wZYuKNBGRLMh2oZaWlsZvv/3m0v7bb79hs9lyJCgRKWAsFvj4Y3joIVi/HsqUcXdEIiL5QrZHffbv358HH3yQ33//nXr16gGwefNmXn75Zfr375/jAYpIPpWaCsuXw5132rejouDdd90bk4hIPpPtQu3VV18lKiqK1157jb/++guwL/U0fPhwnn766RwPUETyodOnoXt3+P57+OgjuGjuQxERybpsF2peXl4888wzPPPMMyQkJABoEIGI/OvgQejQAfbvh5AQiIx0d0QiIvlWtu9RA/t9at999x0LFixwLBt1/PhxEhMTczQ4EclnfvgB6te3F2llysCPP0K7du6OSkQk38p2j1psbCxt27blyJEjpKSk0KpVK0JDQ5k0aRIpKSnMnDkzN+IUEU/34Yfw4IP2hdRvuw2++sp+X5qIiFyzbPeoDR48mLp163LmzBkCAwMd7V27dmXVqlU5GpyI5BO7d8P999uLtLvust+bpiJNROS6ZbtH7YcffmDDhg34+fk5tZcrV45jx47lWGAiko/UrAkvvAA2G4wfD17XdFeFiIhcItuFms1mIz093aX9zz//JDQ0NEeCEpF8IC7O/m/x4vZ/X3zRPl+aiIjkmGz/2du6dWumTp3q2LZYLCQmJjJ69Gjat2+fk7GJiKfaswf+7//sc6RduGBvU5EmIpLjrmketbZt21KtWjWSk5Pp3bs3Bw4coFixYixYsCA3YhQRT/Ldd/b70M6etRdncXEQE+PuqERECqRsF2plypRh9+7dfPLJJ+zevZvExEQefPBB+vTp4zS4QEQKoHfegSeegPR0aNwYvvgCihVzd1Qi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AwcOuDHi3JWens7IkSMpX748gYGBVKxYkRdffNFpXcCCnpN169bRqVMnoqOjsVgsLF682Gl/Vl7/6dOn6dOnD2FhYURERPDggw+SmJiYh68iZ10pJ1arlWeffZYaNWoQHBxMdHQ0999/P8ePH3c6R2HKyaUee+wxLBYLU6dOdWr39JyoUMtln3zyCUOHDmX06NHs2LGDmjVr0qZNG+Li4twdWq5bu3YtAwYMYNOmTaxcuRKr1Urr1q05f/6845innnqKJUuWsHDhQtauXcvx48fp1q2bG6POO1u3buXtt9/mlltucWovbDk5c+YMjRo1wtfXl+XLl7Nnzx5ee+01ihQp4jhm8uTJTJs2jZkzZ7J582aCg4Np06YNycnJbow890yaNIm33nqL//73v+zdu5dJkyYxefJk3nzzTccxBT0n58+fp2bNmkyfPj3T/Vl5/X369OHXX39l5cqVLF26lHXr1vHII4/k1UvIcVfKSVJSEjt27GDkyJHs2LGDRYsWsW/fPjp37ux0XGHKycW++OILNm3aRHR0tMs+j8+JkVxVr149M2DAAMd2enq6iY6ONhMnTnRjVO4RFxdnALN27VpjjDHx8fHG19fXLFy40HHM3r17DWA2btzorjDzxLlz50ylSpXMypUrTdOmTc3gwYONMYUzJ88++6xp3LjxZffbbDYTFRVlXnnlFUdbfHy88ff3NwsWLMiLEPNchw4dzAMPPODU1q1bN9OnTx9jTOHLCWC++OILx3ZWXv+ePXsMYLZu3eo4Zvny5cZisZhjx47lWey55dKcZGbLli0GMLGxscaYwpuTP//805QqVcr88ssvJiYmxkyZMsWxLz/kRD1quSg1NZXt27fTsmVLR5uXlxctW7Zk48aNbozMPc6ePQtAZGQkANu3b8dqtTrlp0qVKpQtW7bA52fAgAF06NDB6bVD4czJV199Rd26dbn77rspXrw4tWvX5t1333XsP3ToECdOnHDKSXh4OPXr1y+wOWnYsCGrVq1i//79AOzevZv169fTrl07oHDm5GJZef0bN24kIiKCunXrOo5p2bIlXl5ebN68Oc9jdoezZ89isViIiIgACmdObDYb9913H8OHD6d69eou+/NDTrQoey76+++/SU9Pp0SJEk7tJUqU4LfffnNTVO5hs9kYMmQIjRo14uabbwbgxIkT+Pn5OT5EMpQoUYITJ064Icq88fHHH7Njxw62bt3qsq8w5uSPP/7grbfeYujQoTz//PNs3bqVQYMG4efnR9++fR2vO7Pfo4Kak+eee46EhASqVKmCt7c36enpTJgwgT59+gAUypxcLCuv/8SJExQvXtxpv4+PD5GRkYUiR8nJyTz77LP06tXLsQh5YczJpEmT8PHxYdCgQZnuzw85UaEmeWLAgAH88ssvrF+/3t2huNXRo0cZPHgwK1euJCAgwN3heASbzUbdunV56aWXAKhduza//PILM2fOpG/fvm6Ozj0+/fRT5s2bx/z586levTq7du1iyJAhREdHF9qcSNZZrVZ69OiBMYa33nrL3eG4zfbt23njjTfYsWMHFovF3eFcM136zEXFihXD29vbZcTeyZMniYqKclNUeW/gwIEsXbqUNWvWULp0aUd7VFQUqampxMfHOx1fkPOzfft24uLiuPXWW/Hx8cHHx4e1a9cybdo0fHx8KFGiRKHLScmSJalWrZpTW9WqVTly5AiA43UXpt+j4cOH89xzz9GzZ09q1KjBfffdx1NPPcXEiROBwpmTi2Xl9UdFRbkM2kpLS+P06dMFOkcZRVpsbCwrV6509KZB4cvJDz/8QFxcHGXLlnV83sbGxvL0009Trlw5IH/kRIVaLvLz86NOnTqsWrXK0Waz2Vi1ahUNGjRwY2R5wxjDwIED+eKLL1i9ejXly5d32l+nTh18fX2d8rNv3z6OHDlSYPPTokULfv75Z3bt2uX4qlu3Ln369HF8X9hy0qhRI5dpW/bv309MTAwA5cuXJyoqyiknCQkJbN68ucDmJCkpCS8v549nb29vbDYbUDhzcrGsvP4GDRoQHx/P9u3bHcesXr0am81G/fr18zzmvJBRpB04cIDvvvuOokWLOu0vbDm57777+Omnn5w+b6Ojoxk+fDjffPMNkE9y4u7RDAXdxx9/bPz9/c2cOXPMnj17zCOPPGIiIiLMiRMn3B1arnv88cdNeHi4+f77781ff/3l+EpKSnIc89hjj5myZcua1atXm23btpkGDRqYBg0auDHqvHfxqE9jCl9OtmzZYnx8fMyECRPMgQMHzLx580xQUJD56KOPHMe8/PLLJiIiwnz55Zfmp59+MnfeeacpX768uXDhghsjzz19+/Y1pUqVMkuXLjWHDh0yixYtMsWKFTPPPPOM45iCnpNz586ZnTt3mp07dxrAvP7662bnzp2OEYxZef1t27Y1tWvXNps3bzbr1683lSpVMr169XLXS7puV8pJamqq6dy5syldurTZtWuX02duSkqK4xyFKSeZuXTUpzGenxMVanngzTffNGXLljV+fn6mXr16ZtOmTe4OKU8AmX7Nnj3bccyFCxfME088YYoUKWKCgoJM165dzV9//eW+oN3g0kKtMOZkyZIl5uabbzb+/v6mSpUq5p133nHab7PZzMiRI02JEiWMv7+/adGihdm3b5+bos19CQkJZvDgwaZs2bImICDAVKhQwbzwwgtO/+EW9JysWbMm08+Pvn37GmOy9vr/+ecf06tXLxMSEmLCwsJM//79zblz59zwanLGlXJy6NChy37mrlmzxnGOwpSTzGRWqHl6TizGXDTVtYiIiIh4DN2jJiIiIuKhVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSYiIiLioVSoiYiIiHgoFWoiIiIiHkqFmoiIiIiHUqEm4kHKlSvH1KlT3R1Gjilor8cT9evXjy5duji2mzVrxpAhQ9wWT26xWCwsXrwYgMOHD2OxWNi1a5dbYxLJCyrURPLA0aNHeeCBB4iOjsbPz4+YmBgGDx7MP//84+7QPMKff/6Jn58fN998s7tDyRPlypXDYrFgsVgIDAykXLly9OjRg9WrV2f7XG+88QZz5szJsdgyiqCMLz8/P2688UbGjx+PpyxkU6ZMGf76669C836Rwk2Fmkgu++OPP6hbty4HDhxgwYIFHDx4kJkzZ7Jq1SoaNGjA6dOn3RZbeno6NpvNbc+fYc6cOfTo0YOEhAQ2b96c689ntVpz/TmuZty4cfz111/s27ePDz74gIiICFq2bMmECROydZ7w8HAiIiJyPL7vvvuOv/76iwMHDjB27FgmTJjA+++/n+PPc7HU1NQsHeft7U1UVBQ+Pj65Go+IJ1ChJpLLBgwYgJ+fH99++y1NmzalbNmytGvXju+++45jx47xwgsvOB1/7tw5evXqRXBwMKVKlWL69OmOfcYYxowZQ9myZfH39yc6OppBgwY59qekpDBs2DBKlSpFcHAw9evX5/vvv3fsnzNnDhEREXz11VdUq1YNf39/Zs2aRUBAAPHx8U5xDB48mObNmzu2169fz+23305gYCBlypRh0KBBnD9/3rE/Li6OTp06ERgYSPny5Zk3b16W8mOMYfbs2dx333307t2b9957z7Hv+eefp379+i6PqVmzJuPGjXNsz5o1i6pVqxIQEECVKlWYMWOGY19GD9Enn3xC06ZNCQgIYN68efzzzz/06tWLUqVKERQURI0aNViwYIHT85w7d44+ffoQHBxMyZIlmTJlisulxavl/HJCQ0OJioqibNmyNGnShHfeeYeRI0cyatQo9u3bB9gL6QcffJDy5csTGBjITTfdxBtvvOF0nksvfV5s3LhxmfY61apVi5EjR14xvqJFixIVFUVMTAx9+vShUaNG7Nixw7HfZrMxbtw4Spcujb+/P7Vq1WLFihVO53j22WepXLkyQUFBVKhQgZEjRzoVyWPGjKFWrVrMmjWL8uXLExAQAMCBAwdo0qQJAQEBVKtWjZUrVzqd99JLn99//z0Wi4VVq1ZRt25dgoKCaNiwoSOPGcaPH0/x4sUJDQ3loYce4rnnnqNWrVqO/d9//z316tUjODiYiIgIGjVqRGxs7BXzJJLr3LokvEgB988//xiLxWJeeumlTPc//PDDpkiRIsZmsxljjImJiTGhoaFm4sSJZt++fWbatGnG29vbfPvtt8YYYxYuXGjCwsLM119/bWJjY83mzZvNO++84zjfQw89ZBo2bGjWrVtnDh48aF555RXj7+9v9u/fb4wxZvbs2cbX19c0bNjQ/Pjjj+a3334ziYmJpkSJEmbWrFmO86SlpTm1HTx40AQHB5spU6aY/fv3mx9//NHUrl3b9OvXz/GYdu3amZo1a5qNGzeabdu2mYYNG5rAwEAzZcqUK+Zo1apVJioqyqSlpZmff/7ZhIaGmsTERGOMMb/88osBzMGDBx3HZ7QdOHDAGGPMRx99ZEqWLGk+//xz88cff5jPP//cREZGmjlz5hhjjDl06JABTLly5RzHHD9+3Pz555/mlVdeMTt37jS///67I9ebN292ymdMTIz57rvvzM8//2y6du1qQkNDzeDBg7Oc88zExMRkmpeM98ukSZOMMcakpqaaUaNGma1bt5o//vjDfPTRRyYoKMh88sknjsf07dvX3HnnnY7tpk2bOuI7evSo8fLyMlu2bHHs37Fjh7FYLOb333/PNLaMfO3cudPRtnXrVhMREWHmzp3raHv99ddNWFiYWbBggfntt9/MM888Y3x9fZ1e94svvmh+/PFHc+jQIfPVV1+ZEiVKOF6bMcaMHj3aBAcHm7Zt25odO3aY3bt3m/T0dHPzzTebFi1amF27dpm1a9ea2rVrG8B88cUXmca4Zs0aA5j69eub77//3vz666/m9ttvNw0bNnQ810cffWQCAgLM+++/b/bt22fGjh1rwsLCTM2aNY0xxlitVhMeHm6GDRtmDh48aPbs2WPmzJljYmNjM82TSF5RoSaSizZt2uT0H8ylXn/9dQOYkydPGmPs/4G3bdvW6Zh77rnHtGvXzhhjzGuvvWYqV65sUlNTXc4VGxtrvL29zbFjx5zaW7RoYUaMGGGMsRdqgNm1a5fTMYMHDzbNmzd3bH/zzTfG39/fnDlzxhhjzIMPPmgeeeQRp8f88MMPxsvLy1y4cMHs27fPAE4Fwd69ew1w1UKtd+/eZsiQIY7tmjVrmtmzZzttjxs3zrE9YsQIU79+fcd2xYoVzfz5853O+eKLL5oGDRoYY/79T33q1KlXjMMYYzp06GCefvppY4wxCQkJxtfX1yxcuNCxPz4+3gQFBTkKoazkPDOXK9SMMaZEiRLm8ccfv+xjBwwYYLp37+7YvlKhZoy9gL74fE8++aRp1qzZZc+fka/AwEATHBxsfH19DeDy84+OjjYTJkxwarvtttvME088cdlzv/LKK6ZOnTqO7dGjRxtfX18TFxfnaPvmm2+Mj4+PU06XL1+epULtu+++czxm2bJlBjAXLlwwxhhTv359M2DAAKd4GjVq5CjU/vnnHwOY77///rLxi7iDLn2K5AGTjZuwGzRo4LK9d+9eAO6++24uXLhAhQoVePjhh/niiy9IS0sD4OeffyY9PZ3KlSsTEhLi+Fq7di2///6743x+fn7ccsstTs/Rp08fvv/+e44fPw7AvHnz6NChg+Pep927dzNnzhyn87Zp0wabzcahQ4fYu3cvPj4+1KlTx3HOKlWqXPXeqfj4eBYtWsS9997raLv33nudLn/26dOH+fPnA/Y8LliwgD59+gBw/vz5/2/n3kOa+t84gL91bqJbLi+Z92XlrbCy0kxTCRQFMQssq4FaKZKVdJMMLLWMIlMbdMMugjWb3cQ/7IIVRKwiu1iRNqOMglyZSHYzdT3fP8LD72jZ6vsLhe/zgsHO+XzOzrPPztjDZ5/n4NmzZ1ixYoUotqKiItF7BoCZM2eKtk0mE7Zv347AwEA4ODhAoVDg0qVLePnyJYDvawt7e3sREhIiHKNUKuHn5ydsmzvmv4OIYGFhIWzv378fM2bMwJgxY6BQKFBeXi7EaI6MjAycPHkS3d3d6OnpQVVVFZYvX/7L46qrq9HY2IgHDx7g1KlTqK2tRW5uLgCgq6sLr1+/Rnh4uOiY8PBw4Vrtf43w8HC4uLhAoVAgLy9vUOwqlQpjxowRtpubm+Hp6Qk3Nzdh38DvxM/873Xt6uoK4Ptf8gBgMBhEnyUA0baDgwPS0tIQGxuLhIQEaDQatLW1mXVexv4mXonJ2F80ceJEWFhYoLm5GQsWLBjU3tzcDHt7e9EP1VA8PT1hMBhw+fJl1NfXIysrC8XFxbh27Ro+fvwIiUSCu3fvQiKRiI5TKBTCcxsbG1EiAADBwcGYMGECdDodVq5ciZqaGlEl4cePH5GZmSlaD9fPy8sLLS0tZsU/UFVVFbq7u0Xr0IgI3759Q0tLC3x9fbFkyRJs2rQJ9+7dw5cvX/Dq1SskJycLcQHA4cOHB61lGzgGcrlctF1cXAyNRoO9e/ciMDAQcrkca9euNXtBe//5zRlzc3V0dKC9vR3e3t4AAJ1Oh40bN6KkpASzZ8/GqFGjUFxc/FsFFwkJCbC2tkZNTQ1kMhl6e3uRlJT0y+M8PT0xceJEAEBAQACePXuGLVu2oKCgwKzz3rx5E2q1GoWFhYiNjYVSqYROp0NJSYmo38DP5d+QSqXC8/5r/HeKZSoqKpCdnY2LFy+iuroaeXl5qK+vR2ho6P8tRsZ+FydqjP1Fjo6OiImJwYEDB7Bu3TrY2NgIbUajEVqtFikpKaLE6datW6LXuHXrFgICAoRtGxsbJCQkICEhAatWrYK/vz8ePXqEoKAgmEwmvH37FhEREb8dq1qthlarhYeHBywtLREfHy+0TZ8+HU1NTcIP90D+/v7o6+vD3bt3ERwcDOD7DMbAAoWBjh49ig0bNiAtLU20PysrC8eOHcOuXbvg4eGBqKgoaLVafPnyBTExMXB2dgYAjB07Fm5ubnj+/Lkwy2YuvV6PxMREYTavPzmcNGkSAGD8+PGQSqVoaGiAl5cXAOD9+/doaWlBZGQkAPzrMR9Io9HA0tJSKA7Q6/UICwtDVlaW0Od3Z+qsrKyQmpqKiooKyGQyLF68WHQdmksikaCvrw89PT2ws7ODm5sb9Ho9oqKihD56vV6Ypbpx4wZUKpWoWMachfkBAQF49eoV2trahFmxgd+JP+Hn54eGhgakpKQI+xoaGgb1CwoKQlBQEDZv3ozZs2ejqqqKEzU2rDhRY+wv27dvH8LCwhAbG4uioiJ4e3vj8ePHyMnJgbu7+6DbMej1euzevRvz589HfX09Tp8+jbq6OgDfqzZNJhNmzZoFW1tbnDhxAjY2NlCpVHB0dIRarUZKSgpKSkoQFBSE9vZ2XLlyBVOmTBElXj+iVqtRUFCAHTt2ICkpCdbW1kLbpk2bEBoaitWrVyM9PR1yuRxNTU2or6/Hvn374Ofnh7i4OGRmZuLgwYOwsrLC2rVrh0wIGhsbce/ePWi1Wvj7+4valixZgm3btqGoqAhWVlZQq9XIz89HT08PysrKRH0LCwuRnZ0NpVKJuLg4fP36FXfu3EFnZyfWr1//0/P7+PjgzJkzuHHjBuzt7VFaWoo3b94IidqoUaOQmpqKnJwcODg4wNnZGfn5+bC0tBQSa19f3z8e8w8fPsBoNKK3txetra04ceIEjhw5gp07dwoJsY+PDyorK3Hp0iV4e3vj+PHjaGhoEGbczJWeni4k+3q93qxjOjo6YDQa0dfXh0ePHkGj0WDu3Lmws7MDAOTk5CA/Px8TJkzAtGnTUFFRgcbGRqHa18fHBy9fvoROp0NwcDDq6upQU1Pzy/NGR0fD19cXqampKC4uRldX16DK6D+xZs0aZGRkYObMmQgLC0N1dTUePnyI8ePHAwBaW1tRXl6OefPmwc3NDQaDAU+fPhUldowNi+FdIsfYf8OLFy8oNTWVxo4dS1KplDw9PWnNmjX07t07UT+VSkWFhYW0cOFCsrW1JRcXF9JoNEJ7TU0NzZo1i+zs7Egul1NoaKhoAXV/leC4ceNIKpWSq6srLViwgB4+fEhE34sJlErlT+MMCQkhAHT16tVBbbdv36aYmBhSKBQkl8tpypQposXkbW1tFB8fT9bW1uTl5UWVlZVDLppfvXo1TZo06YdtbW1tZGlpSbW1tURE1NnZSdbW1mRra0sfPnwY1F+r1dK0adNIJpORvb09RUZG0rlz54jox1WMRN8XjycmJpJCoSBnZ2fKy8ujlJQU0cL8rq4uWrp0qfBZlJaWUkhICOXm5gp9fjXmP6JSqQgAASCZTEZeXl60aNGiQePe3d1NaWlppFQqafTo0bRy5UrKzc0VFsAT/bqYoF9ERARNnjz5pzH16x+v/odEIiEPDw/KyMgQLfo3mUxUUFBA7u7uJJVKaerUqXThwgXRa+Xk5JCjoyMpFApKTk6msrIy0fWXn58vei/9DAYDzZkzh2QyGfn6+tLFixfNKiboL34hIrp//z4BoNbWVmHftm3byMnJiRQKBS1fvpyys7MpNDSUiIiMRiPNnz+fXF1dSSaTkUqloq1bt5LJZPrlmDH2N1kQjZBbTTPG2Aj36dMnuLu7o6SkBCtWrBjucMxGRPDx8UFWVtaQs4z/NTExMXBxccHx48eHOxTGfor/+mSMsZ+4f/8+njx5gpCQELx//164yW5iYuIwR2a+9vZ26HQ6GI1GLFu2bLjDGTafP3/GoUOHEBsbC4lEgpMnTwpFOYyNZJyoMcbYEPbs2QODwQCZTIYZM2bg+vXrcHJyGu6wzObs7AwnJyeUl5fD3t5+uMMZNhYWFjh//jx27NiB7u5u+Pn54ezZs4iOjh7u0BgbEv/1yRhjjDE2QvENbxljjDHGRihO1BhjjDHGRihO1BhjjDHGRihO1BhjjDHGRihO1BhjjDHGRihO1BhjjDHGRihO1BhjjDHGRihO1BhjjDHGRqh/ABMUUU3dekGpAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7, 6))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.7)\n", + "\n", + "# perfect fit line\n", + "max_val = max(observed.max(), predicted.max())\n", + "plt.plot([0, max_val], [0, max_val], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted (Negative Binomial GLM)\")\n", + "plt.grid(True)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", "metadata": {}, "outputs": [], @@ -296,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 15, "id": "75df8b20-dee7-420d-9231-229db9d53915", "metadata": {}, "outputs": [], @@ -321,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "id": "98205773-013c-45d4-a8bc-302d8a33e97f", "metadata": {}, "outputs": [], @@ -332,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "id": "b3165da9-4c91-44f2-bad2-941995d22b73", "metadata": {}, "outputs": [], @@ -383,7 +536,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 18, "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", "metadata": {}, "outputs": [], @@ -394,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 19, "id": "6210a31b-85be-44a6-8cce-9569778e094d", "metadata": {}, "outputs": [], @@ -465,7 +618,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", "metadata": {}, "outputs": [], @@ -475,7 +628,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 21, "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", "metadata": {}, "outputs": [], @@ -511,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 22, "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", "metadata": {}, "outputs": [ @@ -629,7 +782,7 @@ "14 POINT (-118.34876716762236 34.19656151035557) new_5 " ] }, - "execution_count": 15, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -641,7 +794,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 23, "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", "metadata": {}, "outputs": [ @@ -759,7 +912,7 @@ "6 POINT (-118.30550179211235 34.16893683695737) new_5 " ] }, - "execution_count": 16, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -771,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 24, "id": "d3b5d469-48b5-49df-ae91-315466705ddb", "metadata": {}, "outputs": [], @@ -791,7 +944,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 25, "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", "metadata": {}, "outputs": [], @@ -805,7 +958,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 26, "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", "metadata": {}, "outputs": [], @@ -816,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 27, "id": "174076a2-a975-41d8-88d3-ca874351d57a", "metadata": {}, "outputs": [], @@ -826,7 +979,7 @@ "\n", "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", "cols_to_weight = [\n", - " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop']\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", "\n", "for col in cols_to_weight:\n", " geometry_intersect_orange[f'{col}_adj'] = geometry_intersect_orange[col] * geometry_intersect_orange['area_ratio']" @@ -834,7 +987,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 28, "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", "metadata": {}, "outputs": [], @@ -844,7 +997,7 @@ "\n", "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", "cols_to_weight = [\n", - " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop']\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", "\n", "for col in cols_to_weight:\n", " geometry_intersect_blue[f'{col}_adj'] = geometry_intersect_blue[col] * geometry_intersect_blue['area_ratio']" @@ -852,7 +1005,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 29, "id": "bbf7b71a-c05a-4651-955b-484947ced81c", "metadata": {}, "outputs": [ @@ -956,6 +1109,7 @@ " total_youth_adj\n", " total_seniors_adj\n", " public_asst_pop_adj\n", + " inc_total_lowincome_adj\n", " \n", " \n", " \n", @@ -1040,6 +1194,7 @@ " 52.204671\n", " 52.010421\n", " 42.589299\n", + " 207.313248\n", " \n", " \n", " 1\n", @@ -1122,6 +1277,7 @@ " 70.199118\n", " 69.937912\n", " 57.269420\n", + " 278.772127\n", " \n", " \n", " 2\n", @@ -1204,6 +1360,7 @@ " 208.289349\n", " 207.514318\n", " 169.925357\n", + " 827.150911\n", " \n", " \n", " 3\n", @@ -1286,6 +1443,7 @@ " 211.299466\n", " 210.513235\n", " 172.381053\n", + " 839.104576\n", " \n", " \n", " 4\n", @@ -1368,6 +1526,7 @@ " 436.751694\n", " 435.126571\n", " 356.308126\n", + " 1734.412075\n", " \n", " \n", "\n", @@ -1507,15 +1666,15 @@ "3 0.196558 1473.789205 34.004472 211.299466 \n", "4 0.406281 3046.292280 70.286552 436.751694 \n", "\n", - " total_seniors_adj public_asst_pop_adj \n", - "0 52.010421 42.589299 \n", - "1 69.937912 57.269420 \n", - "2 207.514318 169.925357 \n", - "3 210.513235 172.381053 \n", - "4 435.126571 356.308126 " + " total_seniors_adj public_asst_pop_adj inc_total_lowincome_adj \n", + "0 52.010421 42.589299 207.313248 \n", + "1 69.937912 57.269420 278.772127 \n", + "2 207.514318 169.925357 827.150911 \n", + "3 210.513235 172.381053 839.104576 \n", + "4 435.126571 356.308126 1734.412075 " ] }, - "execution_count": 22, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1526,7 +1685,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 30, "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", "metadata": {}, "outputs": [], @@ -1536,7 +1695,7 @@ " 'workers_with_no_car_adj': 'sum',\n", " 'total_seniors_adj': 'sum',\n", " 'total_youth_adj': 'sum',\n", - " 'public_asst_pop_adj': 'sum'\n", + " 'inc_total_lowincome_adj': 'sum'\n", "})\n", " \n", "gdf_orange = gdf_orange.merge(\n", @@ -1548,7 +1707,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 31, "id": "36e31d14-b88f-4b54-849a-615f5755f369", "metadata": {}, "outputs": [], @@ -1558,7 +1717,7 @@ " 'workers_with_no_car_adj': 'sum',\n", " 'total_youth_adj': 'sum',\n", " 'total_seniors_adj': 'sum',\n", - " 'public_asst_pop_adj': 'sum'\n", + " 'inc_total_lowincome_adj': 'sum'\n", "})\n", " \n", "gdf_blue = gdf_blue.merge(\n", @@ -1570,7 +1729,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 32, "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", "metadata": {}, "outputs": [], @@ -1584,7 +1743,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 33, "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", "metadata": {}, "outputs": [ @@ -1789,7 +1948,7 @@ "4 0.0 None 80120 " ] }, - "execution_count": 26, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1800,7 +1959,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 34, "id": "4ca8d618-a539-41ff-980c-45a628569ce6", "metadata": {}, "outputs": [], @@ -1820,7 +1979,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 35, "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", "metadata": {}, "outputs": [ @@ -2037,7 +2196,7 @@ "4 0.0 None 80120 [801] 1 " ] }, - "execution_count": 28, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -2048,7 +2207,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 36, "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", "metadata": {}, "outputs": [], @@ -2065,7 +2224,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 37, "id": "935a70bd-867a-49b2-867b-12a1b4f71635", "metadata": {}, "outputs": [], @@ -2078,7 +2237,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 38, "id": "da409a53-ae7b-4f11-a157-d76388882c32", "metadata": {}, "outputs": [], @@ -2097,7 +2256,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 39, "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", "metadata": {}, "outputs": [], @@ -2117,7 +2276,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 40, "id": "e15d37f1-42de-441c-b46c-2ed73103df13", "metadata": {}, "outputs": [], @@ -2136,7 +2295,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 41, "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", "metadata": {}, "outputs": [ @@ -2290,7 +2449,7 @@ "14 Empire / Valpreda 1249 2 " ] }, - "execution_count": 34, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2301,7 +2460,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 42, "id": "51ba1872-0315-4e91-ac93-1e4512191513", "metadata": {}, "outputs": [ @@ -2477,7 +2636,7 @@ "3 San Fernando / Alameda 5453 1 " ] }, - "execution_count": 35, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -2488,22 +2647,22 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 43, "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + "[('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'eastbound', 'adding_existing')]" + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" ] }, - "execution_count": 36, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -2518,7 +2677,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 44, "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", "metadata": {}, "outputs": [], @@ -2529,7 +2688,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 45, "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", "metadata": {}, "outputs": [], @@ -2542,7 +2701,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 46, "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", "metadata": {}, "outputs": [], @@ -2558,7 +2717,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 47, "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", "metadata": {}, "outputs": [], @@ -2573,7 +2732,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 48, "id": "f706ac72-936a-46fa-8994-908e72968689", "metadata": {}, "outputs": [], @@ -2607,7 +2766,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 49, "id": "93666c83-c8be-4e00-b455-005fa305e6aa", "metadata": {}, "outputs": [], @@ -2629,7 +2788,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 50, "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", "metadata": {}, "outputs": [ @@ -2667,7 +2826,7 @@ " workers_with_no_car_adj\n", " total_seniors_adj\n", " total_youth_adj\n", - " public_asst_pop_adj\n", + " inc_total_lowincome_adj\n", " n_arrivals\n", " n_routes\n", " n_routes_base\n", @@ -2700,7 +2859,7 @@ " 387.623467\n", " 1715.996254\n", " 1559.872917\n", - " 1321.068363\n", + " 6804.429329\n", " NaN\n", " NaN\n", " 0\n", @@ -2731,7 +2890,7 @@ " 306.987385\n", " 1827.375548\n", " 1019.265555\n", - " 1240.892220\n", + " 5811.143720\n", " NaN\n", " NaN\n", " 6\n", @@ -2762,7 +2921,7 @@ " 41.173862\n", " 772.300857\n", " 466.130639\n", - " 201.046230\n", + " 2059.705932\n", " NaN\n", " NaN\n", " 0\n", @@ -2808,10 +2967,10 @@ "66 306.987385 1827.375548 1019.265555 \n", "65 41.173862 772.300857 466.130639 \n", "\n", - " public_asst_pop_adj n_arrivals n_routes n_routes_base \\\n", - "45 1321.068363 NaN NaN 0 \n", - "66 1240.892220 NaN NaN 6 \n", - "65 201.046230 NaN NaN 0 \n", + " inc_total_lowincome_adj n_arrivals n_routes n_routes_base \\\n", + "45 6804.429329 NaN NaN 0 \n", + "66 5811.143720 NaN NaN 6 \n", + "65 2059.705932 NaN NaN 0 \n", "\n", " nearest_stop_distance_m matched_stop_name matched_stop_id \\\n", "45 94.938646 Cesar E Chavez / Alameda 9218 \n", @@ -2834,7 +2993,7 @@ "65 1 43 " ] }, - "execution_count": 43, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -2845,7 +3004,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 51, "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", "metadata": {}, "outputs": [], @@ -2861,14 +3020,29 @@ " 'workers_with_no_car_adj': 'mean',\n", " 'total_youth_adj': 'mean',\n", " 'total_seniors_adj': 'mean',\n", - " 'public_asst_pop_adj': 'mean',\n", + " 'inc_total_lowincome_adj': 'mean',\n", " 'change_type': lambda x: ', '.join(sorted(x.unique()))\n", - "}).reset_index()" + "}).reset_index()\n", + "\n", + "\n", + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\"\n", + "]\n", + "\n", + "df_grouped[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_grouped.loc[\n", + " df_grouped[\"stop_group\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 52, "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", "metadata": {}, "outputs": [], @@ -2880,7 +3054,8 @@ " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", " 'total_seniors_adj',\n", - " 'public_asst_pop_adj'\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", "]].copy()\n", "\n", "\n", @@ -2893,13 +3068,13 @@ "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", "\n", "X_scn = sm.add_constant(X_scn)\n", - "X_scn = X_scn[nb_model_extended.model.exog_names]\n", - "df_grouped['pred_scenario'] = nb_model_extended.predict(X_scn)" + "X_scn = X_scn[model_fe.model.exog_names]\n", + "df_grouped['pred_scenario'] = model_fe.predict(X_scn)" ] }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 53, "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", "metadata": {}, "outputs": [], @@ -2911,7 +3086,8 @@ " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", " 'total_seniors_adj',\n", - " 'public_asst_pop_adj'\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", "]].fillna(0)\n", "\n", "X_base = X_base.rename(columns={\n", @@ -2922,13 +3098,13 @@ "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", "\n", "X_base = sm.add_constant(X_base)\n", - "X_base = X_base[nb_model_extended.model.exog_names]\n", - "df_grouped['pred_baseline'] = nb_model_extended.predict(X_base)" + "X_base = X_base[model_fe.model.exog_names]\n", + "df_grouped['pred_baseline'] = model_fe.predict(X_base)" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 54, "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", "metadata": {}, "outputs": [], @@ -2940,7 +3116,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 55, "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", "metadata": {}, "outputs": [ @@ -2974,7 +3150,7 @@ " workers_with_no_car_adj\n", " total_youth_adj\n", " total_seniors_adj\n", - " public_asst_pop_adj\n", + " inc_total_lowincome_adj\n", " change_type\n", " ridership_change\n", " pred_scenario\n", @@ -2993,11 +3169,11 @@ " 33.057828\n", " 240.491509\n", " 761.825145\n", - " 97.771031\n", + " 1991.379441\n", " new_stop\n", - " 21.835001\n", - " 21.950506\n", - " 0.115506\n", + " 1.695556\n", + " 1.777208\n", + " 0.081652\n", " \n", " \n", " 1\n", @@ -3010,11 +3186,11 @@ " 252.765168\n", " 949.244058\n", " 1084.409976\n", - " 750.030442\n", + " 4642.170179\n", " adding_existing\n", - " 36.820136\n", - " 50.155319\n", - " 13.335182\n", + " -1.868582\n", + " 0.482467\n", + " 2.351049\n", " \n", " \n", " 2\n", @@ -3027,11 +3203,11 @@ " 388.996496\n", " 1558.857385\n", " 1725.942594\n", - " 1327.662417\n", + " 6817.928354\n", " new_stop\n", - " 34.280027\n", - " 34.461366\n", - " 0.181339\n", + " 48.016813\n", + " 50.329137\n", + " 2.312324\n", " \n", " \n", " 3\n", @@ -3044,11 +3220,11 @@ " 66.341354\n", " 321.765127\n", " 913.488790\n", - " 184.402549\n", + " 2552.447381\n", " new_stop\n", - " 22.121248\n", - " 22.238268\n", - " 0.117020\n", + " 2.202015\n", + " 2.308056\n", + " 0.106041\n", " \n", " \n", " 4\n", @@ -3061,11 +3237,11 @@ " 22.194411\n", " 198.756101\n", " 918.907033\n", - " 97.789073\n", + " 2212.922437\n", " new_stop\n", - " 20.399955\n", - " 20.507869\n", - " 0.107914\n", + " 1.647864\n", + " 1.727219\n", + " 0.079355\n", " \n", " \n", " 5\n", @@ -3078,11 +3254,11 @@ " 238.025200\n", " 1168.627935\n", " 1697.596217\n", - " 1222.747642\n", + " 5877.742833\n", " adding_existing\n", - " 81.270071\n", - " 107.934802\n", - " 26.664730\n", + " -3.642201\n", + " 0.034977\n", + " 3.677178\n", " \n", " \n", " 6\n", @@ -3095,11 +3271,11 @@ " 56.714377\n", " 395.084899\n", " 608.501816\n", - " 121.759197\n", + " 1950.302731\n", " adding_existing, new_stop\n", - " 30.265586\n", - " 39.330714\n", - " 9.065128\n", + " -2.334350\n", + " 0.750174\n", + " 3.084524\n", " \n", " \n", " 7\n", @@ -3112,11 +3288,11 @@ " 111.935435\n", " 849.488589\n", " 1137.810544\n", - " 565.381572\n", + " 3698.842863\n", " new_stop\n", - " 31.547904\n", - " 31.679496\n", - " 0.131592\n", + " 3.963669\n", + " 4.106075\n", + " 0.142407\n", " \n", " \n", " 8\n", @@ -3129,11 +3305,11 @@ " 30.013337\n", " 561.422704\n", " 841.882362\n", - " 229.641547\n", + " 2881.922546\n", " adding_existing, new_stop\n", - " 25.240677\n", - " 27.834539\n", - " 2.593862\n", + " -0.133763\n", + " 0.333678\n", + " 0.467441\n", " \n", " \n", " 9\n", @@ -3146,11 +3322,11 @@ " 23.792660\n", " 659.106148\n", " 843.444579\n", - " 243.804705\n", + " 2953.610300\n", " new_stop\n", - " 23.447332\n", - " 23.571367\n", - " 0.124035\n", + " 1.100656\n", + " 1.153660\n", + " 0.053004\n", " \n", " \n", "\n", @@ -3181,54 +3357,44 @@ "8 0.5 1.5 30.013337 561.422704 \n", "9 0.0 1.0 23.792660 659.106148 \n", "\n", - " total_seniors_adj public_asst_pop_adj change_type \\\n", - "0 761.825145 97.771031 new_stop \n", - "1 1084.409976 750.030442 adding_existing \n", - "2 1725.942594 1327.662417 new_stop \n", - "3 913.488790 184.402549 new_stop \n", - "4 918.907033 97.789073 new_stop \n", - "5 1697.596217 1222.747642 adding_existing \n", - "6 608.501816 121.759197 adding_existing, new_stop \n", - "7 1137.810544 565.381572 new_stop \n", - "8 841.882362 229.641547 adding_existing, new_stop \n", - "9 843.444579 243.804705 new_stop \n", + " total_seniors_adj inc_total_lowincome_adj change_type \\\n", + "0 761.825145 1991.379441 new_stop \n", + "1 1084.409976 4642.170179 adding_existing \n", + "2 1725.942594 6817.928354 new_stop \n", + "3 913.488790 2552.447381 new_stop \n", + "4 918.907033 2212.922437 new_stop \n", + "5 1697.596217 5877.742833 adding_existing \n", + "6 608.501816 1950.302731 adding_existing, new_stop \n", + "7 1137.810544 3698.842863 new_stop \n", + "8 841.882362 2881.922546 adding_existing, new_stop \n", + "9 843.444579 2953.610300 new_stop \n", "\n", " ridership_change pred_scenario pred_baseline \n", - "0 21.835001 21.950506 0.115506 \n", - "1 36.820136 50.155319 13.335182 \n", - "2 34.280027 34.461366 0.181339 \n", - "3 22.121248 22.238268 0.117020 \n", - "4 20.399955 20.507869 0.107914 \n", - "5 81.270071 107.934802 26.664730 \n", - "6 30.265586 39.330714 9.065128 \n", - "7 31.547904 31.679496 0.131592 \n", - "8 25.240677 27.834539 2.593862 \n", - "9 23.447332 23.571367 0.124035 " + "0 1.695556 1.777208 0.081652 \n", + "1 -1.868582 0.482467 2.351049 \n", + "2 48.016813 50.329137 2.312324 \n", + "3 2.202015 2.308056 0.106041 \n", + "4 1.647864 1.727219 0.079355 \n", + "5 -3.642201 0.034977 3.677178 \n", + "6 -2.334350 0.750174 3.084524 \n", + "7 3.963669 4.106075 0.142407 \n", + "8 -0.133763 0.333678 0.467441 \n", + "9 1.100656 1.153660 0.053004 " ] }, - "execution_count": 48, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_grouped[['stop_group', 'total_pop_adj', 'n_arrivals_base', 'n_arrivals_scn', 'n_routes_base', 'n_routes_scn',\n", - " 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'public_asst_pop_adj', 'change_type', 'ridership_change', 'pred_scenario', 'pred_baseline' ]].head(10)" + " 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj', 'change_type', 'ridership_change', 'pred_scenario', 'pred_baseline' ]].head(10)" ] }, { "cell_type": "code", - "execution_count": 49, - "id": "c7c18a84-8c64-40ef-9521-cf4b6c371de8", - "metadata": {}, - "outputs": [], - "source": [ - "df_grouped_filter = df_grouped[df_grouped['stop_group'] == \"Empire & Grismer\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 50, + "execution_count": 56, "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", "metadata": {}, "outputs": [ @@ -3236,7 +3402,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "1579.5463419913115\n" + "36.80157389321087\n" ] } ], @@ -3255,7 +3421,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 53, "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", "metadata": {}, "outputs": [], @@ -3280,7 +3446,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 54, "id": "87d940d7-c839-44d6-80b6-13467e9de035", "metadata": {}, "outputs": [ @@ -3366,7 +3532,7 @@ "2 211543.0 17.0 " ] }, - "execution_count": 52, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -3377,7 +3543,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 55, "id": "4794fc04-095a-49fa-a2bd-f5b09889542e", "metadata": {}, "outputs": [ @@ -3387,7 +3553,7 @@ "841492.0602739726" ] }, - "execution_count": 53, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -3400,7 +3566,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 56, "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", "metadata": {}, "outputs": [ @@ -3410,7 +3576,7 @@ "0.06887407384747071" ] }, - "execution_count": 54, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -3433,7 +3599,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 57, "id": "da312c75-80af-4dfc-8297-68cabdabe6de", "metadata": {}, "outputs": [ @@ -3443,7 +3609,7 @@ "579.5698630136986" ] }, - "execution_count": 55, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -3451,190 +3617,6 @@ "source": [ "burbank_avg_daily" ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "f03e393c-bab7-46cd-8f65-551bc38f7599", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "108.78979140381182" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "burbank_share_daily_pct*ridership_change" - ] - }, - { - "cell_type": "markdown", - "id": "77b86263-ba2f-4f82-af8a-6c67eef47d96", - "metadata": {}, - "source": [ - "According to NTD ridership data, Burbank currently records an average daily ridership of 579.56 passengers. With the addition of a new Blue Route and several enhancements to the Orange Route, ridership is projected to increase by 18.76%, based on NTD-based estimates.\n", - "\n", - "This expansion includes 35 new Blue Line stops and 10 new Orange Line stops, along with additional stops integrated into existing LA Metro and Metrolink services." - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "c8106785-671a-401c-9a4f-6f8b7fe56041", - "metadata": {}, - "outputs": [], - "source": [ - "stop_route_df_Burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "0e9f14d2-38e6-4541-8614-d05de534fdb6", - "metadata": {}, - "outputs": [], - "source": [ - "# Copy dataset\n", - "df_burbank = stop_route_df_Burbank.copy()\n", - "\n", - "feature_cols = [\n", - " 'n_routes',\n", - " 'log_arrivals',\n", - " 'total_pop_adj',\n", - " 'workers_with_no_car_adj',\n", - " 'total_youth_adj',\n", - " 'public_asst_pop_adj',\n", - " 'total_seniors_adj'\n", - "]\n", - "\n", - "# Same feature engineering\n", - "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)\n", - "\n", - "# Build X using SAME feature list\n", - "X_burbank = df_burbank[feature_cols]\n", - "\n", - "# Force constant\n", - "X_burbank = sm.add_constant(X_burbank, has_constant='add')\n", - "\n", - "# Ensure exact column match + order\n", - "X_burbank = X_burbank.reindex(\n", - " columns=nb_model_extended.model.exog_names,\n", - " fill_value=0\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "6f5cf2d8-33ec-4274-af9c-2babf1973daf", - "metadata": {}, - "outputs": [], - "source": [ - "df_burbank[\"predicted_boardings\"] = nb_model_extended.predict(X_burbank)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "f0f9a62a-59a8-47bf-a73b-81aba4560584", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAGJCAYAAABsCo9JAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYOlJREFUeJzt3Xd4U+X7x/F3kjZpuinQlkJbypIhCoIgS1SqbEH5IiLKEAEVFH+IiigiylBBnAjiAFRQQAEVZU/RUjaKMspGoC2reyZ5fn8cGwgt0EDbpO39uq5cJuecJPdJMZ+c84yjU0ophBBClEt6VxcghBDCdSQEhBCiHJMQEEKIckxCQAghyjEJASGEKMckBIQQohyTEBBCiHJMQkAIIcoxCQEhhCjHJATKoLvuuoubb77ZJe/dv39/fH19XfLel6pevTpdunRxdRklbvbs2eh0Oo4ePerqUlzq6NGj6HQ6Zs+ebV/2+uuvo9PpXFfUZQqq0RUkBIpZ3v+Ul96Cg4O5++67WbZsmavLKzWUUnz99dfceeedBAYG4u3tTcOGDXnjjTdIT093dXniMv3793f4N+/v78+tt97Ku+++S3Z2tqvLc8onn3zi8i/q4iQhUELeeOMNvv76a7766itefPFFzpw5Q6dOnVi6dKmrS3N7VquVhx9+mL59+wLaL7r333+fRo0aMW7cOO644w4SEhJcXKW4nMlk4uuvv+brr79m4sSJBAUFMXLkSPr16+eSel599VUyMzOdfl5ZDwEPVxdQXnTs2JGmTZvaHw8cOJCQkBC+/fbbIjttkZ6ejo+PT5G8ljt55513WLBgASNHjmTy5Mn25YMHD+ahhx6ie/fu9O/f3y2PrMrq36QwPDw8ePTRR+2Pn376aZo3b878+fOZOnUqYWFh+Z6jlCIrKwuz2Vws9Xh4yFfe5eRIwEUCAwMxm80O/yjXr1+PTqdj/fr1DtsWdO4w79z7oUOH6NSpE35+fvTp08fhedu3b6dly5aYzWaioqKYMWOGw/qcnBxee+01mjRpQkBAAD4+PrRp04Z169YV+P5Tpkxh5syZ1KxZE5PJxO23387WrVuvua+7du2icuXK3HXXXaSlpQGQnJzMvn37SE5OvupzMzMzmTx5MnXq1GHSpEn51nft2pV+/fqxfPlyNm/enG/9ypUradSoEV5eXtSvX59FixY5rM/NzWXcuHHUrl0bLy8vKlasSOvWrVm1apXDdvv27eN///sfQUFBeHl50bRpU3766SeHbfJO/W3YsIGnn36a4OBgqlWrxvfff29ffrlPP/0UnU7Hnj17nHovgL///pt77rkHs9lMtWrVGD9+PDab7aqfJ8CUKVPQ6XQcO3Ys37qXX34Zo9HIhQsXAIiLi6NHjx6Ehobi5eVFtWrVePjhh6/5dyuIXq/nrrvuArC3WeS13axYsYKmTZtiNpv59NNPAUhKSuK5554jPDwck8lErVq1ePvtt/PtY1JSEv379ycgIIDAwED69etHUlJSvve/UpvAN998Q7NmzfD29qZChQrceeedrFy50l7f33//zYYNG+yntvL2oThqdAWJxRKSnJzM2bNnUUqRmJjIRx99RFpamsMvJWdZLBbat29P69atmTJlCt7e3vZ1Fy5coFOnTjz00EP07t2bBQsW8NRTT2E0Gnn88ccBSElJ4fPPP6d3794MGjSI1NRUvvjiC9q3b8+WLVto1KiRw/vNmzeP1NRUhgwZgk6n45133uHBBx/k8OHDeHp6Fljj1q1bad++PU2bNuXHH3+0/8JbvHgxAwYMYNasWfTv3/+K+7hp0yYuXLjA8OHDr/grrm/fvsyaNYulS5dyxx132JfHxcXRq1cvnnzySfr168esWbPo2bMny5cv59577wW0L4ZJkybxxBNP0KxZM1JSUti2bRs7duywb/P333/TqlUrqlatyqhRo/Dx8WHBggV0796dH374gQceeMChnqeffprKlSvz2muvkZ6eTufOnfH19WXBggW0bdvWYdv58+fToEEDe0N+Yd8rPj6eu+++G4vFYt9u5syZhfoF/dBDD/Hiiy+yYMECXnjhBYd1CxYs4L777qNChQrk5OTQvn17srOzeeaZZwgNDeXkyZMsXbqUpKQkAgICrvlelzt06BAAFStWtC/bv38/vXv3ZsiQIQwaNIibbrqJjIwM2rZty8mTJxkyZAgRERH88ccfvPzyy5w+fZr3338f0I4cunXrxqZNm3jyySepV68eixcvLvQpp3HjxvH666/TsmVL3njjDYxGI7Gxsaxdu5b77ruP999/n2eeeQZfX19eeeUVAEJCQgBKrMZip0SxmjVrlgLy3Uwmk5o9e7bDtuvWrVOAWrduncPyI0eOKEDNmjXLvqxfv34KUKNGjcr3nm3b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WrSI22+/na5du7JlyxaH9YXtIurt7c3IkSPZv3+/vXfGpX755Rdmz55N+/btHXoGgRaEl55/TklJ4auvvqJRo0aEhoYCcO7cOYfn+Pr6UqtWLfuo1uDgYO666y4+/fRTTp8+ne/9z5w5c9X6LxUdHU1QUBDz589n/vz5NGvWzOFUiDPv1alTJzZv3uzwuZ45c4a5c+cWup4ePXpgMBj49ttvWbhwIV26dHH40ZCSkmL/oZKnYcOG6PX6Yh/1+9BDDxETE8OKFSvyrUtKSrLX1alTJywWC9OnT7evt1qtfPTRR9d8j+7du6PX63njjTfydem89P8JHx+fArtzlkSNJUGOBErIsmXL2LdvH6CdK5w3bx5xcXGMGjXKfg42ICCAnj178tFHH6HT6ahZsyZLly61n1t0RlhYGG+//TZHjx6lTp06zJ8/n127djFz5kx7d84uXbqwaNEiHnjgATp37syRI0eYMWMG9evXtx+d3Aiz2czSpUu555576NixIxs2bLB3hSxsF1GAUaNGsXPnTt5++21iYmLo0aMHZrOZTZs28c0331CvXj3mzJmT73l16tRh4MCBbN26lZCQEL788ksSEhKYNWuWfZv69etz11130aRJE4KCgti2bRvff/89w4YNs28zbdo0WrduTcOGDRk0aBA1atQgISGBmJgY/v33X3bv3l2oz8PT05MHH3yQ7777jvT0dKZMmZJvm8K+14svvsjXX39Nhw4dGD58uL2LaGRkpP302LXkTV8ydepUUlNTHY5KANauXcuwYcPo2bMnderUwWKx8PXXX2MwGOjRo0eh3uN6vfDCC/z000906dKF/v3706RJE9LT0/nrr7/4/vvvOXr0KJUqVaJr1660atWKUaNGcfToUftYkMKMY6hVqxavvPIKb775Jm3atOHBBx/EZDKxdetWwsLC7ONSmjRpwvTp0xk/fjy1atUiODiYe+65p0RqLBEu65dUThTURdTLy0s1atRITZ8+3aErmlJKnTlzRvXo0UN5e3urChUqqCFDhqg9e/YU2EU0ryvm5dq2basaNGigtm3bplq0aKG8vLxUZGSk+vjjjx22s9lsauLEiSoyMlKZTCbVuHFjtXTpUtWvXz8VGRlp3y6vi+jkyZPzvRegxo4de9W6zp49q+rXr69CQ0NVXFycw+dS2O5xVqtVzZo1S7Vq1Ur5+/sr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JKB07culClN3aGgoiYmJDustFgvnz593630DCQGnGY1GmjRpwpo1a+zLbDYba9asoUWLFi6s7NqUUgwbNozFixezdu1aoqKiHNY3adIET09Ph33bv38/x48fd6t9a9euHX/99Re7du2y35o2bUqfPn3s90vDfgC0atUqXzfdAwcOEBkZCUBUVBShoaEO+5KSkkJsbKzb7UtGRka+i5cYDAZsNhtQuvblUoWpu0WLFiQlJbF9+3b7NmvXrsVms9G8efMSr9kprm6ZLo2+++47ZTKZ1OzZs9U///yjBg8erAIDA1V8fLyrS7uqp556SgUEBKj169er06dP228ZGRn2bZ588kkVERGh1q5dq7Zt26ZatGihWrRo4cKqC+fS3kFKlZ792LJli/Lw8FATJkxQcXFxau7cucrb21t988039m3eeustFRgYqH788Uf1559/qm7durlFt8rL9evXT1WtWtXeRXTRokWqUqVK6sUXX7Rv4677kpqaqnbu3Kl27typADV16lS1c+dOdezYsULX3aFDB9W4cWMVGxurNm3apGrXri1dRMuyjz76SEVERCij0aiaNWumNm/e7OqSrgko8DZr1iz7NpmZmerpp59WFSpUUN7e3uqBBx5Qp0+fdl3RhXR5CJSm/fj555/VzTffrEwmk6pbt66aOXOmw3qbzabGjBmjQkJClMlkUu3atVP79+93UbVXlpKSooYPH64iIiKUl5eXqlGjhnrllVdUdna2fRt33Zd169YV+P9Gv379lFKFq/vcuXOqd+/eytfXV/n7+6sBAwao1NRUF+yNc2QqaSGEKMekTUAIIcoxCQEhhCjHJASEEKIckxAQQohyTEJACCHKMQkBIYQoxyQEhBCiHJMQEEKIckxCQLiF6tWr8/7777u6jCJTGvdn9uzZDtNvv/766zRq1Mhl9YiSISEgitWJEyd4/PHHCQsLw2g0EhkZyfDhwzl37pyrS3Op119/HZ1OZ78FBATQpk0bNmzY4OrS7EaOHOkwaZoomyQERLE5fPgwTZs2JS4ujm+//ZaDBw8yY8YM+4yr58+fd1ltVqvVPrulqzRo0IDTp09z+vRpYmJiqF27Nl26dLFf8a245OTkFGo7X19fKlasWKy1CNeTEBDFZujQoRiNRlauXEnbtm2JiIigY8eOrF69mpMnT/LKK684bJ+amkrv3r3x8fGhatWqTJs2zb5OKcXrr79OREQEJpOJsLAwnn32Wfv67OxsRo4cSdWqVfHx8aF58+asX7/evj7vVMdPP/1E/fr1MZlMfP7553h5eeW77sDw4cO555577I83bdpEmzZtMJvNhIeH8+yzz5Kenm5fn5iYSNeuXTGbzURFRTF37txCfT4eHh6EhoYSGhpK/fr1eeONN0hLS7NfnhHg+PHjdOvWDV9fX/z9/XnooYcc5rU/dOgQ3bp1IyQkBF9fX26//XZWr17t8D7Vq1fnzTffpG/fvvj7+zN48GD7ZxIREYG3tzcPPPBAvqOzy08H9e/fn+7duzNlyhSqVKlCxYoVGTp0KLm5ufZtTp8+TefOne2fxbx58xxOjV3r7yhcwLXz14my6ty5c0qn06mJEycWuH7QoEGqQoUKymazKaWUioyMVH5+fmrSpElq//796sMPP1QGg0GtXLlSKaXUwoULlb+/v/r111/VsWPHVGxsrMNsm0888YRq2bKl2rhxozp48KCaPHmyMplM6sCBA0oppWbNmqU8PT1Vy5Yt1e+//6727dun0tLSVEhIiPr888/tr2OxWByWHTx4UPn4+Kj33ntPHThwQP3++++qcePGqn///vbndOzYUd16660qJiZGbdu2TbVs2VKZzWb13nvvXfHzGTt2rLr11lvtj7OystQbb7yhAgMDVXJyslJKKavVqho1aqRat26ttm3bpjZv3qyaNGmi2rZta3/erl271IwZM9Rff/2lDhw4oF599VXl5eVlnwI577P19/dXU6ZMUQcPHlQHDx5UmzdvVnq9Xr399ttq//796oMPPlCBgYEqICDgijX269dP+fv7qyeffFLt3btX/fzzz8rb29vh7xAdHa0aNWqkNm/erLZv367atm3r8Flc6+8oSp6EgCgWmzdvVoBavHhxgeunTp2qAJWQkKCU0r6oOnTo4LBNr169VMeOHZVSSr377ruqTp06KicnJ99rHTt2TBkMBnXy5EmH5e3atVMvv/yyUkoLAUDt2rXLYZvhw4ere+65x/54xYoVymQyqQsXLiillBo4cKAaPHiww3N+++03pdfrVWZmptq/f78C1JYtW+zr9+7dq4BrhoBer1c+Pj7Kx8dH6XQ65e/vr5YtW2bfZuXKlcpgMKjjx4/bl/3999/53u9yDRo0UB999JH9cWRkpOrevbvDNr1791ad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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plot_df = df_burbank[[\n", - " \"stop_id\",\n", - " \"stop_name\",\n", - " \"average_daily_boardings\",\n", - " \"predicted_boardings\"\n", - "]].dropna()\n", - "\n", - "\n", - "plt.figure(figsize=(4,4))\n", - "\n", - "plt.scatter(\n", - " plot_df[\"average_daily_boardings\"],\n", - " plot_df[\"predicted_boardings\"],\n", - " alpha=0.4\n", - ")\n", - "\n", - "max_val = plot_df[[\n", - " \"average_daily_boardings\",\n", - " \"predicted_boardings\"\n", - "]].max().max()\n", - "\n", - "plt.plot([0, max_val], [0, max_val], 'r--')\n", - "\n", - "plt.xlabel(\"Observed Boardings\")\n", - "plt.ylabel(\"Predicted Boardings\")\n", - "plt.title(\"Burbank: Observed vs Predicted\")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "738da3f3-7a8d-4816-8ed5-20791eb103e5", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAGJCAYAAACThGjuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWPdJREFUeJzt3Xd4VFX+x/H3zGRKekilhQ4CFlD6uggIUkQFRETFpYisu8Iq8ttdRXdFbLB2BURFBRsKUhekSEddEKQoKE2aoaaRnunn98c1AyEJZEKSm0m+r+eZh8ydyb3fGTKfe+bcc+8xKKUUQgghAo5R7wKEEEKUjQS4EEIEKAlwIYQIUBLgQggRoCTAhRAiQEmACyFEgJIAF0KIACUBLoQQAUoCXAghApQEeDnp3r0711xzjS7bHjlyJGFhYbpsu6oyGAyMGzdO7zIq3TPPPIPBYNC7DN1t3LgRg8HAxo0bfctGjhxJo0aNdKvpYsXV6K9qGeBz5szBYDAUusXHx9OjRw9Wrlypd3kBQc8dUnFcLhdvvfUWHTp0IDw8nLCwMDp06MBbb72Fy+XSuzxxke7duxf6/EVHR9OhQwc+/PBDvF6v3uX55cUXX2TJkiV6l1GsIL0LqEjPPvssjRs3RinF2bNnmTNnDrfeeivLli3jtttu07s8UUq5ubn079+fTZs2cdtttzFy5EiMRiOrVq3i0UcfZdGiRXz11VeEhobqXaq4QP369ZkyZQoAKSkpfPzxx4wePZqDBw8yderUSq9n1qxZZdp5vPjii9x1110MHDiw/Iu6QtU6wPv160f79u1990ePHk1CQgKff/55uQV4bm6uBEcFmzBhAps2bWLatGmFukX++te/MmPGDMaNG8ff//53Zs6cqWOVxavJfx+RkZHcf//9vvsPPfQQV111FdOnT+e5557DbDYX+R2v14vT6cRms5V7PcVtL9BVyy6UkkRFRREcHExQ0Pn9Vkn9UMeOHcNgMDBnzhzfsoK+5sOHD3PrrbcSHh7OsGHDCv3ejh07+MMf/kBwcDCNGzfmnXfeKfS40+nk6aefpl27dkRGRhIaGkrXrl3ZsGFDsdt/5ZVXeO+992jatClWq5UOHTqwffv2y77W3bt3ExcXR/fu3cnJyQEgMzOT/fv3k5mZWZq3q1Tefvttrr76aqxWK3Xr1mXs2LFkZGQUed6MGTNo0qQJwcHBdOzYkW+++Ybu3bvTvXv3S67/xIkTfPDBB9x8883F9mmPHTuWHj168P7773PixIkij3/22WdcddVV2Gw22rVrx+bNmws9np2dzfjx42nUqBFWq5X4+HhuueUWdu7cWeh533//PX379iUyMpKQkBC6devGd999V+g5Bf3Pv/zyC/fddx+1atXij3/8I6+88goGg4Hjx48XqW/ixIlYLBbOnTvn17YAvv32Wzp06IDNZqNp06a8++67l3wvC4wbN46wsDDy8vKKPHbvvfdSu3ZtPB4PAD/88AN9+vQhNjbW9zf9wAMPlGo7FwsJCaFz587k5uaSkpICnD9W8dlnn/n+jlatWgXAyZMneeCBB0hISMBqtXL11Vfz4YcfFlnviRMnGDhwIKGhocTHx/PYY4/hcDiKPK+4PnCv18ubb77Jtddei81mIy4ujr59+/LDDz/46svNzeWjjz7ydQeNHDnS9/vlXaO/qnULPDMzk9TUVJRSJCcnM23aNHJycgq1Cvzldrvp06eP74MZEhLie+zcuXPceuut3H333dx7773Mnz+fv/71r1gsFt8ffVZWFu+//z733nsvY8aMITs7mw8++IA+ffqwbds22rZtW2h7c+fOJTs7m4ceegiDwcBLL73EnXfeyZEjR0psUWzfvp0+ffrQvn17li5dSnBwMACLFy9m1KhRzJ49u9AfYVk988wzTJ48mV69evHXv/6VAwcOMHPmTLZv3853333nq2/mzJmMGzeOrl278thjj3Hs2DEGDhxIrVq1qF+//iW3sXLlSjweD8OHDy/xOcOHD2fDhg2sWrWKBx980Ld806ZNzJs3j0ceeQSr1crbb79N37592bZtm69//y9/+QsLFixg3LhxtG7dmrS0NL799lv27dvHDTfcAMD69evp168f7dq1Y9KkSRiNRmbPns3NN9/MN998Q8eOHQvVM2TIEJo3b86LL76IUorbbruNf/7zn8yfP59//OMfhZ47f/58evfuTa1atfza1p49e+jduzdxcXE888wzuN1uJk2aREJCwmX/34YOHcqMGTP46quvGDJkiG95Xl4ey5YtY+TIkZhMJpKTk33beOKJJ4iKiuLYsWMsWrTostsoyZEjRzCZTERFRfmWrV+/nvnz5zNu3DhiY2Np1KgRZ8+epXPnzr6Aj4uLY+XKlYwePZqsrCzGjx8P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+D6w2dnZ1K9fn7vuuos2bdoQFhbG2rVr2b59u299RqOR999/n379+nH11VczatQo6tWrx8mTJ9mwYQMREREsW7bssq8B8F3O4bXXXiM7O7tQd4W/25o8eTKrVq2ia9euPPzww7jdbqZNm8bVV1/t61K6nBtuuIFmzZrx1FNP4XA4itTz0Ucf8fbbbzNo0CCaNm1KdnY2s2bNIiIigltvvbVU2yirqVOnsmHDBjp16sSYMWNo3bo16enp7Ny5k7Vr15Keng5oB82nT5/O8OHD2bFjB3Xq1OGTTz4pNLy3JD169OBPf/oTb731FocOHaJv3754vV6++eYbevTo4TvvoF27dqxdu5bXXnuNunXr0rhxYzp16lQpNV5WmcevVGHFDSO02Wyqbdu2aubMmYWGCCmlVEpKiho8eLAKCQlRtWrVUg899JDau3dvscMIC4brXaxg2N0PP/ygunTpomw2m2rYsKGaPn16oed5vV714osvqoYNGyqr1aquv/56tXz58iJDnAqGEb788stFtgWoSZMmXbKu1NRU1bp1a1W7dm116NChQu9LaYcRXvweFtx69uzpe9706dNVy5YtldlsVgkJCeqvf/2rOnfuXJH1vfXWW77X3LFjR/Xdd9+pdu3aqb59+162FqW04Yivv/66ateunQoNDVUhISHqhhtuUG+88YZviObF79HYsWPVp59+qpo3b+57ry8csuVwONQ//vEP1aZNGxUeHq5CQ0NVmzZt1Ntvv11kfbt27VJ33nmniomJUVarVTVs2FDdfffdat26db7nFAwjTElJKfF1zJo1SwEqPDxc5efnF/uc0mxLKaU2bdqk2rVrpywWi2rSpIl65513fDWU1lNPPaUA1axZsyKP7dy5U917772qQYMGymq1qvj4eHXbbbcVGppZkssNQy1Q8P9UnLNnz6qxY8eqxMREZTabVe3atVXPnj3Ve++9V+h5x48fV3fccYcKCQlRsbGx6tFHH1WrVq267DBCpbRhvS+//LJq2bKlslgsKi4uTvXr10/t2LHD95z9+/erm266SQUHByug0JDC8q7RXwalLvqOJEQl8Hq9xMXFceeddzJr1iy9yxEiINWoPnChD7vdXqQv9eOPPyY9Pb1CD7QKUd1JC1xUuI0bN/LYY48xZMgQYmJi2LlzJx988AGtWrVix44dFT5mXYjqqlofxBRV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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(4,4))\n", - "\n", - "plt.scatter(\n", - " np.log1p(plot_df[\"average_daily_boardings\"]),\n", - " np.log1p(plot_df[\"predicted_boardings\"]),\n", - " alpha=0.4\n", - ")\n", - "\n", - "plt.plot(\n", - " [0, np.log1p(max_val)],\n", - " [0, np.log1p(max_val)],\n", - " 'r--'\n", - ")\n", - "\n", - "plt.xlabel(\"Log Observed\")\n", - "plt.ylabel(\"Log Predicted\")\n", - "plt.title(\"Burbank: Log Observed vs Predicted\")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b2a38663-61fb-4e98-aacf-6b0f61149ab2", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 5991043dacdc15685fa546f4a0a5f8d815a77c40 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Wed, 29 Apr 2026 22:42:54 +0000 Subject: [PATCH 16/21] burbank model changed to show rail connection stops --- ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb index e4db0d196..5ada95e8d 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb @@ -277,12 +277,7 @@ } ], "source": [ - "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)\n", - "# regress log_arrivals on n_routes\n", - "temp_model = sm.OLS(df_burbank[\"log_arrivals\"], sm.add_constant(df_burbank[\"n_routes\"])).fit()\n", - "\n", - "# residual = arrivals not explained by routes\n", - "df_burbank[\"arrivals_resid\"] = temp_model.resid" + "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)" ] }, { From 082dd99f7556d76b5d88d124f89ad43b5da57ebb Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 30 Apr 2026 17:24:01 +0000 Subject: [PATCH 17/21] file paths changed --- .../04_prepare_acs_data.ipynb | 0 .../05_process_lehd.ipynb | 0 .../06_data_processing.ipynb | 0 .../07_Model_exploration.ipynb | 0 .../Burbank_ridership.md | 0 .../Model_Exploration_Burbank.ipynb} | 151 ++++++++++-------- .../burbank_blue_new_stops.csv | 0 .../burbank_orange_new_stops.csv | 0 8 files changed, 83 insertions(+), 68 deletions(-) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2}/04_prepare_acs_data.ipynb (100%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2}/05_process_lehd.ipynb (100%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2}/06_data_processing.ipynb (100%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2}/07_Model_exploration.ipynb (100%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2/Burbank_Ridership_Exploration}/Burbank_ridership.md (100%) rename ahsc_grant/{ahsc_acs_2/08_Model_Exploration_Burbank.ipynb => ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb} (99%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2/Burbank_Ridership_Exploration}/burbank_blue_new_stops.csv (100%) rename ahsc_grant/{ahsc_acs_2 => ahsc_grant_cycle2/Burbank_Ridership_Exploration}/burbank_orange_new_stops.csv (100%) diff --git a/ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb b/ahsc_grant/ahsc_grant_cycle2/04_prepare_acs_data.ipynb similarity index 100% rename from ahsc_grant/ahsc_acs_2/04_prepare_acs_data.ipynb rename to ahsc_grant/ahsc_grant_cycle2/04_prepare_acs_data.ipynb diff --git a/ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb b/ahsc_grant/ahsc_grant_cycle2/05_process_lehd.ipynb similarity index 100% rename from ahsc_grant/ahsc_acs_2/05_process_lehd.ipynb rename to ahsc_grant/ahsc_grant_cycle2/05_process_lehd.ipynb diff --git a/ahsc_grant/ahsc_acs_2/06_data_processing.ipynb b/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb similarity index 100% rename from ahsc_grant/ahsc_acs_2/06_data_processing.ipynb rename to ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb diff --git a/ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb similarity index 100% rename from ahsc_grant/ahsc_acs_2/07_Model_exploration.ipynb rename to ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb diff --git a/ahsc_grant/ahsc_acs_2/Burbank_ridership.md b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Burbank_ridership.md similarity index 100% rename from ahsc_grant/ahsc_acs_2/Burbank_ridership.md rename to ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Burbank_ridership.md diff --git a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb similarity index 99% rename from ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb rename to ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb index 5ada95e8d..8a28a40bc 100644 --- a/ahsc_grant/ahsc_acs_2/08_Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb @@ -180,8 +180,8 @@ "Model Family: NegativeBinomial Df Model: 8\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -82687.\n", - "Date: Wed, 29 Apr 2026 Deviance: 38057.\n", - "Time: 22:37:44 Pearson chi2: 2.81e+05\n", + "Date: Thu, 30 Apr 2026 Deviance: 38057.\n", + "Time: 17:19:15 Pearson chi2: 2.81e+05\n", "No. Iterations: 54 Pseudo R-squ. (CS): 0.8323\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -261,12 +261,6 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " super().__setitem__(key, value)\n", "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", @@ -347,8 +341,8 @@ "Model Family: NegativeBinomial Df Model: 6\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -104.36\n", - "Date: Wed, 29 Apr 2026 Deviance: 26.045\n", - "Time: 22:37:44 Pearson chi2: 22.3\n", + "Date: Thu, 30 Apr 2026 Deviance: 26.045\n", + "Time: 17:19:15 Pearson chi2: 22.3\n", "No. Iterations: 17 Pseudo R-squ. (CS): 0.5379\n", "Covariance Type: nonrobust \n", "=============================================================================================\n", @@ -434,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", "metadata": {}, "outputs": [], @@ -444,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "75df8b20-dee7-420d-9231-229db9d53915", "metadata": {}, "outputs": [], @@ -469,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "98205773-013c-45d4-a8bc-302d8a33e97f", "metadata": {}, "outputs": [], @@ -480,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "b3165da9-4c91-44f2-bad2-941995d22b73", "metadata": {}, "outputs": [], @@ -531,7 +525,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", "metadata": {}, "outputs": [], @@ -542,7 +536,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "6210a31b-85be-44a6-8cce-9569778e094d", "metadata": {}, "outputs": [], @@ -613,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", "metadata": {}, "outputs": [], @@ -623,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", "metadata": {}, "outputs": [], @@ -659,7 +653,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", "metadata": {}, "outputs": [ @@ -777,7 +771,7 @@ "14 POINT (-118.34876716762236 34.19656151035557) new_5 " ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -789,7 +783,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", "metadata": {}, "outputs": [ @@ -907,7 +901,7 @@ "6 POINT (-118.30550179211235 34.16893683695737) new_5 " ] }, - "execution_count": 23, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -919,7 +913,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "id": "d3b5d469-48b5-49df-ae91-315466705ddb", "metadata": {}, "outputs": [], @@ -939,7 +933,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", "metadata": {}, "outputs": [], @@ -953,7 +947,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", "metadata": {}, "outputs": [], @@ -964,7 +958,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "id": "174076a2-a975-41d8-88d3-ca874351d57a", "metadata": {}, "outputs": [], @@ -982,7 +976,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", "metadata": {}, "outputs": [], @@ -1000,7 +994,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "id": "bbf7b71a-c05a-4651-955b-484947ced81c", "metadata": {}, "outputs": [ @@ -1669,7 +1663,7 @@ "4 435.126571 356.308126 1734.412075 " ] }, - "execution_count": 29, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1680,7 +1674,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", "metadata": {}, "outputs": [], @@ -1702,7 +1696,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "id": "36e31d14-b88f-4b54-849a-615f5755f369", "metadata": {}, "outputs": [], @@ -1724,7 +1718,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", "metadata": {}, "outputs": [], @@ -1738,7 +1732,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", "metadata": {}, "outputs": [ @@ -1943,7 +1937,7 @@ "4 0.0 None 80120 " ] }, - "execution_count": 33, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1954,7 +1948,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "id": "4ca8d618-a539-41ff-980c-45a628569ce6", "metadata": {}, "outputs": [], @@ -1974,7 +1968,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", "metadata": {}, "outputs": [ @@ -2191,7 +2185,7 @@ "4 0.0 None 80120 [801] 1 " ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2202,7 +2196,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", "metadata": {}, "outputs": [], @@ -2219,7 +2213,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "id": "935a70bd-867a-49b2-867b-12a1b4f71635", "metadata": {}, "outputs": [], @@ -2232,7 +2226,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "id": "da409a53-ae7b-4f11-a157-d76388882c32", "metadata": {}, "outputs": [], @@ -2251,7 +2245,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", "metadata": {}, "outputs": [], @@ -2271,7 +2265,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "id": "e15d37f1-42de-441c-b46c-2ed73103df13", "metadata": {}, "outputs": [], @@ -2290,7 +2284,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", "metadata": {}, "outputs": [ @@ -2444,7 +2438,7 @@ "14 Empire / Valpreda 1249 2 " ] }, - "execution_count": 41, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -2455,7 +2449,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "id": "51ba1872-0315-4e91-ac93-1e4512191513", "metadata": {}, "outputs": [ @@ -2631,7 +2625,7 @@ "3 San Fernando / Alameda 5453 1 " ] }, - "execution_count": 42, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2642,22 +2636,22 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing')]" ] }, - "execution_count": 43, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -2672,7 +2666,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 43, "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", "metadata": {}, "outputs": [], @@ -2683,7 +2677,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 44, "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", "metadata": {}, "outputs": [], @@ -2696,7 +2690,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", "metadata": {}, "outputs": [], @@ -2712,7 +2706,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", "metadata": {}, "outputs": [], @@ -2727,7 +2721,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "id": "f706ac72-936a-46fa-8994-908e72968689", "metadata": {}, "outputs": [], @@ -2761,7 +2755,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "id": "93666c83-c8be-4e00-b455-005fa305e6aa", "metadata": {}, "outputs": [], @@ -2783,7 +2777,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", "metadata": {}, "outputs": [ @@ -2988,7 +2982,7 @@ "65 1 43 " ] }, - "execution_count": 50, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -2999,7 +2993,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 50, "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", "metadata": {}, "outputs": [], @@ -3037,7 +3031,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", "metadata": {}, "outputs": [], @@ -3069,7 +3063,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", "metadata": {}, "outputs": [], @@ -3099,7 +3093,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 53, "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", "metadata": {}, "outputs": [], @@ -3111,7 +3105,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 54, "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", "metadata": {}, "outputs": [ @@ -3377,7 +3371,7 @@ "9 1.100656 1.153660 0.053004 " ] }, - "execution_count": 55, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -3389,7 +3383,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 55, "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", "metadata": {}, "outputs": [ @@ -3406,6 +3400,27 @@ "print(ridership_change)" ] }, + { + "cell_type": "code", + "execution_count": 56, + "id": "3c29a0f4-59dd-492f-a9ae-a76bd1681f32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.4997349009155052" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_grouped[\"pred_scenario\"].sum() / df_grouped[\"pred_baseline\"].sum()" + ] + }, { "cell_type": "markdown", "id": "79bdc190-3bf0-4fc8-ac41-4df7eefe99ee", diff --git a/ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_blue_new_stops.csv similarity index 100% rename from ahsc_grant/ahsc_acs_2/burbank_blue_new_stops.csv rename to ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_blue_new_stops.csv diff --git a/ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_orange_new_stops.csv similarity index 100% rename from ahsc_grant/ahsc_acs_2/burbank_orange_new_stops.csv rename to ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_orange_new_stops.csv From 3525c999c5325675844698ef0b5964b1e4cb0723 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Thu, 30 Apr 2026 19:59:11 +0000 Subject: [PATCH 18/21] new burbank ridership model only with landuse --- .../Model_Exploration_Burbank.ipynb | 341 +++++++++++------- 1 file changed, 208 insertions(+), 133 deletions(-) diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb index 8a28a40bc..cad639eaa 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb @@ -181,7 +181,7 @@ "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -82687.\n", "Date: Thu, 30 Apr 2026 Deviance: 38057.\n", - "Time: 17:19:15 Pearson chi2: 2.81e+05\n", + "Time: 18:39:00 Pearson chi2: 2.81e+05\n", "No. Iterations: 54 Pseudo R-squ. (CS): 0.8323\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", @@ -312,13 +312,14 @@ "\n", "\n", "X = df_burbank[[\n", - " \"n_routes\",\n", - " \"log_arrivals\",\n", + " # \"n_routes\",\n", + " # \"log_arrivals\",\n", " \"total_pop_adj\",\n", " \"workers_with_no_car_adj\",\n", " \"total_seniors_adj\",\n", " \"inc_total_lowincome_adj\",\n", - " \"has_rail_connection_dummy\"\n", + " \"has_rail_connection_dummy\",\n", + " \"total_youth_adj\"\n", "]].copy()\n", "\n", "X = sm.add_constant(X, has_constant=\"add\")" @@ -327,6 +328,39 @@ { "cell_type": "code", "execution_count": 10, + "id": "720b9284-2284-4470-a89e-f27846562f9c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", + " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", + " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", + " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", + " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", + " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", + " 'total_youth_adj', 'ALAND_adj', 'log_arrivals',\n", + " 'has_rail_connection_dummy'],\n", + " dtype='object')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_burbank.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "id": "af3e0f0a-7ac4-4b36-8cdb-0785f620df79", "metadata": {}, "outputs": [ @@ -340,22 +374,21 @@ "Model: GLM Df Residuals: 38\n", "Model Family: NegativeBinomial Df Model: 6\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -104.36\n", - "Date: Thu, 30 Apr 2026 Deviance: 26.045\n", - "Time: 17:19:15 Pearson chi2: 22.3\n", - "No. Iterations: 17 Pseudo R-squ. (CS): 0.5379\n", + "Method: IRLS Log-Likelihood: -104.48\n", + "Date: Thu, 30 Apr 2026 Deviance: 26.285\n", + "Time: 18:39:01 Pearson chi2: 22.4\n", + "No. Iterations: 16 Pseudo R-squ. (CS): 0.5354\n", "Covariance Type: nonrobust \n", "=============================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "---------------------------------------------------------------------------------------------\n", - "const -3.2897 3.978 -0.827 0.408 -11.087 4.508\n", - "n_routes -3.2897 3.978 -0.827 0.408 -11.087 4.508\n", - "log_arrivals 1.6833 2.046 0.823 0.411 -2.327 5.693\n", - "total_pop_adj 0.0007 0.001 1.307 0.191 -0.000 0.002\n", - "workers_with_no_car_adj 0.0110 0.005 2.261 0.024 0.001 0.021\n", - "total_seniors_adj 0.0016 0.001 1.674 0.094 -0.000 0.004\n", - "inc_total_lowincome_adj -0.0020 0.001 -2.215 0.027 -0.004 -0.000\n", - "has_rail_connection_dummy 1.9216 1.135 1.694 0.090 -0.302 4.145\n", + "const 0.0098 0.798 0.012 0.990 -1.554 1.573\n", + "total_pop_adj 0.0005 0.001 0.653 0.514 -0.001 0.002\n", + "workers_with_no_car_adj 0.0097 0.006 1.656 0.098 -0.002 0.021\n", + "total_seniors_adj 0.0018 0.001 1.309 0.191 -0.001 0.004\n", + "inc_total_lowincome_adj -0.0018 0.001 -1.868 0.062 -0.004 8.87e-05\n", + "has_rail_connection_dummy 2.8698 0.678 4.233 0.000 1.541 4.199\n", + "total_youth_adj 0.0010 0.004 0.281 0.779 -0.006 0.008\n", "=============================================================================================\n" ] }, @@ -380,7 +413,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "75d04dd7-b987-48d0-823d-9e29c6d71341", "metadata": {}, "outputs": [], @@ -394,13 +427,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "0308ac20-e164-4aa3-a22e-63ce66549980", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAIjCAYAAACzhTfbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjeBJREFUeJzs3Xt8zvX/x/HHtfN5M2LmMIfIISHi5xByPudQcqjQuQiJSn0dI9GB9CWVQoVKSSFKiOR87EAOxYiYYmZm27Vd798f13dXLtewse26tj3vt9tu9nl/Ptfnel2vXbu89v583u+3xRhjEBERERGP4+XuAEREREQkcyrURERERDyUCjURERERD6VCTURERMRDqVATERER8VAq1EREREQ8lAo1EREREQ+lQk1ERETEQ6lQExEREfFQKtQk14wZMwaLxcLff//t7lDynMViYcyYMe4Ow+2aNWtGs2bNHNuHDx/GYrEwZ84ct8V0qUtjvJLExESKFy/OvHnzcjcoN+jXrx/lypVzdxhX9P3332OxWPj+++/dHcoVZec9dan8+tnRs2dPevTo4e4wCiQVapItv/76K/feey+lSpXC39+f6Oho+vTpw6+//uru0OQSGf+pZXz5+vpSoUIF7r//fv744w93h5ctGzZsYMyYMcTHx7s1jjfeeIPQ0FB69uzpaMv4g6REiRIkJSW5PKZcuXJ07NgxL8O8rOPHjzNmzBh27drl7lAc+vXr5/Q+9fHxoUyZMvTs2ZM9e/a4OzyPlpCQwIQJE6hbty7h4eH4+/sTExPDPffcw7Jly5yOzfg8+Oyzz654zoyfw0MPPZTp/hdeeMFxzMV/hD/77LN8/vnn7N69+/pfmDjxcXcAkn8sWrSIXr16ERkZyYMPPkj58uU5fPgw7733Hp999hkff/wxXbt2dXeYcolBgwZx2223YbVa2bFjB++88w7Lli3j559/Jjo6Ok9jiYmJ4cKFC/j6+mbrcRs2bGDs2LH069ePiIiI3AnuKqxWK2+88QZPPfUU3t7eLvvj4uJ46623ePrpp90QXdYcP36csWPHUq5cOWrVquW0791338Vms7klLn9/f2bNmgVAWloav//+OzNnzmTFihXs2bPH8T5t0qQJFy5cwM/Pzy1xZtW3336b689x8OBB2rRpQ2xsLF27duX+++8nJCSEo0eP8vXXX9OxY0c++OAD7rvvvmyfOyAggM8//5wZM2a45HrBggUEBASQnJzs1F67dm3q1q3La6+9xgcffHBdr02cqVCTLPn999+57777qFChAuvWreOGG25w7Bs8eDC333479913Hz/99BMVKlRwY6SubDYbqampBAQEuDsUt7j99tu56667AOjfvz+VK1dm0KBBzJ07lxEjRmT6mPPnzxMcHJzjsVgslnz7c1i6dCmnTp267OWdWrVq8corr/DEE08QGBiYx9Fdv+wWzznJx8eHe++916nt//7v/+jYsSPLli3j4YcfBsDLyytfvH9yu5BMS0uja9eunDx5krVr19KoUSOn/aNHj+bbb78lPT39ms7ftm1bvvrqK5YvX86dd97paN+wYQOHDh2ie/fufP755y6P69GjB6NHj2bGjBmEhIRc03OLK136lCx55ZVXSEpK4p133nEq0gCKFSvG22+/zfnz55k8ebLLY//++2969OhBWFgYRYsWZfDgwS5/ja1cuZLGjRsTERFBSEgIN910E88//7zTMSkpKYwePZobb7wRf39/ypQpwzPPPENKSorTcRaLhYEDBzJv3jyqV6+Ov78/S5YsITIykv79+7vEl5CQQEBAAMOGDcv2c6WkpPDUU09xww03EBoaSufOnfnzzz+vms+TJ0/i4+PD2LFjXfbt27cPi8XCf//7X8DekzN27FgqVapEQEAARYsWpXHjxqxcufKqz5OZ5s2bA3Do0CHg30t3e/bsoXfv3hQpUoTGjRs7jv/oo4+oU6cOgYGBREZG0rNnT44ePepy3nfeeYeKFSsSGBhIvXr1+OGHH1yOudw9ar/99hs9evTghhtuIDAwkJtuuokXXnjBEd/w4cMBKF++vOOyy+HDh3MlxstZvHgx5cqVo2LFipnuHzVqFCdPnuStt9666rlsNhtTp06levXqBAQEUKJECR599FHOnDnjctyYMWOIjo4mKCiIO+64gz179lCuXDn69evnOO706dMMGzaMGjVqEBISQlhYGO3atXO6DPX9999z2223AfaCPSOPGT+Li+9Rs1qtufL7kh1RUVGAvYi7+DVceo9as2bNuPnmm9mzZw933HEHQUFBlCpVKtPPori4OB588EFKlChBQEAANWvWZO7cuU7HZLxHX331VaZPn06FChUICgqidevWHD16FGMML774IqVLlyYwMJA777yT06dPO53j0nvUUlNTGTVqFHXq1CE8PJzg4GBuv/121qxZc025WbhwIb/88gsjR450KdIytG7dmnbt2l3T+UuVKkWTJk2YP3++U/u8efOoUaMGN998c6aPa9WqFefPn7/mzybJnHrUJEuWLFlCuXLluP322zPd36RJE8qVK+dyXwTY/8oqV64cEydOZNOmTUybNo0zZ844usd//fVXOnbsyC233MK4cePw9/fn4MGD/Pjjj45z2Gw2OnfuzPr163nkkUeoWrUqP//8M1OmTGH//v0sXrzY6TlXr17Np59+ysCBAylWrBiVKlWia9euLFq0iLffftvpL97FixeTkpLiuO8oO8/10EMP8dFHH9G7d28aNmzI6tWr6dChw1XzWaJECZo2bcqnn37K6NGjnfZ98skneHt7c/fddwP2QmXixIk89NBD1KtXj4SEBLZt28aOHTto1arVVZ/rUr///jsARYsWdWq/++67qVSpEi+99BLGGAAmTJjAyJEj6dGjBw899BCnTp3izTffpEmTJuzcudNxGfK9997j0UcfpWHDhgwZMoQ//viDzp07ExkZSZkyZa4Yz08//cTtt9+Or68vjzzyCOXKleP3339nyZIlTJgwgW7durF//34WLFjAlClTKFasGIDjD4a8iBHsvQm33nrrZffffvvtNG/enMmTJ/P4449fsVft0UcfZc6cOfTv359BgwZx6NAh/vvf/7Jz505+/PFHR+/WiBEjmDx5Mp06daJNmzbs3r2bNm3auPyh88cff7B48WLuvvtuypcvz8mTJ3n77bdp2rSp49Jh1apVGTduHKNGjeKRRx5x/C43bNjQJT5fX99c+X25koz7ndLT0/njjz949tlnKVq0aJbu7ztz5gxt27alW7du9OjRg88++4xnn32WGjVqOIqVCxcu0KxZMw4ePMjAgQMpX748CxcupF+/fsTHxzN48GCnc86bN4/U1FSefPJJTp8+zeTJk+nRowfNmzfn+++/59lnn+XgwYO8+eabDBs2jPfff/+y8SUkJDBr1ix69erFww8/zLlz53jvvfdo06YNW7ZscbkMfTVLliwBcOmFzEm9e/dm8ODBJCYmEhISQlpaGgsXLmTo0KEu778M1apVIzAwkB9//FG3weQkI3IV8fHxBjB33nnnFY/r3LmzAUxCQoIxxpjRo0cbwHTu3NnpuCeeeMIAZvfu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s2LFCsdABBHxUMbA229D69ZQoYK97b773BuTiIiHueZ71PJKx44d6dix42X3WywWxo0bx7hx4/IwKhG5LmlpMGQITJ8OVavC1q0QHOzuqEREPE6WCrVu3bpl+YSLFi265mBEpBBISIB77oEVK8Bigf79tV6niMhlZKlQCw8Pd3xvjOGLL74gPDycunXrArB9+3bi4+OzVdCJSCEUGwsdO8Ivv0BgIMybB127ujsqERGPlaVC7eIlnJ599ll69OjBzJkz8fb2BiA9PZ0nnngiV+YgE5ECYutW6NQJTp6EqChYsgT+98eeiIhkLtuLsr///vsMGzbMUaQBeHt7M3ToUN5///0cDU5ECghjYPhwe5F2yy2wZYuKNBGRLMh2oZaWlsZvv/3m0v7bb79hs9lyJCgRKWAsFvj4Y3joIVi/HsqUcXdEIiL5QrZHffbv358HH3yQ33//nXr16gGwefNmXn75Zfr375/jAYpIPpWaCsuXw5132rejouDdd90bk4hIPpPtQu3VV18lKiqK1157jb/++guwL/U0fPhwnn766RwPUETyodOnoXt3+P57+OgjuGjuQxERybpsF2peXl4888wzPPPMMyQkJABoEIGI/OvgQejQAfbvh5AQiIx0d0QiIvlWtu9RA/t9at999x0LFixwLBt1/PhxEhMTczQ4EclnfvgB6te3F2llysCPP0K7du6OSkQk38p2j1psbCxt27blyJEjpKSk0KpVK0JDQ5k0aRIpKSnMnDkzN+IUEU/34Yfw4IP2hdRvuw2++sp+X5qIiFyzbPeoDR48mLp163LmzBkCAwMd7V27dmXVqlU5GpyI5BO7d8P999uLtLvust+bpiJNROS6ZbtH7YcffmDDhg34+fk5tZcrV45jx47lWGAiko/UrAkvvAA2G4wfD17XdFeFiIhcItuFms1mIz093aX9zz//JDQ0NEeCEpF8IC7O/m/x4vZ/X3zRPl+aiIjkmGz/2du6dWumTp3q2LZYLCQmJjJ69Gjat2+fk7GJiKfaswf+7//sc6RduGBvU5EmIpLjrmketbZt21KtWjWSk5Pp3bs3Bw4coFixYixYsCA3YhQRT/Ldd/b70M6etRdncXEQE+PuqERECqRsF2plypRh9+7dfPLJJ+zevZvExEQefPBB+vTp4zS4QEQKoHfegSeegPR0aNwYvvgCihVzd1Qi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AwcOuDHi3JWens7IkSMpX748gYGBVKxYkRdffNFpXcCCnpN169bRqVMnoqOjsVgsLF682Gl/Vl7/6dOn6dOnD2FhYURERPDggw+SmJiYh68iZ10pJ1arlWeffZYaNWoQHBxMdHQ0999/P8ePH3c6R2HKyaUee+wxLBYLU6dOdWr39JyoUMtln3zyCUOHDmX06NHs2LGDmjVr0qZNG+Li4twdWq5bu3YtAwYMYNOmTaxcuRKr1Urr1q05f/6845innnqKJUuWsHDhQtauXcvx48fp1q2bG6POO1u3buXtt9/mlltucWovbDk5c+YMjRo1wtfXl+XLl7Nnzx5ee+01ihQp4jhm8uTJTJs2jZkzZ7J582aCg4Np06YNycnJbow890yaNIm33nqL//73v+zdu5dJkyYxefJk3nzzTccxBT0n58+fp2bNmkyfPj3T/Vl5/X369OHXX39l5cqVLF26lHXr1vHII4/k1UvIcVfKSVJSEjt27GDkyJHs2LGDRYsWsW/fPjp37ux0XGHKycW++OILNm3aRHR0tMs+j8+JkVxVr149M2DAAMd2enq6iY6ONhMnTnRjVO4RFxdnALN27VpjjDHx8fHG19fXLFy40HHM3r17DWA2btzorjDzxLlz50ylSpXMypUrTdOmTc3gwYONMYUzJ88++6xp3LjxZffbbDYTFRVlXnnlFUdbfHy88ff3NwsWLMiLEPNchw4dzAMPPODU1q1bN9OnTx9jTOHLCWC++OILx3ZWXv+ePXsMYLZu3eo4Zvny5cZisZhjx47lWey55dKcZGbLli0GMLGxscaYwpuTP//805QqVcr88ssvJiYmxkyZMsWxLz/kRD1quSg1NZXt27fTsmVLR5uXlxctW7Zk48aNbozMPc6ePQtAZGQkANu3b8dqtTrlp0qVKpQtW7bA52fAgAF06NDB6bVD4czJV199Rd26dbn77rspXrw4tWvX5t1333XsP3ToECdOnHDKSXh4OPXr1y+wOWnYsCGrVq1i//79AOzevZv169fTrl07oHDm5GJZef0bN24kIiKCunXrOo5p2bIlXl5ebN68Oc9jdoezZ89isViIiIgACmdObDYb9913H8OHD6d69eou+/NDTrQoey76+++/SU9Pp0SJEk7tJUqU4LfffnNTVO5hs9kYMmQIjRo14uabbwbgxIkT+Pn5OT5EMpQoUYITJ064Icq88fHHH7Njxw62bt3qsq8w5uSPP/7grbfeYujQoTz//PNs3bqVQYMG4efnR9++fR2vO7Pfo4Kak+eee46EhASqVKmCt7c36enpTJgwgT59+gAUypxcLCuv/8SJExQvXtxpv4+PD5GRkYUiR8nJyTz77LP06tXLsQh5YczJpEmT8PHxYdCgQZnuzw85UaEmeWLAgAH88ssvrF+/3t2huNXRo0cZPHgwK1euJCAgwN3heASbzUbdunV56aWXAKhduza//PILM2fOpG/fvm6Ozj0+/fRT5s2bx/z586levTq7du1iyJAhREdHF9qcSNZZrVZ69OiBMYa33nrL3eG4zfbt23njjTfYsWMHFovF3eFcM136zEXFihXD29vbZcTeyZMniYqKclNUeW/gwIEsXbqUNWvWULp0aUd7VFQUqampxMfHOx1fkPOzfft24uLiuPXWW/Hx8cHHx4e1a9cybdo0fHx8KFGiRKHLScmSJalWrZpTW9WqVTly5AiA43UXpt+j4cOH89xzz9GzZ09q1KjBfffdx1NPPcXEiROBwpmTi2Xl9UdFRbkM2kpLS+P06dMFOkcZRVpsbCwrV6509KZB4cvJDz/8QFxcHGXLlnV83sbGxvL0009Trlw5IH/kRIVaLvLz86NOnTqsWrXK0Waz2Vi1ahUNGjRwY2R5wxjDwIED+eKLL1i9ejXly5d32l+nTh18fX2d8rNv3z6OHDlSYPPTokULfv75Z3bt2uX4qlu3Ln369HF8X9hy0qhRI5dpW/bv309MTAwA5cuXJyoqyiknCQkJbN68ucDmJCkpCS8v549nb29vbDYbUDhzcrGsvP4GDRoQHx/P9u3bHcesXr0am81G/fr18zzmvJBRpB04cIDvvvuOokWLOu0vbDm57777+Omnn5w+b6Ojoxk+fDjffPMNkE9y4u7RDAXdxx9/bPz9/c2cOXPMnj17zCOPPGIiIiLMiRMn3B1arnv88cdNeHi4+f77781ff/3l+EpKSnIc89hjj5myZcua1atXm23btpkGDRqYBg0auDHqvHfxqE9jCl9OtmzZYnx8fMyECRPMgQMHzLx580xQUJD56KOPHMe8/PLLJiIiwnz55Zfmp59+MnfeeacpX768uXDhghsjzz19+/Y1pUqVMkuXLjWHDh0yixYtMsWKFTPPPPOM45iCnpNz586ZnTt3mp07dxrAvP7662bnzp2OEYxZef1t27Y1tWvXNps3bzbr1683lSpVMr169XLXS7puV8pJamqq6dy5syldurTZtWuX02duSkqK4xyFKSeZuXTUpzGenxMVanngzTffNGXLljV+fn6mXr16ZtOmTe4OKU8AmX7Nnj3bccyFCxfME088YYoUKWKCgoJM165dzV9//eW+oN3g0kKtMOZkyZIl5uabbzb+/v6mSpUq5p133nHab7PZzMiRI02JEiWMv7+/adGihdm3b5+bos19CQkJZvDgwaZs2bImICDAVKhQwbzwwgtO/+EW9JysWbMm08+Pvn37GmOy9vr/+ecf06tXLxMSEmLCwsJM//79zblz59zwanLGlXJy6NChy37mrlmzxnGOwpSTzGRWqHl6TizGXDTVtYiIiIh4DN2jJiIiIuKhVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSYiIiLioVSoiYiIiHgoFWoiIiIiHkqFmoiIiIiHUqEm4kHKlSvH1KlT3R1Gjilor8cT9evXjy5duji2mzVrxpAhQ9wWT26xWCwsXrwYgMOHD2OxWNi1a5dbYxLJCyrURPLA0aNHeeCBB4iOjsbPz4+YmBgGDx7MP//84+7QPMKff/6Jn58fN998s7tDyRPlypXDYrFgsVgIDAykXLly9OjRg9WrV2f7XG+88QZz5szJsdgyiqCMLz8/P2688UbGjx+PpyxkU6ZMGf76669C836Rwk2Fmkgu++OPP6hbty4HDhxgwYIFHDx4kJkzZ7Jq1SoaNGjA6dOn3RZbeno6NpvNbc+fYc6cOfTo0YOEhAQ2b96c689ntVpz/TmuZty4cfz111/s27ePDz74gIiICFq2bMmECROydZ7w8HAiIiJyPL7vvvuOv/76iwMHDjB27FgmTJjA+++/n+PPc7HU1NQsHeft7U1UVBQ+Pj65Go+IJ1ChJpLLBgwYgJ+fH99++y1NmzalbNmytGvXju+++45jx47xwgsvOB1/7tw5evXqRXBwMKVKlWL69OmOfcYYxowZQ9myZfH39yc6OppBgwY59qekpDBs2DBKlSpFcHAw9evX5/vvv3fsnzNnDhEREXz11VdUq1YNf39/Zs2aRUBAAPHx8U5xDB48mObNmzu2169fz+23305gYCBlypRh0KBBnD9/3rE/Li6OTp06ERgYSPny5Zk3b16W8mOMYfbs2dx333307t2b9957z7Hv+eefp379+i6PqVmzJuPGjXNsz5o1i6pVqxIQEECVKlWYMWOGY19GD9Enn3xC06ZNCQgIYN68efzzzz/06tWLUqVKERQURI0aNViwYIHT85w7d44+ffoQHBxMyZIlmTJlisulxavl/HJCQ0OJioqibNmyNGnShHfeeYeRI0cyatQo9u3bB9gL6QcffJDy5csTGBjITTfdxBtvvOF0nksvfV5s3LhxmfY61apVi5EjR14xvqJFixIVFUVMTAx9+vShUaNG7Nixw7HfZrMxbtw4Spcujb+/P7Vq1WLFihVO53j22WepXLkyQUFBVKhQgZEjRzoVyWPGjKFWrVrMmjWL8uXLExAQAMCBAwdo0qQJAQEBVKtWjZUrVzqd99JLn99//z0Wi4VVq1ZRt25dgoKCaNiwoSOPGcaPH0/x4sUJDQ3loYce4rnnnqNWrVqO/d9//z316tUjODiYiIgIGjVqRGxs7BXzJJLr3LokvEgB988//xiLxWJeeumlTPc//PDDpkiRIsZmsxljjImJiTGhoaFm4sSJZt++fWbatGnG29vbfPvtt8YYYxYuXGjCwsLM119/bWJjY83mzZvNO++84zjfQw89ZBo2bGjWrVtnDh48aF555RXj7+9v9u/fb4wxZvbs2cbX19c0bNjQ/Pjjj+a3334ziYmJpkSJEmbWrFmO86SlpTm1HTx40AQHB5spU6aY/fv3mx9//NHUrl3b9OvXz/GYdu3amZo1a5qNGzeabdu2mYYNG5rAwEAzZcqUK+Zo1apVJioqyqSlpZmff/7ZhIaGmsTERGOMMb/88osBzMGDBx3HZ7QdOHDAGGPMRx99ZEqWLGk+//xz88cff5jPP//cREZGmjlz5hhjjDl06JABTLly5RzHHD9+3Pz555/mlVdeMTt37jS///67I9ebN292ymdMTIz57rvvzM8//2y6du1qQkNDzeDBg7Oc88zExMRkmpeM98ukSZOMMcakpqaaUaNGma1bt5o//vjDfPTRRyYoKMh88sknjsf07dvX3HnnnY7tpk2bOuI7evSo8fLyMlu2bHHs37Fjh7FYLOb333/PNLaMfO3cudPRtnXrVhMREWHmzp3raHv99ddNWFiYWbBggfntt9/MM888Y3x9fZ1e94svvmh+/PFHc+jQIfPVV1+ZEiVK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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAIjCAYAAACzhTfbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiwtJREFUeJzs3Xt8zvX/x/HHtfN5M8yMGYlQQsTPIYScz0oOFTophKSkvs6kczooSaFyLilESaJyJjo4RyNyCDMztmu73r8/rnZx2bCLzXVte95vt91cn/fnc32u1/XatXnt/fm832+LMcYgIiIiIh7Hy90BiIiIiEjWVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSYiIiLioVSoiYiIiHgoFWoiIiIiHkqFmoiIiIiHUqEmIiIi4qFUqEmuGTlyJBaLhX///dfdoVx3FouFkSNHujsMt2vYsCENGzZ0bP/1119YLBamTZvmtpgudnGMl5OUlERUVBQzZszI3aDcoGfPnpQuXdrdYVzWDz/8gMVi4YcffnB3KJflymfqYnn1d0eXLl3o3Lmzu8PIl1SoiUv++OMP7rvvPkqUKIG/vz8xMTF0796dP/74w92hyUUy/lPL+PL19eWGG27ggQceYO/eve4OzyWrV69m5MiRJCQkuDWON998k9DQULp06eJoy/iDpFixYiQnJ2d6TunSpWnduvX1DPOSDh06xMiRI9myZYu7Q3Ho2bOn0+fUx8eH2NhYunTpwrZt29wdnkdLTExk3Lhx1KhRg/DwcPz9/YmLi+Pee+9l8eLFTsdm/D747LPPLnvOjO/Dww8/nOX+559/3nHMhX+EDxkyhM8//5ytW7de+xsTJz7uDkDyjvnz59O1a1ciIyN56KGHKFOmDH/99Rcffvghn332GbNnz6ZDhw7uDlMu0r9/f26//XasViubN29m8uTJLF68mN9++42YmJjrGktcXBxnz57F19fXpeetXr2aUaNG0bNnTyIiInInuCuwWq28+eabPPnkk3h7e2faf/ToUd577z2eeuopN0SXPYcOHWLUqFGULl2aqlWrOu374IMPsNlsbonL39+fKVOmAJCWlsaff/7JpEmTWLp0Kdu2bXN8TuvXr8/Zs2fx8/NzS5zZ9e233+b6a+zZs4dmzZoRHx9Phw4deOCBBwgJCeHAgQN8/fXXtG7dmo8//pj777/f5XMHBATw+eef8+6772bK9axZswgICODcuXNO7dWqVaNGjRq89tprfPzxx9f03sSZCjXJlj///JP777+fG264gVWrVlG0aFHHvgEDBnDHHXdw//338+uvv3LDDTe4MdLMbDYbqampBAQEuDsUt7jjjju4++67AejVqxfly5enf//+TJ8+naFDh2b5nDNnzhAcHJzjsVgsljz7fVi0aBHHjh275OWdqlWr8sorr9CnTx8CAwOvc3TXztXiOSf5+Phw3333ObX93//9H61bt2bx4sU88sgjAHh5eeWJz09uF5JpaWl06NCBI0eOsHLlSurWreu0f8SIEXz77bekp6df1fmbN2/OV199xZIlS2jXrp2jffXq1ezbt49OnTrx+eefZ3pe586dGTFiBO+++y4hISFX9dqSmS59Sra88sorJCcnM3nyZKciDaBIkSK8//77nDlzhpdffjnTc//99186d+5MWFgYhQsXZsCAAZn+Glu2bBn16tUjIiKCkJAQbrrpJp577jmnY1JSUhgxYgQ33ngj/v7+xMbG8swzz5CSkuJ0nMVioV+/fsyYMYObb74Zf39/Fi5cSGRkJL169coUX2JiIgEBAQwePNjl10pJSeHJJ5+kaNGihIaG0rZtW/7+++8r5vPIkSP4+PgwatSoTPt27tyJxWLhnXfeAew9OaNGjaJcuXIEBARQuHBh6tWrx7Jly674Ollp1KgRAPv27QPOX7rbtm0b3bp1o1ChQtSrV89x/Keffkr16tUJDAwkMjKSLl26cODAgUznnTx5MmXLliUwMJCaNWvy448/ZjrmUveo7dixg86dO1O0aFECAwO56aabeP755x3xPf300wCUKVPGcdnlr7/+ypUYL2XBggWULl2asmXLZrl/+PDhHDlyhPfee++K57LZbEyYMIGbb76ZgIAAihUrRu/evTl58mSm40aOHElMTAxBQUHceeedbNu2jdKlS9OzZ0/HcSdOnGDw4MFUrlyZkJAQwsLCaNGihdNlqB9++IHbb78dsBfsGXnM+F5ceI+a1WrNlZ8XV0RHRwP2Iu7C93DxPWoNGzbklltuYdu2bdx5550EBQVRokSJLH8XHT16lIceeohixYoREBBAlSpVmD59utMxGZ/RV199lYkTJ3LDDTcQFBRE06ZNOXDgAMYYxowZQ8mSJQkMDKRdu3acOHHC6RwX36OWmprK8OHDqV69OuHh4QQHB3PHHXewYsWKq8rNvHnz+P333xk2bFimIi1D06ZNadGixVWdv0SJEtSvX5+ZM2c6tc+YMYPKlStzyy23ZPm8u+66izNnzlz17ybJmnrUJFsWLlxI6dKlueOOO7LcX79+fUqXLp3pvgiw/5VVunRpxo8fz9q1a3nrrbc4efKko3v8jz/+oHXr1tx6662MHj0af39/9uzZw88//+w4h81mo23btvz00088+uijVKxYkd9++4033niDXbt2sWDBAqfX/P7775k7dy79+vWjSJEilCtXjg4dOjB//nzef/99p794FyxYQEpKiuO+I1de6+GHH+bTTz+lW7du1KlTh++//55WrVpdMZ/FihWjQYMGzJ07lxEjRjjtmzNnDt7e3txzzz2AvVAZP348Dz/8MDVr1iQxMZGNGzeyefNm7rrrriu+1sX+/PNPAAoXLuzUfs8991CuXDleeOEFjDEAjBs3jmHDhtG5c2cefvhhjh07xttvv039+vX55ZdfHJchP/zwQ3r37k2dOnUYOHAge/fupW3btkRGRhIbG3vZeH799VfuuOMOfH19efTRRyldujR//vknCxcuZNy4cXTs2JFdu3Yxa9Ys3njjDYoUKQLg+IPhesQI9t6E22677ZL777jjDho1asTLL7/M448/ftletd69ezNt2jR69epF//792bdvH++88w6//PILP//8s6N3a+jQobz88su0adOGZs2asXXrVpo1a5bpD529e/eyYMEC7rnnHsqUKcORI0d4//33adCggePSYcWKFRk9ejTDhw/n0Ucfdfws16lTJ1N8vr6+ufLzcjkZ9zulp6ezd+9ehgwZQuHChbN1f9/Jkydp3rw5HTt2pHPnznz22WcMGTKEypUrO4qVs2fP0rBhQ/bs2UO/fv0oU6YM8+bNo2fPniQkJDBgwACnc86YMYPU1FSeeOIJTpw4wcsvv0znzp1p1KgRP/zwA0OGDGHPnj28/fbbDB48mI8++uiS8SUmJjJlyhS6du3KI488wunTp/nwww9p1qwZ69evz3QZ+koWLlwIkKkXMid169aNAQMGkJSUREhICGlpacybN49BgwZl+vxlqFSpEoGBgfz888+6DSYnGZErSEhIMIBp167dZY9r27atAUxiYqIxxpgRI0YYwLRt29bpuD59+hjAbN261Rhj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h53uuUtLS+Ptt98mJCSEBg0a5MjrZCWjF+7C79G6detYs2bNVZ2vc+fOVKpUiTFjxrB27dosj7mW3sQLDR48mBEjRjBs2LArHrtt2zbOnTuX5UhiuXrqUZNsKVeuHNOnT6d79+5Urlw508oE//77L7Nmzcpyjql9+/bRtm1bmjdvzpo1axzTWWT8Ah49ejSrVq2iVatWxMXFcfToUd59911Klizp6L27//77mTt3Lo899hgrVqygbt26pKens2PHDubOncs333yT6eb4S7n33nt5++23GTFiBJUrV3bco5Ihu69VtWpVunbtyrvvvsupU6eoU6cOy5cvZ8+ePS7l9t577+W+++7j3XffpVmzZplm3q9UqRINGzakevXqREZGsnHjRj777DP69evn0uu4qmzZsowdO5ahQ4fy119/0b59e0JDQ9m3bx9ffPEFjz76KIMHD8bX15exY8fSu3dvGjVqxL333su+ffuYOnVqtu7/euutt6hXrx633XYbjz76qONztXjxYsdSR9WrVwfsN0t36dIFX19f2rRpc91iBGjXrh2ffPIJu3btumzvXYYRI0Zw5513Zmpv0KABvXv3Zvz48WzZsoWmTZvi6+vL7t27mTdvHm+++SZ33303xYoVY8CAAbz22muOn5+tW7eyZMkSihQp4tQz07p1a0aPHk2vXr2oU6cOv/32GzNmzMj03sqWLUtERASTJk0iNDSU4OBgatWqddn7pHLq5+Vy0tLS+PTTTwH7pdS//vqLSZMmYbPZrrrX6WKPPvoo77//Pj179mTTpk2ULl2azz77jJ9//pkJEyZccbDUtWjdujXz58+nQ4cOtGrVin379jFp0iQqVap0VT2Gvr6+fPHFFzRr1ox69erRsWNH7rjjDoKDgzl48CBfffUV+/fvz3KqoM8//9zRi3ihHj16ZHmZukqVKtkulpctW0ZQUNBVTRskl3Hdx5lKnvbrr7+arl27muLFixtfX18THR1tunbtmmmKCWPOT1uwbds2c/fdd5vQ0FBTqFAh069fP3P27FnHccuXLzft2rUzMTExxs/Pz8TExJiuXbuaXbt2OZ0vNTXVvPTSS+bmm282/v7+plChQqZ69epm1KhRTsPQ+W94+aXYbDYTGxtrADN27Ngsj8nua509e9b079/fFC5c2AQHB5s2bdqYAwcOZGuIfYbExEQTGBiY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X8zpWDJ56aWXeO+995g+fTo333wzGzdupFevXoSHh9O/f38AXn75Zd566y2mT59OmTJlGDZsGM2aNWPbtm0EBATkeowiIgWF1wcfQP/+YLHATTfZp+IQkVx1VYVaQkIC69ev5+jRo5nmS3vggQdyJDCwD1xo164drVq1AqB06dLMmjWL9evXA/betAkTJvC///2Pdu3aAfDxxx9TrFgxFixYQJcuXXIsFhGRAis9nZs/+gjvr76ybz/wAFSt6taQRAoKlwu1hQsX0r17d5KSkggLC8NisTj2WSyWHC3U6tSpw+TJk9m1axfly5dn69at/PTTT47Lqvv27ePw4cM0adLE8Zzw8HBq1arFmjVrLlmopaSkkJKS4thOTEwEwGq1YrVacyz+DBnnzI1z50fKl+uUM9coXy5ISsJy//3cuHgxAOmjRmF79ll7r5rylyV9vlxTEPPlynu1mAtv+MqG8uXL07JlS1544QWCgoJcDs4VNpuN5557jpdffhlvb2/S09MZN24cQ4cOBew9bnXr1uXQoUMUL17c8bzOnTtjsViYM2dOlucdOXIko0aNytQ+c+bMXH9PIiJ5RcDx49QaN46IvXtJ9/Vl84ABHKpXz91hieR5ycnJdOvWjVOnThEWFnbZY13uUTt48CD9+/e/LgXN3LlzmTFjBjNnzuTmm29my5YtDBw4kJiYGHr06HHV5x06dCiDBg1ybCcmJhIbG0vTpk2vmLCrYbVaWbZsGXfddRe+vr45fv78RvlynXLmGuUre7zefBPvvXsxRYrw8+DB1HjiCaoqX1ekz5drCmK+Mq7kZYfLhVqzZs3YuHEjN9xwg6tPddnTTz/Ns88+67iEWblyZeLj4xk/fjw9evQgOjoagCNHjjj1qB05coSql7l/wt/fH39//0ztvr6+ufohye3z5zfKl+uUM9coX1fw1FOQmEjaffdxcvt25ctFypdrClK+XHmfLhdqrVq14umnn2bbtm1Urlw504u1bdvW1VNeUnJyMl4XTZ7o7e3tGMBQpkwZoqOjWb58uaMwS0xMZN26dTz++OM5FoeISIFgDHzyCXTqBMHB9vvQRo+234u2fbu7oxMpkFwu1B555BEARo8enWmfxWIhPT392qP6T5s2bRg3bhylSpXi5ptv5pdffuH111/nwQcfdLzewIEDGTt2LOXKlXNMzxETE0P79u1z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ERGRguL06dOEh4df9hiLyU45l8/ZbDYOHTpEaGgoFoslx8+fmJhIbGwsBw4cICwsLMfPn98oX65TzlyjfLlG+XKN8uWagpgvYwynT58mJiYGL6/L34WmHjXAy8uLkiVL5vrrhIWFFZgPYU5QvlynnLlG+XKN8uUa5cs1BS1fV+pJy6DBBCIiIiIeSoWaiIiIiIdSoXYd+Pv7M2LECPz9/d0dSp6gfLlOOXON8uUa5cs1ypdrlK/L02ACEREREQ+lHjURERERD6VCTURERMRDqVATERER8VAq1EREREQ8lAq162DixImULl2agIAAatWqxfr1690dkkcYP348t99+O6GhoURFRdG+fXt27tzpdMy5c+fo27cvhQsXJiQkhE6dOnHkyBE3RexZXnzxRSwWCwMHDnS0KV/ODh48yH333UfhwoUJDAykcuXKbNy40bHfGMPw4cMpXrw4gYGBNGnShN27d7sxYvdJT09n2LBhlClThsDAQMqWLcuYMWOc1iIsyPlatWoVbdq0ISYmBovFwoIFC5z2Zyc3J06coHv37oSFhREREcFDDz1EUlLSdXwX19flcma1WhkyZAiVK1cmODiYmJgYHnjgAQ4dOuR0joKWs6yoUMtlc+bMYdCgQYwYMYLNmzdTpUoVmjVrxtGjR90dmtutXLmSvn37snbtWpYtW4bVaqVp06acOXPGccyTTz7JwoULmTdvHitXruTQoUN07NjRjVF7hg0bNvD+++9z6623OrUrX+edPHmSunXr4uvry5IlS9i2bRuvvfYahQoVchzz8ssv89ZbbzFp0iTWrVtHcHAwzZo149y5c26M3D1eeukl3nvvPd555x22b9/OSy+9xMsvv8zbb7/tOKYg5+vMmTNUqVKFiRMnZrk/O7np3r07f/zxB8uWLWPRokWsWrWKRx999Hq9hevucjlLTk5m8+bNDBs2jM2bNzN//nx27txJ27ZtnY4raDnLkpFcVbNmTdO3b1/Hdnp6uomJiTHjx493Y1Se6ejRowYwK1euNMYYk5CQYHx9fc28efMcx2zfvt0AZs2aNe4K0+1Onz5typUrZ5YtW2YaNGhgBgwYYIxRvi42ZMgQU69evUvut9lsJjo62rzyyiuOtoSEBOPv729mzZp1PUL0KK1atTIPPvigU1vHjh1N9+7djTHK14UA88UXXzi2s5Obbdu2GcBs2LDBccySJUuMxWIxBw8evG6xu8vFOcvK+vXrDWDi4+ONMcpZBvWo5aLU1FQ2bdpEkyZNHG1eXl40adKENWvWuDEyz3Tq1CkAIiMjAdi0aRNWq9UpfxUqVKBUqVIFOn99+/alVatWTnkB5etiX331FTVq1OCee+4hKiqKatWq8cEHHzj279u3j8OHDzvlKzw8nFq1ahXIfNWpU4fly5eza9cuALZu3cpPP/1EixYtAOXrcrKTmzVr1hAREUGNGjUcxzRp0gQvLy/WrVt33WP2RKdOncJisRAREQEoZxm0KHsu+vfff0lPT6dYsWJO7cWKFWPHjh1uisoz2Ww2Bg4cSN26dbnlllsAOHz4MH5+fo4f2gzFihXj8OHDbojS/WbPns3mzZvZsGFDpn3Kl7O9e/fy3nvvMWjQIJ577jk2bNhA//798fPzo0ePHo6cZPXzWRDz9eyzz5KYmEiFChXw9vYmPT2dcePG0b17dwDl6zKyk5vDhw8TFRXltN/Hx4fIyMgCnz+w3187ZMgQunbt6liYXTmzU6EmHqFv3778/vvv/PTTT+4OxWMdOHCAAQMGsGzZMgICAtwdjsez2WzUqFGDF154AYBq1arx+++/M2nSJHr06OHm6DzP3LlzmTFjBjNnzuTmm29my5YtDBw4kJiYGOVLcpXVaqVz584YY3jvvffcHY7H0aXPXFSkSBG8vb0zjbo7cuQI0dHRborK8/Tr149FixaxYsUKSpYs6WiPjo4mNTWVhIQEp+MLav42bdrE0aNHue222/Dx8cHHx4eVK1fy1ltv4ePjQ7FixZSvCxQvXpxKlSo5tVWsWJH9+/cDOHKin0+7p59+mmeffZYuXbpQuXJl7r//fp588knGjx8PKF+Xk53cREdHZxpElpaWxokTJwp0/jKKtPj4eJYtW+boTQPlLIMKtVzk5+dH9erVWb58uaPNZrOxfPlyateu7cbIPIMxhn79+vHFF1/w/fffU6ZMGaf91atXx9fX1yl/O3fuZP/+/QUyf40bN+a3335jy5Ytjq8aNWrQvXt3x2Pl67y6detmmu5l165dxMXFAVCmTBmio6Od8pWYmMi6desKZL6Sk5Px8nL+L8Hb2xubzQYoX5eTndzUrl2bhIQENm3a5Djm+++/x2azUatWresesyfIKNJ2797Nd999R+HChZ32K2f/cfdohvxu9uzZxt/f30ybNs1s27bNPProoyYiIsIcPnzY3aG53eOPP27Cw8PNDz/8YP755x/HV3JysuOYxx57zJQqVcp8//33ZuPGjaZ27dqmdu3abozas1w46tMY5etC69evNz4+PmbcuHFm9+7dZsaMGSYoKMh8+umnjmNefPFFExERYb788kvz66+/mnbt2pkyZcqYs2fPujFy9+jRo4cpUaKEWbRokdm3b5+ZP3++KVKkiHnmmWccxxTkfJ0+fdr88ssv5pdffjGAef31180vv/ziGKGYndw0b97cVKtWzaxbt8789NNPply5cqZr167ueku57nI5S01NNW3btjUlS5Y0W7Zscfo/ICUlxXGOgpazrKhQuw7efvttU6pUKePn52dq1qxp1q5d6+6QPAKQ5dfUqVMdx5w9e9b06dPHFCpUyAQFBZkOHTqYf/75x31Be5iLCzXly9nChQvNLbfcYvz9/U2FChXM5MmTnfbbbDYzbNgwU6xYMePv728aN25sdu7c6aZo3SsxMdEMGDDAlCpVygQEBJgbbrjBPP/8807/aRbkfK1YsSLL31c9evQwxmQvN8ePHzddu3Y1ISEhJiwszPTq1cucPn3aDe/m+rhczvbt23fJ/wNWrFjhOEdBy1lWLMZcMO20iIiIiHgM3aMmIiIi4qFUqImIiIh4KBVqIiIiIh5KhZqIiIiIh1KhJiIiIuKhVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSbiQUqXLs2ECRPcHUaOyW/vxxP17NmT9u3bO7YbNmzIwIED3RZPbrFYLCxYsACAv/76C4vFwpYtW9wak8j1oEJN5Do4cOAADz74IDExMfj5+REXF8eAAQM4fvy4u0PzCH///Td+fn7ccsst7g7luihdujQWiwWLxUJgYCClS5emc+fOfP/99y6f680332TatGk5FltGEZTx5efnx4033sjYsWPxlIVsYmNj+eeffwrM50UKNhVqIrls79691KhRg927dzNr1iz27NnDpEmTWL58ObVr1+bEiRNuiy09PR2bzea2188wbdo0OnfuTGJiIuvWrcv117Narbn+GlcyevRo/vnnH3bu3MnHH39MREQETZo0Ydy4cS6dJzw8nIiIiByP77vvvuOff/5h9+7djBo1inHjxvHRRx/l+OtcKDU1NVvHeXt7Ex0djY+PT67GI+IJVKiJ5LK+ffvi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", "text/plain": [ "
" ] @@ -428,7 +461,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", "metadata": {}, "outputs": [], @@ -438,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "75df8b20-dee7-420d-9231-229db9d53915", "metadata": {}, "outputs": [], @@ -463,7 +496,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "98205773-013c-45d4-a8bc-302d8a33e97f", "metadata": {}, "outputs": [], @@ -474,7 +507,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "id": "b3165da9-4c91-44f2-bad2-941995d22b73", "metadata": {}, "outputs": [], @@ -525,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", "metadata": {}, "outputs": [], @@ -536,7 +569,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "id": "6210a31b-85be-44a6-8cce-9569778e094d", "metadata": {}, "outputs": [], @@ -607,7 +640,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", "metadata": {}, "outputs": [], @@ -617,7 +650,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", "metadata": {}, "outputs": [], @@ -653,7 +686,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", "metadata": {}, "outputs": [ @@ -771,7 +804,7 @@ "14 POINT (-118.34876716762236 34.19656151035557) new_5 " ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -783,7 +816,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", "metadata": {}, "outputs": [ @@ -901,7 +934,7 @@ "6 POINT (-118.30550179211235 34.16893683695737) new_5 " ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -913,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "id": "d3b5d469-48b5-49df-ae91-315466705ddb", "metadata": {}, "outputs": [], @@ -933,7 +966,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", "metadata": {}, "outputs": [], @@ -947,7 +980,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", "metadata": {}, "outputs": [], @@ -958,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "id": "174076a2-a975-41d8-88d3-ca874351d57a", "metadata": {}, "outputs": [], @@ -976,7 +1009,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", "metadata": {}, "outputs": [], @@ -994,7 +1027,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "id": "bbf7b71a-c05a-4651-955b-484947ced81c", "metadata": {}, "outputs": [ @@ -1663,7 +1696,7 @@ "4 435.126571 356.308126 1734.412075 " ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1674,7 +1707,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", "metadata": {}, "outputs": [], @@ -1696,7 +1729,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "id": "36e31d14-b88f-4b54-849a-615f5755f369", "metadata": {}, "outputs": [], @@ -1718,7 +1751,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", "metadata": {}, "outputs": [], @@ -1732,7 +1765,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", "metadata": {}, "outputs": [ @@ -1937,7 +1970,7 @@ "4 0.0 None 80120 " ] }, - "execution_count": 32, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1948,7 +1981,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "id": "4ca8d618-a539-41ff-980c-45a628569ce6", "metadata": {}, "outputs": [], @@ -1968,7 +2001,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", "metadata": {}, "outputs": [ @@ -2185,7 +2218,7 @@ "4 0.0 None 80120 [801] 1 " ] }, - "execution_count": 34, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -2196,7 +2229,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", "metadata": {}, "outputs": [], @@ -2213,7 +2246,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "id": "935a70bd-867a-49b2-867b-12a1b4f71635", "metadata": {}, "outputs": [], @@ -2226,7 +2259,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "id": "da409a53-ae7b-4f11-a157-d76388882c32", "metadata": {}, "outputs": [], @@ -2245,7 +2278,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", "metadata": {}, "outputs": [], @@ -2265,7 +2298,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "id": "e15d37f1-42de-441c-b46c-2ed73103df13", "metadata": {}, "outputs": [], @@ -2284,7 +2317,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", "metadata": {}, "outputs": [ @@ -2438,7 +2471,7 @@ "14 Empire / Valpreda 1249 2 " ] }, - "execution_count": 40, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2449,7 +2482,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 42, "id": "51ba1872-0315-4e91-ac93-1e4512191513", "metadata": {}, "outputs": [ @@ -2625,7 +2658,7 @@ "3 San Fernando / Alameda 5453 1 " ] }, - "execution_count": 41, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -2636,7 +2669,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 43, "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", "metadata": {}, "outputs": [ @@ -2644,14 +2677,14 @@ "data": { "text/plain": [ "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'eastbound', 'adding_existing')]" + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" ] }, - "execution_count": 42, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -2666,7 +2699,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 44, "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", "metadata": {}, "outputs": [], @@ -2677,7 +2710,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 45, "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", "metadata": {}, "outputs": [], @@ -2690,7 +2723,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 46, "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", "metadata": {}, "outputs": [], @@ -2706,7 +2739,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 47, "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", "metadata": {}, "outputs": [], @@ -2721,7 +2754,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 48, "id": "f706ac72-936a-46fa-8994-908e72968689", "metadata": {}, "outputs": [], @@ -2755,7 +2788,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 49, "id": "93666c83-c8be-4e00-b455-005fa305e6aa", "metadata": {}, "outputs": [], @@ -2777,7 +2810,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 50, "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", "metadata": {}, "outputs": [ @@ -2982,7 +3015,7 @@ "65 1 43 " ] }, - "execution_count": 49, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -2993,7 +3026,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 51, "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", "metadata": {}, "outputs": [], @@ -3018,7 +3051,9 @@ " \"Universal Redline Station\",\n", " \"NoHo Station\",\n", " \"Metrolink Station\",\n", - " \"Hollywood Burbank Airport RITC\"\n", + " \"Hollywood Burbank Airport RITC\",\n", + " \"New BUR terminal\",\n", + " \n", "]\n", "\n", "df_grouped[\"has_rail_connection_dummy\"] = 0\n", @@ -3031,14 +3066,14 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 52, "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", "metadata": {}, "outputs": [], "source": [ "X_scn = df_grouped[[\n", - " 'n_routes_scn',\n", - " 'n_arrivals_scn',\n", + " # 'n_routes_scn',\n", + " # 'n_arrivals_scn',\n", " 'total_pop_adj',\n", " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", @@ -3049,12 +3084,12 @@ "\n", "\n", "\n", - "X_scn = X_scn.rename(columns={\n", - " 'n_routes_scn': 'n_routes',\n", - " 'n_arrivals_scn': 'n_arrivals'\n", + "# X_scn = X_scn.rename(columns={\n", + "# 'n_routes_scn': 'n_routes',\n", + "# 'n_arrivals_scn': 'n_arrivals'\n", " \n", - "})\n", - "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "# })\n", + "# X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", "\n", "X_scn = sm.add_constant(X_scn)\n", "X_scn = X_scn[model_fe.model.exog_names]\n", @@ -3063,14 +3098,14 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 53, "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", "metadata": {}, "outputs": [], "source": [ "X_base = df_grouped[[\n", - " 'n_routes_base',\n", - " 'n_arrivals_base',\n", + " # 'n_routes_base',\n", + " # 'n_arrivals_base',\n", " 'total_pop_adj',\n", " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", @@ -3079,12 +3114,12 @@ " 'has_rail_connection_dummy'\n", "]].fillna(0)\n", "\n", - "X_base = X_base.rename(columns={\n", - " 'n_routes_base': 'n_routes',\n", - " 'n_arrivals_base': 'n_arrivals'\n", - "})\n", + "# X_base = X_base.rename(columns={\n", + "# 'n_routes_base': 'n_routes',\n", + "# 'n_arrivals_base': 'n_arrivals'\n", + "# })\n", "\n", - "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "# X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", "\n", "X_base = sm.add_constant(X_base)\n", "X_base = X_base[model_fe.model.exog_names]\n", @@ -3093,7 +3128,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 54, "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", "metadata": {}, "outputs": [], @@ -3105,7 +3140,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 55, "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", "metadata": {}, "outputs": [ @@ -3160,9 +3195,9 @@ " 761.825145\n", " 1991.379441\n", " new_stop\n", - " 1.695556\n", - " 1.777208\n", - " 0.081652\n", + " 0.0\n", + " 1.941187\n", + " 1.941187\n", " \n", " \n", " 1\n", @@ -3177,9 +3212,9 @@ " 1084.409976\n", " 4642.170179\n", " adding_existing\n", - " -1.868582\n", - " 0.482467\n", - " 2.351049\n", + " 0.0\n", + " 7.219622\n", + " 7.219622\n", " \n", " \n", " 2\n", @@ -3194,9 +3229,9 @@ " 1725.942594\n", " 6817.928354\n", " new_stop\n", - " 48.016813\n", - " 50.329137\n", - " 2.312324\n", + " 0.0\n", + " 53.839381\n", + " 53.839381\n", " \n", " \n", " 3\n", @@ -3211,9 +3246,9 @@ " 913.488790\n", " 2552.447381\n", " new_stop\n", - " 2.202015\n", - " 2.308056\n", - " 0.106041\n", + " 0.0\n", + " 2.444115\n", + " 2.444115\n", " \n", " \n", " 4\n", @@ -3228,9 +3263,9 @@ " 918.907033\n", " 2212.922437\n", " new_stop\n", - " 1.647864\n", - " 1.727219\n", - " 0.079355\n", + " 0.0\n", + " 1.822577\n", + " 1.822577\n", " \n", " \n", " 5\n", @@ -3245,9 +3280,9 @@ " 1697.596217\n", " 5877.742833\n", " adding_existing\n", - " -3.642201\n", - " 0.034977\n", - " 3.677178\n", + " 0.0\n", + " 5.621587\n", + " 5.621587\n", " \n", " \n", " 6\n", @@ -3262,9 +3297,9 @@ " 608.501816\n", " 1950.302731\n", " adding_existing, new_stop\n", - " -2.334350\n", - " 0.750174\n", - " 3.084524\n", + " 0.0\n", + " 2.444017\n", + " 2.444017\n", " \n", " \n", " 7\n", @@ -3279,9 +3314,9 @@ " 1137.810544\n", " 3698.842863\n", " new_stop\n", - " 3.963669\n", - " 4.106075\n", - " 0.142407\n", + " 0.0\n", + " 4.336360\n", + " 4.336360\n", " \n", " \n", " 8\n", @@ -3296,9 +3331,9 @@ " 841.882362\n", " 2881.922546\n", " adding_existing, new_stop\n", - " -0.133763\n", - " 0.333678\n", - " 0.467441\n", + " 0.0\n", + " 1.663868\n", + " 1.663868\n", " \n", " \n", " 9\n", @@ -3313,9 +3348,9 @@ " 843.444579\n", " 2953.610300\n", " new_stop\n", - " 1.100656\n", - " 1.153660\n", - " 0.053004\n", + " 0.0\n", + " 1.623382\n", + " 1.623382\n", " \n", " \n", "\n", @@ -3359,19 +3394,19 @@ "9 843.444579 2953.610300 new_stop \n", "\n", " ridership_change pred_scenario pred_baseline \n", - "0 1.695556 1.777208 0.081652 \n", - "1 -1.868582 0.482467 2.351049 \n", - "2 48.016813 50.329137 2.312324 \n", - "3 2.202015 2.308056 0.106041 \n", - "4 1.647864 1.727219 0.079355 \n", - "5 -3.642201 0.034977 3.677178 \n", - "6 -2.334350 0.750174 3.084524 \n", - "7 3.963669 4.106075 0.142407 \n", - "8 -0.133763 0.333678 0.467441 \n", - "9 1.100656 1.153660 0.053004 " + "0 0.0 1.941187 1.941187 \n", + "1 0.0 7.219622 7.219622 \n", + "2 0.0 53.839381 53.839381 \n", + "3 0.0 2.444115 2.444115 \n", + "4 0.0 1.822577 1.822577 \n", + "5 0.0 5.621587 5.621587 \n", + "6 0.0 2.444017 2.444017 \n", + "7 0.0 4.336360 4.336360 \n", + "8 0.0 1.663868 1.663868 \n", + "9 0.0 1.623382 1.623382 " ] }, - "execution_count": 54, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -3383,7 +3418,26 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 58, + "id": "f356311d-5ad4-4f2e-9096-0dac4aabe192", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "225.40909090909093\n" + ] + } + ], + "source": [ + "ridership_change = df_burbank[\"average_daily_boardings\"].sum()\n", + "print(ridership_change)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", "metadata": {}, "outputs": [ @@ -3391,15 +3445,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "36.80157389321087\n" + "271.3311085006283\n" ] } ], "source": [ - "ridership_change = df_grouped[\"ridership_change\"].sum()\n", + "ridership_change = df_grouped[\"pred_scenario\"].sum()\n", "print(ridership_change)" ] }, + { + "cell_type": "code", + "execution_count": 60, + "id": "10b79f03-d898-4d51-8f09-913e1eebc3f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20.37274424306962" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((271.3311085006283-225.40909090909093)/225.40909090909093)*100" + ] + }, { "cell_type": "code", "execution_count": 56, From 8f359720345a7568a55b2f9016ba8f552493a7a9 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Wed, 6 May 2026 18:48:51 +0000 Subject: [PATCH 19/21] burbank updated models --- .../06_data_processing.ipynb | 8 +- .../Model_Exploration_Burbank.ipynb | 1081 ++++------------- .../burbank_lu.ipynb | 1057 ++++++++++++++++ 3 files changed, 1305 insertions(+), 841 deletions(-) create mode 100644 ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb diff --git a/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb b/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb index 656e40c7a..c2dac6366 100644 --- a/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb @@ -10,8 +10,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", - "Note: you may need to restart the kernel to use updated packages.\n" + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -43,7 +44,6 @@ "credentials, project = google.auth.default()\n", "fs = gcsfs.GCSFileSystem()\n", "\n", - "\n", "pd.set_option('display.max_columns', None)" ] }, @@ -519,7 +519,7 @@ "outputs": [], "source": [ "stop_buffered = gdf_ridership.copy()\n", - "stop_buffered[\"geometry\"] = stop_buffered.geometry.buffer(804.672)" + "stop_buffered[\"geometry\"] = stop_buffered.geometry.buffer(404.672)" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb index cad639eaa..72b1e9e33 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb @@ -62,8 +62,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", - "Note: you may need to restart the kernel to use updated packages.\n" + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -158,92 +159,6 @@ { "cell_type": "code", "execution_count": 6, - "id": "362e041e-18d9-4bc7-8de7-0550869adf5f", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", - " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Generalized Linear Model Regression Results \n", - "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21255\n", - "Model Family: NegativeBinomial Df Model: 8\n", - "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -82687.\n", - "Date: Thu, 30 Apr 2026 Deviance: 38057.\n", - "Time: 18:39:00 Pearson chi2: 2.81e+05\n", - "No. Iterations: 54 Pseudo R-squ. (CS): 0.8323\n", - "Covariance Type: nonrobust \n", - "===========================================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-------------------------------------------------------------------------------------------\n", - "const -2.0809 0.037 -55.778 0.000 -2.154 -2.008\n", - "n_routes -0.1182 0.009 -12.462 0.000 -0.137 -0.100\n", - "log_arrivals 1.4253 0.011 126.466 0.000 1.403 1.447\n", - "total_pop_adj 6.744e-05 9.88e-06 6.824 0.000 4.81e-05 8.68e-05\n", - "workers_with_no_car_adj 0.0009 3.55e-05 24.280 0.000 0.001 0.001\n", - "total_youth_adj 0.0003 1.41e-05 19.145 0.000 0.000 0.000\n", - "public_asst_pop_adj 0.0002 4.3e-05 5.217 0.000 0.000 0.000\n", - "total_seniors_adj -0.0003 2.58e-05 -11.571 0.000 -0.000 -0.000\n", - "inc_total_lowincome_adj -0.0001 1.9e-05 -7.763 0.000 -0.000 -0.000\n", - "===========================================================================================\n" - ] - } - ], - "source": [ - "# Copy the dataset\n", - "df = stop_route_df.copy()\n", - "y = df['average_daily_boardings']\n", - "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", - "X = df[['n_routes', 'log_arrivals',\n", - " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj', \"inc_total_lowincome_adj\",]]\n", - "\n", - "# 4. Add intercept\n", - "X = sm.add_constant(X)\n", - "\n", - "# Same X and y as Poisson\n", - "nb_model_extended = sm.GLM(\n", - " y,\n", - " X,\n", - " family=sm.families.NegativeBinomial()\n", - ").fit()\n", - "\n", - "print(nb_model_extended.summary())" - ] - }, - { - "cell_type": "markdown", - "id": "618bdb53-6387-4c97-b48f-f5a1a4ee2660", - "metadata": {}, - "source": [ - "adding a route while holding arrivals constant reduces ridership per stop" - ] - }, - { - "cell_type": "markdown", - "id": "aa758fee-cd65-4935-a1b8-4d7c5838ae1e", - "metadata": {}, - "source": [ - "- New Blue Route\tn_routes +1\n", - "- Extended Orange Route\tn_routes +1 (partial effect)\n", - "- More service / frequency\tn_arrivals ↑\n", - "- Weekend service\t: currently this model is just weekday model\n", - "- New stops\tnew rows (or modified features)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, "id": "7e41c9f0-9e78-4f41-8657-37747218def7", "metadata": {}, "outputs": [], @@ -253,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "23117df7-8e6b-47c3-aa0c-4965517dde3a", "metadata": {}, "outputs": [ @@ -276,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "aed87242-a621-4a69-8357-29a4ee260e13", "metadata": {}, "outputs": [ @@ -294,8 +209,6 @@ } ], "source": [ - "import statsmodels.api as sm\n", - "\n", "rail_stops = [\n", " \"Universal Redline Station\",\n", " \"NoHo Station\",\n", @@ -312,8 +225,8 @@ "\n", "\n", "X = df_burbank[[\n", - " # \"n_routes\",\n", - " # \"log_arrivals\",\n", + " \"n_routes\",\n", + " \"log_arrivals\",\n", " \"total_pop_adj\",\n", " \"workers_with_no_car_adj\",\n", " \"total_seniors_adj\",\n", @@ -327,40 +240,7 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "720b9284-2284-4470-a89e-f27846562f9c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", - " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", - " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", - " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", - " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", - " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", - " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", - " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", - " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", - " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", - " 'total_youth_adj', 'ALAND_adj', 'log_arrivals',\n", - " 'has_rail_connection_dummy'],\n", - " dtype='object')" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_burbank.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "af3e0f0a-7ac4-4b36-8cdb-0785f620df79", "metadata": {}, "outputs": [ @@ -371,24 +251,26 @@ " Generalized Linear Model Regression Results \n", "===================================================================================\n", "Dep. Variable: average_daily_boardings No. Observations: 45\n", - "Model: GLM Df Residuals: 38\n", - "Model Family: NegativeBinomial Df Model: 6\n", + "Model: GLM Df Residuals: 37\n", + "Model Family: NegativeBinomial Df Model: 7\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -104.48\n", - "Date: Thu, 30 Apr 2026 Deviance: 26.285\n", - "Time: 18:39:01 Pearson chi2: 22.4\n", - "No. Iterations: 16 Pseudo R-squ. (CS): 0.5354\n", + "Method: IRLS Log-Likelihood: -104.77\n", + "Date: Wed, 06 May 2026 Deviance: 26.862\n", + "Time: 18:46:59 Pearson chi2: 21.2\n", + "No. Iterations: 18 Pseudo R-squ. (CS): 0.5294\n", "Covariance Type: nonrobust \n", "=============================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "---------------------------------------------------------------------------------------------\n", - "const 0.0098 0.798 0.012 0.990 -1.554 1.573\n", - "total_pop_adj 0.0005 0.001 0.653 0.514 -0.001 0.002\n", - "workers_with_no_car_adj 0.0097 0.006 1.656 0.098 -0.002 0.021\n", - "total_seniors_adj 0.0018 0.001 1.309 0.191 -0.001 0.004\n", - "inc_total_lowincome_adj -0.0018 0.001 -1.868 0.062 -0.004 8.87e-05\n", - "has_rail_connection_dummy 2.8698 0.678 4.233 0.000 1.541 4.199\n", - "total_youth_adj 0.0010 0.004 0.281 0.779 -0.006 0.008\n", + "const -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "n_routes -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "log_arrivals 1.9853 2.106 0.942 0.346 -2.143 6.114\n", + "total_pop_adj 0.0014 0.002 0.764 0.445 -0.002 0.005\n", + "workers_with_no_car_adj 0.0301 0.018 1.707 0.088 -0.004 0.065\n", + "total_seniors_adj 0.0081 0.004 1.989 0.047 0.000 0.016\n", + "inc_total_lowincome_adj -0.0059 0.002 -2.395 0.017 -0.011 -0.001\n", + "has_rail_connection_dummy 1.8884 1.135 1.663 0.096 -0.337 4.114\n", + "total_youth_adj 0.0021 0.008 0.254 0.800 -0.014 0.019\n", "=============================================================================================\n" ] }, @@ -413,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "75d04dd7-b987-48d0-823d-9e29c6d71341", "metadata": {}, "outputs": [], @@ -427,13 +309,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "id": "0308ac20-e164-4aa3-a22e-63ce66549980", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAIjCAYAAACzhTfbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiwtJREFUeJzs3Xt8zvX/x/HHtfN5M8yMGYlQQsTPIYScz0oOFTophKSkvs6kczooSaFyLilESaJyJjo4RyNyCDMztmu73r8/rnZx2bCLzXVte95vt91cn/fnc32u1/XatXnt/fm832+LMcYgIiIiIh7Hy90BiIiIiEjWVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSYiIiLioVSoiYiIiHgoFWoiIiIiHkqFmoiIiIiHUqEmIiIi4qFUqEmuGTlyJBaLhX///dfdoVx3FouFkSNHujsMt2vYsCENGzZ0bP/1119YLBamTZvmtpgudnGMl5OUlERUVBQzZszI3aDcoGfPnpQuXdrdYVzWDz/8gMVi4YcffnB3KJflymfqYnn1d0eXLl3o3Lmzu8PIl1SoiUv++OMP7rvvPkqUKIG/vz8xMTF0796dP/74w92hyUUy/lPL+PL19eWGG27ggQceYO/eve4OzyWrV69m5MiRJCQkuDWON998k9DQULp06eJoy/iDpFixYiQnJ2d6TunSpWnduvX1DPOSDh06xMiRI9myZYu7Q3Ho2bOn0+fUx8eH2NhYunTpwrZt29wdnkdLTExk3Lhx1KhRg/DwcPz9/YmLi+Pee+9l8eLFTsdm/D747LPPLnvOjO/Dww8/nOX+559/3nHMhX+EDxkyhM8//5ytW7de+xsTJz7uDkDyjvnz59O1a1ciIyN56KGHKFOmDH/99Rcffvghn332GbNnz6ZDhw7uDlMu0r9/f26//XasViubN29m8uTJLF68mN9++42YmJjrGktcXBxnz57F19fXpeetXr2aUaNG0bNnTyIiInInuCuwWq28+eabPPnkk3h7e2faf/ToUd577z2eeuopN0SXPYcOHWLUqFGULl2aqlWrOu374IMPsNlsbonL39+fKVOmAJCWlsaff/7JpEmTWLp0Kdu2bXN8TuvXr8/Zs2fx8/NzS5zZ9e233+b6a+zZs4dmzZoRHx9Phw4deOCBBwgJCeHAgQN8/fXXtG7dmo8//pj777/f5XMHBATw+eef8+6772bK9axZswgICODcuXNO7dWqVaNGjRq89tprfPzxx9f03sSZCjXJlj///JP777+fG264gVWrVlG0aFHHvgEDBnDHHXdw//338+uvv3LDDTe4MdLMbDYbqampBAQEuDsUt7jjjju4++67AejVqxfly5enf//+TJ8+naFDh2b5nDNnzhAcHJzjsVgsljz7fVi0aBHHjh275OWdqlWr8sorr9CnTx8CAwOvc3TXztXiOSf5+Phw3333ObX93//9H61bt2bx4sU88sgjAHh5eeWJz09uF5JpaWl06NCBI0eOsHLlSurWreu0f8SIEXz77bekp6df1fmbN2/OV199xZIlS2jXrp2jffXq1ezbt49OnTrx+eefZ3pe586dGTFiBO+++y4hISFX9dqSmS59Sra88sorJCcnM3nyZKciDaBIkSK8//77nDlzhpdffjnTc//99186d+5MWFgYhQsXZsCAAZn+Glu2bBn16tUjIiKCkJAQbrrpJp577jmnY1JSUhgxYgQ33ngj/v7+xMbG8swzz5CSkuJ0nMVioV+/fsyYMYObb74Zf39/Fi5cSGRkJL169coUX2JiIgEBAQwePNjl10pJSeHJJ5+kaNGihIaG0rZtW/7+++8r5vPIkSP4+PgwatSoTPt27tyJxWLhnXfeAew9OaNGjaJcuXIEBARQuHBh6tWrx7Jly674Ollp1KgRAPv27QPOX7rbtm0b3bp1o1ChQtSrV89x/Keffkr16tUJDAwkMjKSLl26cODAgUznnTx5MmXLliUwMJCaNWvy448/ZjrmUveo7dixg86dO1O0aFECAwO56aabeP755x3xPf300wCUKVPGcdnlr7/+ypUYL2XBggWULl2asmXLZrl/+PDhHDlyhPfee++K57LZbEyYMIGbb76ZgIAAihUrRu/evTl58mSm40aOHElMTAxBQUHceeedbNu2jdKlS9OzZ0/HcSdOnGDw4MFUrlyZkJAQwsLCaNGihdNlqB9++IHbb78dsBfsGXnM+F5ceI+a1WrNlZ8XV0RHRwP2Iu7C93DxPWoNGzbklltuYdu2bdx5550EBQVRokSJLH8XHT16lIceeohixYoREBBAlSpVmD59utMxGZ/RV199lYkTJ3LDDTcQFBRE06ZNOXDgAMYYxowZQ8mSJQkMDKRdu3acOHHC6RwX36OWmprK8OHDqV69OuHh4QQHB3PHHXewYsWKq8rNvHnz+P333xk2bFimIi1D06ZNadGixVWdv0SJEtSvX5+ZM2c6tc+YMYPKlStzyy23ZPm8u+66izNnzlz17ybJmnrUJFsWLlxI6dKlueOOO7LcX79+fUqXLp3pvgiw/5VVunRpxo8fz9q1a3nrrbc4efKko3v8jz/+oHXr1tx6662MHj0af39/9uzZw88//+w4h81mo23btvz00088+uijVKxYkd9++4033niDXbt2sWDBAqfX/P7775k7dy79+vWjSJEilCtXjg4dOjB//nzef/99p794FyxYQEpKiuO+I1de6+GHH+bTTz+lW7du1KlTh++//55WrVpdMZ/FihWjQYMGzJ07lxEjRjjtmzNnDt7e3txzzz2AvVAZP348Dz/8MDVr1iQxMZGNGzeyefNm7rrrriu+1sX+/PNPAAoXLuzUfs8991CuXDleeOEFjDEAjBs3jmHDhtG5c2cefvhhjh07xttvv039+vX55ZdfHJchP/zwQ3r37k2dOnUYOHAge/fupW3btkRGRhIbG3vZeH799VfuuOMOfH19efTRRyldujR//vknCxcuZNy4cXTs2JFdu3Yxa9Ys3njjDYoUKQLg+IPhesQI9t6E22677ZL777jjDho1asTLL7/M448/ftletd69ezNt2jR69epF//792bdvH++88w6//PILP//8s6N3a+jQobz88su0adOGZs2asXXrVpo1a5bpD529e/eyYMEC7rnnHsqUKcORI0d4//33adCggePSYcWKFRk9ejTDhw/n0Ucfdfws16lTJ1N8vr6+ufLzcjkZ9zulp6ezd+9ehgwZQuHChbN1f9/Jkydp3rw5HTt2pHPnznz22WcMGTKEypUrO4qVs2fP0rBhQ/bs2UO/fv0oU6YM8+bNo2fPniQkJDBgwACnc86YMYPU1FSeeOIJTpw4wcsvv0znzp1p1KgRP/zwA0OGDGHPnj28/fbbDB48mI8++uiS8SUmJjJlyhS6du3KI488wunTp/nwww9p1qwZ69evz3QZ+koWLlwIkKkXMid169aNAQMGkJSUREhICGlpacybN49BgwZl+vxlqFSpEoGBgfz888+6DSYnGZErSEhIMIBp167dZY9r27atAUxiYqIxxpgRI0YYwLRt29bpuD59+hjAbN261Rhj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h53uuUtLS+Ptt98mJCSEBg0a5MjrZCWjF+7C79G6detYs2bNVZ2vc+fOVKpUiTFjxrB27dosj7mW3sQLDR48mBEjRjBs2LArHrtt2zbOnTuX5UhiuXrqUZNsKVeuHNOnT6d79+5Urlw508oE//77L7Nmzcpyjql9+/bRtm1bmjdvzpo1axzTWWT8Ah49ejSrVq2iVatWxMXFcfToUd59911Klizp6L27//77mTt3Lo899hgrVqygbt26pKens2PHDubOncs333yT6eb4S7n33nt5++23GTFiBJUrV3bco5Ihu69VtWpVunbtyrvvvsupU6eoU6cOy5cvZ8+ePS7l9t577+W+++7j3XffpVmzZplm3q9UqRINGzakevXqREZGsnHjRj777DP69evn0uu4qmzZsowdO5ahQ4fy119/0b59e0JDQ9m3bx9ffPEFjz76KIMHD8bX15exY8fSu3dvGjVqxL333su+ffuYOnVqtu7/euutt6hXrx633XYbjz76qONztXjxYsdSR9WrVwfsN0t36dIFX19f2rRpc91iBGjXrh2ffPIJu3btumzvXYYRI0Zw5513Zmpv0KABvXv3Zvz48WzZsoWmTZvi6+vL7t27mTdvHm+++SZ33303xYoVY8CAAbz22muOn5+tW7eyZMkSihQp4tQz07p1a0aPHk2vXr2oU6cOv/32GzNmzMj03sqWLUtERASTJk0iNDSU4OBgatWqddn7pHLq5+Vy0tLS+PTTTwH7pdS//vqLSZMmYbPZrrrX6WKPPvoo77//Pj179mTTpk2ULl2azz77jJ9//pkJEyZccbDUtWjdujXz58+nQ4cOtGrVin379jFp0iQqVap0VT2Gvr6+fPHFFzRr1ox69erRsWNH7rjjDoKDgzl48CBfffUV+/fvz3KqoM8//9zRi3ihHj16ZHmZukqVKtkulpctW0ZQUNBVTRskl3Hdx5lKnvbrr7+arl27muLFixtfX18THR1tunbtmmmKCWPOT1uwbds2c/fdd5vQ0FBTqFAh069fP3P27FnHccuXLzft2rUzMTExxs/Pz8TExJiuXbuaXbt2OZ0vNTXVvPTSS+bmm282/v7+plChQqZ69epm1KhRTsPQ+W94+aXYbDYTGxtrADN27Ngsj8nua509e9b079/fFC5c2AQHB5s2bdqYAwcOZGuIfYbExEQTGBiY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X8zpWDJ56aWXeO+995g+fTo333wzGzdupFevXoSHh9O/f38AXn75Zd566y2mT59OmTJlGDZsGM2aNWPbtm0EBATkeowiIgWF1wcfQP/+YLHATTfZp+IQkVx1VYVaQkIC69ev5+jRo5nmS3vggQdyJDCwD1xo164drVq1AqB06dLMmjWL9evXA/betAkTJvC///2Pdu3aAfDxxx9TrFgxFixYQJcuXXIsFhGRAis9nZs/+gjvr76ybz/wAFSt6taQRAoKlwu1hQsX0r17d5KSkggLC8NisTj2WSyWHC3U6tSpw+TJk9m1axfly5dn69at/PTTT47Lqvv27ePw4cM0adLE8Zzw8HBq1arFmjVrLlmopaSkkJKS4thOTEwEwGq1YrVacyz+DBnnzI1z50fKl+uUM9coXy5ISsJy//3cuHgxAOmjRmF79ll7r5rylyV9vlxTEPPlynu1mAtv+MqG8uXL07JlS1544QWCgoJcDs4VNpuN5557jpdffhlvb2/S09MZN24cQ4cOBew9bnXr1uXQoUMUL17c8bzOnTtjsViYM2dOlucdOXIko0aNytQ+c+bMXH9PIiJ5RcDx49QaN46IvXtJ9/Vl84ABHKpXz91hieR5ycnJdOvWjVOnThEWFnbZY13uUTt48CD9+/e/LgXN3LlzmTFjBjNnzuTmm29my5YtDBw4kJiYGHr06HHV5x06dCiDBg1ybCcmJhIbG0vTpk2vmLCrYbVaWbZsGXfddRe+vr45fv78RvlynXLmGuUre7zefBPvvXsxRYrw8+DB1HjiCaoqX1ekz5drCmK+Mq7kZYfLhVqzZs3YuHEjN9xwg6tPddnTTz/Ns88+67iEWblyZeLj4xk/fjw9evQgOjoagCNHjjj1qB05coSql7l/wt/fH39//0ztvr6+ufohye3z5zfKl+uUM9coX1fw1FOQmEjaffdxcvt25ctFypdrClK+XHmfLhdqrVq14umnn2bbtm1Urlw504u1bdvW1VNeUnJyMl4XTZ7o7e3tGMBQpkwZoqOjWb58uaMwS0xMZN26dTz++OM5FoeISIFgDHzyCXTqBMHB9vvQRo+234u2fbu7oxMpkFwu1B555BEARo8enWmfxWIhPT392qP6T5s2bRg3bhylSpXi5ptv5pdffuH111/nwQcfdLzewIEDGTt2LOXKlXNMzxETE0P79u1z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ERGRguL06dOEh4df9hiLyU45l8/ZbDYOHTpEaGgoFoslx8+fmJhIbGwsBw4cICwsLMfPn98oX65TzlyjfLlG+XKN8uWagpgvYwynT58mJiYGL6/L34WmHjXAy8uLkiVL5vrrhIWFFZgPYU5QvlynnLlG+XKN8uUa5cs1BS1fV+pJy6DBBCIiIiIeSoWaiIiIiIdSoXYd+Pv7M2LECPz9/d0dSp6gfLlOOXON8uUa5cs1ypdrlK/L02ACEREREQ+lHjURERERD6VCTURERMRDqVATERER8VAq1EREREQ8lAq162DixImULl2agIAAatWqxfr1690dkkcYP348t99+O6GhoURFRdG+fXt27tzpdMy5c+fo27cvhQsXJiQkhE6dOnHkyBE3RexZXnzxRSwWCwMHDnS0KV/ODh48yH333UfhwoUJDAykcuXKbNy40bHfGMPw4cMpXrw4gYGBNGnShN27d7sxYvdJT09n2LBhlClThsDAQMqWLcuYMWOc1iIsyPlatWoVbdq0ISYmBovFwoIFC5z2Zyc3J06coHv37oSFhREREcFDDz1EUlLSdXwX19flcma1WhkyZAiVK1cmODiYmJgYHnjgAQ4dOuR0joKWs6yoUMtlc+bMYdCgQYwYMYLNmzdTpUoVmjVrxtGjR90dmtutXLmSvn37snbtWpYtW4bVaqVp06acOXPGccyTTz7JwoULmTdvHitXruTQoUN07NjRjVF7hg0bNvD+++9z6623OrUrX+edPHmSunXr4uvry5IlS9i2bRuvvfYahQoVchzz8ssv89ZbbzFp0iTWrVtHcHAwzZo149y5c26M3D1eeukl3nvvPd555x22b9/OSy+9xMsvv8zbb7/tOKYg5+vMmTNUqVKFiRMnZrk/O7np3r07f/zxB8uWLWPRokWsWrWKRx999Hq9hevucjlLTk5m8+bNDBs2jM2bNzN//nx27txJ27ZtnY4raDnLkpFcVbNmTdO3b1/Hdnp6uomJiTHjx493Y1Se6ejRowYwK1euNMYYk5CQYHx9fc28efMcx2zfvt0AZs2aNe4K0+1Onz5typUrZ5YtW2YaNGhgBgwYYIxRvi42ZMgQU69evUvut9lsJjo62rzyyiuOtoSEBOPv729mzZp1PUL0KK1atTIPPvigU1vHjh1N9+7djTHK14UA88UXXzi2s5Obbdu2GcBs2LDBccySJUuMxWIxBw8evG6xu8vFOcvK+vXrDWDi4+ONMcpZBvWo5aLU1FQ2bdpEkyZNHG1eXl40adKENWvWuDEyz3Tq1CkAIiMjAdi0aRNWq9UpfxUqVKBUqVIFOn99+/alVatWTnkB5etiX331FTVq1OCee+4hKiqKatWq8cEHHzj279u3j8OHDzvlKzw8nFq1ahXIfNWpU4fly5eza9cuALZu3cpPP/1EixYtAOXrcrKTmzVr1hAREUGNGjUcxzRp0gQvLy/WrVt33WP2RKdOncJisRAREQEoZxm0KHsu+vfff0lPT6dYsWJO7cWKFWPHjh1uisoz2Ww2Bg4cSN26dbnlllsAOHz4MH5+fo4f2gzFihXj8OHDbojS/WbPns3mzZvZsGFDpn3Kl7O9e/fy3nvvMWjQIJ577jk2bNhA//798fPzo0ePHo6cZPXzWRDz9eyzz5KYmEiFChXw9vYmPT2dcePG0b17dwDl6zKyk5vDhw8TFRXltN/Hx4fIyMgCnz+w3187ZMgQunbt6liYXTmzU6EmHqFv3778/vvv/PTTT+4OxWMdOHCAAQMGsGzZMgICAtwdjsez2WzUqFGDF154AYBq1arx+++/M2nSJHr06OHm6DzP3LlzmTFjBjNnzuTmm29my5YtDBw4kJiYGOVLcpXVaqVz584YY3jvvffcHY7H0aXPXFSkSBG8vb0zjbo7cuQI0dHRborK8/Tr149FixaxYsUKSpYs6WiPjo4mNTWVhIQEp+MLav42bdrE0aNHue222/Dx8cHHx4eVK1fy1ltv4ePjQ7FixZSvCxQvXpxKlSo5tVWsWJH9+/cDOHKin0+7p59+mmeffZYuXbpQuXJl7r//fp588knGjx8PKF+Xk53cREdHZxpElpaWxokTJwp0/jKKtPj4eJYtW+boTQPlLIMKtVzk5+dH9erVWb58uaPNZrOxfPlyateu7cbIPIMxhn79+vHFF1/w/fffU6ZMGaf91atXx9fX1yl/O3fuZP/+/QUyf40bN+a3335jy5Ytjq8aNWrQvXt3x2Pl67y6detmmu5l165dxMXFAVCmTBmio6Od8pWYmMi6desKZL6Sk5Px8nL+L8Hb2xubzQYoX5eTndzUrl2bhIQENm3a5Djm+++/x2azUatWresesyfIKNJ2797Nd999R+HChZ32K2f/cfdohvxu9uzZxt/f30ybNs1s27bNPProoyYiIsIcPnzY3aG53eOPP27Cw8PNDz/8YP755x/HV3JysuOYxx57zJQqVcp8//33ZuPGjaZ27dqmdu3abozas1w46tMY5etC69evNz4+PmbcuHFm9+7dZsaMGSYoKMh8+umnjmNefPFFExERYb788kvz66+/mnbt2pkyZcqYs2fPujFy9+jRo4cpUaKEWbRokdm3b5+ZP3++KVKkiHnmmWccxxTkfJ0+fdr88ssv5pdffjGAef31180vv/ziGKGYndw0b97cVKtWzaxbt8789NNPply5cqZr167ueku57nI5S01NNW3btjUlS5Y0W7Zscfo/ICUlxXGOgpazrKhQuw7efvttU6pUKePn52dq1qxp1q5d6+6QPAKQ5dfUqVMdx5w9e9b06dPHFCpUyAQFBZkOHTqYf/75x31Be5iLCzXly9nChQvNLbfcYvz9/U2FChXM5MmTnfbbbDYzbNgwU6xYMePv728aN25sdu7c6aZo3SsxMdEMGDDAlCpVygQEBJgbbrjBPP/8807/aRbkfK1YsSLL31c9evQwxmQvN8ePHzddu3Y1ISEhJiwszPTq1cucPn3aDe/m+rhczvbt23fJ/wNWrFjhOEdBy1lWLMZcMO20iIiIiHgM3aMmIiIi4qFUqImIiIh4KBVqIiIiIh5KhZqIiIiIh1KhJiIiIuKhVKiJiIiIeCgVaiIiIiIeSoWaiIiIiIdSoSbiQUqXLs2ECRPcHUaOyW/vxxP17NmT9u3bO7YbNmzIwIED3RZPbrFYLCxYsACAv/76C4vFwpYtW9wak8j1oEJN5Do4cOAADz74IDExMfj5+REXF8eAAQM4fvy4u0PzCH///Td+fn7ccsst7g7luihdujQWiwWLxUJgYCClS5emc+fOfP/99y6f680332TatGk5FltGEZTx5efnx4033sjYsWPxlIVsYmNj+eeffwrM50UKNhVqIrls79691KhRg927dzNr1iz27NnDpEmTWL58ObVr1+bEiRNuiy09PR2bzea2188wbdo0OnfuTGJiIuvWrcv117Narbn+GlcyevRo/vnnH3bu3MnHH39MREQETZo0Ydy4cS6dJzw8nIiIiByP77vvvuOff/5h9+7djBo1inHjxvHRRx/l+OtcKDU1NVvHeXt7Ex0djY+PT67GI+IJVKiJ5LK+ffvi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", + "image/png": "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x9XXwCUlJfHKK69Qs2ZNChYsSIECBahfvz6rV6++odzMnz+f33//nREjRqQp3lI1b96cVq1a3dD+S5QoQYMGDZg9e7ZT+6xZs6hSpQp33nlnuq9r1qwZly5duuHfTZI56oGTDFm8eDGlS5emfv366a5v0KABpUuXTnPdBdj/KytdujTjx49n06ZNvPvuu1y4cMHRzf7HH3/Qtm1bqlatypgxY/D19WX//v2sX7/esQ+bzUb79u356aefePzxx6lcuTK//fYbb7/9Nnv37mXRokVO77lq1SrmzZvHgAEDKFKkCOXLl6dTp04sWLCAjz76yOk/5EWLFpGYmOi4rikz7/Xoo48yc+ZMevbsSd26dVm1ahVt2rRxmc9ixYrRsGFD5s2bx8iRI53WzZ07F09PT+6//37AXsCMHz+eRx99lNq1axMXF8fWrVvZvn07zZo1c/leVztw4AAAhQsXdmq///77KV++PK+99hrGGABeffVVRowYQdeuXXn00Uc5c+YM7733Hg0aNOCXX35xnM789NNP6devH3Xr1uWZZ57hr7/+on379oSGhhIZGXndeHbu3En9+vXx9vbm8ccfp3Tp0hw4cIDFixfz6quv0rlzZ/bu3cucOXN4++23KVKkCIDjH4mciBHsvQ933XXXNdfXr1+fxo0b8+abb/Lkk09etxeuX79+TJ8+nb59+zJw4EAOHjzIf//7X3755RfWr1/v6A0bPnw4b775Ju3ataNFixb8+uuvtGjRIs0/QH/99ReLFi3i/vvvp0yZMpw6dYqPPvqIhg0bOk5BVq5cmTFjxvDKK6/w+OOPO36W69atmyY+b2/vbPl5uZ7U66lSUlL466+/GDZsGIULF87Q9YMXLlygZcuWdO7cma5du/Lll18ybNgwqlSp4ihiLl++TKNGjdi/fz8DBgygTJkyzJ8/nz59+hATE8OgQYOc9jlr1iySkpJ4+umnOX/+PG+++SZdu3alcePGrFmzhmHDhrF//37ee+89hg4dytSpU68ZX1xcHFOmTKFHjx489thjXLx4kU8//ZQWLVqwZcuWNKezXVm8eDFAml7LrNSzZ08GDRpEfHw8gYGBJCcnM3/+fIYMGZLm+Et1++234+/vz/r163U5TU4wIi7ExMQYwHTo0OG627Vv394AJi4uzhhjzMiRIw1g2rdv77TdU089ZQDz66+/GmOMefvttw1gzpw5c819f/7558bDw8P8+OOPTu2TJ082gFm/fr2jDTAeHh7mjz/+cNr2+++/N4BZvHixU3vr1q1N2bJlM/1eO3bsMIB56qmnnLbr2bOnAczIkSOv+XmMMeajjz4ygPntt9+c2m+//XbTuHFjx3K1atVMmzZtrruv9KxevdoAZurUqebMmTPm+PHjZunSpaZ06dLGYrGYn3/+2Rjzz/epR48eTq8/dOiQ8fT0NK+++qpT+2+//Wa8vLwc7UlJSSYsLMxUr17dJCYmOrb7+OOPDWAaNmzoaDt48KABzLRp0xxtDRo0MEFBQebw4cNO72Oz2RzPJ0yYYABz8ODBbI8xPVar1VgsFvPss8+mWZeavzNnzpi1a9cawEycONGxPioqyun79+OPPxrAzJo1y2k/3333nVP7yZMnjZeXl+nYsaPTdqNGjTKA6d27t6PtypUrJiUlxWm7gwcPGl9fXzNmzBhH288//5wm/6l69+5toqKiHMtZ/fNyLb179zZAmkeJEiXMtm3bnLZNPaZXr17taGvYsKEBzGeffeZoS0xMNOHh4aZLly6OtkmTJhnAzJw509GWlJRk6tSpYwIDAx2/t1KP0aJFi5qYmBjHtsOHDzeAqVatmrFarY72Hj16GB8fH3PlyhWnmP59TCUnJzsdd8YYc+HCBVOsWDHz8MMPO7Vn5HdHjRo1TEhISJr2+Ph4c+bMGccjNjbWsS41d/Pnz7/uvgHTv39/c/78eePj42M+//xzY4wxS5cuNRaLxRw6dMjpmL9ahQoVTKtWra77HpI1dApVXLp48SIAQUFB190udX1cXJxTe//+/Z2Wn376aQC+/fZbAEcPyddff33Ni6jnz59P5cqVqVSpEmfPnnU8Uk8HXn0qomHDhtx+++1ObY0bN6ZIkSLMnTvX0XbhwgWWL19Ot27dMv1eqfEPHDjQ6X2eeeaZdD/D1Tp37oyXl5dTPL///ju7du1yiickJIQ//viDffv2ZWi/V3v44YcpWrQoERERtGnThkuXLjFjxgxq1arltN0TTzzhtLxgwQJsNhtdu3Z1ykN4eDjly5d35GHr1q2cPn2aJ554wqmnpk+fPhQsWPC6sZ05c4Z169bx8MMPU6pUKad1FovF5WfLiRjBforSGEOhQoWuu12DBg249957efPNN7l8+XK628yfP5+CBQvSrFkzp5hr1qxJYGCgI+aVK1eSnJzMU0895fT61J+ff/P19cXDw/7rPCUlhXPnzjkuRdi+fbvLz5eerP55uR4/Pz+WL1/O8uXL+f777/noo48IDAykdevW7N271+XrAwMDnXqjfHx8qF27ttNo62+//Zbw8HB69OjhaPP29mbgwIHEx8ezdu1ap33ef//9TsdGdHQ0YO/1+vdp3ejoaJKSkjh27Ng14/P09HQcdzabjfPnz5OcnEytWrVu6PsTFxeX7jVmL730EkWLFnU8evbsmel9pypUqBAtW7Zkzpw5AMyePZu6desSFRXl8nW34tRR7qBTqOJSamGWWshdy7UKvfLlyzstlytXDg8PD8c1TN26dWPKlCk8+uijvPDCCzRp0oTOnTtz3333Of4o7du3j927d6e5/i7V6dOnnZbLlCmTZhsvLy+6dOnC7NmzSUxMxNfXlwULFmC1Wp3+IGX0vQ4fPoyHh0eaa6IqVqyY7uuuVqRIEZo0acK8efMYO3YsYD996uXlRefOnR3bjRkzhg4dOlChQgXuvPNOWrZsyYMPPkjVqlUz9D6vvPIK9evXx9PTkyJFilC5cmWnP0Cprs7Zvn37MMak+f6lSj3Nd/jwYSDt9zl12pLrSf0De61ralzJiRj/zfzv1PL1jBo1ioYNGzJ58mQGDx6cbsyxsbGEhYWl+/p/H18At912m9P60NDQNIWkzWbjnXfe4YMPPuDgwYNOF69ffao8o7L65+V6PD09adq0qVNb69atKV++PMOHD0/3gvl/K1myZJqCv1ChQuzcudOxfPjwYcqXL+/4nZKqcuXKjvX/dvU/FKnF3NWn21Pbr75+8WozZszgrbfe4s8//8RqtTra0/td5UpQUBDnzp1L0/7UU085TjlnxenVnj178uCDD3LkyBEWLVqU7nWFVzPGZOifL7l5KuDEpYIFC1K8eHGnX4bp2blzJyVKlCA4OPi62139w+3v78+6detYvXo1S5cu5bvvvmPu3Lk0btyYH374AU9PT2w2G1WqVGHixInp7vPqX6rXuv6oe/fufPTRRyxbtoyOHTsyb948KlWqRLVq1RzbZPa9bkb37t3p27cvO3bsoHr16sybN48mTZo4rvMCe6/OgQMH+Prrr/nhhx+YMmUKb7/9NpMnT77mXE3/VqVKlTR/HNNzdc5sNhsWi4Vly5alO21GbhhlllMxhoaGYrFYXP6RBvv3q1GjRrz55ptpejVTY77eZMDXKoSu57XXXmPEiBE8/PDDjB07ltDQUDw8PHjmmWduamoQd/68lCxZkooVK7Ju3TqX26b3vYeMFdyZ3eeNvNfMmTPp06cPHTt25LnnniMsLAxPT0/Gjx/vuCY1MypVqsSOHTs4duwYJUqUcLRXqFCBChUqAGTJaN327dvj6+tL7969SUxMzNBEvRcuXLjmP1SStVTASYa0bduWTz75hJ9++slphGKqH3/8kUOHDtGvX7806/bt2+f0X+b+/fux2WxOs757eHjQpEkTmjRpwsSJE3nttdd46aWXWL16NU2bNqVcuXL8+uuvNGnS5Kb+u2vQoAHFixdn7ty53HPPPaxatcox2jFVRt8rKioKm83GgQMHnHrd9uzZk+F4OnbsSL9+/Rynqfbu3Zvu1B6pIwL79u1LfHw8DRo0YNSoURkq4G5UuXLlMMZQpkwZxx+F9KSeUtm3b5/jtBnYRzIePHjQ6Y/91VJ7v37//ffrxnKt70NOxAj23qhy5co5Ru66MmrUKBo1asRHH32UbswrVqygXr161x3okBrz/v37nX5+zp07l6aQ/PLLL7n33nv59NNPndpjYmKc/hnI7M9OVv683Ijk5GTi4+OzZF9RUVHs3LkTm83m1Av3559/OtZnly+//JKyZcuyYMECpxxdPYApo9q2bcsXX3zBrFmzeP7557MqzDT8/f3p2LEjM2fOpFWrVk7HUnqSk5M5evQo7du3z7aY5B+6Bk4y5LnnnsPf359+/fql6bo/f/48TzzxBAEBAY7pHv7t/fffd1p+7733AByjw64egg84RmWlTkPQtWtXjh07xieffJJm28uXL3Pp0qUMfQ4PDw/uu+8+Fi9ezOeff05ycrLT6aDMvFdq/O+++67TNpMmTcpQLGC/vq1FixbMmzePL774Ah8fHzp27Oi0zdX5DgwM5LbbbrupKRoyonPnznh6ejJ69Og0vQvGGEdctWrVomjRokyePJmkpCTHNtOnT3d554SiRYvSoEEDpk6dypEjR9K8R6rUOemu3l9OxJiqTp06bN26NUPbNmzYkEaNGvHGG2+kGbHXtWtXUlJSHKfN/y05OdkRT5MmTfDy8kozLUnq9DL/5unpmebzz58/P811WdfK47Vk5c9LZu3du5c9e/a4LK4zqnXr1pw8edLpmr7k5GTee+89AgMDadiwYZa8T3pSe+3+/T3avHkzGzduvKH9de3aldtvv52xY8eyadOmdLe5md7Hfxs6dCgjR45kxIgRLrfdtWsXV65cSXdks2Q99cBJhpQvX54ZM2bQq1cvqlSpkuZODGfPnmXOnDnpzpF18OBB2rdvT8uWLdm4caNj2o3UX8xjxoxh3bp1tGnThqioKE6fPs0HH3xAyZIlHb19Dz74IPPmzeOJJ55g9erV1KtXj5SUFP7880/mzZvH999/n+ai/Gvp1q0b7733HiNHjqRKlSqOa2BSZfS9qlevTo8ePfjggw+IjY2lbt26rFy5kv3792cqt926deOBBx7ggw8+oEWLFmnuNHD77bfTqFEjatasSWhoKFu3buXLL79kwIABmXqfzCpXrhzjxo1j+PDhHDp0iI4dOxIUFMTBgwdZuHAhjz/+OEOHDsXb25tx48bRr18/GjduTLdu3Th48CDTpk3L0PVl7777Lvfccw933XUXjz/+uOO4Wrp0qeOWTzVr1gTsF2l3794db29v2rVrl2MxAnTo0IHPP/+cvXv3Xre3L9XIkSO5995707Q3bNiQfv36MX78eHbs2EHz5s3x9vZm3759zJ8/n3feeYf77ruPYsWKMWjQIN566y3Hz8+vv/7KsmXLKFKkiFNPTtu2bRkzZgx9+/albt26/Pbbb8yaNSvNZytXrhwhISFMnjyZoKAgChQoQHR09HWvw8qqn5frSU5OZubMmYD9lOyhQ4eYPHkyNpvthnuprvb444/z0Ucf0adPH7Zt20bp0qX58ssvWb9+PZMmTXI5SOtmtG3blgULFtCpUyfatGnDwYMHmTx5MrfffvsN9TB6e3uzcOFCWrRowT333EPnzp2pX78+BQoU4NixY3zzzTccOXIk3SmNvvrqK0ev47/17t073dPd1apVy3ARvXz5cgICAm5oeiO5ATk+7lXytJ07d5oePXqY4sWLG29vbxMeHm569OiRZioMY/6ZXmHXrl3mvvvuM0FBQaZQoUJmwIAB5vLly47tVq5caTp06GAiIiKMj4+PiYiIMD169DB79+512l9SUpJ54403zB133GF8fX1NoUKFTM2aNc3o0aOdhsvzv2Hw12Kz2UxkZKQBzLhx49LdJqPvdfnyZTNw4EBTuHBhU6BAAdOuXTtz9OjRDE0FkCouLs74+/unmeIg1bhx40zt2rVNSEiI8ff3N5UqVTKvvvqqSUpKuu5+MzptwPWmBDDGmK+++srcc889pkCBAqZAgQKmUqVKpn///mbPnj1O233wwQemTJkyxtfX19SqVcusW7cuzXQK6U0jYowxv//+u+nUqZMJCQkxfn5+pmLFimbEiBFO24wdO9aUKFHCeHh4pJlSJCtjvJbExERTpEgRM3bs2AznL3WKi/Smgfn4449NzZo1jb+/vwkKCjJVqlQxzz//vDl+/Lhjm+TkZDNixAgTHh5u/P39TePGjc3u3btN4cKFzRNPPOHY7sqVK+bZZ581xYsXN/7+/qZevXpm48aN6X62r7/+2tx+++3Gy8vL6Xtx9TQiqbLy5yU96U0jEhwcbJo0aWJWrFjhtO21phG544470t3v1Z/n1KlTpm/fvqZIkSLGx8fHVKlSJc2xmHqMTpgwId33vvrnadq0aQZwTMuTGtO/826z2cxrr71moqKijK+vr6lRo4ZZsmRJujFm5ndHTEyMGTNmjKlRo4YJDAw0Pj4+JjIy0tx3331ppn9Jjf9aj9RpYFz9/jTm2sd8dHS0eeCBBzIUu9w8izFZ1M8qIpLPjR07lmnTprFv375rXsye3WJiYihUqBDjxo1Lcz2aiLvs2LGDu+66i+3bt2d6YmK5MboGTkQkgwYPHkx8fDxffPFFjrxfenPJpV5j+e9bNYm42+uvv859992n4i0HqQdORCSXmj59OtOnT6d169YEBgby008/MWfOHJo3b87333/v7vBExI00iEFEJJeqWrUqXl5evPnmm8TFxTkGNowbN87doYmIm6kHTkRERCSP0TVwIiIiInmMCjgRERGRPEbXwGGfOPL48eMEBQXpJrwiIiKSrYwxXLx4kYiICKdbu2WGCjjg+PHjWXqDchERERFXjh49SsmSJW/otSrgwHELlaNHjxIcHJzl+7darfzwww+OW+ZIWsqRa8qRa8qRa8qRa8qRa8qRa9fLUVxcHJGRkTd1Cze3FnDr1q1jwoQJbNu2jRMnTrBw4UKnG3lf63Tmm2++6bhpeunSpTl8+LDT+vHjx/PCCy9kOI7U9wkODs62Ai4gIIDg4GAd6NegHLmmHLmmHLmmHLmmHLmmHLmWkRzdzGVbbh3EcOnSJapVq8b777+f7voTJ044PaZOnYrFYqFLly5O240ZM8Zpu6effjonwhcRERFxC7f2wLVq1YpWrVpdc314eLjT8tdff829995L2bJlndqDgoLSbHs9iYmJJCYmOpbj4uIAe7VstVozvJ+MSt1nduw7v1COXFOOXFOOXFOOXFOOXFOOXLtejrIib7lmIl+LxZLmFOq/nTp1ipIlSzJjxgx69uzpaC9dujRXrlzBarVSqlQpevbsyeDBg/HyunZtOmrUKEaPHp2mffbs2QQEBNz0ZxERERG5loSEBHr27ElsbOwNX7qVZwYxzJgxg6CgIDp37uzUPnDgQO666y5CQ0PZsGEDw4cP58SJE0ycOPGa+xo+fDhDhgxxLKdeTNi8efNsuwZu+fLlNGvWTNcKXINy5Jpy5Jpy5Jpy5Jpy5Jpy5Nr1cpR65u9m5JkCburUqfTq1Qs/Pz+n9n8XYlWrVsXHx4d+/foxfvx4fH19092Xr69vuuu8vb2z9UDM7v3nB8qRa8qRa8qRa8qRa8qRa8qRa+nlKCtylifuxPDjjz+yZ88eHn30UZfbRkdHk5yczKFDh7I/MBERERE3yBMF3KeffkrNmjWpVq2ay2137NiBh4cHYWFhORCZiIiISM5z6ynU+Ph49u/f71g+ePAgO3bsIDQ0lFKlSgH288Tz58/nrbfeSvP6jRs3snnzZu69916CgoLYuHEjgwcP5oEHHqBQoUI59jlEREREcpJbC7itW7dy7733OpZTr2fr3bs306dPB+CLL77AGEOPHj3SvN7X15cvvviCUaNGkZiYSJkyZRg8eLDTdXEiIiIi+Y1bC7hGjRrhahaTxx9/nMcffzzddXfddRebNm3KjtBEREREcq08cQ2ciIiIiPxDBZyIiIhIHqMCTkRERCSPyTMT+YrcKmw2w97TF4lNsFIwwJsKYUF4eFjcHZaIiOQiKuBEcpFth88zY8Nh9p+OJyk5BR8vT24LC6R33SiqRgS5OzwREckldApVJJfYdvg8ry7dze/HYgn286JkoQCC/bz443gsry7dzY6jF9wdooiI5BIq4ERyAZvNMGPDYWISrJQuHEABXy88PSwU8PUiKjSA2MtW5mw+6u4wRUTyP5vN3RFkiAo4kVxg7+mL7D8dT1iQLxaL8/VuFouFooG+HDhzyU3RiYjcIk6fhgYNYNEid0fikgo4kVwgNsFKUnIKft6e6a738/YkKTklh6MSEbmF7NoF0dGwfj0MGABXrrg7outSASeSCxQM8MbHy5Mr1vSLtCtW+4AGERHJBsuXQ506cOgQlCsHK1eCn5+7o7ouFXAiuUCFsCBuCwvkTHximtvLGWM4E59IuaIF3BSdiEg+9vHH0KoVxMXBPffApk1QsaK7o3JJBZxILuDhYaF33SgK+ntz+HwClxKTSbEZLiUmc/h8AgX9vekRHenuMEVE8pfXX4d+/SAlBR54AFasgCJF3B1VhqiAE8klakaF8lKbytwRUZC4K8n8fSGBuCvJ3BlRkJfaVKZ6ZCF3hygikr+0aQPBwTBmDHz2Gfj6ujuiDNNEviK5SM2oUGpEFkr3TgxWq9Xd4YmI5H1WK3h7259XqQJ790KxYu6N6QaoB04kl/HwsFApPJjosoWpFB6s22iJiGSVHTugcmX46ad/2vJg8QYq4ERERORWsHixfZDCgQPw4otw1YCxvEYFnIiIiORfxsCkSdChA1y6BE2awDffgCVvn91QASciIiL5U3KyfVLewYPthdxjj8GyZRAS4u7IbpoGMYiIiEj+k5AAnTvD99/be9smTIAhQ/J8z1sqFXAiIiKS//j52XvaAgJg1izo2NHdEWUpFXAiIiKS/3h4wLRpsH+/fbqQfEbXwImIiEj+MG8e9O4NNpt92d8/XxZvoAJORERE8jpj4LXXoFs3+x0VZs50d0TZTqdQRUREJO9KSrLfz3T6dPvyM89Ar17ujChHqIATERGRvOn8eftI07Vr7de8vfcePPWUu6PKESrgREREJO/Zt89+M/p9+yAoyH79W8uW7o4qx6iAExERkbzn1Ck4fBhKlYIlS/LtYIVrUQEnIiIiec8998DChXDXXRAe7u5ocpxGoYqIiEjuZ7PBmDGwc+c/ba1b35LFG6iAExERkdzu8mXo2RNGjoR27SA+3t0RuZ1OoYqIiEjudeqU/TZYmzaBtzeMHg2Bge6Oyu1UwImIiEju9Mcf9pGmhw9DoUKwYAE0auTuqHIFnUIVERGR3OeHH6BuXXvxdttt9h44FW8OKuBEREQkdzEGJk2CuDioX99evFWo4O6ochUVcCIiIpK7WCwwZw689BIsXw6FC7s7olxHBZyIiIi4X3w8TJli730DKFgQxo0DX1/3xpVLaRCDiIiIuNexY/bpQX75BRISYOBAd0eU66mAExEREff55Rdo2xaOH4eiReHuu90dUZ6gU6giIiLiHt98Y78l1vHjcPvtsHkz1Knj7qjyBBVwIiIikrOMgbfftk/Qm5AAzZrB+vVQpoy7I8szVMCJiIhIzvrtNxg61F7I9esHS5dCSIi7o8pTdA2ciIiI5KyqVe09cMnJMHiwfdoQyRQVcCIiIpL9Dh60f009TaqRpjdFp1BFREQke23cCNHR9vuaxsS4O5p8QQWciIiIZJ+5c+Hee+HMGfDzg8uX3R1RvqACTkRERLKeMfDqq9C9OyQm2ifqXbcOihd3d2T5ggo4ERERyVqJidCnD7z8sn158GBYuBACA90aVn6iQQwiIiKStYYOhc8+A09PeO89ePJJd0eU76gHTkRERLLWiy/CnXfa53dT8ZYt1AMnIiIiN+/IEShVyv68eHHYscPeAyfZQj1wIiIicnOmT4fy5WHWrH/aVLxlK7cWcOvWraNdu3ZERERgsVhYtGiR0/o+ffpgsVicHi1btnTa5vz58/Tq1Yvg4GBCQkJ45JFHiI+Pz8FPISIicouy2eCll6BvX0hKgu+/d3dEtwy3FnCXLl2iWrVqvP/++9fcpmXLlpw4ccLxmDNnjtP6Xr168ccff7B8+XKWLFnCunXrePzxx7M7dBERkVuaR2Iinr16wWuv2RteftneEyc5wq3XwLVq1YpWrVpddxtfX1/Cw8PTXbd7926+++47fv75Z2rVqgXAe++9R+vWrfnPf/5DRERElscsIiJyyzt1inojRuCxdy94e8Mnn0Dv3u6O6paS6wcxrFmzhrCwMAoVKkTjxo0ZN24chQsXBmDjxo2EhIQ4ijeApk2b4uHhwebNm+nUqVO6+0xMTCQxMdGxHBcXB4DVasVqtWb5Z0jdZ3bsO79QjlxTjlxTjlxTjlxTjlyIi8OzXj1CjxzBhIaSMm8epkEDUL6cXO84yopjK1cXcC1btqRz586UKVOGAwcO8OKLL9KqVSs2btyIp6cnJ0+eJCwszOk1Xl5ehIaGcvLkyWvud/z48YwePTpN+w8//EBAQECWf45Uy5cvz7Z95xfKkWvKkWvKkWvKkWvK0bVVio6mRHIym15+mUvx8fDtt+4OKddK7zhKSEi46f3m6gKue/fujudVqlShatWqlCtXjjVr1tCkSZMb3u/w4cMZMmSIYzkuLo7IyEiaN29OcHDwTcWcHqvVyvLly2nWrBne3t5Zvv/8QDlyTTlyTTlyTTlyTTm6hitX7PcyBaxNmrD6m2+4t2NH5egarnccpZ75uxm5uoC7WtmyZSlSpAj79++nSZMmhIeHc/r0aadtkpOTOX/+/DWvmwP7dXW+vr5p2r29vbP1QMzu/ecHypFrypFrypFrypFrytH/pKTY76ywaROsWgX+/gAkFyigHGVAejnKipzlqXng/v77b86dO0fx/90It06dOsTExLBt2zbHNqtWrcJmsxEdHe2uMEVERPKH+Hjo2BEmTbIXcJomJNdwaw9cfHw8+/fvdywfPHiQHTt2EBoaSmhoKKNHj6ZLly6Eh4dz4MABnn/+eW677TZatGgBQOXKlWnZsiWPPfYYkydPxmq1MmDAALp3764RqCIiIjfj77+hXTv7HRV8fe33Nu3Y0d1Ryf+4tQdu69at1KhRgxo1agAwZMgQatSowSuvvIKnpyc7d+6kffv2VKhQgUceeYSaNWvy448/Op3+nDVrFpUqVaJJkya0bt2ae+65h48//thdH0lERCTv27YNoqPtxVtYGKxZA127ujsq+Re39sA1atQIY8w113+fga7a0NBQZs+enZVhiYiI3Lq+/x46d4aEBLjjDliyBEqXdndUcpU8dQ2ciIiIZLNy5ewDFZo3h/XrVbzlUnlqFKqIiIhkA2PAYrE/v+02e+FWrhx4qUzIrdQDJyIiciuLiYHWreG77/5pq1hRxVsup++OiIjIrergQWjTBnbvhl9/hb/+ckzWK7mbeuBERERuRRs22Eea7t4NJUrA0qUq3vIQFXAiIiK3mi++gMaN4cwZqFEDNm+2f5U8QwWciIjIrcIYGDcOevSAxETo0AF+/NHeAyd5igo4ERGRW8nhw/avzz4LX30FBQq4Nx65IRrEICIicquwWOCDD6BtW3vvm+RZ6oETERHJz/bsgSefhORk+7K3t4q3fEA9cCIiIvnV6tX222LFxECxYjBqlLsjkiyiHjgREZH8aNo0++2wYmLg//4PnnrK3RFJFlIBJyIikp/YbPDii/Dww/bTpt26wapVEBbm7sgkC6mAExERyS8uX7YXbOPH25dHjIDZs+03p5d8RdfAiYiI5BcHDsC339oHKkyZAg895O6IJJuogBMREckv7rwT5s6F4GBo0MDd0Ug2UgEnIiKSl333HYSE2AcqgH2ON8n3dA2ciIhIXvX++9CmjX1et6NH3R2N5CAVcCIiInlNSgo88wwMGGAfddq6tX2eN7ll6BSqiIhIXnLxov1m9EuX2pfHj4dhw+y3yZJbhgo4ERGRvOLoUWjXDn79Ffz84PPP4b773B2VuIEKOBERkbxi3Dh78VasGHzzDdSu7e6IxE1UwImIiOQVEyfaJ+sdOxaiotwdjbiRBjGIiIjkVsbYr3Uzxr5coAB89pmKN1EBJyIikitZrdCvn31et3Hj3B2N5DI6hSoiIpLbxMTYByesXGkfXRoc7O6IJJdRASciIpKb/PWXfXLeP/+0nzKdM8c+8lTkX1TAiYiI5BYbNtjvqnD2LJQsCYsXQ/Xq7o5KciEVcCIiIrnB+fPQsqV9ot6aNe3ThEREuDsqyaU0iEFERCQ3CA2Fd96BTp1g7VoVb3JdKuBERETcJTERDh36Z7lvX/jqK/u1byLXoQJORETEHc6ehaZNoXFjOH36n3bd01QyQAWciIhITvvzT4iOhp9+sl/7duCAuyOSPEYFnIiISE5atQrq1LFPF1KmDGzcaF8WyQQVcCIiIjll6lRo0cI+UW/durB5M1Su7O6oJA9SASciIpITPv0UHnkEkpOhRw/7XRaKFnV3VJJHqYATERHJCZ06QYUK8MorMGsW+Pm5OyLJwzSRr4iISHa5eBGCguzPQ0Nh+3ZNESJZQj1wIiIi2WHnTrjjDvjww3/aVLxJFlEBJyIiktW+/Rbq1YOjR+H99yEpyd0RST6jAk5ERCQr/fe/0K4dxMfDvffCjz+Cj4+7o5J8RgWciIhIVkhOhoED4emnwWazjzj97jsoVMjdkUk+pEEMIiIiN8tms48yXbLEvvzGG/Dcc7otlmQb9cCJiIjcLA8PqF8f/P3tN6N//nkVb5Kt1AMnIiJyo4z5p1B77jm47z4oW9a9McktQT1wIiIiN2LBAvtI04sX7csWi4o3yTEq4ERERDLDGHjzTejSxX4j+kmT3B2R3IJ0ClVERCSjkpLgqafs9zUFGDAAhg93b0xyS1IBJyIikhEXLth73Vavtg9amDTJPmWIiBuogBMREXHlr7+gdWvYswcCA+GLL6BNG3dHJbcwFXAiIiKu+PhAXByULGmf661aNXdHJLc4tw5iWLduHe3atSMiIgKLxcKiRYsc66xWK8OGDaNKlSoUKFCAiIgIHnroIY4fP+60j9KlS2OxWJwer7/+eg5/EhERyddKlrTfVWHLFhVvkiu4tYC7dOkS1apV4/3330+zLiEhge3btzNixAi2b9/OggUL2LNnD+3bt0+z7ZgxYzhx4oTj8bSuSRARkZthDB5jxsC8ef+0Va0KxYu7LyaRf3HrKdRWrVrRqlWrdNcVLFiQ5cuXO7X997//pXbt2hw5coRSpUo52oOCgggPD8/WWEVE5BZx5Qo1J07E88cfwc8P6tSByEh3RyXiJE9dAxcbG4vFYiEkJMSp/fXXX2fs2LGUKlWKnj17MnjwYLy8rv3REhMTSUxMdCzHxcUB9tO2Vqs1y+NO3Wd27Du/UI5cU45cU45cU45cOHMGjy5dKLlpE8bLi5RJkzDh4aB8OdFx5Nr1cpQVebMYY8xN7yULWCwWFi5cSMeOHdNdf+XKFerVq0elSpWYNWuWo33ixIncddddhIaGsmHDBoYPH07fvn2ZOHHiNd9r1KhRjB49Ok377NmzCQgIuOnPIiIieU/g0aP837hxFDh1CmtAAFuGDeOsrneTbJCQkEDPnj2JjY0lODj4hvaRJwo4q9VKly5d+Pvvv1mzZs11P+zUqVPp168f8fHx+Pr6prtNej1wkZGRnD179oYTeT1Wq5Xly5fTrFkzvL29s3z/+YFy5Jpy5Jpy5JpylD7LqlV4duuGJTYWW5kyrH72Wer07ascXYOOI9eul6O4uDiKFClyUwVcrj+FarVa6dq1K4cPH2bVqlUuP2h0dDTJyckcOnSIihUrpruNr69vusWdt7d3th6I2b3//EA5ck05ck05ck05usrKlRAbC/XqkTJ/PvFbtihHGaAcuZZejrIiZ7m6gEst3vbt28fq1aspXLiwy9fs2LEDDw8PwsLCciBCERHJF8aPhxIloF8/8PR0dzQiLrm1gIuPj2f//v2O5YMHD7Jjxw5CQ0MpXrw49913H9u3b2fJkiWkpKRw8uRJAEJDQ/Hx8WHjxo1s3ryZe++9l6CgIDZu3MjgwYN54IEHKFSokLs+loiI5HaXLtlvSP/ii+Dray/aBg2yr9OF+ZIHuLWA27p1K/fee69jeciQIQD07t2bUaNG8c033wBQvXp1p9etXr2aRo0a4evryxdffMGoUaNITEykTJkyDB482LEfERGRNI4fh/btYds2OHYMpkxxd0QimebWAq5Ro0ZcbwyFq/EVd911F5s2bcrqsEREJL/69Vdo2xb+/huKFIG+fd0dkcgNceudGERERHLM0qVQr569eKtUCTZtsi+L5EEq4EREJH8zBt59137a9NIlaNwYNmyAcuXcHZnIDVMBJyIi+dvp0zByJNhs8Oij9pvSa6Cb5HG5ehoRERGRm1asGHz1FWzfDs8+CxaLuyMSuWkq4EREJP85csT+uOce+3LjxvaHSD6hU6giIpK/bNkCtWvbR5vu3u3uaESyhQo4ERHJP778Eho2hFOnoFQpKFDA3RGJZAsVcCIikvcZA6+/DvffD1euQOvWsH69vYgTyYdUwImISN6WlASPPALDh9uXBw6Er7+GoCD3xiWSjTSIQURE8rZJk2DaNPDwgHfegQED3B2RSLZTASciInnboEHw44/w1FPQqpW7oxHJESrgREQk79m5E+64Azw9wdcXFi92d0QiOUrXwImISN7y+edQqxY8/7y7IxFxGxVwIiKSNxgDr7wCDz0EVqt9ot7kZHdHJeIWKuBERCT3u3IFevaEsWPtyy+8AHPngpeuBJJbk458ERHJ3U6fho4dYeNGe8H28cfQt6+7oxJxKxVwIiKSeyUnw733wq5dEBICCxbYl0VucTqFKiIiuZeXF4weDeXLw6ZNKt5E/kcFnIiI5D7nzv3z/L774LffoGJF98UjksuogBMRkdwjJQWGDoUqVeDo0X/afX3dF5NILqQCTkREcodLl6BLF3jrLThxAr7/3t0RieRaGsQgIiLud/w4tGsH27fbe9umTYMePdwdlUiupQJORETca8cOaNsWjh2DokVh0SKoW9fdUYnkairgRETEfTZuhGbN7KdPK1eGJUugbFl3RyWS66mAExER97nzTihXzt7z9uWX9rneRMQlFXAiIpKzUlLAwwMsFggKguXLoVAh8PZ2d2QieUamR6F+9913/PTTT47l999/n+rVq9OzZ08uXLiQpcGJiEg+Exdnv97tzTf/aQsLU/EmkkmZLuCee+454uLiAPjtt9949tlnad26NQcPHmTIkCFZHqCIiOQThw9DvXrw3Xf2m9KfOuXuiETyrEyfQj148CC33347AF999RVt27bltddeY/v27bRu3TrLAxQRkXxg82Zo395+Y/rixWHxYihWzN1RieRZme6B8/HxISEhAYAVK1bQvHlzAEJDQx09cyIiIg7z5kGjRvbirVo12LIFatZ0d1QieVqme+DuuecehgwZQr169diyZQtz584FYO/evZQsWTLLAxQRkTzsjTfghRfsz9u2hTlzIDDQvTGJ5AOZ7oH773//i5eXF19++SUffvghJUqUAGDZsmW0bNkyywMUEZE8LHVakGeesU/Qq+JNJEtkugeuVKlSLFmyJE3722+/nSUBiYhIPtKvn32ut3r13B2JSL6S6R64uLi4dB8XL14kKSkpO2IUEZG8Yv9++6nSc+f+aVPxJpLlMl3AhYSEUKhQoTSPkJAQ/P39iYqKYuTIkdhstuyIV0REcqt16yA6GpYuhUGD3B2NSL6W6VOo06dP56WXXqJPnz7Url0bgC1btjBjxgxefvllzpw5w3/+8x98fX158cUXszxgERHJhT77DB59FKxWqF0b/vMfd0ckkq9luoCbMWMGb731Fl27dnW0tWvXjipVqvDRRx+xcuVKSpUqxauvvqoCTkQkv7PZ4JVX4NVX7cv33w8zZoC/v3vjEsnnMn0KdcOGDdSoUSNNe40aNdi4cSNgn2rkyJEjNx+diIjkXpcvQ8+e/xRvL74IX3yh4k0kB2S6gIuMjOTTTz9N0/7pp58SGRkJwLlz5yhUqNDNRyciIrnXpUv2SXm9vWHaNHsh55HpPysicgMyfQr1P//5D/fffz/Lli3j7rvvBmDr1q38+eeffPnllwD8/PPPdOvWLWsjFRGR3KVIEfuAhVOn7HdaEJEck+kCrn379vz555989NFH7N27F4BWrVqxaNEiSpcuDcCTTz6ZpUGKiEgu8cMPcPIkPPSQfblyZftDRHJUpgs4gDJlyvD6669ndSwiIpKbffQR9O8PFgtUrGifMkRE3OKGCriYmBi2bNnC6dOn08z39lDqf2UiIpI/pKTA88/DxIn25YcegurV3RqSyK0u0wXc4sWL6dWrF/Hx8QQHB2OxWBzrLBaLCjgRkfwkPh569YJvvrEvjxtnH236r9/9IpLzMj1c6Nlnn+Xhhx8mPj6emJgYLly44HicP38+O2IUERF3OHYMGjSwF2++vvYpQl56ScWbSC6Q6R64Y8eOMXDgQAICArIjHhERyS3mzYNffoGiReHrr6FOHXdHJCL/k+kCrkWLFmzdupWyZctmRzwiIpJbPPMMXLgAfftCmTLujkZE/iXTBVybNm147rnn2LVrF1WqVMHb29tpffv27bMsOBERyUHGwOefQ5cuUKCA/VTpmDHujkpE0pHpAu6xxx4DYEw6P9QWi4WUlJSbj0pERHKW1QoDB8LkybBggf2huyqI5FqZLuCunjZERETyuNhY6NrVPkmvxQING2qggkgud0PzwImISD5x6BC0aQO7dkFAAMyZA7oURiTXy1AB9+677/L444/j5+fHu+++e91tBw4cmOE3X7duHRMmTGDbtm2cOHGChQsX0rFjR8d6YwwjR47kk08+ISYmhnr16vHhhx9Svnx5xzbnz5/n6aefZvHixXh4eNClSxfeeecdAgMDMxyHiMgtadMm6NABTp+GiAhYvBjuusvdUYlIBmSogHv77bfp1asXfn5+vP3229fczmKxZKqAu3TpEtWqVePhhx+mc+fOada/+eabvPvuu8yYMYMyZcowYsQIWrRowa5du/Dz8wOgV69enDhxguXLl2O1Wunbty+PP/44s2fPznAcIiK3nKQk6N7dXrzVqGEv3kqUcHdUIpJBGSrgDh48mO7zm9WqVStatWqV7jpjDJMmTeLll1+mQ4cOAHz22WcUK1aMRYsW0b17d3bv3s13333Hzz//TK1atQB47733aN26Nf/5z3+IiIjIslhFRPIVHx/7PG8TJ8KUKaCzFiJ5Sq69Bu7gwYOcPHmSpk2bOtoKFixIdHQ0GzdupHv37mzcuJGQkBBH8QbQtGlTPDw82Lx5M506dUp334mJiSQmJjqW4+LiALBarVit1iz/LKn7zI595xfKkWvKkWvKkQuJiaT88gvwvxzVqGGfNsTe4MbAchcdR64pR65dL0dZkbcMFXBDhgzJ8A4npt7s+CadPHkSgGLFijm1FytWzLHu5MmThIWFOa338vIiNDTUsU16xo8fz+jRo9O0//DDD9l6h4nly5dn277zC+XINeXINeUoLe+4OGq/8QYh+/dT8LXXUIZc03HkmnLkWno5SkhIuOn9ZqiA++V//7Gl2r59O8nJyVSsWBGAvXv34unpSc2aNW86oJwwfPhwp6I0Li6OyMhImjdvTnBwcJa/n9VqZfny5TRr1izNxMdipxy5phy5phxdw969eHXsiGX/fkxwMD7x8crRdeg4ck05cu16OUo983czMlTArV692vF84sSJBAUFMWPGDAoVKgTAhQsX6Nu3L/Xr17/pgFKFh4cDcOrUKYoXL+5oP3XqFNWrV3dsc/r0aafXJScnc/78ecfr0+Pr64uvr2+adm9v72w9ELN7//mBcuSacuSacvQva9ZA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", "text/plain": [ "
" ] @@ -461,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", "metadata": {}, "outputs": [], @@ -471,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "75df8b20-dee7-420d-9231-229db9d53915", "metadata": {}, "outputs": [], @@ -496,7 +378,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "id": "98205773-013c-45d4-a8bc-302d8a33e97f", "metadata": {}, "outputs": [], @@ -507,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "id": "b3165da9-4c91-44f2-bad2-941995d22b73", "metadata": {}, "outputs": [], @@ -558,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", "metadata": {}, "outputs": [], @@ -569,7 +451,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "id": "6210a31b-85be-44a6-8cce-9569778e094d", "metadata": {}, "outputs": [], @@ -640,7 +522,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", "metadata": {}, "outputs": [], @@ -650,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", "metadata": {}, "outputs": [], @@ -686,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", "metadata": {}, "outputs": [ @@ -804,7 +686,7 @@ "14 POINT (-118.34876716762236 34.19656151035557) new_5 " ] }, - "execution_count": 22, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -816,7 +698,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", "metadata": {}, "outputs": [ @@ -934,7 +816,7 @@ "6 POINT (-118.30550179211235 34.16893683695737) new_5 " ] }, - "execution_count": 23, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -946,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "id": "d3b5d469-48b5-49df-ae91-315466705ddb", "metadata": {}, "outputs": [], @@ -959,14 +841,14 @@ "gdf_orange = gdf_orange.to_crs(epsg=32611)\n", "gdf_blue = gdf_blue.to_crs(epsg=32611)\n", "\n", - "buffer_distance = 804.672 # in meters\n", + "buffer_distance = 404.672 # in meters\n", "gdf_orange['buffer'] = gdf_orange.geometry.buffer(buffer_distance)\n", "gdf_blue['buffer'] = gdf_blue.geometry.buffer(buffer_distance)" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", "metadata": {}, "outputs": [], @@ -980,7 +862,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 24, "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", "metadata": {}, "outputs": [], @@ -991,7 +873,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 25, "id": "174076a2-a975-41d8-88d3-ca874351d57a", "metadata": {}, "outputs": [], @@ -1009,7 +891,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", "metadata": {}, "outputs": [], @@ -1027,7 +909,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 27, "id": "bbf7b71a-c05a-4651-955b-484947ced81c", "metadata": {}, "outputs": [ @@ -1200,23 +1082,23 @@ " 1075\n", " 1197\n", " 676086.191403\n", - " Glenoaks & Verdugo\n", - " eastbound\n", + " Glenoaks & Providencia\n", + " westbound\n", " adding_existing\n", - " Glenoaks & Verdugo eastbound\n", - " 34.181054\n", - " -118.303481\n", - " POINT (379878.502 3782998.867)\n", - " new_31\n", - " POLYGON ((380620.646 3782807.227, 380651.934 3...\n", - " 32832.425491\n", - " 0.048562\n", - " 364.121512\n", - " 8.401310\n", - " 52.204671\n", - " 52.010421\n", - " 42.589299\n", - " 207.313248\n", + " Glenoaks & Providencia westbound\n", + " 34.179274\n", + " -118.301218\n", + " POINT (380084.556 3782798.877)\n", + " new_34\n", + " POLYGON ((380440.877 3782607.168, 380421.029 3...\n", + " 380.647140\n", + " 0.000563\n", + " 4.221492\n", + " 0.097402\n", + " 0.605242\n", + " 0.602990\n", + " 0.493765\n", + " 2.403514\n", " \n", " \n", " 1\n", @@ -1283,23 +1165,23 @@ " 1075\n", " 1197\n", " 676086.191403\n", - " Glenoaks & Verdugo\n", - " westbound\n", - " new_stop\n", - " Glenoaks & Verdugo westbound\n", - " 34.181301\n", - " -118.302910\n", - " POINT (379931.498 3783025.584)\n", - " new_32\n", - " POLYGON ((380620.646 3782807.227, 380685.842 3...\n", - " 44149.446194\n", - " 0.065302\n", - " 489.630689\n", - " 11.297160\n", - " 70.199118\n", - " 69.937912\n", - " 57.269420\n", - " 278.772127\n", + " Glenoaks / Alameda\n", + " eastbound\n", + " adding_existing\n", + " Glenoaks / Alameda eastbound\n", + " 34.176921\n", + " -118.297872\n", + " POINT (380389.550 3782534.037)\n", + " new_35\n", + " POLYGON ((380620.646 3782807.227, 380769.228 3...\n", + " 122709.629584\n", + " 0.181500\n", + " 1360.886843\n", + " 31.399496\n", + " 195.112477\n", + " 194.386478\n", + " 159.175482\n", + " 774.823411\n", " \n", " \n", " 2\n", @@ -1366,23 +1248,23 @@ " 1075\n", " 1197\n", " 676086.191403\n", - " Glenoaks & Providencia\n", - " eastbound\n", + " Glenoaks / Alameda\n", + " westbound\n", " adding_existing\n", - " Glenoaks & Providencia eastbound\n", - " 34.179646\n", - " -118.301035\n", - " POINT (380101.930 3782839.941)\n", - " new_33\n", - " POLYGON ((380620.646 3782807.227, 380864.729 3...\n", - " 130996.792884\n", - " 0.193758\n", - " 1452.793986\n", - " 33.520053\n", - " 208.289349\n", - " 207.514318\n", - " 169.925357\n", - " 827.150911\n", + " Glenoaks / Alameda westbound\n", + " 34.176369\n", + " -118.297764\n", + " POINT (380398.772 3782472.656)\n", + " new_36\n", + " POLYGON ((380620.646 3782807.227, 380721.787 3...\n", + " 129254.167651\n", + " 0.191180\n", + " 1433.467746\n", + " 33.074142\n", + " 205.518515\n", + " 204.753795\n", + " 167.664872\n", + " 816.147480\n", " \n", " \n", " 3\n", @@ -1449,23 +1331,23 @@ " 1075\n", " 1197\n", " 676086.191403\n", - " Glenoaks & Providencia\n", - " westbound\n", + " Alameda & San Fernando\n", + " eastbound\n", " adding_existing\n", - " Glenoaks & Providencia westbound\n", - " 34.179274\n", - " -118.301218\n", - " POINT (380084.556 3782798.877)\n", - " new_34\n", - " POLYGON ((380620.646 3782807.227, 380860.718 3...\n", - " 132889.908002\n", - " 0.196558\n", - " 1473.789205\n", - " 34.004472\n", - " 211.299466\n", - " 210.513235\n", - " 172.381053\n", - " 839.104576\n", + " Alameda & San Fernando eastbound\n", + " 34.174366\n", + " -118.299524\n", + " POINT (380233.733 3782252.579)\n", + " new_37\n", + " POLYGON ((380436.486 3782602.281, 380458.557 3...\n", + " 20057.076557\n", + " 0.029666\n", + " 222.439035\n", + " 5.132296\n", + " 31.891433\n", + " 31.772767\n", + " 26.017476\n", + " 126.646071\n", " \n", " \n", " 4\n", @@ -1532,23 +1414,23 @@ " 1075\n", " 1197\n", " 676086.191403\n", - " Glenoaks / Alameda\n", - " eastbound\n", + " Alameda & San Fernando\n", + " westbound\n", " adding_existing\n", - " Glenoaks / Alameda eastbound\n", - " 34.176921\n", - " -118.297872\n", - " POINT (380389.550 3782534.037)\n", - " new_35\n", - " POLYGON ((380620.646 3782807.227, 381011.875 3...\n", - " 274680.734232\n", - " 0.406281\n", - " 3046.292280\n", - " 70.286552\n", - " 436.751694\n", - " 435.126571\n", - " 356.308126\n", - " 1734.412075\n", + " Alameda & San Fernando westbound\n", + " 34.174307\n", + " -118.300256\n", + " POINT (380166.186 3782246.963)\n", + " new_38\n", + " POLYGON ((380408.138 3782570.733, 380422.907 3...\n", + " 3957.591114\n", + " 0.005854\n", + " 43.890880\n", + " 1.012686\n", + " 6.292704\n", + " 6.269290\n", + " 5.133676\n", + " 24.989353\n", " \n", " \n", "\n", @@ -1654,49 +1536,49 @@ "4 444 1071 1075 1197 676086.191403 \n", "\n", " stop_name direction change_type \\\n", - "0 Glenoaks & Verdugo eastbound adding_existing \n", - "1 Glenoaks & Verdugo westbound new_stop \n", - "2 Glenoaks & Providencia eastbound adding_existing \n", - "3 Glenoaks & Providencia westbound adding_existing \n", - "4 Glenoaks / Alameda eastbound adding_existing \n", + "0 Glenoaks & Providencia westbound adding_existing \n", + "1 Glenoaks / Alameda eastbound adding_existing \n", + "2 Glenoaks / Alameda westbound adding_existing \n", + "3 Alameda & San Fernando eastbound adding_existing \n", + "4 Alameda & San Fernando westbound adding_existing \n", "\n", " stop_dir_key latitude longitude \\\n", - "0 Glenoaks & Verdugo eastbound 34.181054 -118.303481 \n", - "1 Glenoaks & Verdugo westbound 34.181301 -118.302910 \n", - "2 Glenoaks & Providencia eastbound 34.179646 -118.301035 \n", - "3 Glenoaks & Providencia westbound 34.179274 -118.301218 \n", - "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "0 Glenoaks & Providencia westbound 34.179274 -118.301218 \n", + "1 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "2 Glenoaks / Alameda westbound 34.176369 -118.297764 \n", + "3 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "4 Alameda & San Fernando westbound 34.174307 -118.300256 \n", "\n", " pt_geom stop_id \\\n", - "0 POINT (379878.502 3782998.867) new_31 \n", - "1 POINT (379931.498 3783025.584) new_32 \n", - "2 POINT (380101.930 3782839.941) new_33 \n", - "3 POINT (380084.556 3782798.877) new_34 \n", - "4 POINT (380389.550 3782534.037) new_35 \n", + "0 POINT (380084.556 3782798.877) new_34 \n", + "1 POINT (380389.550 3782534.037) new_35 \n", + "2 POINT (380398.772 3782472.656) new_36 \n", + "3 POINT (380233.733 3782252.579) new_37 \n", + "4 POINT (380166.186 3782246.963) new_38 \n", "\n", " geometry area_2 \\\n", - "0 POLYGON ((380620.646 3782807.227, 380651.934 3... 32832.425491 \n", - "1 POLYGON ((380620.646 3782807.227, 380685.842 3... 44149.446194 \n", - "2 POLYGON ((380620.646 3782807.227, 380864.729 3... 130996.792884 \n", - "3 POLYGON ((380620.646 3782807.227, 380860.718 3... 132889.908002 \n", - "4 POLYGON ((380620.646 3782807.227, 381011.875 3... 274680.734232 \n", + "0 POLYGON ((380440.877 3782607.168, 380421.029 3... 380.647140 \n", + "1 POLYGON ((380620.646 3782807.227, 380769.228 3... 122709.629584 \n", + "2 POLYGON ((380620.646 3782807.227, 380721.787 3... 129254.167651 \n", + "3 POLYGON ((380436.486 3782602.281, 380458.557 3... 20057.076557 \n", + "4 POLYGON ((380408.138 3782570.733, 380422.907 3... 3957.591114 \n", "\n", " area_ratio total_pop_adj workers_with_no_car_adj total_youth_adj \\\n", - "0 0.048562 364.121512 8.401310 52.204671 \n", - "1 0.065302 489.630689 11.297160 70.199118 \n", - "2 0.193758 1452.793986 33.520053 208.289349 \n", - "3 0.196558 1473.789205 34.004472 211.299466 \n", - "4 0.406281 3046.292280 70.286552 436.751694 \n", + "0 0.000563 4.221492 0.097402 0.605242 \n", + "1 0.181500 1360.886843 31.399496 195.112477 \n", + "2 0.191180 1433.467746 33.074142 205.518515 \n", + "3 0.029666 222.439035 5.132296 31.891433 \n", + "4 0.005854 43.890880 1.012686 6.292704 \n", "\n", " total_seniors_adj public_asst_pop_adj inc_total_lowincome_adj \n", - "0 52.010421 42.589299 207.313248 \n", - "1 69.937912 57.269420 278.772127 \n", - "2 207.514318 169.925357 827.150911 \n", - "3 210.513235 172.381053 839.104576 \n", - "4 435.126571 356.308126 1734.412075 " + "0 0.602990 0.493765 2.403514 \n", + "1 194.386478 159.175482 774.823411 \n", + "2 204.753795 167.664872 816.147480 \n", + "3 31.772767 26.017476 126.646071 \n", + "4 6.269290 5.133676 24.989353 " ] }, - "execution_count": 29, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1707,7 +1589,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 28, "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", "metadata": {}, "outputs": [], @@ -1729,7 +1611,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "id": "36e31d14-b88f-4b54-849a-615f5755f369", "metadata": {}, "outputs": [], @@ -1751,7 +1633,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 30, "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", "metadata": {}, "outputs": [], @@ -1765,7 +1647,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 31, "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", "metadata": {}, "outputs": [ @@ -1970,7 +1852,7 @@ "4 0.0 None 80120 " ] }, - "execution_count": 33, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1981,7 +1863,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 32, "id": "4ca8d618-a539-41ff-980c-45a628569ce6", "metadata": {}, "outputs": [], @@ -2001,7 +1883,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 33, "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", "metadata": {}, "outputs": [ @@ -2218,7 +2100,7 @@ "4 0.0 None 80120 [801] 1 " ] }, - "execution_count": 35, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -2229,7 +2111,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 34, "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", "metadata": {}, "outputs": [], @@ -2246,7 +2128,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 35, "id": "935a70bd-867a-49b2-867b-12a1b4f71635", "metadata": {}, "outputs": [], @@ -2259,7 +2141,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 36, "id": "da409a53-ae7b-4f11-a157-d76388882c32", "metadata": {}, "outputs": [], @@ -2278,7 +2160,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 37, "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", "metadata": {}, "outputs": [], @@ -2298,7 +2180,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 38, "id": "e15d37f1-42de-441c-b46c-2ed73103df13", "metadata": {}, "outputs": [], @@ -2317,7 +2199,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 39, "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", "metadata": {}, "outputs": [ @@ -2471,7 +2353,7 @@ "14 Empire / Valpreda 1249 2 " ] }, - "execution_count": 41, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -2482,7 +2364,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 40, "id": "51ba1872-0315-4e91-ac93-1e4512191513", "metadata": {}, "outputs": [ @@ -2658,7 +2540,7 @@ "3 San Fernando / Alameda 5453 1 " ] }, - "execution_count": 42, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -2669,7 +2551,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 41, "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", "metadata": {}, "outputs": [ @@ -2677,14 +2559,14 @@ "data": { "text/plain": [ "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing')]" ] }, - "execution_count": 43, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2699,7 +2581,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 42, "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", "metadata": {}, "outputs": [], @@ -2710,7 +2592,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 43, "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", "metadata": {}, "outputs": [], @@ -2723,7 +2605,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 44, "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", "metadata": {}, "outputs": [], @@ -2739,7 +2621,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 45, "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", "metadata": {}, "outputs": [], @@ -2754,7 +2636,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 46, "id": "f706ac72-936a-46fa-8994-908e72968689", "metadata": {}, "outputs": [], @@ -2788,7 +2670,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 47, "id": "93666c83-c8be-4e00-b455-005fa305e6aa", "metadata": {}, "outputs": [], @@ -2810,7 +2692,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 48, "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", "metadata": {}, "outputs": [ @@ -2876,12 +2758,12 @@ " -118.237278\n", " POINT (385815.509 3769368.949)\n", " new_6\n", - " POLYGON ((386620.181 3769368.949, 386616.307 3...\n", - " 14468.600454\n", - " 387.623467\n", - " 1715.996254\n", - " 1559.872917\n", - " 6804.429329\n", + " POLYGON ((386220.181 3769368.949, 386218.233 3...\n", + " 4217.842162\n", + " 139.410239\n", + " 586.593147\n", + " 428.309606\n", + " 1993.392782\n", " NaN\n", " NaN\n", " 0\n", @@ -2907,12 +2789,12 @@ " -118.307473\n", " POINT (379505.037 3782570.325)\n", " new_27\n", - " POLYGON ((380309.709 3782570.325, 380305.834 3...\n", - " 10611.944862\n", - " 306.987385\n", - " 1827.375548\n", - " 1019.265555\n", - " 5811.143720\n", + " POLYGON ((379909.709 3782570.325, 379907.761 3...\n", + " 2363.596489\n", + " 69.808219\n", + " 432.243641\n", + " 247.954190\n", + " 1308.536414\n", " NaN\n", " NaN\n", " 6\n", @@ -2938,12 +2820,12 @@ " -118.345238\n", " POINT (376067.409 3785875.904)\n", " new_26\n", - " POLYGON ((376872.081 3785875.904, 376868.207 3...\n", - " 4265.089368\n", - " 41.173862\n", - " 772.300857\n", - " 466.130639\n", - " 2059.705932\n", + " POLYGON ((376472.081 3785875.904, 376470.133 3...\n", + " 1353.348123\n", + " 14.113858\n", + " 241.864080\n", + " 130.031029\n", + " 661.384824\n", " NaN\n", " NaN\n", " 0\n", @@ -2980,19 +2862,19 @@ "65 POINT (376067.409 3785875.904) new_26 \n", "\n", " buffer total_pop_adj \\\n", - "45 POLYGON ((386620.181 3769368.949, 386616.307 3... 14468.600454 \n", - "66 POLYGON ((380309.709 3782570.325, 380305.834 3... 10611.944862 \n", - "65 POLYGON ((376872.081 3785875.904, 376868.207 3... 4265.089368 \n", + "45 POLYGON ((386220.181 3769368.949, 386218.233 3... 4217.842162 \n", + "66 POLYGON ((379909.709 3782570.325, 379907.761 3... 2363.596489 \n", + "65 POLYGON ((376472.081 3785875.904, 376470.133 3... 1353.348123 \n", "\n", " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", - "45 387.623467 1715.996254 1559.872917 \n", - "66 306.987385 1827.375548 1019.265555 \n", - "65 41.173862 772.300857 466.130639 \n", + "45 139.410239 586.593147 428.309606 \n", + "66 69.808219 432.243641 247.954190 \n", + "65 14.113858 241.864080 130.031029 \n", "\n", " inc_total_lowincome_adj n_arrivals n_routes n_routes_base \\\n", - "45 6804.429329 NaN NaN 0 \n", - "66 5811.143720 NaN NaN 6 \n", - "65 2059.705932 NaN NaN 0 \n", + "45 1993.392782 NaN NaN 0 \n", + "66 1308.536414 NaN NaN 6 \n", + "65 661.384824 NaN NaN 0 \n", "\n", " nearest_stop_distance_m matched_stop_name matched_stop_id \\\n", "45 94.938646 Cesar E Chavez / Alameda 9218 \n", @@ -3015,7 +2897,7 @@ "65 1 43 " ] }, - "execution_count": 50, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -3026,7 +2908,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 49, "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", "metadata": {}, "outputs": [], @@ -3066,14 +2948,14 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 50, "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", "metadata": {}, "outputs": [], "source": [ "X_scn = df_grouped[[\n", - " # 'n_routes_scn',\n", - " # 'n_arrivals_scn',\n", + " 'n_routes_scn',\n", + " 'n_arrivals_scn',\n", " 'total_pop_adj',\n", " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", @@ -3084,12 +2966,12 @@ "\n", "\n", "\n", - "# X_scn = X_scn.rename(columns={\n", - "# 'n_routes_scn': 'n_routes',\n", - "# 'n_arrivals_scn': 'n_arrivals'\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'n_arrivals_scn': 'n_arrivals'\n", " \n", - "# })\n", - "# X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", "\n", "X_scn = sm.add_constant(X_scn)\n", "X_scn = X_scn[model_fe.model.exog_names]\n", @@ -3098,14 +2980,14 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 51, "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", "metadata": {}, "outputs": [], "source": [ "X_base = df_grouped[[\n", - " # 'n_routes_base',\n", - " # 'n_arrivals_base',\n", + " 'n_routes_base',\n", + " 'n_arrivals_base',\n", " 'total_pop_adj',\n", " 'workers_with_no_car_adj',\n", " 'total_youth_adj',\n", @@ -3114,12 +2996,12 @@ " 'has_rail_connection_dummy'\n", "]].fillna(0)\n", "\n", - "# X_base = X_base.rename(columns={\n", - "# 'n_routes_base': 'n_routes',\n", - "# 'n_arrivals_base': 'n_arrivals'\n", - "# })\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes_base': 'n_routes',\n", + " 'n_arrivals_base': 'n_arrivals'\n", + "})\n", "\n", - "# X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", "\n", "X_base = sm.add_constant(X_base)\n", "X_base = X_base[model_fe.model.exog_names]\n", @@ -3128,7 +3010,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 52, "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", "metadata": {}, "outputs": [], @@ -3140,360 +3022,21 @@ }, { "cell_type": "code", - "execution_count": 55, - "id": "43bf1ccf-3ea4-4faa-ab65-21f26f4c3c5b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
stop_grouptotal_pop_adjn_arrivals_basen_arrivals_scnn_routes_basen_routes_scnworkers_with_no_car_adjtotal_youth_adjtotal_seniors_adjinc_total_lowincome_adjchange_typeridership_changepred_scenariopred_baseline
0Alameda & Keystone4293.7087950.043.00.01.033.057828240.491509761.8251451991.379441new_stop0.01.9411871.941187
1Alameda & Lake9227.69343123.566.51.02.0252.765168949.2440581084.4099764642.170179adding_existing0.07.2196227.219622
2Alameda & Main14507.5213420.043.00.01.0388.9964961558.8573851725.9425946817.928354new_stop0.053.83938153.839381
3Alameda & Mariposa5341.0429300.043.00.01.066.341354321.765127913.4887902552.447381new_stop0.02.4441152.444115
4Alameda & Reese4670.3779700.043.00.01.022.194411198.756101918.9070332212.922437new_stop0.01.8225771.822577
5Alameda & San Fernando10714.97364943.0137.01.03.0238.0252001168.6279351697.5962175877.742833adding_existing0.05.6215875.621587
6Alameda / Buena Vista4375.65396120.063.00.51.556.714377395.084899608.5018161950.302731adding_existing, new_stop0.02.4440172.444017
7Amherst Dr / San Fernando7680.3032600.051.00.01.0111.935435849.4885891137.8105443698.842863new_stop0.04.3363604.336360
8Buena Vista & Burbank6163.1069178.051.00.51.530.013337561.422704841.8823622881.922546adding_existing, new_stop0.01.6638681.663868
9Buena Vista & Chandler6280.1969570.043.00.01.023.792660659.106148843.4445792953.610300new_stop0.01.6233821.623382
\n", - "
" - ], - "text/plain": [ - " stop_group total_pop_adj n_arrivals_base n_arrivals_scn \\\n", - "0 Alameda & Keystone 4293.708795 0.0 43.0 \n", - "1 Alameda & Lake 9227.693431 23.5 66.5 \n", - "2 Alameda & Main 14507.521342 0.0 43.0 \n", - "3 Alameda & Mariposa 5341.042930 0.0 43.0 \n", - "4 Alameda & Reese 4670.377970 0.0 43.0 \n", - "5 Alameda & San Fernando 10714.973649 43.0 137.0 \n", - "6 Alameda / Buena Vista 4375.653961 20.0 63.0 \n", - "7 Amherst Dr / San Fernando 7680.303260 0.0 51.0 \n", - "8 Buena Vista & Burbank 6163.106917 8.0 51.0 \n", - "9 Buena Vista & Chandler 6280.196957 0.0 43.0 \n", - "\n", - " n_routes_base n_routes_scn workers_with_no_car_adj total_youth_adj \\\n", - "0 0.0 1.0 33.057828 240.491509 \n", - "1 1.0 2.0 252.765168 949.244058 \n", - "2 0.0 1.0 388.996496 1558.857385 \n", - "3 0.0 1.0 66.341354 321.765127 \n", - "4 0.0 1.0 22.194411 198.756101 \n", - "5 1.0 3.0 238.025200 1168.627935 \n", - "6 0.5 1.5 56.714377 395.084899 \n", - "7 0.0 1.0 111.935435 849.488589 \n", - "8 0.5 1.5 30.013337 561.422704 \n", - "9 0.0 1.0 23.792660 659.106148 \n", - "\n", - " total_seniors_adj inc_total_lowincome_adj change_type \\\n", - "0 761.825145 1991.379441 new_stop \n", - "1 1084.409976 4642.170179 adding_existing \n", - "2 1725.942594 6817.928354 new_stop \n", - "3 913.488790 2552.447381 new_stop \n", - "4 918.907033 2212.922437 new_stop \n", - "5 1697.596217 5877.742833 adding_existing \n", - "6 608.501816 1950.302731 adding_existing, new_stop \n", - "7 1137.810544 3698.842863 new_stop \n", - "8 841.882362 2881.922546 adding_existing, new_stop \n", - "9 843.444579 2953.610300 new_stop \n", - "\n", - " ridership_change pred_scenario pred_baseline \n", - "0 0.0 1.941187 1.941187 \n", - "1 0.0 7.219622 7.219622 \n", - "2 0.0 53.839381 53.839381 \n", - "3 0.0 2.444115 2.444115 \n", - "4 0.0 1.822577 1.822577 \n", - "5 0.0 5.621587 5.621587 \n", - "6 0.0 2.444017 2.444017 \n", - "7 0.0 4.336360 4.336360 \n", - "8 0.0 1.663868 1.663868 \n", - "9 0.0 1.623382 1.623382 " - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_grouped[['stop_group', 'total_pop_adj', 'n_arrivals_base', 'n_arrivals_scn', 'n_routes_base', 'n_routes_scn',\n", - " 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj', 'change_type', 'ridership_change', 'pred_scenario', 'pred_baseline' ]].head(10)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "f356311d-5ad4-4f2e-9096-0dac4aabe192", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "225.40909090909093\n" - ] - } - ], - "source": [ - "ridership_change = df_burbank[\"average_daily_boardings\"].sum()\n", - "print(ridership_change)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "99a2641b-742a-412e-ac18-ce2fcebf37de", + "execution_count": 53, + "id": "a9392504-ad1c-407f-9204-1663043528d6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "271.3311085006283\n" + "95.9632200069897\n" ] } ], "source": [ - "ridership_change = df_grouped[\"pred_scenario\"].sum()\n", - "print(ridership_change)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "10b79f03-d898-4d51-8f09-913e1eebc3f1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "20.37274424306962" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "((271.3311085006283-225.40909090909093)/225.40909090909093)*100" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "3c29a0f4-59dd-492f-a9ae-a76bd1681f32", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.4997349009155052" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_grouped[\"pred_scenario\"].sum() / df_grouped[\"pred_baseline\"].sum()" + "ridership_change_sum= df_grouped[\"ridership_change\"].sum()\n", + "print(ridership_change_sum)" ] }, { @@ -3501,12 +3044,12 @@ "id": "79bdc190-3bf0-4fc8-ac41-4df7eefe99ee", "metadata": {}, "source": [ - "## Querying Ridership Data for Burbank Bus Service" + "## Querying NTD Ridership Data for Burbank Bus Service" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 54, "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", "metadata": {}, "outputs": [], @@ -3529,143 +3072,12 @@ " ridership_data= pd.read_sql(query, connection)" ] }, - { - "cell_type": "code", - "execution_count": 54, - "id": "87d940d7-c839-44d6-80b6-13467e9de035", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
agencyntd_idreporter_typereport_yearprimary_uza_nameunlinked_passenger_trips_uptagency_voms
0Los Angeles County Metropolitan Transportation...90154Full Reporter2024Los Angeles--Long Beach--Anaheim, CA302611788.02722.0
1Southern California Regional Rail Authority, d...90151Full Reporter2024Los Angeles--Long Beach--Anaheim, CA4321271.0195.0
2City of Burbank90256Reduced Reporter2024Los Angeles--Long Beach--Anaheim, CA211543.017.0
\n", - "
" - ], - "text/plain": [ - " agency ntd_id reporter_type \\\n", - "0 Los Angeles County Metropolitan Transportation... 90154 Full Reporter \n", - "1 Southern California Regional Rail Authority, d... 90151 Full Reporter \n", - "2 City of Burbank 90256 Reduced Reporter \n", - "\n", - " report_year primary_uza_name \\\n", - "0 2024 Los Angeles--Long Beach--Anaheim, CA \n", - "1 2024 Los Angeles--Long Beach--Anaheim, CA \n", - "2 2024 Los Angeles--Long Beach--Anaheim, CA \n", - "\n", - " unlinked_passenger_trips_upt agency_voms \n", - "0 302611788.0 2722.0 \n", - "1 4321271.0 195.0 \n", - "2 211543.0 17.0 " - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ridership_data.head(5)" - ] - }, { "cell_type": "code", "execution_count": 55, - "id": "4794fc04-095a-49fa-a2bd-f5b09889542e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "841492.0602739726" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "summed_ridership = ridership_data['unlinked_passenger_trips_upt'].sum()\n", - "average_daily_ridership = summed_ridership / 365\n", - "average_daily_ridership" - ] - }, - { - "cell_type": "code", - "execution_count": 56, "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.06887407384747071" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# City of Burbank UPT\n", "burbank_upt = ridership_data.loc[\n", @@ -3674,17 +3086,12 @@ "].iloc[0]\n", "\n", "# City of Burbank average daily ridership\n", - "burbank_avg_daily = burbank_upt / 365\n", - "\n", - "# percentage share of daily ridership\n", - "burbank_share_daily_pct = (burbank_avg_daily / average_daily_ridership) * 100\n", - "\n", - "burbank_share_daily_pct" + "burbank_avg_daily = burbank_upt / 365" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 56, "id": "da312c75-80af-4dfc-8297-68cabdabe6de", "metadata": {}, "outputs": [ @@ -3694,7 +3101,7 @@ "579.5698630136986" ] }, - "execution_count": 57, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb new file mode 100644 index 000000000..6c7997dd3 --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb @@ -0,0 +1,1057 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "637b9436-a2bf-4b0b-bbaa-91dc53262f3a", + "metadata": {}, + "outputs": [], + "source": [ + "# pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9a00c1eb-3468-453b-abad-a48437995b4b", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "pd.set_option('display.max_columns', None)\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "import numpy as np\n", + "\n", + "from scipy.stats import skew\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "fs = gcsfs.GCSFileSystem()\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "from shapely.geometry import Point\n", + "from shapely import wkt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a3952793-8ad7-4cdc-be40-159d621e4faa", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4e2d8850-85ca-4f63-abfc-f7a6769afe35", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c5f7e694-4b9e-4640-ad29-d538bf1dddea", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\"\n", + "]\n", + "\n", + "\n", + "df_burbank[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_burbank.loc[\n", + " df_burbank[\"stop_name\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1\n", + "\n", + "\n", + "X = df_burbank[[\n", + " \"total_pop_adj\",\n", + " \"workers_with_no_car_adj\",\n", + " \"total_seniors_adj\",\n", + " \"inc_total_lowincome_adj\",\n", + " \"has_rail_connection_dummy\",\n", + " \"total_youth_adj\"\n", + "]].copy()\n", + "\n", + "X = sm.add_constant(X, has_constant=\"add\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "78c4751f-ed62-406c-bfd7-c0c7279f8a31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings R-squared: 0.522\n", + "Model: OLS Adj. R-squared: 0.432\n", + "Method: Least Squares F-statistic: 5.773\n", + "Date: Wed, 06 May 2026 Prob (F-statistic): 0.000144\n", + "Time: 18:34:09 Log-Likelihood: -42.975\n", + "No. Observations: 45 AIC: 101.9\n", + "Df Residuals: 37 BIC: 116.4\n", + "Df Model: 7 \n", + "Covariance Type: nonrobust \n", + "=============================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "---------------------------------------------------------------------------------------------\n", + "const -2.1778 2.634 -0.827 0.414 -7.515 3.160\n", + "n_routes -2.1778 2.634 -0.827 0.414 -7.515 3.160\n", + "log_arrivals 1.2963 1.361 0.952 0.347 -1.461 4.054\n", + "total_pop_adj 0.0006 0.001 0.537 0.594 -0.002 0.003\n", + "workers_with_no_car_adj 0.0229 0.011 2.154 0.038 0.001 0.044\n", + "total_seniors_adj 0.0062 0.002 2.542 0.015 0.001 0.011\n", + "inc_total_lowincome_adj -0.0036 0.001 -2.599 0.013 -0.006 -0.001\n", + "has_rail_connection_dummy 1.5055 0.742 2.028 0.050 0.001 3.010\n", + "total_youth_adj 0.0027 0.005 0.543 0.591 -0.007 0.013\n", + "==============================================================================\n", + "Omnibus: 4.080 Durbin-Watson: 1.383\n", + "Prob(Omnibus): 0.130 Jarque-Bera (JB): 1.789\n", + "Skew: -0.045 Prob(JB): 0.409\n", + "Kurtosis: 2.027 Cond. No. 1.86e+17\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The smallest eigenvalue is 4.37e-27. This might indicate that there are\n", + "strong multicollinearity problems or that the design matrix is singular.\n" + ] + } + ], + "source": [ + "y_log = np.log1p(df_burbank[\"average_daily_boardings\"])\n", + "\n", + "model_ols = sm.OLS(y_log, X).fit()\n", + "\n", + "print(model_ols.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "4103d0a1-b043-4cd2-974f-c154928969d6", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcsAAAGJCAYAAADlkhggAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZQ5JREFUeJzt3Xd4FFX3wPHv7maz6Qk9BJKASq++QTBUXzoiXalKEbCFJqLCa6GLyE8QFEQFAZWugCLSpCrSuwKhE6S3dJJsdu/vjzErSwKbJWVDcj7Pw0PmzuzsyWHJyZ25c69OKaUQQgghxD3pXR2AEEIIkddJsRRCCCEckGIphBBCOCDFUgghhHBAiqUQQgjhgBRLIYQQwgEplkIIIYQDUiyFEEIIB6RYCiGEEA5IsRQPjVGjRqHT6bh+/bqrQ8l1Op2OUaNGuToMl3vqqad46qmnbNtnz55Fp9Mxd+5cl8V0t7tjFPmDFEvhUn/99RfPP/88pUqVwmQyERQURI8ePfjrr79cHZq4y+bNm9HpdLY/RqORRx55hJ49e3L69GlXh+eUP/74g1GjRhEdHe3qUMRDws3VAYiCa9myZXTr1o3ChQvTt29fypYty9mzZ5k9ezbff/89ixYtokOHDq4OU9xl0KBBPPHEE5jNZvbt28eXX37JqlWrOHz4MEFBQbkaS2hoKLdv38ZoNDr1uj/++IPRo0fTu3dvAgICciY4ka9IsRQucerUKV544QUeeeQRtm7dSrFixWz7Bg8eTIMGDXjhhRc4dOgQjzzyiAsjTc9qtZKSkoKHh4erQ3GJBg0a8OyzzwLQp08fypcvz6BBg5g3bx4jRozI8DUJCQl4e3tneyw6na7A/juI3CWXYYVLTJo0icTERL788ku7QglQtGhRvvjiCxISEvjoo4/Svfb69et07twZPz8/ihQpwuDBg0lKSrI7Zv369dSvX5+AgAB8fHyoUKEC//vf/+yOSU5OZuTIkTz22GOYTCaCg4N56623SE5OtjtOp9MxYMAA5s+fT5UqVTCZTKxcuZLChQvTp0+fdPHFxsbi4eHBsGHDnH6v5ORkXn/9dYoVK4avry9t27bl77//dpjPK1eu4ObmxujRo9Pti4yMRKfT8dlnnwFgNpsZPXo05cqVw8PDgyJFilC/fn3Wr1/v8H0y0rhxYwDOnDkD/Htv+ciRI3Tv3p1ChQpRv3592/HfffcdYWFheHp6UrhwYbp27cr58+fTnffLL7/k0UcfxdPTk9q1a/Pbb7+lO+Ze9yyPHTtG586dKVasGJ6enlSoUIF33nnHFt+bb74JQNmyZW2Xlc+ePZsjMYr8QXqWwiVWrlxJmTJlaNCgQYb7GzZsSJkyZVi1alW6fZ07d6ZMmTJMmDCBHTt2MG3aNG7dusU333wDaPdBn3nmGapXr86YMWMwmUycPHmSbdu22c5htVpp27Ytv//+Oy+99BKVKlXi8OHDTJkyhePHj7NixQq799y4cSNLlixhwIABFC1alHLlytGhQweWLVvGF198gbu7u+3YFStWkJycTNeuXZ1+r379+vHdd9/RvXt36taty8aNG2ndurXDfJYoUYJGjRqxZMkSRo4cabdv8eLFGAwGnnvuOUArFhMmTKBfv37Url2b2NhY9uzZw759+2jWrJnD97rbqVOnAChSpIhd+3PPPUe5cuX44IMPSFsJcPz48bz33nt07tyZfv36ce3aNT799FMaNmzI/v37bZdEZ8+ezcsvv0zdunUZMmQIp0+fpm3bthQuXJjg4OD7xnPo0CEaNGiA0WjkpZdeokyZMpw6dYqVK1cyfvx4OnbsyPHjx1m4cCFTpkyhaNGiALZf2nIjRvEQUkLksujoaAWodu3a3fe4tm3bKkDFxsYqpZQaOXKkAlTbtm3tjnvttdcUoA4ePKiUUmrKlCkKUNeuXbvnub/99lul1+vVb7/9Ztc+c+ZMBaht27bZ2gCl1+vVX3/9ZXfs2rVrFaBWrlxp1/7000+rRx55xOn3OnDggALUa6+9Zndc9+7dFaBGjhx5z+9HKaW++OILBajDhw/btVeuXFk1btzYtl2jRg3VunXr+54rI5s2bVKA+vrrr9W1a9fUxYsX1apVq1SZMmWUTqdTu3fvVkr9++/UrVs3u9efPXtWGQwGNX78eLv2w4cPKzc3N1t7SkqKKl68uKpZs6ZKTk62Hffll18qQDVq1MjWdubMGQWoOXPm2NoaNmyofH191blz5+zex2q12r6eNGmSAtSZM2dyPEaRP8hlWJHr4uLiAPD19b3vcWn7Y2Nj7dojIiLstgcOHAjAL7/8AmD7zf/HH3/EarVmeO6lS5dSqVIlKlasyPXr121/0i4pbtq0ye74Ro0aUblyZbu2xo0bU7RoURYvXmxru3XrFuvXr6dLly5Ov1da/IMGDbJ7nyFDhmT4PdytY8eOuLm52cXz559/cuTIEbt4AgIC+Ouvvzhx4kSmznu3F198kWLFihEUFETr1q1JSEhg3rx51KpVy+64V155xW572bJlWK1WOnfubJeHwMBAypUrZ8vDnj17uHr1Kq+88opdj7137974+/vfN7Zr166xdetWXnzxRUJCQuz26XQ6h99bbsQoHk5yGVbkurQimFY07+VeRbVcuXJ2248++ih6vd52z6lLly7MmjWLfv36MXz4cJo0aULHjh159tln0eu13w9PnDjB0aNH090vTXP16lW77bJly6Y7xs3NjU6dOrFgwQKSk5MxmUwsW7YMs9lsV5wy+17nzp1Dr9fz6KOP2u2vUKFChq+7W9GiRWnSpAlLlixh7NixgHYJ1s3NjY4dO9qOGzNmDO3ataN8+fJUrVqVli1b8sILL1C9evVMvc/7779PgwYNMBgMFC1alEqVKuHmlv5Hyd05O3HiBEqpdP9+adJGtJ47dw5I/++c9qjK/aQ9wlK1atVMfS93y40YxcNJiqXIdf7+/pQsWZJDhw7d97hDhw5RqlQp/Pz87nvc3T0GT09Ptm7dyqZNm1i1ahVr1qxh8eLFNG7cmHXr1mEwGLBarVSrVo3JkydneM677zl5enpmeFzXrl354osvWL16Ne3bt2fJkiVUrFiRGjVq2I5x9r2yomvXrvTp04cDBw5Qs2ZNlixZQpMmTWz35UC7H3zq1Cl+/PFH1q1bx6xZs5gyZQozZ86kX79+Dt+jWrVqNG3a1OFxd+fMarWi0+lYvXo1BoMh3fE+Pj6Z+A5z1sMQo3ANKZbCJZ555hm++uorfv/9d7uRkml+++03zp49y8svv5xu34kTJ+x6LSdPnsRqtVKmTBlbm16vp0mTJjRp0oTJkyfzwQcf8M4777Bp0yaaNm3Ko48+ysGDB2nSpEmmLs/dS8OGDSlZsiSLFy+mfv36bNy40TbqMk1m3ys0NBSr1cqpU6fsepORkZGZjqd9+/a8/PLLtkuxx48fz/BxjrSRvH369CE+Pp6GDRsyatSoTBXLB/Xoo4+ilKJs2bKUL1/+nseFhoYC2r9z2qVq0Ebxnjlzxu4Xkbul9er+/PPP+8Zyr3+H3IhRPJzknqVwiTfffBNPT09efvllbty4Ybfv5s2bvPLKK3h5edmG+N9p+vTpdtuffvopAK1atbK9/m41a9YEsD2q0blzZy5cuMBXX32V7tjbt2+TkJCQqe9Dr9fz7LPPsnLlSr799ltSU1PtLsE6815p8U+bNs3umE8++SRTsYB2P7JFixYsWbKERYsW4e7uTvv27e2OuTvfPj4+PPbYY+keY8luHTt2xGAwMHr0aNvo2DRKKVtctWrVolixYsycOZOUlBTbMXPnznU4406xYsVo2LAhX3/9NVFRUeneI03aM593ny83YhQPJ+lZCpcoV64c8+bNo0ePHlSrVi3dDD7Xr19n4cKF6e7fgfY8X9u2bWnZsiXbt2+3PWqR9tv8mDFj2Lp1K61btyY0NJSrV68yY8YMSpcubevFvvDCCyxZsoRXXnmFTZs2Ua9ePSwWC8eOHWPJkiWsXbs23YCVe+nSpQuffvopI0eOpFq1alSqVMluf2bfq2bNmnTr1o0ZM2YQExND3bp12bBhAydPnnQqt126dOH5559nxowZtGjRIt0MNZUrV+app54iLCyMwoULs2fPHr7//nsGDBjg1Ps469FHH2XcuHGMGDGCs2fP0r59e3x9fTlz5gzLly/npZdeYtiwYRiNRsaNG8fLL79M48aN6dKlC2fOnGHOnDmZuh84bdo06tevz3/+8x9eeukl2+dq1apVHDhwAICwsDAA3nnnHbp27YrRaKRNmza5FqN4CLlsHK4QSqlDhw6pbt26qZIlSyqj0agCAwNVt27d0j3+oNS/jyQcOXJEPfvss8rX11cVKlRIDRgwQN2+fdt23IYNG1S7du1UUFCQcnd3V0FBQapbt27q+PHjdudLSUlREydOVFWqVFEmk0kVKlRIhYWFqdGjR6uYmBjbcYCKiIi45/dgtVpVcHCwAtS4ceMyPCaz73X79m01aNAgVaRIEeXt7a3atGmjzp8/n6lHR9LExsYqT09PBajvvvsu3f5x48ap2rVrq4CAAOXp6akqVqyoxo8fr1JSUu573rRHR5YuXXrf49L+ne716M4PP/yg6tevr7y9vZW3t7eqWLGiioiIUJGRkXbHzZgxQ5UtW1aZTCZVq1YttXXrVtWoUSOHj44opdSff/6pOnTooAICApSHh4eqUKGCeu+99+yOGTt2rCpVqpTS6/XpHiPJzhhF/qBT6q5rDUIIIYSwI/cshRBCCAekWAohhBAOSLEUQgghHJBiKYQQQjggxVIIIYRwQIqlEEII4YBLJyUYNWpUusVqK1SowLFjxwBISkrijTfeYNGiRSQnJ9OiRQtmzJhBiRIlMv0eVquVixcv4uvrm6VpzYQQQjy8lFLExcURFBRkW1DBGS6fwadKlSr8+uuvtu07Vy94/fXXWbVqFUuXLsXf358BAwbQsWNHu0V8Hbl48aIsxCqEEAKA8+fPU7p0aadf5/Ji6ebmRmBgYLr2mJgYZs+ezYIFC2wTFc+ZM4dKlSqxY8cOnnzyyUydP215p/PnzztcveJ+zGYz69ato3nz5rZleoQ9yZFjkiPHJEeOSY4cuztHsbGxBAcHO1xH915cXixPnDhBUFAQHh4ehIeHM2HCBEJCQti7dy9ms9luKaCKFSsSEhLC9u3b71ksk5OT7SaETlsT0dPT857LLGWGm5sbXl5eeHp6yofzHiRHjkmOHJMcOSY5cuzuHJnNZiBzi4BnxKXT3a1evZr4+HgqVKjApUuXGD16NBcuXODPP/9k5cqV9OnTJ91KCLVr1+a///0vEydOzPCcGd0HBViwYAFeXl458n0IIYTI2xITE+nevTsxMTEPdJUxT80NGx0dTWhoKJMnT8bT0/OBiuXdPcu0rvf169ezfBl2/fr1NGvWTH6TuwfJkWOSI8ckR45Jjhy7O0exsbEULVr0gYulyy/D3ikgIIDy5ctz8uRJmjVrRkpKCtHR0XZLDF25ciXDe5xpTCYTJpMpXbvRaMyWD1V2nSc/kxw5JjlyTHLkmOTIsbQcZTVPeeo5y/j4eE6dOkXJkiUJCwvDaDSyYcMG2/7IyEiioqIIDw93YZRCCCEKGpf2LIcNG0abNm0IDQ3l4sWLjBw5EoPBQLdu3fD396dv374MHTqUwoUL4+fnx8CBAwkPD8/0SFghhBAiO7i0WP79999069aNGzduUKxYMerXr8+OHTsoVqwYAFOmTEGv19OpUye7SQmEEEKI3OTSYrlo0aL77vfw8GD69OlMnz49lyISQggh0stT9yyFEEKIvEiKpRBCCOGAFEshhBDCASmWQggh8qaUFJg4EZKSXB1J3pqUQAghhADg0iV49ln44w84cQJmzXJpONKzFEIIkbf88QeEhWl/+/tDhw6ujkiKpRBCiDxCKZg5E556SutZVqkCu3dD69aujkyKpRBCiDwgKQn69YNXXwWzWbsEu2MHlCvn6sgAKZZCCCHygitXYMUK0Ou1QT1LloCPj6ujspEBPkIIIVwvNBQWL9YuxTZr5upo0pFiKYQQIvcpBdOmaZdZn35aa2va1LUx3YcUSyGEELkrMRFeegnmz9dGux49CiVLujqq+5JiKYQQIvecPas9CnLgABgMMHo0BAa6OiqHpFgKIYTIHevXQ9eucPMmFCumDeJ56ilXR5UpMhpWCCFEzlIKJk2Cli21QlmrFuzd+9AUSpBiKYQQIqfpdHDyJFit8OKL8NtvEBzs6qicIpdhhRBC5Lxp07TRrs8+qxXPh4z0LIUQQmS/X36BLl3AYtG2TSZ47rmHslCCFEshhBDZyWqFcePgmWe0ATwzZ7o6omwhl2GFEEJkj9hY6NVLm7YOtHle+/d3aUjZRYqlEEKIrDt2THt+8tgxcHeHzz/XBvPkE1IshRBCZM2aNdC5M8TFQenS8MMPULu2q6PKVnLPUgghRNYEBWkDeRo10p6fzGeFEqRnKYQQ4kFYLNp0dQDVq8OWLVCjBhiNro0rh0jPUgghhHMOH4Zq1WD79n/batXKt4USpFgKIYRwxpIl8OST2kohw4ZpU9kVAFIshRBCOJaaCm+9pU00kJiozcbz448P7SQDzpJiKYQQ4v6uX9cmQZ80Sdt+6y1YvRqKFnVtXLlIBvgIIYS4t0uXIDwczp0DLy+YM0d7TKSAkWIphBDi3gIDISwM3Ny0mXmqVnV1RC4hxVIIIYQ9s1n74+Wl3ZOcO1e7Z1mokKsjcxm5ZymEEOJfV65og3defPHfka6+vgW6UIL0LIUQQqTZtQs6doQLF7QCefIklCvn6qjyBOlZCiGEgNmzoUEDrVBWqKAVTimUNlIshRCiIEtJ0ZbS6tdP+7pdO61QVqzo6sjyFCmWQghRkHXtqi3QrNPBmDGwbBn4+bk6qjxHiqUQQhRkr7+uTS6wciW89x7opSxkRAb4CCFEQaIUnDkDjzyibTdoAGfPgre3S8PK6+RXCCGEKCiSkrR7k9Wrw5Ej/7ZLoXRIiqUQQhQE589Dw4bw9ddw+7b98lrCIbkMK4QQ+d2WLfDcc3DtGhQuDIsWQbNmro7qoSI9SyGEyK+UgqlToUkTrVDWrAl79kihfABSLIUQIr9asACGDAGLBXr0gG3boGxZV0f1UJLLsEIIkV916QLz5kHr1jBoUIFZqDknSLEUQoj8ZPt2bUktd3dtWa01a+TZyWwgGRRCiPxAKfjoI6hfH9544992KZTZQnqWQgjxsIuP15bUWrpU205M1O5TGgyujSsfyTO/cnz44YfodDqGDBlia0tKSiIiIoIiRYrg4+NDp06duHLliuuCFEKIvObkSXjySa1QGo3w+ecwa5YUymyWJ4rl7t27+eKLL6hevbpd++uvv87KlStZunQpW7Zs4eLFi3Ts2NFFUQohRN6i++UXqFUL/voLAgNh82Z45RUZyJMDXF4s4+Pj6dGjB1999RWF7liJOyYmhtmzZzN58mQaN25MWFgYc+bM4Y8//mDHjh0ujFgIIVzPLT4eQ+/eEBMDdevCvn3a3yJHuPyeZUREBK1bt6Zp06aMGzfO1r53717MZjNNmza1tVWsWJGQkBC2b9/Ok08+meH5kpOTSU5Otm3HxsYCYDabMZvNDxxn2muzco78TnLkmOTIMcmRY2azmVQfH1K+/BK3DRuwfvyxNvpVcmZz9+coq58nlxbLRYsWsW/fPnbv3p1u3+XLl3F3dycgIMCuvUSJEly+fPme55wwYQKjR49O175u3Tq8vLyyHPP69euzfI78TnLkmOTIMclRej5//417bCw3K1cGYI27O7RqBb/+6uLI8q60z1FiYmKWzuOyYnn+/HkGDx7M+vXr8fDwyLbzjhgxgqFDh9q2Y2NjCQ4Opnnz5vhlYUFTs9nM+vXradasGUajMTtCzXckR45JjhyTHGVM9+OPGEaMAJOJpN9/Z92xY5Kj+7j7c5R2lfFBuaxY7t27l6tXr/Kf//zH1maxWNi6dSufffYZa9euJSUlhejoaLve5ZUrVwgMDLzneU0mEyaTKV270WjMlg9Vdp0nP5McOSY5ckxy9A+LBUaNgrTbVP/5D24+PoDkKDPScpTVPLmsWDZp0oTDhw/btfXp04eKFSvy9ttvExwcjNFoZMOGDXTq1AmAyMhIoqKiCA8Pd0XIQgiRu27d0uZ0Xb1a2x4yRJt4QOQ6lxVLX19fqlatatfm7e1NkSJFbO19+/Zl6NChFC5cGD8/PwYOHEh4ePg9B/cIIUS+8eef0L49nDoFnp7w1Vda4QQZyOMCLh8Nez9TpkxBr9fTqVMnkpOTadGiBTNmzHB1WEIIkfOmTdMKZZkysHy5tryWcJk8VSw3b95st+3h4cH06dOZPn26awISQghX+eQT8PCAkSOhSBFXR1PguXxSAiGEEMD16zB2LFit2raXl9a7lEKZJ+SpnqUQQhRI+/dDhw5w7py2Ssg777g6InEX6VkKIYQrffutNk3duXPw6KPQrp2rIxIZkGIphBCuYDbD4MHQsyckJcHTT8Pu3XDXUwIib5BiKYQQue3KFWjaVLsnCfDee7ByJdyxmITIW+SepRBC5LaoKNixA3x94ZtvtOcpRZ4mxVIIIXLbE0/A/PnaJdeKFV0djcgEuQwrhBA5LTkZBg7U1pxM8+yzUigfIlIshRAiJ128CP/9L3z2mVYg71hvVzw8pFgKIURO2bYNwsJg+3YICIDp0yGDVZFE3ifFUgghsptSMGMGPPUUXL6s3ZvcvVtbqFk8lKRYCiFEdkpJgb59ISICUlOhc2etZ/nYY66OTGSBFEshhMhOBoPWm9TrtbUnFy2CfxZrFg8veXRECCGyg1Kg02nFcv58OHBAG9gj8gXpWQohRFYopS2n9fLL2tegzcQjhTJfkZ6lEEI8qMRE6N8fFizQtp97Dpo1c21MIkdIsRRCiAdx5gx07KhdbjUYYPJkbb5XkS9JsRRCCGetXw9du8LNm1CsGCxdCo0auToqkYOcvme5Zs0afv/9d9v29OnTqVmzJt27d+fWrVvZGpwQQuQ5n30GLVtqhfKJJ2DvXimUBYDTxfLNN98kNjYWgMOHD/PGG2/w9NNPc+bMGYYOHZrtAQohRJ5SoYL2d58+sHUrBAe7Nh6RK5y+DHvmzBkqV64MwA8//MAzzzzDBx98wL59+3j66aezPUAhhHA5sxmMRu3rZs203mSNGtqjIqJAcLpn6e7uTmJiIgC//vorzZs3B6Bw4cK2HqcQQuQbq1ZB+fJw4sS/bTVrSqEsYJwulvXr12fo0KGMHTuWXbt20bp1awCOHz9O6dKlsz1AIYRwCasVxo6FNm3g7Fn48ENXRyRcyOli+dlnn+Hm5sb333/P559/TqlSpQBYvXo1LVu2zPYAhRAi18XEaI+FvP++NtHAq6/C55+7OirhQk7fswwJCeHnn39O1z5lypRsCUgIIVzq6FHo0AEiI8HdXSuSL77o6qiEizldLO91X1Kn02EymXB3d89yUEII4RJ792rLasXHQ+nS8MMPULu2q6MSeYDTxTIgIADdfW5sly5dmt69ezNy5Ej0epl6VgjxEKlaVftjMsGSJVC8uKsjEnmE08Vy7ty5vPPOO/Tu3Zva//zGtWvXLubNm8e7777LtWvX+L//+z9MJhP/+9//sj1gIYTIVtHR2hJabm5akfz5Z/Dz+/dRESF4gGI5b948Pv74Yzp37mxra9OmDdWqVeOLL75gw4YNhISEMH78eCmWQoi87fBh7f5kp04wcaLWVqSIa2MSeZLT10n/+OMPHn/88XTtjz/+ONu3bwe0x0uioqKyHp0QQuSUJUvgySfh1Cnta3lOXNyH08UyODiY2bNnp2ufPXs2wf9M+3Tjxg0KFSqU9eiEECK7pabCW29Bly7aEltNm8KePdqlVyHuwenLsP/3f//Hc889x+rVq3niiScA2LNnD8eOHeP7778HYPfu3XTp0iV7IxVCiKy6fl1bLWTDBm377bdh/HhtiS0h7sPpYtm2bVuOHTvGF198wfHjxwFo1aoVK1asoEyZMgC8+uqr2RqkEEJkmcWirQ5y5Ah4e8OcOdpizUJkwgOtZ1m2bFk+lKmfhBAPE4MB3ntPm5Vn2TLtEREhMumBimV0dDS7du3i6tWrWK1Wu309e/bMlsCEECLLzGY4dw4ee0zb7toV2rcHDw+XhiUePk4Xy5UrV9KjRw/i4+Px8/Ozm6BAp9NJsRRC5A1XrkDnztpqIXv3QsmSWrsUSvEAnB4N+8Ybb/Diiy8SHx9PdHQ0t27dsv25efNmTsQohBDO2bULwsK0xZnj4+HYMVdHJB5yThfLCxcuMGjQILy8vHIiHiGEyJrZs6FBA7hwASpW1Arnf//r6qjEQ87pYtmiRQv27NmTE7EIIcSDS06GV16Bfv0gJUW7N7lzp1Ywhcgip+9Ztm7dmjfffJMjR45QrVo1jHfNn9i2bdtsC04IITJt/Hj44gvQ6bRFm0eMAFnMQWQTp4tl//79ARgzZky6fTqdDovFkvWohBDCWW++CRs3wjvvQKtWro5G5DNOF8u7HxURQgiXUArWrYPmzbXepK8v/Pab9rUQ2UyuUQghHj5JSdC3L7RsCZMn/9suhVLkkEz1LKdNm8ZLL72Eh4cH06ZNu++xgwYNypbAhBAiQ+fPQ8eO2uTnck9S5JJMFcspU6bQo0cPPDw8mDJlyj2P0+l0UiyFEDln82ZtooFr16BwYVi8WFs1RIgclqlieebMmQy/FkKIXKEUTJ0Kw4ZpE6I//rg2v+s/izcIkdPkGoYQIu87dkwb7WqxwAsvwLZtUihFrspUz3Lo0KGZPuHkO2+2O/D555/z+eefc/bsWQCqVKnC+++/T6t/hn0nJSXxxhtvsGjRIpKTk2nRogUzZsygRIkSmX4PIUQ+UKmS1rNMTYWBA2Ugj8h1mSqW+/fvt9vet28fqampVKhQAYDjx49jMBgICwtz6s1Lly7Nhx9+SLly5VBKMW/ePNq1a8f+/fupUqUKr7/+OqtWrWLp0qX4+/szYMAAOnbsyLZt25x6HyHEw0e3fj2EhkKVKlrDa6+5NiBRoGWqWG7atMn29eTJk/H19WXevHkUKlQIgFu3btGnTx8aNGjg1Ju3adPGbnv8+PF8/vnn7Nixg9KlSzN79mwWLFhA48aNAZgzZw6VKlVix44dPPnkk069lxDiIaEUjy1bhuG77+DRR7W5XQMCXB2VKOCcnpTg448/Zt26dbZCCVCoUCHGjRtH8+bNeeONNx4oEIvFwtKlS0lISCA8PJy9e/diNptpesdIt4oVKxISEsL27dvvWSyTk5NJTk62bcfGxgJgNpsxm80PFFva6+/8W6QnOXJMcuRAfDy6vn2psnw5ANb69bEYDNq6lMJGPkeO3Z2jrObK6WIZGxvLtWvX0rVfu3aNuLg4pwM4fPgw4eHhJCUl4ePjw/Lly6lcuTIHDhzA3d2dgLt+oyxRogSXL1++5/kmTJjA6NGj07WvW7cuW1ZKWb9+fZbPkd9JjhyTHKXnffEitT/8EL+oKKxubhzq359zzZtrU9iJDMnnyLG0HCUmJmbpPE4Xyw4dOtCnTx8+/vhjateuDcDOnTt588036dixo9MBVKhQgQMHDhATE8P3339Pr1692LJli9PnSTNixAi7AUmxsbEEBwfTvHlz/Pz8Hvi8ZrOZ9evX06xZs3STxwuN5MgxyVHGdL/8gmHECHQxMagSJfj99depNXAgVSRHGZLPkWN35yjtKuODcrpYzpw5k2HDhtG9e3dbt9bNzY2+ffsyadIkpwNwd3fnscceAyAsLIzdu3czdepUunTpQkpKCtHR0Xa9yytXrhAYGHjP85lMJkwmU7p2o9GYLR+q7DpPfiY5ckxydAel4NNPISYG6tYldeFCbu3fLznKBMmRY2k5ymqenHrO0mKxsGfPHsaPH8+NGzfYv38/+/fv5+bNm8yYMQNvb+8sBQPaRO3JycmEhYVhNBrZsGGDbV9kZCRRUVGEh4dn+X2EEHmETgcLF8L//gebNkHJkq6OSIh0nOpZGgwGmjdvztGjRylbtizVq1fP0puPGDGCVq1aERISQlxcHAsWLGDz5s2sXbsWf39/+vbty9ChQylcuDB+fn4MHDiQ8PBwGQkrxMPu6FFYsUJbcxKgWDFtPUqQwTwiT3L6MmzVqlU5ffo0ZcuWzfKbX716lZ49e3Lp0iX8/f2pXr06a9eupVmzZoA2J61er6dTp052kxIIIR5iy5dDz54QH689R9m9u6sjEsIhp4vluHHjGDZsGGPHjiUsLCzdpVdnBtHMnj37vvs9PDyYPn0606dPdzZMIUReY7HAyJH/9iAbNZJJ0MVDw+li+fTTTwPQtm1bdHdMOaWUQqfTYbFYsi86IUT+cOsW9OgBq1dr24MHw6RJIINTxEPC6WJ552w+Qgjh0OHD0KEDnDoFnp7w5Zfw/POujkoIpzhdLBs1apQTcQgh8qszZ7RCWaaMdr+yZk1XRySE05wulmkSExOJiooiJSXFrj2rI2SFEPlM27bw7bfQqhUUKeLqaIR4IE4Xy2vXrtGnTx9Wp917uIvcsxSigLt+HSIi4KOPtNGuIJddxUPP6cWfhwwZQnR0NDt37sTT05M1a9Ywb948ypUrx08//ZQTMQohHhb79kGtWrBkifZ4iFKujkiIbOF0z3Ljxo38+OOP1KpVC71eT2hoKM2aNcPPz48JEybQunXrnIhTCJHXffstvPQSJCVpS2tNny6LNIt8w+meZUJCAsWLFwe0pbnSViCpVq0a+/bty97ohBB5n9msPQrSs6dWKJ9+GnbvhqpVXR2ZENnG6WJZoUIFIiMjAahRowZffPEFFy5cYObMmZSUOR2FKFhu3NAmFpg2Tdt+7z1YuRLuWO9WiPzA6cuwgwcP5tKlSwCMHDmSli1bMn/+fNzd3Zk7d252xyeEyMu8vCAuDnx94ZtvoH17V0ckRI5wulg+f8eotrCwMM6dO8exY8cICQmhaNGi2RqcECKPUkq7H+npCcuWaZdfK1Z0dVRC5JgHfs4StCnuPD09+c9//pNd8Qgh8rLkZO3+ZFAQvP++1lamjEtDEiI3OH3PEuCbb76hWrVqeHp64unpSfXq1fn222+zOzYhRF5y8SL897/wxRcwZow2K48QBYTTPcvJkyfz3nvvMWDAAOrVqwfA77//ziuvvML169d5/fXXsz1IIYSLbdsGzz4Lly9DQAAsWKA9HiJEAeF0sfz000/5/PPP6dmzp62tbdu2VKlShVGjRkmxFCI/UQo+/1y79JqaCtWqafO7SqEUBYzTl2EvXbpE3bp107XXrVvXNkpWCJFPRERof1JToUsX2L5dCqUokJwulo899hhLlixJ17548WLKlSuXLUEJIfKIJ54AvV5be3LhQrhrsXchCgqnL8OOHj2aLl26sHXrVts9y23btrFhw4YMi6gQ4iGTlAQeHtrXffpAeLg8FiIKPKd7lp06dWLnzp0ULVqUFStWsGLFCooWLcquXbvo0KFDTsQohMgNSsGUKdo0ddev/9suhVKIB3vOMiwsjO+++y67YxFCuEpiIvTvr41yBZg7F4YNc2lIQuQlWZ6UYNOmTdy+fZu6detSSOaDFOLhc+YMdOgABw+CwaD1LgcMcHVUQuQpmb4MGx0dTa9evahWrRr9+/cnNjaWBg0a0LRpU9q0aUOlSpU4dOhQTsYqhMhu69Zp608ePAjFi8OGDTBwoCytJcRdMl0shw0bxvbt2+natSuHDx+mZcuWWCwWtm/fzs6dO6lUqRLvvPNOTsYqhMhOP/wArVrBzZtQuzbs3QuNGrk6KiHypExfhl29ejULFiygUaNG9O7dm+DgYDZu3EidOnUAmDhxIm3bts2xQIUQ2axxYyhbFp56Cj777N8RsEKIdDJdLK9cuUL58uUBKFWqFB4eHgQHB9v2h4SE2BaCFkLkUZcvQ4kS2mXWQoVg1y7tb7nsKsR9ZfoyrNVqxWAw2LYNBgO6O/6D6eQ/mxB526pV2mMgM2f+21a4sBRKITLBqdGws2bNwsfHB4DU1FTmzp1rW8MyLi4u+6MTQmSd1QrjxsGoUdqzlEuWwMsvazPzCCEyJdPFMiQkhK+++sq2HRgYmG5ZrpCQkOyLTAiRdTEx0LMn/PSTth0RAZMnS6EUwkmZLpZnz57NwTCEENnu6FFo3x6OHweTSbv82ru3q6MS4qGUpUkJhBB51M2bULcuREdDcDAsW6Y9TymEeCByLUaI/KhwYRgxQnssZM8eKZRCZJEUSyHyi1u34M7bJW++CevXazPzCCGyRIqlEPnBoUNa7/GZZyA+XmvT6cBN7rQIkR2kWArxsFu8WFtz8vRpSEiAS5dcHZEQ+U6mfu2MjY3N9An9/PweOBghhBNSU7X7kv/3f9p2s2awcCEUKeLauITIhzJVLAMCAjI9Q4/FYslSQEKITLh+Hbp21VYJAXj7bRg/XltiSwiR7TJVLDdt2mT7+uzZswwfPpzevXsTHh4OwPbt25k3bx4TJkzImSiFEPYGDNAKpbc3zJkDzz3n6oiEyNcyVSwb3bFsz5gxY5g8eTLdunWztbVt25Zq1arx5Zdf0qtXr+yPUghhb/JkuHgRZsyAqlVdHY0Q+Z7TA3y2b99OrQye2apVqxa7du3KlqCEEHcxm/+dsg4gKAi2bpVCKUQucbpYBgcH280Rm2bWrFl2S3YJIbLJlSvQtCm0a6dNgi6EyHVOP4Q1ZcoUOnXqxOrVq20LP+/atYsTJ07www8/ZHuAQhRoO3dCp05w4QL4+soCzUK4iNM9y6effprjx4/Tpk0bbt68yc2bN2nTpg3Hjx/n6aefzokYhSiYZs2Chg21QlmxorZQc9u2ro5KiALpgab3CA4O5oMPPsjuWIQQAMnJMGgQfPmltt2+PcybB/IMsxAu80Az+Pz22288//zz1K1blwsXLgDw7bff8vvvv2drcEIUSJs2aYVSp9MWbf7hBymUQriY08Xyhx9+oEWLFnh6erJv3z6Sk5MBiImJkd6mENmhZUsYNQpWrYJ33pGFmoXIA5z+Xzhu3DhmzpzJV199hdFotLXXq1ePffv2ZWtwQhQISmn3J++c03XkSGjVynUxCSHsOF0sIyMjadiwYbp2f39/oqOjsyMmIQqOpCR48UXo3x+efVZ7nlIIkec4XSwDAwM5efJkuvbff/+dRx55xKlzTZgwgSeeeAJfX1+KFy9O+/btiYyMtDsmKSmJiIgIihQpgo+PD506deLKlSvOhi1E3hMVBQ0awNy52qXW9u1lSS0h8iini2X//v0ZPHgwO3fuRKfTcfHiRebPn8+wYcN49dVXnTrXli1biIiIYMeOHaxfvx6z2Uzz5s1JSEiwHfP666+zcuVKli5dypYtW7h48SIdO3Z0Nmwh8hTd5s0QFgZ79kDhwrB2rbZYcyYXLBBC5C6nf40dPnw4VquVJk2akJiYSMOGDTGZTAwbNoyBAwc6da41a9bYbc+dO5fixYuzd+9eGjZsSExMDLNnz2bBggU0btwYgDlz5lCpUiV27NjBk08+6Wz4QriWUjzy008Y5s0DiwVq1oTly6FMGVdHJoS4D6eLpU6n45133uHNN9/k5MmTxMfHU7lyZXx8fLIcTExMDACFCxcGYO/evZjNZpo2bWo7pmLFioSEhLB9+/YMi2VycrJthC78uxan2WzGnIX7QWmvzco58jvJkWPmuDhC169HZ7Fg7d4dy4wZ4OUl9yrvIJ8jxyRHjt2do6zmSqeUUs684MUXX2Tq1Kn4+vratSckJDBw4EC+/vrrBwrEarXStm1boqOjbc9rLliwgD59+tgVP4DatWvz3//+l4kTJ6Y7z6hRoxg9enS69gULFuDl5fVAsQmRnbwvXqT4gQOcadVKLrsKkUsSExPp3r07MTEx+D3Ac8tOF0uDwcClS5coXry4Xfv169cJDAwkNTXV6SAAXn31VVavXs3vv/9O6dKlgQcrlhn1LIODg7l+/foDJSiN2Wxm/fr1NGvWzO6RGfEvyVHGdOvXozt5Euurr0qOMkFy5JjkyLG7cxQbG0vRokUfuFhm+jJsbGwsSimUUsTFxeFxx4TOFouFX375JV0BzawBAwbw888/s3XrVluhBG3kbUpKCtHR0QQEBNjar1y5QmBgYIbnMplMmEymdO1GozFbPlTZdZ78THL0D6Vg4kRtYgHAEBYGtWsDkqPMkBw5JjlyLC1HWc1TpotlQEAAOp0OnU5H+fLl0+3X6XQZXv68H6UUAwcOZPny5WzevJmyZcva7Q8LC8NoNLJhwwY6deoEaM95RkVFER4e7tR7CZGr4uK05ye//17b7tcPMlgHVgjxcMh0sdy0aRNKKRo3bswPP/xgG4QD4O7uTmhoKEFBQU69eUREBAsWLODHH3/E19eXy5cvA9oEB56envj7+9O3b1+GDh1K4cKF8fPzY+DAgYSHh8tIWJF3nTihPTN55AgYjfDZZ/DSS9o+GZAhxEMp08WyUaNGAJw5c4aQkBB02TAw4fPPPwfgqaeesmufM2cOvXv3BrT1M/V6PZ06dSI5OZkWLVowY8aMLL+3EDli1Sro0QNiYqBkSW0SdLkKIsRDz+lHRzZu3IiPjw/PPfecXfvSpUtJTEykV69emT5XZsYWeXh4MH36dKZPn+5sqELkvjNntEJZrx4sXaoVTCHEQ8/pGXwmTJhA0aJF07UXL15cVh0RIiICvv0WNm6UQilEPuJ0sYyKiko3EAcgNDSUqKiobAlKiIfG0aPwzDOQtoiATgfPPw/u7i4NSwiRvZwulsWLF+fQoUPp2g8ePEiRIkWyJSghHgrLlmmPgqxaBcOGuToaIUQOcrpYduvWjUGDBrFp0yYsFgsWi4WNGzcyePBgunbtmhMxCpG3WCzas5OdOkF8PDz1FMgtCCHyNacH+IwdO5azZ8/SpEkT3P5ZTshqtdKzZ0+5Zynyv1u3oHt3SFsE4PXX4aOPZGktIfI5p/+Hu7u7s3jxYsaOHcvBgwfx9PSkWrVqhIaG5kR8QuQdkZHQujWcOgWenjBrllY4hRD53gP/Oly+fPkMZ/IRIt8qXFibVKBsWW1ZrRo1XB2RECKXZKpYDh06lLFjx+Lt7c3QoUPve+zkyZOzJTAh8gSrFfT/3NovVgx++QUCA0EGswlRoGSqWO7fv9+2Ftj+/fvveVx2zOojRJ5x/Tp07QovvABpk21UqeLamIQQLpGpYrlp06YMvxYi39q3Dzp0gKgoOHhQG/maDQucCyEeTk4/OiJEvvfNN9p0dVFRUK4cbN4shVKIAi5TPcuOHTtm+oTLli174GCEcCmzGd54Az79VNtu3Rq++w7uWEtVCFEwZapY+vv7275WSrF8+XL8/f2p9c/6fHv37iU6OtqpoipEnpKaCs2awZYt2vb778PIkf8O7hFCFGiZKpZz5syxff3222/TuXNnZs6cicFgAMBisfDaa6/h5+eXM1EKkdPc3LSZePbt0yZCb9fO1REJIfIQp39t/vrrrxk2bJitUAIYDAaGDh3K119/na3BCZHj4uP//fr99+HwYSmUQoh0nC6WqampHDt2LF37sWPHsFqt2RKUEDkuORlefhkaNoTbt7U2vR5kJiohRAacnsGnT58+9O3bl1OnTlG7dm0Adu7cyYcffkifPn2yPUAhst3Fi9qjIDt2aEtq/fortGnj6qiEEHmY08Xy//7v/wgMDOTjjz/m0qVLAJQsWZI333yTN954I9sDFCJb/f47PPssXLmijXJdsABatXJ1VEKIPM7pYqnX63nrrbd46623iI2NBZCBPSLvUwpmzIAhQ7SRr9WqafO7PvqoqyMTQjwEHmhcfGpqKr/++isLFy60TXF38eJF4u8cLCFEXvLBBzBggFYou3SB7dulUAohMs3pYnnu3DmqVatGu3btiIiI4Nq1awBMnDiRYbJavMirnn8eSpSASZNg4ULw9nZ1REKIh4jTxXLw4MHUqlWLW7du4enpaWvv0KEDGzZsyNbghMiSqKh/vw4NhePHYdgwbVCPEEI4weli+dtvv/Huu+/i7u5u116mTBkuXLiQbYEJ8cCUgsmTtcusK1f+2y731oUQD8jpYmm1WrFYLOna//77b3x9fbMlKCEeWGIi9OihzfGamgpr1rg6IiFEPuB0sWzevDmffPKJbVun0xEfH8/IkSN5+umnszM2IZxz+jSEh2v3JA0GmDYNPvvM1VEJIfKBB3rOsmXLllSuXJmkpCS6d+/OiRMnKFq0KAsXLsyJGIVwbN06baHmW7egeHFYsgQaNXJ1VEKIfMLpYhkcHMzBgwdZvHgxBw8eJD4+nr59+9KjRw+7AT9C5Jo//9QmFrBaoXZt+OEHKF3a1VEJIfIRp4ql2WymYsWK/Pzzz/To0YMePXrkVFxCZF7Vqto8rykp2mVXDw9XRySEyGecKpZGo5GkpKScikWIzDtxQpuurlgxbfvTT7WJ0OWxECFEDnB6gE9ERAQTJ04kNTU1J+IRwrGff4YnntDuUaZ9Dg0GKZRCiBzj9D3L3bt3s2HDBtatW0e1atXwvmsmlGXLlmVbcELYsVph3DgYOVLbTk6G2FgoXNi1cQkh8j2ni2VAQACdOnXKiViEuLeYGOjZE376SduOiNAmHrhrcgwhhMgJThfLOXPm5EQcQtzbkSPQoYM2XZ3JBDNnQu/ero5KCFGAZPqepdVqZeLEidSrV48nnniC4cOHcztthXkhcopS2iTox49DcLC2HqUUSiFELst0sRw/fjz/+9//8PHxoVSpUkydOpWIiIicjE0IbdDON9/AM8/A3r1Qq5arIxJCFECZLpbffPMNM2bMYO3ataxYsYKVK1cyf/58rFZrTsYnCqKbN+0nQK9aVdtOe0xECCFyWaaLZVRUlN3cr02bNkWn03Hx4sUcCUwUUIcOaY+FdOyoXXIVQog8INPFMjU1FY+7ZkYxGo2YzeZsD0oUUIsWaROhnz6t3Z+UVWyEEHlEpkfDKqXo3bs3JpPJ1paUlMQrr7xi96ylPGcpnJaaCsOHw8cfa9vNm2srh8jzk0KIPCLTxbJXr17p2p5//vlsDUYUQNevQ5cusHGjtj18uDbxgMHg2riEEOIOmS6W8nylyBGLF2uF0tsb5s0DmfBCCJEHOT0pgRDZ6rXX4OxZ7dnJKlVcHY0QQmTI6YnUhcgSsxk++ADi47VtnQ4mTZJCKYTI06RnKXLPlSvw3HPw229w8KB2CVYIIR4CUixF7ti5U7sfeeEC+PmBLBwuhHiIyGVYkfNmzYKGDbVCWakS7NoFbdu6OiohhMg0KZYi5yQnw8svQ//+kJKizcqzcydUqODqyIQQwilSLEXOuXVLW39Sp9MG9Xz/vczKI4R4KLm0WG7dupU2bdoQFBSETqdjxYoVdvuVUrz//vuULFkST09PmjZtyokTJ1wTrHBeYCD88AP88guMGKEVTSGEeAi5tFgmJCRQo0YNpk+fnuH+jz76iGnTpjFz5kx27tyJt7c3LVq0ICkpKZcjFZmiFGV++QXd0qX/ttWtCy1bui4mIYTIBi4dDduqVStatWqV4T6lFJ988gnvvvsu7dq1A7RlwkqUKMGKFSvo2rVrboYqHElKwvDyy9T45hvUd99pRbJMGVdHJYQQ2SLPPjpy5swZLl++TNOmTW1t/v7+1KlTh+3bt9+zWCYnJ5OcnGzbjo2NBcBsNmdphZS018oqKxmIisLQuTP6fftQej3md99FFxSkTUAg7MjnyDHJkWOSI8fuzlFWc5Vni+Xly5cBKFGihF17iRIlbPsyMmHCBEaPHp2ufd26dXh5eWU5rvXr12f5HPlJ0cOHqTVpEsbYWJJ9fdkzbBjXK1eG1atdHVqeJp8jxyRHjkmOHEvLUWJiYpbOk2eL5YMaMWIEQ4cOtW3HxsYSHBxM8+bN8fPze+Dzms1m1q9fT7NmzTAajdkR6kNPP3Uq+lGj0FksqJo1sS5cyPXISMnRfcjnyDHJkWOSI8fuzlHaVcYHlWeLZWBgIABXrlyhZMmStvYrV65Qs2bNe77OZDLZrbmZxmg0ZsuHKrvOky9cvQoWC/TsiW7mTNzc3CAyUnKUCZIjxyRHjkmOHEvLUVbzlGefsyxbtiyBgYFs2LDB1hYbG8vOnTsJDw93YWTC5oMPYOlSmDsXPD1dHY0QQuQYlxbL+Ph4Dhw4wIEDBwBtUM+BAweIiopCp9MxZMgQxo0bx08//cThw4fp2bMnQUFBtG/f3pVhF1xr10KbNtpsPABubvDss/L8pBAi33PpZdg9e/bw3//+17addq+xV69ezJ07l7feeouEhAReeukloqOjqV+/PmvWrMHDw8NVIRdMSsGHH8I772hfT5kCb7/t6qiEECLXuLRYPvXUUyil7rlfp9MxZswYxowZk4tRCTtxcdCnjzYTD0C/fjBkiEtDEkKI3JZnB/iIPOD4cejQAY4cAaMRPvsMXnrJ1VEJIUSuk2IpMrZhg7ZKSGwslCyp9SxlYJUQooDKs6NhhYuFhGgDd+rVg717pVAKIQo06VmKf6WmaiNcAcqVgy1btMWa3d1dG5cQQriY9CyF5sgRqF4d7pw+q0YNKZRCCIEUSwGwbBnUqQNHj8Jbb4HV6uqIhBAiT5FiWZBZLPC//0GnThAfD089pU08oJePhRBC3EnuWRZUN29C9+5acQR4/XX46KN/71kKIYSwkZ+MBdH169pl19OntTldZ83SCqcQQogMSbEsiIoUgQYNtKnrli/XBvIIIYS4JymWBUVqKiQlgY+P9vzk559DYqJWOIUQQtyXjOQoCK5dgxYtoEuXf0e6enpKoRRCiEySnmV+t3evNm1dVBR4e2vPU1at6uqohBDioSI9y/xs3jxturqoKG1Gnp07pVAKIcQDkGKZH5nNMHAg9O4NycnwzDOwaxdUqeLqyIQQ4qEkxTI/6t1bW04LYORI+PFHCAhwZURCCPFQk2KZHw0dCiVKaEVy1CiZkUcIIbJIBvjkFydOaPclAcLC4MwZbcSrEEKILJMux8MuORlefhmqVYM9e/5tl0IphBDZRorlw+zCBW3y8y+/hJQU2L3b1REJIUS+JJdhH1a//w7PPgtXrkChQrBgAbRs6eqohBAiX5Ji+bBRCmbMgCFDtCnsqlfX5nd95BFXRyaEENnOalUcvxpHTKIZfy8j5Yv7otfrcj0OKZYPmx9/hAEDtK+7dtVWDPH2dm1MQgiRA/aeu8m8P85x8mo8KakW3N0MPFbch151QwkLLZyrscg9y4dN27bQvj18/LF26VUKpRAiH9p77ibjVx3lzwsx+Hm4UbqQF34ebvx1MYbxq46y99zNXI1HepYPgz/+gMcf10a46vWwbJm2cogQQuRDVqti3h/niE40U6aIF7p/ft55m9zwcjdw7mYi3/xxjseDC+XaJVnpWeZlSsHkydCwIbzyirYNUiiFEPna8atxnLwaT3Ffk61QptHpdBTzMXHiajzHr8blWkxSLPOqxETo0QPeeAMsFq0tNdW1MQkhRC6ISTSTkmrBw2jIcL+H0UBKqoWYRHOuxSTFMi86fRrCw2HhQnBzg08/hblzwWh0dWRCCJHj/L2MuLsZSDJbMtyfZNYG+/h75d7PRCmWec26dVCrFhw6BMWLw8aN2uhXufQqhCggyhf35bHiPlyLT0al3X76h1KKa/HJlCvuQ/nivrkWkxTLvCQhAV54AW7dgjp1YN8+aNDA7hCrVXHsciw7T9/g2OVYrFZ1j5MJIcTDSa/X0atuKP6eRs7dTCQhORWLVZGQnMq5m4n4exrpWTc0V5+3lNGweYm3t3bpdckSmDoVTCa73XnpmSMhhMhJYaGFead1JdvPvOvxybi7Gaga5E9PF/zMk2LpaidOwLlz0LSptt24sfbnLmnPHEUnminua8LDaCLJbLE9c/RO60pSMIUQ+UpYaGEeDy4kM/gUeD//rI14Bdi1CypUyPCwvPjMUV6RV6bCEg83+RzlXXq9joqBfq4OQ4qlS1itMHastjAzQL164HfvD4MzzxzlhQ9VbpHL0iI7yOdIZIYM8MltMTHadHVphTIiQhvxWrLkvV+SB585cpW0AU7fbD/Lu8v/5PDf0XliKizxcMprU6qJvEt6lrnpyBHo0AGOH9cG78ycCb17O3zZnc8ceZvS/5O54pkjV7izBxB1M5GUVAuFvNwxWxTeJp1clhZOkdsbwhnSs8xNs2ZphTI4WFuPMhOF0mpVWK2KQl5G/r6VSOztFG4lphCflIpSymXPHOW2O3sAbnodSilMbgbiklM5cTWO6H961a6aCks8fPLilGoi75KeZSZYrYrjV7T/MMevxFEpSPtN0+lBAR9+qE0uMHw4FCvm8H3v7Eldi0viRkIKF6KTMBp0GN30eLgZ8DDqKeHnke6Zo+wcsODqwQ939wCib5tRgLubHpTidqqVv6MT8ff0Q6fT4WE0cD0+uUBclhYP7t/bG6YM98vnSNxJiqUDaQXr3LU4XgyF/y37k9BivtR5pDA7T9+8/6CAmze1idBHjdKmrXN315bWykDavbi/LsYCWk2dvyOKmNtmPN21S7Bueh2pVkWqVUGqFXOqwqoMdAorbTcQITsHLGR0ruK+JhpXLE7tRwrnSuG8uwdgNOjR63RYrAo3vQ53g56E5FQSki34eLgVmMvSImvk9oZwhhTL+7jz2cZCHtoVa4Metp+6zpo/L+Nm0OHv4YZVKcDMldgkom4k0P3JEFL3HeDpkREEXP4ba4oZ/UcTgfRFsVJJX45djmPeH+c4fT0ec6oCFFalFcxCXkauxCZhsSp8PdxItShum614GPWUL+HNrYRUdp2+SZewYE5ej2fX6Zss3BVFcqrV/nnMCzG8u/xPutYOprifB4U83Qnwvn8vcfeZm7z/45/E3DZT1MeEycNI1M0ETl6NZ/vpG5T096B66YAcHzV4dw/A2+SGt8lAXFIqBr0Bgw5SFJitVttl6apB/vn6srTIurQp1f66GIOXu8HuUqx8jsTdpFjeQ9qlvyuxSZgtVmISLBAMRy7FkmTR/lOlWCAxxX6i3xsJKYSM+YyJq6fhmZpMlH8J3k4oyzM7z1Ex0Jcp649z6O8YkszaD3ar0gpj2qR1bnrtfknqP9PYXY1LsZ07OdWKTqet1JVqtXL6eiIl/T05+Hc0/b7Zw5XYJM7fSiQlVRHg5UYhb3e89TrMVkVcspmbN82M+fkIBp0OdzcDRX3c71nsdp+9wZDFB7gWl4JBD7cSU0i1KAx6HZ5GPSkWRVxSKn9eiGb8qkTeaV2J6kE580Pl7h6ADihdyIsTV+K4bbZg0OnQ6SDVYnXZVFji4ZM2pdr4VUc5dzORYj4mPIza5+xafLJ8joQdKZb3cPxqHIf+jiY60YxS4OmmFa/7zcRqsFoYvnkO/XevAGBr2ccZ1OYtYjx92fvTXwR4GYm5nYoOMBp0JKZY7c5n0IHFCuoe76LQCqVBp32dkGzhzLV4zFZFcqqVYj7uKMDkpic+2cKJK3GUDPDkUvRtklOtWJVCKTAZ9VisVq7FJbP33E3+vpVoNwPQ3nM3eX/FX1yLS8bkZsDopiMuKZVUq8KKwqQzYHLTkZxqoaiPNzcSUvjmj3N81LFKFrOesYx6AAGeRsqV8OX8zQSiE1Nxd9NhtiiXTYUlHk55bUo1kXdJsbyH6AQz1+NTsFoVRjcd8SkZLxWTpnBiDJ/+NJF65w4BMOPJZ5n6VE+segNYFCkWxdW4FEx68PZ0Jy45/dqUd/Yw78fyT8H0MOqJS9LOU7qQJxarVgzd3XSg03M7xcK56wm23qj659Ku0aDDzWDgttmi9ZoTzbYh8oA2mOa2GTeDHneDDosVrErrVVqV4rbZgo+7Ae3WqbKNGjx5Ld65JGfSvXoARr0OX5ORIj4muj0Rkmv3UEX+kpemVBN5lxTLe7h1OwWzReuN3U6yYsp4PgCbIgnR1Lx4nASjB8OeHsLqivXRAwa0H/aWfy6rGgwGLFaFxarQ67TCl8aZ9UP0eh3qn+Ko16H1VvV62znddGAw6EhKtuBpNJCiLKT939f9c7y7QU9iipVAPze7IfInr8ZTzMeduCQzFoWtR6rXYRtYY7Zo8Rv1etuowdjbOTdq8J49gFLSAxBZl1emVBN5lxTLewjwNKKUVhQy40SxUAa0e5u//YpzolgooPUU9UorTDa6tOKjFRunKuQdDDodyRaFDjD8M0o2wNMNb3c34pJTMej06PinR4k2w55OB0a9DsM/AxkMeh0pFit6HXYzAKWkWigW4Im3ezJxyakY9do9QYV2DotFkWKxEuBlxNtkIDFFGzXo52nk6oN9O5kiPQAhhKvIpAT34OupjTy9FzdLKu//+iVPnP/T1rbp0SdshTKNRd11B1JpvTOdTqddFn3A+PQ6HT4mN4wGPW56PUaDHp1OR+lCXrjpddxOtdoGCal/3kiH9uxY2qg/rXerw6qwDZFPG0yTnGq1nctsVejRepRWq3Yuo0FH6QAvANukCI8V83nA78aJ7/ufHkCdR4pQMdBPCqUQIldIsbyHc9cT79npKxZ/i/mL3uHFvT/x2U8f4ZmSlOFxaT27OxdotlgtGPQ6DHodCniQn/UBnkaqlvKjWpAvbm469HodXu7adeIALyPlivvia3Ij1WK19TrdDXrcDHrc/nlDBaRYrHi5a88ops0AdOcK5f6ebrZzuRm03qVFab3Tx4r7YjToZPSpEKJAeCiK5fTp0ylTpgweHh7UqVOHXbt25fh7Xo1LRp9BdmpcOMbKeYOp8/dfxLp78U7zCG67e2R4DnXH3+4GHcV93UGnJyFFu7QJ2qVaSLsfmP4cafcj07i76Slb1Bu9Tsf56CRKBXgSFOBB1B2riRsNOrxNBh4t5kPvemV4rJgPRbyN2ghcs5XkVCuJKWmjcvX4e/1b7O5eodxo0FEx0JdyxX0o7O2On4cbJf09iE8yE5uUStUgf1lLUwiR7+X5e5aLFy9m6NChzJw5kzp16vDJJ5/QokULIiMjKV68eI69b6C/B256PSirbRBO6Nq1fPftV7hbUzlRJJiXO7zD6SKlHZ6rkJeRYS0qpHvO0qDToXRaAQzwdMPkZiDA04ifp5GDf98i5rbFVkwNevAxGSnkZSQuyUzyHcPbgXQDX6qVCrANfEmbhefQ39Fcj08mxWLFaNBT1MedGqUD0g2QuXswTdrMPfUeLcrz4SH4ehjlnqEQokDJ88Vy8uTJ9O/fnz59+gAwc+ZMVq1axddff83w4cNz7H2bVSxBUR93rsQmY7KYGbv2c2oeWAvA6vJ1Gfb0EBJMXhm+1l0PRX1NJKRYKFfMhwX9nsT9n8uk37xYJ90MPnq9jrjbqXbFJzXVytqjlzn8t/ZsYZMKJagQ6MvJ6/EZFqr7DXy5c2DMrYQUom+bHc7gI4NphBDiX3m6WKakpLB3715GjBhha9Pr9TRt2pTt27dn+Jrk5GSSk5Nt27GxWlEym82Yzc492vBao7L839pIUvQGAlISUDod0556nhlPPgc6HaYM7mrqdRDgYcTfZCA4wMSwFuXQ6ayYzVbbMeWKeVGuWMaF1mJJxfLPI53NKxajecV/J1xXysKjRTyhiGe6Y4H77rt7f0bvlxFH57xTWn6dzXNBIjlyTHLkmOTIsbtzlNVc6ZRSD/jwQs67ePEipUqV4o8//iA8PNzW/tZbb7FlyxZ27tyZ7jWjRo1i9OjR6doXLFiAl1fGBSozDLdvU+jkSa5Xq/bA5xBCCOEaiYmJdO/enZiYGPz8nH+mNk/3LB/EiBEjGDp0qG07NjaW4OBgmjdv/kAJAkhNtbIx8jLXPT1xC62Jv8mdiesiibqRSKpS6NGmmHu0mA+tawQRFlqIx4r5FLhLlmazmfXr19OsWTOMRlmpISOSI8ckR45Jjhy7O0dpVxkfVJ4ulkWLFsVgMHDlyhW79itXrhAYGJjha0wmEyZT+vXpjEbjA3+ojEZoXiWIX84doHmVIIxGI3UrBNrde6xSyo+KJeS5P8hargsKyZFjkiPHJEeOpeUoq3nK04+OuLu7ExYWxoYNG2xtVquVDRs22F2WdQW9XkflIH+eqxXMc7WCqVzSXwqlEELkU3m6ZwkwdOhQevXqRa1atahduzaffPIJCQkJttGxQgghRE7L88WyS5cuXLt2jffff5/Lly9Ts2ZN1qxZQ4kSJVwdmhBCiAIizxdLgAEDBjBgwABXhyGEEKKAytP3LIUQQoi8QIqlEEII4YAUSyGEEMIBKZZCCCGEA1IshRBCCAekWAohhBAOPBSPjmRF2jzxWZ0X0Gw2k5iYSGxsrEwvdQ+SI8ckR45JjhyTHDl2d47SasCDrh2S74tlXFwcAMHBwS6ORAghhKvFxcXh7+/v9Ovy9BJd2cFqtXLx4kV8fX3R6R587ta01UvOnz//wKuX5HeSI8ckR45JjhyTHDl2d46UUsTFxREUFIRe7/wdyHzfs9Tr9ZQuXTrbzufn5ycfTgckR45JjhyTHDkmOXLszhw9SI8yjQzwEUIIIRyQYimEEEI4IMUyk0wmEyNHjsxwYWmhkRw5JjlyTHLkmOTIsezOUb4f4COEEEJklfQshRBCCAekWAohhBAOSLEUQgghHJBiKYQQQjggxTITpk+fTpkyZfDw8KBOnTrs2rXL1SG5zNatW2nTpg1BQUHodDpWrFhht18pxfvvv0/JkiXx9PSkadOmnDhxwjXBusiECRN44okn8PX1pXjx4rRv357IyEi7Y5KSkoiIiKBIkSL4+PjQqVMnrly54qKIc9/nn39O9erVbQ+Mh4eHs3r1atv+gp6fjHz44YfodDqGDBlia5M8wahRo9DpdHZ/KlasaNufXTmSYunA4sWLGTp0KCNHjmTfvn3UqFGDFi1acPXqVVeH5hIJCQnUqFGD6dOnZ7j/o48+Ytq0acycOZOdO3fi7e1NixYtSEpKyuVIXWfLli1ERESwY8cO1q9fj9lspnnz5iQkJNiOef3111m5ciVLly5ly5YtXLx4kY4dO7ow6txVunRpPvzwQ/bu3cuePXto3Lgx7dq146+//gIkP3fbvXs3X3zxBdWrV7drlzxpqlSpwqVLl2x/fv/9d9u+bMuREvdVu3ZtFRERYdu2WCwqKChITZgwwYVR5Q2AWr58uW3barWqwMBANWnSJFtbdHS0MplMauHChS6IMG+4evWqAtSWLVuUUlpOjEajWrp0qe2Yo0ePKkBt377dVWG6XKFChdSsWbMkP3eJi4tT5cqVU+vXr1eNGjVSgwcPVkrJ5yjNyJEjVY0aNTLcl505kp7lfaSkpLB3716aNm1qa9Pr9TRt2pTt27e7MLK86cyZM1y+fNkuX/7+/tSpU6dA5ysmJgaAwoULA7B3717MZrNdnipWrEhISEiBzJPFYmHRokUkJCQQHh4u+blLREQErVu3tssHyOfoTidOnCAoKIhHHnmEHj16EBUVBWRvjvL9ROpZcf36dSwWCyVKlLBrL1GiBMeOHXNRVHnX5cuXATLMV9q+gsZqtTJkyBDq1atH1apVAS1P7u7uBAQE2B1b0PJ0+PBhwsPDSUpKwsfHh+XLl1O5cmUOHDgg+fnHokWL2LdvH7t37063Tz5Hmjp16jB37lwqVKjApUuXGD16NA0aNODPP//M1hxJsRQiB0VERPDnn3/a3UMRmgoVKnDgwAFiYmL4/vvv6dWrF1u2bHF1WHnG+fPnGTx4MOvXr8fDw8PV4eRZrVq1sn1dvXp16tSpQ2hoKEuWLMHT0zPb3kcuw95H0aJFMRgM6UZOXblyhcDAQBdFlXel5UTypRkwYAA///wzmzZtslsmLjAwkJSUFKKjo+2OL2h5cnd357HHHiMsLIwJEyZQo0YNpk6dKvn5x969e7l69Sr/+c9/cHNzw83NjS1btjBt2jTc3NwoUaKE5CkDAQEBlC9fnpMnT2brZ0mK5X24u7sTFhbGhg0bbG1Wq5UNGzYQHh7uwsjyprJlyxIYGGiXr9jYWHbu3Fmg8qWUYsCAASxfvpyNGzdStmxZu/1hYWEYjUa7PEVGRhIVFVWg8nQ3q9VKcnKy5OcfTZo04fDhwxw4cMD2p1atWvTo0cP2teQpvfj4eE6dOkXJkiWz97OUhUFIBcKiRYuUyWRSc+fOVUeOHFEvvfSSCggIUJcvX3Z1aC4RFxen9u/fr/bv368ANXnyZLV//3517tw5pZRSH374oQoICFA//vijOnTokGrXrp0qW7asun37tosjzz2vvvqq8vf3V5s3b1aXLl2y/UlMTLQd88orr6iQkBC1ceNGtWfPHhUeHq7Cw8NdGHXuGj58uNqyZYs6c+aMOnTokBo+fLjS6XRq3bp1SinJz73cORpWKcmTUkq98cYbavPmzerMmTNq27ZtqmnTpqpo0aLq6tWrSqnsy5EUy0z49NNPVUhIiHJ3d1e1a9dWO3bscHVILrNp0yYFpPvTq1cvpZT2+Mh7772nSpQooUwmk2rSpImKjIx0bdC5LKP8AGrOnDm2Y27fvq1ee+01VahQIeXl5aU6dOigLl265Lqgc9mLL76oQkNDlbu7uypWrJhq0qSJrVAqJfm5l7uLpeRJqS5duqiSJUsqd3d3VapUKdWlSxd18uRJ2/7sypEs0SWEEEI4IPcshRBCCAekWAohhBAOSLEUQgghHJBiKYQQQjggxVIIIYRwQIqlEEII4YAUSyGEEMIBKZZCCCGEA1IsxQMpU6YMn3zyiavDyDb57fvJi3r37k379u1t20899RRDhgxxWTw5RafTsWLFCgDOnj2LTqfjwIEDLo1JZJ0US2Hn/PnzvPjiiwQFBeHu7k5oaCiDBw/mxo0brg4tT/j7779xd3e3rU2Z35UpUwadTodOp8PT05MyZcrQuXNnNm7c6PS5pk6dyty5c7MttrRClPYnbRWTcePGkVcmJgsODubSpUsF5vOSn0mxFDanT5+mVq1anDhxgoULF3Ly5ElmzpxpW2Xl5s2bLovNYrFgtVpd9v5p5s6dS+fOnW2rqeQ0s9mc4+/hyJgxY7h06RKRkZF88803BAQE0LRpU8aPH+/Uefz9/dMtwpsdfv31Vy5dusSJEycYPXo048eP5+uvv87297lTSkpKpo4zGAwEBgbi5iZLBz/spFgKm4iICNzd3Vm3bh2NGjUiJCSEVq1a8euvv3LhwgXeeecdu+Pj4uLo1q0b3t7elCpViunTp9v2KaUYNWoUISEhmEwmgoKCGDRokG1/cnIyw4YNo1SpUnh7e1OnTh02b95s2z937lwCAgL46aefqFy5MiaTiVmzZuHh4ZFubbrBgwfTuHFj2/bvv/9OgwYN8PT0JDg4mEGDBpGQkGDbf/XqVdq0aYOnpydly5Zl/vz5mcqPUoo5c+bwwgsv0L17d2bPnm3b97///Y86deqke02NGjUYM2aMbXvWrFlUqlQJDw8PKlasyIwZM2z70npKixcvplGjRnh4eDB//nxu3LhBt27dKFWqFF5eXlSrVo2FCxfavU9cXBw9evTA29ubkiVLMmXKlHSXOR3l/F58fX0JDAwkJCSEhg0b8uWXX/Lee+/x/vvvExkZCWi/zPTt25eyZcvi6elJhQoVmDp1qt157r4Me6cxY8Zk2PuqWbMm77333n3jK1KkCIGBgYSGhtKjRw/q1avHvn37bPutVitjxoyhdOnSmEwmatasyZo1a+zO8fbbb1O+fHm8vLx45JFHeO+99+x+URk1ahQ1a9Zk1qxZlC1b1rYY84kTJ2jYsCEeHh5UrlyZ9evX25337suwmzdvRqfTsWHDBmrVqoWXlxd169a15THNuHHjKF68OL6+vvTr14/hw4dTs2ZN2/7NmzdTu3ZtvL29CQgIoF69epw7d+6+eRJZlE0Tv4uH3I0bN5ROp1MffPBBhvv79++vChUqpKxWq1JKqdDQUOXr66smTJigIiMj1bRp05TBYLCtHLF06VLl5+enfvnlF3Xu3Dm1c+dO9eWXX9rO169fP1W3bl21detWdfLkSTVp0iRlMpnU8ePHlVJKzZkzRxmNRlW3bl21bds2dezYMRUfH69KlCihZs2aZTtPamqqXdvJkyeVt7e3mjJlijp+/Ljatm2bevzxx1Xv3r1tr2nVqpWqUaOG2r59u9qzZ4+qW7eu8vT0VFOmTLlvjjZs2KACAwNVamqqOnz4sPL19VXx8fFKKaX+/PNPBditdpDWduLECaWUUt99950qWbKk+uGHH9Tp06fVDz/8oAoXLqzmzp2rlFLqzJkzClBlypSxHXPx4kX1999/q0mTJqn9+/erU6dO2XK9c+dOu3yGhoaqX3/9VR0+fFh16NBB+fr62q1Q4SjnGQkNDc0wL2mfl4kTJyqllEpJSVHvv/++2r17tzp9+rT67rvvlJeXl1q8eLHtNb169VLt2rWzbd+5gsb58+eVXq9Xu3btsu3ft2+f0ul06tSpUxnGlpav/fv329p2796tAgIC1Lx582xtkydPVn5+fmrhwoXq2LFj6q233lJGo9Hu+x47dqzatm2bOnPmjPrpp59UiRIlbN+bUkqNHDlSeXt7q5YtW6p9+/apgwcPKovFoqpWraqaNGmiDhw4oLZs2aIef/xxBajly5dnGGPaqj116tRRmzdvVn/99Zdq0KCBqlu3ru29vvvuO+Xh4aG+/vprFRkZqUaPHq38/PxUjRo1lFJKmc1m5e/vr4YNG6ZOnjypjhw5oubOnWtbJk/kDCmWQiml1I4dO+z+k99t8uTJClBXrlxRSmk/RFu2bGl3TJcuXVSrVq2UUkp9/PHHqnz58iolJSXduc6dO6cMBoO6cOGCXXuTJk3UiBEjlFJasQTUgQMH7I4ZPHiwaty4sW177dq1ymQyqVu3bimllOrbt6966aWX7F7z22+/Kb1er27fvq0iIyMVYPdD+ejRowpwWCy7d++uhgwZYtuuUaOG3bJbNWrUUGPGjLFtjxgxQtWpU8e2/eijj6oFCxbYnXPs2LG2tfXSfrB+8skn941DKaVat26t3njjDaWUUrGxscpoNKqlS5fa9kdHRysvLy9bMcpMzjNyr2KplFIlSpRQr7766j1fGxERoTp16mTbvl+xVEr7JebO8w0cOFA99dRT9zx/Wr48PT2Vt7e3MhqNCkj37x8UFKTGjx9v1/bEE0+o11577Z7nnjRpkgoLC7Ntjxw5UhmNRtsaiUppnz03Nze7nK5evTpTxfLXX3+1vWbVqlUKsK35WqdOHRUREWEXT7169WzF8saNGwpQmzdvvmf8IvvJZVhhRzkxMOLulcbDw8M5evQoAM899xy3b9/mkUceoX///ixfvpzU1FQADh8+jMVioXz58vj4+Nj+bNmyhVOnTtnO5+7uTvXq1e3eo0ePHmzevJmLFy8CMH/+fFq3bm27F3bw4EHmzp1rd94WLVpgtVo5c+YMR48exc3NjbCwMNs5K1as6PBeWnR0NMuWLeP555+3tT3//PN2l2J79OjBggULAC2PCxcupEePHgAkJCRw6tQp+vbtaxfbuHHj7L5ngFq1atltWywWxo4dS7Vq1ShcuDA+Pj6sXbuWqKgoQLvXbDabqV27tu01/v7+VKhQwbad2Zw7QymFTqezbU+fPp2wsDCKFSuGj48PX375pS3GzOjfvz8LFy4kKSmJlJQUFixYwIsvvujwdYsXL+bAgQMcPHiQJUuW8OOPPzJ8+HAAYmNjuXjxIvXq1bN7Tb169Wyf1bRz1KtXj8DAQHx8fHj33XfTxR4aGkqxYsVs20ePHiU4OJigoCBb293/J+7lzs91yZIlAe32AEBkZKTdvyVgt124cGF69+5NixYtaNOmDVOnTuXSpUuZel/x4OSuswDgscceQ6fTcfToUTp06JBu/9GjRylUqJDdD4v7CQ4OJjIykl9//ZX169fz2muvMWnSJLZs2UJ8fDwGg4G9e/diMBjsXufj42P72tPT0+6HMcATTzzBo48+yqJFi3j11VdZvny53QjL+Ph4Xn75Zbv7o2lCQkI4fvx4puK/24IFC0hKSrK7L6mUwmq1cvz4ccqXL0+3bt14++232bdvH7dv3+b8+fN06dLFFhfAV199le7e5t058Pb2ttueNGkSU6dO5ZNPPqFatWp4e3szZMiQTA8ySXv/zOQ8s27cuMG1a9coW7YsAIsWLWLYsGF8/PHHhIeH4+vry6RJk5waBNWmTRtMJhPLly/H3d0ds9nMs88+6/B1wcHBPPbYYwBUqlSJU6dO8d577zFq1KhMve/27dvp0aMHo0ePpkWLFvj7+7No0SI+/vhju+Pu/nfJCqPRaPs67TPuzAC2OXPmMGjQINasWcPixYt59913Wb9+PU8++WS2xSjsSbEUgDZIolmzZsyYMYPXX38dT09P277Lly8zf/58evbsaVe8duzYYXeOHTt2UKlSJdu2p6cnbdq0oU2bNkRERFCxYkUOHz7M448/jsVi4erVqzRo0MDpWHv06MH8+fMpXbo0er2e1q1b2/b95z//4ciRI7YfnnerWLEiqamp7N27lyeeeALQfpO/e9DQ3WbPns0bb7xB79697dpfe+01vv76az788ENKly5No0aNmD9/Prdv36ZZs2YUL14cgBIlShAUFMTp06dtvc3M2rZtG+3atbP1atMKdOXKlQF45JFHMBqN7N69m5CQEABiYmI4fvw4DRs2BMhyzu82depU9Hq9bcDOtm3bqFu3Lq+99prtGGd7rG5ubvTq1Ys5c+bg7u5O165d7T6HmWUwGEhNTSUlJQU/Pz+CgoLYtm0bjRo1sh2zbds2W2/tjz/+IDQ01G4AW2YGy1SqVInz589z6dIlW+/w7v8TD6JChQrs3r2bnj172tp2796d7rjHH3+cxx9/nBEjRhAeHs6CBQukWOYk114FFnnJ8ePHVdGiRVWDBg3Uli1bVFRUlFq9erWqWrWqKleunLpx44bt2NDQUOXn56cmTpyoIiMj1WeffaYMBoNas2aNUkq75zhr1ix1+PBhderUKfXuu+8qT09Pdf36daWUUj169LAbyLJz5071wQcfqJ9//tn2en9//wzjPHHihAJU9erVVd++fe32HTx4UHl6eqqIiAi1f/9+dfz4cbVixQq7e0AtW7ZUjz/+uNqxY4fas2ePql+//n0H+Ozfv18B6ujRo+n2zZgxQwUGBiqz2ayUUuqrr75SQUFBqmjRourbb7+1O/arr75Snp6eaurUqSoyMlIdOnRIff311+rjjz9WSmU8YEUppV5//XUVHBystm3bpo4cOaL69eun/Pz87O7/9evXT5UtW1Zt3LhR/fnnn6pTp07K19fX7h6ro5xnJDQ0VI0ZM0ZdunRJRUVFqS1btqj+/fsrnU6nPvzwQ9txU6dOVX5+fmrNmjUqMjJSvfvuu3aDUpRyfM9SKe0zaDAYlMFgUDt27LhnXHfm69dff1WXLl1S58+fV7/88osqVaqU+u9//2s7bsqUKcrPz08tWrRIHTt2TL399tt2A3x+/PFH5ebmphYuXKhOnjyppk6dqgoXLmz3+Rs5cqTd96KUUhaLRVWuXFk1a9ZMHThwQG3dulWFhYVl6p5l2j12pf79fJ05c0YppQ3w8fT0VHPnzlXHjx9XY8eOVX5+fqpmzZpKKaVOnz6thg8frv744w919uxZtXbtWlWkSBE1Y8aM++ZLZI0US2Hn7NmzqlevXqpEiRLKaDSq4OBgNXDgQFuRSxMaGqpGjx6tnnvuOeXl5aUCAwPV1KlTbfuXL1+u6tSpo/z8/JS3t7d68skn7QY1pI2eLFOmjDIajapkyZKqQ4cO6tChQ0qp+xdLpZSqXbu2AtTGjRvT7du1a5dq1qyZ8vHxUd7e3qp69ep2AzwuXbqkWrdurUwmkwoJCVHffPPNfQeyDBgwQFWuXDnDfZcuXVJ6vV79+OOPSimlbt26pUwmk/Ly8lJxcXHpjp8/f76qWbOmcnd3V4UKFVINGzZUy5YtU0rdu1jeuHFDtWvXTvn4+KjixYurd999V/Xs2dOu8MTGxqru3bvb/i0mT56sateurYYPH247xlHOMxIaGqoABSh3d3cVEhKiOnfunC7vSUlJqnfv3srf318FBASoV199VQ0fPtzpYqmUUg0aNFBVqlS5Z0xp0vKV9sdgMKjSpUur/v372w3EsVgsatSoUapUqVLKaDSqGjVqqNWrV9ud680331RFihRRPj4+qkuXLmrKlCkOi6VSSkVGRqr69esrd3d3Vb58ebVmzZosF0ullBozZowqWrSo8vHxUS+++KIaNGiQevLJJ5VSSl2+fFm1b99elSxZUrm7u6vQ0FD1/vvvK4vF4jBn4sHplMojU10IIbJNQkICpUqV4uOPP6Zv376uDifTlFKUK1eO1157jaFDh7o6nDyjWbNmBAYG8u2337o6lAJL7lkKkQ/s37+fY8eOUbt2bWJiYmwTIbRr187FkWXetWvXWLRoEZcvX6ZPnz6uDsdlEhMTmTlzJi1atMBgMLBw4ULbQDnhOlIshcgn/u///o/IyEjc3d0JCwvjt99+o2jRoq4OK9OKFy9O0aJF+fLLLylUqJCrw3EZnU7HL7/8wvjx40lKSqJChQr88MMPNG3a1NWhFWhyGVYIIYRwQCYlEEIIIRyQYimEEEI4IMVSCCGEcECKpRBCCOGAFEshhBDCASmWQgghhANSLIUQQggHpFgKIYQQDvw/Nd6WcCXGiwAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# observed values\n", + "observed = df_burbank[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = model_ols.predict()\n", + "\n", + "plt.figure(figsize=(5, 4))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.7)\n", + "\n", + "# perfect fit line\n", + "max_val = max(observed.max(), predicted.max())\n", + "plt.plot([0, max_val], [0, max_val], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted\")\n", + "plt.grid(True)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f0350547-5f03-42f2-be51-91a478504bcb", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"burbank_orange_new_stops.csv\")\n", + "df[\"stop_dir_key\"] = df[\"stop_name\"] + \" \" + df[\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e940f252-0e70-4746-82b1-b679ec764d97", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"Hollywood & Jeffries eastbound\": (34.18141305368438, -118.34903738211447),\n", + "\"Hollywood & Victory Bl eastbound\": (34.18508535157502, -118.34929119735641),\n", + "\"Hollywood & Pacific eastbound\": (34.18825119276962, -118.34886491064228),\n", + "\"Hollywood & Valhalla eastbound\": (34.19012427165374, -118.34916328937923),\n", + "\"Hollywood & Thorton eastbound\": (34.19656151035557, -118.34876716762236),\n", + "\"Hollywood & Thorton westbound\": (34.195980179882646, -118.34894014653726),\n", + "\"New BUR terminal eastbound\": (34.19359656711031, -118.35357055101639),\n", + "\"New BUR terminal westbound\": (34.19359656711031, -118.35357055101639),\n", + "\"Winona / Ontario eastbound\": (34.199490557715684, -118.3443711434909),\n", + "\"Winona / Ontario westbound\": (34.1992091874645, -118.34484346690523),\n", + "\"Ontario & Thorton eastbound\": (34.19593202043652, -118.34444331137956),\n", + "\"Ontario & Thorton westbound\": (34.19541510602419, -118.34460558501739),\n", + "\"Empire & Ontario eastbound\": (34.192108542580186, -118.3443394102755),\n", + "\"Empire & Buena Vista eastbound\": (34.19195822628478, -118.33787457476522),\n", + "\"Empire & Valpreda eastbound\": (34.19194945024493, -118.33285175184913),\n", + "\"Empire & Valpreda westbound\": (34.19179144771815, -118.33244032844016),\n", + "\"Empire & Grismer eastbound\": (34.19175476406717, -118.32509312643347),\n", + "\"Empire & Grismer westbound\": (34.19154206721876, -118.3254365921081),\n", + "\"Amherst Dr / San Fernando eastbound\": (34.19012800601128, -118.32086710181368),\n", + "\"Amherst Dr / San Fernando westbound\": (34.189934438443714, -118.32176619076398),\n", + "\"Glenoaks & Bethany eastbound\": (34.191647095345786, -118.31754103475315),\n", + "\"Glenoaks & Bethany westbound\": (34.19168659607283, -118.3180498038794),\n", + "\"Glenoaks & Fairmount eastbound\": (34.18922976877985, -118.31426181767534),\n", + "\"Glenoaks & Fairmount westbound\": (34.18869054389077, -118.3139580922512),\n", + "\"Glenoaks & Cypress eastbound\": (34.18708018484801, -118.31127153444093),\n", + "\"Glenoaks & Cypress westbound\": (34.18677382226348, -118.31135025143384),\n", + "\"Glenoaks & Magnolia eastbound\": (34.18566039664216, -118.30935620418528),\n", + "\"Glenoaks & Magnolia westbound\": (34.1853950731641, -118.3094180753144),\n", + "\"Glenoaks & Olive eastbound\": (34.18338784687265, -118.30666291160377),\n", + "\"Glenoaks & Olive westbound\": (34.183750381812565, -118.30682928383196),\n", + "\"Glenoaks & Verdugo eastbound\": (34.1810536128531, -118.30348086446116),\n", + "\"Glenoaks & Verdugo westbound\": (34.18130060913145, -118.30290962506388),\n", + "\"Glenoaks & Providencia eastbound\": (34.17964641863243, -118.30103491619572),\n", + "\"Glenoaks & Providencia westbound\": (34.17927416886304, -118.30121771535951),\n", + "\"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + "\"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + "\"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + "\"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + "\"Flower & Alameda eastbound\": (34.17106795233713, -118.30268518471172),\n", + "\"Flower & Alameda westbound\": (34.17166407022795, -118.3032739880033)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "03fbf510-a825-46f5-971d-2417b95c5605", + "metadata": {}, + "outputs": [], + "source": [ + "df_blue = pd.read_csv(\"burbank_blue_new_stops.csv\")\n", + "df_blue[\"stop_dir_key\"] = df_blue [\"stop_name\"] + \" \" + df_blue [\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ecb01671-94b1-43c2-8917-5a9db3636eee", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords_blue = {\n", + " \"Metrolink Station eastside terminal at Front St eastbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Metrolink Station eastside terminal at Front St westbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Verdugo & Ikea Way eastbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & Ikea Way westbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & San Fernando eastbound\": (34.17878489736103, -118.30541531103879),\n", + " \"Verdugo & San Fernando westbound\": (34.17851879621711, -118.30606420445262),\n", + " \"Glenoaks & Providencia eastbound\": (34.17962336385441, -118.30104441612727),\n", + " \"Glenoaks & Providencia westbound\": (34.17927459077334, -118.30121849159424),\n", + " \"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + " \"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + " \"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + " \"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + " \"Alameda & Lake eastbound\": (34.16893683695737, -118.30550179211235),\n", + " \"Alameda & Lake westbound\": (34.169039897393205, -118.30583857000296),\n", + " \"Alameda & Victory eastbound\": (34.166763977999786, -118.30764556757374),\n", + " \"Alameda & Victory westbound\": (34.16653844596177, -118.30776671277157),\n", + " \"Alameda & Main eastbound\": (34.05882507328523, -118.2372783904341),\n", + " \"Alameda & Main westbound\": (34.05926978274522, -118.23693452367304),\n", + " \"Alameda & Mariposa eastbound\": (34.16232050313561, -118.3156158302872),\n", + " \"Alameda & Mariposa westbound\": (34.16231163244352, -118.3163406121734),\n", + " \"Alameda & Reese eastbound\": (34.160989586571944, -118.31959642185599),\n", + " \"Alameda & Reese westbound\": (34.16116470453852, -118.32011647018618),\n", + " \"Alameda & Keystone eastbound\": (34.15960879667507, -118.32369063587736),\n", + " \"Alameda & Keystone westbound\": (34.159809285768965, -118.32415899113134),\n", + " \"Alameda / Buena Vista eastbound\": (34.15830550275982, -118.32847444534262),\n", + " \"Alameda / Buena Vista westbound\": (34.158061055695796, -118.32827576408872),\n", + " \"Buena Vista & Olive eastbound\": (34.16071171372398, -118.32948693260309),\n", + " \"Buena Vista & Olive westbound\": (34.16108254215271, -118.32933331481632),\n", + " \"Buena Vista & Verdugo eastbound\": (34.16511269756838, -118.33111018379287),\n", + " \"Buena Vista & Verdugo westbound\": (34.165299805818485, -118.33167323237512),\n", + " \"Buena Vista & Clark eastbound\": (34.168565005129715, -118.33283674907685),\n", + " \"Buena Vista & Clark westbound\": (34.16866971383002, -118.33328130798998),\n", + " \"Buena Vista & Magnolia eastbound\": (34.17195186709472, -118.33452224880612),\n", + " \"Buena Vista & Magnolia westbound\": (34.17211056589883, -118.33495282578686),\n", + " \"Buena Vista & Chandler eastbound\": (34.175468005263646, -118.33584132009098),\n", + " \"Buena Vista & Chandler westbound\": (34.17564123355154, -118.33666600223994),\n", + " \"Buena Vista & Burbank eastbound\": (34.178999088200214, -118.33829343490339),\n", + " \"Buena Vista & Burbank westbound\": (34.17876464082475, -118.33765850526345),\n", + " \"Buena Vista & Jeffries eastbound\": (34.18121005878122, -118.33854591221447),\n", + " \"Buena Vista & Jeffries westbound\": (34.180900571549294, -118.33814871081255),\n", + " \"Buena Vista & Victory eastbound\": (34.18449938252548, -118.3380410337855),\n", + " \"Buena Vista & Victory westbound\": (34.18466457669643, -118.33870399111125),\n", + " \"Buena Vista & Pacific eastbound\": (34.188461988919315, -118.33840245172041),\n", + " \"Buena Vista & Pacific westbound\": (34.18806979207031, -118.33819315186547),\n", + " \"Buena Vista & Empire eastbound\": (34.19198270314381, -118.33837161247952),\n", + " \"Buena Vista & Empire westbound\": (34.19177371161881, -118.3376321369762),\n", + " \"Buena Vista & Thorton eastbound\": (34.19573279798583, -118.33806248639054),\n", + " \"Buena Vista & Thorton westbound\": (34.19545983217905, -118.33766900330374),\n", + " \"Buena Vista & Winona eastbound\": (34.19971384309687, -118.33802251372927),\n", + " \"Buena Vista & Winona westbound\": (34.19955262101271, -118.33759639149243),\n", + " \"Buena Vista & Tulare eastbound\": (34.20288213768749, -118.33803238893368),\n", + " \"Buena Vista & Tulare westbound\": (34.202779515064044, -118.33757227833074),\n", + " \"Glenoaks / Buena Vista eastbound\": (34.205108109416635, -118.33787452049432),\n", + " \"Glenoaks / Buena Vista westbound\": (34.20469583946896, -118.33746105567633),\n", + " \"Glenoaks / Cohasset eastbound\": (34.206545468267606, -118.34143554899393),\n", + " \"Glenoaks / Cohasset westbound\": (34.2067229265355, -118.34135508272895),\n", + " \"Cohasset & Bloomington eastbound\": (34.2065471711793, -118.34523843199325),\n", + " \"Cohasset & Bloomington westbound\": (34.206793697966674, -118.34551974845968),\n", + " \"N San Fernando / Lima / Avon eastbound\": (34.19149816424647, -118.34706760310583),\n", + " \"N San Fernando / Lima / Avon westbound\": (34.192392404649915, -118.3479249843664)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d748a39c-d82a-400c-abc0-4c7ded9b34d7", + "metadata": {}, + "outputs": [], + "source": [ + "def apply_manual_coords(df, manual_coords):\n", + " # filter rows\n", + " df = df[(df['change_type'] != 'no_change') & \n", + " (df['change_type'] != 'relocating')].copy()\n", + " \n", + " latitudes, longitudes, geoms = [], [], []\n", + "\n", + " for key in df[\"stop_dir_key\"]:\n", + " coords = manual_coords.get(key)\n", + "\n", + " if coords:\n", + " lat, lon = coords\n", + " latitudes.append(lat)\n", + " longitudes.append(lon)\n", + " geoms.append(Point(lon, lat))\n", + " else:\n", + " latitudes.append(None)\n", + " longitudes.append(None)\n", + " geoms.append(None)\n", + "\n", + " df[\"latitude\"] = latitudes\n", + " df[\"longitude\"] = longitudes\n", + " df[\"pt_geom\"] = geoms\n", + "\n", + " df[\"stop_id\"] = [\"new_\" + str(i + 1) for i in range(len(df))]\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2758415b-a18c-484b-b15c-3142d2dcce28", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
6Hollywood & Jeffrieseastboundadding_existingHollywood & Jeffries eastbound34.181413-118.349037POINT (-118.34903738211447 34.18141305368438)new_1
8Hollywood & Victory Bleastboundadding_existingHollywood & Victory Bl eastbound34.185085-118.349291POINT (-118.34929119735641 34.18508535157502)new_2
10Hollywood & Pacificeastboundadding_existingHollywood & Pacific eastbound34.188251-118.348865POINT (-118.34886491064228 34.18825119276962)new_3
12Hollywood & Valhallaeastboundadding_existingHollywood & Valhalla eastbound34.190124-118.349163POINT (-118.34916328937923 34.19012427165374)new_4
14Hollywood & Thortoneastboundadding_existingHollywood & Thorton eastbound34.196562-118.348767POINT (-118.34876716762236 34.19656151035557)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "6 Hollywood & Jeffries eastbound adding_existing \n", + "8 Hollywood & Victory Bl eastbound adding_existing \n", + "10 Hollywood & Pacific eastbound adding_existing \n", + "12 Hollywood & Valhalla eastbound adding_existing \n", + "14 Hollywood & Thorton eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "6 Hollywood & Jeffries eastbound 34.181413 -118.349037 \n", + "8 Hollywood & Victory Bl eastbound 34.185085 -118.349291 \n", + "10 Hollywood & Pacific eastbound 34.188251 -118.348865 \n", + "12 Hollywood & Valhalla eastbound 34.190124 -118.349163 \n", + "14 Hollywood & Thorton eastbound 34.196562 -118.348767 \n", + "\n", + " pt_geom stop_id \n", + "6 POINT (-118.34903738211447 34.18141305368438) new_1 \n", + "8 POINT (-118.34929119735641 34.18508535157502) new_2 \n", + "10 POINT (-118.34886491064228 34.18825119276962) new_3 \n", + "12 POINT (-118.34916328937923 34.19012427165374) new_4 \n", + "14 POINT (-118.34876716762236 34.19656151035557) new_5 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = apply_manual_coords(df, manual_coords)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "dec21895-9345-4f7a-8bfb-42d49ccc8e89", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
2Verdugo & San Fernandoeastboundadding_existingVerdugo & San Fernando eastbound34.178785-118.305415POINT (-118.30541531103879 34.17878489736103)new_1
3Glenoaks & Providenciaeastboundadding_existingGlenoaks & Providencia eastbound34.179623-118.301044POINT (-118.30104441612727 34.17962336385441)new_2
4Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (-118.29787237592716 34.1769213295822)new_3
5Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (-118.29952381900989 34.174365721132396)new_4
6Alameda & Lakeeastboundadding_existingAlameda & Lake eastbound34.168937-118.305502POINT (-118.30550179211235 34.16893683695737)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "2 Verdugo & San Fernando eastbound adding_existing \n", + "3 Glenoaks & Providencia eastbound adding_existing \n", + "4 Glenoaks / Alameda eastbound adding_existing \n", + "5 Alameda & San Fernando eastbound adding_existing \n", + "6 Alameda & Lake eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "2 Verdugo & San Fernando eastbound 34.178785 -118.305415 \n", + "3 Glenoaks & Providencia eastbound 34.179623 -118.301044 \n", + "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "5 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "6 Alameda & Lake eastbound 34.168937 -118.305502 \n", + "\n", + " pt_geom stop_id \n", + "2 POINT (-118.30541531103879 34.17878489736103) new_1 \n", + "3 POINT (-118.30104441612727 34.17962336385441) new_2 \n", + "4 POINT (-118.29787237592716 34.1769213295822) new_3 \n", + "5 POINT (-118.29952381900989 34.174365721132396) new_4 \n", + "6 POINT (-118.30550179211235 34.16893683695737) new_5 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_blue = apply_manual_coords(df_blue, manual_coords_blue)\n", + "df_blue.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b5529430-6cab-44b4-af60-d7eb0508f4e8", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_orange = gpd.GeoDataFrame(df, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "gdf_blue = gpd.GeoDataFrame(df_blue, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_orange = gdf_orange.to_crs(epsg=32611)\n", + "gdf_blue = gdf_blue.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_orange['buffer'] = gdf_orange.geometry.buffer(buffer_distance)\n", + "gdf_blue['buffer'] = gdf_blue.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2581293f-64c3-4c66-9eea-8499c29a767f", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_orange.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9112a322-1f88-4528-8aba-f63259edd383", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange = gpd.overlay(acs_gdf, gdf_orange.set_geometry('buffer'), how='intersection')\n", + "geometry_intersect_blue = gpd.overlay(acs_gdf, gdf_blue.set_geometry('buffer'), how='intersection')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "dd2400b6-5ef6-4b0e-8b0b-e89fef91f4e0", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange['area_2'] = geometry_intersect_orange.geometry.area # area of overlap\n", + "geometry_intersect_orange['area_ratio'] = geometry_intersect_orange['area_2'] / geometry_intersect_orange['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_orange[f'{col}_adj'] = geometry_intersect_orange[col] * geometry_intersect_orange['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "69719310-f09d-4adf-a2c6-e43aeb78566a", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_blue['area_2'] = geometry_intersect_blue.geometry.area # area of overlap\n", + "geometry_intersect_blue['area_ratio'] = geometry_intersect_blue['area_2'] / geometry_intersect_blue['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_blue[f'{col}_adj'] = geometry_intersect_blue[col] * geometry_intersect_blue['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "0128a9f5-b8f4-498f-8ea0-c7491d13ea18", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['STATEFP', 'COUNTYFP', 'TRACTCE', 'GEOIDFQ', 'GEOID', 'NAME',\n", + " 'NAMELSAD', 'STUSPS', 'NAMELSADCO', 'STATE_NAME', 'LSAD', 'ALAND',\n", + " 'AWATER', 'total_pop', 'poverty_pop', 'non_us_citizen', 'male_65_to_66',\n", + " 'male_67_to_69', 'male_70_to_74', 'male_75_to_79', 'male_80_to_84',\n", + " 'male_85_and_over', 'female_65_to_66', 'female_67_to_69',\n", + " 'female_70_to_74', 'female_75_to_79', 'female_80_to_84',\n", + " 'female_85_and_over', 'male_15_17', 'male_18_19', 'male_20', 'male_21',\n", + " 'male_22_24', 'female_15_17', 'female_18_19', 'female_20', 'female_21',\n", + " 'female_22_24', 'median_household_income', 'income_less_10000',\n", + " 'income_10000_14999', 'income_15000_24999', 'income_25000_34999',\n", + " 'income_35000_49999', 'income_50000_64999', 'income_65000_74999',\n", + " 'workers_with_no_car', 'households_with_no_cars', 'public_asst_pop',\n", + " 'veteran_pop', 'county_name', 'inc_extremelylow', 'inc_verylow',\n", + " 'inc_low', 'inc_total_lowincome', 'male_seniors', 'female_seniors',\n", + " 'male_youth', 'female_youth', 'total_seniors', 'total_youth',\n", + " 'disabled_pop', 'area_m2', 'stop_name', 'direction', 'change_type',\n", + " 'stop_dir_key', 'latitude', 'longitude', 'pt_geom', 'stop_id',\n", + " 'geometry', 'area_2', 'area_ratio', 'total_pop_adj',\n", + " 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj',\n", + " 'public_asst_pop_adj', 'inc_total_lowincome_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geometry_intersect_orange.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "39b6dab0-7446-487b-b011-4786c3043d1f", + "metadata": {}, + "outputs": [], + "source": [ + "agg_orange = geometry_intersect_orange.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_orange = gdf_orange.merge(\n", + " agg_orange,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8f54ade3-5989-43bb-9f97-4fe4d6e60bb9", + "metadata": {}, + "outputs": [], + "source": [ + "agg_blue = geometry_intersect_blue.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_blue = gdf_blue.merge(\n", + " agg_blue,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "9e7aba97-e9ca-4fce-8c12-f589a1e1fe32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_orange = gdf_orange.dropna(subset=['latitude', 'longitude'])\n", + "df_new_blue = gdf_blue.dropna(subset=['latitude', 'longitude'])\n", + "\n", + "orange_stops = set(zip(df_new_orange['stop_name'], df_new_orange['direction'], df_new_orange['change_type'], ))\n", + "blue_stops = set(zip(df_new_blue['stop_name'], df_new_blue['direction'], df_new_blue['change_type']))\n", + "\n", + "common_stops = orange_stops & blue_stops\n", + "list(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "7914ce29-5ef6-47e8-a31e-b472ee022d7b", + "metadata": {}, + "outputs": [], + "source": [ + "df_new_orange['source'] = 'orange'\n", + "df_new_blue['source'] = 'blue'" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "9e9879c6-8c1c-4eb9-b25b-d59522f73a40", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined = pd.concat([df_new_orange, df_new_blue], ignore_index=True)\n", + "\n", + "df_combined = df_combined[ df_combined['change_type'].isin(['new_stop', 'reactivate']) ].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "76ef01e0-a551-4890-9f34-c1e425264444", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['key'] = list(zip(\n", + " df_combined['stop_name'],\n", + " df_combined['direction'],\n", + " df_combined['change_type']\n", + "))\n", + "\n", + "df_combined['is_common'] = df_combined['key'].isin(common_stops)\n", + "# REMOVE duplicate rows for common stops\n", + "df_combined = (\n", + " df_combined\n", + " .sort_values('source') # keeps orange if duplicate exists\n", + " .drop_duplicates(subset=['key'], keep='first')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "5aa6bf86-c817-4f64-9d4f-ccfd79247bbe", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['stop_group'] = df_combined['stop_name']\n", + "\n", + "df_grouped = df_combined.groupby('stop_group').agg({\n", + " 'total_pop_adj': 'mean',\n", + " 'workers_with_no_car_adj': 'mean',\n", + " 'total_youth_adj': 'mean',\n", + " 'total_seniors_adj': 'mean',\n", + " 'inc_total_lowincome_adj': 'mean',\n", + " 'change_type': lambda x: ', '.join(sorted(x.unique()))\n", + "}).reset_index()\n", + "\n", + "\n", + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\",\n", + " \"New BUR terminal\",\n", + " \n", + "]\n", + "\n", + "df_grouped[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_grouped.loc[\n", + " df_grouped[\"stop_group\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9ffb473b-180c-43df-bf62-9a7258f2c99a", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_grouped[[\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", + "]].copy()\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[model_ols.model.exog_names]\n", + "# df_grouped['pred_scenario'] = model_fe.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "2f058aba-b761-40d2-abcf-7012c60b54dd", + "metadata": {}, + "outputs": [], + "source": [ + "log_pred = model_ols.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "41a6b604-e2e4-47cd-b206-86d72364a7d7", + "metadata": {}, + "outputs": [], + "source": [ + "df_grouped[\"predicted_boardings\"] = np.expm1(log_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "8f482e52-ae0d-4041-b9fb-a1f78cd61a59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "263.6729203375127\n" + ] + } + ], + "source": [ + "ridership_new = df_grouped[\"predicted_boardings\"].sum()\n", + "print(ridership_new)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "716f0eb4-cfe0-48d7-8234-37ae3803a631", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "225.40909090909093\n" + ] + } + ], + "source": [ + "ridership_base = df_burbank[\"average_daily_boardings\"].sum()\n", + "print(ridership_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "b93e716e-d188-4aca-9ac9-2971cd92ec54", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "38.263829428421786" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_new-ridership_base" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c061725b-8365-4262-b826-4fb9c7f0ff3e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 57185c4787922fb1bca7279896280f33816c5e5a Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Mon, 11 May 2026 22:38:06 +0000 Subject: [PATCH 20/21] ... --- .../02_Stop_Route_Data_Cleaning.ipynb | 54 +- .../03_Stops_Ridership_Data_weekday.ipynb | 540 +-- .../06_data_processing.ipynb | 504 ++- .../07_Model_exploration.ipynb | 572 ++- .../Saturday.ipynb | 3800 +++++++++++++++++ .../Sunday.ipynb | 3637 ++++++++++++++++ ...xploration_Burbank.ipynb => Weekday.ipynb} | 638 ++- .../burbank_lu.ipynb | 127 +- .../UCSB_Ridership_Exploration/Saturday.ipynb | 1225 ++++++ .../UCSB_Ridership_Exploration/Sunday.ipynb | 1174 +++++ .../UCSB_Ridership_Exploration/Weekday.ipynb | 1804 ++++++++ 11 files changed, 13278 insertions(+), 797 deletions(-) create mode 100644 ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb create mode 100644 ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb rename ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/{Model_Exploration_Burbank.ipynb => Weekday.ipynb} (78%) create mode 100644 ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb create mode 100644 ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb create mode 100644 ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb diff --git a/ahsc_grant/ahsc_grant_cycle2/02_Stop_Route_Data_Cleaning.ipynb b/ahsc_grant/ahsc_grant_cycle2/02_Stop_Route_Data_Cleaning.ipynb index 2eb6c2e63..7975e328a 100644 --- a/ahsc_grant/ahsc_grant_cycle2/02_Stop_Route_Data_Cleaning.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/02_Stop_Route_Data_Cleaning.ipynb @@ -35,8 +35,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", - "Note: you may need to restart the kernel to use updated packages.\n" + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -60,7 +61,7 @@ "import gcsfs\n", "import datetime as dt\n", "from calitp_data_analysis.sql import get_engine\n", - "from shared_utils import gtfs_utils_v2\n", + "# from shared_utils import gtfs_utils_v2\n", "from calitp_data_analysis import utils\n", "db_engine = get_engine()\n", "credentials, project = google.auth.default()\n", @@ -375,6 +376,7 @@ " # n_trips=('n_trips', 'sum'),\n", " n_arrivals = ('arrivals_all_day', 'first'),\n", " n_routes=('route_id', 'nunique'), # number of unique route_ids per group\n", + " route_id_list=('route_id', lambda x: sorted(set(x))),\n", " stop_code=('stop_code', 'first'),\n", " pt_geom=('pt_geom', lambda x: next((v for v in x if pd.notna(v)), pd.NA))).reset_index()\n", "\n", @@ -406,18 +408,19 @@ "text": [ "\n", "RangeIndex: 27355 entries, 0 to 27354\n", - "Data columns (total 7 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 feed_key 27355 non-null object\n", - " 1 stop_id 27355 non-null object\n", - " 2 stop_name 27355 non-null object\n", - " 3 n_arrivals 27355 non-null int64 \n", - " 4 n_routes 27355 non-null int64 \n", - " 5 stop_code 24376 non-null object\n", - " 6 pt_geom 27355 non-null object\n", - "dtypes: int64(2), object(5)\n", - "memory usage: 1.5+ MB\n" + "Data columns (total 8 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 feed_key 27355 non-null object\n", + " 1 stop_id 27355 non-null object\n", + " 2 stop_name 27355 non-null object\n", + " 3 n_arrivals 27355 non-null int64 \n", + " 4 n_routes 27355 non-null int64 \n", + " 5 route_id_list 27355 non-null object\n", + " 6 stop_code 24376 non-null object\n", + " 7 pt_geom 27355 non-null object\n", + "dtypes: int64(2), object(6)\n", + "memory usage: 1.7+ MB\n" ] } ], @@ -496,8 +499,7 @@ " 'ea33d4691b573336fc9c43c23fa90f65': 'Golden Gate Park Shuttle Schedule',\n", " '5a075de618b4d2d2383550863fc8e44e': 'Santa Cruz Schedule',\n", " '6b5c8acdaa4dcb280591578fcbf6c18e': 'SBMTD Schedule'\n", - "}\n", - "\n" + "}" ] }, { @@ -546,6 +548,7 @@ " stop_name\n", " n_arrivals\n", " n_routes\n", + " route_id_list\n", " stop_code\n", " pt_geom\n", " name\n", @@ -559,6 +562,7 @@ " .\n", " 14\n", " 1\n", + " [16]\n", " None\n", " POINT(-119.294028 34.343645)\n", " Gold Coast Schedule\n", @@ -570,6 +574,7 @@ " 10 Freeway and Azusa Ave E\n", " 110\n", " 2\n", + " [480, 707]\n", " 493\n", " POINT(-117.908253 34.071995)\n", " Foothill Schedule\n", @@ -581,6 +586,7 @@ " 10 Freeway and Azusa Ave W\n", " 113\n", " 2\n", + " [480, 707]\n", " 494\n", " POINT(-117.906536 34.072337)\n", " Foothill Schedule\n", @@ -592,6 +598,7 @@ " 10 Freeway and Puente Ave E\n", " 66\n", " 1\n", + " [707]\n", " 496\n", " POINT(-117.960458 34.070065)\n", " Foothill Schedule\n", @@ -603,6 +610,7 @@ " 10 Freeway and Puente Ave W\n", " 70\n", " 1\n", + " [707]\n", " 497\n", " POINT(-117.959866 34.070698)\n", " Foothill Schedule\n", @@ -619,12 +627,12 @@ "3 661ef844bdaa253e8b950740f76061b1 496 10 Freeway and Puente Ave E \n", "4 661ef844bdaa253e8b950740f76061b1 497 10 Freeway and Puente Ave W \n", "\n", - " n_arrivals n_routes stop_code pt_geom \\\n", - "0 14 1 None POINT(-119.294028 34.343645) \n", - "1 110 2 493 POINT(-117.908253 34.071995) \n", - "2 113 2 494 POINT(-117.906536 34.072337) \n", - "3 66 1 496 POINT(-117.960458 34.070065) \n", - "4 70 1 497 POINT(-117.959866 34.070698) \n", + " n_arrivals n_routes route_id_list stop_code pt_geom \\\n", + "0 14 1 [16] None POINT(-119.294028 34.343645) \n", + "1 110 2 [480, 707] 493 POINT(-117.908253 34.071995) \n", + "2 113 2 [480, 707] 494 POINT(-117.906536 34.072337) \n", + "3 66 1 [707] 496 POINT(-117.960458 34.070065) \n", + "4 70 1 [707] 497 POINT(-117.959866 34.070698) \n", "\n", " name \n", "0 Gold Coast Schedule \n", diff --git a/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb index d24843d08..a6b5b964d 100644 --- a/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb @@ -33,8 +33,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", - "Note: you may need to restart the kernel to use updated packages.\n" + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -300,7 +301,7 @@ "text": [ "\n", "RangeIndex: 27355 entries, 0 to 27354\n", - "Data columns (total 9 columns):\n", + "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 feed_key 27355 non-null object\n", @@ -308,12 +309,13 @@ " 2 stop_name 27355 non-null object\n", " 3 n_arrivals 27355 non-null int64 \n", " 4 n_routes 27355 non-null int64 \n", - " 5 stop_code 24376 non-null object\n", - " 6 pt_geom 27355 non-null object\n", - " 7 name 27355 non-null object\n", - " 8 organization_name 27000 non-null object\n", - "dtypes: int64(2), object(7)\n", - "memory usage: 1.9+ MB\n" + " 5 route_id_list 27355 non-null object\n", + " 6 stop_code 24376 non-null object\n", + " 7 pt_geom 27355 non-null object\n", + " 8 name 27355 non-null object\n", + " 9 organization_name 27000 non-null object\n", + "dtypes: int64(2), object(8)\n", + "memory usage: 2.1+ MB\n" ] } ], @@ -455,6 +457,7 @@ " \"n_routes\",\n", " \"pt_geom\",\n", " \"day_type\",\n", + " \"route_id_list\",\n", " \"average_daily_boardings\",\n", " \"average_daily_alightings\",\n", " \"start_date\",\n", @@ -659,6 +662,7 @@ " n_routes\n", " pt_geom\n", " day_type\n", + " route_id_list\n", " average_daily_boardings\n", " average_daily_alightings\n", " start_date\n", @@ -667,84 +671,89 @@ " \n", " \n", " \n", - " 10027\n", - " Samtrans\n", - " db97cc02836aa5f0cf647d80160b23ec\n", - " 346106\n", - " Middlefield Rd & Linfield Dr\n", - " 346106\n", - " 69.0\n", - " 5.0\n", - " POINT(-122.167182 37.456065)\n", + " 3707\n", + " SDMTS\n", + " 1fff52f9349da228c56eef492df5001b\n", + " 13001\n", + " Camino De La Reina & Mission Valley West\n", + " 13001\n", + " 47.0\n", + " 1.0\n", + " POINT(-117.15664603 32.76751308)\n", " Weekday\n", - " 0.411765\n", - " 1.411765\n", - " 2025-08-01\n", - " 2025-08-31\n", + " ['6']\n", + " 8.458650\n", + " 15.227797\n", + " 2024-09-01\n", + " 2025-01-25\n", " \n", " \n", - " 6925\n", + " 6311\n", " Orange County Transportation Authority\n", " cd299184726656597ae2cdb4f4e81e4a\n", - " 2381\n", - " HARBOR-GARDEN GROVE\n", - " 2381\n", - " 99.0\n", - " 2.0\n", - " POINT(-117.920643 33.773397)\n", + " 4502\n", + " GOLDEN LANTERN-DUNES\n", + " 4502\n", + " 23.0\n", + " 1.0\n", + " POINT(-117.681331 33.512979)\n", " Weekday\n", - " 34.000000\n", - " 24.000000\n", + " ['90']\n", + " 0.000000\n", + " 0.000000\n", " 2025-02-04\n", " 2025-02-04\n", " \n", " \n", - " 7629\n", - " SDMTS\n", - " 1fff52f9349da228c56eef492df5001b\n", - " 12646\n", - " Ingraham St & Crown Point Dr\n", - " 12646\n", - " 40.0\n", + " 13041\n", + " Long Beach Transit\n", + " cddd375786d835389a7beb9632369907\n", + " 2846\n", + " Rosecrans & Downey SE\n", + " 2846\n", + " 27.0\n", " 1.0\n", - " POINT(-117.23614227 32.78020633)\n", + " POINT(-118.151152 33.903632)\n", " Weekday\n", - " 0.106701\n", - " 1.408412\n", - " 2024-09-01\n", - " 2025-01-25\n", + " ['71']\n", + " 3.772599\n", + " 120.655985\n", + " 2024-07-01\n", + " 2025-06-30\n", " \n", " \n", - " 10190\n", - " SDMTS\n", - " 1fff52f9349da228c56eef492df5001b\n", - " 11837\n", - " Mission Bl & Thomas Av\n", - " 11837\n", - " 64.0\n", + " 1898\n", + " Orange County Transportation Authority\n", + " cd299184726656597ae2cdb4f4e81e4a\n", + " 4897\n", + " BAYSIDE-EAST PROMONTORY POINT\n", + " 4897\n", + " 41.0\n", " 1.0\n", - " POINT(-117.25459144 32.79342094)\n", + " POINT(-117.895938 33.61183)\n", " Weekday\n", - " 72.678940\n", - " 26.515695\n", - " 2024-09-01\n", - " 2025-01-25\n", + " ['55']\n", + " 6.000000\n", + " 6.000000\n", + " 2025-02-04\n", + " 2025-02-04\n", " \n", " \n", - " 17805\n", - " Foothill Transit\n", - " 661ef844bdaa253e8b950740f76061b1\n", - " 2676\n", - " McKinley Ave and White Ave W\n", - " 2676\n", - " 21.0\n", + " 13368\n", + " Fresno County\n", + " 23d1893801eefadf7544a670a3bcd312\n", + " 890\n", + " SE VENTURA - HAZELWOOD\n", + " 890\n", + " 58.0\n", " 1.0\n", - " POINT(-117.760072 34.077919)\n", + " POINT(-119.774731 36.735775)\n", " Weekday\n", - " 6.359684\n", - " 2.691700\n", - " 2024-07-01\n", - " 2025-06-30\n", + " ['3990']\n", + " 1.162876\n", + " 2.022160\n", + " 2024-09-01\n", + " 2025-08-31\n", " \n", " \n", "\n", @@ -752,39 +761,46 @@ ], "text/plain": [ " organization_name \\\n", - "10027 Samtrans \n", - "6925 Orange County Transportation Authority \n", - "7629 SDMTS \n", - "10190 SDMTS \n", - "17805 Foothill Transit \n", + "3707 SDMTS \n", + "6311 Orange County Transportation Authority \n", + "13041 Long Beach Transit \n", + "1898 Orange County Transportation Authority \n", + "13368 Fresno County \n", "\n", - " feed_key stop_id stop_name \\\n", - "10027 db97cc02836aa5f0cf647d80160b23ec 346106 Middlefield Rd & Linfield Dr \n", - "6925 cd299184726656597ae2cdb4f4e81e4a 2381 HARBOR-GARDEN GROVE \n", - "7629 1fff52f9349da228c56eef492df5001b 12646 Ingraham St & Crown Point Dr \n", - "10190 1fff52f9349da228c56eef492df5001b 11837 Mission Bl & Thomas Av \n", - "17805 661ef844bdaa253e8b950740f76061b1 2676 McKinley Ave and White Ave W \n", + " feed_key stop_id \\\n", + "3707 1fff52f9349da228c56eef492df5001b 13001 \n", + "6311 cd299184726656597ae2cdb4f4e81e4a 4502 \n", + "13041 cddd375786d835389a7beb9632369907 2846 \n", + "1898 cd299184726656597ae2cdb4f4e81e4a 4897 \n", + "13368 23d1893801eefadf7544a670a3bcd312 890 \n", "\n", - " stop_code n_arrivals n_routes pt_geom \\\n", - "10027 346106 69.0 5.0 POINT(-122.167182 37.456065) \n", - "6925 2381 99.0 2.0 POINT(-117.920643 33.773397) \n", - "7629 12646 40.0 1.0 POINT(-117.23614227 32.78020633) \n", - "10190 11837 64.0 1.0 POINT(-117.25459144 32.79342094) \n", - "17805 2676 21.0 1.0 POINT(-117.760072 34.077919) \n", + " stop_name stop_code n_arrivals \\\n", + "3707 Camino De La Reina & Mission Valley West 13001 47.0 \n", + "6311 GOLDEN LANTERN-DUNES 4502 23.0 \n", + "13041 Rosecrans & Downey SE 2846 27.0 \n", + "1898 BAYSIDE-EAST PROMONTORY POINT 4897 41.0 \n", + "13368 SE VENTURA - HAZELWOOD 890 58.0 \n", "\n", - " day_type average_daily_boardings average_daily_alightings start_date \\\n", - "10027 Weekday 0.411765 1.411765 2025-08-01 \n", - "6925 Weekday 34.000000 24.000000 2025-02-04 \n", - "7629 Weekday 0.106701 1.408412 2024-09-01 \n", - "10190 Weekday 72.678940 26.515695 2024-09-01 \n", - "17805 Weekday 6.359684 2.691700 2024-07-01 \n", + " n_routes pt_geom day_type route_id_list \\\n", + "3707 1.0 POINT(-117.15664603 32.76751308) Weekday ['6'] \n", + "6311 1.0 POINT(-117.681331 33.512979) Weekday ['90'] \n", + "13041 1.0 POINT(-118.151152 33.903632) Weekday ['71'] \n", + "1898 1.0 POINT(-117.895938 33.61183) Weekday ['55'] \n", + "13368 1.0 POINT(-119.774731 36.735775) Weekday ['3990'] \n", + "\n", + " average_daily_boardings average_daily_alightings start_date \\\n", + "3707 8.458650 15.227797 2024-09-01 \n", + "6311 0.000000 0.000000 2025-02-04 \n", + "13041 3.772599 120.655985 2024-07-01 \n", + "1898 6.000000 6.000000 2025-02-04 \n", + "13368 1.162876 2.022160 2024-09-01 \n", "\n", " end_date \n", - "10027 2025-08-31 \n", - "6925 2025-02-04 \n", - "7629 2025-01-25 \n", - "10190 2025-01-25 \n", - "17805 2025-06-30 " + "3707 2025-01-25 \n", + "6311 2025-02-04 \n", + "13041 2025-06-30 \n", + "1898 2025-02-04 \n", + "13368 2025-08-31 " ] }, "execution_count": 14, @@ -876,6 +892,7 @@ " n_routes\n", " pt_geom\n", " day_type\n", + " route_id_list\n", " average_daily_boardings\n", " average_daily_alightings\n", " start_date\n", @@ -884,84 +901,89 @@ " \n", " \n", " \n", - " 1989\n", + " 1486\n", " Riverside Transit\n", " 6eb2b575bee157dace7a2c7155d3cb25\n", - " 538\n", - " Brockton + Nixon (Riverside Medical)\n", - " 1739\n", - " 15.0\n", - " 1.0\n", - " POINT(-117.395147 33.943975)\n", + " 293\n", + " Magnolia + Harrison\n", + " 1165\n", + " 98.0\n", + " 4.0\n", + " POINT(-117.453449 33.916621)\n", " Weekday\n", - " 4.431694\n", + " ['1', '10', '12', '21']\n", + " 83.930108\n", " NaN\n", " 2025-01-01\n", " 2025-10-31\n", " \n", " \n", - " 3424\n", + " 2397\n", " Riverside Transit\n", " 6eb2b575bee157dace7a2c7155d3cb25\n", - " 3021\n", - " Alessandro + Meridian\n", - " 4682\n", - " 18.0\n", - " 1.0\n", - " POINT(-117.291253 33.916546)\n", + " 1030\n", + " Alessandro + Century\n", + " 2207\n", + " 36.0\n", + " 2.0\n", + " POINT(-117.351034 33.936869)\n", " Weekday\n", - " 3.546012\n", + " ['20', '22']\n", + " 3.961326\n", " NaN\n", " 2025-01-01\n", " 2025-10-31\n", " \n", " \n", - " 1303\n", - " Culver City Bus\n", - " f6774d861953d4f4cdcffec95e2652c7\n", - " 33\n", - " Washington Blvd/Motor Ave\n", - " 128\n", - " 59.0\n", + " 1246\n", + " Big Blue Bus\n", + " 7a3f513c343b16a30c135ed7d332b6d6\n", + " 547\n", + " WILSHIRE BLVD & 20TH ST\n", + " 1402\n", + " 41.0\n", " 1.0\n", - " POINT(-118.401928 34.018881)\n", + " POINT(-118.483135 34.031603)\n", " Weekday\n", - " 3.500000\n", - " 11.1\n", - " 2025-07-14\n", - " 2025-08-25\n", + " ['2']\n", + " 19.670595\n", + " 20.552945\n", + " 2024-08-01\n", + " 2025-11-30\n", " \n", " \n", - " 2332\n", + " 1509\n", " Riverside Transit\n", " 6eb2b575bee157dace7a2c7155d3cb25\n", - " 957\n", - " Brockton + Beatty\n", - " 2139\n", - " 18.0\n", + " 1768\n", + " Main + Metro\n", + " 1193\n", + " 14.0\n", " 1.0\n", - " POINT(-117.396707 33.955952)\n", + " POINT(-117.564689 33.885645)\n", " Weekday\n", - " 1.333333\n", + " ['3']\n", + " 5.050562\n", " NaN\n", " 2025-01-01\n", " 2025-10-31\n", " \n", " \n", - " 3398\n", - " Riverside Transit\n", - " 6eb2b575bee157dace7a2c7155d3cb25\n", - " 2948\n", - " Center + Mt Vernon\n", - " 4620\n", - " 15.0\n", + " 897\n", + " Big Blue Bus\n", + " 7a3f513c343b16a30c135ed7d332b6d6\n", + " 796\n", + " PICO BLVD & ROXBURY DR\n", + " 2371\n", + " 77.0\n", " 1.0\n", - " POINT(-117.314919 34.01555)\n", + " POINT(-118.401974 34.054157)\n", " Weekday\n", - " 1.923664\n", - " NaN\n", - " 2025-01-01\n", - " 2025-10-31\n", + " ['7']\n", + " 27.138735\n", + " 26.018952\n", + " 2024-08-01\n", + " 2025-11-30\n", " \n", " \n", "\n", @@ -969,32 +991,39 @@ ], "text/plain": [ " organization_name feed_key stop_id \\\n", - "1989 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 538 \n", - "3424 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 3021 \n", - "1303 Culver City Bus f6774d861953d4f4cdcffec95e2652c7 33 \n", - "2332 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 957 \n", - "3398 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 2948 \n", + "1486 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 293 \n", + "2397 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1030 \n", + "1246 Big Blue Bus 7a3f513c343b16a30c135ed7d332b6d6 547 \n", + "1509 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1768 \n", + "897 Big Blue Bus 7a3f513c343b16a30c135ed7d332b6d6 796 \n", "\n", - " stop_name stop_code n_arrivals n_routes \\\n", - "1989 Brockton + Nixon (Riverside Medical) 1739 15.0 1.0 \n", - "3424 Alessandro + Meridian 4682 18.0 1.0 \n", - "1303 Washington Blvd/Motor Ave 128 59.0 1.0 \n", - "2332 Brockton + Beatty 2139 18.0 1.0 \n", - "3398 Center + Mt Vernon 4620 15.0 1.0 \n", + " stop_name stop_code n_arrivals n_routes \\\n", + "1486 Magnolia + Harrison 1165 98.0 4.0 \n", + "2397 Alessandro + Century 2207 36.0 2.0 \n", + "1246 WILSHIRE BLVD & 20TH ST 1402 41.0 1.0 \n", + "1509 Main + Metro 1193 14.0 1.0 \n", + "897 PICO BLVD & ROXBURY DR 2371 77.0 1.0 \n", "\n", - " pt_geom day_type average_daily_boardings \\\n", - "1989 POINT(-117.395147 33.943975) Weekday 4.431694 \n", - "3424 POINT(-117.291253 33.916546) Weekday 3.546012 \n", - "1303 POINT(-118.401928 34.018881) Weekday 3.500000 \n", - "2332 POINT(-117.396707 33.955952) Weekday 1.333333 \n", - "3398 POINT(-117.314919 34.01555) Weekday 1.923664 \n", + " pt_geom day_type route_id_list \\\n", + "1486 POINT(-117.453449 33.916621) Weekday ['1', '10', '12', '21'] \n", + "2397 POINT(-117.351034 33.936869) Weekday ['20', '22'] \n", + "1246 POINT(-118.483135 34.031603) Weekday ['2'] \n", + "1509 POINT(-117.564689 33.885645) Weekday ['3'] \n", + "897 POINT(-118.401974 34.054157) Weekday ['7'] \n", "\n", - " average_daily_alightings start_date end_date \n", - "1989 NaN 2025-01-01 2025-10-31 \n", - "3424 NaN 2025-01-01 2025-10-31 \n", - "1303 11.1 2025-07-14 2025-08-25 \n", - "2332 NaN 2025-01-01 2025-10-31 \n", - "3398 NaN 2025-01-01 2025-10-31 " + " average_daily_boardings average_daily_alightings start_date \\\n", + "1486 83.930108 NaN 2025-01-01 \n", + "2397 3.961326 NaN 2025-01-01 \n", + "1246 19.670595 20.552945 2024-08-01 \n", + "1509 5.050562 NaN 2025-01-01 \n", + "897 27.138735 26.018952 2024-08-01 \n", + "\n", + " end_date \n", + "1486 2025-10-31 \n", + "2397 2025-10-31 \n", + "1246 2025-11-30 \n", + "1509 2025-10-31 \n", + "897 2025-11-30 " ] }, "execution_count": 16, @@ -1016,7 +1045,7 @@ "source": [ "cols_to_keep = [\n", " 'feed_key', 'stop_id',\n", - " 'n_arrivals', 'n_routes', 'pt_geom'\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'route_id_list'\n", "]\n", "\n", "def fuzzy_match_subset(left_df, right_df, threshold=80):\n", @@ -1106,7 +1135,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "id": "6fed4e64-9960-4092-95a0-d60e2117a59e", "metadata": {}, "outputs": [ @@ -1140,6 +1169,7 @@ " n_routes\n", " pt_geom\n", " day_type\n", + " route_id_list\n", " average_daily_boardings\n", " average_daily_alightings\n", " start_date\n", @@ -1148,81 +1178,86 @@ " \n", " \n", " \n", - " 52\n", + " 28\n", + " Caltrain\n", + " f189d5677d4a106b98585f3c5d4fd42c\n", + " 70221\n", + " Sunnyvale\n", + " None\n", + " 52.0\n", + " 3.0\n", + " POINT(-122.031372 37.378916)\n", + " Weekday\n", + " ['77119', '77121', '77122']\n", + " 1408.195136\n", + " NaN\n", + " 2023-11-01\n", + " 2025-07-31\n", + " \n", + " \n", + " 45\n", " City of Burbank\n", " cc6a68a39d22c29b49116584971e69a8\n", - " 3068914\n", - " Hollywood & Pacific\n", + " 3068904\n", + " Burbank & Whitehall\n", " None\n", " 51.0\n", " 1.0\n", - " POINT(-118.349187 34.188549)\n", + " POINT(-118.356776 34.172425)\n", " Weekday\n", - " 0.727273\n", - " 0.136364\n", + " ['3163']\n", + " 0.681818\n", + " 1.045455\n", " 2024-05-01\n", " 2024-05-31\n", " \n", " \n", - " 46\n", + " 48\n", " City of Burbank\n", " cc6a68a39d22c29b49116584971e69a8\n", - " 3068911\n", - " Empire & Buena Vista\n", + " 3067456\n", + " Empire and Niagara\n", " None\n", " 51.0\n", " 1.0\n", - " POINT(-118.33848 34.191969)\n", + " POINT(-118.342181 34.192016)\n", " Weekday\n", - " 2.772727\n", - " 5.000000\n", + " ['3163']\n", + " 0.454545\n", + " 1.227273\n", " 2024-05-01\n", " 2024-05-31\n", " \n", " \n", - " 9\n", + " 5\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " 70321\n", - " Gilroy\n", + " 70081\n", + " Burlingame\n", " None\n", - " 4.0\n", + " 37.0\n", " 1.0\n", - " POINT(-121.566088 37.003538)\n", + " POINT(-122.3449 37.580197)\n", " Weekday\n", - " 94.688588\n", + " ['77119']\n", + " 542.005575\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", " \n", " \n", - " 63\n", - " City of Burbank\n", - " cc6a68a39d22c29b49116584971e69a8\n", - " 3068085\n", - " Olive & Keystone SB\n", - " None\n", - " 48.0\n", - " 1.0\n", - " POINT(-118.326189 34.164484)\n", - " Weekday\n", - " 5.636364\n", - " 1.045455\n", - " 2024-05-01\n", - " 2024-05-31\n", - " \n", - " \n", - " 15\n", + " 23\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", - " 70301\n", - " Morgan Hill\n", + " 70261\n", + " San Jose Diridon\n", " None\n", + " 56.0\n", " 4.0\n", - " 1.0\n", - " POINT(-121.650244 37.129363)\n", + " POINT(-121.903011 37.329239)\n", " Weekday\n", - " 103.849297\n", + " ['77119', '77121', '77122', '77123']\n", + " 1789.561827\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", @@ -1233,35 +1268,42 @@ ], "text/plain": [ " organization_name feed_key stop_id \\\n", - "52 City of Burbank cc6a68a39d22c29b49116584971e69a8 3068914 \n", - "46 City of Burbank cc6a68a39d22c29b49116584971e69a8 3068911 \n", - "9 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70321 \n", - "63 City of Burbank cc6a68a39d22c29b49116584971e69a8 3068085 \n", - "15 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70301 \n", + "28 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", + "45 City of Burbank cc6a68a39d22c29b49116584971e69a8 3068904 \n", + "48 City of Burbank cc6a68a39d22c29b49116584971e69a8 3067456 \n", + "5 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70081 \n", + "23 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70261 \n", "\n", - " stop_name stop_code n_arrivals n_routes \\\n", - "52 Hollywood & Pacific None 51.0 1.0 \n", - "46 Empire & Buena Vista None 51.0 1.0 \n", - "9 Gilroy None 4.0 1.0 \n", - "63 Olive & Keystone SB None 48.0 1.0 \n", - "15 Morgan Hill None 4.0 1.0 \n", + " stop_name stop_code n_arrivals n_routes \\\n", + "28 Sunnyvale None 52.0 3.0 \n", + "45 Burbank & Whitehall None 51.0 1.0 \n", + "48 Empire and Niagara None 51.0 1.0 \n", + "5 Burlingame None 37.0 1.0 \n", + "23 San Jose Diridon None 56.0 4.0 \n", "\n", - " pt_geom day_type average_daily_boardings \\\n", - "52 POINT(-118.349187 34.188549) Weekday 0.727273 \n", - "46 POINT(-118.33848 34.191969) Weekday 2.772727 \n", - "9 POINT(-121.566088 37.003538) Weekday 94.688588 \n", - "63 POINT(-118.326189 34.164484) Weekday 5.636364 \n", - "15 POINT(-121.650244 37.129363) Weekday 103.849297 \n", + " pt_geom day_type \\\n", + "28 POINT(-122.031372 37.378916) Weekday \n", + "45 POINT(-118.356776 34.172425) Weekday \n", + "48 POINT(-118.342181 34.192016) Weekday \n", + "5 POINT(-122.3449 37.580197) Weekday \n", + "23 POINT(-121.903011 37.329239) Weekday \n", + "\n", + " route_id_list average_daily_boardings \\\n", + "28 ['77119', '77121', '77122'] 1408.195136 \n", + "45 ['3163'] 0.681818 \n", + "48 ['3163'] 0.454545 \n", + "5 ['77119'] 542.005575 \n", + "23 ['77119', '77121', '77122', '77123'] 1789.561827 \n", "\n", " average_daily_alightings start_date end_date \n", - "52 0.136364 2024-05-01 2024-05-31 \n", - "46 5.000000 2024-05-01 2024-05-31 \n", - "9 NaN 2023-11-01 2025-07-31 \n", - "63 1.045455 2024-05-01 2024-05-31 \n", - "15 NaN 2023-11-01 2025-07-31 " + "28 NaN 2023-11-01 2025-07-31 \n", + "45 1.045455 2024-05-01 2024-05-31 \n", + "48 1.227273 2024-05-01 2024-05-31 \n", + "5 NaN 2023-11-01 2025-07-31 \n", + "23 NaN 2023-11-01 2025-07-31 " ] }, - "execution_count": 22, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1273,7 +1315,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "id": "c99c197b-8e49-42bd-825b-6bf0b08e9b3c", "metadata": {}, "outputs": [], @@ -1287,7 +1329,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "id": "3c77f35d-a4fa-4e4c-bc45-34c77ce93efa", "metadata": {}, "outputs": [ @@ -1321,6 +1363,7 @@ " n_routes\n", " pt_geom\n", " day_type\n", + " route_id_list\n", " average_daily_boardings\n", " average_daily_alightings\n", " start_date\n", @@ -1339,6 +1382,7 @@ " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", + " ['16']\n", " 0.000000\n", " 3.000000\n", " 2025-05-01\n", @@ -1355,6 +1399,7 @@ " 1.0\n", " POINT(-122.191284 37.457543)\n", " Weekday\n", + " ['ECR-216']\n", " 9.523810\n", " 24.571429\n", " 2025-08-01\n", @@ -1371,6 +1416,7 @@ " 1.0\n", " POINT(-122.284103 37.484282)\n", " Weekday\n", + " ['61-216']\n", " 1.444444\n", " 1.888889\n", " 2025-08-01\n", @@ -1387,6 +1433,7 @@ " 1.0\n", " POINT(-122.359627 37.586685)\n", " Weekday\n", + " ['46-216']\n", " 10.333333\n", " 5.500000\n", " 2025-08-01\n", @@ -1403,6 +1450,7 @@ " 3.0\n", " POINT(-117.15569071 32.71857729)\n", " Weekday\n", + " ['110', '280', '290']\n", " 3.485637\n", " 42.889568\n", " 2024-09-01\n", @@ -1427,22 +1475,22 @@ "3 1060 Carolan Ave 340606 7.0 1.0 \n", "4 10th Av & A St 12049 18.0 3.0 \n", "\n", - " pt_geom day_type average_daily_boardings \\\n", - "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", - "1 POINT(-122.191284 37.457543) Weekday 9.523810 \n", - "2 POINT(-122.284103 37.484282) Weekday 1.444444 \n", - "3 POINT(-122.359627 37.586685) Weekday 10.333333 \n", - "4 POINT(-117.15569071 32.71857729) Weekday 3.485637 \n", + " pt_geom day_type route_id_list \\\n", + "0 POINT(-119.294028 34.343645) Weekday ['16'] \n", + "1 POINT(-122.191284 37.457543) Weekday ['ECR-216'] \n", + "2 POINT(-122.284103 37.484282) Weekday ['61-216'] \n", + "3 POINT(-122.359627 37.586685) Weekday ['46-216'] \n", + "4 POINT(-117.15569071 32.71857729) Weekday ['110', '280', '290'] \n", "\n", - " average_daily_alightings start_date end_date \n", - "0 3.000000 2025-05-01 2025-05-31 \n", - "1 24.571429 2025-08-01 2025-08-31 \n", - "2 1.888889 2025-08-01 2025-08-31 \n", - "3 5.500000 2025-08-01 2025-08-31 \n", - "4 42.889568 2024-09-01 2025-01-25 " + " average_daily_boardings average_daily_alightings start_date end_date \n", + "0 0.000000 3.000000 2025-05-01 2025-05-31 \n", + "1 9.523810 24.571429 2025-08-01 2025-08-31 \n", + "2 1.444444 1.888889 2025-08-01 2025-08-31 \n", + "3 10.333333 5.500000 2025-08-01 2025-08-31 \n", + "4 3.485637 42.889568 2024-09-01 2025-01-25 " ] }, - "execution_count": 24, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -1453,7 +1501,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "id": "9f2cc744-daac-4504-b0ab-30ae38febc81", "metadata": {}, "outputs": [], diff --git a/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb b/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb index c2dac6366..6ea3b99a9 100644 --- a/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/06_data_processing.ipynb @@ -80,7 +80,13 @@ "source": [ "# Load the stored organization, ridership, stop, data from the specified GCS file path.\n", "with fs.open(f\"{GCS_FILE_PATH}/ridership_trips_routes_weekday.csv\", \"rb\") as f:\n", - " ridership_trips_routes_weekday = pd.read_csv(f)" + " ridership_trips_routes_weekday = pd.read_csv(f)\n", + " \n", + "with fs.open(f\"{GCS_FILE_PATH}/ridership_trips_routes_saturday.csv\", \"rb\") as f:\n", + " ridership_trips_routes_saturday = pd.read_csv(f)\n", + " \n", + "with fs.open(f\"{GCS_FILE_PATH}/ridership_trips_routes_saturday.csv\", \"rb\") as f:\n", + " ridership_trips_routes_sunday = pd.read_csv(f)" ] }, { @@ -119,7 +125,7 @@ "text": [ "\n", "RangeIndex: 21265 entries, 0 to 21264\n", - "Data columns (total 13 columns):\n", + "Data columns (total 14 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 organization_name 21265 non-null object \n", @@ -131,12 +137,13 @@ " 6 n_routes 21264 non-null float64\n", " 7 pt_geom 21264 non-null object \n", " 8 day_type 21265 non-null object \n", - " 9 average_daily_boardings 21265 non-null float64\n", - " 10 average_daily_alightings 19087 non-null float64\n", - " 11 start_date 21265 non-null object \n", - " 12 end_date 21265 non-null object \n", - "dtypes: float64(4), object(9)\n", - "memory usage: 2.1+ MB\n" + " 9 route_id_list 21264 non-null object \n", + " 10 average_daily_boardings 21265 non-null float64\n", + " 11 average_daily_alightings 19087 non-null float64\n", + " 12 start_date 21265 non-null object \n", + " 13 end_date 21265 non-null object \n", + "dtypes: float64(4), object(10)\n", + "memory usage: 2.3+ MB\n" ] } ], @@ -155,7 +162,17 @@ "ridership_trips_routes_weekday = ridership_trips_routes_weekday[\n", " ridership_trips_routes_weekday['pt_geom'].notna() & \n", " (ridership_trips_routes_weekday['pt_geom'] != 'nan')\n", - "].copy()\n" + "].copy()\n", + "\n", + "ridership_trips_routes_saturday = ridership_trips_routes_saturday[\n", + " ridership_trips_routes_saturday['pt_geom'].notna() & \n", + " (ridership_trips_routes_saturday['pt_geom'] != 'nan')\n", + "].copy()\n", + "\n", + "ridership_trips_routes_sunday = ridership_trips_routes_sunday[\n", + " ridership_trips_routes_sunday['pt_geom'].notna() & \n", + " (ridership_trips_routes_sunday['pt_geom'] != 'nan')\n", + "].copy()" ] }, { @@ -166,7 +183,9 @@ "outputs": [], "source": [ "# Ensure pt_geom is string type\n", - "ridership_trips_routes_weekday['pt_geom'] = ridership_trips_routes_weekday['pt_geom'].astype(str)" + "ridership_trips_routes_weekday['pt_geom'] = ridership_trips_routes_weekday['pt_geom'].astype(str)\n", + "ridership_trips_routes_saturday['pt_geom'] = ridership_trips_routes_saturday['pt_geom'].astype(str)\n", + "ridership_trips_routes_sunday['pt_geom'] = ridership_trips_routes_sunday['pt_geom'].astype(str)" ] }, { @@ -178,9 +197,13 @@ "source": [ "# Convert pt_geom column from WKT to shapely geometry\n", "ridership_trips_routes_weekday['geometry'] = ridership_trips_routes_weekday['pt_geom'].apply(wkt.loads)\n", + "ridership_trips_routes_saturday['geometry'] = ridership_trips_routes_saturday['pt_geom'].apply(wkt.loads)\n", + "ridership_trips_routes_sunday['geometry'] = ridership_trips_routes_sunday['pt_geom'].apply(wkt.loads)\n", "\n", "# Create a GeoDataFrame\n", - "gdf_ridership = gpd.GeoDataFrame(ridership_trips_routes_weekday, geometry='geometry')" + "gdf_ridership = gpd.GeoDataFrame(ridership_trips_routes_weekday, geometry='geometry')\n", + "gdf_ridership_saturday = gpd.GeoDataFrame(ridership_trips_routes_saturday, geometry='geometry')\n", + "gdf_ridership_sunday = gpd.GeoDataFrame(ridership_trips_routes_sunday, geometry='geometry')" ] }, { @@ -229,88 +252,88 @@ " \n", " \n", " 0\n", - " Gold Coast Transit\n", - " 3cb676436aad669e52042c0e97a9a051\n", - " VNACLR1\n", - " .\n", - " NaN\n", - " 14.0\n", - " 1.0\n", - " POINT(-119.294028 34.343645)\n", - " Weekday\n", - " 0.000000\n", - " 3.000000\n", - " 2025-05-01\n", - " 2025-05-31\n", - " POINT (-119.29403 34.34365)\n", - " \n", - " \n", - " 1\n", " Samtrans\n", " db97cc02836aa5f0cf647d80160b23ec\n", " 345017\n", " 1000 El Camino Real-Menlo College\n", " 345017\n", - " 72.0\n", + " 64.0\n", " 1.0\n", " POINT(-122.191284 37.457543)\n", - " Weekday\n", - " 9.523810\n", - " 24.571429\n", + " Sunday\n", + " 8.800000\n", + " 15.600000\n", " 2025-08-01\n", " 2025-08-31\n", " POINT (-122.19128 37.45754)\n", " \n", " \n", + " 1\n", + " Golden Gate Transit\n", + " de77cb40e92fb47fa8d16228977cfb86\n", + " 40469\n", + " 1011 Andersen Dr\n", + " 40469\n", + " 4.0\n", + " 1.0\n", + " POINT(-122.504252 37.955391)\n", + " Sunday\n", + " 1.500000\n", + " 0.000000\n", + " 2025-09-01\n", + " 2025-09-30\n", + " POINT (-122.50425 37.95539)\n", + " \n", + " \n", " 2\n", - " Samtrans\n", - " db97cc02836aa5f0cf647d80160b23ec\n", - " 343119\n", - " 1011 Crestview Dr\n", - " 343119\n", - " 5.0\n", + " Long Beach Transit\n", + " cddd375786d835389a7beb9632369907\n", + " 355\n", + " 10th & Long Beach NW\n", + " 0355\n", + " 32.0\n", " 1.0\n", - " POINT(-122.284103 37.484282)\n", - " Weekday\n", - " 1.444444\n", - " 1.888889\n", - " 2025-08-01\n", - " 2025-08-31\n", - " POINT (-122.28410 37.48428)\n", + " POINT(-118.189862 33.779026)\n", + " Sunday\n", + " 2.300620\n", + " 26.405652\n", + " 2024-07-01\n", + " 2025-06-30\n", + " POINT (-118.18986 33.77903)\n", " \n", " \n", " 3\n", - " Samtrans\n", - " db97cc02836aa5f0cf647d80160b23ec\n", - " 340606\n", - " 1060 Carolan Ave\n", - " 340606\n", - " 7.0\n", + " Long Beach Transit\n", + " cddd375786d835389a7beb9632369907\n", + " 356\n", + " 10th & Pine NW\n", + " 0356\n", + " 64.0\n", " 1.0\n", - " POINT(-122.359627 37.586685)\n", - " Weekday\n", - " 10.333333\n", - " 5.500000\n", - " 2025-08-01\n", - " 2025-08-31\n", - " POINT (-122.35963 37.58669)\n", + " POINT(-118.192676 33.779068)\n", + " Sunday\n", + " 98.589716\n", + " 76.027869\n", + " 2024-07-01\n", + " 2025-06-30\n", + " POINT (-118.19268 33.77907)\n", " \n", " \n", " 4\n", " SDMTS\n", " 1fff52f9349da228c56eef492df5001b\n", - " 12049\n", - " 10th Av & A St\n", - " 12049\n", - " 18.0\n", - " 3.0\n", - " POINT(-117.15569071 32.71857729)\n", - " Weekday\n", - " 3.485637\n", - " 42.889568\n", + " 11656\n", + " 10th Av & Broadway\n", + " 11656\n", + " 120.0\n", + " 2.0\n", + " POINT(-117.15566399 32.7159774)\n", + " Sunday\n", + " 46.287992\n", + " 39.811145\n", " 2024-09-01\n", " 2025-01-25\n", - " POINT (-117.15569 32.71858)\n", + " POINT (-117.15566 32.71598)\n", " \n", " \n", " ...\n", @@ -330,162 +353,162 @@ " ...\n", " \n", " \n", - " 21260\n", + " 12316\n", + " Caltrain\n", + " f189d5677d4a106b98585f3c5d4fd42c\n", + " 70091\n", + " San Mateo\n", + " NaN\n", + " 33.0\n", + " 1.0\n", + " POINT(-122.323851 37.568087)\n", + " Sunday\n", + " 478.543508\n", + " NaN\n", + " 2023-11-01\n", + " 2025-07-31\n", + " POINT (-122.32385 37.56809)\n", + " \n", + " \n", + " 12317\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70241\n", " Santa Clara\n", " NaN\n", - " 45.0\n", - " 2.0\n", + " 33.0\n", + " 1.0\n", " POINT(-121.93608 37.353238)\n", - " Weekday\n", - " 718.467622\n", + " Sunday\n", + " 387.793441\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", " POINT (-121.93608 37.35324)\n", " \n", " \n", - " 21261\n", + " 12318\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70041\n", " South San Francisco\n", " NaN\n", - " 52.0\n", - " 3.0\n", + " 33.0\n", + " 1.0\n", " POINT(-122.404979051 37.655941395)\n", - " Weekday\n", - " 559.501648\n", + " Sunday\n", + " 163.026362\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", " POINT (-122.40498 37.65594)\n", " \n", " \n", - " 21262\n", + " 12319\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70221\n", " Sunnyvale\n", " NaN\n", - " 52.0\n", - " 3.0\n", + " 33.0\n", + " 1.0\n", " POINT(-122.031372 37.378916)\n", - " Weekday\n", - " 1408.195136\n", + " Sunday\n", + " 593.758215\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", " POINT (-122.03137 37.37892)\n", " \n", " \n", - " 21263\n", + " 12320\n", " Caltrain\n", " f189d5677d4a106b98585f3c5d4fd42c\n", " 70271\n", " Tamien\n", " NaN\n", - " 23.0\n", - " 2.0\n", + " 17.0\n", + " 1.0\n", " POINT(-121.883721 37.31174)\n", - " Weekday\n", - " 198.883066\n", + " Sunday\n", + " 43.960035\n", " NaN\n", " 2023-11-01\n", " 2025-07-31\n", " POINT (-121.88372 37.31174)\n", " \n", - " \n", - " 21264\n", - " City of Burbank\n", - " cc6a68a39d22c29b49116584971e69a8\n", - " 5625332\n", - " Universal Redline Station\n", - " NaN\n", - " 96.0\n", - " 1.0\n", - " POINT(-118.363289 34.138588)\n", - " Weekday\n", - " 34.045455\n", - " 32.454545\n", - " 2024-05-01\n", - " 2024-05-31\n", - " POINT (-118.36329 34.13859)\n", - " \n", " \n", "\n", - "

21264 rows × 14 columns

\n", + "

12315 rows × 14 columns

\n", "" ], "text/plain": [ - " organization_name feed_key stop_id \\\n", - "0 Gold Coast Transit 3cb676436aad669e52042c0e97a9a051 VNACLR1 \n", - "1 Samtrans db97cc02836aa5f0cf647d80160b23ec 345017 \n", - "2 Samtrans db97cc02836aa5f0cf647d80160b23ec 343119 \n", - "3 Samtrans db97cc02836aa5f0cf647d80160b23ec 340606 \n", - "4 SDMTS 1fff52f9349da228c56eef492df5001b 12049 \n", - "... ... ... ... \n", - "21260 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70241 \n", - "21261 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70041 \n", - "21262 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", - "21263 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 \n", - "21264 City of Burbank cc6a68a39d22c29b49116584971e69a8 5625332 \n", + " organization_name feed_key stop_id \\\n", + "0 Samtrans db97cc02836aa5f0cf647d80160b23ec 345017 \n", + "1 Golden Gate Transit de77cb40e92fb47fa8d16228977cfb86 40469 \n", + "2 Long Beach Transit cddd375786d835389a7beb9632369907 355 \n", + "3 Long Beach Transit cddd375786d835389a7beb9632369907 356 \n", + "4 SDMTS 1fff52f9349da228c56eef492df5001b 11656 \n", + "... ... ... ... \n", + "12316 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70091 \n", + "12317 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70241 \n", + "12318 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70041 \n", + "12319 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70221 \n", + "12320 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 \n", "\n", " stop_name stop_code n_arrivals n_routes \\\n", - "0 . NaN 14.0 1.0 \n", - "1 1000 El Camino Real-Menlo College 345017 72.0 1.0 \n", - "2 1011 Crestview Dr 343119 5.0 1.0 \n", - "3 1060 Carolan Ave 340606 7.0 1.0 \n", - "4 10th Av & A St 12049 18.0 3.0 \n", + "0 1000 El Camino Real-Menlo College 345017 64.0 1.0 \n", + "1 1011 Andersen Dr 40469 4.0 1.0 \n", + "2 10th & Long Beach NW 0355 32.0 1.0 \n", + "3 10th & Pine NW 0356 64.0 1.0 \n", + "4 10th Av & Broadway 11656 120.0 2.0 \n", "... ... ... ... ... \n", - "21260 Santa Clara NaN 45.0 2.0 \n", - "21261 South San Francisco NaN 52.0 3.0 \n", - "21262 Sunnyvale NaN 52.0 3.0 \n", - "21263 Tamien NaN 23.0 2.0 \n", - "21264 Universal Redline Station NaN 96.0 1.0 \n", + "12316 San Mateo NaN 33.0 1.0 \n", + "12317 Santa Clara NaN 33.0 1.0 \n", + "12318 South San Francisco NaN 33.0 1.0 \n", + "12319 Sunnyvale NaN 33.0 1.0 \n", + "12320 Tamien NaN 17.0 1.0 \n", "\n", " pt_geom day_type average_daily_boardings \\\n", - "0 POINT(-119.294028 34.343645) Weekday 0.000000 \n", - "1 POINT(-122.191284 37.457543) Weekday 9.523810 \n", - "2 POINT(-122.284103 37.484282) Weekday 1.444444 \n", - "3 POINT(-122.359627 37.586685) Weekday 10.333333 \n", - "4 POINT(-117.15569071 32.71857729) Weekday 3.485637 \n", + "0 POINT(-122.191284 37.457543) Sunday 8.800000 \n", + "1 POINT(-122.504252 37.955391) Sunday 1.500000 \n", + "2 POINT(-118.189862 33.779026) Sunday 2.300620 \n", + "3 POINT(-118.192676 33.779068) Sunday 98.589716 \n", + "4 POINT(-117.15566399 32.7159774) Sunday 46.287992 \n", "... ... ... ... \n", - "21260 POINT(-121.93608 37.353238) Weekday 718.467622 \n", - "21261 POINT(-122.404979051 37.655941395) Weekday 559.501648 \n", - "21262 POINT(-122.031372 37.378916) Weekday 1408.195136 \n", - "21263 POINT(-121.883721 37.31174) Weekday 198.883066 \n", - "21264 POINT(-118.363289 34.138588) Weekday 34.045455 \n", + "12316 POINT(-122.323851 37.568087) Sunday 478.543508 \n", + "12317 POINT(-121.93608 37.353238) Sunday 387.793441 \n", + "12318 POINT(-122.404979051 37.655941395) Sunday 163.026362 \n", + "12319 POINT(-122.031372 37.378916) Sunday 593.758215 \n", + "12320 POINT(-121.883721 37.31174) Sunday 43.960035 \n", "\n", " average_daily_alightings start_date end_date \\\n", - "0 3.000000 2025-05-01 2025-05-31 \n", - "1 24.571429 2025-08-01 2025-08-31 \n", - "2 1.888889 2025-08-01 2025-08-31 \n", - "3 5.500000 2025-08-01 2025-08-31 \n", - "4 42.889568 2024-09-01 2025-01-25 \n", + "0 15.600000 2025-08-01 2025-08-31 \n", + "1 0.000000 2025-09-01 2025-09-30 \n", + "2 26.405652 2024-07-01 2025-06-30 \n", + "3 76.027869 2024-07-01 2025-06-30 \n", + "4 39.811145 2024-09-01 2025-01-25 \n", "... ... ... ... \n", - "21260 NaN 2023-11-01 2025-07-31 \n", - "21261 NaN 2023-11-01 2025-07-31 \n", - "21262 NaN 2023-11-01 2025-07-31 \n", - "21263 NaN 2023-11-01 2025-07-31 \n", - "21264 32.454545 2024-05-01 2024-05-31 \n", + "12316 NaN 2023-11-01 2025-07-31 \n", + "12317 NaN 2023-11-01 2025-07-31 \n", + "12318 NaN 2023-11-01 2025-07-31 \n", + "12319 NaN 2023-11-01 2025-07-31 \n", + "12320 NaN 2023-11-01 2025-07-31 \n", "\n", " geometry \n", - "0 POINT (-119.29403 34.34365) \n", - "1 POINT (-122.19128 37.45754) \n", - "2 POINT (-122.28410 37.48428) \n", - "3 POINT (-122.35963 37.58669) \n", - "4 POINT (-117.15569 32.71858) \n", + "0 POINT (-122.19128 37.45754) \n", + "1 POINT (-122.50425 37.95539) \n", + "2 POINT (-118.18986 33.77903) \n", + "3 POINT (-118.19268 33.77907) \n", + "4 POINT (-117.15566 32.71598) \n", "... ... \n", - "21260 POINT (-121.93608 37.35324) \n", - "21261 POINT (-122.40498 37.65594) \n", - "21262 POINT (-122.03137 37.37892) \n", - "21263 POINT (-121.88372 37.31174) \n", - "21264 POINT (-118.36329 34.13859) \n", + "12316 POINT (-122.32385 37.56809) \n", + "12317 POINT (-121.93608 37.35324) \n", + "12318 POINT (-122.40498 37.65594) \n", + "12319 POINT (-122.03137 37.37892) \n", + "12320 POINT (-121.88372 37.31174) \n", "\n", - "[21264 rows x 14 columns]" + "[12315 rows x 14 columns]" ] }, "execution_count": 11, @@ -495,7 +518,9 @@ ], "source": [ "# Set CRS (assuming WGS84)\n", - "gdf_ridership.set_crs(epsg=4326, inplace=True)" + "gdf_ridership.set_crs(epsg=4326, inplace=True)\n", + "gdf_ridership_saturday.set_crs(epsg=4326, inplace=True)\n", + "gdf_ridership_sunday.set_crs(epsg=4326, inplace=True)" ] }, { @@ -506,7 +531,9 @@ "outputs": [], "source": [ "# Reproject to match census tracts CRS\n", - "gdf_ridership = gdf_ridership.to_crs(tracts_ca_acs.crs)" + "gdf_ridership = gdf_ridership.to_crs(tracts_ca_acs.crs)\n", + "gdf_ridership_saturday = gdf_ridership_saturday.to_crs(tracts_ca_acs.crs)\n", + "gdf_ridership_sunday = gdf_ridership_sunday.to_crs(tracts_ca_acs.crs)" ] }, { @@ -519,7 +546,12 @@ "outputs": [], "source": [ "stop_buffered = gdf_ridership.copy()\n", - "stop_buffered[\"geometry\"] = stop_buffered.geometry.buffer(404.672)" + "stop_buffered_saturday = gdf_ridership_saturday.copy()\n", + "stop_buffered_sunday = gdf_ridership_sunday.copy()\n", + "\n", + "stop_buffered[\"geometry\"] = stop_buffered.geometry.buffer(404.672)\n", + "stop_buffered_saturday[\"geometry\"] = stop_buffered_saturday.geometry.buffer(404.672)\n", + "stop_buffered_sunday[\"geometry\"] = stop_buffered_sunday.geometry.buffer(404.672)" ] }, { @@ -579,7 +611,7 @@ "text": [ "\n", "Index: 21264 entries, 0 to 21264\n", - "Data columns (total 14 columns):\n", + "Data columns (total 15 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 organization_name 21264 non-null object \n", @@ -591,13 +623,14 @@ " 6 n_routes 21264 non-null float64 \n", " 7 pt_geom 21264 non-null object \n", " 8 day_type 21264 non-null object \n", - " 9 average_daily_boardings 21264 non-null float64 \n", - " 10 average_daily_alightings 19087 non-null float64 \n", - " 11 start_date 21264 non-null object \n", - " 12 end_date 21264 non-null object \n", - " 13 geometry 21264 non-null geometry\n", - "dtypes: float64(4), geometry(1), object(9)\n", - "memory usage: 2.4+ MB\n" + " 9 route_id_list 21264 non-null object \n", + " 10 average_daily_boardings 21264 non-null float64 \n", + " 11 average_daily_alightings 19087 non-null float64 \n", + " 12 start_date 21264 non-null object \n", + " 13 end_date 21264 non-null object \n", + " 14 geometry 21264 non-null geometry\n", + "dtypes: float64(4), geometry(1), object(10)\n", + "memory usage: 2.6+ MB\n" ] } ], @@ -617,6 +650,22 @@ " tracts_ca_acs, \n", " how='intersection', \n", " keep_geom_type=True\n", + ")\n", + "\n", + "\n", + "geometry_intersect_saturday = gpd.overlay(\n", + " stop_buffered_saturday, \n", + " tracts_ca_acs, \n", + " how='intersection', \n", + " keep_geom_type=True\n", + ")\n", + "\n", + "\n", + "geometry_intersect_sunday = gpd.overlay(\n", + " stop_buffered_sunday, \n", + " tracts_ca_acs, \n", + " how='intersection', \n", + " keep_geom_type=True\n", ")" ] }, @@ -629,9 +678,13 @@ "source": [ "# Calculate intersected area\n", "geometry_intersect['area_2'] = geometry_intersect.geometry.area\n", + "geometry_intersect_saturday['area_2'] = geometry_intersect_saturday.geometry.area\n", + "geometry_intersect_sunday['area_2'] = geometry_intersect_sunday.geometry.area\n", "\n", "# Calculate the proportion of the tract that intersects each stop\n", - "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2']" + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2']\n", + "geometry_intersect_saturday['area_ratio'] = geometry_intersect_saturday['area_2'] / geometry_intersect_saturday['area_m2']\n", + "geometry_intersect_sunday['area_ratio'] = geometry_intersect_sunday['area_2'] / geometry_intersect_sunday['area_m2']" ] }, { @@ -651,7 +704,13 @@ "\n", "# Apply area_ratio\n", "for col in cols_to_weight:\n", - " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']" + " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_saturday[f'{col}_adj'] = geometry_intersect_saturday[col] * geometry_intersect_saturday['area_ratio']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_sunday[f'{col}_adj'] = geometry_intersect_sunday[col] * geometry_intersect_sunday['area_ratio']" ] }, { @@ -689,6 +748,16 @@ "stop_acs_rollup = geometry_intersect.groupby(\n", " ['feed_key', 'stop_id', 'organization_name'], \n", " as_index=False\n", + ")[[f'{col}_adj' for col in cols_to_weight]].sum()\n", + "\n", + "stop_acs_rollup_saturday = geometry_intersect_saturday.groupby(\n", + " ['feed_key', 'stop_id', 'organization_name'], \n", + " as_index=False\n", + ")[[f'{col}_adj' for col in cols_to_weight]].sum()\n", + "\n", + "stop_acs_rollup_sunday = geometry_intersect_sunday.groupby(\n", + " ['feed_key', 'stop_id', 'organization_name'], \n", + " as_index=False\n", ")[[f'{col}_adj' for col in cols_to_weight]].sum()" ] }, @@ -703,6 +772,19 @@ " stop_acs_rollup,\n", " on=['feed_key', 'stop_id','organization_name'],\n", " how='left'\n", + ")\n", + "\n", + "\n", + "stop_route_df_saturday = gdf_ridership_saturday.merge(\n", + " stop_acs_rollup_saturday,\n", + " on=['feed_key', 'stop_id','organization_name'],\n", + " how='left'\n", + ")\n", + "\n", + "stop_route_df_sunday = gdf_ridership_sunday.merge(\n", + " stop_acs_rollup_sunday,\n", + " on=['feed_key', 'stop_id','organization_name'],\n", + " how='left'\n", ")" ] }, @@ -718,7 +800,7 @@ "text": [ "\n", "RangeIndex: 21264 entries, 0 to 21263\n", - "Data columns (total 34 columns):\n", + "Data columns (total 35 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 organization_name 21264 non-null object \n", @@ -730,33 +812,34 @@ " 6 n_routes 21264 non-null float64 \n", " 7 pt_geom 21264 non-null object \n", " 8 day_type 21264 non-null object \n", - " 9 average_daily_boardings 21264 non-null float64 \n", - " 10 average_daily_alightings 19087 non-null float64 \n", - " 11 start_date 21264 non-null object \n", - " 12 end_date 21264 non-null object \n", - " 13 geometry 21264 non-null geometry\n", - " 14 total_pop_adj 21264 non-null float64 \n", - " 15 poverty_pop_adj 21264 non-null float64 \n", - " 16 non_us_citizen_adj 21264 non-null float64 \n", - " 17 workers_with_no_car_adj 21264 non-null float64 \n", - " 18 households_with_no_cars_adj 21264 non-null float64 \n", - " 19 disabled_pop_adj 21264 non-null float64 \n", - " 20 public_asst_pop_adj 21264 non-null float64 \n", - " 21 inc_extremelylow_adj 21264 non-null float64 \n", - " 22 inc_verylow_adj 21264 non-null float64 \n", - " 23 inc_low_adj 21264 non-null float64 \n", - " 24 male_seniors_adj 21264 non-null float64 \n", - " 25 female_seniors_adj 21264 non-null float64 \n", - " 26 veteran_pop_adj 21264 non-null float64 \n", - " 27 male_youth_adj 21264 non-null float64 \n", - " 28 inc_total_lowincome_adj 21264 non-null float64 \n", - " 29 female_youth_adj 21264 non-null float64 \n", - " 30 total_seniors_adj 21264 non-null float64 \n", - " 31 jobs_tot_adj 21264 non-null float64 \n", - " 32 total_youth_adj 21264 non-null float64 \n", - " 33 ALAND_adj 21264 non-null float64 \n", - "dtypes: float64(24), geometry(1), object(9)\n", - "memory usage: 5.5+ MB\n" + " 9 route_id_list 21264 non-null object \n", + " 10 average_daily_boardings 21264 non-null float64 \n", + " 11 average_daily_alightings 19087 non-null float64 \n", + " 12 start_date 21264 non-null object \n", + " 13 end_date 21264 non-null object \n", + " 14 geometry 21264 non-null geometry\n", + " 15 total_pop_adj 21264 non-null float64 \n", + " 16 poverty_pop_adj 21264 non-null float64 \n", + " 17 non_us_citizen_adj 21264 non-null float64 \n", + " 18 workers_with_no_car_adj 21264 non-null float64 \n", + " 19 households_with_no_cars_adj 21264 non-null float64 \n", + " 20 disabled_pop_adj 21264 non-null float64 \n", + " 21 public_asst_pop_adj 21264 non-null float64 \n", + " 22 inc_extremelylow_adj 21264 non-null float64 \n", + " 23 inc_verylow_adj 21264 non-null float64 \n", + " 24 inc_low_adj 21264 non-null float64 \n", + " 25 male_seniors_adj 21264 non-null float64 \n", + " 26 female_seniors_adj 21264 non-null float64 \n", + " 27 veteran_pop_adj 21264 non-null float64 \n", + " 28 male_youth_adj 21264 non-null float64 \n", + " 29 inc_total_lowincome_adj 21264 non-null float64 \n", + " 30 female_youth_adj 21264 non-null float64 \n", + " 31 total_seniors_adj 21264 non-null float64 \n", + " 32 jobs_tot_adj 21264 non-null float64 \n", + " 33 total_youth_adj 21264 non-null float64 \n", + " 34 ALAND_adj 21264 non-null float64 \n", + "dtypes: float64(24), geometry(1), object(10)\n", + "memory usage: 5.7+ MB\n" ] } ], @@ -800,6 +883,19 @@ " stop_route_df, \n", " geometry='geometry', \n", " crs=geometry_intersect.crs\n", + ")\n", + "\n", + "\n", + "stop_route_df_saturday = gpd.GeoDataFrame(\n", + " stop_route_df_saturday, \n", + " geometry='geometry', \n", + " crs=geometry_intersect_saturday.crs\n", + ")\n", + "\n", + "stop_route_df_sunday = gpd.GeoDataFrame(\n", + " stop_route_df_sunday, \n", + " geometry='geometry', \n", + " crs=geometry_intersect_sunday.crs\n", ")" ] }, @@ -812,7 +908,13 @@ "source": [ "# Store data in warehouse\n", "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"wb\") as f:\n", - " stop_route_df.to_parquet(f, index=False)" + " stop_route_df.to_parquet(f, index=False)\n", + "\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_saturday.parquet\", \"wb\") as f:\n", + " stop_route_df_saturday.to_parquet(f, index=False)\n", + "\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_sunday.parquet\", \"wb\") as f:\n", + " stop_route_df_sunday.to_parquet(f, index=False)" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb index 7e6b6c057..a01eda157 100644 --- a/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb @@ -18,7 +18,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: shared_utils in /home/jovyan/data-analyses/_shared_utils (4.4)\n", + "/home/jovyan/data-analyses/.venv/bin/python: No module named pip\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -69,7 +69,13 @@ "outputs": [], "source": [ "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", - " stop_route_df = gpd.read_parquet(f)" + " stop_route_df = gpd.read_parquet(f)\n", + "\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_saturday.parquet\", \"rb\") as f: \n", + " stop_route_df_saturday = gpd.read_parquet(f)\n", + "\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_sunday.parquet\", \"rb\") as f: \n", + " stop_route_df_sunday = gpd.read_parquet(f)" ] }, { @@ -110,6 +116,7 @@ " n_routes\n", " pt_geom\n", " day_type\n", + " route_id_list\n", " average_daily_boardings\n", " average_daily_alightings\n", " start_date\n", @@ -149,31 +156,32 @@ " 1.0\n", " POINT(-119.294028 34.343645)\n", " Weekday\n", + " ['16']\n", " 0.00000\n", " 3.000000\n", " 2025-05-01\n", " 2025-05-31\n", " POINT (64936.582 -407800.219)\n", - " 41.453354\n", - " 3.949242\n", - " 3.158169\n", - " 0.424528\n", - " 0.463815\n", - " 5.709516\n", - " 2.163260\n", - " 9.215728\n", - " 9.896572\n", - " 3.552156\n", - " 3.815590\n", - " 4.852721\n", - " 1.841532\n", - " 1.880153\n", - " 22.664456\n", - " 2.773107\n", - " 8.668311\n", - " 26.318716\n", - " 4.653260\n", - " 1.969641e+06\n", + " 10.425292\n", + " 0.979690\n", + " 0.739468\n", + " 0.100038\n", + " 0.112829\n", + " 1.441372\n", + " 0.545430\n", + " 2.306134\n", + " 2.548643\n", + " 0.894414\n", + " 0.992410\n", + " 1.270627\n", + " 0.480009\n", + " 0.476575\n", + " 5.749192\n", + " 0.656547\n", + " 2.263038\n", + " 6.588764\n", + " 1.133122\n", + " 496201.411578\n", " \n", " \n", " 1\n", @@ -186,31 +194,32 @@ " 1.0\n", " POINT(-122.191284 37.457543)\n", " Weekday\n", + " ['ECR-216']\n", " 9.52381\n", " 24.571429\n", " 2025-08-01\n", " 2025-08-31\n", " POINT (-193547.746 -59885.338)\n", - " 2537.657815\n", - " 137.769913\n", - " 429.179726\n", - " 163.623904\n", - " 133.342872\n", - " 193.085414\n", - " 49.337153\n", - " 357.458768\n", - " 290.410532\n", - " 176.891016\n", - " 198.211651\n", - " 295.773462\n", - " 68.365482\n", - " 145.896194\n", - " 824.760316\n", - " 253.752229\n", - " 493.985113\n", - " 1266.679117\n", - " 399.648424\n", - " 2.028257e+06\n", + " 624.726883\n", + " 34.432788\n", + " 109.726839\n", + " 59.474563\n", + " 31.053582\n", + " 44.774152\n", + " 11.461357\n", + " 81.434546\n", + " 97.336393\n", + " 39.904405\n", + " 45.567698\n", + " 71.082024\n", + " 19.466454\n", + " 34.613280\n", + " 218.675344\n", + " 92.571414\n", + " 116.649722\n", + " 331.502428\n", + " 127.184694\n", + " 513409.572630\n", " \n", " \n", "\n", @@ -225,37 +234,37 @@ "0 . None 14.0 1.0 \n", "1 1000 El Camino Real-Menlo College 345017 72.0 1.0 \n", "\n", - " pt_geom day_type average_daily_boardings \\\n", - "0 POINT(-119.294028 34.343645) Weekday 0.00000 \n", - "1 POINT(-122.191284 37.457543) Weekday 9.52381 \n", + " pt_geom day_type route_id_list \\\n", + "0 POINT(-119.294028 34.343645) Weekday ['16'] \n", + "1 POINT(-122.191284 37.457543) Weekday ['ECR-216'] \n", "\n", - " average_daily_alightings start_date end_date \\\n", - "0 3.000000 2025-05-01 2025-05-31 \n", - "1 24.571429 2025-08-01 2025-08-31 \n", + " average_daily_boardings average_daily_alightings start_date end_date \\\n", + "0 0.00000 3.000000 2025-05-01 2025-05-31 \n", + "1 9.52381 24.571429 2025-08-01 2025-08-31 \n", "\n", " geometry total_pop_adj poverty_pop_adj \\\n", - "0 POINT (64936.582 -407800.219) 41.453354 3.949242 \n", - "1 POINT (-193547.746 -59885.338) 2537.657815 137.769913 \n", + "0 POINT (64936.582 -407800.219) 10.425292 0.979690 \n", + "1 POINT (-193547.746 -59885.338) 624.726883 34.432788 \n", "\n", " non_us_citizen_adj workers_with_no_car_adj households_with_no_cars_adj \\\n", - "0 3.158169 0.424528 0.463815 \n", - "1 429.179726 163.623904 133.342872 \n", + "0 0.739468 0.100038 0.112829 \n", + "1 109.726839 59.474563 31.053582 \n", "\n", " disabled_pop_adj public_asst_pop_adj inc_extremelylow_adj \\\n", - "0 5.709516 2.163260 9.215728 \n", - "1 193.085414 49.337153 357.458768 \n", + "0 1.441372 0.545430 2.306134 \n", + "1 44.774152 11.461357 81.434546 \n", "\n", " inc_verylow_adj inc_low_adj male_seniors_adj female_seniors_adj \\\n", - "0 9.896572 3.552156 3.815590 4.852721 \n", - "1 290.410532 176.891016 198.211651 295.773462 \n", + "0 2.548643 0.894414 0.992410 1.270627 \n", + "1 97.336393 39.904405 45.567698 71.082024 \n", "\n", " veteran_pop_adj male_youth_adj inc_total_lowincome_adj female_youth_adj \\\n", - "0 1.841532 1.880153 22.664456 2.773107 \n", - "1 68.365482 145.896194 824.760316 253.752229 \n", + "0 0.480009 0.476575 5.749192 0.656547 \n", + "1 19.466454 34.613280 218.675344 92.571414 \n", "\n", - " total_seniors_adj jobs_tot_adj total_youth_adj ALAND_adj \n", - "0 8.668311 26.318716 4.653260 1.969641e+06 \n", - "1 493.985113 1266.679117 399.648424 2.028257e+06 " + " total_seniors_adj jobs_tot_adj total_youth_adj ALAND_adj \n", + "0 2.263038 6.588764 1.133122 496201.411578 \n", + "1 116.649722 331.502428 127.184694 513409.572630 " ] }, "execution_count": 5, @@ -276,7 +285,11 @@ "source": [ "# Convert n_arrivals and n_routes to integer\n", "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", - "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)\n", + "stop_route_df_saturday['n_arrivals'] = stop_route_df_saturday['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df_saturday['n_routes'] = stop_route_df_saturday['n_routes'].fillna(0).astype(int)\n", + "stop_route_df_sunday['n_arrivals'] = stop_route_df_sunday['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df_sunday['n_routes'] = stop_route_df_sunday['n_routes'].fillna(0).astype(int)\n" ] }, { @@ -291,7 +304,7 @@ "text": [ "\n", "RangeIndex: 21264 entries, 0 to 21263\n", - "Data columns (total 34 columns):\n", + "Data columns (total 35 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 organization_name 21264 non-null object \n", @@ -303,33 +316,34 @@ " 6 n_routes 21264 non-null int64 \n", " 7 pt_geom 21264 non-null object \n", " 8 day_type 21264 non-null object \n", - " 9 average_daily_boardings 21264 non-null float64 \n", - " 10 average_daily_alightings 19087 non-null float64 \n", - " 11 start_date 21264 non-null object \n", - " 12 end_date 21264 non-null object \n", - " 13 geometry 21264 non-null geometry\n", - " 14 total_pop_adj 21264 non-null float64 \n", - " 15 poverty_pop_adj 21264 non-null float64 \n", - " 16 non_us_citizen_adj 21264 non-null float64 \n", - " 17 workers_with_no_car_adj 21264 non-null float64 \n", - " 18 households_with_no_cars_adj 21264 non-null float64 \n", - " 19 disabled_pop_adj 21264 non-null float64 \n", - " 20 public_asst_pop_adj 21264 non-null float64 \n", - " 21 inc_extremelylow_adj 21264 non-null float64 \n", - " 22 inc_verylow_adj 21264 non-null float64 \n", - " 23 inc_low_adj 21264 non-null float64 \n", - " 24 male_seniors_adj 21264 non-null float64 \n", - " 25 female_seniors_adj 21264 non-null float64 \n", - " 26 veteran_pop_adj 21264 non-null float64 \n", - " 27 male_youth_adj 21264 non-null float64 \n", - " 28 inc_total_lowincome_adj 21264 non-null float64 \n", - " 29 female_youth_adj 21264 non-null float64 \n", - " 30 total_seniors_adj 21264 non-null float64 \n", - " 31 jobs_tot_adj 21264 non-null float64 \n", - " 32 total_youth_adj 21264 non-null float64 \n", - " 33 ALAND_adj 21264 non-null float64 \n", - "dtypes: float64(22), geometry(1), int64(2), object(9)\n", - "memory usage: 5.5+ MB\n" + " 9 route_id_list 21264 non-null object \n", + " 10 average_daily_boardings 21264 non-null float64 \n", + " 11 average_daily_alightings 19087 non-null float64 \n", + " 12 start_date 21264 non-null object \n", + " 13 end_date 21264 non-null object \n", + " 14 geometry 21264 non-null geometry\n", + " 15 total_pop_adj 21264 non-null float64 \n", + " 16 poverty_pop_adj 21264 non-null float64 \n", + " 17 non_us_citizen_adj 21264 non-null float64 \n", + " 18 workers_with_no_car_adj 21264 non-null float64 \n", + " 19 households_with_no_cars_adj 21264 non-null float64 \n", + " 20 disabled_pop_adj 21264 non-null float64 \n", + " 21 public_asst_pop_adj 21264 non-null float64 \n", + " 22 inc_extremelylow_adj 21264 non-null float64 \n", + " 23 inc_verylow_adj 21264 non-null float64 \n", + " 24 inc_low_adj 21264 non-null float64 \n", + " 25 male_seniors_adj 21264 non-null float64 \n", + " 26 female_seniors_adj 21264 non-null float64 \n", + " 27 veteran_pop_adj 21264 non-null float64 \n", + " 28 male_youth_adj 21264 non-null float64 \n", + " 29 inc_total_lowincome_adj 21264 non-null float64 \n", + " 30 female_youth_adj 21264 non-null float64 \n", + " 31 total_seniors_adj 21264 non-null float64 \n", + " 32 jobs_tot_adj 21264 non-null float64 \n", + " 33 total_youth_adj 21264 non-null float64 \n", + " 34 ALAND_adj 21264 non-null float64 \n", + "dtypes: float64(22), geometry(1), int64(2), object(10)\n", + "memory usage: 5.7+ MB\n" ] } ], @@ -359,9 +373,9 @@ "===================================================================================\n", "Dep. Variable: average_daily_boardings R-squared: 0.056\n", "Model: OLS Adj. R-squared: 0.056\n", - "Method: Least Squares F-statistic: 313.7\n", - "Date: Wed, 29 Apr 2026 Prob (F-statistic): 1.16e-262\n", - "Time: 18:32:12 Log-Likelihood: -1.5966e+05\n", + "Method: Least Squares F-statistic: 315.9\n", + "Date: Thu, 07 May 2026 Prob (F-statistic): 1.84e-264\n", + "Time: 22:21:26 Log-Likelihood: -1.5966e+05\n", "No. Observations: 21264 AIC: 3.193e+05\n", "Df Residuals: 21259 BIC: 3.194e+05\n", "Df Model: 4 \n", @@ -369,21 +383,21 @@ "===========================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const 7.6464 7.788 0.982 0.326 -7.619 22.912\n", - "n_arrivals 3.6535 0.108 33.798 0.000 3.442 3.865\n", - "n_routes -65.1697 4.400 -14.810 0.000 -73.795 -56.545\n", - "total_pop_adj -0.0065 0.001 -6.117 0.000 -0.009 -0.004\n", - "workers_with_no_car_adj 0.0937 0.014 6.889 0.000 0.067 0.120\n", + "const 3.1436 7.576 0.415 0.678 -11.707 17.994\n", + "n_arrivals 3.5922 0.108 33.355 0.000 3.381 3.803\n", + "n_routes -64.9546 4.398 -14.769 0.000 -73.575 -56.334\n", + "total_pop_adj -0.0216 0.004 -5.648 0.000 -0.029 -0.014\n", + "workers_with_no_car_adj 0.3872 0.050 7.781 0.000 0.290 0.485\n", "==============================================================================\n", - "Omnibus: 68977.611 Durbin-Watson: 1.374\n", - "Prob(Omnibus): 0.000 Jarque-Bera (JB): 15885836967.349\n", - "Skew: 54.357 Prob(JB): 0.00\n", - "Kurtosis: 4235.968 Cond. No. 1.92e+04\n", + "Omnibus: 69006.430 Durbin-Watson: 1.374\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 15961683023.492\n", + "Skew: 54.422 Prob(JB): 0.00\n", + "Kurtosis: 4246.065 Cond. No. 4.98e+03\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The condition number is large, 1.92e+04. This might indicate that there are\n", + "[2] The condition number is large, 4.98e+03. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } @@ -476,11 +490,11 @@ "output_type": "stream", "text": [ " variable VIF\n", - "0 const 6.623978\n", - "1 n_arrivals 1.527425\n", - "2 n_routes 1.420235\n", - "3 total_pop_adj 1.701594\n", - "4 workers_with_no_car_adj 1.610496\n" + "0 const 6.270724\n", + "1 n_arrivals 1.516624\n", + "2 n_routes 1.419337\n", + "3 total_pop_adj 1.694929\n", + "4 workers_with_no_car_adj 1.628169\n" ] } ], @@ -590,20 +604,20 @@ "Model: GLM Df Residuals: 21258\n", "Model Family: Poisson Df Model: 5\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -1.3658e+06\n", - "Date: Wed, 29 Apr 2026 Deviance: 2.6532e+06\n", - "Time: 18:32:12 Pearson chi2: 3.09e+07\n", + "Method: IRLS Log-Likelihood: -1.3597e+06\n", + "Date: Thu, 07 May 2026 Deviance: 2.6409e+06\n", + "Time: 22:21:26 Pearson chi2: 3.05e+07\n", "No. Iterations: 14 Pseudo R-squ. (CS): 1.000\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const 3.8035 0.002 1558.381 0.000 3.799 3.808\n", - "n_arrivals 0.0253 1.69e-05 1500.890 0.000 0.025 0.025\n", - "n_routes -1.3051 0.002 -839.527 0.000 -1.308 -1.302\n", - "total_pop_adj -1.777e-05 4.38e-07 -40.535 0.000 -1.86e-05 -1.69e-05\n", - "workers_with_no_car_adj 0.0003 1.67e-06 166.785 0.000 0.000 0.000\n", - "poverty_pop_adj 0.0002 1.87e-06 126.302 0.000 0.000 0.000\n", + "const 3.8183 0.002 1651.951 0.000 3.814 3.823\n", + "n_arrivals 0.0254 1.69e-05 1504.212 0.000 0.025 0.025\n", + "n_routes -1.3075 0.002 -842.797 0.000 -1.311 -1.304\n", + "total_pop_adj -3.245e-05 1.44e-06 -22.539 0.000 -3.53e-05 -2.96e-05\n", + "workers_with_no_car_adj 0.0011 5.58e-06 195.682 0.000 0.001 0.001\n", + "poverty_pop_adj 0.0006 5.57e-06 104.641 0.000 0.001 0.001\n", "===========================================================================================\n" ] } @@ -679,6 +693,31 @@ { "cell_type": "code", "execution_count": 12, + "id": "5634e0ff-f06d-4dce-ba8d-010a1f04f039", + "metadata": {}, + "outputs": [], + "source": [ + "stop_route_df_selected_org = stop_route_df[\n", + " stop_route_df['organization_name'].isin([\n", + " 'SamTrans',\n", + " 'Golden Gate Transit',\n", + " 'Long Beach Transit',\n", + " 'SDMTS',\n", + " 'Golden Gate Park Shuttle',\n", + " 'Fresno County',\n", + " 'San Francisco Bay Area Rapid Transit District',\n", + " 'Big Blue Bus',\n", + " 'Caltrain',\n", + " 'Culver City Bus',\n", + " 'Foothill Transit',\n", + " 'Riverside Transit'\n", + " ])\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, "id": "252de74b-d050-4c06-b526-3110aff74815", "metadata": {}, "outputs": [ @@ -686,7 +725,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" ] }, @@ -696,37 +735,37 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21256\n", + "Dep. Variable: average_daily_boardings No. Observations: 12797\n", + "Model: GLM Df Residuals: 12789\n", "Model Family: NegativeBinomial Df Model: 7\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -82715.\n", - "Date: Wed, 29 Apr 2026 Deviance: 38113.\n", - "Time: 18:32:13 Pearson chi2: 2.80e+05\n", - "No. Iterations: 54 Pseudo R-squ. (CS): 0.8318\n", + "Method: IRLS Log-Likelihood: -52346.\n", + "Date: Thu, 07 May 2026 Deviance: 21484.\n", + "Time: 22:21:27 Pearson chi2: 1.19e+05\n", + "No. Iterations: 31 Pseudo R-squ. (CS): 0.8685\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "const -2.0303 0.037 -55.232 0.000 -2.102 -1.958\n", - "n_routes -0.1100 0.009 -11.643 0.000 -0.129 -0.091\n", - "log_arrivals 1.4157 0.011 126.517 0.000 1.394 1.438\n", - "total_pop_adj 5.629e-06 5.69e-06 0.989 0.323 -5.53e-06 1.68e-05\n", - "workers_with_no_car_adj 0.0010 3.45e-05 30.033 0.000 0.001 0.001\n", - "total_youth_adj 0.0002 1.29e-05 16.642 0.000 0.000 0.000\n", - "public_asst_pop_adj 3.942e-05 3.73e-05 1.056 0.291 -3.37e-05 0.000\n", - "total_seniors_adj -0.0003 2.58e-05 -12.337 0.000 -0.000 -0.000\n", + "const -3.0386 0.053 -57.581 0.000 -3.142 -2.935\n", + "n_routes -0.1565 0.013 -11.624 0.000 -0.183 -0.130\n", + "log_arrivals 1.7482 0.016 108.591 0.000 1.717 1.780\n", + "total_pop_adj 0.0003 4.09e-05 8.419 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0049 0.000 23.070 0.000 0.004 0.005\n", + "total_youth_adj 0.0008 4.73e-05 16.885 0.000 0.001 0.001\n", + "inc_total_lowincome_adj -0.0008 6.77e-05 -12.094 0.000 -0.001 -0.001\n", + "total_seniors_adj -0.0014 0.000 -11.872 0.000 -0.002 -0.001\n", "===========================================================================================\n" ] } ], "source": [ "# Copy the dataset\n", - "df = stop_route_df.copy()\n", + "df = stop_route_df_selected_org.copy()\n", "y = df['average_daily_boardings']\n", "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", "X = df[['n_routes', 'log_arrivals',\n", - " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'public_asst_pop_adj', 'total_seniors_adj']]\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'inc_total_lowincome_adj', 'total_seniors_adj']]\n", "\n", "# 4. Add intercept\n", "X = sm.add_constant(X)\n", @@ -997,7 +1036,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "247a1b69-f5ff-4414-8e06-05a786d2b13c", "metadata": {}, "outputs": [ @@ -1006,14 +1045,14 @@ "output_type": "stream", "text": [ " variable VIF\n", - "0 const 6.991227\n", - "1 n_arrivals 1.540762\n", - "2 n_routes 1.427478\n", - "3 total_pop_adj 28.958436\n", - "4 workers_with_no_car_adj 1.632586\n", - "5 total_youth_adj 2.653703\n", - "6 total_seniors_adj 3.405191\n", - "7 jobs_tot_adj 22.094876\n" + "0 const 6.540345\n", + "1 n_arrivals 1.527074\n", + "2 n_routes 1.425634\n", + "3 total_pop_adj 24.129668\n", + "4 workers_with_no_car_adj 1.656851\n", + "5 total_youth_adj 2.516253\n", + "6 total_seniors_adj 3.064684\n", + "7 jobs_tot_adj 17.472264\n" ] } ], @@ -1038,7 +1077,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "5b21ac3d-f52d-48c7-92cb-4cd40e14fda9", "metadata": {}, "outputs": [ @@ -1046,7 +1085,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" ] }, @@ -1056,25 +1095,25 @@ "text": [ " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings No. Observations: 21264\n", - "Model: GLM Df Residuals: 21257\n", + "Dep. Variable: average_daily_boardings No. Observations: 12797\n", + "Model: GLM Df Residuals: 12790\n", "Model Family: NegativeBinomial Df Model: 6\n", "Link Function: Log Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -83560.\n", - "Date: Wed, 29 Apr 2026 Deviance: 39802.\n", - "Time: 18:32:27 Pearson chi2: 1.64e+05\n", - "No. Iterations: 30 Pseudo R-squ. (CS): 0.8179\n", + "Method: IRLS Log-Likelihood: -53834.\n", + "Date: Thu, 07 May 2026 Deviance: 24462.\n", + "Time: 22:21:28 Pearson chi2: 1.06e+05\n", + "No. Iterations: 48 Pseudo R-squ. (CS): 0.8340\n", "Covariance Type: nonrobust \n", "===========================================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------------------\n", - "n_arrivals 0.0426 0.000 167.276 0.000 0.042 0.043\n", - "n_routes 0.1378 0.009 15.154 0.000 0.120 0.156\n", - "total_pop_adj 8.343e-06 1.03e-05 0.813 0.416 -1.18e-05 2.84e-05\n", - "workers_with_no_car_adj -0.0002 3.01e-05 -7.111 0.000 -0.000 -0.000\n", - "total_youth_adj 0.0003 1.41e-05 24.251 0.000 0.000 0.000\n", - "total_seniors_adj -4.059e-06 2.49e-05 -0.163 0.870 -5.28e-05 4.47e-05\n", - "jobs_tot_adj 0.0002 1.92e-05 8.143 0.000 0.000 0.000\n", + "n_arrivals 0.0430 0.000 134.046 0.000 0.042 0.044\n", + "n_routes 0.3520 0.013 26.157 0.000 0.326 0.378\n", + "total_pop_adj -5.085e-05 4.31e-05 -1.180 0.238 -0.000 3.36e-05\n", + "workers_with_no_car_adj -9.209e-05 0.000 -0.466 0.642 -0.000 0.000\n", + "total_youth_adj 0.0011 5.12e-05 22.337 0.000 0.001 0.001\n", + "total_seniors_adj -0.0001 0.000 -1.085 0.278 -0.000 9.89e-05\n", + "jobs_tot_adj 0.0005 7.34e-05 6.630 0.000 0.000 0.001\n", "===========================================================================================\n" ] } @@ -1111,110 +1150,195 @@ ] }, { - "cell_type": "code", - "execution_count": 15, - "id": "30c2afcd-c996-48fd-93c0-ce39c3447fcc", + "cell_type": "markdown", + "id": "5094c676-d3cf-4142-9319-0ef9eae98236", "metadata": {}, - "outputs": [], "source": [ - "stop_route_df_orange = stop_route_df[stop_route_df['organization_name'] == \"Orange County Transportation Authority\"]" + "### Saturday Model " ] }, { "cell_type": "code", - "execution_count": 19, - "id": "ae81647c-fa1d-4328-acd0-0626cd5af66c", + "execution_count": 16, + "id": "600842e7-0e53-4423-9c58-8cc93738ab31", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 12315\n", + "Model: GLM Df Residuals: 12307\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -45084.\n", + "Date: Thu, 07 May 2026 Deviance: 22353.\n", + "Time: 22:21:28 Pearson chi2: 1.79e+06\n", + "No. Iterations: 100 Pseudo R-squ. (CS): 0.8679\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -3.9238 0.056 -69.998 0.000 -4.034 -3.814\n", + "n_routes -0.0472 0.016 -3.026 0.002 -0.078 -0.017\n", + "log_arrivals 1.9336 0.019 102.563 0.000 1.897 1.971\n", + "total_pop_adj 0.0004 3.83e-05 10.594 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0022 7.79e-05 28.504 0.000 0.002 0.002\n", + "total_youth_adj 0.0003 4.98e-05 6.417 0.000 0.000 0.000\n", + "inc_total_lowincome_adj -0.0006 6.39e-05 -9.235 0.000 -0.001 -0.000\n", + "total_seniors_adj -0.0018 0.000 -16.407 0.000 -0.002 -0.002\n", + "===========================================================================================\n" + ] + } + ], "source": [ - "df_orange = stop_route_df_orange.copy()\n", - "\n", - "df_orange[\"log_arrivals\"] = np.log(df_orange[\"n_arrivals\"] + 1)\n", - "\n", - "feature_cols = [\n", - " 'n_routes',\n", - " 'log_arrivals',\n", - " 'total_pop_adj',\n", - " 'workers_with_no_car_adj',\n", - " 'total_youth_adj',\n", - " 'public_asst_pop_adj',\n", - " 'total_seniors_adj'\n", - "]\n", + "# Copy the dataset\n", + "df_saturday = stop_route_df_saturday.copy()\n", + "y = df_saturday['average_daily_boardings']\n", + "df_saturday[\"log_arrivals\"] = np.log(df_saturday[\"n_arrivals\"] + 1)\n", + "X = df_saturday[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'inc_total_lowincome_adj', 'total_seniors_adj']]\n", "\n", - "X_orange = df_orange[feature_cols]\n", + "X = sm.add_constant(X)\n", "\n", - "# FORCE constant\n", - "X_orange = sm.add_constant(X_orange, has_constant='add')\n", + "# Same X and y as Poisson\n", + "nb_model_extended_final_saturday = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", "\n", - "X_orange = X_orange.reindex(\n", - " columns=nb_model_extended_final.model.exog_names,\n", - " fill_value=0\n", - ")" + "print(nb_model_extended_final_saturday.summary())" ] }, { "cell_type": "code", - "execution_count": 20, - "id": "f6147e5b-2807-486d-b06a-3a3b9a17e52b", + "execution_count": null, + "id": "160ceac9-640a-423e-a1d0-7200b356d813", "metadata": {}, "outputs": [], - "source": [ - "df_orange[\"predicted_boardings\"] = nb_model_extended_final.predict(X_orange)" - ] + "source": [] }, { "cell_type": "code", - "execution_count": 21, - "id": "49db6d6b-9464-4b6d-a5e4-4ed046089fe5", + "execution_count": 17, + "id": "98de5cbb-4867-4008-b91d-20269c1f4959", "metadata": {}, "outputs": [ { - "data": { - "image/png": "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er1iyJAhYt68eeKPf/yjKC4uFuPGjWv39zV06FAxa9as1OPm5max7777Ck3TxEUXXSTuv/9+8cc//lEceOCB4vPPPxeVlZXixhtvFIC4+OKLxT//+U/xz3/+U6xevVoIIbrFxt5A77NoN6axsVEA4oc//OF292tdSEOhkBBi8wJ+1llntdu3dYHbkieffFIA4v33309taz3GBRdc0GbfU045ReTn56ceL1myRADiqquuarPfeeed104ELrzwQjFgwABRW1vbZt8zzzxTZGdnt7GtsyIwfvx4kZ2dvd197rjjDgGI//73v0KIzYvLoEGDUp+ZEEI89dRTAhB//etfhRBCfP75520WvY5Yt26d0DRN/OlPf2qz/euvvxYOh6PN9tb3NH/+/Db7NjU1CbfbLX75y1+22X7LLbcIRVHE+vXr0zpXMpkURUVFYvz48SKRSKT2e/DBBwWwQxFYsWKFAMQ999zTZvtll10mAoFA6v/pyiuvFMFgUBiGsd3jdQQgLrzwQlFTUyOqq6vF4sWLxdSpUwUgbr/9diHE5v+nESNGtPnbsCxLjBo1SkybNq3NhUs0GhXDhw8XP/jBD1LbTj75ZOHxeFKfoRBCLF++XGiatkMR+P3vfy8A8dxzz7Wzv/W8n376qQDEww8/3O757rCxNyDdQT1Ic3MzAFlZWdvdr/X51tvkVn72s5+129fr9aZ+j8fj1NbWMnnyZACWLl3abv+tj3HYYYdRV1eXOtfrr78OwGWXXdZmvyuuuKLNYyEEzz77LDNmzEAIQW1tbepn2rRpNDU1tTn/woULEZ2YX9Tc3LzTn8+5557b5rU/+tGPGDBgAK+++ioA2dnZALzxxhvtXGCtPPfcc1iWxemnn97mPZWUlDBq1CjefffdNvu73W7OP//8NtuCwSDHH388Tz31VJv3/J///IfJkyczZMiQtM712WefUV1dzc9+9jNcLlfqeOedd17qPW2PPffck/Hjx/Of//wntc00TZ555hlmzJiR+hvKyckhEonw1ltv7fCYHfH3v/+dwsJCioqKmDRpEh9++CFz5szhqquuarPfrFmz2vzdfvHFF6xcuZIf//jH1NXVpT6HSCTC1KlTef/997EsC9M0eeONNzj55JNTnyHA3nvvzbRp03Zo37PPPst+++3XYdLFjlI3e8rGTCADwz1I6wLVKgbbYltiMXz48Hb71tfXc8MNN/Dvf/+b6urqNs9t7ecG2vxhAuTm5gLQ0NBAMBhk/fr1qKra7lx77LFHm8c1NTU0Njby4IMP8uCDD3b4Pra2pzNkZWVRW1u73X229fmMGjWqzWNFUdhjjz1Yt24dYH9+c+bM4Y477uDxxx/nsMMO46STTuInP/lJajFduXIlQoh2x2rF6XS2eTxo0KA2C3MrZ5xxBi+88AKLFi3i4IMPZvXq1SxZsoS77rortU9nz7V+/foO35/T6dxu8sDW9lx77bVs2rSJQYMGsXDhQqqrq9sE1y+77DKeeuopjj/+eAYNGsSxxx7L6aefznHHHdepc/zwhz/k8ssvR1EUsrKy2GeffTpMXtj6b2vlypWALQ7boqmpiUQiQSwW6/Dz2muvvVJivy1Wr17NzJkzO/NW2tFTNmYCKQI9SHZ2NgMGDOCrr77a7n5fffUVgwYNIhgMttm+5dVTK6effjofffQRc+fOZfz48QQCASzL4rjjjsOyrHb7a5rW4Tk7c5W+Ja3H/slPfrLNL8a4cePSOibYV0xffPEFZWVl7QSrldbPb8yYMWkf//bbb+e8887jxRdf5M033+TnP/858+bN4+OPP2bw4MFYloWiKLz22msdflaBQKDN447+TwBmzJiBz+fjqaee4uCDD+app55CVVVOO+201D7pnmtXOOOMM7jmmmt4+umnueqqq3jqqafIzs5us8AXFRXxxRdf8MYbb/Daa6/x2muv8fDDD3Puuefy6KOP7vAcgwcP5phjjtnhflt/Zq1/S7feeus20zIDgQCJRGKHx+4u+oKNO4sUgR7mxBNP5G9/+xsffPBBKsNnS/73v/+xbt06Lrnkkh0eq6GhgQULFnDDDTfw+9//PrW99aplZxg6dCiWZbF27do2VzOrVq1qs19hYSFZWVmYptmpL35nOfHEE3nyySd57LHHuO6669o9HwqFePHFFxk9enS7u5Ot37cQglWrVrUTo7FjxzJ27Fiuu+46PvroIw455BDmz5/PTTfdxMiRIxFCMHz4cPbcc8+dfh9+v58TTzyRp59+mjvuuIP//Oc/HHbYYQwcODC1T2fPNXTo0NT7O/roo1PbdV1n7dq17Lfffju0Z/jw4Rx00EH85z//4fLLL+e5557j5JNPbpdG6XK5mDFjBjNmzMCyLC677DIeeOABfve737X7vLuKkSNHArYbbXt/S4WFhXi93g7/vlesWNGp83zzzTfb3WdbbqGesjETyJhADzN37ly8Xi+XXHJJuzTO+vp6fvazn+Hz+Zg7d+4Oj9V69bj1VfyWLod0afVb3nfffW2233PPPe3OPXPmzFRK59bU1NS0edzZFNEf/ehHjBkzhptvvpnPPvuszXOWZXHppZfS0NDA9ddf3+61jz32WBtX2zPPPENFRUUqRz0UCmEYRpvXjB07FlVVU1dwp556KpqmccMNN7T7XIUQ7f7PtscZZ5xBeXk5Dz30EF9++WW7uobOnmvixIkUFhYyf/58kslkap9HHnmExsbGtOz5+OOP+cc//kFtbW07e7Z+b6qqpgS0O69wJ0yYwMiRI7ntttsIh8Ptnm/9W9I0jWnTpvHCCy9QVlaWev7bb7/ljTfe2OF5Zs6cyZdffsnzzz/f7rnWz7/VfbX159pTNmYCeSfQw4waNYpHH32Us88+m7Fjx7arGK6treXJJ59MXXlsj2AwyOGHH84tt9yCrusMGjSIN998M5WXvTNMmDCBmTNnctddd1FXV8fkyZN57733+P7774G2V0o333wz7777LpMmTeKiiy5izJgx1NfXs3TpUt5++23q6+tT+5577rm89957O3Q7uVwunnnmGaZOncqhhx7apmL4iSeeYOnSpfzyl7/kzDPPbPfavLy81Guqqqq466672GOPPbjooosAeOedd7j88ss57bTT2HPPPTEMg3/+858pQQP7iu+mm27immuuYd26dZx88slkZWWxdu1ann/+eS6++GKuvvrqTn2WJ5xwAllZWVx99dVtztFKZ8/ldDq56aabuOSSSzj66KM544wzWLt2LQ8//HCnYwJguw6vvvpqrr76avLy8tpd0f70pz+lvr6eo48+msGDB7N+/Xruuecexo8fz957793p86SLqqo89NBDHH/88eyzzz6cf/75DBo0iE2bNvHuu+8SDAZ56aWXALjhhht4/fXXOeyww7jsssswDIN77rmHffbZZ4du1rlz5/LMM89w2mmnccEFFzBhwgTq6+v573//y/z589lvv/0YOXIkOTk5zJ8/n6ysLPx+P5MmTWL48OE9YmNG6PF8JIkQws4lPuuss8SAAQOE0+kUJSUl4qyzzhJff/11u31b0ztramraPbdx40ZxyimniJycHJGdnS1OO+00UV5e3i6dc1vH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xx9/HI/Hk64Zu8Q111xDU1NT6mfDhg09en6JpN+xYQMcfzxEInY9gBSAXkPaIvB///d/OBwOnnnmGe6//34GDRoEwGuvvcZxxx3X6eMsWbKE6upqDjjgABwOBw6Hg/fee4+7774bh8NBcXExyWSSxsbGNq+rqqqipKQEgJKSknbZQq2PW/fpCLfbTTAYbPMjkUi6kdJS+PWv4dhj4cUXwevNtEWSFhQhhMjEiZubm1m/fn2bbeeffz6jR4/m17/+NaWlpRQWFvLkk08yc+ZMAFasWMHo0aNZtGgRkydP5rXXXuPEE0+koqKCoqIiAB588EHmzp1LdXU1bre7U7aEQiGys7NpamqSgiCRdCVCgKJsfmwY4JDlST1BZ9e1tP83tuX3VxQFt9uNy+Xq1HGysrLYd99922zz+/3k5+entl944YXMmTOHvLw8gsEgV1xxBVOmTGHy5MkAHHvssYwZM4ZzzjmHW265hcrKSq677jpmz57daQGQSCTdxDvvwC23wDPPbM7/lwLQ60j7fyQnJwdlS2XfisGDB3Peeedx/fXXo6q7Vot25513oqoqM2fOJJFIMG3aNO67777U85qm8fLLL3PppZcyZcoU/H4/s2bN4sYbb9yl80okkl1kwQKYMQNiMZg3D/70p0xbJNkGabuDHnvsMX77299y3nnncdBBBwHwySef8Oijj3LddddRU1PDbbfdxty5c7n22mu7xeiuRrqDJJIu5O23bQGIx2H6dHj2WZB35j1Ot7mDHn30UW6//XZOP/301LYZM2YwduxYHnjgARYsWMCQIUP405/+1GdEQCKRdBFvvQUnnWQLwIkn2q4gKQC9mrT9NR999BH7779/u+37779/qojr0EMPpaysbNetk0gkfYc33th8BzBjhhSAPkLaIlBaWsrf//73dtv//ve/p4qu6urqyM3N3XXrJBJJ3yAeh5/+FBIJ+OEPpQD0IdJ2B912222cdtppvPbaaxx44IEAfPbZZ3z33Xc888wzgN0Q7owzzuhaSyUSSe/F44FXXoG//hXuv99uCS3pE+xUncDatWt54IEH+P777wHYa6+9uOSSSxg2bFhX29cjyMCwRLKThEJyBGQvpbPrWsaKxXoTUgQkkp3g5Zdh1iy7AvjQQzNtjWQrui07CKCxsZFPPvmE6upqLMtq89y55567M4eUSCR9iZdegpkz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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "NameError", + "evalue": "name 'plt' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[17], line 7\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# predicted values from fixed-effects model\u001b[39;00m\n\u001b[1;32m 5\u001b[0m predicted \u001b[38;5;241m=\u001b[39m nb_model_extended_final_saturday\u001b[38;5;241m.\u001b[39mpredict()\n\u001b[0;32m----> 7\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241m.\u001b[39mfigure(figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m4\u001b[39m))\n\u001b[1;32m 9\u001b[0m plt\u001b[38;5;241m.\u001b[39mscatter(observed, predicted, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.7\u001b[39m)\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m# perfect fit line\u001b[39;00m\n", + "\u001b[0;31mNameError\u001b[0m: name 'plt' is not defined" + ] } ], "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plot_df = df_orange[[\n", - " \"stop_id\",\n", - " \"stop_name\",\n", - " \"average_daily_boardings\",\n", - " \"predicted_boardings\"\n", - "]].dropna()\n", + "# observed values\n", + "observed = df_saturday[\"average_daily_boardings\"]\n", "\n", - "plt.figure(figsize=(4,4))\n", + "# predicted values from fixed-effects model\n", + "predicted = nb_model_extended_final_saturday.predict()\n", "\n", - "plt.scatter(\n", - " plot_df[\"average_daily_boardings\"],\n", - " plot_df[\"predicted_boardings\"],\n", - " alpha=0.4\n", - ")\n", + "plt.figure(figsize=(5, 4))\n", "\n", - "max_val = plot_df[[\n", - " \"average_daily_boardings\",\n", - " \"predicted_boardings\"\n", - "]].max().max()\n", + "plt.scatter(observed, predicted, alpha=0.7)\n", "\n", - "plt.plot([0, max_val], [0, max_val], 'r--')\n", + "# perfect fit line\n", + "max_val = max(observed.max(), predicted.max())\n", + "plt.plot([0, max_val], [0, max_val], color=\"red\", linestyle=\"--\")\n", "\n", - "plt.xlabel(\"Observed Boardings\")\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", "plt.ylabel(\"Predicted Boardings\")\n", - "plt.title(\"Orange: Observed vs Predicted\")\n", + "plt.title(\"Observed vs Predicted\")\n", + "plt.grid(True)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "0e7833d3-cd96-4751-b50b-4aa0367fa426", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 12315\n", + "Model: GLM Df Residuals: 12307\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -45084.\n", + "Date: Thu, 07 May 2026 Deviance: 22353.\n", + "Time: 22:22:58 Pearson chi2: 1.79e+06\n", + "No. Iterations: 100 Pseudo R-squ. (CS): 0.8679\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -3.9238 0.056 -69.998 0.000 -4.034 -3.814\n", + "n_routes -0.0472 0.016 -3.026 0.002 -0.078 -0.017\n", + "log_arrivals 1.9336 0.019 102.563 0.000 1.897 1.971\n", + "total_pop_adj 0.0004 3.83e-05 10.594 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0022 7.79e-05 28.504 0.000 0.002 0.002\n", + "total_youth_adj 0.0003 4.98e-05 6.417 0.000 0.000 0.000\n", + "inc_total_lowincome_adj -0.0006 6.39e-05 -9.235 0.000 -0.001 -0.000\n", + "total_seniors_adj -0.0018 0.000 -16.407 0.000 -0.002 -0.002\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df_sunday = stop_route_df_sunday.copy()\n", + "y = df_sunday['average_daily_boardings']\n", + "df_sunday[\"log_arrivals\"] = np.log(df_sunday[\"n_arrivals\"] + 1)\n", + "X = df_sunday[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'inc_total_lowincome_adj', 'total_seniors_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", "\n", - "plt.show()\n" + "# Same X and y as Poisson\n", + "nb_model_extended_final_sunday = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended_final_sunday.summary())" ] }, { "cell_type": "code", "execution_count": null, - "id": "600842e7-0e53-4423-9c58-8cc93738ab31", + "id": "0d94eb18-5835-47fc-81eb-acb1e0d02852", "metadata": {}, "outputs": [], "source": [] diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb new file mode 100644 index 000000000..dd2a890dd --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb @@ -0,0 +1,3800 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", + "metadata": {}, + "source": [ + "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "markdown", + "id": "e5b6b27c-db78-4a8f-90cf-f89bccd474e2", + "metadata": {}, + "source": [ + "1. Load Stop-Level Data\n", + "2. Prepare Data for Negative Binomial Regression\n", + "- Create a log-transformed variable for arrivals: log_arrivals = log(n_arrivals + 1)\n", + "- Select explanatory variables: number of routes, arrivals, population-adjusted measures.\n", + "3. Get Stop-Level Data for Existing Operators\n", + "- Query GTFS scheduled stop data across Burbank, Metro, and Metrolink\n", + "- Load new stop lists for Orange and Blue route changes.\n", + "4. Assign Missing Coordinates for New Stops\n", + "5. Spatial Buffering and ACS Demographic Overlays\n", + "- Convert new stops to UTM projection, buffer, overlay census tract and compute proportional demographic counts using area ratios\n", + "6. Match New Stops to Nearest Existing Stops\n", + "- Inherit baseline n_routes and daily_arrivals where applicable.\n", + "7. Construct Baseline and Scenario Service Variables\n", + "- New stops assigned 1 route in scenario, 0 in baseline.\n", + "- Scenario arrivals set to baseline arrivals + 51 additional trips.\n", + "8. Generate Prediction Inputs\n", + "- Create scenario (X_scn) and baseline (X_base) covariate matrices.\n", + "9. Predict Ridership Effects\n", + "- Apply fitted NB model to scenario and baseline inputs.\n", + "- Compute predicted ridership change as: pred_scenario - pred_baseline\n", + "- Sum stop-level changes to obtain systemwide change\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "dd2eb2bc-ba32-4faf-a61f-64b8d4a93dd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/bin/python: No module named pip\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ebdc88e9-5c08-4416-bb29-9931f927f551", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "69782f04-24f3-48ea-a502-6d1589c68fa5", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "db56f926-980f-42af-89f8-6ba4468cdd76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type', 'route_id_list',\n", + " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", + " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", + " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", + " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", + " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", + " 'total_youth_adj', 'ALAND_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stop_route_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6b90669b-5d97-47da-9056-00496b8001a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7e41c9f0-9e78-4f41-8657-37747218def7", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "23117df7-8e6b-47c3-aa0c-4965517dde3a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aed87242-a621-4a69-8357-29a4ee260e13", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\"\n", + "]\n", + "\n", + "df_burbank[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_burbank.loc[\n", + " df_burbank[\"stop_name\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1\n", + "\n", + "\n", + "X = df_burbank[[\n", + " \"n_routes\",\n", + " \"log_arrivals\",\n", + " \"total_pop_adj\",\n", + " \"workers_with_no_car_adj\",\n", + " \"total_seniors_adj\",\n", + " \"inc_total_lowincome_adj\",\n", + " \"has_rail_connection_dummy\",\n", + " \"total_youth_adj\"\n", + "]].copy()\n", + "\n", + "X = sm.add_constant(X, has_constant=\"add\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "af3e0f0a-7ac4-4b36-8cdb-0785f620df79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 45\n", + "Model: GLM Df Residuals: 37\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -104.77\n", + "Date: Mon, 11 May 2026 Deviance: 26.862\n", + "Time: 22:02:31 Pearson chi2: 21.2\n", + "No. Iterations: 18 Pseudo R-squ. (CS): 0.5294\n", + "Covariance Type: nonrobust \n", + "=============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "---------------------------------------------------------------------------------------------\n", + "const -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "n_routes -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "log_arrivals 1.9853 2.106 0.942 0.346 -2.143 6.114\n", + "total_pop_adj 0.0014 0.002 0.764 0.445 -0.002 0.005\n", + "workers_with_no_car_adj 0.0301 0.018 1.707 0.088 -0.004 0.065\n", + "total_seniors_adj 0.0081 0.004 1.989 0.047 0.000 0.016\n", + "inc_total_lowincome_adj -0.0059 0.002 -2.395 0.017 -0.011 -0.001\n", + "has_rail_connection_dummy 1.8884 1.135 1.663 0.096 -0.337 4.114\n", + "total_youth_adj 0.0021 0.008 0.254 0.800 -0.014 0.019\n", + "=============================================================================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + } + ], + "source": [ + "model_fe = sm.GLM(\n", + " df_burbank[\"average_daily_boardings\"],\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(model_fe.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "75d04dd7-b987-48d0-823d-9e29c6d71341", + "metadata": {}, + "outputs": [], + "source": [ + "# observed values\n", + "observed = df_burbank[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = model_fe.predict()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0308ac20-e164-4aa3-a22e-63ce66549980", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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x9XXwCUlJfHKK69Qs2ZNChYsSIECBahfvz6rV6++odzMnz+f33//nREjRqQp3lI1b96cVq1a3dD+S5QoQYMGDZg9e7ZT+6xZs6hSpQp33nlnuq9r1qwZly5duuHfTZI56oGTDFm8eDGlS5emfv366a5v0KABpUuXTnPdBdj/KytdujTjx49n06ZNvPvuu1y4cMHRzf7HH3/Qtm1bqlatypgxY/D19WX//v2sX7/esQ+bzUb79u356aefePzxx6lcuTK//fYbb7/9Nnv37mXRokVO77lq1SrmzZvHgAEDKFKkCOXLl6dTp04sWLCAjz76yOk/5EWLFpGYmOi4rikz7/Xoo48yc+ZMevbsSd26dVm1ahVt2rRxmc9ixYrRsGFD5s2bx8iRI53WzZ07F09PT+6//37AXsCMHz+eRx99lNq1axMXF8fWrVvZvn07zZo1c/leVztw4AAAhQsXdmq///77KV++PK+99hrGGABeffVVRowYQdeuXXn00Uc5c+YM7733Hg0aNOCXX35xnM789NNP6devH3Xr1uWZZ57hr7/+on379oSGhhIZGXndeHbu3En9+vXx9vbm8ccfp3Tp0hw4cIDFixfz6quv0rlzZ/bu3cucOXN4++23KVKkCIDjH4mciBHsvQ933XXXNdfXr1+fxo0b8+abb/Lkk09etxeuX79+TJ8+nb59+zJw4EAOHjzIf//7X3755RfWr1/v6A0bPnw4b775Ju3ataNFixb8+uuvtGjRIs0/QH/99ReLFi3i/vvvp0yZMpw6dYqPPvqIhg0bOk5BVq5cmTFjxvDKK6/w+OOPO36W69atmyY+b2/vbPl5uZ7U66lSUlL466+/GDZsGIULF87Q9YMXLlygZcuWdO7cma5du/Lll18ybNgwqlSp4ihiLl++TKNGjdi/fz8DBgygTJkyzJ8/nz59+hATE8OgQYOc9jlr1iySkpJ4+umnOX/+PG+++SZdu3alcePGrFmzhmHDhrF//37ee+89hg4dytSpU68ZX1xcHFOmTKFHjx489thjXLx4kU8//ZQWLVqwZcuWNKezXVm8eDFAml7LrNSzZ08GDRpEfHw8gYGBJCcnM3/+fIYMGZLm+Et1++234+/vz/r163U5TU4wIi7ExMQYwHTo0OG627Vv394AJi4uzhhjzMiRIw1g2rdv77TdU089ZQDz66+/GmOMefvttw1gzpw5c819f/7558bDw8P8+OOPTu2TJ082gFm/fr2jDTAeHh7mjz/+cNr2+++/N4BZvHixU3vr1q1N2bJlM/1eO3bsMIB56qmnnLbr2bOnAczIkSOv+XmMMeajjz4ygPntt9+c2m+//XbTuHFjx3K1atVMmzZtrruv9KxevdoAZurUqebMmTPm+PHjZunSpaZ06dLGYrGYn3/+2Rjzz/epR48eTq8/dOiQ8fT0NK+++qpT+2+//Wa8vLwc7UlJSSYsLMxUr17dJCYmOrb7+OOPDWAaNmzoaDt48KABzLRp0xxtDRo0MEFBQebw4cNO72Oz2RzPJ0yYYABz8ODBbI8xPVar1VgsFvPss8+mWZeavzNnzpi1a9cawEycONGxPioqyun79+OPPxrAzJo1y2k/3333nVP7yZMnjZeXl+nYsaPTdqNGjTKA6d27t6PtypUrJiUlxWm7gwcPGl9fXzNmzBhH288//5wm/6l69+5toqKiHMtZ/fNyLb179zZAmkeJEiXMtm3bnLZNPaZXr17taGvYsKEBzGeffeZoS0xMNOHh4aZLly6OtkmTJhnAzJw509GWlJRk6tSpYwIDAx2/t1KP0aJFi5qYmBjHtsOHDzeAqVatmrFarY72Hj16GB8fH3PlyhWnmP59TCUnJzsdd8YYc+HCBVOsWDHz8MMPO7Vn5HdHjRo1TEhISJr2+Ph4c+bMGccjNjbWsS41d/Pnz7/uvgHTv39/c/78eePj42M+//xzY4wxS5cuNRaLxRw6dMjpmL9ahQoVTKtWra77HpI1dApVXLp48SIAQUFB190udX1cXJxTe//+/Z2Wn376aQC+/fZbAEcPyddff33Ni6jnz59P5cqVqVSpEmfPnnU8Uk8HXn0qomHDhtx+++1ObY0bN6ZIkSLMnTvX0XbhwgWWL19Ot27dMv1eqfEPHDjQ6X2eeeaZdD/D1Tp37oyXl5dTPL///ju7du1yiickJIQ//viDffv2ZWi/V3v44YcpWrQoERERtGnThkuXLjFjxgxq1arltN0TTzzhtLxgwQJsNhtdu3Z1ykN4eDjly5d35GHr1q2cPn2aJ554wqmnpk+fPhQsWPC6sZ05c4Z169bx8MMPU6pUKad1FovF5WfLiRjBforSGEOhQoWuu12DBg249957efPNN7l8+XK628yfP5+CBQvSrFkzp5hr1qxJYGCgI+aVK1eSnJzMU0895fT61J+ff/P19cXDw/7rPCUlhXPnzjkuRdi+fbvLz5eerP55uR4/Pz+WL1/O8uXL+f777/noo48IDAykdevW7N271+XrAwMDnXqjfHx8qF27ttNo62+//Zbw8HB69OjhaPP29mbgwIHEx8ezdu1ap33ef//9TsdGdHQ0YO/1+vdp3ejoaJKSkjh27Ng14/P09HQcdzabjfPnz5OcnEytWrVu6PsTFxeX7jVmL730EkWLFnU8evbsmel9pypUqBAtW7Zkzpw5AMyePZu6desSFRXl8nW34tRR7qBTqOJSamGWWshdy7UKvfLlyzstlytXDg8PD8c1TN26dWPKlCk8+uijvPDCCzRp0oTOnTtz3333Of4o7du3j927d6e5/i7V6dOnnZbLlCmTZhsvLy+6dOnC7NmzSUxMxNfXlwULFmC1Wp3+IGX0vQ4fPoyHh0eaa6IqVqyY7uuuVqRIEZo0acK8efMYO3YsYD996uXlRefOnR3bjRkzhg4dOlChQgXuvPNOWrZsyYMPPkjVqlUz9D6vvPIK9evXx9PTkyJFilC5cmWnP0Cprs7Zvn37MMak+f6lSj3Nd/jwYSDt9zl12pLrSf0De61ralzJiRj/zfzv1PL1jBo1ioYNGzJ58mQGDx6cbsyxsbGEhYWl+/p/H18At912m9P60NDQNIWkzWbjnXfe4YMPPuDgwYNOF69ffao8o7L65+V6PD09adq0qVNb69atKV++PMOHD0/3gvl/K1myZJqCv1ChQuzcudOxfPjwYcqXL+/4nZKqcuXKjvX/dvU/FKnF3NWn21Pbr75+8WozZszgrbfe4s8//8RqtTra0/td5UpQUBDnzp1L0/7UU085TjlnxenVnj178uCDD3LkyBEWLVqU7nWFVzPGZOifL7l5KuDEpYIFC1K8eHGnX4bp2blzJyVKlCA4OPi62139w+3v78+6detYvXo1S5cu5bvvvmPu3Lk0btyYH374AU9PT2w2G1WqVGHixInp7vPqX6rXuv6oe/fufPTRRyxbtoyOHTsyb948KlWqRLVq1RzbZPa9bkb37t3p27cvO3bsoHr16sybN48mTZo4rvMCe6/OgQMH+Prrr/nhhx+YMmUKb7/9NpMnT77mXE3/VqVKlTR/HNNzdc5sNhsWi4Vly5alO21GbhhlllMxhoaGYrFYXP6RBvv3q1GjRrz55ptpejVTY77eZMDXKoSu57XXXmPEiBE8/PDDjB07ltDQUDw8PHjmmWduamoQd/68lCxZkooVK7Ju3TqX26b3vYeMFdyZ3eeNvNfMmTPp06cPHTt25LnnniMsLAxPT0/Gjx/vuCY1MypVqsSOHTs4duwYJUqUcLRXqFCBChUqAGTJaN327dvj6+tL7969SUxMzNBEvRcuXLjmP1SStVTASYa0bduWTz75hJ9++slphGKqH3/8kUOHDtGvX7806/bt2+f0X+b+/fux2WxOs757eHjQpEkTmjRpwsSJE3nttdd46aWXWL16NU2bNqVcuXL8+uuvNGnS5Kb+u2vQoAHFixdn7ty53HPPPaxatcox2jFVRt8rKioKm83GgQMHnHrd9uzZk+F4OnbsSL9+/Rynqfbu3Zvu1B6pIwL79u1LfHw8DRo0YNSoURkq4G5UuXLlMMZQpkwZxx+F9KSeUtm3b5/jtBnYRzIePHjQ6Y/91VJ7v37//ffrxnKt70NOxAj23qhy5co5Ru66MmrUKBo1asRHH32UbswrVqygXr161x3okBrz/v37nX5+zp07l6aQ/PLLL7n33nv59NNPndpjYmKc/hnI7M9OVv683Ijk5GTi4+OzZF9RUVHs3LkTm83m1Av3559/OtZnly+//JKyZcuyYMECpxxdPYApo9q2bcsXX3zBrFmzeP7557MqzDT8/f3p2LEjM2fOpFWrVk7HUnqSk5M5evQo7du3z7aY5B+6Bk4y5LnnnsPf359+/fql6bo/f/48TzzxBAEBAY7pHv7t/fffd1p+7733AByjw64egg84RmWlTkPQtWtXjh07xieffJJm28uXL3Pp0qUMfQ4PDw/uu+8+Fi9ezOeff05ycrLT6aDMvFdq/O+++67TNpMmTcpQLGC/vq1FixbMmzePL774Ah8fHzp27Oi0zdX5DgwM5LbbbrupKRoyonPnznh6ejJ69Og0vQvGGEdctWrVomjRokyePJmkpCTHNtOnT3d554SiRYvSoEEDpk6dypEjR9K8R6rUOemu3l9OxJiqTp06bN26NUPbNmzYkEaNGvHGG2+kGbHXtWtXUlJSHKfN/y05OdkRT5MmTfDy8kozLUnq9DL/5unpmebzz58/P811WdfK47Vk5c9LZu3du5c9e/a4LK4zqnXr1pw8edLpmr7k5GTee+89AgMDadiwYZa8T3pSe+3+/T3avHkzGzduvKH9de3aldtvv52xY8eyadOmdLe5md7Hfxs6dCgjR45kxIgRLrfdtWsXV65cSXdks2Q99cBJhpQvX54ZM2bQq1cvqlSpkuZODGfPnmXOnDnpzpF18OBB2rdvT8uWLdm4caNj2o3UX8xjxoxh3bp1tGnThqioKE6fPs0HH3xAyZIlHb19Dz74IPPmzeOJJ55g9erV1KtXj5SUFP7880/mzZvH999/n+ai/Gvp1q0b7733HiNHjqRKlSqOa2BSZfS9qlevTo8ePfjggw+IjY2lbt26rFy5kv3792cqt926deOBBx7ggw8+oEWLFmnuNHD77bfTqFEjatasSWhoKFu3buXLL79kwIABmXqfzCpXrhzjxo1j+PDhHDp0iI4dOxIUFMTBgwdZuHAhjz/+OEOHDsXb25tx48bRr18/GjduTLdu3Th48CDTpk3L0PVl7777Lvfccw933XUXjz/+uOO4Wrp0qeOWTzVr1gTsF2l3794db29v2rVrl2MxAnTo0IHPP/+cvXv3Xre3L9XIkSO5995707Q3bNiQfv36MX78eHbs2EHz5s3x9vZm3759zJ8/n3feeYf77ruPYsWKMWjQIN566y3Hz8+vv/7KsmXLKFKkiFNPTtu2bRkzZgx9+/albt26/Pbbb8yaNSvNZytXrhwhISFMnjyZoKAgChQoQHR09HWvw8qqn5frSU5OZubMmYD9lOyhQ4eYPHkyNpvthnuprvb444/z0Ucf0adPH7Zt20bp0qX58ssvWb9+PZMmTXI5SOtmtG3blgULFtCpUyfatGnDwYMHmTx5MrfffvsN9TB6e3uzcOFCWrRowT333EPnzp2pX78+BQoU4NixY3zzzTccOXIk3SmNvvrqK0ev47/17t073dPd1apVy3ARvXz5cgICAm5oeiO5ATk+7lXytJ07d5oePXqY4sWLG29vbxMeHm569OiRZioMY/6ZXmHXrl3mvvvuM0FBQaZQoUJmwIAB5vLly47tVq5caTp06GAiIiKMj4+PiYiIMD169DB79+512l9SUpJ54403zB133GF8fX1NoUKFTM2aNc3o0aOdhsvzv2Hw12Kz2UxkZKQBzLhx49LdJqPvdfnyZTNw4EBTuHBhU6BAAdOuXTtz9OjRDE0FkCouLs74+/unmeIg1bhx40zt2rVNSEiI8ff3N5UqVTKvvvqqSUpKuu5+MzptwPWmBDDGmK+++srcc889pkCBAqZAgQKmUqVKpn///mbPnj1O233wwQemTJkyxtfX19SqVcusW7cuzXQK6U0jYowxv//+u+nUqZMJCQkxfn5+pmLFimbEiBFO24wdO9aUKFHCeHh4pJlSJCtjvJbExERTpEgRM3bs2AznL3WKi/Smgfn4449NzZo1jb+/vwkKCjJVqlQxzz//vDl+/Lhjm+TkZDNixAgTHh5u/P39TePGjc3u3btN4cKFzRNPPOHY7sqVK+bZZ581xYsXN/7+/qZevXpm48aN6X62r7/+2tx+++3Gy8vL6Xtx9TQiqbLy5yU96U0jEhwcbJo0aWJWrFjhtO21phG544470t3v1Z/n1KlTpm/fvqZIkSLGx8fHVKlSJc2xmHqMTpgwId33vvrnadq0aQZwTMuTGtO/826z2cxrr71moqKijK+vr6lRo4ZZsmRJujFm5ndHTEyMGTNmjKlRo4YJDAw0Pj4+JjIy0tx3331ppn9Jjf9aj9RpYFz9/jTm2sd8dHS0eeCBBzIUu9w8izFZ1M8qIpLPjR07lmnTprFv375rXsye3WJiYihUqBDjxo1Lcz2aiLvs2LGDu+66i+3bt2d6YmK5MboGTkQkgwYPHkx8fDxffPFFjrxfenPJpV5j+e9bNYm42+uvv859992n4i0HqQdORCSXmj59OtOnT6d169YEBgby008/MWfOHJo3b87333/v7vBExI00iEFEJJeqWrUqXl5evPnmm8TFxTkGNowbN87doYmIm6kHTkRERCSP0TVwIiIiInmMCjgRERGRPEbXwGGfOPL48eMEBQXpJrwiIiKSrYwxXLx4kYiICKdbu2WGCjjg+PHjWXqDchERERFXjh49SsmSJW/otSrgwHELlaNHjxIcHJzl+7darfzwww+OW+ZIWsqRa8qRa8qRa8qRa8qRa8qRa9fLUVxcHJGRkTd1Cze3FnDr1q1jwoQJbNu2jRMnTrBw4UKnG3lf63Tmm2++6bhpeunSpTl8+LDT+vHjx/PCCy9kOI7U9wkODs62Ai4gIIDg4GAd6NegHLmmHLmmHLmmHLmmHLmmHLmWkRzdzGVbbh3EcOnSJapVq8b777+f7voTJ044PaZOnYrFYqFLly5O240ZM8Zpu6effjonwhcRERFxC7f2wLVq1YpWrVpdc314eLjT8tdff829995L2bJlndqDgoLSbHs9iYmJJCYmOpbj4uIAe7VstVozvJ+MSt1nduw7v1COXFOOXFOOXFOOXFOOXFOOXLtejrIib7lmIl+LxZLmFOq/nTp1ipIlSzJjxgx69uzpaC9dujRXrlzBarVSqlQpevbsyeDBg/HyunZtOmrUKEaPHp2mffbs2QQEBNz0ZxERERG5loSEBHr27ElsbOwNX7qVZwYxzJgxg6CgIDp37uzUPnDgQO666y5CQ0PZsGEDw4cP58SJE0ycOPGa+xo+fDhDhgxxLKdeTNi8efNsuwZu+fLlNGvWTNcKXINy5Jpy5Jpy5Jpy5Jpy5Jpy5Nr1cpR65u9m5JkCburUqfTq1Qs/Pz+n9n8XYlWrVsXHx4d+/foxfvx4fH19092Xr69vuuu8vb2z9UDM7v3nB8qRa8qRa8qRa8qRa8qRa8qRa+nlKCtylifuxPDjjz+yZ88eHn30UZfbRkdHk5yczKFDh7I/MBERERE3yBMF3KeffkrNmjWpVq2ay2137NiBh4cHYWFhORCZiIiISM5z6ynU+Ph49u/f71g+ePAgO3bsIDQ0lFKlSgH288Tz58/nrbfeSvP6jRs3snnzZu69916CgoLYuHEjgwcP5oEHHqBQoUI59jlEREREcpJbC7itW7dy7733OpZTr2fr3bs306dPB+CLL77AGEOPHj3SvN7X15cvvviCUaNGkZiYSJkyZRg8eLDTdXEiIiIi+Y1bC7hGjRrhahaTxx9/nMcffzzddXfddRebNm3KjtBEREREcq08cQ2ciIiIiPxDBZyIiIhIHqMCTkRERCSPyTMT+YrcKmw2w97TF4lNsFIwwJsKYUF4eFjcHZaIiOQiKuBEcpFth88zY8Nh9p+OJyk5BR8vT24LC6R33SiqRgS5OzwREckldApVJJfYdvg8ry7dze/HYgn286JkoQCC/bz443gsry7dzY6jF9wdooiI5BIq4ERyAZvNMGPDYWISrJQuHEABXy88PSwU8PUiKjSA2MtW5mw+6u4wRUTyP5vN3RFkiAo4kVxg7+mL7D8dT1iQLxaL8/VuFouFooG+HDhzyU3RiYjcIk6fhgYNYNEid0fikgo4kVwgNsFKUnIKft6e6a738/YkKTklh6MSEbmF7NoF0dGwfj0MGABXrrg7outSASeSCxQM8MbHy5Mr1vSLtCtW+4AGERHJBsuXQ506cOgQlCsHK1eCn5+7o7ouFXAiuUCFsCBuCwvkTHximtvLGWM4E59IuaIF3BSdiEg+9vHH0KoVxMXBPffApk1QsaK7o3JJBZxILuDhYaF33SgK+ntz+HwClxKTSbEZLiUmc/h8AgX9vekRHenuMEVE8pfXX4d+/SAlBR54AFasgCJF3B1VhqiAE8klakaF8lKbytwRUZC4K8n8fSGBuCvJ3BlRkJfaVKZ6ZCF3hygikr+0aQPBwTBmDHz2Gfj6ujuiDNNEviK5SM2oUGpEFkr3TgxWq9Xd4YmI5H1WK3h7259XqQJ790KxYu6N6QaoB04kl/HwsFApPJjosoWpFB6s22iJiGSVHTugcmX46ad/2vJg8QYq4ERERORWsHixfZDCgQPw4otw1YCxvEYFnIiIiORfxsCkSdChA1y6BE2awDffgCVvn91QASciIiL5U3KyfVLewYPthdxjj8GyZRAS4u7IbpoGMYiIiEj+k5AAnTvD99/be9smTIAhQ/J8z1sqFXAiIiKS//j52XvaAgJg1izo2NHdEWUpFXAiIiKS/3h4wLRpsH+/fbqQfEbXwImIiEj+MG8e9O4NNpt92d8/XxZvoAJORERE8jpj4LXXoFs3+x0VZs50d0TZTqdQRUREJO9KSrLfz3T6dPvyM89Ar17ujChHqIATERGRvOn8eftI07Vr7de8vfcePPWUu6PKESrgREREJO/Zt89+M/p9+yAoyH79W8uW7o4qx6iAExERkbzn1Ck4fBhKlYIlS/LtYIVrUQEnIiIiec8998DChXDXXRAe7u5ocpxGoYqIiEjuZ7PBmDGwc+c/ba1b35LFG6iAExERkdzu8mXo2RNGjoR27SA+3t0RuZ1OoYqIiEjudeqU/TZYmzaBtzeMHg2Bge6Oyu1UwImIiEju9Mcf9pGmhw9DoUKwYAE0auTuqHIFnUIVERGR3OeHH6BuXXvxdttt9h44FW8OKuBEREQkdzEGJk2CuDioX99evFWo4O6ochUVcCIiIpK7WCwwZw689BIsXw6FC7s7olxHBZyIiIi4X3w8TJli730DKFgQxo0DX1/3xpVLaRCDiIiIuNexY/bpQX75BRISYOBAd0eU66mAExEREff55Rdo2xaOH4eiReHuu90dUZ6gU6giIiLiHt98Y78l1vHjcPvtsHkz1Knj7qjyBBVwIiIikrOMgbfftk/Qm5AAzZrB+vVQpoy7I8szVMCJiIhIzvrtNxg61F7I9esHS5dCSIi7o8pTdA2ciIiI5KyqVe09cMnJMHiwfdoQyRQVcCIiIpL9Dh60f009TaqRpjdFp1BFREQke23cCNHR9vuaxsS4O5p8QQWciIiIZJ+5c+Hee+HMGfDzg8uX3R1RvqACTkRERLKeMfDqq9C9OyQm2ifqXbcOihd3d2T5ggo4ERERyVqJidCnD7z8sn158GBYuBACA90aVn6iQQwiIiKStYYOhc8+A09PeO89ePJJd0eU76gHTkRERLLWiy/CnXfa53dT8ZYt1AMnIiIiN+/IEShVyv68eHHYscPeAyfZQj1wIiIicnOmT4fy5WHWrH/aVLxlK7cWcOvWraNdu3ZERERgsVhYtGiR0/o+ffpgsVicHi1btnTa5vz58/Tq1Yvg4GBCQkJ45JFHiI+Pz8FPISIicouy2eCll6BvX0hKgu+/d3dEtwy3FnCXLl2iWrVqvP/++9fcpmXLlpw4ccLxmDNnjtP6Xr168ccff7B8+XKWLFnCunXrePzxx7M7dBERkVuaR2Iinr16wWuv2RteftneEyc5wq3XwLVq1YpWrVpddxtfX1/Cw8PTXbd7926+++47fv75Z2rVqgXAe++9R+vWrfnPf/5DRERElscsIiJyyzt1inojRuCxdy94e8Mnn0Dv3u6O6paS6wcxrFmzhrCwMAoVKkTjxo0ZN24chQsXBmDjxo2EhIQ4ijeApk2b4uHhwebNm+nUqVO6+0xMTCQxMdGxHBcXB4DVasVqtWb5Z0jdZ3bsO79QjlxTjlxTjlxTjlxTjlyIi8OzXj1CjxzBhIaSMm8epkEDUL6cXO84yopjK1cXcC1btqRz586UKVOGAwcO8OKLL9KqVSs2btyIp6cnJ0+eJCwszOk1Xl5ehIaGcvLkyWvud/z48YwePTpN+w8//EBAQECWf45Uy5cvz7Z95xfKkWvKkWvKkWvKkWvK0bVVio6mRHIym15+mUvx8fDtt+4OKddK7zhKSEi46f3m6gKue/fujudVqlShatWqlCtXjjVr1tCkSZMb3u/w4cMZMmSIYzkuLo7IyEiaN29OcHDwTcWcHqvVyvLly2nWrBne3t5Zvv/8QDlyTTlyTTlyTTlyTTm6hitX7PcyBaxNmrD6m2+4t2NH5egarnccpZ75uxm5uoC7WtmyZSlSpAj79++nSZMmhIeHc/r0aadtkpOTOX/+/DWvmwP7dXW+vr5p2r29vbP1QMzu/ecHypFrypFrypFrypFrytH/pKTY76ywaROsWgX+/gAkFyigHGVAejnKipzlqXng/v77b86dO0fx/90It06dOsTExLBt2zbHNqtWrcJmsxEdHe2uMEVERPKH+Hjo2BEmTbIXcJomJNdwaw9cfHw8+/fvdywfPHiQHTt2EBoaSmhoKKNHj6ZLly6Eh4dz4MABnn/+eW677TZatGgBQOXKlWnZsiWPPfYYkydPxmq1MmDAALp3764RqCIiIjfj77+hXTv7HRV8fe33Nu3Y0d1Ryf+4tQdu69at1KhRgxo1agAwZMgQatSowSuvvIKnpyc7d+6kffv2VKhQgUceeYSaNWvy448/Op3+nDVrFpUqVaJJkya0bt2ae+65h48//thdH0lERCTv27YNoqPtxVtYGKxZA127ujsq+Re39sA1atQIY8w113+fga7a0NBQZs+enZVhiYiI3Lq+/x46d4aEBLjjDliyBEqXdndUcpU8dQ2ciIiIZLNy5ewDFZo3h/XrVbzlUnlqFKqIiIhkA2PAYrE/v+02e+FWrhx4qUzIrdQDJyIiciuLiYHWreG77/5pq1hRxVsup++OiIjIrergQWjTBnbvhl9/hb/+ckzWK7mbeuBERERuRRs22Eea7t4NJUrA0qUq3vIQFXAiIiK3mi++gMaN4cwZqFEDNm+2f5U8QwWciIjIrcIYGDcOevSAxETo0AF+/NHeAyd5igo4ERGRW8nhw/avzz4LX30FBQq4Nx65IRrEICIicquwWOCDD6BtW3vvm+RZ6oETERHJz/bsgSefhORk+7K3t4q3fEA9cCIiIvnV6tX222LFxECxYjBqlLsjkiyiHjgREZH8aNo0++2wYmLg//4PnnrK3RFJFlIBJyIikp/YbPDii/Dww/bTpt26wapVEBbm7sgkC6mAExERyS8uX7YXbOPH25dHjIDZs+03p5d8RdfAiYiI5BcHDsC339oHKkyZAg895O6IJJuogBMREckv7rwT5s6F4GBo0MDd0Ug2UgEnIiKSl333HYSE2AcqgH2ON8n3dA2ciIhIXvX++9CmjX1et6NH3R2N5CAVcCIiInlNSgo88wwMGGAfddq6tX2eN7ll6BSqiIhIXnLxov1m9EuX2pfHj4dhw+y3yZJbhgo4ERGRvOLoUWjXDn79Ffz84PPP4b773B2VuIEKOBERkbxi3Dh78VasGHzzDdSu7e6IxE1UwImIiOQVEyfaJ+sdOxaiotwdjbiRBjGIiIjkVsbYr3Uzxr5coAB89pmKN1EBJyIikitZrdCvn31et3Hj3B2N5DI6hSoiIpLbxMTYByesXGkfXRoc7O6IJJdRASciIpKb/PWXfXLeP/+0nzKdM8c+8lTkX1TAiYiI5BYbNtjvqnD2LJQsCYsXQ/Xq7o5KciEVcCIiIrnB+fPQsqV9ot6aNe3ThEREuDsqyaU0iEFERCQ3CA2Fd96BTp1g7VoVb3JdKuBERETcJTERDh36Z7lvX/jqK/u1byLXoQJORETEHc6ehaZNoXFjOH36n3bd01QyQAWciIhITvvzT4iOhp9+sl/7duCAuyOSPEYFnIiISE5atQrq1LFPF1KmDGzcaF8WyQQVcCIiIjll6lRo0cI+UW/durB5M1Su7O6oJA9SASciIpITPv0UHnkEkpOhRw/7XRaKFnV3VJJHqYATERHJCZ06QYUK8MorMGsW+Pm5OyLJwzSRr4iISHa5eBGCguzPQ0Nh+3ZNESJZQj1wIiIi2WHnTrjjDvjww3/aVLxJFlEBJyIiktW+/Rbq1YOjR+H99yEpyd0RST6jAk5ERCQr/fe/0K4dxMfDvffCjz+Cj4+7o5J8RgWciIhIVkhOhoED4emnwWazjzj97jsoVMjdkUk+pEEMIiIiN8tms48yXbLEvvzGG/Dcc7otlmQb9cCJiIjcLA8PqF8f/P3tN6N//nkVb5Kt1AMnIiJyo4z5p1B77jm47z4oW9a9McktQT1wIiIiN2LBAvtI04sX7csWi4o3yTEq4ERERDLDGHjzTejSxX4j+kmT3B2R3IJ0ClVERCSjkpLgqafs9zUFGDAAhg93b0xyS1IBJyIikhEXLth73Vavtg9amDTJPmWIiBuogBMREXHlr7+gdWvYswcCA+GLL6BNG3dHJbcwFXAiIiKu+PhAXByULGmf661aNXdHJLc4tw5iWLduHe3atSMiIgKLxcKiRYsc66xWK8OGDaNKlSoUKFCAiIgIHnroIY4fP+60j9KlS2OxWJwer7/+eg5/EhERyddKlrTfVWHLFhVvkiu4tYC7dOkS1apV4/3330+zLiEhge3btzNixAi2b9/OggUL2LNnD+3bt0+z7ZgxYzhx4oTj8bSuSRARkZthDB5jxsC8ef+0Va0KxYu7LyaRf3HrKdRWrVrRqlWrdNcVLFiQ5cuXO7X997//pXbt2hw5coRSpUo52oOCgggPD8/WWEVE5BZx5Qo1J07E88cfwc8P6tSByEh3RyXiJE9dAxcbG4vFYiEkJMSp/fXXX2fs2LGUKlWKnj17MnjwYLy8rv3REhMTSUxMdCzHxcUB9tO2Vqs1y+NO3Wd27Du/UI5cU45cU45cU45cOHMGjy5dKLlpE8bLi5RJkzDh4aB8OdFx5Nr1cpQVebMYY8xN7yULWCwWFi5cSMeOHdNdf+XKFerVq0elSpWYNWuWo33ixIncddddhIaGsmHDBoYPH07fvn2ZOHHiNd9r1KhRjB49Ok377NmzCQgIuOnPIiIieU/g0aP837hxFDh1CmtAAFuGDeOsrneTbJCQkEDPnj2JjY0lODj4hvaRJwo4q9VKly5d+Pvvv1mzZs11P+zUqVPp168f8fHx+Pr6prtNej1wkZGRnD179oYTeT1Wq5Xly5fTrFkzvL29s3z/+YFy5Jpy5Jpy5JpylD7LqlV4duuGJTYWW5kyrH72Wer07ascXYOOI9eul6O4uDiKFClyUwVcrj+FarVa6dq1K4cPH2bVqlUuP2h0dDTJyckcOnSIihUrpruNr69vusWdt7d3th6I2b3//EA5ck05ck05ck05usrKlRAbC/XqkTJ/PvFbtihHGaAcuZZejrIiZ7m6gEst3vbt28fq1aspXLiwy9fs2LEDDw8PwsLCciBCERHJF8aPhxIloF8/8PR0dzQiLrm1gIuPj2f//v2O5YMHD7Jjxw5CQ0MpXrw49913H9u3b2fJkiWkpKRw8uRJAEJDQ/Hx8WHjxo1s3ryZe++9l6CgIDZu3MjgwYN54IEHKFSokLs+loiI5HaXLtlvSP/ii+Dray/aBg2yr9OF+ZIHuLWA27p1K/fee69jeciQIQD07t2bUaNG8c033wBQvXp1p9etXr2aRo0a4evryxdffMGoUaNITEykTJkyDB482LEfERGRNI4fh/btYds2OHYMpkxxd0QimebWAq5Ro0ZcbwyFq/EVd911F5s2bcrqsEREJL/69Vdo2xb+/huKFIG+fd0dkcgNceudGERERHLM0qVQr569eKtUCTZtsi+L5EEq4EREJH8zBt59137a9NIlaNwYNmyAcuXcHZnIDVMBJyIi+dvp0zByJNhs8Oij9pvSa6Cb5HG5ehoRERGRm1asGHz1FWzfDs8+CxaLuyMSuWkq4EREJP85csT+uOce+3LjxvaHSD6hU6giIpK/bNkCtWvbR5vu3u3uaESyhQo4ERHJP778Eho2hFOnoFQpKFDA3RGJZAsVcCIikvcZA6+/DvffD1euQOvWsH69vYgTyYdUwImISN6WlASPPALDh9uXBw6Er7+GoCD3xiWSjTSIQURE8rZJk2DaNPDwgHfegQED3B2RSLZTASciInnboEHw44/w1FPQqpW7oxHJESrgREQk79m5E+64Azw9wdcXFi92d0QiOUrXwImISN7y+edQqxY8/7y7IxFxGxVwIiKSNxgDr7wCDz0EVqt9ot7kZHdHJeIWKuBERCT3u3IFevaEsWPtyy+8AHPngpeuBJJbk458ERHJ3U6fho4dYeNGe8H28cfQt6+7oxJxKxVwIiKSeyUnw733wq5dEBICCxbYl0VucTqFKiIiuZeXF4weDeXLw6ZNKt5E/kcFnIiI5D7nzv3z/L774LffoGJF98UjksuogBMRkdwjJQWGDoUqVeDo0X/afX3dF5NILqQCTkREcodLl6BLF3jrLThxAr7/3t0RieRaGsQgIiLud/w4tGsH27fbe9umTYMePdwdlUiupQJORETca8cOaNsWjh2DokVh0SKoW9fdUYnkairgRETEfTZuhGbN7KdPK1eGJUugbFl3RyWS66mAExER97nzTihXzt7z9uWX9rneRMQlFXAiIpKzUlLAwwMsFggKguXLoVAh8PZ2d2QieUamR6F+9913/PTTT47l999/n+rVq9OzZ08uXLiQpcGJiEg+Exdnv97tzTf/aQsLU/EmkkmZLuCee+454uLiAPjtt9949tlnad26NQcPHmTIkCFZHqCIiOQThw9DvXrw3Xf2m9KfOuXuiETyrEyfQj148CC33347AF999RVt27bltddeY/v27bRu3TrLAxQRkXxg82Zo395+Y/rixWHxYihWzN1RieRZme6B8/HxISEhAYAVK1bQvHlzAEJDQx09cyIiIg7z5kGjRvbirVo12LIFatZ0d1QieVqme+DuuecehgwZQr169diyZQtz584FYO/evZQsWTLLAxQRkTzsjTfghRfsz9u2hTlzIDDQvTGJ5AOZ7oH773//i5eXF19++SUffvghJUqUAGDZsmW0bNkyywMUEZE8LHVakGeesU/Qq+JNJEtkugeuVKlSLFmyJE3722+/nSUBiYhIPtKvn32ut3r13B2JSL6S6R64uLi4dB8XL14kKSkpO2IUEZG8Yv9++6nSc+f+aVPxJpLlMl3AhYSEUKhQoTSPkJAQ/P39iYqKYuTIkdhstuyIV0REcqt16yA6GpYuhUGD3B2NSL6W6VOo06dP56WXXqJPnz7Url0bgC1btjBjxgxefvllzpw5w3/+8x98fX158cUXszxgERHJhT77DB59FKxWqF0b/vMfd0ckkq9luoCbMWMGb731Fl27dnW0tWvXjipVqvDRRx+xcuVKSpUqxauvvqoCTkQkv7PZ4JVX4NVX7cv33w8zZoC/v3vjEsnnMn0KdcOGDdSoUSNNe40aNdi4cSNgn2rkyJEjNx+diIjkXpcvQ8+e/xRvL74IX3yh4k0kB2S6gIuMjOTTTz9N0/7pp58SGRkJwLlz5yhUqNDNRyciIrnXpUv2SXm9vWHaNHsh55HpPysicgMyfQr1P//5D/fffz/Lli3j7rvvBmDr1q38+eeffPnllwD8/PPPdOvWLWsjFRGR3KVIEfuAhVOn7HdaEJEck+kCrn379vz555989NFH7N27F4BWrVqxaNEiSpcuDcCTTz6ZpUGKiEgu8cMPcPIkPPSQfblyZftDRHJUpgs4gDJlyvD6669ndSwiIpKbffQR9O8PFgtUrGifMkRE3OKGCriYmBi2bNnC6dOn08z39lDqf2UiIpI/pKTA88/DxIn25YcegurV3RqSyK0u0wXc4sWL6dWrF/Hx8QQHB2OxWBzrLBaLCjgRkfwkPh569YJvvrEvjxtnH236r9/9IpLzMj1c6Nlnn+Xhhx8mPj6emJgYLly44HicP38+O2IUERF3OHYMGjSwF2++vvYpQl56ScWbSC6Q6R64Y8eOMXDgQAICArIjHhERyS3mzYNffoGiReHrr6FOHXdHJCL/k+kCrkWLFmzdupWyZctmRzwiIpJbPPMMXLgAfftCmTLujkZE/iXTBVybNm147rnn2LVrF1WqVMHb29tpffv27bMsOBERyUHGwOefQ5cuUKCA/VTpmDHujkpE0pHpAu6xxx4DYEw6P9QWi4WUlJSbj0pERHKW1QoDB8LkybBggf2huyqI5FqZLuCunjZERETyuNhY6NrVPkmvxQING2qggkgud0PzwImISD5x6BC0aQO7dkFAAMyZA7oURiTXy1AB9+677/L444/j5+fHu+++e91tBw4cmOE3X7duHRMmTGDbtm2cOHGChQsX0rFjR8d6YwwjR47kk08+ISYmhnr16vHhhx9Svnx5xzbnz5/n6aefZvHixXh4eNClSxfeeecdAgMDMxyHiMgtadMm6NABTp+GiAhYvBjuusvdUYlIBmSogHv77bfp1asXfn5+vP3229fczmKxZKqAu3TpEtWqVePhhx+mc+fOada/+eabvPvuu8yYMYMyZcowYsQIWrRowa5du/Dz8wOgV69enDhxguXLl2O1Wunbty+PP/44s2fPznAcIiK3nKQk6N7dXrzVqGEv3kqUcHdUIpJBGSrgDh48mO7zm9WqVStatWqV7jpjDJMmTeLll1+mQ4cOAHz22WcUK1aMRYsW0b17d3bv3s13333Hzz//TK1atQB47733aN26Nf/5z3+IiIjIslhFRPIVHx/7PG8TJ8KUKaCzFiJ5Sq69Bu7gwYOcPHmSpk2bOtoKFixIdHQ0GzdupHv37mzcuJGQkBBH8QbQtGlTPDw82Lx5M506dUp334mJiSQmJjqW4+LiALBarVit1iz/LKn7zI595xfKkWvKkWvKkQuJiaT88gvwvxzVqGGfNsTe4MbAchcdR64pR65dL0dZkbcMFXBDhgzJ8A4npt7s+CadPHkSgGLFijm1FytWzLHu5MmThIWFOa338vIiNDTUsU16xo8fz+jRo9O0//DDD9l6h4nly5dn277zC+XINeXINeUoLe+4OGq/8QYh+/dT8LXXUIZc03HkmnLkWno5SkhIuOn9ZqiA++V//7Gl2r59O8nJyVSsWBGAvXv34unpSc2aNW86oJwwfPhwp6I0Li6OyMhImjdvTnBwcJa/n9VqZfny5TRr1izNxMdipxy5phy5phxdw969eHXsiGX/fkxwMD7x8crRdeg4ck05cu16OUo983czMlTArV692vF84sSJBAUFMWPGDAoVKgTAhQsX6Nu3L/Xr17/pgFKFh4cDcOrUKYoXL+5oP3XqFNWrV3dsc/r0aafXJScnc/78ecfr0+Pr64uvr2+adm9v72w9ELN7//mBcuSacuSacvQva9ZA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7, 6))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.7)\n", + "\n", + "# perfect fit line\n", + "max_val = max(observed.max(), predicted.max())\n", + "plt.plot([0, max_val], [0, max_val], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted (Negative Binomial GLM)\")\n", + "plt.grid(True)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying stop level data for City of Burbank " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "75df8b20-dee7-420d-9231-229db9d53915", + "metadata": {}, + "outputs": [], + "source": [ + "# Burbank, Metrolink, LA Metro Bus and LA metro rail\n", + "feed_keys = [\"cc6a68a39d22c29b49116584971e69a8\", \"0f80473907c7613e9fefbb71220e9e56\", \"8d9623a1823a27925b7e2f00e44fc5bb\", \"f1ba526e631625c1d6816d055265ed65\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals, arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening, route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2025-05-24')\n", + " AND feed_key IN ({feed_keys_str})\n", + " \"\"\"\n", + " df_agency = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "98205773-013c-45d4-a8bc-302d8a33e97f", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"burbank_orange_new_stops.csv\")\n", + "df[\"stop_dir_key\"] = df[\"stop_name\"] + \" \" + df[\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b3165da9-4c91-44f2-bad2-941995d22b73", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"Hollywood & Jeffries eastbound\": (34.18141305368438, -118.34903738211447),\n", + "\"Hollywood & Victory Bl eastbound\": (34.18508535157502, -118.34929119735641),\n", + "\"Hollywood & Pacific eastbound\": (34.18825119276962, -118.34886491064228),\n", + "\"Hollywood & Valhalla eastbound\": (34.19012427165374, -118.34916328937923),\n", + "\"Hollywood & Thorton eastbound\": (34.19656151035557, -118.34876716762236),\n", + "\"Hollywood & Thorton westbound\": (34.195980179882646, -118.34894014653726),\n", + "\"New BUR terminal eastbound\": (34.19359656711031, -118.35357055101639),\n", + "\"New BUR terminal westbound\": (34.19359656711031, -118.35357055101639),\n", + "\"Winona / Ontario eastbound\": (34.199490557715684, -118.3443711434909),\n", + "\"Winona / Ontario westbound\": (34.1992091874645, -118.34484346690523),\n", + "\"Ontario & Thorton eastbound\": (34.19593202043652, -118.34444331137956),\n", + "\"Ontario & Thorton westbound\": (34.19541510602419, -118.34460558501739),\n", + "\"Empire & Ontario eastbound\": (34.192108542580186, -118.3443394102755),\n", + "\"Empire & Buena Vista eastbound\": (34.19195822628478, -118.33787457476522),\n", + "\"Empire & Valpreda eastbound\": (34.19194945024493, -118.33285175184913),\n", + "\"Empire & Valpreda westbound\": (34.19179144771815, -118.33244032844016),\n", + "\"Empire & Grismer eastbound\": (34.19175476406717, -118.32509312643347),\n", + "\"Empire & Grismer westbound\": (34.19154206721876, -118.3254365921081),\n", + "\"Amherst Dr / San Fernando eastbound\": (34.19012800601128, -118.32086710181368),\n", + "\"Amherst Dr / San Fernando westbound\": (34.189934438443714, -118.32176619076398),\n", + "\"Glenoaks & Bethany eastbound\": (34.191647095345786, -118.31754103475315),\n", + "\"Glenoaks & Bethany westbound\": (34.19168659607283, -118.3180498038794),\n", + "\"Glenoaks & Fairmount eastbound\": (34.18922976877985, -118.31426181767534),\n", + "\"Glenoaks & Fairmount westbound\": (34.18869054389077, -118.3139580922512),\n", + "\"Glenoaks & Cypress eastbound\": (34.18708018484801, -118.31127153444093),\n", + "\"Glenoaks & Cypress westbound\": (34.18677382226348, -118.31135025143384),\n", + "\"Glenoaks & Magnolia eastbound\": (34.18566039664216, -118.30935620418528),\n", + "\"Glenoaks & Magnolia westbound\": (34.1853950731641, -118.3094180753144),\n", + "\"Glenoaks & Olive eastbound\": (34.18338784687265, -118.30666291160377),\n", + "\"Glenoaks & Olive westbound\": (34.183750381812565, -118.30682928383196),\n", + "\"Glenoaks & Verdugo eastbound\": (34.1810536128531, -118.30348086446116),\n", + "\"Glenoaks & Verdugo westbound\": (34.18130060913145, -118.30290962506388),\n", + "\"Glenoaks & Providencia eastbound\": (34.17964641863243, -118.30103491619572),\n", + "\"Glenoaks & Providencia westbound\": (34.17927416886304, -118.30121771535951),\n", + "\"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + "\"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + "\"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + "\"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + "\"Flower & Alameda eastbound\": (34.17106795233713, -118.30268518471172),\n", + "\"Flower & Alameda westbound\": (34.17166407022795, -118.3032739880033)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", + "metadata": {}, + "outputs": [], + "source": [ + "df_blue = pd.read_csv(\"burbank_blue_new_stops.csv\")\n", + "df_blue[\"stop_dir_key\"] = df_blue [\"stop_name\"] + \" \" + df_blue [\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "6210a31b-85be-44a6-8cce-9569778e094d", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords_blue = {\n", + " \"Metrolink Station eastside terminal at Front St eastbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Metrolink Station eastside terminal at Front St westbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Verdugo & Ikea Way eastbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & Ikea Way westbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & San Fernando eastbound\": (34.17878489736103, -118.30541531103879),\n", + " \"Verdugo & San Fernando westbound\": (34.17851879621711, -118.30606420445262),\n", + " \"Glenoaks & Providencia eastbound\": (34.17962336385441, -118.30104441612727),\n", + " \"Glenoaks & Providencia westbound\": (34.17927459077334, -118.30121849159424),\n", + " \"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + " \"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + " \"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + " \"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + " \"Alameda & Lake eastbound\": (34.16893683695737, -118.30550179211235),\n", + " \"Alameda & Lake westbound\": (34.169039897393205, -118.30583857000296),\n", + " \"Alameda & Victory eastbound\": (34.166763977999786, -118.30764556757374),\n", + " \"Alameda & Victory westbound\": (34.16653844596177, -118.30776671277157),\n", + " \"Alameda & Main eastbound\": (34.05882507328523, -118.2372783904341),\n", + " \"Alameda & Main westbound\": (34.05926978274522, -118.23693452367304),\n", + " \"Alameda & Mariposa eastbound\": (34.16232050313561, -118.3156158302872),\n", + " \"Alameda & Mariposa westbound\": (34.16231163244352, -118.3163406121734),\n", + " \"Alameda & Reese eastbound\": (34.160989586571944, -118.31959642185599),\n", + " \"Alameda & Reese westbound\": (34.16116470453852, -118.32011647018618),\n", + " \"Alameda & Keystone eastbound\": (34.15960879667507, -118.32369063587736),\n", + " \"Alameda & Keystone westbound\": (34.159809285768965, -118.32415899113134),\n", + " \"Alameda / Buena Vista eastbound\": (34.15830550275982, -118.32847444534262),\n", + " \"Alameda / Buena Vista westbound\": (34.158061055695796, -118.32827576408872),\n", + " \"Buena Vista & Olive eastbound\": (34.16071171372398, -118.32948693260309),\n", + " \"Buena Vista & Olive westbound\": (34.16108254215271, -118.32933331481632),\n", + " \"Buena Vista & Verdugo eastbound\": (34.16511269756838, -118.33111018379287),\n", + " \"Buena Vista & Verdugo westbound\": (34.165299805818485, -118.33167323237512),\n", + " \"Buena Vista & Clark eastbound\": (34.168565005129715, -118.33283674907685),\n", + " \"Buena Vista & Clark westbound\": (34.16866971383002, -118.33328130798998),\n", + " \"Buena Vista & Magnolia eastbound\": (34.17195186709472, -118.33452224880612),\n", + " \"Buena Vista & Magnolia westbound\": (34.17211056589883, -118.33495282578686),\n", + " \"Buena Vista & Chandler eastbound\": (34.175468005263646, -118.33584132009098),\n", + " \"Buena Vista & Chandler westbound\": (34.17564123355154, -118.33666600223994),\n", + " \"Buena Vista & Burbank eastbound\": (34.178999088200214, -118.33829343490339),\n", + " \"Buena Vista & Burbank westbound\": (34.17876464082475, -118.33765850526345),\n", + " \"Buena Vista & Jeffries eastbound\": (34.18121005878122, -118.33854591221447),\n", + " \"Buena Vista & Jeffries westbound\": (34.180900571549294, -118.33814871081255),\n", + " \"Buena Vista & Victory eastbound\": (34.18449938252548, -118.3380410337855),\n", + " \"Buena Vista & Victory westbound\": (34.18466457669643, -118.33870399111125),\n", + " \"Buena Vista & Pacific eastbound\": (34.188461988919315, -118.33840245172041),\n", + " \"Buena Vista & Pacific westbound\": (34.18806979207031, -118.33819315186547),\n", + " \"Buena Vista & Empire eastbound\": (34.19198270314381, -118.33837161247952),\n", + " \"Buena Vista & Empire westbound\": (34.19177371161881, -118.3376321369762),\n", + " \"Buena Vista & Thorton eastbound\": (34.19573279798583, -118.33806248639054),\n", + " \"Buena Vista & Thorton westbound\": (34.19545983217905, -118.33766900330374),\n", + " \"Buena Vista & Winona eastbound\": (34.19971384309687, -118.33802251372927),\n", + " \"Buena Vista & Winona westbound\": (34.19955262101271, -118.33759639149243),\n", + " \"Buena Vista & Tulare eastbound\": (34.20288213768749, -118.33803238893368),\n", + " \"Buena Vista & Tulare westbound\": (34.202779515064044, -118.33757227833074),\n", + " \"Glenoaks / Buena Vista eastbound\": (34.205108109416635, -118.33787452049432),\n", + " \"Glenoaks / Buena Vista westbound\": (34.20469583946896, -118.33746105567633),\n", + " \"Glenoaks / Cohasset eastbound\": (34.206545468267606, -118.34143554899393),\n", + " \"Glenoaks / Cohasset westbound\": (34.2067229265355, -118.34135508272895),\n", + " \"Cohasset & Bloomington eastbound\": (34.2065471711793, -118.34523843199325),\n", + " \"Cohasset & Bloomington westbound\": (34.206793697966674, -118.34551974845968),\n", + " \"N San Fernando / Lima / Avon eastbound\": (34.19149816424647, -118.34706760310583),\n", + " \"N San Fernando / Lima / Avon westbound\": (34.192392404649915, -118.3479249843664)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", + "metadata": {}, + "outputs": [], + "source": [ + "def apply_manual_coords(df, manual_coords):\n", + " # filter rows\n", + " df = df[(df['change_type'] != 'no_change') & \n", + " (df['change_type'] != 'relocating')].copy()\n", + " \n", + " latitudes, longitudes, geoms = [], [], []\n", + "\n", + " for key in df[\"stop_dir_key\"]:\n", + " coords = manual_coords.get(key)\n", + "\n", + " if coords:\n", + " lat, lon = coords\n", + " latitudes.append(lat)\n", + " longitudes.append(lon)\n", + " geoms.append(Point(lon, lat))\n", + " else:\n", + " latitudes.append(None)\n", + " longitudes.append(None)\n", + " geoms.append(None)\n", + "\n", + " df[\"latitude\"] = latitudes\n", + " df[\"longitude\"] = longitudes\n", + " df[\"pt_geom\"] = geoms\n", + "\n", + " df[\"stop_id\"] = [\"new_\" + str(i + 1) for i in range(len(df))]\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
6Hollywood & Jeffrieseastboundadding_existingHollywood & Jeffries eastbound34.181413-118.349037POINT (-118.34903738211447 34.18141305368438)new_1
8Hollywood & Victory Bleastboundadding_existingHollywood & Victory Bl eastbound34.185085-118.349291POINT (-118.34929119735641 34.18508535157502)new_2
10Hollywood & Pacificeastboundadding_existingHollywood & Pacific eastbound34.188251-118.348865POINT (-118.34886491064228 34.18825119276962)new_3
12Hollywood & Valhallaeastboundadding_existingHollywood & Valhalla eastbound34.190124-118.349163POINT (-118.34916328937923 34.19012427165374)new_4
14Hollywood & Thortoneastboundadding_existingHollywood & Thorton eastbound34.196562-118.348767POINT (-118.34876716762236 34.19656151035557)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "6 Hollywood & Jeffries eastbound adding_existing \n", + "8 Hollywood & Victory Bl eastbound adding_existing \n", + "10 Hollywood & Pacific eastbound adding_existing \n", + "12 Hollywood & Valhalla eastbound adding_existing \n", + "14 Hollywood & Thorton eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "6 Hollywood & Jeffries eastbound 34.181413 -118.349037 \n", + "8 Hollywood & Victory Bl eastbound 34.185085 -118.349291 \n", + "10 Hollywood & Pacific eastbound 34.188251 -118.348865 \n", + "12 Hollywood & Valhalla eastbound 34.190124 -118.349163 \n", + "14 Hollywood & Thorton eastbound 34.196562 -118.348767 \n", + "\n", + " pt_geom stop_id \n", + "6 POINT (-118.34903738211447 34.18141305368438) new_1 \n", + "8 POINT (-118.34929119735641 34.18508535157502) new_2 \n", + "10 POINT (-118.34886491064228 34.18825119276962) new_3 \n", + "12 POINT (-118.34916328937923 34.19012427165374) new_4 \n", + "14 POINT (-118.34876716762236 34.19656151035557) new_5 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = apply_manual_coords(df, manual_coords)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
2Verdugo & San Fernandoeastboundadding_existingVerdugo & San Fernando eastbound34.178785-118.305415POINT (-118.30541531103879 34.17878489736103)new_1
3Glenoaks & Providenciaeastboundadding_existingGlenoaks & Providencia eastbound34.179623-118.301044POINT (-118.30104441612727 34.17962336385441)new_2
4Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (-118.29787237592716 34.1769213295822)new_3
5Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (-118.29952381900989 34.174365721132396)new_4
6Alameda & Lakeeastboundadding_existingAlameda & Lake eastbound34.168937-118.305502POINT (-118.30550179211235 34.16893683695737)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "2 Verdugo & San Fernando eastbound adding_existing \n", + "3 Glenoaks & Providencia eastbound adding_existing \n", + "4 Glenoaks / Alameda eastbound adding_existing \n", + "5 Alameda & San Fernando eastbound adding_existing \n", + "6 Alameda & Lake eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "2 Verdugo & San Fernando eastbound 34.178785 -118.305415 \n", + "3 Glenoaks & Providencia eastbound 34.179623 -118.301044 \n", + "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "5 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "6 Alameda & Lake eastbound 34.168937 -118.305502 \n", + "\n", + " pt_geom stop_id \n", + "2 POINT (-118.30541531103879 34.17878489736103) new_1 \n", + "3 POINT (-118.30104441612727 34.17962336385441) new_2 \n", + "4 POINT (-118.29787237592716 34.1769213295822) new_3 \n", + "5 POINT (-118.29952381900989 34.174365721132396) new_4 \n", + "6 POINT (-118.30550179211235 34.16893683695737) new_5 " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_blue = apply_manual_coords(df_blue, manual_coords_blue)\n", + "df_blue.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "d3b5d469-48b5-49df-ae91-315466705ddb", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_orange = gpd.GeoDataFrame(df, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "gdf_blue = gpd.GeoDataFrame(df_blue, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_orange = gdf_orange.to_crs(epsg=32611)\n", + "gdf_blue = gdf_blue.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_orange['buffer'] = gdf_orange.geometry.buffer(buffer_distance)\n", + "gdf_blue['buffer'] = gdf_blue.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_orange.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange = gpd.overlay(acs_gdf, gdf_orange.set_geometry('buffer'), how='intersection')\n", + "geometry_intersect_blue = gpd.overlay(acs_gdf, gdf_blue.set_geometry('buffer'), how='intersection')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "174076a2-a975-41d8-88d3-ca874351d57a", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange['area_2'] = geometry_intersect_orange.geometry.area # area of overlap\n", + "geometry_intersect_orange['area_ratio'] = geometry_intersect_orange['area_2'] / geometry_intersect_orange['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_orange[f'{col}_adj'] = geometry_intersect_orange[col] * geometry_intersect_orange['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_blue['area_2'] = geometry_intersect_blue.geometry.area # area of overlap\n", + "geometry_intersect_blue['area_ratio'] = geometry_intersect_blue['area_2'] / geometry_intersect_blue['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_blue[f'{col}_adj'] = geometry_intersect_blue[col] * geometry_intersect_blue['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "bbf7b71a-c05a-4651-955b-484947ced81c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFPCOUNTYFPTRACTCEGEOIDFQGEOIDNAMENAMELSADSTUSPSNAMELSADCOSTATE_NAMELSADALANDAWATERtotal_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carspublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowinc_total_lowincomemale_seniorsfemale_seniorsmale_youthfemale_youthtotal_seniorstotal_youthdisabled_poparea_m2stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idgeometryarea_2area_ratiototal_pop_adjworkers_with_no_car_adjtotal_youth_adjtotal_seniors_adjpublic_asst_pop_adjinc_total_lowincome_adj
0060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Providenciawestboundadding_existingGlenoaks & Providencia westbound34.179274-118.301218POINT (380084.556 3782798.877)new_34POLYGON ((380440.877 3782607.168, 380421.029 3...380.6471400.0005634.2214920.0974020.6052420.6029900.4937652.403514
1060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (380389.550 3782534.037)new_35POLYGON ((380620.646 3782807.227, 380769.228 3...122709.6295840.1815001360.88684331.399496195.112477194.386478159.175482774.823411
2060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks / Alamedawestboundadding_existingGlenoaks / Alameda westbound34.176369-118.297764POINT (380398.772 3782472.656)new_36POLYGON ((380620.646 3782807.227, 380721.787 3...129254.1676510.1911801433.46774633.074142205.518515204.753795167.664872816.147480
3060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (380233.733 3782252.579)new_37POLYGON ((380436.486 3782602.281, 380458.557 3...20057.0765570.029666222.4390355.13229631.89143331.77276726.017476126.646071
4060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Alameda & San Fernandowestboundadding_existingAlameda & San Fernando westbound34.174307-118.300256POINT (380166.186 3782246.963)new_38POLYGON ((380408.138 3782570.733, 380422.907 3...3957.5911140.00585443.8908801.0126866.2927046.2692905.13367624.989353
\n", + "
" + ], + "text/plain": [ + " STATEFP COUNTYFP TRACTCE GEOIDFQ GEOID NAME \\\n", + "0 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "1 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "2 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "3 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "4 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "\n", + " NAMELSAD STUSPS NAMELSADCO STATE_NAME LSAD ALAND \\\n", + "0 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "1 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "2 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "3 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "4 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "\n", + " AWATER total_pop poverty_pop non_us_citizen male_65_to_66 \\\n", + "0 0 7498 1296 1753 55 \n", + "1 0 7498 1296 1753 55 \n", + "2 0 7498 1296 1753 55 \n", + "3 0 7498 1296 1753 55 \n", + "4 0 7498 1296 1753 55 \n", + "\n", + " male_67_to_69 male_70_to_74 male_75_to_79 male_80_to_84 \\\n", + "0 48 81 133 49 \n", + "1 48 81 133 49 \n", + "2 48 81 133 49 \n", + "3 48 81 133 49 \n", + "4 48 81 133 49 \n", + "\n", + " male_85_and_over female_65_to_66 female_67_to_69 female_70_to_74 \\\n", + "0 67 131 160 156 \n", + "1 67 131 160 156 \n", + "2 67 131 160 156 \n", + "3 67 131 160 156 \n", + "4 67 131 160 156 \n", + "\n", + " female_75_to_79 female_80_to_84 female_85_and_over male_15_17 \\\n", + "0 0 80 111 59 \n", + "1 0 80 111 59 \n", + "2 0 80 111 59 \n", + "3 0 80 111 59 \n", + "4 0 80 111 59 \n", + "\n", + " male_18_19 male_20 male_21 male_22_24 female_15_17 female_18_19 \\\n", + "0 153 26 86 307 53 82 \n", + "1 153 26 86 307 53 82 \n", + "2 153 26 86 307 53 82 \n", + "3 153 26 86 307 53 82 \n", + "4 153 26 86 307 53 82 \n", + "\n", + " female_20 female_21 female_22_24 median_household_income \\\n", + "0 0 119 190 80459 \n", + "1 0 119 190 80459 \n", + "2 0 119 190 80459 \n", + "3 0 119 190 80459 \n", + "4 0 119 190 80459 \n", + "\n", + " income_less_10000 income_10000_14999 income_15000_24999 \\\n", + "0 997 835 554 \n", + "1 997 835 554 \n", + "2 997 835 554 \n", + "3 997 835 554 \n", + "4 997 835 554 \n", + "\n", + " income_25000_34999 income_35000_49999 income_50000_64999 \\\n", + "0 626 532 465 \n", + "1 626 532 465 \n", + "2 626 532 465 \n", + "3 626 532 465 \n", + "4 626 532 465 \n", + "\n", + " income_65000_74999 workers_with_no_car households_with_no_cars \\\n", + "0 260 173 262 \n", + "1 260 173 262 \n", + "2 260 173 262 \n", + "3 260 173 262 \n", + "4 260 173 262 \n", + "\n", + " public_asst_pop veteran_pop county_name inc_extremelylow inc_verylow \\\n", + "0 877 51 Los Angeles 2386 1158 \n", + "1 877 51 Los Angeles 2386 1158 \n", + "2 877 51 Los Angeles 2386 1158 \n", + "3 877 51 Los Angeles 2386 1158 \n", + "4 877 51 Los Angeles 2386 1158 \n", + "\n", + " inc_low inc_total_lowincome male_seniors female_seniors male_youth \\\n", + "0 725 4269 433 638 631 \n", + "1 725 4269 433 638 631 \n", + "2 725 4269 433 638 631 \n", + "3 725 4269 433 638 631 \n", + "4 725 4269 433 638 631 \n", + "\n", + " female_youth total_seniors total_youth disabled_pop area_m2 \\\n", + "0 444 1071 1075 1197 676086.191403 \n", + "1 444 1071 1075 1197 676086.191403 \n", + "2 444 1071 1075 1197 676086.191403 \n", + "3 444 1071 1075 1197 676086.191403 \n", + "4 444 1071 1075 1197 676086.191403 \n", + "\n", + " stop_name direction change_type \\\n", + "0 Glenoaks & Providencia westbound adding_existing \n", + "1 Glenoaks / Alameda eastbound adding_existing \n", + "2 Glenoaks / Alameda westbound adding_existing \n", + "3 Alameda & San Fernando eastbound adding_existing \n", + "4 Alameda & San Fernando westbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "0 Glenoaks & Providencia westbound 34.179274 -118.301218 \n", + "1 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "2 Glenoaks / Alameda westbound 34.176369 -118.297764 \n", + "3 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "4 Alameda & San Fernando westbound 34.174307 -118.300256 \n", + "\n", + " pt_geom stop_id \\\n", + "0 POINT (380084.556 3782798.877) new_34 \n", + "1 POINT (380389.550 3782534.037) new_35 \n", + "2 POINT (380398.772 3782472.656) new_36 \n", + "3 POINT (380233.733 3782252.579) new_37 \n", + "4 POINT (380166.186 3782246.963) new_38 \n", + "\n", + " geometry area_2 \\\n", + "0 POLYGON ((380440.877 3782607.168, 380421.029 3... 380.647140 \n", + "1 POLYGON ((380620.646 3782807.227, 380769.228 3... 122709.629584 \n", + "2 POLYGON ((380620.646 3782807.227, 380721.787 3... 129254.167651 \n", + "3 POLYGON ((380436.486 3782602.281, 380458.557 3... 20057.076557 \n", + "4 POLYGON ((380408.138 3782570.733, 380422.907 3... 3957.591114 \n", + "\n", + " area_ratio total_pop_adj workers_with_no_car_adj total_youth_adj \\\n", + "0 0.000563 4.221492 0.097402 0.605242 \n", + "1 0.181500 1360.886843 31.399496 195.112477 \n", + "2 0.191180 1433.467746 33.074142 205.518515 \n", + "3 0.029666 222.439035 5.132296 31.891433 \n", + "4 0.005854 43.890880 1.012686 6.292704 \n", + "\n", + " total_seniors_adj public_asst_pop_adj inc_total_lowincome_adj \n", + "0 0.602990 0.493765 2.403514 \n", + "1 194.386478 159.175482 774.823411 \n", + "2 204.753795 167.664872 816.147480 \n", + "3 31.772767 26.017476 126.646071 \n", + "4 6.269290 5.133676 24.989353 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geometry_intersect_orange.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", + "metadata": {}, + "outputs": [], + "source": [ + "agg_orange = geometry_intersect_orange.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_orange = gdf_orange.merge(\n", + " agg_orange,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "36e31d14-b88f-4b54-849a-615f5755f369", + "metadata": {}, + "outputs": [], + "source": [ + "agg_blue = geometry_intersect_blue.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_blue = gdf_blue.merge(\n", + " agg_blue,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", + "metadata": {}, + "outputs": [], + "source": [ + "# add missing columns with placeholder values for now\n", + "gdf_orange['n_arrivals'] = np.nan\n", + "gdf_orange['n_routes'] = np.nan\n", + "gdf_blue['n_arrivals'] = np.nan\n", + "gdf_blue['n_routes'] = np.nan" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
00f80473907c7613e9fefbb71220e9e561902025-05-03 03:00:42.971504+00:00193294105175175140[San Bernardino Line][2]7ddccf40a82263aa2ef6b2be349e5bf0NonePOINT(-117.184517 34.059074)Redlands - DowntownNoneNoneNone
10f80473907c7613e9fefbb71220e9e561282025-05-03 03:00:42.971504+00:0068488312914248[Orange County Line][2]333a6c1a58ddca4f1c950338e388c951NonePOINT(-117.877998 33.802582)AnaheimNoneNoneNone
20f80473907c7613e9fefbb71220e9e561652025-05-03 03:00:42.971504+00:0012128394140164107[Antelope Valley Line][2]f81c86eb4fd41b94c8428320ae02c385NonePOINT(-118.118301 34.49786)Vincent Grade / ActonNoneNoneNone
30f80473907c7613e9fefbb71220e9e561482025-05-03 03:00:42.971504+00:005812014014421446[91 Line, Inland Emp.-Orange Co. Line][2]0d9bd2f2729b4029582f6e6e0e9e1e44NonePOINT(-117.4702 33.899925)Riverside - La SierraNoneNoneNone
40f80473907c7613e9fefbb71220e9e561012025-05-03 03:00:42.971504+00:001216729416416494[San Bernardino Line][2]a0322b38007cd6229c7663774bb52dc2NonePOINT(-117.957397 34.086426)Baldwin ParkNoneNoneNone
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 0f80473907c7613e9fefbb71220e9e56 190 2025-05-03 03:00:42.971504+00:00 \n", + "1 0f80473907c7613e9fefbb71220e9e56 128 2025-05-03 03:00:42.971504+00:00 \n", + "2 0f80473907c7613e9fefbb71220e9e56 165 2025-05-03 03:00:42.971504+00:00 \n", + "3 0f80473907c7613e9fefbb71220e9e56 148 2025-05-03 03:00:42.971504+00:00 \n", + "4 0f80473907c7613e9fefbb71220e9e56 101 2025-05-03 03:00:42.971504+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 19 32 94 105 \n", + "1 6 8 48 83 \n", + "2 12 12 83 94 \n", + "3 5 8 120 140 \n", + "4 12 16 72 94 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening \\\n", + "0 175 175 140 \n", + "1 129 142 48 \n", + "2 140 164 107 \n", + "3 144 214 46 \n", + "4 164 164 94 \n", + "\n", + " route_id_array route_type_array \\\n", + "0 [San Bernardino Line] [2] \n", + "1 [Orange County Line] [2] \n", + "2 [Antelope Valley Line] [2] \n", + "3 [91 Line, Inland Emp.-Orange Co. Line] [2] \n", + "4 [San Bernardino Line] [2] \n", + "\n", + " stop_key tts_stop_name \\\n", + "0 7ddccf40a82263aa2ef6b2be349e5bf0 None \n", + "1 333a6c1a58ddca4f1c950338e388c951 None \n", + "2 f81c86eb4fd41b94c8428320ae02c385 None \n", + "3 0d9bd2f2729b4029582f6e6e0e9e1e44 None \n", + "4 a0322b38007cd6229c7663774bb52dc2 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-117.184517 34.059074) Redlands - Downtown None \n", + "1 POINT(-117.877998 33.802582) Anaheim None \n", + "2 POINT(-118.118301 34.49786) Vincent Grade / Acton None \n", + "3 POINT(-117.4702 33.899925) Riverside - La Sierra None \n", + "4 POINT(-117.957397 34.086426) Baldwin Park None \n", + "\n", + " stop_desc stop_code \n", + "0 None None \n", + "1 None None \n", + "2 None None \n", + "3 None None \n", + "4 None None " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_agency.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "4ca8d618-a539-41ff-980c-45a628569ce6", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_agency.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
00f80473907c7613e9fefbb71220e9e561902025-05-03 03:00:42.971504+00:00193294105175175140[San Bernardino Line][2]7ddccf40a82263aa2ef6b2be349e5bf0NonePOINT(-117.184517 34.059074)Redlands - DowntownNoneNoneNone[San Bernardino Line]1
10f80473907c7613e9fefbb71220e9e561282025-05-03 03:00:42.971504+00:0068488312914248[Orange County Line][2]333a6c1a58ddca4f1c950338e388c951NonePOINT(-117.877998 33.802582)AnaheimNoneNoneNone[Orange County Line]1
20f80473907c7613e9fefbb71220e9e561652025-05-03 03:00:42.971504+00:0012128394140164107[Antelope Valley Line][2]f81c86eb4fd41b94c8428320ae02c385NonePOINT(-118.118301 34.49786)Vincent Grade / ActonNoneNoneNone[Antelope Valley Line]1
30f80473907c7613e9fefbb71220e9e561482025-05-03 03:00:42.971504+00:005812014014421446[91 Line, Inland Emp.-Orange Co. Line][2]0d9bd2f2729b4029582f6e6e0e9e1e44NonePOINT(-117.4702 33.899925)Riverside - La SierraNoneNoneNone[91 Line, Inland Emp.-Orange Co. Line]2
40f80473907c7613e9fefbb71220e9e561012025-05-03 03:00:42.971504+00:001216729416416494[San Bernardino Line][2]a0322b38007cd6229c7663774bb52dc2NonePOINT(-117.957397 34.086426)Baldwin ParkNoneNoneNone[San Bernardino Line]1
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 0f80473907c7613e9fefbb71220e9e56 190 2025-05-03 03:00:42.971504+00:00 \n", + "1 0f80473907c7613e9fefbb71220e9e56 128 2025-05-03 03:00:42.971504+00:00 \n", + "2 0f80473907c7613e9fefbb71220e9e56 165 2025-05-03 03:00:42.971504+00:00 \n", + "3 0f80473907c7613e9fefbb71220e9e56 148 2025-05-03 03:00:42.971504+00:00 \n", + "4 0f80473907c7613e9fefbb71220e9e56 101 2025-05-03 03:00:42.971504+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 19 32 94 105 \n", + "1 6 8 48 83 \n", + "2 12 12 83 94 \n", + "3 5 8 120 140 \n", + "4 12 16 72 94 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening \\\n", + "0 175 175 140 \n", + "1 129 142 48 \n", + "2 140 164 107 \n", + "3 144 214 46 \n", + "4 164 164 94 \n", + "\n", + " route_id_array route_type_array \\\n", + "0 [San Bernardino Line] [2] \n", + "1 [Orange County Line] [2] \n", + "2 [Antelope Valley Line] [2] \n", + "3 [91 Line, Inland Emp.-Orange Co. Line] [2] \n", + "4 [San Bernardino Line] [2] \n", + "\n", + " stop_key tts_stop_name \\\n", + "0 7ddccf40a82263aa2ef6b2be349e5bf0 None \n", + "1 333a6c1a58ddca4f1c950338e388c951 None \n", + "2 f81c86eb4fd41b94c8428320ae02c385 None \n", + "3 0d9bd2f2729b4029582f6e6e0e9e1e44 None \n", + "4 a0322b38007cd6229c7663774bb52dc2 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-117.184517 34.059074) Redlands - Downtown None \n", + "1 POINT(-117.877998 33.802582) Anaheim None \n", + "2 POINT(-118.118301 34.49786) Vincent Grade / Acton None \n", + "3 POINT(-117.4702 33.899925) Riverside - La Sierra None \n", + "4 POINT(-117.957397 34.086426) Baldwin Park None \n", + "\n", + " stop_desc stop_code route_id_array_parsed n_routes \n", + "0 None None [San Bernardino Line] 1 \n", + "1 None None [Orange County Line] 1 \n", + "2 None None [Antelope Valley Line] 1 \n", + "3 None None [91 Line, Inland Emp.-Orange Co. Line] 2 \n", + "4 None None [San Bernardino Line] 1 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely import wkt\n", + "\n", + "# convert WKT string → geometry object\n", + "df_existing['geometry'] = df_existing['pt_geom'].apply(wkt.loads)\n", + "\n", + "# extract lon/lat\n", + "df_existing['longitude'] = df_existing['geometry'].apply(lambda geom: geom.x)\n", + "df_existing['latitude'] = df_existing['geometry'].apply(lambda geom: geom.y)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "935a70bd-867a-49b2-867b-12a1b4f71635", + "metadata": {}, + "outputs": [], + "source": [ + "# drop missing coords just in case\n", + "df_existing = df_existing.dropna(subset=['latitude', 'longitude'])\n", + "df_new_orange = gdf_orange.dropna(subset=['latitude', 'longitude'])\n", + "df_new_blue = gdf_blue.dropna(subset=['latitude', 'longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "da409a53-ae7b-4f11-a157-d76388882c32", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import BallTree\n", + "import numpy as np\n", + "\n", + "existing_coords = np.radians(df_existing[['latitude', 'longitude']])\n", + "new_coords_orange = np.radians(df_new_orange[['latitude', 'longitude']])\n", + "new_coords_blue = np.radians(df_new_blue[['latitude', 'longitude']])\n", + "\n", + "tree = BallTree(existing_coords, metric='haversine')\n", + "dist_orange, ind_orange = tree.query(new_coords_orange, k=1)\n", + "dist_blue, ind_blue = tree.query(new_coords_blue, k=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_orange = ind_orange.flatten()\n", + "\n", + "df_new_orange['n_routes_base'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "\n", + "df_new_orange['nearest_stop_distance_m'] = dist_orange.flatten() * 6371000\n", + "df_new_orange['matched_feed_key'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", + "df_new_orange['matched_stop_name'] = df_existing.iloc[matched_idx_orange]['stop_name'].values\n", + "df_new_orange['matched_stop_id'] = df_existing.iloc[matched_idx_orange]['stop_id'].values\n", + "df_new_orange['matched_n_routes'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "df_new_orange['matched_agency_name'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", + "df_new_orange['n_arrivals_base'] = df_existing.iloc[matched_idx_orange]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "e15d37f1-42de-441c-b46c-2ed73103df13", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_blue = ind_blue.flatten()\n", + "df_new_blue['n_routes_base'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "\n", + "df_new_blue['nearest_stop_distance_m'] = dist_blue.flatten() * 6371000\n", + "df_new_blue['matched_feed_key'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", + "df_new_blue['matched_stop_name'] = df_existing.iloc[matched_idx_blue]['stop_name'].values\n", + "df_new_blue['matched_stop_id'] = df_existing.iloc[matched_idx_blue]['stop_id'].values\n", + "df_new_blue['matched_n_routes'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "df_new_blue['matched_agency_name'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", + "df_new_blue['n_arrivals_base'] = df_existing.iloc[matched_idx_blue]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routesnearest_stop_distance_m
37Alameda & San Fernandowestbound16Alameda / San Fernando1800912.687190
36Alameda & San Fernandoeastbound46San Fernando / Alameda545317.978711
19Amherst Dr / San Fernandowestbound64San Fernando / Scott12348234.604805
18Amherst Dr / San Fernandoeastbound67San Fernando / Amherst3865219.141396
13Empire & Buena Vistaeastbound67Empire / Buena Vista181724.753653
17Empire & Grismerwestbound64San Fernando / Grismer1234621.437015
16Empire & Grismereastbound67San Fernando / Grismer386823.279378
12Empire & Ontarioeastbound67Empire / Ontario182126.957365
15Empire & Valpredawestbound64Empire / Valpreda4635226.482175
14Empire & Valpredaeastbound67Empire / Valpreda124923.950005
38Flower & Alamedaeastbound16Alameda / Lake181191354.144771
39Flower & Alamedawestbound16Alameda / Lake181191369.626070
20Glenoaks & Bethanyeastbound32Glenoaks / Bethany357913.408427
21Glenoaks & Bethanywestbound33Glenoaks / Bethany12066110.358120
25Glenoaks & Cypresswestbound33Glenoaks / Cypress1206710.412399
24Glenoaks & Cypresseastbound32Glenoaks / Cypress358012.467332
22Glenoaks & Fairmounteastbound32Glenoaks / Fairmount358210.698583
23Glenoaks & Fairmountwestbound33Glenoaks / Fairmount1206911.751648
26Glenoaks & Magnoliaeastbound32Glenoaks / Magnolia1206810.516036
27Glenoaks & Magnoliawestbound33Glenoaks / Magnolia358112.050384
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "37 Alameda & San Fernando westbound 16 \n", + "36 Alameda & San Fernando eastbound 46 \n", + "19 Amherst Dr / San Fernando westbound 64 \n", + "18 Amherst Dr / San Fernando eastbound 67 \n", + "13 Empire & Buena Vista eastbound 67 \n", + "17 Empire & Grismer westbound 64 \n", + "16 Empire & Grismer eastbound 67 \n", + "12 Empire & Ontario eastbound 67 \n", + "15 Empire & Valpreda westbound 64 \n", + "14 Empire & Valpreda eastbound 67 \n", + "38 Flower & Alameda eastbound 16 \n", + "39 Flower & Alameda westbound 16 \n", + "20 Glenoaks & Bethany eastbound 32 \n", + "21 Glenoaks & Bethany westbound 33 \n", + "25 Glenoaks & Cypress westbound 33 \n", + "24 Glenoaks & Cypress eastbound 32 \n", + "22 Glenoaks & Fairmount eastbound 32 \n", + "23 Glenoaks & Fairmount westbound 33 \n", + "26 Glenoaks & Magnolia eastbound 32 \n", + "27 Glenoaks & Magnolia westbound 33 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \\\n", + "37 Alameda / San Fernando 18009 1 \n", + "36 San Fernando / Alameda 5453 1 \n", + "19 San Fernando / Scott 12348 2 \n", + "18 San Fernando / Amherst 3865 2 \n", + "13 Empire / Buena Vista 1817 2 \n", + "17 San Fernando / Grismer 12346 2 \n", + "16 San Fernando / Grismer 3868 2 \n", + "12 Empire / Ontario 1821 2 \n", + "15 Empire / Valpreda 4635 2 \n", + "14 Empire / Valpreda 1249 2 \n", + "38 Alameda / Lake 18119 1 \n", + "39 Alameda / Lake 18119 1 \n", + "20 Glenoaks / Bethany 3579 1 \n", + "21 Glenoaks / Bethany 12066 1 \n", + "25 Glenoaks / Cypress 12067 1 \n", + "24 Glenoaks / Cypress 3580 1 \n", + "22 Glenoaks / Fairmount 3582 1 \n", + "23 Glenoaks / Fairmount 12069 1 \n", + "26 Glenoaks / Magnolia 12068 1 \n", + "27 Glenoaks / Magnolia 3581 1 \n", + "\n", + " nearest_stop_distance_m \n", + "37 2.687190 \n", + "36 7.978711 \n", + "19 34.604805 \n", + "18 19.141396 \n", + "13 4.753653 \n", + "17 1.437015 \n", + "16 3.279378 \n", + "12 6.957365 \n", + "15 26.482175 \n", + "14 3.950005 \n", + "38 354.144771 \n", + "39 369.626070 \n", + "20 3.408427 \n", + "21 10.358120 \n", + "25 0.412399 \n", + "24 2.467332 \n", + "22 0.698583 \n", + "23 1.751648 \n", + "26 0.516036 \n", + "27 2.050384 " + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_orange[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes', 'nearest_stop_distance_m']].sort_values('stop_name').head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "51ba1872-0315-4e91-ac93-1e4512191513", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routes
8Alameda & Keystoneeastbound17Buena Vista / Alameda158401
35Alameda & Keystonewestbound17Buena Vista / Alameda158401
4Alameda & Lakeeastbound16Alameda / Lake181191
31Alameda & Lakewestbound16Alameda / Lake180751
32Alameda & Mainwestbound275Cesar E Chavez / Alameda92184
5Alameda & Maineastbound275Cesar E Chavez / Alameda92184
6Alameda & Mariposaeastbound16Victory / Alameda180761
33Alameda & Mariposawestbound17Olive / Reese180711
7Alameda & Reeseeastbound17Olive / Parish180701
34Alameda & Reesewestbound17Olive / Keystone180691
30Alameda & San Fernandowestbound16Alameda / San Fernando180091
3Alameda & San Fernandoeastbound46San Fernando / Alameda54531
9Alameda / Buena Vistaeastbound23Alameda / Buena Vista501000001
36Alameda / Buena Vistawestbound24Alameda / Buena Vista74871
41Buena Vista & Burbankwestbound15Burbank / Buena Vista75341
15Buena Vista & Burbankeastbound16Burbank / Buena Vista158801
14Buena Vista & Chandlereastbound46Magnolia / Buena Vista202831
40Buena Vista & Chandlerwestbound15Burbank / Buena Vista75341
39Buena Vista & Clarkwestbound48Magnolia / Buena Vista201531
12Buena Vista & Clarkeastbound48Magnolia / Buena Vista201531
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "8 Alameda & Keystone eastbound 17 \n", + "35 Alameda & Keystone westbound 17 \n", + "4 Alameda & Lake eastbound 16 \n", + "31 Alameda & Lake westbound 16 \n", + "32 Alameda & Main westbound 275 \n", + "5 Alameda & Main eastbound 275 \n", + "6 Alameda & Mariposa eastbound 16 \n", + "33 Alameda & Mariposa westbound 17 \n", + "7 Alameda & Reese eastbound 17 \n", + "34 Alameda & Reese westbound 17 \n", + "30 Alameda & San Fernando westbound 16 \n", + "3 Alameda & San Fernando eastbound 46 \n", + "9 Alameda / Buena Vista eastbound 23 \n", + "36 Alameda / Buena Vista westbound 24 \n", + "41 Buena Vista & Burbank westbound 15 \n", + "15 Buena Vista & Burbank eastbound 16 \n", + "14 Buena Vista & Chandler eastbound 46 \n", + "40 Buena Vista & Chandler westbound 15 \n", + "39 Buena Vista & Clark westbound 48 \n", + "12 Buena Vista & Clark eastbound 48 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \n", + "8 Buena Vista / Alameda 15840 1 \n", + "35 Buena Vista / Alameda 15840 1 \n", + "4 Alameda / Lake 18119 1 \n", + "31 Alameda / Lake 18075 1 \n", + "32 Cesar E Chavez / Alameda 9218 4 \n", + "5 Cesar E Chavez / Alameda 9218 4 \n", + "6 Victory / Alameda 18076 1 \n", + "33 Olive / Reese 18071 1 \n", + "7 Olive / Parish 18070 1 \n", + "34 Olive / Keystone 18069 1 \n", + "30 Alameda / San Fernando 18009 1 \n", + "3 San Fernando / Alameda 5453 1 \n", + "9 Alameda / Buena Vista 50100000 1 \n", + "36 Alameda / Buena Vista 7487 1 \n", + "41 Burbank / Buena Vista 7534 1 \n", + "15 Burbank / Buena Vista 15880 1 \n", + "14 Magnolia / Buena Vista 20283 1 \n", + "40 Burbank / Buena Vista 7534 1 \n", + "39 Magnolia / Buena Vista 20153 1 \n", + "12 Magnolia / Buena Vista 20153 1 " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_blue[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes',]].sort_values('stop_name').head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing')]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "orange_stops = set(zip(df_new_orange['stop_name'], df_new_orange['direction'], df_new_orange['change_type'], ))\n", + "blue_stops = set(zip(df_new_blue['stop_name'], df_new_blue['direction'], df_new_blue['change_type']))\n", + "\n", + "common_stops = orange_stops & blue_stops\n", + "list(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", + "metadata": {}, + "outputs": [], + "source": [ + "df_new_orange['source'] = 'orange'\n", + "df_new_blue['source'] = 'blue'" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined = pd.concat([df_new_orange, df_new_blue], ignore_index=True)\n", + "df_combined = df_combined[\n", + " df_combined['change_type'].isin(['new_stop', 'adding_existing'])\n", + "].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['key'] = list(zip(\n", + " df_combined['stop_name'],\n", + " df_combined['direction'],\n", + " df_combined['change_type']\n", + "))\n", + "\n", + "df_combined['is_common'] = df_combined['key'].isin(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", + "metadata": {}, + "outputs": [], + "source": [ + "# REMOVE duplicate rows for common stops\n", + "df_combined = (\n", + " df_combined\n", + " .sort_values('source') # keeps orange if duplicate exists\n", + " .drop_duplicates(subset=['key'], keep='first')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f706ac72-936a-46fa-8994-908e72968689", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['n_routes_base'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 0,\n", + " df_combined['n_routes_base']\n", + ")\n", + "\n", + "df_combined['n_routes_scn'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 1,\n", + " df_combined['n_routes_base'] + 1\n", + ")\n", + "\n", + "# instead of forcing 2, increment properly\n", + "df_combined.loc[\n", + " df_combined['is_common'] & (df_combined['change_type'] == 'adding_existing'),\n", + " 'n_routes_scn'\n", + "] += 1\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "72301442-3a71-4448-bd99-cb25116539ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_name', 'direction', 'change_type', 'stop_dir_key', 'latitude',\n", + " 'longitude', 'pt_geom', 'stop_id', 'buffer', 'total_pop_adj',\n", + " 'workers_with_no_car_adj', 'total_seniors_adj', 'total_youth_adj',\n", + " 'inc_total_lowincome_adj', 'n_arrivals', 'n_routes', 'n_routes_base',\n", + " 'nearest_stop_distance_m', 'matched_feed_key', 'matched_stop_name',\n", + " 'matched_stop_id', 'matched_n_routes', 'matched_agency_name',\n", + " 'n_arrivals_base', 'source', 'key', 'is_common', 'n_routes_scn'],\n", + " dtype='object')" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.columns" + ] + }, + { + "cell_type": "markdown", + "id": "64cf3875-a0cc-43e9-a19b-b36252fbbd9f", + "metadata": {}, + "source": [ + "Orange route currently has 51 arrivals; Proposed Blue Routes service :would operate every 20 minutes from 6:00am to 8:00pm, Monday through Friday = 43 arrivals per day." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "93666c83-c8be-4e00-b455-005fa305e6aa", + "metadata": {}, + "outputs": [], + "source": [ + "# apply base reset\n", + "is_new = df_combined['change_type'] == 'new_stop'\n", + "df_combined.loc[is_new, 'n_arrivals_base'] = 0\n", + "\n", + "# define correct increment\n", + "increment = np.where(\n", + " df_combined['is_common'],\n", + " 89, \n", + " df_combined['source'].map({'orange': 45, 'blue': 44})\n", + ")\n", + "\n", + "# final calculation \n", + "df_combined['n_arrivals_scn'] = df_combined['n_arrivals_base'] + increment\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idbuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjn_arrivalsn_routesn_routes_basenearest_stop_distance_mmatched_feed_keymatched_stop_namematched_stop_idmatched_n_routesmatched_agency_namen_arrivals_basesourcekeyis_commonn_routes_scnn_arrivals_scn
45Alameda & Maineastboundnew_stopAlameda & Main eastbound34.058825-118.237278POINT (385815.509 3769368.949)new_6POLYGON ((386220.181 3769368.949, 386218.233 3...4217.842162139.410239586.593147428.3096061993.392782NaNNaN094.9386468d9623a1823a27925b7e2f00e44fc5bbCesar E Chavez / Alameda921848d9623a1823a27925b7e2f00e44fc5bb0blue(Alameda & Main, eastbound, new_stop)False144
66Verdugo & Ikea Waywestboundadding_existingVerdugo & Ikea Way westbound34.177147-118.307473POINT (379505.037 3782570.325)new_27POLYGON ((379909.709 3782570.325, 379907.761 3...2363.59648969.808219432.243641247.9541901308.536414NaNNaN69.4068208d9623a1823a27925b7e2f00e44fc5bbVerdugo / Ikea168268d9623a1823a27925b7e2f00e44fc5bb144blue(Verdugo & Ikea Way, westbound, adding_existing)False7188
65Cohasset & Bloomingtoneastboundnew_stopCohasset & Bloomington eastbound34.206547-118.345238POINT (376067.409 3785875.904)new_26POLYGON ((376472.081 3785875.904, 376470.133 3...1353.34812314.113858241.864080130.031029661.384824NaNNaN0290.1600708d9623a1823a27925b7e2f00e44fc5bbGlenoaks / Cabrini1076018d9623a1823a27925b7e2f00e44fc5bb0blue(Cohasset & Bloomington, eastbound, new_stop)False144
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "45 Alameda & Main eastbound new_stop \n", + "66 Verdugo & Ikea Way westbound adding_existing \n", + "65 Cohasset & Bloomington eastbound new_stop \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "45 Alameda & Main eastbound 34.058825 -118.237278 \n", + "66 Verdugo & Ikea Way westbound 34.177147 -118.307473 \n", + "65 Cohasset & Bloomington eastbound 34.206547 -118.345238 \n", + "\n", + " pt_geom stop_id \\\n", + "45 POINT (385815.509 3769368.949) new_6 \n", + "66 POINT (379505.037 3782570.325) new_27 \n", + "65 POINT (376067.409 3785875.904) new_26 \n", + "\n", + " buffer total_pop_adj \\\n", + "45 POLYGON ((386220.181 3769368.949, 386218.233 3... 4217.842162 \n", + "66 POLYGON ((379909.709 3782570.325, 379907.761 3... 2363.596489 \n", + "65 POLYGON ((376472.081 3785875.904, 376470.133 3... 1353.348123 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "45 139.410239 586.593147 428.309606 \n", + "66 69.808219 432.243641 247.954190 \n", + "65 14.113858 241.864080 130.031029 \n", + "\n", + " inc_total_lowincome_adj n_arrivals n_routes n_routes_base \\\n", + "45 1993.392782 NaN NaN 0 \n", + "66 1308.536414 NaN NaN 6 \n", + "65 661.384824 NaN NaN 0 \n", + "\n", + " nearest_stop_distance_m matched_feed_key \\\n", + "45 94.938646 8d9623a1823a27925b7e2f00e44fc5bb \n", + "66 9.406820 8d9623a1823a27925b7e2f00e44fc5bb \n", + "65 290.160070 8d9623a1823a27925b7e2f00e44fc5bb \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \\\n", + "45 Cesar E Chavez / Alameda 9218 4 \n", + "66 Verdugo / Ikea 1682 6 \n", + "65 Glenoaks / Cabrini 10760 1 \n", + "\n", + " matched_agency_name n_arrivals_base source \\\n", + "45 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", + "66 8d9623a1823a27925b7e2f00e44fc5bb 144 blue \n", + "65 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", + "\n", + " key is_common n_routes_scn \\\n", + "45 (Alameda & Main, eastbound, new_stop) False 1 \n", + "66 (Verdugo & Ikea Way, westbound, adding_existing) False 7 \n", + "65 (Cohasset & Bloomington, eastbound, new_stop) False 1 \n", + "\n", + " n_arrivals_scn \n", + "45 44 \n", + "66 188 \n", + "65 44 " + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['stop_group'] = df_combined['stop_name']\n", + "\n", + "df_grouped = df_combined.groupby('stop_group').agg({\n", + " 'n_arrivals_base': 'mean',\n", + " 'n_arrivals_scn': 'mean',\n", + " 'n_routes_base': 'mean',\n", + " 'n_routes_scn': 'mean',\n", + " 'total_pop_adj': 'mean',\n", + " 'workers_with_no_car_adj': 'mean',\n", + " 'total_youth_adj': 'mean',\n", + " 'total_seniors_adj': 'mean',\n", + " 'inc_total_lowincome_adj': 'mean',\n", + " 'change_type': lambda x: ', '.join(sorted(x.unique()))\n", + "}).reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "ddb3f6e3-354a-4cef-a3f8-1fbd67f009b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_group', 'n_arrivals_base', 'n_arrivals_scn', 'n_routes_base',\n", + " 'n_routes_scn', 'total_pop_adj', 'workers_with_no_car_adj',\n", + " 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj',\n", + " 'change_type'],\n", + " dtype='object')" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_grouped.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "c5d0bdfa-162b-4599-9542-347e8ed64b77", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "71376262-2458-42cb-9559-4448854868f3", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing = df_burbank_existing[\n", + " ~df_burbank_existing['stop_name'].isin(df_grouped['stop_group'])\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "58a76ee2-9c75-4f5d-bf6b-ac9fb517b19b", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing['n_arrivals_base'] = 0\n", + "df_burbank_existing['n_arrivals_scn'] = df_burbank_existing['route_id_list'].apply(\n", + " lambda x: 30 if '3162' in x else 45\n", + ")\n", + "df_burbank_existing = df_burbank_existing.rename(columns={\n", + " 'stop_name': 'stop_group'\n", + "})\n", + "df_burbank_existing['n_routes_base'] = df_burbank['n_routes']\n", + "df_burbank_existing['n_routes_scn'] = df_burbank['n_routes']\n", + "df_burbank_existing['change_type'] = 'already_present'\n", + "\n", + "\n", + "df_burbank_filtered = df_burbank_existing[\n", + " [ 'stop_group',\n", + " 'n_arrivals_base',\n", + " 'n_arrivals_scn',\n", + " 'n_routes_base',\n", + " 'n_routes_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_seniors_adj',\n", + " 'total_youth_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'change_type'\n", + " \n", + " ]\n", + "]\n", + "\n", + "\n", + "# Append\n", + "df_combined_new_service = pd.concat([df_burbank_filtered, \n", + " df_grouped], ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "eb74729b-8888-41b9-b76f-d107c12814cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_groupn_arrivals_basen_arrivals_scnn_routes_basen_routes_scntotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjchange_type
62Empire & Ontario67.0112.02.03.01110.03084821.308684135.845753136.235100521.248016adding_existing
3Buena Vista & Alameda SB0.030.01.01.01083.59697215.376402151.42217381.134898480.226481already_present
0Alameda & Bob Hope EB0.030.01.01.0899.10094524.30813657.619286103.234554361.621041already_present
19Metrolink Station0.030.01.01.02032.08956356.683930352.667709211.5414111093.399917already_present
69Glenoaks & Olive0.045.00.01.03858.865324127.600027894.894966363.5452712363.578848new_stop
\n", + "
" + ], + "text/plain": [ + " stop_group n_arrivals_base n_arrivals_scn n_routes_base \\\n", + "62 Empire & Ontario 67.0 112.0 2.0 \n", + "3 Buena Vista & Alameda SB 0.0 30.0 1.0 \n", + "0 Alameda & Bob Hope EB 0.0 30.0 1.0 \n", + "19 Metrolink Station 0.0 30.0 1.0 \n", + "69 Glenoaks & Olive 0.0 45.0 0.0 \n", + "\n", + " n_routes_scn total_pop_adj workers_with_no_car_adj total_seniors_adj \\\n", + "62 3.0 1110.030848 21.308684 135.845753 \n", + "3 1.0 1083.596972 15.376402 151.422173 \n", + "0 1.0 899.100945 24.308136 57.619286 \n", + "19 1.0 2032.089563 56.683930 352.667709 \n", + "69 1.0 3858.865324 127.600027 894.894966 \n", + "\n", + " total_youth_adj inc_total_lowincome_adj change_type \n", + "62 136.235100 521.248016 adding_existing \n", + "3 81.134898 480.226481 already_present \n", + "0 103.234554 361.621041 already_present \n", + "19 211.541411 1093.399917 already_present \n", + "69 363.545271 2363.578848 new_stop " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined_new_service.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "db5df34e-0dd3-4998-9d89-ffd81328589a", + "metadata": {}, + "outputs": [], + "source": [ + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\",\n", + " \"New BUR terminal\",\n", + " \n", + "]\n", + "\n", + "df_combined_new_service[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_combined_new_service.loc[\n", + " df_combined_new_service[\"stop_group\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_combined_new_service[[\n", + " 'n_routes_scn',\n", + " 'n_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'n_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[model_fe.model.exog_names]\n", + "df_combined_new_service['pred_scenario'] = model_fe.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", + "metadata": {}, + "outputs": [], + "source": [ + "X_base = df_combined_new_service[[\n", + " 'n_routes_base',\n", + " 'n_arrivals_base',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", + "]].fillna(0)\n", + "\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes_base': 'n_routes',\n", + " 'n_arrivals_base': 'n_arrivals'\n", + "})\n", + "\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "\n", + "X_base = sm.add_constant(X_base)\n", + "X_base = X_base[model_fe.model.exog_names]\n", + "df_combined_new_service['pred_baseline'] = model_fe.predict(X_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined_new_service['ridership_change'] = (\n", + " df_combined_new_service['pred_scenario'] - df_combined_new_service['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "a9392504-ad1c-407f-9204-1663043528d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "205.83370420517338\n" + ] + } + ], + "source": [ + "ridership_change_saturday= df_combined_new_service[\"ridership_change\"].sum()\n", + "print(ridership_change_saturday)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "761fb182-7c97-4889-b193-f095c1f64848", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "85.0093198367366" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_change_saturday*0.413" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1ed0ee7-50d2-4958-9c9d-c3a4f5d7c9c7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "79bdc190-3bf0-4fc8-ac41-4df7eefe99ee", + "metadata": {}, + "source": [ + "## Querying NTD Ridership Data for Burbank Bus Service" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "21b9bd94-53e9-4086-9350-3b85e6206ece", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, mode, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_mode_time_periods\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 AND mode = 'MB'\n", + " \"\"\"\n", + " ridership_data_bus= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "500102af-ee48-45be-8f4c-00b79b58572e", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, mode, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_mode_time_periods\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 \n", + " \"\"\"\n", + " ridership_data= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "e3d6c322-f0ef-4b7f-ae29-6791743a322f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5777028.0" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_ridership = ridership_data.unlinked_passenger_trips_upt.sum()\n", + "total_ridership" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "9b2cc358-7dd4-410a-a96d-3661c0d13671", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3953615.0" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_bus_ridership = ridership_data_bus.unlinked_passenger_trips_upt.sum()\n", + "total_bus_ridership" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "2f48c87c-4e8c-472e-9a27-f6a8f127c163", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "68.43683291824101" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(total_bus_ridership/total_ridership)*100" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 \n", + " AND agency IN (\n", + " 'City of Burbank',\n", + " 'Southern California Regional Rail Authority, dba: Metrolink',\n", + " 'Los Angeles County Metropolitan Transportation Authority , dba: Metro'\n", + " )\n", + " \"\"\"\n", + " ridership_data= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", + "metadata": {}, + "outputs": [], + "source": [ + "# City of Burbank UPT\n", + "burbank_upt = ridership_data.loc[\n", + " ridership_data[\"agency\"] == \"City of Burbank\",\n", + " \"unlinked_passenger_trips_upt\"\n", + "].iloc[0]\n", + "\n", + "# City of Burbank average daily ridership\n", + "burbank_avg_daily = burbank_upt / 365" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "da312c75-80af-4dfc-8297-68cabdabe6de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "579.5698630136986" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "burbank_avg_daily" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Pyproject Local (use-venv)", + "language": "python", + "name": "pyproject_local_kernel_use_venv" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb new file mode 100644 index 000000000..83742e658 --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb @@ -0,0 +1,3637 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", + "metadata": {}, + "source": [ + "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "markdown", + "id": "e5b6b27c-db78-4a8f-90cf-f89bccd474e2", + "metadata": {}, + "source": [ + "1. Load Stop-Level Data\n", + "2. Prepare Data for Negative Binomial Regression\n", + "- Create a log-transformed variable for arrivals: log_arrivals = log(n_arrivals + 1)\n", + "- Select explanatory variables: number of routes, arrivals, population-adjusted measures.\n", + "3. Get Stop-Level Data for Existing Operators\n", + "- Query GTFS scheduled stop data across Burbank, Metro, and Metrolink\n", + "- Load new stop lists for Orange and Blue route changes.\n", + "4. Assign Missing Coordinates for New Stops\n", + "5. Spatial Buffering and ACS Demographic Overlays\n", + "- Convert new stops to UTM projection, buffer, overlay census tract and compute proportional demographic counts using area ratios\n", + "6. Match New Stops to Nearest Existing Stops\n", + "- Inherit baseline n_routes and daily_arrivals where applicable.\n", + "7. Construct Baseline and Scenario Service Variables\n", + "- New stops assigned 1 route in scenario, 0 in baseline.\n", + "- Scenario arrivals set to baseline arrivals + 51 additional trips.\n", + "8. Generate Prediction Inputs\n", + "- Create scenario (X_scn) and baseline (X_base) covariate matrices.\n", + "9. Predict Ridership Effects\n", + "- Apply fitted NB model to scenario and baseline inputs.\n", + "- Compute predicted ridership change as: pred_scenario - pred_baseline\n", + "- Sum stop-level changes to obtain systemwide change\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "dd2eb2bc-ba32-4faf-a61f-64b8d4a93dd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/bin/python: No module named pip\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ebdc88e9-5c08-4416-bb29-9931f927f551", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "69782f04-24f3-48ea-a502-6d1589c68fa5", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "db56f926-980f-42af-89f8-6ba4468cdd76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type', 'route_id_list',\n", + " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", + " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", + " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", + " 'households_with_no_cars_adj', 'disabled_pop_adj',\n", + " 'public_asst_pop_adj', 'inc_extremelylow_adj', 'inc_verylow_adj',\n", + " 'inc_low_adj', 'male_seniors_adj', 'female_seniors_adj',\n", + " 'veteran_pop_adj', 'male_youth_adj', 'inc_total_lowincome_adj',\n", + " 'female_youth_adj', 'total_seniors_adj', 'jobs_tot_adj',\n", + " 'total_youth_adj', 'ALAND_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stop_route_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6b90669b-5d97-47da-9056-00496b8001a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7e41c9f0-9e78-4f41-8657-37747218def7", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "23117df7-8e6b-47c3-aa0c-4965517dde3a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "df_burbank[\"log_arrivals\"] = np.log(df_burbank[\"n_arrivals\"] + 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aed87242-a621-4a69-8357-29a4ee260e13", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " super().__setitem__(key, value)\n" + ] + } + ], + "source": [ + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\"\n", + "]\n", + "\n", + "df_burbank[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_burbank.loc[\n", + " df_burbank[\"stop_name\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1\n", + "\n", + "\n", + "X = df_burbank[[\n", + " \"n_routes\",\n", + " \"log_arrivals\",\n", + " \"total_pop_adj\",\n", + " \"workers_with_no_car_adj\",\n", + " \"total_seniors_adj\",\n", + " \"inc_total_lowincome_adj\",\n", + " \"has_rail_connection_dummy\",\n", + " \"total_youth_adj\"\n", + "]].copy()\n", + "\n", + "X = sm.add_constant(X, has_constant=\"add\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "af3e0f0a-7ac4-4b36-8cdb-0785f620df79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 45\n", + "Model: GLM Df Residuals: 37\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -104.77\n", + "Date: Mon, 11 May 2026 Deviance: 26.862\n", + "Time: 22:02:31 Pearson chi2: 21.2\n", + "No. Iterations: 18 Pseudo R-squ. (CS): 0.5294\n", + "Covariance Type: nonrobust \n", + "=============================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "---------------------------------------------------------------------------------------------\n", + "const -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "n_routes -3.6180 4.061 -0.891 0.373 -11.577 4.341\n", + "log_arrivals 1.9853 2.106 0.942 0.346 -2.143 6.114\n", + "total_pop_adj 0.0014 0.002 0.764 0.445 -0.002 0.005\n", + "workers_with_no_car_adj 0.0301 0.018 1.707 0.088 -0.004 0.065\n", + "total_seniors_adj 0.0081 0.004 1.989 0.047 0.000 0.016\n", + "inc_total_lowincome_adj -0.0059 0.002 -2.395 0.017 -0.011 -0.001\n", + "has_rail_connection_dummy 1.8884 1.135 1.663 0.096 -0.337 4.114\n", + "total_youth_adj 0.0021 0.008 0.254 0.800 -0.014 0.019\n", + "=============================================================================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + } + ], + "source": [ + "model_fe = sm.GLM(\n", + " df_burbank[\"average_daily_boardings\"],\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(model_fe.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "75d04dd7-b987-48d0-823d-9e29c6d71341", + "metadata": {}, + "outputs": [], + "source": [ + "# observed values\n", + "observed = df_burbank[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = model_fe.predict()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0308ac20-e164-4aa3-a22e-63ce66549980", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(7, 6))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.6)\n", + "\n", + "# use a robust max instead of true max\n", + "cap = np.percentile(np.concatenate([observed, predicted]), 95)\n", + "\n", + "plt.plot([0, cap], [0, cap], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlim(0, cap)\n", + "plt.ylim(0, cap)\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted (Negative Binomial GLM)\")\n", + "plt.grid(False)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9f0edc7e-1341-48cf-b9fd-a24f7e8c8de9", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying stop level data for City of Burbank " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "75df8b20-dee7-420d-9231-229db9d53915", + "metadata": {}, + "outputs": [], + "source": [ + "# Burbank, Metrolink, LA Metro Bus and LA metro rail\n", + "feed_keys = [\"cc6a68a39d22c29b49116584971e69a8\", \"0f80473907c7613e9fefbb71220e9e56\", \"8d9623a1823a27925b7e2f00e44fc5bb\", \"f1ba526e631625c1d6816d055265ed65\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals, arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening, route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2025-05-25')\n", + " AND feed_key IN ({feed_keys_str})\n", + " \"\"\"\n", + " df_agency = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "98205773-013c-45d4-a8bc-302d8a33e97f", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(\"burbank_orange_new_stops.csv\")\n", + "df[\"stop_dir_key\"] = df[\"stop_name\"] + \" \" + df[\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b3165da9-4c91-44f2-bad2-941995d22b73", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"Hollywood & Jeffries eastbound\": (34.18141305368438, -118.34903738211447),\n", + "\"Hollywood & Victory Bl eastbound\": (34.18508535157502, -118.34929119735641),\n", + "\"Hollywood & Pacific eastbound\": (34.18825119276962, -118.34886491064228),\n", + "\"Hollywood & Valhalla eastbound\": (34.19012427165374, -118.34916328937923),\n", + "\"Hollywood & Thorton eastbound\": (34.19656151035557, -118.34876716762236),\n", + "\"Hollywood & Thorton westbound\": (34.195980179882646, -118.34894014653726),\n", + "\"New BUR terminal eastbound\": (34.19359656711031, -118.35357055101639),\n", + "\"New BUR terminal westbound\": (34.19359656711031, -118.35357055101639),\n", + "\"Winona / Ontario eastbound\": (34.199490557715684, -118.3443711434909),\n", + "\"Winona / Ontario westbound\": (34.1992091874645, -118.34484346690523),\n", + "\"Ontario & Thorton eastbound\": (34.19593202043652, -118.34444331137956),\n", + "\"Ontario & Thorton westbound\": (34.19541510602419, -118.34460558501739),\n", + "\"Empire & Ontario eastbound\": (34.192108542580186, -118.3443394102755),\n", + "\"Empire & Buena Vista eastbound\": (34.19195822628478, -118.33787457476522),\n", + "\"Empire & Valpreda eastbound\": (34.19194945024493, -118.33285175184913),\n", + "\"Empire & Valpreda westbound\": (34.19179144771815, -118.33244032844016),\n", + "\"Empire & Grismer eastbound\": (34.19175476406717, -118.32509312643347),\n", + "\"Empire & Grismer westbound\": (34.19154206721876, -118.3254365921081),\n", + "\"Amherst Dr / San Fernando eastbound\": (34.19012800601128, -118.32086710181368),\n", + "\"Amherst Dr / San Fernando westbound\": (34.189934438443714, -118.32176619076398),\n", + "\"Glenoaks & Bethany eastbound\": (34.191647095345786, -118.31754103475315),\n", + "\"Glenoaks & Bethany westbound\": (34.19168659607283, -118.3180498038794),\n", + "\"Glenoaks & Fairmount eastbound\": (34.18922976877985, -118.31426181767534),\n", + "\"Glenoaks & Fairmount westbound\": (34.18869054389077, -118.3139580922512),\n", + "\"Glenoaks & Cypress eastbound\": (34.18708018484801, -118.31127153444093),\n", + "\"Glenoaks & Cypress westbound\": (34.18677382226348, -118.31135025143384),\n", + "\"Glenoaks & Magnolia eastbound\": (34.18566039664216, -118.30935620418528),\n", + "\"Glenoaks & Magnolia westbound\": (34.1853950731641, -118.3094180753144),\n", + "\"Glenoaks & Olive eastbound\": (34.18338784687265, -118.30666291160377),\n", + "\"Glenoaks & Olive westbound\": (34.183750381812565, -118.30682928383196),\n", + "\"Glenoaks & Verdugo eastbound\": (34.1810536128531, -118.30348086446116),\n", + "\"Glenoaks & Verdugo westbound\": (34.18130060913145, -118.30290962506388),\n", + "\"Glenoaks & Providencia eastbound\": (34.17964641863243, -118.30103491619572),\n", + "\"Glenoaks & Providencia westbound\": (34.17927416886304, -118.30121771535951),\n", + "\"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + "\"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + "\"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + "\"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + "\"Flower & Alameda eastbound\": (34.17106795233713, -118.30268518471172),\n", + "\"Flower & Alameda westbound\": (34.17166407022795, -118.3032739880033)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "68c5b654-30e9-4ef2-b6e2-45b03fbc9d11", + "metadata": {}, + "outputs": [], + "source": [ + "df_blue = pd.read_csv(\"burbank_blue_new_stops.csv\")\n", + "df_blue[\"stop_dir_key\"] = df_blue [\"stop_name\"] + \" \" + df_blue [\"direction\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "6210a31b-85be-44a6-8cce-9569778e094d", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords_blue = {\n", + " \"Metrolink Station eastside terminal at Front St eastbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Metrolink Station eastside terminal at Front St westbound\": (34.1928297181839, -118.35258351675843),\n", + " \"Verdugo & Ikea Way eastbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & Ikea Way westbound\": (34.17714663954148, -118.3074729252067),\n", + " \"Verdugo & San Fernando eastbound\": (34.17878489736103, -118.30541531103879),\n", + " \"Verdugo & San Fernando westbound\": (34.17851879621711, -118.30606420445262),\n", + " \"Glenoaks & Providencia eastbound\": (34.17962336385441, -118.30104441612727),\n", + " \"Glenoaks & Providencia westbound\": (34.17927459077334, -118.30121849159424),\n", + " \"Glenoaks / Alameda eastbound\": (34.1769213295822, -118.29787237592716),\n", + " \"Glenoaks / Alameda westbound\": (34.17636895964169, -118.29776384800448),\n", + " \"Alameda & San Fernando eastbound\": (34.174365721132396, -118.29952381900989),\n", + " \"Alameda & San Fernando westbound\": (34.17430732460237, -118.30025580257688),\n", + " \"Alameda & Lake eastbound\": (34.16893683695737, -118.30550179211235),\n", + " \"Alameda & Lake westbound\": (34.169039897393205, -118.30583857000296),\n", + " \"Alameda & Victory eastbound\": (34.166763977999786, -118.30764556757374),\n", + " \"Alameda & Victory westbound\": (34.16653844596177, -118.30776671277157),\n", + " \"Alameda & Main eastbound\": (34.05882507328523, -118.2372783904341),\n", + " \"Alameda & Main westbound\": (34.05926978274522, -118.23693452367304),\n", + " \"Alameda & Mariposa eastbound\": (34.16232050313561, -118.3156158302872),\n", + " \"Alameda & Mariposa westbound\": (34.16231163244352, -118.3163406121734),\n", + " \"Alameda & Reese eastbound\": (34.160989586571944, -118.31959642185599),\n", + " \"Alameda & Reese westbound\": (34.16116470453852, -118.32011647018618),\n", + " \"Alameda & Keystone eastbound\": (34.15960879667507, -118.32369063587736),\n", + " \"Alameda & Keystone westbound\": (34.159809285768965, -118.32415899113134),\n", + " \"Alameda / Buena Vista eastbound\": (34.15830550275982, -118.32847444534262),\n", + " \"Alameda / Buena Vista westbound\": (34.158061055695796, -118.32827576408872),\n", + " \"Buena Vista & Olive eastbound\": (34.16071171372398, -118.32948693260309),\n", + " \"Buena Vista & Olive westbound\": (34.16108254215271, -118.32933331481632),\n", + " \"Buena Vista & Verdugo eastbound\": (34.16511269756838, -118.33111018379287),\n", + " \"Buena Vista & Verdugo westbound\": (34.165299805818485, -118.33167323237512),\n", + " \"Buena Vista & Clark eastbound\": (34.168565005129715, -118.33283674907685),\n", + " \"Buena Vista & Clark westbound\": (34.16866971383002, -118.33328130798998),\n", + " \"Buena Vista & Magnolia eastbound\": (34.17195186709472, -118.33452224880612),\n", + " \"Buena Vista & Magnolia westbound\": (34.17211056589883, -118.33495282578686),\n", + " \"Buena Vista & Chandler eastbound\": (34.175468005263646, -118.33584132009098),\n", + " \"Buena Vista & Chandler westbound\": (34.17564123355154, -118.33666600223994),\n", + " \"Buena Vista & Burbank eastbound\": (34.178999088200214, -118.33829343490339),\n", + " \"Buena Vista & Burbank westbound\": (34.17876464082475, -118.33765850526345),\n", + " \"Buena Vista & Jeffries eastbound\": (34.18121005878122, -118.33854591221447),\n", + " \"Buena Vista & Jeffries westbound\": (34.180900571549294, -118.33814871081255),\n", + " \"Buena Vista & Victory eastbound\": (34.18449938252548, -118.3380410337855),\n", + " \"Buena Vista & Victory westbound\": (34.18466457669643, -118.33870399111125),\n", + " \"Buena Vista & Pacific eastbound\": (34.188461988919315, -118.33840245172041),\n", + " \"Buena Vista & Pacific westbound\": (34.18806979207031, -118.33819315186547),\n", + " \"Buena Vista & Empire eastbound\": (34.19198270314381, -118.33837161247952),\n", + " \"Buena Vista & Empire westbound\": (34.19177371161881, -118.3376321369762),\n", + " \"Buena Vista & Thorton eastbound\": (34.19573279798583, -118.33806248639054),\n", + " \"Buena Vista & Thorton westbound\": (34.19545983217905, -118.33766900330374),\n", + " \"Buena Vista & Winona eastbound\": (34.19971384309687, -118.33802251372927),\n", + " \"Buena Vista & Winona westbound\": (34.19955262101271, -118.33759639149243),\n", + " \"Buena Vista & Tulare eastbound\": (34.20288213768749, -118.33803238893368),\n", + " \"Buena Vista & Tulare westbound\": (34.202779515064044, -118.33757227833074),\n", + " \"Glenoaks / Buena Vista eastbound\": (34.205108109416635, -118.33787452049432),\n", + " \"Glenoaks / Buena Vista westbound\": (34.20469583946896, -118.33746105567633),\n", + " \"Glenoaks / Cohasset eastbound\": (34.206545468267606, -118.34143554899393),\n", + " \"Glenoaks / Cohasset westbound\": (34.2067229265355, -118.34135508272895),\n", + " \"Cohasset & Bloomington eastbound\": (34.2065471711793, -118.34523843199325),\n", + " \"Cohasset & Bloomington westbound\": (34.206793697966674, -118.34551974845968),\n", + " \"N San Fernando / Lima / Avon eastbound\": (34.19149816424647, -118.34706760310583),\n", + " \"N San Fernando / Lima / Avon westbound\": (34.192392404649915, -118.3479249843664)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "87199e5f-9a49-45ef-8c4d-fdd54a7d9c9b", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7593556c-d140-4cc7-bd56-99ba11d8d3fa", + "metadata": {}, + "outputs": [], + "source": [ + "def apply_manual_coords(df, manual_coords):\n", + " # filter rows\n", + " df = df[(df['change_type'] != 'no_change') & \n", + " (df['change_type'] != 'relocating')].copy()\n", + " \n", + " latitudes, longitudes, geoms = [], [], []\n", + "\n", + " for key in df[\"stop_dir_key\"]:\n", + " coords = manual_coords.get(key)\n", + "\n", + " if coords:\n", + " lat, lon = coords\n", + " latitudes.append(lat)\n", + " longitudes.append(lon)\n", + " geoms.append(Point(lon, lat))\n", + " else:\n", + " latitudes.append(None)\n", + " longitudes.append(None)\n", + " geoms.append(None)\n", + "\n", + " df[\"latitude\"] = latitudes\n", + " df[\"longitude\"] = longitudes\n", + " df[\"pt_geom\"] = geoms\n", + "\n", + " df[\"stop_id\"] = [\"new_\" + str(i + 1) for i in range(len(df))]\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "74273e90-eed3-4f4f-a1f0-4c6fffdd3926", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
6Hollywood & Jeffrieseastboundadding_existingHollywood & Jeffries eastbound34.181413-118.349037POINT (-118.34903738211447 34.18141305368438)new_1
8Hollywood & Victory Bleastboundadding_existingHollywood & Victory Bl eastbound34.185085-118.349291POINT (-118.34929119735641 34.18508535157502)new_2
10Hollywood & Pacificeastboundadding_existingHollywood & Pacific eastbound34.188251-118.348865POINT (-118.34886491064228 34.18825119276962)new_3
12Hollywood & Valhallaeastboundadding_existingHollywood & Valhalla eastbound34.190124-118.349163POINT (-118.34916328937923 34.19012427165374)new_4
14Hollywood & Thortoneastboundadding_existingHollywood & Thorton eastbound34.196562-118.348767POINT (-118.34876716762236 34.19656151035557)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "6 Hollywood & Jeffries eastbound adding_existing \n", + "8 Hollywood & Victory Bl eastbound adding_existing \n", + "10 Hollywood & Pacific eastbound adding_existing \n", + "12 Hollywood & Valhalla eastbound adding_existing \n", + "14 Hollywood & Thorton eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "6 Hollywood & Jeffries eastbound 34.181413 -118.349037 \n", + "8 Hollywood & Victory Bl eastbound 34.185085 -118.349291 \n", + "10 Hollywood & Pacific eastbound 34.188251 -118.348865 \n", + "12 Hollywood & Valhalla eastbound 34.190124 -118.349163 \n", + "14 Hollywood & Thorton eastbound 34.196562 -118.348767 \n", + "\n", + " pt_geom stop_id \n", + "6 POINT (-118.34903738211447 34.18141305368438) new_1 \n", + "8 POINT (-118.34929119735641 34.18508535157502) new_2 \n", + "10 POINT (-118.34886491064228 34.18825119276962) new_3 \n", + "12 POINT (-118.34916328937923 34.19012427165374) new_4 \n", + "14 POINT (-118.34876716762236 34.19656151035557) new_5 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = apply_manual_coords(df, manual_coords)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "3ffc2c7a-6812-4239-84c3-80b6eadfbe77", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_id
2Verdugo & San Fernandoeastboundadding_existingVerdugo & San Fernando eastbound34.178785-118.305415POINT (-118.30541531103879 34.17878489736103)new_1
3Glenoaks & Providenciaeastboundadding_existingGlenoaks & Providencia eastbound34.179623-118.301044POINT (-118.30104441612727 34.17962336385441)new_2
4Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (-118.29787237592716 34.1769213295822)new_3
5Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (-118.29952381900989 34.174365721132396)new_4
6Alameda & Lakeeastboundadding_existingAlameda & Lake eastbound34.168937-118.305502POINT (-118.30550179211235 34.16893683695737)new_5
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "2 Verdugo & San Fernando eastbound adding_existing \n", + "3 Glenoaks & Providencia eastbound adding_existing \n", + "4 Glenoaks / Alameda eastbound adding_existing \n", + "5 Alameda & San Fernando eastbound adding_existing \n", + "6 Alameda & Lake eastbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "2 Verdugo & San Fernando eastbound 34.178785 -118.305415 \n", + "3 Glenoaks & Providencia eastbound 34.179623 -118.301044 \n", + "4 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "5 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "6 Alameda & Lake eastbound 34.168937 -118.305502 \n", + "\n", + " pt_geom stop_id \n", + "2 POINT (-118.30541531103879 34.17878489736103) new_1 \n", + "3 POINT (-118.30104441612727 34.17962336385441) new_2 \n", + "4 POINT (-118.29787237592716 34.1769213295822) new_3 \n", + "5 POINT (-118.29952381900989 34.174365721132396) new_4 \n", + "6 POINT (-118.30550179211235 34.16893683695737) new_5 " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_blue = apply_manual_coords(df_blue, manual_coords_blue)\n", + "df_blue.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "d3b5d469-48b5-49df-ae91-315466705ddb", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_orange = gpd.GeoDataFrame(df, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "gdf_blue = gpd.GeoDataFrame(df_blue, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_orange = gdf_orange.to_crs(epsg=32611)\n", + "gdf_blue = gdf_blue.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_orange['buffer'] = gdf_orange.geometry.buffer(buffer_distance)\n", + "gdf_blue['buffer'] = gdf_blue.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "feec70b0-5a1b-4bf1-9ce5-f63340f9ce1c", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_orange.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "187c1008-dd0d-4622-9b60-e2095601bb6b", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange = gpd.overlay(acs_gdf, gdf_orange.set_geometry('buffer'), how='intersection')\n", + "geometry_intersect_blue = gpd.overlay(acs_gdf, gdf_blue.set_geometry('buffer'), how='intersection')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "174076a2-a975-41d8-88d3-ca874351d57a", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_orange['area_2'] = geometry_intersect_orange.geometry.area # area of overlap\n", + "geometry_intersect_orange['area_ratio'] = geometry_intersect_orange['area_2'] / geometry_intersect_orange['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_orange[f'{col}_adj'] = geometry_intersect_orange[col] * geometry_intersect_orange['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "3bbfeb90-9776-4d62-83dc-ccf5d0670ed5", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect_blue['area_2'] = geometry_intersect_blue.geometry.area # area of overlap\n", + "geometry_intersect_blue['area_ratio'] = geometry_intersect_blue['area_2'] / geometry_intersect_blue['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'public_asst_pop', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect_blue[f'{col}_adj'] = geometry_intersect_blue[col] * geometry_intersect_blue['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "bbf7b71a-c05a-4651-955b-484947ced81c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
STATEFPCOUNTYFPTRACTCEGEOIDFQGEOIDNAMENAMELSADSTUSPSNAMELSADCOSTATE_NAMELSADALANDAWATERtotal_poppoverty_popnon_us_citizenmale_65_to_66male_67_to_69male_70_to_74male_75_to_79male_80_to_84male_85_and_overfemale_65_to_66female_67_to_69female_70_to_74female_75_to_79female_80_to_84female_85_and_overmale_15_17male_18_19male_20male_21male_22_24female_15_17female_18_19female_20female_21female_22_24median_household_incomeincome_less_10000income_10000_14999income_15000_24999income_25000_34999income_35000_49999income_50000_64999income_65000_74999workers_with_no_carhouseholds_with_no_carspublic_asst_popveteran_popcounty_nameinc_extremelylowinc_verylowinc_lowinc_total_lowincomemale_seniorsfemale_seniorsmale_youthfemale_youthtotal_seniorstotal_youthdisabled_poparea_m2stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idgeometryarea_2area_ratiototal_pop_adjworkers_with_no_car_adjtotal_youth_adjtotal_seniors_adjpublic_asst_pop_adjinc_total_lowincome_adj
0060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks & Providenciawestboundadding_existingGlenoaks & Providencia westbound34.179274-118.301218POINT (380084.556 3782798.877)new_34POLYGON ((380440.877 3782607.168, 380421.029 3...380.6471400.0005634.2214920.0974020.6052420.6029900.4937652.403514
1060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks / Alamedaeastboundadding_existingGlenoaks / Alameda eastbound34.176921-118.297872POINT (380389.550 3782534.037)new_35POLYGON ((380620.646 3782807.227, 380769.228 3...122709.6295840.1815001360.88684331.399496195.112477194.386478159.175482774.823411
2060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Glenoaks / Alamedawestboundadding_existingGlenoaks / Alameda westbound34.176369-118.297764POINT (380398.772 3782472.656)new_36POLYGON ((380620.646 3782807.227, 380721.787 3...129254.1676510.1911801433.46774633.074142205.518515204.753795167.664872816.147480
3060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Alameda & San Fernandoeastboundadding_existingAlameda & San Fernando eastbound34.174366-118.299524POINT (380233.733 3782252.579)new_37POLYGON ((380436.486 3782602.281, 380458.557 3...20057.0765570.029666222.4390355.13229631.89143331.77276726.017476126.646071
4060373015021400000US06037301502060373015023015.02Census Tract 3015.02CALos Angeles CountyCaliforniaCT67593707498129617535548811334967131160156080111591532686307538201191908045999783555462653246526017326287751Los Angeles238611587254269433638631444107110751197676086.191403Alameda & San Fernandowestboundadding_existingAlameda & San Fernando westbound34.174307-118.300256POINT (380166.186 3782246.963)new_38POLYGON ((380408.138 3782570.733, 380422.907 3...3957.5911140.00585443.8908801.0126866.2927046.2692905.13367624.989353
\n", + "
" + ], + "text/plain": [ + " STATEFP COUNTYFP TRACTCE GEOIDFQ GEOID NAME \\\n", + "0 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "1 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "2 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "3 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "4 06 037 301502 1400000US06037301502 06037301502 3015.02 \n", + "\n", + " NAMELSAD STUSPS NAMELSADCO STATE_NAME LSAD ALAND \\\n", + "0 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "1 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "2 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "3 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "4 Census Tract 3015.02 CA Los Angeles County California CT 675937 \n", + "\n", + " AWATER total_pop poverty_pop non_us_citizen male_65_to_66 \\\n", + "0 0 7498 1296 1753 55 \n", + "1 0 7498 1296 1753 55 \n", + "2 0 7498 1296 1753 55 \n", + "3 0 7498 1296 1753 55 \n", + "4 0 7498 1296 1753 55 \n", + "\n", + " male_67_to_69 male_70_to_74 male_75_to_79 male_80_to_84 \\\n", + "0 48 81 133 49 \n", + "1 48 81 133 49 \n", + "2 48 81 133 49 \n", + "3 48 81 133 49 \n", + "4 48 81 133 49 \n", + "\n", + " male_85_and_over female_65_to_66 female_67_to_69 female_70_to_74 \\\n", + "0 67 131 160 156 \n", + "1 67 131 160 156 \n", + "2 67 131 160 156 \n", + "3 67 131 160 156 \n", + "4 67 131 160 156 \n", + "\n", + " female_75_to_79 female_80_to_84 female_85_and_over male_15_17 \\\n", + "0 0 80 111 59 \n", + "1 0 80 111 59 \n", + "2 0 80 111 59 \n", + "3 0 80 111 59 \n", + "4 0 80 111 59 \n", + "\n", + " male_18_19 male_20 male_21 male_22_24 female_15_17 female_18_19 \\\n", + "0 153 26 86 307 53 82 \n", + "1 153 26 86 307 53 82 \n", + "2 153 26 86 307 53 82 \n", + "3 153 26 86 307 53 82 \n", + "4 153 26 86 307 53 82 \n", + "\n", + " female_20 female_21 female_22_24 median_household_income \\\n", + "0 0 119 190 80459 \n", + "1 0 119 190 80459 \n", + "2 0 119 190 80459 \n", + "3 0 119 190 80459 \n", + "4 0 119 190 80459 \n", + "\n", + " income_less_10000 income_10000_14999 income_15000_24999 \\\n", + "0 997 835 554 \n", + "1 997 835 554 \n", + "2 997 835 554 \n", + "3 997 835 554 \n", + "4 997 835 554 \n", + "\n", + " income_25000_34999 income_35000_49999 income_50000_64999 \\\n", + "0 626 532 465 \n", + "1 626 532 465 \n", + "2 626 532 465 \n", + "3 626 532 465 \n", + "4 626 532 465 \n", + "\n", + " income_65000_74999 workers_with_no_car households_with_no_cars \\\n", + "0 260 173 262 \n", + "1 260 173 262 \n", + "2 260 173 262 \n", + "3 260 173 262 \n", + "4 260 173 262 \n", + "\n", + " public_asst_pop veteran_pop county_name inc_extremelylow inc_verylow \\\n", + "0 877 51 Los Angeles 2386 1158 \n", + "1 877 51 Los Angeles 2386 1158 \n", + "2 877 51 Los Angeles 2386 1158 \n", + "3 877 51 Los Angeles 2386 1158 \n", + "4 877 51 Los Angeles 2386 1158 \n", + "\n", + " inc_low inc_total_lowincome male_seniors female_seniors male_youth \\\n", + "0 725 4269 433 638 631 \n", + "1 725 4269 433 638 631 \n", + "2 725 4269 433 638 631 \n", + "3 725 4269 433 638 631 \n", + "4 725 4269 433 638 631 \n", + "\n", + " female_youth total_seniors total_youth disabled_pop area_m2 \\\n", + "0 444 1071 1075 1197 676086.191403 \n", + "1 444 1071 1075 1197 676086.191403 \n", + "2 444 1071 1075 1197 676086.191403 \n", + "3 444 1071 1075 1197 676086.191403 \n", + "4 444 1071 1075 1197 676086.191403 \n", + "\n", + " stop_name direction change_type \\\n", + "0 Glenoaks & Providencia westbound adding_existing \n", + "1 Glenoaks / Alameda eastbound adding_existing \n", + "2 Glenoaks / Alameda westbound adding_existing \n", + "3 Alameda & San Fernando eastbound adding_existing \n", + "4 Alameda & San Fernando westbound adding_existing \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "0 Glenoaks & Providencia westbound 34.179274 -118.301218 \n", + "1 Glenoaks / Alameda eastbound 34.176921 -118.297872 \n", + "2 Glenoaks / Alameda westbound 34.176369 -118.297764 \n", + "3 Alameda & San Fernando eastbound 34.174366 -118.299524 \n", + "4 Alameda & San Fernando westbound 34.174307 -118.300256 \n", + "\n", + " pt_geom stop_id \\\n", + "0 POINT (380084.556 3782798.877) new_34 \n", + "1 POINT (380389.550 3782534.037) new_35 \n", + "2 POINT (380398.772 3782472.656) new_36 \n", + "3 POINT (380233.733 3782252.579) new_37 \n", + "4 POINT (380166.186 3782246.963) new_38 \n", + "\n", + " geometry area_2 \\\n", + "0 POLYGON ((380440.877 3782607.168, 380421.029 3... 380.647140 \n", + "1 POLYGON ((380620.646 3782807.227, 380769.228 3... 122709.629584 \n", + "2 POLYGON ((380620.646 3782807.227, 380721.787 3... 129254.167651 \n", + "3 POLYGON ((380436.486 3782602.281, 380458.557 3... 20057.076557 \n", + "4 POLYGON ((380408.138 3782570.733, 380422.907 3... 3957.591114 \n", + "\n", + " area_ratio total_pop_adj workers_with_no_car_adj total_youth_adj \\\n", + "0 0.000563 4.221492 0.097402 0.605242 \n", + "1 0.181500 1360.886843 31.399496 195.112477 \n", + "2 0.191180 1433.467746 33.074142 205.518515 \n", + "3 0.029666 222.439035 5.132296 31.891433 \n", + "4 0.005854 43.890880 1.012686 6.292704 \n", + "\n", + " total_seniors_adj public_asst_pop_adj inc_total_lowincome_adj \n", + "0 0.602990 0.493765 2.403514 \n", + "1 194.386478 159.175482 774.823411 \n", + "2 204.753795 167.664872 816.147480 \n", + "3 31.772767 26.017476 126.646071 \n", + "4 6.269290 5.133676 24.989353 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geometry_intersect_orange.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "98309c42-52a9-4d91-a204-fc0bbc445b6b", + "metadata": {}, + "outputs": [], + "source": [ + "agg_orange = geometry_intersect_orange.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_orange = gdf_orange.merge(\n", + " agg_orange,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "36e31d14-b88f-4b54-849a-615f5755f369", + "metadata": {}, + "outputs": [], + "source": [ + "agg_blue = geometry_intersect_blue.groupby(['stop_name', 'direction']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_blue = gdf_blue.merge(\n", + " agg_blue,\n", + " on=['stop_name', 'direction'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "304753cf-efbf-4e3e-96e4-c8c126830d2b", + "metadata": {}, + "outputs": [], + "source": [ + "# add missing columns with placeholder values for now\n", + "gdf_orange['n_arrivals'] = np.nan\n", + "gdf_orange['n_routes'] = np.nan\n", + "gdf_blue['n_arrivals'] = np.nan\n", + "gdf_blue['n_routes'] = np.nan" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "be29a349-9d3d-4fa0-94b4-32c86f775309", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
00f80473907c7613e9fefbb71220e9e561692025-05-03 03:00:42.971504+00:004448070700[Ventura County Line][2]a1d8a74d9c3a75e730c939c450adbabfNonePOINT(-119.205025 34.250793)Ventura - EastNoneNoneNone
10f80473907c7613e9fefbb71220e9e561662025-05-03 03:00:42.971504+00:004448070460[Ventura County Line][2]3a87f621e075c95669ec7b2cd86a5cb8NonePOINT(-119.033829 34.216656)CamarilloNoneNoneNone
20f80473907c7613e9fefbb71220e9e561682025-05-03 03:00:42.971504+00:004448070700[Ventura County Line][2]cc329bf7c45f0d0757cac098804593e3NonePOINT(-119.176308 34.199276)OxnardNoneNoneNone
38d9623a1823a27925b7e2f00e44fc5bb1762025-04-10 03:06:18.227613+00:0011560000[115-13191][3]802db16116bcc0e942142fc822be66d2NonePOINT(-118.179775 33.946568)Rayo / SouthernNoneNone176
48d9623a1823a27925b7e2f00e44fc5bb165362025-04-10 03:06:18.227613+00:0022000330[217-13191][3]5ea46d1ea47954073422ebdc4150dfebNonePOINT(-118.368743 34.035653)Washington Fairfax HubNoneNone16536
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 0f80473907c7613e9fefbb71220e9e56 169 2025-05-03 03:00:42.971504+00:00 \n", + "1 0f80473907c7613e9fefbb71220e9e56 166 2025-05-03 03:00:42.971504+00:00 \n", + "2 0f80473907c7613e9fefbb71220e9e56 168 2025-05-03 03:00:42.971504+00:00 \n", + "3 8d9623a1823a27925b7e2f00e44fc5bb 176 2025-04-10 03:06:18.227613+00:00 \n", + "4 8d9623a1823a27925b7e2f00e44fc5bb 16536 2025-04-10 03:06:18.227613+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 4 4 48 0 \n", + "1 4 4 48 0 \n", + "2 4 4 48 0 \n", + "3 1 1 56 0 \n", + "4 2 2 0 0 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 70 70 0 [Ventura County Line] \n", + "1 70 46 0 [Ventura County Line] \n", + "2 70 70 0 [Ventura County Line] \n", + "3 0 0 0 [115-13191] \n", + "4 0 33 0 [217-13191] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [2] a1d8a74d9c3a75e730c939c450adbabf None \n", + "1 [2] 3a87f621e075c95669ec7b2cd86a5cb8 None \n", + "2 [2] cc329bf7c45f0d0757cac098804593e3 None \n", + "3 [3] 802db16116bcc0e942142fc822be66d2 None \n", + "4 [3] 5ea46d1ea47954073422ebdc4150dfeb None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.205025 34.250793) Ventura - East None \n", + "1 POINT(-119.033829 34.216656) Camarillo None \n", + "2 POINT(-119.176308 34.199276) Oxnard None \n", + "3 POINT(-118.179775 33.946568) Rayo / Southern None \n", + "4 POINT(-118.368743 34.035653) Washington Fairfax Hub None \n", + "\n", + " stop_desc stop_code \n", + "0 None None \n", + "1 None None \n", + "2 None None \n", + "3 None 176 \n", + "4 None 16536 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_agency.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "4ca8d618-a539-41ff-980c-45a628569ce6", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_agency.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "6988defb-0fe2-42cb-9fe9-af2bdef3433b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
00f80473907c7613e9fefbb71220e9e561692025-05-03 03:00:42.971504+00:004448070700[Ventura County Line][2]a1d8a74d9c3a75e730c939c450adbabfNonePOINT(-119.205025 34.250793)Ventura - EastNoneNoneNone[Ventura County Line]1
10f80473907c7613e9fefbb71220e9e561662025-05-03 03:00:42.971504+00:004448070460[Ventura County Line][2]3a87f621e075c95669ec7b2cd86a5cb8NonePOINT(-119.033829 34.216656)CamarilloNoneNoneNone[Ventura County Line]1
20f80473907c7613e9fefbb71220e9e561682025-05-03 03:00:42.971504+00:004448070700[Ventura County Line][2]cc329bf7c45f0d0757cac098804593e3NonePOINT(-119.176308 34.199276)OxnardNoneNoneNone[Ventura County Line]1
38d9623a1823a27925b7e2f00e44fc5bb1762025-04-10 03:06:18.227613+00:0011560000[115-13191][3]802db16116bcc0e942142fc822be66d2NonePOINT(-118.179775 33.946568)Rayo / SouthernNoneNone176[115-13191]1
48d9623a1823a27925b7e2f00e44fc5bb165362025-04-10 03:06:18.227613+00:0022000330[217-13191][3]5ea46d1ea47954073422ebdc4150dfebNonePOINT(-118.368743 34.035653)Washington Fairfax HubNoneNone16536[217-13191]1
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 0f80473907c7613e9fefbb71220e9e56 169 2025-05-03 03:00:42.971504+00:00 \n", + "1 0f80473907c7613e9fefbb71220e9e56 166 2025-05-03 03:00:42.971504+00:00 \n", + "2 0f80473907c7613e9fefbb71220e9e56 168 2025-05-03 03:00:42.971504+00:00 \n", + "3 8d9623a1823a27925b7e2f00e44fc5bb 176 2025-04-10 03:06:18.227613+00:00 \n", + "4 8d9623a1823a27925b7e2f00e44fc5bb 16536 2025-04-10 03:06:18.227613+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 4 4 48 0 \n", + "1 4 4 48 0 \n", + "2 4 4 48 0 \n", + "3 1 1 56 0 \n", + "4 2 2 0 0 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 70 70 0 [Ventura County Line] \n", + "1 70 46 0 [Ventura County Line] \n", + "2 70 70 0 [Ventura County Line] \n", + "3 0 0 0 [115-13191] \n", + "4 0 33 0 [217-13191] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [2] a1d8a74d9c3a75e730c939c450adbabf None \n", + "1 [2] 3a87f621e075c95669ec7b2cd86a5cb8 None \n", + "2 [2] cc329bf7c45f0d0757cac098804593e3 None \n", + "3 [3] 802db16116bcc0e942142fc822be66d2 None \n", + "4 [3] 5ea46d1ea47954073422ebdc4150dfeb None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.205025 34.250793) Ventura - East None \n", + "1 POINT(-119.033829 34.216656) Camarillo None \n", + "2 POINT(-119.176308 34.199276) Oxnard None \n", + "3 POINT(-118.179775 33.946568) Rayo / Southern None \n", + "4 POINT(-118.368743 34.035653) Washington Fairfax Hub None \n", + "\n", + " stop_desc stop_code route_id_array_parsed n_routes \n", + "0 None None [Ventura County Line] 1 \n", + "1 None None [Ventura County Line] 1 \n", + "2 None None [Ventura County Line] 1 \n", + "3 None 176 [115-13191] 1 \n", + "4 None 16536 [217-13191] 1 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "c09027f0-c22d-4055-b76a-1ac0089ecec4", + "metadata": {}, + "outputs": [], + "source": [ + "from shapely import wkt\n", + "\n", + "# convert WKT string → geometry object\n", + "df_existing['geometry'] = df_existing['pt_geom'].apply(wkt.loads)\n", + "\n", + "# extract lon/lat\n", + "df_existing['longitude'] = df_existing['geometry'].apply(lambda geom: geom.x)\n", + "df_existing['latitude'] = df_existing['geometry'].apply(lambda geom: geom.y)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "935a70bd-867a-49b2-867b-12a1b4f71635", + "metadata": {}, + "outputs": [], + "source": [ + "# drop missing coords just in case\n", + "df_existing = df_existing.dropna(subset=['latitude', 'longitude'])\n", + "df_new_orange = gdf_orange.dropna(subset=['latitude', 'longitude'])\n", + "df_new_blue = gdf_blue.dropna(subset=['latitude', 'longitude'])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "da409a53-ae7b-4f11-a157-d76388882c32", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import BallTree\n", + "import numpy as np\n", + "\n", + "existing_coords = np.radians(df_existing[['latitude', 'longitude']])\n", + "new_coords_orange = np.radians(df_new_orange[['latitude', 'longitude']])\n", + "new_coords_blue = np.radians(df_new_blue[['latitude', 'longitude']])\n", + "\n", + "tree = BallTree(existing_coords, metric='haversine')\n", + "dist_orange, ind_orange = tree.query(new_coords_orange, k=1)\n", + "dist_blue, ind_blue = tree.query(new_coords_blue, k=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4ac0ffaa-9a88-45e3-81ce-2ad35ffd6437", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_orange = ind_orange.flatten()\n", + "\n", + "df_new_orange['n_routes_base'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "\n", + "df_new_orange['nearest_stop_distance_m'] = dist_orange.flatten() * 6371000\n", + "df_new_orange['matched_feed_key'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", + "df_new_orange['matched_stop_name'] = df_existing.iloc[matched_idx_orange]['stop_name'].values\n", + "df_new_orange['matched_stop_id'] = df_existing.iloc[matched_idx_orange]['stop_id'].values\n", + "df_new_orange['matched_n_routes'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", + "df_new_orange['matched_agency_name'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", + "df_new_orange['n_arrivals_base'] = df_existing.iloc[matched_idx_orange]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "e15d37f1-42de-441c-b46c-2ed73103df13", + "metadata": {}, + "outputs": [], + "source": [ + "matched_idx_blue = ind_blue.flatten()\n", + "df_new_blue['n_routes_base'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "\n", + "df_new_blue['nearest_stop_distance_m'] = dist_blue.flatten() * 6371000\n", + "df_new_blue['matched_feed_key'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", + "df_new_blue['matched_stop_name'] = df_existing.iloc[matched_idx_blue]['stop_name'].values\n", + "df_new_blue['matched_stop_id'] = df_existing.iloc[matched_idx_blue]['stop_id'].values\n", + "df_new_blue['matched_n_routes'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", + "df_new_blue['matched_agency_name'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", + "df_new_blue['n_arrivals_base'] = df_existing.iloc[matched_idx_blue]['daily_arrivals'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "d80ef79a-3148-4cb9-baf9-12854aba5016", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routes
37Alameda & San Fernandowestbound16Alameda / San Fernando180091
36Alameda & San Fernandoeastbound46San Fernando / Alameda54531
19Amherst Dr / San Fernandowestbound64San Fernando / Scott123482
18Amherst Dr / San Fernandoeastbound67San Fernando / Amherst38652
13Empire & Buena Vistaeastbound67Empire / Buena Vista18172
17Empire & Grismerwestbound64San Fernando / Grismer123462
16Empire & Grismereastbound67San Fernando / Grismer38682
12Empire & Ontarioeastbound67Empire / Ontario18212
15Empire & Valpredawestbound64Empire / Valpreda46352
14Empire & Valpredaeastbound67Empire / Valpreda12492
38Flower & Alamedaeastbound16Alameda / Lake181191
39Flower & Alamedawestbound16Alameda / Lake181191
20Glenoaks & Bethanyeastbound32Glenoaks / Bethany35791
21Glenoaks & Bethanywestbound33Glenoaks / Bethany120661
25Glenoaks & Cypresswestbound33Glenoaks / Cypress120671
24Glenoaks & Cypresseastbound32Glenoaks / Cypress35801
22Glenoaks & Fairmounteastbound32Glenoaks / Fairmount35821
23Glenoaks & Fairmountwestbound33Glenoaks / Fairmount120691
26Glenoaks & Magnoliaeastbound32Glenoaks / Magnolia120681
27Glenoaks & Magnoliawestbound33Glenoaks / Magnolia35811
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "37 Alameda & San Fernando westbound 16 \n", + "36 Alameda & San Fernando eastbound 46 \n", + "19 Amherst Dr / San Fernando westbound 64 \n", + "18 Amherst Dr / San Fernando eastbound 67 \n", + "13 Empire & Buena Vista eastbound 67 \n", + "17 Empire & Grismer westbound 64 \n", + "16 Empire & Grismer eastbound 67 \n", + "12 Empire & Ontario eastbound 67 \n", + "15 Empire & Valpreda westbound 64 \n", + "14 Empire & Valpreda eastbound 67 \n", + "38 Flower & Alameda eastbound 16 \n", + "39 Flower & Alameda westbound 16 \n", + "20 Glenoaks & Bethany eastbound 32 \n", + "21 Glenoaks & Bethany westbound 33 \n", + "25 Glenoaks & Cypress westbound 33 \n", + "24 Glenoaks & Cypress eastbound 32 \n", + "22 Glenoaks & Fairmount eastbound 32 \n", + "23 Glenoaks & Fairmount westbound 33 \n", + "26 Glenoaks & Magnolia eastbound 32 \n", + "27 Glenoaks & Magnolia westbound 33 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \n", + "37 Alameda / San Fernando 18009 1 \n", + "36 San Fernando / Alameda 5453 1 \n", + "19 San Fernando / Scott 12348 2 \n", + "18 San Fernando / Amherst 3865 2 \n", + "13 Empire / Buena Vista 1817 2 \n", + "17 San Fernando / Grismer 12346 2 \n", + "16 San Fernando / Grismer 3868 2 \n", + "12 Empire / Ontario 1821 2 \n", + "15 Empire / Valpreda 4635 2 \n", + "14 Empire / Valpreda 1249 2 \n", + "38 Alameda / Lake 18119 1 \n", + "39 Alameda / Lake 18119 1 \n", + "20 Glenoaks / Bethany 3579 1 \n", + "21 Glenoaks / Bethany 12066 1 \n", + "25 Glenoaks / Cypress 12067 1 \n", + "24 Glenoaks / Cypress 3580 1 \n", + "22 Glenoaks / Fairmount 3582 1 \n", + "23 Glenoaks / Fairmount 12069 1 \n", + "26 Glenoaks / Magnolia 12068 1 \n", + "27 Glenoaks / Magnolia 3581 1 " + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_orange[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes',]].sort_values('stop_name').head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "51ba1872-0315-4e91-ac93-1e4512191513", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionn_arrivals_basematched_stop_namematched_stop_idmatched_n_routes
8Alameda & Keystoneeastbound17Buena Vista / Alameda158401
35Alameda & Keystonewestbound17Buena Vista / Alameda158401
4Alameda & Lakeeastbound16Alameda / Lake181191
31Alameda & Lakewestbound16Alameda / Lake180751
32Alameda & Mainwestbound274Cesar E Chavez / Alameda92184
5Alameda & Maineastbound274Cesar E Chavez / Alameda92184
6Alameda & Mariposaeastbound16Victory / Alameda180761
33Alameda & Mariposawestbound17Olive / Reese180711
7Alameda & Reeseeastbound17Olive / Parish180701
34Alameda & Reesewestbound17Olive / Keystone180691
30Alameda & San Fernandowestbound16Alameda / San Fernando180091
3Alameda & San Fernandoeastbound46San Fernando / Alameda54531
9Alameda / Buena Vistaeastbound23Alameda / Buena Vista501000001
36Alameda / Buena Vistawestbound24Alameda / Buena Vista74871
41Buena Vista & Burbankwestbound15Burbank / Buena Vista75341
15Buena Vista & Burbankeastbound16Burbank / Buena Vista158801
14Buena Vista & Chandlereastbound46Magnolia / Buena Vista202831
40Buena Vista & Chandlerwestbound15Burbank / Buena Vista75341
39Buena Vista & Clarkwestbound48Magnolia / Buena Vista201531
12Buena Vista & Clarkeastbound48Magnolia / Buena Vista201531
\n", + "
" + ], + "text/plain": [ + " stop_name direction n_arrivals_base \\\n", + "8 Alameda & Keystone eastbound 17 \n", + "35 Alameda & Keystone westbound 17 \n", + "4 Alameda & Lake eastbound 16 \n", + "31 Alameda & Lake westbound 16 \n", + "32 Alameda & Main westbound 274 \n", + "5 Alameda & Main eastbound 274 \n", + "6 Alameda & Mariposa eastbound 16 \n", + "33 Alameda & Mariposa westbound 17 \n", + "7 Alameda & Reese eastbound 17 \n", + "34 Alameda & Reese westbound 17 \n", + "30 Alameda & San Fernando westbound 16 \n", + "3 Alameda & San Fernando eastbound 46 \n", + "9 Alameda / Buena Vista eastbound 23 \n", + "36 Alameda / Buena Vista westbound 24 \n", + "41 Buena Vista & Burbank westbound 15 \n", + "15 Buena Vista & Burbank eastbound 16 \n", + "14 Buena Vista & Chandler eastbound 46 \n", + "40 Buena Vista & Chandler westbound 15 \n", + "39 Buena Vista & Clark westbound 48 \n", + "12 Buena Vista & Clark eastbound 48 \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \n", + "8 Buena Vista / Alameda 15840 1 \n", + "35 Buena Vista / Alameda 15840 1 \n", + "4 Alameda / Lake 18119 1 \n", + "31 Alameda / Lake 18075 1 \n", + "32 Cesar E Chavez / Alameda 9218 4 \n", + "5 Cesar E Chavez / Alameda 9218 4 \n", + "6 Victory / Alameda 18076 1 \n", + "33 Olive / Reese 18071 1 \n", + "7 Olive / Parish 18070 1 \n", + "34 Olive / Keystone 18069 1 \n", + "30 Alameda / San Fernando 18009 1 \n", + "3 San Fernando / Alameda 5453 1 \n", + "9 Alameda / Buena Vista 50100000 1 \n", + "36 Alameda / Buena Vista 7487 1 \n", + "41 Burbank / Buena Vista 7534 1 \n", + "15 Burbank / Buena Vista 15880 1 \n", + "14 Magnolia / Buena Vista 20283 1 \n", + "40 Burbank / Buena Vista 7534 1 \n", + "39 Magnolia / Buena Vista 20153 1 \n", + "12 Magnolia / Buena Vista 20153 1 " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_new_blue[['stop_name', 'direction', 'n_arrivals_base', 'matched_stop_name', 'matched_stop_id', 'matched_n_routes',]].sort_values('stop_name').head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "a6c6c192-f74a-4585-bf29-ce12e2105574", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing')]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "orange_stops = set(zip(df_new_orange['stop_name'], df_new_orange['direction'], df_new_orange['change_type'], ))\n", + "blue_stops = set(zip(df_new_blue['stop_name'], df_new_blue['direction'], df_new_blue['change_type']))\n", + "\n", + "common_stops = orange_stops & blue_stops\n", + "list(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "44a78d88-5ee2-4476-bad6-077dc5a1c56b", + "metadata": {}, + "outputs": [], + "source": [ + "df_new_orange['source'] = 'orange'\n", + "df_new_blue['source'] = 'blue'" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "6eb322ad-e81d-43c7-aa40-4eaa6b129d2c", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined = pd.concat([df_new_orange, df_new_blue], ignore_index=True)\n", + "df_combined = df_combined[\n", + " df_combined['change_type'].isin(['new_stop', 'adding_existing'])\n", + "].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "056af27d-c6b4-4e2f-8675-69c7c44668a6", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['key'] = list(zip(\n", + " df_combined['stop_name'],\n", + " df_combined['direction'],\n", + " df_combined['change_type']\n", + "))\n", + "\n", + "df_combined['is_common'] = df_combined['key'].isin(common_stops)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "53fcc11a-5a46-45eb-a58f-69fca23554d3", + "metadata": {}, + "outputs": [], + "source": [ + "# REMOVE duplicate rows for common stops\n", + "df_combined = (\n", + " df_combined\n", + " .sort_values('source') # keeps orange if duplicate exists\n", + " .drop_duplicates(subset=['key'], keep='first')\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f706ac72-936a-46fa-8994-908e72968689", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['n_routes_base'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 0,\n", + " df_combined['n_routes_base']\n", + ")\n", + "\n", + "df_combined['n_routes_scn'] = np.where(\n", + " df_combined['change_type'] == 'new_stop',\n", + " 1,\n", + " df_combined['n_routes_base'] + 1\n", + ")\n", + "\n", + "# instead of forcing 2, increment properly\n", + "df_combined.loc[\n", + " df_combined['is_common'] & (df_combined['change_type'] == 'adding_existing'),\n", + " 'n_routes_scn'\n", + "] += 1\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "72301442-3a71-4448-bd99-cb25116539ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_name', 'direction', 'change_type', 'stop_dir_key', 'latitude',\n", + " 'longitude', 'pt_geom', 'stop_id', 'buffer', 'total_pop_adj',\n", + " 'workers_with_no_car_adj', 'total_seniors_adj', 'total_youth_adj',\n", + " 'inc_total_lowincome_adj', 'n_arrivals', 'n_routes', 'n_routes_base',\n", + " 'nearest_stop_distance_m', 'matched_feed_key', 'matched_stop_name',\n", + " 'matched_stop_id', 'matched_n_routes', 'matched_agency_name',\n", + " 'n_arrivals_base', 'source', 'key', 'is_common', 'n_routes_scn'],\n", + " dtype='object')" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.columns" + ] + }, + { + "cell_type": "markdown", + "id": "64cf3875-a0cc-43e9-a19b-b36252fbbd9f", + "metadata": {}, + "source": [ + "Orange route currently has 51 arrivals; Proposed Blue Routes service :would operate every 20 minutes from 6:00am to 8:00pm, Monday through Friday = 43 arrivals per day." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "93666c83-c8be-4e00-b455-005fa305e6aa", + "metadata": {}, + "outputs": [], + "source": [ + "# apply base reset\n", + "is_new = df_combined['change_type'] == 'new_stop'\n", + "df_combined.loc[is_new, 'n_arrivals_base'] = 0\n", + "\n", + "# define correct increment\n", + "increment = np.where(\n", + " df_combined['is_common'],\n", + " 69, \n", + " df_combined['source'].map({'orange': 35, 'blue': 34})\n", + ")\n", + "\n", + "# final calculation \n", + "df_combined['n_arrivals_scn'] = df_combined['n_arrivals_base'] + increment\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "ce8299ba-8b45-4449-913c-5f1138e9a9ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_namedirectionchange_typestop_dir_keylatitudelongitudept_geomstop_idbuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjn_arrivalsn_routesn_routes_basenearest_stop_distance_mmatched_feed_keymatched_stop_namematched_stop_idmatched_n_routesmatched_agency_namen_arrivals_basesourcekeyis_commonn_routes_scnn_arrivals_scn
45Alameda & Maineastboundnew_stopAlameda & Main eastbound34.058825-118.237278POINT (385815.509 3769368.949)new_6POLYGON ((386220.181 3769368.949, 386218.233 3...4217.842162139.410239586.593147428.3096061993.392782NaNNaN094.9386468d9623a1823a27925b7e2f00e44fc5bbCesar E Chavez / Alameda921848d9623a1823a27925b7e2f00e44fc5bb0blue(Alameda & Main, eastbound, new_stop)False134
66Verdugo & Ikea Waywestboundadding_existingVerdugo & Ikea Way westbound34.177147-118.307473POINT (379505.037 3782570.325)new_27POLYGON ((379909.709 3782570.325, 379907.761 3...2363.59648969.808219432.243641247.9541901308.536414NaNNaN69.4068208d9623a1823a27925b7e2f00e44fc5bbVerdugo / Ikea168268d9623a1823a27925b7e2f00e44fc5bb144blue(Verdugo & Ikea Way, westbound, adding_existing)False7178
65Cohasset & Bloomingtoneastboundnew_stopCohasset & Bloomington eastbound34.206547-118.345238POINT (376067.409 3785875.904)new_26POLYGON ((376472.081 3785875.904, 376470.133 3...1353.34812314.113858241.864080130.031029661.384824NaNNaN0290.1600708d9623a1823a27925b7e2f00e44fc5bbGlenoaks / Cabrini1076018d9623a1823a27925b7e2f00e44fc5bb0blue(Cohasset & Bloomington, eastbound, new_stop)False134
\n", + "
" + ], + "text/plain": [ + " stop_name direction change_type \\\n", + "45 Alameda & Main eastbound new_stop \n", + "66 Verdugo & Ikea Way westbound adding_existing \n", + "65 Cohasset & Bloomington eastbound new_stop \n", + "\n", + " stop_dir_key latitude longitude \\\n", + "45 Alameda & Main eastbound 34.058825 -118.237278 \n", + "66 Verdugo & Ikea Way westbound 34.177147 -118.307473 \n", + "65 Cohasset & Bloomington eastbound 34.206547 -118.345238 \n", + "\n", + " pt_geom stop_id \\\n", + "45 POINT (385815.509 3769368.949) new_6 \n", + "66 POINT (379505.037 3782570.325) new_27 \n", + "65 POINT (376067.409 3785875.904) new_26 \n", + "\n", + " buffer total_pop_adj \\\n", + "45 POLYGON ((386220.181 3769368.949, 386218.233 3... 4217.842162 \n", + "66 POLYGON ((379909.709 3782570.325, 379907.761 3... 2363.596489 \n", + "65 POLYGON ((376472.081 3785875.904, 376470.133 3... 1353.348123 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "45 139.410239 586.593147 428.309606 \n", + "66 69.808219 432.243641 247.954190 \n", + "65 14.113858 241.864080 130.031029 \n", + "\n", + " inc_total_lowincome_adj n_arrivals n_routes n_routes_base \\\n", + "45 1993.392782 NaN NaN 0 \n", + "66 1308.536414 NaN NaN 6 \n", + "65 661.384824 NaN NaN 0 \n", + "\n", + " nearest_stop_distance_m matched_feed_key \\\n", + "45 94.938646 8d9623a1823a27925b7e2f00e44fc5bb \n", + "66 9.406820 8d9623a1823a27925b7e2f00e44fc5bb \n", + "65 290.160070 8d9623a1823a27925b7e2f00e44fc5bb \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \\\n", + "45 Cesar E Chavez / Alameda 9218 4 \n", + "66 Verdugo / Ikea 1682 6 \n", + "65 Glenoaks / Cabrini 10760 1 \n", + "\n", + " matched_agency_name n_arrivals_base source \\\n", + "45 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", + "66 8d9623a1823a27925b7e2f00e44fc5bb 144 blue \n", + "65 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", + "\n", + " key is_common n_routes_scn \\\n", + "45 (Alameda & Main, eastbound, new_stop) False 1 \n", + "66 (Verdugo & Ikea Way, westbound, adding_existing) False 7 \n", + "65 (Cohasset & Bloomington, eastbound, new_stop) False 1 \n", + "\n", + " n_arrivals_scn \n", + "45 34 \n", + "66 178 \n", + "65 34 " + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "0fda613d-8e5a-41cb-b13e-88b4cbe37803", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined['stop_group'] = df_combined['stop_name']\n", + "\n", + "df_grouped = df_combined.groupby('stop_group').agg({\n", + " 'n_arrivals_base': 'mean',\n", + " 'n_arrivals_scn': 'mean',\n", + " 'n_routes_base': 'mean',\n", + " 'n_routes_scn': 'mean',\n", + " 'total_pop_adj': 'mean',\n", + " 'workers_with_no_car_adj': 'mean',\n", + " 'total_youth_adj': 'mean',\n", + " 'total_seniors_adj': 'mean',\n", + " 'inc_total_lowincome_adj': 'mean',\n", + " 'change_type': lambda x: ', '.join(sorted(x.unique()))\n", + "}).reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "ddb3f6e3-354a-4cef-a3f8-1fbd67f009b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_group', 'n_arrivals_base', 'n_arrivals_scn', 'n_routes_base',\n", + " 'n_routes_scn', 'total_pop_adj', 'workers_with_no_car_adj',\n", + " 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj',\n", + " 'change_type'],\n", + " dtype='object')" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_grouped.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "c5d0bdfa-162b-4599-9542-347e8ed64b77", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing = stop_route_df[stop_route_df['organization_name'] == \"City of Burbank\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "71376262-2458-42cb-9559-4448854868f3", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing = df_burbank_existing[\n", + " ~df_burbank_existing['stop_name'].isin(df_grouped['stop_group'])\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "58a76ee2-9c75-4f5d-bf6b-ac9fb517b19b", + "metadata": {}, + "outputs": [], + "source": [ + "df_burbank_existing['n_arrivals_base'] = 0\n", + "df_burbank_existing['n_arrivals_scn'] = df_burbank_existing['route_id_list'].apply(\n", + " lambda x: 23 if '3162' in x else 35\n", + ")\n", + "df_burbank_existing = df_burbank_existing.rename(columns={\n", + " 'stop_name': 'stop_group'\n", + "})\n", + "df_burbank_existing['n_routes_base'] = df_burbank['n_routes']\n", + "df_burbank_existing['n_routes_scn'] = df_burbank['n_routes']\n", + "df_burbank_existing['change_type'] = 'already_present'\n", + "\n", + "\n", + "df_burbank_filtered = df_burbank_existing[\n", + " [ 'stop_group',\n", + " 'n_arrivals_base',\n", + " 'n_arrivals_scn',\n", + " 'n_routes_base',\n", + " 'n_routes_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_seniors_adj',\n", + " 'total_youth_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'change_type'\n", + " \n", + " ]\n", + "]\n", + "\n", + "\n", + "# Append\n", + "df_combined_new_service = pd.concat([df_burbank_filtered, \n", + " df_grouped], ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "eb74729b-8888-41b9-b76f-d107c12814cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_groupn_arrivals_basen_arrivals_scnn_routes_basen_routes_scntotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjchange_type
71Glenoaks & Verdugo59.594.52.03.03794.209054122.813207836.502994358.0502782277.684419adding_existing, new_stop
61Empire & Grismer65.5100.52.03.02475.16061030.875592272.789807273.0376401224.737916adding_existing
6Burbank & Buena Vista0.035.01.01.01555.1735348.408419216.064631140.010551729.352821already_present
77Hollywood & Thorton65.0100.03.04.0469.4539329.04308250.98201675.883257230.533073adding_existing
37Universal Redline Station0.023.01.01.01557.14804521.317084111.254863159.631126826.791370already_present
\n", + "
" + ], + "text/plain": [ + " stop_group n_arrivals_base n_arrivals_scn n_routes_base \\\n", + "71 Glenoaks & Verdugo 59.5 94.5 2.0 \n", + "61 Empire & Grismer 65.5 100.5 2.0 \n", + "6 Burbank & Buena Vista 0.0 35.0 1.0 \n", + "77 Hollywood & Thorton 65.0 100.0 3.0 \n", + "37 Universal Redline Station 0.0 23.0 1.0 \n", + "\n", + " n_routes_scn total_pop_adj workers_with_no_car_adj total_seniors_adj \\\n", + "71 3.0 3794.209054 122.813207 836.502994 \n", + "61 3.0 2475.160610 30.875592 272.789807 \n", + "6 1.0 1555.173534 8.408419 216.064631 \n", + "77 4.0 469.453932 9.043082 50.982016 \n", + "37 1.0 1557.148045 21.317084 111.254863 \n", + "\n", + " total_youth_adj inc_total_lowincome_adj change_type \n", + "71 358.050278 2277.684419 adding_existing, new_stop \n", + "61 273.037640 1224.737916 adding_existing \n", + "6 140.010551 729.352821 already_present \n", + "77 75.883257 230.533073 adding_existing \n", + "37 159.631126 826.791370 already_present " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined_new_service.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "db5df34e-0dd3-4998-9d89-ffd81328589a", + "metadata": {}, + "outputs": [], + "source": [ + "rail_stops = [\n", + " \"Universal Redline Station\",\n", + " \"NoHo Station\",\n", + " \"Metrolink Station\",\n", + " \"Hollywood Burbank Airport RITC\",\n", + " \"New BUR terminal\",\n", + " \n", + "]\n", + "\n", + "df_combined_new_service[\"has_rail_connection_dummy\"] = 0\n", + "\n", + "df_combined_new_service.loc[\n", + " df_combined_new_service[\"stop_group\"].isin(rail_stops),\n", + " \"has_rail_connection_dummy\"\n", + "] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "2d549fe3-0f2e-4c5d-ac6f-dc323b2a6a69", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_combined_new_service[[\n", + " 'n_routes_scn',\n", + " 'n_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'n_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[model_fe.model.exog_names]\n", + "df_combined_new_service['pred_scenario'] = model_fe.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "cd3a3883-8f57-446e-af8b-573d098b1abb", + "metadata": {}, + "outputs": [], + "source": [ + "X_base = df_combined_new_service[[\n", + " 'n_routes_base',\n", + " 'n_arrivals_base',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + " 'has_rail_connection_dummy'\n", + "]].fillna(0)\n", + "\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes_base': 'n_routes',\n", + " 'n_arrivals_base': 'n_arrivals'\n", + "})\n", + "\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "\n", + "X_base = sm.add_constant(X_base)\n", + "X_base = X_base[model_fe.model.exog_names]\n", + "df_combined_new_service['pred_baseline'] = model_fe.predict(X_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "fda44ec2-62d7-4809-b43c-bd287cf58443", + "metadata": {}, + "outputs": [], + "source": [ + "df_combined_new_service['ridership_change'] = (\n", + " df_combined_new_service['pred_scenario'] - df_combined_new_service['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "a9392504-ad1c-407f-9204-1663043528d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "110.39041823661147\n" + ] + } + ], + "source": [ + "ridership_change_sunday= df_combined_new_service[\"ridership_change\"].sum()\n", + "print(ridership_change_sunday)" + ] + }, + { + "cell_type": "markdown", + "id": "79bdc190-3bf0-4fc8-ac41-4df7eefe99ee", + "metadata": {}, + "source": [ + "## Querying NTD Ridership Data for Burbank Bus Service" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "65b17dee-a2d3-40f3-a8a1-50a9c10c53fb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "45.591242731720534" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_change_sunday*0.413" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 \n", + " AND agency IN (\n", + " 'City of Burbank',\n", + " 'Southern California Regional Rail Authority, dba: Metrolink',\n", + " 'Los Angeles County Metropolitan Transportation Authority , dba: Metro'\n", + " )\n", + " \"\"\"\n", + " ridership_data= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", + "metadata": {}, + "outputs": [], + "source": [ + "# City of Burbank UPT\n", + "burbank_upt = ridership_data.loc[\n", + " ridership_data[\"agency\"] == \"City of Burbank\",\n", + " \"unlinked_passenger_trips_upt\"\n", + "].iloc[0]\n", + "\n", + "# City of Burbank average daily ridership\n", + "burbank_avg_daily = burbank_upt / 365" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "da312c75-80af-4dfc-8297-68cabdabe6de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "579.5698630136986" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "burbank_avg_daily" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Pyproject Local (use-venv)", + "language": "python", + "name": "pyproject_local_kernel_use_venv" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb similarity index 78% rename from ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb rename to ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb index 72b1e9e33..c87366cf7 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Model_Exploration_Burbank.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb @@ -62,9 +62,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", - "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + "/home/jovyan/data-analyses/.venv/bin/python: No module named pip\n", + "Note: you may need to restart the kernel to use updated packages.\n" ] } ], @@ -82,21 +81,19 @@ "# Importing necessary package \n", "import pandas as pd \n", "import geopandas as gpd\n", - "pd.set_option('display.max_columns', None)\n", + "import numpy as np\n", "import os\n", "import google.auth\n", "import gcsfs\n", "fs = gcsfs.GCSFileSystem()\n", - "import statsmodels.api as sm\n", - "import numpy as np\n", - "from scipy.stats import skew\n", "from calitp_data_analysis.sql import get_engine\n", "db_engine = get_engine()\n", "credentials, project = google.auth.default()\n", - "fs = gcsfs.GCSFileSystem()\n", - "import matplotlib.pyplot as plt\n", + "pd.set_option('display.max_columns', None)\n", "\n", "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", "from statsmodels.stats.outliers_influence import variance_inflation_factor" ] }, @@ -122,7 +119,7 @@ "data": { "text/plain": [ "Index(['organization_name', 'feed_key', 'stop_id', 'stop_name', 'stop_code',\n", - " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type',\n", + " 'n_arrivals', 'n_routes', 'pt_geom', 'day_type', 'route_id_list',\n", " 'average_daily_boardings', 'average_daily_alightings', 'start_date',\n", " 'end_date', 'geometry', 'total_pop_adj', 'poverty_pop_adj',\n", " 'non_us_citizen_adj', 'workers_with_no_car_adj',\n", @@ -176,7 +173,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -199,7 +196,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/geopandas/geodataframe.py:1528: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", @@ -255,8 +252,8 @@ "Model Family: NegativeBinomial Df Model: 7\n", "Link Function: Log Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -104.77\n", - "Date: Wed, 06 May 2026 Deviance: 26.862\n", - "Time: 18:46:59 Pearson chi2: 21.2\n", + "Date: Thu, 07 May 2026 Deviance: 26.862\n", + "Time: 19:53:39 Pearson chi2: 21.2\n", "No. Iterations: 18 Pseudo R-squ. (CS): 0.5294\n", "Covariance Type: nonrobust \n", "=============================================================================================\n", @@ -278,7 +275,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" ] } @@ -2170,7 +2167,7 @@ "df_new_orange['n_routes_base'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", "\n", "df_new_orange['nearest_stop_distance_m'] = dist_orange.flatten() * 6371000\n", - "\n", + "df_new_orange['matched_feed_key'] = df_existing.iloc[matched_idx_orange]['feed_key'].values\n", "df_new_orange['matched_stop_name'] = df_existing.iloc[matched_idx_orange]['stop_name'].values\n", "df_new_orange['matched_stop_id'] = df_existing.iloc[matched_idx_orange]['stop_id'].values\n", "df_new_orange['matched_n_routes'] = df_existing.iloc[matched_idx_orange]['n_routes'].values\n", @@ -2189,7 +2186,7 @@ "df_new_blue['n_routes_base'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", "\n", "df_new_blue['nearest_stop_distance_m'] = dist_blue.flatten() * 6371000\n", - "\n", + "df_new_blue['matched_feed_key'] = df_existing.iloc[matched_idx_blue]['feed_key'].values\n", "df_new_blue['matched_stop_name'] = df_existing.iloc[matched_idx_blue]['stop_name'].values\n", "df_new_blue['matched_stop_id'] = df_existing.iloc[matched_idx_blue]['stop_id'].values\n", "df_new_blue['matched_n_routes'] = df_existing.iloc[matched_idx_blue]['n_routes'].values\n", @@ -2558,11 +2555,11 @@ { "data": { "text/plain": [ - "[('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", " ('Alameda & San Fernando', 'westbound', 'adding_existing')]" ] }, @@ -2735,6 +2732,7 @@ " n_routes\n", " n_routes_base\n", " nearest_stop_distance_m\n", + " matched_feed_key\n", " matched_stop_name\n", " matched_stop_id\n", " matched_n_routes\n", @@ -2768,6 +2766,7 @@ " NaN\n", " 0\n", " 94.938646\n", + " 8d9623a1823a27925b7e2f00e44fc5bb\n", " Cesar E Chavez / Alameda\n", " 9218\n", " 4\n", @@ -2799,6 +2798,7 @@ " NaN\n", " 6\n", " 9.406820\n", + " 8d9623a1823a27925b7e2f00e44fc5bb\n", " Verdugo / Ikea\n", " 1682\n", " 6\n", @@ -2830,6 +2830,7 @@ " NaN\n", " 0\n", " 290.160070\n", + " 8d9623a1823a27925b7e2f00e44fc5bb\n", " Glenoaks / Cabrini\n", " 10760\n", " 1\n", @@ -2876,25 +2877,30 @@ "66 1308.536414 NaN NaN 6 \n", "65 661.384824 NaN NaN 0 \n", "\n", - " nearest_stop_distance_m matched_stop_name matched_stop_id \\\n", - "45 94.938646 Cesar E Chavez / Alameda 9218 \n", - "66 9.406820 Verdugo / Ikea 1682 \n", - "65 290.160070 Glenoaks / Cabrini 10760 \n", + " nearest_stop_distance_m matched_feed_key \\\n", + "45 94.938646 8d9623a1823a27925b7e2f00e44fc5bb \n", + "66 9.406820 8d9623a1823a27925b7e2f00e44fc5bb \n", + "65 290.160070 8d9623a1823a27925b7e2f00e44fc5bb \n", + "\n", + " matched_stop_name matched_stop_id matched_n_routes \\\n", + "45 Cesar E Chavez / Alameda 9218 4 \n", + "66 Verdugo / Ikea 1682 6 \n", + "65 Glenoaks / Cabrini 10760 1 \n", "\n", - " matched_n_routes matched_agency_name n_arrivals_base \\\n", - "45 4 8d9623a1823a27925b7e2f00e44fc5bb 0 \n", - "66 6 8d9623a1823a27925b7e2f00e44fc5bb 217 \n", - "65 1 8d9623a1823a27925b7e2f00e44fc5bb 0 \n", + " matched_agency_name n_arrivals_base source \\\n", + "45 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", + "66 8d9623a1823a27925b7e2f00e44fc5bb 217 blue \n", + "65 8d9623a1823a27925b7e2f00e44fc5bb 0 blue \n", "\n", - " source key is_common \\\n", - "45 blue (Alameda & Main, eastbound, new_stop) False \n", - "66 blue (Verdugo & Ikea Way, westbound, adding_existing) False \n", - "65 blue (Cohasset & Bloomington, eastbound, new_stop) False \n", + " key is_common n_routes_scn \\\n", + "45 (Alameda & Main, eastbound, new_stop) False 1 \n", + "66 (Verdugo & Ikea Way, westbound, adding_existing) False 7 \n", + "65 (Cohasset & Bloomington, eastbound, new_stop) False 1 \n", "\n", - " n_routes_scn n_arrivals_scn \n", - "45 1 43 \n", - "66 7 260 \n", - "65 1 43 " + " n_arrivals_scn \n", + "45 43 \n", + "66 260 \n", + "65 43 " ] }, "execution_count": 48, @@ -3008,6 +3014,388 @@ "df_grouped['pred_baseline'] = model_fe.predict(X_base)" ] }, + { + "cell_type": "code", + "execution_count": 69, + "id": "d9e988f3-6498-4935-9f17-f748ec9e8696", + "metadata": {}, + "outputs": [], + "source": [ + "df_grouped_filtered = df_grouped[['stop_group', 'pred_scenario', 'pred_baseline']]" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "2c06491c-a865-4398-a85e-ba5c661b9b86", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_grouppred_scenariopred_baseline
0Alameda & Keystone2.247692e+000.045739
1Alameda & Lake2.832848e-011.411533
2Alameda & Main6.417771e+011.305982
3Alameda & Mariposa2.251695e+000.045821
4Alameda & Reese2.247692e+000.045739
5Alameda & San Fernando1.649282e-022.367431
6Alameda / Buena Vista7.747645e-013.159633
7Amherst Dr / San Fernando3.679078e+000.053735
8Buena Vista & Burbank3.454957e-010.395730
9Buena Vista & Chandler1.138599e+000.023170
10Buena Vista & Clark2.395671e+000.048751
11Buena Vista & Empire1.830626e+000.037252
12Buena Vista & Jeffries1.962141e+000.039929
13Buena Vista & Magnolia1.656941e+000.033718
14Buena Vista & Olive1.915328e-011.408346
15Buena Vista & Pacific8.400052e-014.615643
16Buena Vista & Thorton1.495924e+000.030441
17Buena Vista & Tulare3.175109e+000.064612
18Buena Vista & Verdugo2.482731e+000.050522
19Buena Vista & Victory2.108070e+000.042898
20Buena Vista & Winona2.011961e+000.040942
21Cohasset & Bloomington2.465272e+000.050167
22Empire & Buena Vista1.455521e-020.234425
23Empire & Grismer1.036049e-020.170343
24Empire & Ontario3.160176e-013.031635
25Empire & Valpreda1.249467e-020.205432
26Flower & Alameda2.453894e-010.952148
27Glenoaks & Bethany1.473035e+0013.317715
28Glenoaks & Cypress7.579348e-016.852489
29Glenoaks & Fairmount1.021516e+009.235528
30Glenoaks & Magnolia1.410688e+0012.754033
31Glenoaks & Olive5.028226e+010.734403
32Glenoaks & Providencia2.776483e-030.802066
33Glenoaks & Verdugo1.899957e-012.722889
34Glenoaks / Alameda7.746335e-040.226880
35Glenoaks / Buena Vista3.090989e+000.062900
36Glenoaks / Cohasset1.288503e+006.420266
37Hollywood & Jeffries2.358757e-011.324904
38Hollywood & Pacific2.588501e-011.453950
39Hollywood & Thorton2.715920e-040.003946
40Hollywood & Valhalla2.309416e-011.346507
41Hollywood & Victory Bl3.872203e-013.714700
42New BUR terminal1.458051e+010.212957
43Verdugo & Ikea Way9.301221e-080.000002
44Verdugo & San Fernando2.925844e+003.977641
45Winona / Ontario2.560829e+000.037402
\n", + "
" + ], + "text/plain": [ + " stop_group pred_scenario pred_baseline\n", + "0 Alameda & Keystone 2.247692e+00 0.045739\n", + "1 Alameda & Lake 2.832848e-01 1.411533\n", + "2 Alameda & Main 6.417771e+01 1.305982\n", + "3 Alameda & Mariposa 2.251695e+00 0.045821\n", + "4 Alameda & Reese 2.247692e+00 0.045739\n", + "5 Alameda & San Fernando 1.649282e-02 2.367431\n", + "6 Alameda / Buena Vista 7.747645e-01 3.159633\n", + "7 Amherst Dr / San Fernando 3.679078e+00 0.053735\n", + "8 Buena Vista & Burbank 3.454957e-01 0.395730\n", + "9 Buena Vista & Chandler 1.138599e+00 0.023170\n", + "10 Buena Vista & Clark 2.395671e+00 0.048751\n", + "11 Buena Vista & Empire 1.830626e+00 0.037252\n", + "12 Buena Vista & Jeffries 1.962141e+00 0.039929\n", + "13 Buena Vista & Magnolia 1.656941e+00 0.033718\n", + "14 Buena Vista & Olive 1.915328e-01 1.408346\n", + "15 Buena Vista & Pacific 8.400052e-01 4.615643\n", + "16 Buena Vista & Thorton 1.495924e+00 0.030441\n", + "17 Buena Vista & Tulare 3.175109e+00 0.064612\n", + "18 Buena Vista & Verdugo 2.482731e+00 0.050522\n", + "19 Buena Vista & Victory 2.108070e+00 0.042898\n", + "20 Buena Vista & Winona 2.011961e+00 0.040942\n", + "21 Cohasset & Bloomington 2.465272e+00 0.050167\n", + "22 Empire & Buena Vista 1.455521e-02 0.234425\n", + "23 Empire & Grismer 1.036049e-02 0.170343\n", + "24 Empire & Ontario 3.160176e-01 3.031635\n", + "25 Empire & Valpreda 1.249467e-02 0.205432\n", + "26 Flower & Alameda 2.453894e-01 0.952148\n", + "27 Glenoaks & Bethany 1.473035e+00 13.317715\n", + "28 Glenoaks & Cypress 7.579348e-01 6.852489\n", + "29 Glenoaks & Fairmount 1.021516e+00 9.235528\n", + "30 Glenoaks & Magnolia 1.410688e+00 12.754033\n", + "31 Glenoaks & Olive 5.028226e+01 0.734403\n", + "32 Glenoaks & Providencia 2.776483e-03 0.802066\n", + "33 Glenoaks & Verdugo 1.899957e-01 2.722889\n", + "34 Glenoaks / Alameda 7.746335e-04 0.226880\n", + "35 Glenoaks / Buena Vista 3.090989e+00 0.062900\n", + "36 Glenoaks / Cohasset 1.288503e+00 6.420266\n", + "37 Hollywood & Jeffries 2.358757e-01 1.324904\n", + "38 Hollywood & Pacific 2.588501e-01 1.453950\n", + "39 Hollywood & Thorton 2.715920e-04 0.003946\n", + "40 Hollywood & Valhalla 2.309416e-01 1.346507\n", + "41 Hollywood & Victory Bl 3.872203e-01 3.714700\n", + "42 New BUR terminal 1.458051e+01 0.212957\n", + "43 Verdugo & Ikea Way 9.301221e-08 0.000002\n", + "44 Verdugo & San Fernando 2.925844e+00 3.977641\n", + "45 Winona / Ontario 2.560829e+00 0.037402" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_grouped_filtered" + ] + }, { "cell_type": "code", "execution_count": 52, @@ -3023,6 +3411,67 @@ { "cell_type": "code", "execution_count": 53, + "id": "3d9b05ae-b0bc-495e-a4fd-4d390f7185ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "225.40909090909093" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_baseline= df_burbank[\"average_daily_boardings\"].sum()\n", + "ridership_baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "df1ef47c-f029-4ceb-b197-65ab044d8f5e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "totals = [\n", + " df_grouped[\"pred_baseline\"].sum(),\n", + " df_grouped[\"pred_scenario\"].sum()\n", + "]\n", + "\n", + "labels = [\"Baseline\", \"Scenario\"]\n", + "x = np.arange(len(labels))\n", + "\n", + "plt.figure(figsize=(5,4))\n", + "plt.bar(x, totals, color=[\"#1f77b4\", \"#4fa3d9\"], width=0.4)\n", + "\n", + "plt.xticks(x, labels)\n", + "plt.ylabel(\"Total Predicted Ridership\")\n", + "plt.title(\"Baseline vs Scenario Ridership (Weekday)\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, "id": "a9392504-ad1c-407f-9204-1663043528d6", "metadata": {}, "outputs": [ @@ -3049,7 +3498,112 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 55, + "id": "21b9bd94-53e9-4086-9350-3b85e6206ece", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, mode, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_mode_time_periods\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 AND mode = 'MB'\n", + " \"\"\"\n", + " ridership_data_bus= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "500102af-ee48-45be-8f4c-00b79b58572e", + "metadata": {}, + "outputs": [], + "source": [ + "# Querying NTD Ridership data \n", + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name, mode, unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_mode_time_periods\n", + " WHERE \n", + " state = 'CA' AND report_year = 2024 \n", + " \"\"\"\n", + " ridership_data= pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "e3d6c322-f0ef-4b7f-ae29-6791743a322f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5777028.0" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_ridership = ridership_data.unlinked_passenger_trips_upt.sum()\n", + "total_ridership" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "9b2cc358-7dd4-410a-a96d-3661c0d13671", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3953615.0" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "total_bus_ridership = ridership_data_bus.unlinked_passenger_trips_upt.sum()\n", + "total_bus_ridership" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "2f48c87c-4e8c-472e-9a27-f6a8f127c163", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "68.43683291824101" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(total_bus_ridership/total_ridership)*100" + ] + }, + { + "cell_type": "code", + "execution_count": 60, "id": "060a0281-b5ed-47a6-ae89-857f5c07bc19", "metadata": {}, "outputs": [], @@ -3074,7 +3628,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 61, "id": "4574dcbd-a09a-4f30-a13f-5e5e414e4e9d", "metadata": {}, "outputs": [], @@ -3091,7 +3645,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 62, "id": "da312c75-80af-4dfc-8297-68cabdabe6de", "metadata": {}, "outputs": [ @@ -3101,7 +3655,7 @@ "579.5698630136986" ] }, - "execution_count": 56, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -3113,9 +3667,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Pyproject Local (use-venv)", "language": "python", - "name": "python3" + "name": "pyproject_local_kernel_use_venv" }, "language_info": { "codemirror_mode": { diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb index 6c7997dd3..ad2a503c1 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/burbank_lu.ipynb @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 5, "id": "c5f7e694-4b9e-4640-ad29-d538bf1dddea", "metadata": {}, "outputs": [ @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 6, "id": "78c4751f-ed62-406c-bfd7-c0c7279f8a31", "metadata": {}, "outputs": [ @@ -119,49 +119,54 @@ "name": "stdout", "output_type": "stream", "text": [ - " OLS Regression Results \n", + " Generalized Linear Model Regression Results \n", "===================================================================================\n", - "Dep. Variable: average_daily_boardings R-squared: 0.522\n", - "Model: OLS Adj. R-squared: 0.432\n", - "Method: Least Squares F-statistic: 5.773\n", - "Date: Wed, 06 May 2026 Prob (F-statistic): 0.000144\n", - "Time: 18:34:09 Log-Likelihood: -42.975\n", - "No. Observations: 45 AIC: 101.9\n", - "Df Residuals: 37 BIC: 116.4\n", - "Df Model: 7 \n", + "Dep. Variable: average_daily_boardings No. Observations: 45\n", + "Model: GLM Df Residuals: 38\n", + "Model Family: NegativeBinomial Df Model: 6\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -104.94\n", + "Date: Wed, 06 May 2026 Deviance: 27.211\n", + "Time: 20:04:08 Pearson chi2: 21.2\n", + "No. Iterations: 15 Pseudo R-squ. (CS): 0.5257\n", "Covariance Type: nonrobust \n", "=============================================================================================\n", - " coef std err t P>|t| [0.025 0.975]\n", + " coef std err z P>|z| [0.025 0.975]\n", "---------------------------------------------------------------------------------------------\n", - "const -2.1778 2.634 -0.827 0.414 -7.515 3.160\n", - "n_routes -2.1778 2.634 -0.827 0.414 -7.515 3.160\n", - "log_arrivals 1.2963 1.361 0.952 0.347 -1.461 4.054\n", - "total_pop_adj 0.0006 0.001 0.537 0.594 -0.002 0.003\n", - "workers_with_no_car_adj 0.0229 0.011 2.154 0.038 0.001 0.044\n", - "total_seniors_adj 0.0062 0.002 2.542 0.015 0.001 0.011\n", - "inc_total_lowincome_adj -0.0036 0.001 -2.599 0.013 -0.006 -0.001\n", - "has_rail_connection_dummy 1.5055 0.742 2.028 0.050 0.001 3.010\n", - "total_youth_adj 0.0027 0.005 0.543 0.591 -0.007 0.013\n", - "==============================================================================\n", - "Omnibus: 4.080 Durbin-Watson: 1.383\n", - "Prob(Omnibus): 0.130 Jarque-Bera (JB): 1.789\n", - "Skew: -0.045 Prob(JB): 0.409\n", - "Kurtosis: 2.027 Cond. No. 1.86e+17\n", - "==============================================================================\n", - "\n", - "Notes:\n", - "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The smallest eigenvalue is 4.37e-27. This might indicate that there are\n", - "strong multicollinearity problems or that the design matrix is singular.\n" + "const 0.5006 0.626 0.799 0.424 -0.727 1.728\n", + "total_pop_adj 0.0012 0.002 0.671 0.502 -0.002 0.005\n", + "workers_with_no_car_adj 0.0282 0.018 1.605 0.109 -0.006 0.063\n", + "total_seniors_adj 0.0076 0.004 1.862 0.063 -0.000 0.016\n", + "inc_total_lowincome_adj -0.0053 0.002 -2.267 0.023 -0.010 -0.001\n", + "has_rail_connection_dummy 3.0179 0.651 4.634 0.000 1.741 4.294\n", + "total_youth_adj 0.0026 0.008 0.313 0.754 -0.014 0.019\n", + "=============================================================================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" ] } ], "source": [ - "y_log = np.log1p(df_burbank[\"average_daily_boardings\"])\n", + "# y_log = np.log1p(df_burbank[\"average_daily_boardings\"])\n", + "\n", + "# model_ols = sm.OLS(y_log, X).fit()\n", + "\n", + "# print(model_ols.summary())\n", "\n", - "model_ols = sm.OLS(y_log, X).fit()\n", "\n", - "print(model_ols.summary())" + "model_fe = sm.GLM(\n", + " df_burbank[\"average_daily_boardings\"],\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(model_fe.summary())" ] }, { @@ -172,7 +177,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -186,7 +191,7 @@ "observed = df_burbank[\"average_daily_boardings\"]\n", "\n", "# predicted values from fixed-effects model\n", - "predicted = model_ols.predict()\n", + "predicted = model_fe.predict()\n", "\n", "plt.figure(figsize=(5, 4))\n", "\n", @@ -768,7 +773,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "39b6dab0-7446-487b-b011-4786c3043d1f", "metadata": {}, "outputs": [], @@ -790,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "id": "8f54ade3-5989-43bb-9f97-4fe4d6e60bb9", "metadata": {}, "outputs": [], @@ -812,22 +817,22 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "id": "9e7aba97-e9ca-4fce-8c12-f589a1e1fe32", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('Glenoaks & Providencia', 'eastbound', 'adding_existing'),\n", - " ('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", - " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + "[('Alameda & San Fernando', 'westbound', 'adding_existing'),\n", " ('Alameda & San Fernando', 'eastbound', 'adding_existing'),\n", - " ('Glenoaks & Providencia', 'westbound', 'adding_existing')]" + " ('Glenoaks & Providencia', 'westbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'eastbound', 'adding_existing'),\n", + " ('Glenoaks / Alameda', 'westbound', 'adding_existing'),\n", + " ('Glenoaks & Providencia', 'eastbound', 'adding_existing')]" ] }, - "execution_count": 24, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -845,7 +850,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "id": "7914ce29-5ef6-47e8-a31e-b472ee022d7b", "metadata": {}, "outputs": [], @@ -856,7 +861,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "id": "9e9879c6-8c1c-4eb9-b25b-d59522f73a40", "metadata": {}, "outputs": [], @@ -868,7 +873,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "id": "76ef01e0-a551-4890-9f34-c1e425264444", "metadata": {}, "outputs": [], @@ -890,7 +895,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "id": "5aa6bf86-c817-4f64-9d4f-ccfd79247bbe", "metadata": {}, "outputs": [], @@ -926,7 +931,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "id": "9ffb473b-180c-43df-bf62-9a7258f2c99a", "metadata": {}, "outputs": [], @@ -941,23 +946,23 @@ "]].copy()\n", "\n", "X_scn = sm.add_constant(X_scn)\n", - "X_scn = X_scn[model_ols.model.exog_names]\n", + "X_scn = X_scn[model_fe.model.exog_names]\n", "# df_grouped['pred_scenario'] = model_fe.predict(X_scn)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "id": "2f058aba-b761-40d2-abcf-7012c60b54dd", "metadata": {}, "outputs": [], "source": [ - "log_pred = model_ols.predict(X_scn)" + "log_pred = model_fe.predict(X_scn)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "id": "41a6b604-e2e4-47cd-b206-86d72364a7d7", "metadata": {}, "outputs": [], @@ -967,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "id": "8f482e52-ae0d-4041-b9fb-a1f78cd61a59", "metadata": {}, "outputs": [ @@ -975,7 +980,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "263.6729203375127\n" + "4.430541955643188e+32\n" ] } ], @@ -986,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "id": "716f0eb4-cfe0-48d7-8234-37ae3803a631", "metadata": {}, "outputs": [ @@ -1005,17 +1010,17 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 33, "id": "b93e716e-d188-4aca-9ac9-2971cd92ec54", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "38.263829428421786" + "4.430541955643188e+32" ] }, - "execution_count": 36, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb new file mode 100644 index 000000000..e627444c1 --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb @@ -0,0 +1,1225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", + "metadata": {}, + "source": [ + "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2747aae9-f823-4183-a212-3143323b787b", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor\n", + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5f76fda9-0401-45c9-aa94-bd2f92aeef26", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_saturday.parquet\", \"rb\") as f: \n", + " stop_route_df_saturday = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7f180892-b53d-460a-808c-013b58d4d6a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df_saturday['n_arrivals'] = stop_route_df_saturday['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df_saturday['n_routes'] = stop_route_df_saturday['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "52b16972-eed4-492b-b4bf-6a683789c5cf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 12315\n", + "Model: GLM Df Residuals: 12307\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -45084.\n", + "Date: Thu, 07 May 2026 Deviance: 22353.\n", + "Time: 18:37:06 Pearson chi2: 1.79e+06\n", + "No. Iterations: 100 Pseudo R-squ. (CS): 0.8679\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -3.9238 0.056 -69.998 0.000 -4.034 -3.814\n", + "n_routes -0.0472 0.016 -3.026 0.002 -0.078 -0.017\n", + "log_arrivals 1.9336 0.019 102.563 0.000 1.897 1.971\n", + "total_pop_adj 0.0004 3.83e-05 10.594 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0022 7.79e-05 28.504 0.000 0.002 0.002\n", + "total_youth_adj 0.0003 4.98e-05 6.417 0.000 0.000 0.000\n", + "total_seniors_adj -0.0018 0.000 -16.407 0.000 -0.002 -0.002\n", + "inc_total_lowincome_adj -0.0006 6.39e-05 -9.235 0.000 -0.001 -0.000\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df_saturday.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended_final = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended_final.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "93c61846-9db3-49ac-9690-10783900ac25", + "metadata": {}, + "outputs": [], + "source": [ + "# observed values\n", + "observed = df[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = nb_model_extended_final.predict()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "77568d91-4330-4569-9560-eac02e473d63", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAIjCAYAAABLZcwsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsvXecZFWZ//++sWJXdZzpMKEnMgwTCEqQDCoqOYji6ooRf66CcV3XrwIiumtYM4I5gIFkYFkVRBRBQQnDzDDApJ7QPdO5K4ebzu+PU1VT1bl7uqcHpz6v1yh9761zz733nOc85wmfRxFCCKqooooqqqiiiiqqOKRQ57oDVVRRRRVVVFFFFUciqkpYFVVUUUUVVVRRxRygqoRVUUUVVVRRRRVVzAGqSlgVVVRRRRVVVFHFHKCqhFVRRRVVVFFFFVXMAapKWBVVVFFFFVVUUcUcoKqEVVFFFVVUUUUVVcwBqkpYFVVUUUUVVVRRxRygqoRVUUUVVVRRRRVVzAGqSlgV08YNN9yAoij09/fPdVcOORRF4YYbbpjrbsw5zjrrLM4666zS37t27UJRFH74wx/OWZ+GY3gfx0MqlWLevHnccccds9upOcDVV19Ne3v7XHdjXPzpT39CURT+9Kc/zXVXxsVUxtRwvFRlxxvf+EauvPLKue7GPx2qSlgVFXjuued485vfTFtbGz6fj9bWVv7lX/6F5557bq67VsUwFBes4j/DMFi6dCn/+q//ys6dO+e6e1PCX//6V2644QZisdic9uOrX/0qNTU1vPGNbywdK2425s+fTyaTGfGb9vZ2LrjggkPZzTGxb98+brjhBjZs2DDXXSnh6quvrhinuq6zcOFC3vjGN7Jly5a57t5hjUQiwc0338zLXvYyotEoPp+PxYsX84Y3vIH777+/4tqiPLj77rvHbbP4Hd75zneOev4Tn/hE6ZryDfbHPvYx7rnnHp599tmDf7AqStDnugNVHD649957ueqqq6ivr+cd73gHS5YsYdeuXXzve9/j7rvv5uc//zmXXnrpXHezimG49tprefnLX45t2zz99NN8+9vf5v7772fTpk20trYe0r4sXryYbDaLYRhT+t1f//pXbrzxRq6++mpqa2tnp3MTwLZtvvrVr/LBD34QTdNGnO/t7eVb3/oWH/7wh+egd5PDvn37uPHGG2lvb+fYY4+tOPed73wHz/PmpF8+n4/vfve7ADiOw44dO7j11lv53e9+x5YtW0rj9IwzziCbzWKa5pz0c7J44IEHZv0e27dv57zzzmP37t1ceuml/Ou//ivhcJi9e/fyf//3f1xwwQX8+Mc/5i1vecuU2/b7/dxzzz3ccsstI971z372M/x+P7lcruL4cccdx8te9jK+9KUv8eMf//ignq2KA6gqYVUAsGPHDt7ylrewdOlSHnnkEZqamkrnrrvuOk4//XTe8pa3sHHjRpYuXTqHPR0Jz/OwLAu/3z/XXZkTnH766VxxxRUAvO1tb2PlypVce+21/OhHP+LjH//4qL9Jp9OEQqEZ74uiKC/Z7/C///u/9PX1jelyOfbYY/nCF77Ae9/7XgKBwCHu3cFjqorxTELXdd785jdXHDv55JO54IILuP/++3nXu94FgKqqL4nxM9tKouM4XHrppfT09PDnP/+ZU089teL89ddfzwMPPIDrutNq/zWveQ2/+c1v+O1vf8vFF19cOv7Xv/6Vjo4OLr/8cu65554Rv7vyyiu5/vrrueWWWwiHw9O6dxWVqLojqwDgC1/4AplMhm9/+9sVChhAY2Mjt912G+l0ms9//vMjftvf38+VV15JJBKhoaGB6667bsQu6sEHH+S0006jtraWcDjMUUcdxX/+539WXJPP57n++utZvnw5Pp+PhQsX8u///u/k8/mK6xRF4X3vex933HEHxxxzDD6fj/vuu4/6+nre9ra3jehfIpHA7/fzkY98ZMr3yufzfPCDH6SpqYmamhouuugiOjs7J3yfPT096LrOjTfeOOLciy++iKIofOMb3wCkBebGG29kxYoV+P1+GhoaOO2003jwwQcnvM9oOOeccwDo6OgADrjTtmzZwpve9Cbq6uo47bTTStfffvvtnHDCCQQCAerr63njG9/I3r17R7T77W9/m2XLlhEIBDjxxBP5y1/+MuKasWLCXnjhBa688kqampoIBAIcddRRfOITnyj176Mf/SgAS5YsKblCdu3aNSt9HAu/+tWvaG9vZ9myZaOe/9SnPkVPTw/f+ta3JmzL8zy+8pWvcMwxx+D3+5k/fz7XXHMNQ0NDI6674YYbaG1tJRgMcvbZZ7Nlyxba29u5+uqrS9cNDg7ykY98hLVr1xIOh4lEIrz2ta+tcA396U9/4uUvfzkglfHieyx+i/KYMNu2Z2W+TAXNzc2AVNDKn2F4TNhZZ53FmjVr2LJlC2effTbBYJC2trZRZVFvby/veMc7mD9/Pn6/n/Xr1/OjH/2o4priGP3iF7/IN7/5TZYuXUowGOTVr341e/fuRQjBTTfdxIIFCwgEAlx88cUMDg5WtDE8JsyyLD71qU9xwgknEI1GCYVCnH766Tz88MPTejd33XUXmzdv5pOf/OQIBayIV7/61bz2ta+dVvttbW2cccYZ/PSnP604fscdd7B27VrWrFkz6u9e9apXkU6npy2bqhiJqiWsCgDuu+8+2tvbOf3000c9f8YZZ9De3j4iDgHk7qi9vZ3Pfe5zPP7443zta19jaGioZLJ+7rnnuOCCC1i3bh2f/vSn8fl8bN++nccee6zUhud5XHTRRTz66KO8+93v5uijj2bTpk18+ctfZuvWrfzqV7+quOcf//hH7rzzTt73vvfR2NjIihUruPTSS7n33nu57bbbKnaqv/rVr8jn86U4n6nc653vfCe33347b3rTm3jFK17BH//4R84///wJ3+f8+fM588wzufPOO7n++usrzv3iF79A0zRe//rXA1IJ+dznPsc73/lOTjzxRBKJBE8++SRPP/00r3rVqya813Ds2LEDgIaGhorjr3/961mxYgWf/exnEUIAcPPNN/PJT36SK6+8kne+85309fXx9a9/nTPOOINnnnmm5Br83ve+xzXXXMMrXvEKPvCBD7Bz504uuugi6uvrWbhw4bj92bhxI6effjqGYfDud7+b9vZ2duzYwX333cfNN9/MZZddxtatW/nZz37Gl7/8ZRobGwFKm4FD0UeQVoDjjz9+zPOnn34655xzDp///Of5//6//29ca9g111zDD3/4Q972trdx7bXX0tHRwTe+8Q2eeeYZHnvssZJV6uMf/zif//znufDCCznvvPN49tlnOe+880ZsYnbu3MmvfvUrXv/617NkyRJ6enq47bbbOPPMM0vuvKOPPppPf/rTfOpTn+Ld7353aS6/4hWvGNE/wzBmZb6Mh2J8keu67Ny5k4997GM0NDRMKp5uaGiI17zmNVx22WVceeWV3H333XzsYx9j7dq1JUUkm81y1llnsX37dt73vvexZMkS7rrrLq6++mpisRjXXXddRZt33HEHlmXx/ve/n8HBQT7/+c9z5ZVXcs455/CnP/2Jj33sY2zfvp2vf/3rfOQjH+H73//+mP1LJBJ897vf5aqrruJd73oXyWSS733ve5x33nn8/e9/H+Eangj33XcfwAjr4UziTW96E9dddx2pVIpwOIzjONx111186EMfGjH+ili9ejWBQIDHHnusGpoyUxBVHPGIxWICEBdffPG411100UUCEIlEQgghxPXXXy8AcdFFF1Vc9973vlcA4tlnnxVCCPHlL39ZAKKvr2/Mtn/yk58IVVXFX/7yl4rjt956qwDEY489VjoGCFVVxXPPPVdx7e9//3sBiPvuu6/i+Ote9zqxdOnSKd9rw4YNAhDvfe97K65705veJABx/fXXj/k8Qghx2223CUBs2rSp4vjq1avFOeecU/p7/fr14vzzzx+3rdHw8MMPC0B8//vfF319fWLfvn3i/vvvF+3t7UJRFPGPf/xDCHHgO1111VUVv9+1a5fQNE3cfPPNFcc3bdokdF0vHbcsS8ybN08ce+yxIp/Pl6779re/LQBx5plnlo51dHQIQPzgBz8oHTvjjDNETU2N2L17d8V9PM8r/fcXvvAFAYiOjo5Z7+NosG1bKIoiPvzhD484V3x/fX194s9//rMAxP/8z/+Uzi9evLji+/3lL38RgLjjjjsq2vnd735Xcby7u1voui4uueSSiutuuOEGAYi3vvWtpWO5XE64rltxXUdHh/D5fOLTn/506dg//vGPEe+/iLe+9a1i8eLFpb9ner6Mhbe+9a0CGPGvra1NPPXUUxXXFsf0ww8/XDp25plnCkD8+Mc/Lh3L5/OiublZXH755aVjX/nKVwQgbr/99tIxy7LEKaecIsLhcEluFcdoU1OTiMVipWs//vGPC0CsX79e2LZdOn7VVVcJ0zRFLper6FP5mHIcp2LcCSHE0NCQmD9/vnj7299ecXwysuO4444TtbW1I46nUinR19dX+hePx0vniu/urrvuGrdtQPzbv/2bGBwcFKZpip/85CdCCCHuv/9+oSiK2LVrV8WYH46VK1eK1772tePeo4rJo+qOrIJkMglATU3NuNcVzycSiYrj//Zv/1bx9/vf/34A/u///g+gZKn49a9/PWZg8F133cXRRx/NqlWr6O/vL/0rutaGm/XPPPNMVq9eXXHsnHPOobGxkV/84helY0NDQzz44IO84Q1vmPK9iv2/9tprK+7zgQ98YNRnGI7LLrsMXdcr+rN582a2bNlS0Z/a2lqee+45tm3bNql2h+Ptb387TU1NtLa2cv7555NOp/nRj37Ey172sorr3vOe91T8fe+99+J5HldeeWXFe2hubmbFihWl9/Dkk0/S29vLe97zngqLydVXX000Gh23b319fTzyyCO8/e1vZ9GiRRXnFEWZ8NkORR9BuvuEENTV1Y173RlnnMHZZ5/N5z//ebLZ7KjX3HXXXUSjUV71qldV9PmEE04gHA6X+vzQQw/hOA7vfe97K35fnD/l8Pl8qKoU167rMjAwUHLrP/300xM+32iY6fkyHvx+Pw8++CAPPvggv//977ntttsIh8O87nWvY+vWrRP+PhwOV1iFTNPkxBNPrMgC/r//+z+am5u56qqrSscMw+Daa68llUrx5z//uaLN17/+9RVj46STTgKk9ancRXrSSSdhWRZdXV1j9k/TtNK48zyPwcFBHMfhZS972bS+TyKRGDXm6hOf+ARNTU2lf29605um3HYRdXV1vOY1r+FnP/sZAD/96U95xSteweLFiyf83ZFISzRbqLojqygpV0VlbCyMpaytWLGi4u9ly5ahqmoppucNb3gD3/3ud3nnO9/Jf/zHf3Duuedy2WWXccUVV5QWlm3btvH888+PiEcrore3t+LvJUuWjLhG13Uuv/xyfvrTn5LP5/H5fNx7773Ytl2xqEz2Xrt370ZV1RExQkcdddSovxuOxsZGzj33XO68805uuukmQLoidV3nsssuK1336U9/mosvvpiVK1eyZs0aXvOa1/CWt7yFdevWTeo+n/rUpzj99NPRNI3GxkaOPvroikWkiOHvbNu2bQghRny/Ioous927dwMjv3OREmM8FBfJsWJMJsKh6GM5RMFNOx5uuOEGzjzzTG699VY++MEPjtrneDzOvHnzRv19+fgCWL58ecX5+vr6Ecqg53l89atf5ZZbbqGjo6MiIHu423mymOn5Mh40TeOVr3xlxbHXve51rFixgo9//OOjBoGXY8GCBSOU9rq6OjZu3Fj6e/fu3axYsaIkU4o4+uijS+fLMXxTUFTIhruui8eHx/MNx49+9CO+9KUv8cILL2Dbdun4aLJqItTU1DAwMDDi+Hvf+96S+3YmXJVvetObeMtb3sKePXv41a9+NWqc3XAIISa1gapicqgqYVUQjUZpaWmpEGijYePGjbS1tRGJRMa9bvgEDQQCPPLIIzz88MPcf//9/O53v+MXv/gF55xzDg888ACapuF5HmvXruV//ud/Rm1zuGAcKx7njW98I7fddhu//e1vueSSS7jzzjtZtWoV69evL10z1XsdDN74xjfytre9jQ0bNnDsscdy5513cu6555binkBaV3bs2MGvf/1rHnjgAb773e/y5S9/mVtvvXVMLp9yrF27dsQCNxqGvzPP81AUhd/+9rejUjIcDtlPh6qP9fX1KIoy4UIL8nudddZZfP7znx9hXSz2eTzC17GUmfHw2c9+lk9+8pO8/e1v56abbqK+vh5VVfnABz5wULQTczlfFixYwFFHHcUjjzwy4bWjfXuYnNI81Tanc6/bb7+dq6++mksuuYSPfvSjzJs3D03T+NznPleK0ZwKVq1axYYNG+jq6qKtra10fOXKlaxcuRJgRrJIL7roInw+H29961vJ5/OTImMdGhoac1NUxdRRVcKqAOCCCy7gO9/5Do8++mhF5lwRf/nLX9i1axfXXHPNiHPbtm2r2O1t374dz/Mq2LlVVeXcc8/l3HPP5X/+53/47Gc/yyc+8QkefvhhXvnKV7Js2TKeffZZzj333IPaZZ1xxhm0tLTwi1/8gtNOO40//vGPpSy8IiZ7r8WLF+N5Hjt27Kiwfr344ouT7s8ll1zCNddcU3L5bN26dVTaiGKm2tve9jZSqRRnnHEGN9xww6SUsOli2bJlCCFYsmRJSbCPhqJ7Ytu2bSUXFMgMu46OjooFeziKVqjNmzeP25exvsOh6CNIq9CyZctKGaUT4YYbbuCss87itttuG7XPf/jDHzj11FPHDd4v9nn79u0V82dgYGCEMnj33Xdz9tln873vfa/ieCwWq1Dopzp3ZnK+TAeO45BKpWakrcWLF7Nx40Y8z6uwhr3wwgul87OFu+++m6VLl3LvvfdWvKPhSTmTxQUXXMDPf/5z7rjjDv793/99pro5AoFAgEsuuYTbb7+d1772tRVjaTQ4jsPevXu56KKLZq1PRxqqMWFVAPDRj36UQCDANddcM8IMPjg4yHve8x6CwWCJSqAc3/zmNyv+/vrXvw5Qyloant4NlLKFiinuV155JV1dXXznO98ZcW02myWdTk/qOVRV5YorruC+++7jJz/5CY7jVLhWpnKvYv+/9rWvVVzzla98ZVJ9ARnvdd5553HnnXfy85//HNM0ueSSSyquGf6+w+Ewy5cvP6j0/8ngsssuQ9M0brzxxhG7fCFEqV8ve9nLaGpq4tZbb8WyrNI1P/zhDydkuG9qauKMM87g+9//Pnv27BlxjyKKnGXD2zsUfSzilFNO4cknn5zUtWeeeSZnnXUW//3f/z0ik+zKK6/Edd2SC7ocjuOU+nPuueei6/oIyosidUk5NE0b8fx33XXXiDilsd7jWJjJ+TJVbN26lRdffHFCBXmyeN3rXkd3d3dFjJvjOHz9618nHA5z5plnzsh9RkPRelb+jZ544gn+9re/Tau9K6+8ktWrV3PTTTfx+OOPj3rNwVgBy/GRj3yE66+/nk9+8pMTXrtlyxZyudyoGbdVTA9VS1gVgIyl+dGPfsS//Mu/sHbt2hGM+f39/fzsZz8blUOpo6ODiy66iNe85jX87W9/K1E6FIXrpz/9aR555BHOP/98Fi9eTG9vL7fccgsLFiwoWd3e8pa3cOedd/Ke97yHhx9+mFNPPRXXdXnhhRe48847+f3vfz8i0HwsvOENb+DrX/86119/PWvXri3FhBQx2Xsde+yxXHXVVdxyyy3E43Fe8YpX8NBDD7F9+/Ypvds3vOENvPnNb+aWW27hvPPOG8EIv3r1as466yxOOOEE6uvrefLJJ7n77rt53/veN6X7TBXLli3jM5/5DB//+MfZtWsXl1xyCTU1NXR0dPDLX/6Sd7/73XzkIx/BMAw+85nPcM0113DOOefwhje8gY6ODn7wgx9MKt7qa1/7GqeddhrHH3887373u0vj6v777y+V1znhhBMAGXj8xje+EcMwuPDCCw9ZHwEuvvhifvKTn7B169ZxrW5FXH/99Zx99tkjjp955plcc801fO5zn2PDhg28+tWvxjAMtm3bxl133cVXv/pVrrjiCubPn891113Hl770pdL8efbZZ/ntb39LY2NjhUXlggsu4NOf/jRve9vbeMUrXsGmTZu44447RjzbsmXLqK2t5dZbb6WmpoZQKMRJJ500blzSTM2X8eA4Drfffjsg3Zu7du3i1ltvxfO8aVuLhuPd7343t912G1dffTVPPfUU7e3t3H333Tz22GN85StfmTDx6GBwwQUXcO+993LppZdy/vnn09HRwa233srq1aunZekzDINf/vKXnHfeeZx22mlcdtllnH766YRCIbq6uvjNb37Dnj17RqXLueeee0rWv3K89a1v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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7, 6))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.6)\n", + "\n", + "cap = np.percentile(np.concatenate([observed, predicted]), 90)\n", + "\n", + "plt.plot([0, cap], [0, cap], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlim(0, cap)\n", + "plt.ylim(0, cap)\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted (Negative Binomial GLM)\")\n", + "plt.grid(False)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ecda0370-e7ba-44e0-b528-6332ea239a8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
0dcc58c96c33532e549faf9bd89c8542d172026-04-30 03:00:01.083850+00:0091201230284[27][3]82381a59b4772fdc3485a5e160292802NonePOINT(-119.856187 34.410741)Embarcadero & Sabado TardeNoneNone1054
1dcc58c96c33532e549faf9bd89c8542d5772026-04-30 03:00:01.083850+00:0091201230284[27][3]ace4501aacc7cc4014049f82071c69a4NonePOINT(-119.853462 34.41089)Ocean & Sabado TardeNoneNone834
2dcc58c96c33532e549faf9bd89c8542d152026-04-30 03:00:01.083850+00:0091201230284[27][3]382b6a77ef2d0a8bd29fe88d035168cbNonePOINT(-119.857582 34.41187)Seville & Embarcadero Del MarNoneNone1052
3dcc58c96c33532e549faf9bd89c8542d162026-04-30 03:00:01.083850+00:0091241230284[27][3]81b4f17f371ce36097144c19c3cd188bNonePOINT(-119.85734 34.411753)Seville & Embarcadero Del MarNoneNone1053
4dcc58c96c33532e549faf9bd89c8542d182026-04-30 03:00:01.083850+00:0091241230284[27][3]76b24f95f4a726a64073f85a704a7523NonePOINT(-119.856298 34.410651)Embarcadero & Sabado TardeNoneNone1055
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 dcc58c96c33532e549faf9bd89c8542d 17 2026-04-30 03:00:01.083850+00:00 \n", + "1 dcc58c96c33532e549faf9bd89c8542d 577 2026-04-30 03:00:01.083850+00:00 \n", + "2 dcc58c96c33532e549faf9bd89c8542d 15 2026-04-30 03:00:01.083850+00:00 \n", + "3 dcc58c96c33532e549faf9bd89c8542d 16 2026-04-30 03:00:01.083850+00:00 \n", + "4 dcc58c96c33532e549faf9bd89c8542d 18 2026-04-30 03:00:01.083850+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 9 12 0 12 \n", + "1 9 12 0 12 \n", + "2 9 12 0 12 \n", + "3 9 12 4 12 \n", + "4 9 12 4 12 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 30 28 4 [27] \n", + "1 30 28 4 [27] \n", + "2 30 28 4 [27] \n", + "3 30 28 4 [27] \n", + "4 30 28 4 [27] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [3] 82381a59b4772fdc3485a5e160292802 None \n", + "1 [3] ace4501aacc7cc4014049f82071c69a4 None \n", + "2 [3] 382b6a77ef2d0a8bd29fe88d035168cb None \n", + "3 [3] 81b4f17f371ce36097144c19c3cd188b None \n", + "4 [3] 76b24f95f4a726a64073f85a704a7523 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.856187 34.410741) Embarcadero & Sabado Tarde None \n", + "1 POINT(-119.853462 34.41089) Ocean & Sabado Tarde None \n", + "2 POINT(-119.857582 34.41187) Seville & Embarcadero Del Mar None \n", + "3 POINT(-119.85734 34.411753) Seville & Embarcadero Del Mar None \n", + "4 POINT(-119.856298 34.410651) Embarcadero & Sabado Tarde None \n", + "\n", + " stop_desc stop_code \n", + "0 None 1054 \n", + "1 None 834 \n", + "2 None 1052 \n", + "3 None 1053 \n", + "4 None 1055 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SBMTD data \n", + "feed_keys = [\"dcc58c96c33532e549faf9bd89c8542d\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals,\n", + " arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening,\n", + " route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2026-05-02')\n", + " AND feed_key IN ({feed_keys_str})\n", + " AND ('28' IN UNNEST(route_id_array)\n", + " OR '24X' IN UNNEST(route_id_array)\n", + " OR '11' IN UNNEST(route_id_array)\n", + " OR '15X' IN UNNEST(route_id_array)\n", + " OR '27' IN UNNEST(route_id_array)\n", + " )\n", + " \"\"\"\n", + " df_feed = pd.read_sql(query, connection)\n", + "\n", + "df_feed.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7d7fbf2d-f2aa-4009-a4e4-14abeb56239e", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"San Benito Housing\": (34.41949395025939, -119.85428516794293),\n", + "\"UCSB North Hall Inbound\": (34.41543823819993, -119.84793921762432),\n", + "\"UCSB North Hall Outbound\": (34.41528964133994, -119.84781297568064),\n", + "\"UCSB Elings Hall Outbound\": (34.41487045037956, -119.83962136296098),\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3676f5ed-e262-4a07-aa26-73a6fc412cd1", + "metadata": {}, + "outputs": [], + "source": [ + "def create_manual_df(manual_coords):\n", + " rows = []\n", + "\n", + " for i, (stop_name, (lat, lon)) in enumerate(manual_coords.items(), start=1):\n", + " rows.append({\n", + " \"stop_id\": i,\n", + " \"stop_name\": stop_name,\n", + " \"latitude\": lat,\n", + " \"longitude\": lon,\n", + " \"pt_geom\": Point(lon, lat)\n", + " })\n", + "\n", + " return pd.DataFrame(rows)\n", + "\n", + "df_manual = create_manual_df(manual_coords)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0a1c7b85-ce20-4b53-8f7c-142827589776", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_29 = gpd.GeoDataFrame(df_manual, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_29 = gdf_29.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_29['buffer'] = gdf_29.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "35139b8e-ed61-4988-b1f8-3cc63a249d5e", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_29.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4d6cd5c1-774b-48a4-a8b8-940af8d4371e", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect = gpd.overlay(acs_gdf, gdf_29.set_geometry('buffer'), how='intersection')\n", + "\n", + "geometry_intersect['area_2'] = geometry_intersect.geometry.area # area of overlap\n", + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "77f1a2d7-707c-48fd-88a7-b723bfbb81d2", + "metadata": {}, + "outputs": [], + "source": [ + "agg = geometry_intersect.groupby(['stop_name']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_29 = gdf_29.merge(\n", + " agg,\n", + " on=['stop_name'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5fc7a5a3-bfd2-41b5-9039-d2290c854ade", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_feed.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ff5c254f-919c-40cd-bbf8-036f85f17eb3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
0dcc58c96c33532e549faf9bd89c8542d172026-04-30 03:00:01.083850+00:0091201230284[27][3]82381a59b4772fdc3485a5e160292802NonePOINT(-119.856187 34.410741)Embarcadero & Sabado TardeNoneNone1054[27]1
1dcc58c96c33532e549faf9bd89c8542d5772026-04-30 03:00:01.083850+00:0091201230284[27][3]ace4501aacc7cc4014049f82071c69a4NonePOINT(-119.853462 34.41089)Ocean & Sabado TardeNoneNone834[27]1
2dcc58c96c33532e549faf9bd89c8542d152026-04-30 03:00:01.083850+00:0091201230284[27][3]382b6a77ef2d0a8bd29fe88d035168cbNonePOINT(-119.857582 34.41187)Seville & Embarcadero Del MarNoneNone1052[27]1
3dcc58c96c33532e549faf9bd89c8542d162026-04-30 03:00:01.083850+00:0091241230284[27][3]81b4f17f371ce36097144c19c3cd188bNonePOINT(-119.85734 34.411753)Seville & Embarcadero Del MarNoneNone1053[27]1
4dcc58c96c33532e549faf9bd89c8542d182026-04-30 03:00:01.083850+00:0091241230284[27][3]76b24f95f4a726a64073f85a704a7523NonePOINT(-119.856298 34.410651)Embarcadero & Sabado TardeNoneNone1055[27]1
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 dcc58c96c33532e549faf9bd89c8542d 17 2026-04-30 03:00:01.083850+00:00 \n", + "1 dcc58c96c33532e549faf9bd89c8542d 577 2026-04-30 03:00:01.083850+00:00 \n", + "2 dcc58c96c33532e549faf9bd89c8542d 15 2026-04-30 03:00:01.083850+00:00 \n", + "3 dcc58c96c33532e549faf9bd89c8542d 16 2026-04-30 03:00:01.083850+00:00 \n", + "4 dcc58c96c33532e549faf9bd89c8542d 18 2026-04-30 03:00:01.083850+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 9 12 0 12 \n", + "1 9 12 0 12 \n", + "2 9 12 0 12 \n", + "3 9 12 4 12 \n", + "4 9 12 4 12 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 30 28 4 [27] \n", + "1 30 28 4 [27] \n", + "2 30 28 4 [27] \n", + "3 30 28 4 [27] \n", + "4 30 28 4 [27] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [3] 82381a59b4772fdc3485a5e160292802 None \n", + "1 [3] ace4501aacc7cc4014049f82071c69a4 None \n", + "2 [3] 382b6a77ef2d0a8bd29fe88d035168cb None \n", + "3 [3] 81b4f17f371ce36097144c19c3cd188b None \n", + "4 [3] 76b24f95f4a726a64073f85a704a7523 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.856187 34.410741) Embarcadero & Sabado Tarde None \n", + "1 POINT(-119.853462 34.41089) Ocean & Sabado Tarde None \n", + "2 POINT(-119.857582 34.41187) Seville & Embarcadero Del Mar None \n", + "3 POINT(-119.85734 34.411753) Seville & Embarcadero Del Mar None \n", + "4 POINT(-119.856298 34.410651) Embarcadero & Sabado Tarde None \n", + "\n", + " stop_desc stop_code route_id_array_parsed n_routes \n", + "0 None 1054 [27] 1 \n", + "1 None 834 [27] 1 \n", + "2 None 1052 [27] 1 \n", + "3 None 1053 [27] 1 \n", + "4 None 1055 [27] 1 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1bb00808-d6da-46ce-b04c-3f59b1f046c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_id', 'stop_name', 'latitude', 'longitude', 'pt_geom', 'buffer',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_seniors_adj',\n", + " 'total_youth_adj', 'inc_total_lowincome_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_29.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "953f95be-4664-46e1-a87e-d0b2b681ce0b", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged = gdf_29.merge(\n", + " df_existing[['stop_name', 'n_routes', 'daily_arrivals']],\n", + " on='stop_name',\n", + " how='left'\n", + ")\n", + "\n", + "df_merged[['n_routes', 'daily_arrivals']] = (\n", + " df_merged[['n_routes', 'daily_arrivals']].fillna(0)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5e539e68-8b2f-419c-9a5b-dd041773186f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_idstop_namelatitudelongitudept_geombuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjn_routesdaily_arrivals
01San Benito Housing34.419494-119.854285POINT (237676.247 3812365.404)POLYGON ((238080.919 3812365.404, 238078.970 3...1902.74055632.5762096.8024401702.7975621539.6955600.00.0
12UCSB North Hall Inbound34.415438-119.847939POINT (238246.997 3811899.058)POLYGON ((238651.669 3811899.058, 238649.720 3...1537.6986890.0000007.5620651357.8633271260.5017382.050.0
23UCSB North Hall Outbound34.415290-119.847813POINT (238258.139 3811882.247)POLYGON ((238662.811 3811882.247, 238660.863 3...1543.6674980.0000007.5914181363.1340771265.3945654.0138.0
34UCSB Elings Hall Outbound34.414870-119.839621POINT (239009.950 3811814.601)POLYGON ((239414.622 3811814.601, 239412.673 3...560.6123120.0000002.756968495.048155459.5521852.054.0
\n", + "
" + ], + "text/plain": [ + " stop_id stop_name latitude longitude \\\n", + "0 1 San Benito Housing 34.419494 -119.854285 \n", + "1 2 UCSB North Hall Inbound 34.415438 -119.847939 \n", + "2 3 UCSB North Hall Outbound 34.415290 -119.847813 \n", + "3 4 UCSB Elings Hall Outbound 34.414870 -119.839621 \n", + "\n", + " pt_geom \\\n", + "0 POINT (237676.247 3812365.404) \n", + "1 POINT (238246.997 3811899.058) \n", + "2 POINT (238258.139 3811882.247) \n", + "3 POINT (239009.950 3811814.601) \n", + "\n", + " buffer total_pop_adj \\\n", + "0 POLYGON ((238080.919 3812365.404, 238078.970 3... 1902.740556 \n", + "1 POLYGON ((238651.669 3811899.058, 238649.720 3... 1537.698689 \n", + "2 POLYGON ((238662.811 3811882.247, 238660.863 3... 1543.667498 \n", + "3 POLYGON ((239414.622 3811814.601, 239412.673 3... 560.612312 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "0 32.576209 6.802440 1702.797562 \n", + "1 0.000000 7.562065 1357.863327 \n", + "2 0.000000 7.591418 1363.134077 \n", + "3 0.000000 2.756968 495.048155 \n", + "\n", + " inc_total_lowincome_adj n_routes daily_arrivals \n", + "0 1539.695560 0.0 0.0 \n", + "1 1260.501738 2.0 50.0 \n", + "2 1265.394565 4.0 138.0 \n", + "3 459.552185 2.0 54.0 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_merged" + ] + }, + { + "cell_type": "markdown", + "id": "e7554a2c-acca-4af2-bf15-fba4e43fe810", + "metadata": {}, + "source": [ + "Day: 20 arrivals" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "676ff0d9-c1a8-4596-b9e6-25c251142ce5", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged = df_merged.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ae7b763f-9404-4575-9b20-6790aa74aadc", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged[\"n_routes_scn\"] = df_merged[\"n_routes\"] + 1\n", + "df_merged[\"daily_arrivals_scn\"] = df_merged[\"daily_arrivals\"] + 20" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "fbabd8fc-8937-4ee0-bdbf-9729c3f886f2", + "metadata": {}, + "outputs": [], + "source": [ + "X_base= df_merged[[\n", + " 'n_routes',\n", + " 'daily_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].fillna(0)\n", + "\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes': 'n_routes',\n", + " 'daily_arrivals': 'n_arrivals'\n", + "})\n", + "\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "\n", + "X_base= sm.add_constant(X_base)\n", + "X_base= X_base[nb_model_extended_final.model.exog_names]\n", + "df_merged['pred_baseline'] = nb_model_extended_final.predict(X_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8565382d-37dd-489a-b30f-e4ec17a7726f", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_merged[[\n", + " 'n_routes_scn',\n", + " 'daily_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'daily_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[nb_model_extended_final.model.exog_names]\n", + "df_merged['pred_scenario'] = nb_model_extended_final.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8907b88f-a7f1-4b31-88b6-d790144cb716", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged['ridership_change'] = (\n", + " df_merged['pred_scenario'] - df_merged['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "9f407e44-a573-4c15-be59-657507ce688d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "157.45167406906438\n" + ] + } + ], + "source": [ + "ridership_change= df_merged[\"ridership_change\"].sum()\n", + "print(ridership_change)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "31629603-bab4-47b1-aecb-15ccec4f5b82", + "metadata": {}, + "outputs": [], + "source": [ + "## Querying NTD Ridership Data for SMBTD" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "626d10e4-cb01-483d-8de0-14d941d9fe2f", + "metadata": {}, + "outputs": [], + "source": [ + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name,\n", + " unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA'\n", + " AND report_year = 2024\n", + " AND agency IN (\n", + " 'Santa Barbara Metropolitan Transit District'\n", + " )\n", + " \"\"\"\n", + " ridership_data = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "584b4bff-2f6e-4942-b3e8-63ed5f5a7dc0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agencyntd_idreporter_typereport_yearprimary_uza_nameunlinked_passenger_trips_uptagency_voms
0Santa Barbara Metropolitan Transit District90020Full Reporter2024Santa Barbara, CA4684415.071.0
\n", + "
" + ], + "text/plain": [ + " agency ntd_id reporter_type \\\n", + "0 Santa Barbara Metropolitan Transit District 90020 Full Reporter \n", + "\n", + " report_year primary_uza_name unlinked_passenger_trips_upt agency_voms \n", + "0 2024 Santa Barbara, CA 4684415.0 71.0 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c3b3410-d75e-4c7f-8b12-801cc3b67d56", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Pyproject Local (use-venv)", + "language": "python", + "name": "pyproject_local_kernel_use_venv" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb new file mode 100644 index 000000000..a04995e3a --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb @@ -0,0 +1,1174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", + "metadata": {}, + "source": [ + "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2747aae9-f823-4183-a212-3143323b787b", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor\n", + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5f76fda9-0401-45c9-aa94-bd2f92aeef26", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df_sunday.parquet\", \"rb\") as f: \n", + " stop_route_df_sunday = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7f180892-b53d-460a-808c-013b58d4d6a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df_sunday['n_arrivals'] = stop_route_df_sunday['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df_sunday['n_routes'] = stop_route_df_sunday['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "52b16972-eed4-492b-b4bf-6a683789c5cf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 12315\n", + "Model: GLM Df Residuals: 12307\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -45084.\n", + "Date: Thu, 07 May 2026 Deviance: 22353.\n", + "Time: 18:37:22 Pearson chi2: 1.79e+06\n", + "No. Iterations: 100 Pseudo R-squ. (CS): 0.8679\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -3.9238 0.056 -69.998 0.000 -4.034 -3.814\n", + "n_routes -0.0472 0.016 -3.026 0.002 -0.078 -0.017\n", + "log_arrivals 1.9336 0.019 102.563 0.000 1.897 1.971\n", + "total_pop_adj 0.0004 3.83e-05 10.594 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0022 7.79e-05 28.504 0.000 0.002 0.002\n", + "total_youth_adj 0.0003 4.98e-05 6.417 0.000 0.000 0.000\n", + "total_seniors_adj -0.0018 0.000 -16.407 0.000 -0.002 -0.002\n", + "inc_total_lowincome_adj -0.0006 6.39e-05 -9.235 0.000 -0.001 -0.000\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df_sunday.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended_final = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended_final.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ecda0370-e7ba-44e0-b528-6332ea239a8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
0dcc58c96c33532e549faf9bd89c8542d172026-04-30 03:00:01.083850+00:0091201230284[27][3]82381a59b4772fdc3485a5e160292802NonePOINT(-119.856187 34.410741)Embarcadero & Sabado TardeNoneNone1054
1dcc58c96c33532e549faf9bd89c8542d5772026-04-30 03:00:01.083850+00:0091201230284[27][3]ace4501aacc7cc4014049f82071c69a4NonePOINT(-119.853462 34.41089)Ocean & Sabado TardeNoneNone834
2dcc58c96c33532e549faf9bd89c8542d152026-04-30 03:00:01.083850+00:0091201230284[27][3]382b6a77ef2d0a8bd29fe88d035168cbNonePOINT(-119.857582 34.41187)Seville & Embarcadero Del MarNoneNone1052
3dcc58c96c33532e549faf9bd89c8542d182026-04-30 03:00:01.083850+00:0091241230284[27][3]76b24f95f4a726a64073f85a704a7523NonePOINT(-119.856298 34.410651)Embarcadero & Sabado TardeNoneNone1055
4dcc58c96c33532e549faf9bd89c8542d3512026-04-30 03:00:01.083850+00:0091241230284[27][3]149fbb1a9107d0e466ab56f4eff9be35NonePOINT(-119.853316 34.411008)Ocean & Sabado TardeNoneNone490
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 dcc58c96c33532e549faf9bd89c8542d 17 2026-04-30 03:00:01.083850+00:00 \n", + "1 dcc58c96c33532e549faf9bd89c8542d 577 2026-04-30 03:00:01.083850+00:00 \n", + "2 dcc58c96c33532e549faf9bd89c8542d 15 2026-04-30 03:00:01.083850+00:00 \n", + "3 dcc58c96c33532e549faf9bd89c8542d 18 2026-04-30 03:00:01.083850+00:00 \n", + "4 dcc58c96c33532e549faf9bd89c8542d 351 2026-04-30 03:00:01.083850+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 9 12 0 12 \n", + "1 9 12 0 12 \n", + "2 9 12 0 12 \n", + "3 9 12 4 12 \n", + "4 9 12 4 12 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 30 28 4 [27] \n", + "1 30 28 4 [27] \n", + "2 30 28 4 [27] \n", + "3 30 28 4 [27] \n", + "4 30 28 4 [27] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [3] 82381a59b4772fdc3485a5e160292802 None \n", + "1 [3] ace4501aacc7cc4014049f82071c69a4 None \n", + "2 [3] 382b6a77ef2d0a8bd29fe88d035168cb None \n", + "3 [3] 76b24f95f4a726a64073f85a704a7523 None \n", + "4 [3] 149fbb1a9107d0e466ab56f4eff9be35 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.856187 34.410741) Embarcadero & Sabado Tarde None \n", + "1 POINT(-119.853462 34.41089) Ocean & Sabado Tarde None \n", + "2 POINT(-119.857582 34.41187) Seville & Embarcadero Del Mar None \n", + "3 POINT(-119.856298 34.410651) Embarcadero & Sabado Tarde None \n", + "4 POINT(-119.853316 34.411008) Ocean & Sabado Tarde None \n", + "\n", + " stop_desc stop_code \n", + "0 None 1054 \n", + "1 None 834 \n", + "2 None 1052 \n", + "3 None 1055 \n", + "4 None 490 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SBMTD data \n", + "feed_keys = [\"dcc58c96c33532e549faf9bd89c8542d\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals,\n", + " arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening,\n", + " route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2026-05-03')\n", + " AND feed_key IN ({feed_keys_str})\n", + " AND ('28' IN UNNEST(route_id_array)\n", + " OR '24X' IN UNNEST(route_id_array)\n", + " OR '11' IN UNNEST(route_id_array)\n", + " OR '15X' IN UNNEST(route_id_array)\n", + " OR '27' IN UNNEST(route_id_array)\n", + " )\n", + " \"\"\"\n", + " df_feed = pd.read_sql(query, connection)\n", + "\n", + "df_feed.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7d7fbf2d-f2aa-4009-a4e4-14abeb56239e", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"San Benito Housing\": (34.41949395025939, -119.85428516794293),\n", + "\"UCSB North Hall Inbound\": (34.41543823819993, -119.84793921762432),\n", + "\"UCSB North Hall Outbound\": (34.41528964133994, -119.84781297568064),\n", + "\"UCSB Elings Hall Outbound\": (34.41487045037956, -119.83962136296098),\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3676f5ed-e262-4a07-aa26-73a6fc412cd1", + "metadata": {}, + "outputs": [], + "source": [ + "def create_manual_df(manual_coords):\n", + " rows = []\n", + "\n", + " for i, (stop_name, (lat, lon)) in enumerate(manual_coords.items(), start=1):\n", + " rows.append({\n", + " \"stop_id\": i,\n", + " \"stop_name\": stop_name,\n", + " \"latitude\": lat,\n", + " \"longitude\": lon,\n", + " \"pt_geom\": Point(lon, lat)\n", + " })\n", + "\n", + " return pd.DataFrame(rows)\n", + "\n", + "df_manual = create_manual_df(manual_coords)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0a1c7b85-ce20-4b53-8f7c-142827589776", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_29 = gpd.GeoDataFrame(df_manual, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_29 = gdf_29.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_29['buffer'] = gdf_29.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "35139b8e-ed61-4988-b1f8-3cc63a249d5e", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_29.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4d6cd5c1-774b-48a4-a8b8-940af8d4371e", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect = gpd.overlay(acs_gdf, gdf_29.set_geometry('buffer'), how='intersection')\n", + "\n", + "geometry_intersect['area_2'] = geometry_intersect.geometry.area # area of overlap\n", + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "77f1a2d7-707c-48fd-88a7-b723bfbb81d2", + "metadata": {}, + "outputs": [], + "source": [ + "agg = geometry_intersect.groupby(['stop_name']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_29 = gdf_29.merge(\n", + " agg,\n", + " on=['stop_name'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5fc7a5a3-bfd2-41b5-9039-d2290c854ade", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_feed.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ff5c254f-919c-40cd-bbf8-036f85f17eb3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
0dcc58c96c33532e549faf9bd89c8542d172026-04-30 03:00:01.083850+00:0091201230284[27][3]82381a59b4772fdc3485a5e160292802NonePOINT(-119.856187 34.410741)Embarcadero & Sabado TardeNoneNone1054[27]1
1dcc58c96c33532e549faf9bd89c8542d5772026-04-30 03:00:01.083850+00:0091201230284[27][3]ace4501aacc7cc4014049f82071c69a4NonePOINT(-119.853462 34.41089)Ocean & Sabado TardeNoneNone834[27]1
2dcc58c96c33532e549faf9bd89c8542d152026-04-30 03:00:01.083850+00:0091201230284[27][3]382b6a77ef2d0a8bd29fe88d035168cbNonePOINT(-119.857582 34.41187)Seville & Embarcadero Del MarNoneNone1052[27]1
3dcc58c96c33532e549faf9bd89c8542d182026-04-30 03:00:01.083850+00:0091241230284[27][3]76b24f95f4a726a64073f85a704a7523NonePOINT(-119.856298 34.410651)Embarcadero & Sabado TardeNoneNone1055[27]1
4dcc58c96c33532e549faf9bd89c8542d3512026-04-30 03:00:01.083850+00:0091241230284[27][3]149fbb1a9107d0e466ab56f4eff9be35NonePOINT(-119.853316 34.411008)Ocean & Sabado TardeNoneNone490[27]1
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 dcc58c96c33532e549faf9bd89c8542d 17 2026-04-30 03:00:01.083850+00:00 \n", + "1 dcc58c96c33532e549faf9bd89c8542d 577 2026-04-30 03:00:01.083850+00:00 \n", + "2 dcc58c96c33532e549faf9bd89c8542d 15 2026-04-30 03:00:01.083850+00:00 \n", + "3 dcc58c96c33532e549faf9bd89c8542d 18 2026-04-30 03:00:01.083850+00:00 \n", + "4 dcc58c96c33532e549faf9bd89c8542d 351 2026-04-30 03:00:01.083850+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 9 12 0 12 \n", + "1 9 12 0 12 \n", + "2 9 12 0 12 \n", + "3 9 12 4 12 \n", + "4 9 12 4 12 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 30 28 4 [27] \n", + "1 30 28 4 [27] \n", + "2 30 28 4 [27] \n", + "3 30 28 4 [27] \n", + "4 30 28 4 [27] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [3] 82381a59b4772fdc3485a5e160292802 None \n", + "1 [3] ace4501aacc7cc4014049f82071c69a4 None \n", + "2 [3] 382b6a77ef2d0a8bd29fe88d035168cb None \n", + "3 [3] 76b24f95f4a726a64073f85a704a7523 None \n", + "4 [3] 149fbb1a9107d0e466ab56f4eff9be35 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.856187 34.410741) Embarcadero & Sabado Tarde None \n", + "1 POINT(-119.853462 34.41089) Ocean & Sabado Tarde None \n", + "2 POINT(-119.857582 34.41187) Seville & Embarcadero Del Mar None \n", + "3 POINT(-119.856298 34.410651) Embarcadero & Sabado Tarde None \n", + "4 POINT(-119.853316 34.411008) Ocean & Sabado Tarde None \n", + "\n", + " stop_desc stop_code route_id_array_parsed n_routes \n", + "0 None 1054 [27] 1 \n", + "1 None 834 [27] 1 \n", + "2 None 1052 [27] 1 \n", + "3 None 1055 [27] 1 \n", + "4 None 490 [27] 1 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1bb00808-d6da-46ce-b04c-3f59b1f046c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_id', 'stop_name', 'latitude', 'longitude', 'pt_geom', 'buffer',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_seniors_adj',\n", + " 'total_youth_adj', 'inc_total_lowincome_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_29.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "953f95be-4664-46e1-a87e-d0b2b681ce0b", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged = gdf_29.merge(\n", + " df_existing[['stop_name', 'n_routes', 'daily_arrivals']],\n", + " on='stop_name',\n", + " how='left'\n", + ")\n", + "\n", + "df_merged[['n_routes', 'daily_arrivals']] = (\n", + " df_merged[['n_routes', 'daily_arrivals']].fillna(0)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5e539e68-8b2f-419c-9a5b-dd041773186f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_idstop_namelatitudelongitudept_geombuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjn_routesdaily_arrivals
01San Benito Housing34.419494-119.854285POINT (237676.247 3812365.404)POLYGON ((238080.919 3812365.404, 238078.970 3...1902.74055632.5762096.8024401702.7975621539.6955600.00.0
12UCSB North Hall Inbound34.415438-119.847939POINT (238246.997 3811899.058)POLYGON ((238651.669 3811899.058, 238649.720 3...1537.6986890.0000007.5620651357.8633271260.5017382.049.0
23UCSB North Hall Outbound34.415290-119.847813POINT (238258.139 3811882.247)POLYGON ((238662.811 3811882.247, 238660.863 3...1543.6674980.0000007.5914181363.1340771265.3945654.0133.0
34UCSB Elings Hall Outbound34.414870-119.839621POINT (239009.950 3811814.601)POLYGON ((239414.622 3811814.601, 239412.673 3...560.6123120.0000002.756968495.048155459.5521852.051.0
\n", + "
" + ], + "text/plain": [ + " stop_id stop_name latitude longitude \\\n", + "0 1 San Benito Housing 34.419494 -119.854285 \n", + "1 2 UCSB North Hall Inbound 34.415438 -119.847939 \n", + "2 3 UCSB North Hall Outbound 34.415290 -119.847813 \n", + "3 4 UCSB Elings Hall Outbound 34.414870 -119.839621 \n", + "\n", + " pt_geom \\\n", + "0 POINT (237676.247 3812365.404) \n", + "1 POINT (238246.997 3811899.058) \n", + "2 POINT (238258.139 3811882.247) \n", + "3 POINT (239009.950 3811814.601) \n", + "\n", + " buffer total_pop_adj \\\n", + "0 POLYGON ((238080.919 3812365.404, 238078.970 3... 1902.740556 \n", + "1 POLYGON ((238651.669 3811899.058, 238649.720 3... 1537.698689 \n", + "2 POLYGON ((238662.811 3811882.247, 238660.863 3... 1543.667498 \n", + "3 POLYGON ((239414.622 3811814.601, 239412.673 3... 560.612312 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "0 32.576209 6.802440 1702.797562 \n", + "1 0.000000 7.562065 1357.863327 \n", + "2 0.000000 7.591418 1363.134077 \n", + "3 0.000000 2.756968 495.048155 \n", + "\n", + " inc_total_lowincome_adj n_routes daily_arrivals \n", + "0 1539.695560 0.0 0.0 \n", + "1 1260.501738 2.0 49.0 \n", + "2 1265.394565 4.0 133.0 \n", + "3 459.552185 2.0 51.0 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_merged" + ] + }, + { + "cell_type": "markdown", + "id": "e7554a2c-acca-4af2-bf15-fba4e43fe810", + "metadata": {}, + "source": [ + "Day: 16 arrivals" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "676ff0d9-c1a8-4596-b9e6-25c251142ce5", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged = df_merged.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ae7b763f-9404-4575-9b20-6790aa74aadc", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged[\"n_routes_scn\"] = df_merged[\"n_routes\"] + 1\n", + "df_merged[\"daily_arrivals_scn\"] = df_merged[\"daily_arrivals\"] + 16" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fbabd8fc-8937-4ee0-bdbf-9729c3f886f2", + "metadata": {}, + "outputs": [], + "source": [ + "X_base= df_merged[[\n", + " 'n_routes',\n", + " 'daily_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].fillna(0)\n", + "\n", + "X_base = X_base.rename(columns={\n", + " 'n_routes': 'n_routes',\n", + " 'daily_arrivals': 'n_arrivals'\n", + "})\n", + "\n", + "X_base[\"log_arrivals\"] = np.log(X_base[\"n_arrivals\"] + 1)\n", + "\n", + "X_base= sm.add_constant(X_base)\n", + "X_base= X_base[nb_model_extended_final.model.exog_names]\n", + "df_merged['pred_baseline'] = nb_model_extended_final.predict(X_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "8565382d-37dd-489a-b30f-e4ec17a7726f", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn = df_merged[[\n", + " 'n_routes_scn',\n", + " 'daily_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn = X_scn.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'daily_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn[\"log_arrivals\"] = np.log(X_scn[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn = sm.add_constant(X_scn)\n", + "X_scn = X_scn[nb_model_extended_final.model.exog_names]\n", + "df_merged['pred_scenario'] = nb_model_extended_final.predict(X_scn)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "8907b88f-a7f1-4b31-88b6-d790144cb716", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged['ridership_change'] = (\n", + " df_merged['pred_scenario'] - df_merged['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9f407e44-a573-4c15-be59-657507ce688d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "115.36056904949186\n" + ] + } + ], + "source": [ + "ridership_change= df_merged[\"ridership_change\"].sum()\n", + "print(ridership_change)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "31629603-bab4-47b1-aecb-15ccec4f5b82", + "metadata": {}, + "outputs": [], + "source": [ + "## Querying NTD Ridership Data for SMBTD" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "626d10e4-cb01-483d-8de0-14d941d9fe2f", + "metadata": {}, + "outputs": [], + "source": [ + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name,\n", + " unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA'\n", + " AND report_year = 2024\n", + " AND agency IN (\n", + " 'Santa Barbara Metropolitan Transit District'\n", + " )\n", + " \"\"\"\n", + " ridership_data = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "584b4bff-2f6e-4942-b3e8-63ed5f5a7dc0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agencyntd_idreporter_typereport_yearprimary_uza_nameunlinked_passenger_trips_uptagency_voms
0Santa Barbara Metropolitan Transit District90020Full Reporter2024Santa Barbara, CA4684415.071.0
\n", + "
" + ], + "text/plain": [ + " agency ntd_id reporter_type \\\n", + "0 Santa Barbara Metropolitan Transit District 90020 Full Reporter \n", + "\n", + " report_year primary_uza_name unlinked_passenger_trips_upt agency_voms \n", + "0 2024 Santa Barbara, CA 4684415.0 71.0 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c3b3410-d75e-4c7f-8b12-801cc3b67d56", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Pyproject Local (use-venv)", + "language": "python", + "name": "pyproject_local_kernel_use_venv" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb new file mode 100644 index 000000000..663ee1621 --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb @@ -0,0 +1,1804 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", + "metadata": {}, + "source": [ + "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2747aae9-f823-4183-a212-3143323b787b", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import os\n", + "import google.auth\n", + "import gcsfs\n", + "fs = gcsfs.GCSFileSystem()\n", + "from calitp_data_analysis.sql import get_engine\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import statsmodels.api as sm\n", + "from scipy.stats import skew\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.stats.outliers_influence import variance_inflation_factor\n", + "from shapely.geometry import Point" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5f76fda9-0401-45c9-aa94-bd2f92aeef26", + "metadata": {}, + "outputs": [], + "source": [ + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'\n", + "with fs.open(f\"{GCS_FILE_PATH}/stop_route_df.parquet\", \"rb\") as f: \n", + " stop_route_df = gpd.read_parquet(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7f180892-b53d-460a-808c-013b58d4d6a1", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert n_arrivals and n_routes to integer\n", + "stop_route_df['n_arrivals'] = stop_route_df['n_arrivals'].fillna(0).astype(int)\n", + "stop_route_df['n_routes'] = stop_route_df['n_routes'].fillna(0).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "52b16972-eed4-492b-b4bf-6a683789c5cf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jovyan/data-analyses/.venv/lib/python3.11/site-packages/statsmodels/genmod/families/family.py:1367: ValueWarning: Negative binomial dispersion parameter alpha not set. Using default value alpha=1.0.\n", + " warnings.warn(\"Negative binomial dispersion parameter alpha not \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Generalized Linear Model Regression Results \n", + "===================================================================================\n", + "Dep. Variable: average_daily_boardings No. Observations: 21264\n", + "Model: GLM Df Residuals: 21256\n", + "Model Family: NegativeBinomial Df Model: 7\n", + "Link Function: Log Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -82793.\n", + "Date: Mon, 11 May 2026 Deviance: 38268.\n", + "Time: 18:34:44 Pearson chi2: 2.85e+05\n", + "No. Iterations: 51 Pseudo R-squ. (CS): 0.8306\n", + "Covariance Type: nonrobust \n", + "===========================================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------------------\n", + "const -2.0873 0.037 -56.166 0.000 -2.160 -2.014\n", + "n_routes -0.1204 0.009 -12.712 0.000 -0.139 -0.102\n", + "log_arrivals 1.4387 0.011 128.208 0.000 1.417 1.461\n", + "total_pop_adj 0.0002 3.31e-05 6.058 0.000 0.000 0.000\n", + "workers_with_no_car_adj 0.0033 0.000 28.562 0.000 0.003 0.004\n", + "total_youth_adj 0.0008 4.45e-05 17.017 0.000 0.001 0.001\n", + "total_seniors_adj -0.0010 8.54e-05 -11.163 0.000 -0.001 -0.001\n", + "inc_total_lowincome_adj -0.0004 5.63e-05 -6.765 0.000 -0.000 -0.000\n", + "===========================================================================================\n" + ] + } + ], + "source": [ + "# Copy the dataset\n", + "df = stop_route_df.copy()\n", + "y = df['average_daily_boardings']\n", + "df[\"log_arrivals\"] = np.log(df[\"n_arrivals\"] + 1)\n", + "X = df[['n_routes', 'log_arrivals',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_youth_adj', 'total_seniors_adj', 'inc_total_lowincome_adj']]\n", + "\n", + "# 4. Add intercept\n", + "X = sm.add_constant(X)\n", + "\n", + "# Same X and y as Poisson\n", + "nb_model_extended_final = sm.GLM(\n", + " y,\n", + " X,\n", + " family=sm.families.NegativeBinomial()\n", + ").fit()\n", + "\n", + "print(nb_model_extended_final.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c67c366b-c2be-4e98-bf09-bda67d8b7cfb", + "metadata": {}, + "outputs": [], + "source": [ + "# observed values\n", + "observed = df[\"average_daily_boardings\"]\n", + "\n", + "# predicted values from fixed-effects model\n", + "predicted = nb_model_extended_final.predict()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e5e5443a-91db-4c78-acfb-219a49bf7b80", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAIjCAYAAABLZcwsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnXecZGWV9783VuyqjjPd05N6AmGYGaKCZEFFBUkiimFFV8F1FXVNr+sqQdRdXBXDKmBChVVJBkQFjCgCBsLMMMCknpme7unclatufN4/nlt3qjpN9wTG96V/n8+IXXWr7lP3Sec553d+RxFCCOYwhznMYQ5zmMMc5vC8Qj3UDZjDHOYwhznMYQ5zeCFizgibwxzmMIc5zGEOczgEmDPC5jCHOcxhDnOYwxwOAeaMsDnMYQ5zmMMc5jCHQ4A5I2wOc5jDHOYwhznM4RBgzgibwxzmMIc5zGEOczgEmDPC5jCHOcxhDnOYwxwOAeaMsDnMYQ5zmMMc5jCHQ4A5I2wOc5jDHOYwhznM4RBgzgibwz7jmmuuQVEUhoeHD3VTnncoisI111xzqJtxyHHmmWdy5plnhn9v374dRVG49dZbD1mbxmN8G6dDoVBg3rx53H777Qe3UYcAl19+OUuXLj3UzZgWv//971EUhd///veHuinTYjZjajz+X1073vCGN3DppZce6mb8f4c5I2wOdXj66ad585vfTGdnJ5FIhAULFvCmN72Jp59++lA3bQ7jUN2wqv8Mw2DZsmX80z/9E9u2bTvUzZsV/vznP3PNNdeQyWQOaTu+9KUv0dDQwBve8IbwtephY/78+ZRKpQmfWbp0Keedd97z2cwp0dfXxzXXXMOTTz55qJsS4vLLL68bp7qus2jRIt7whjewcePGQ928f2jkcjk+/elPc8IJJ5BOp4lEIixZsoTXv/713HfffXXXVteDu+66a9rvrPbDO97xjknf//jHPx5eU3vA/uhHP8rdd9/NU089tf8/bA4h9EPdgDn84+Cee+7hsssuo7m5mX/+53+mq6uL7du3861vfYu77rqLH/7wh1x00UWHuplzGIerrrqKF73oRTiOw+OPP84tt9zCfffdx/r161mwYMHz2pYlS5ZQLpcxDGNWn/vzn//Mtddey+WXX05jY+PBadxe4DgOX/rSl/jABz6ApmkT3h8cHOTrX/86H/zgBw9B62aGvr4+rr32WpYuXcoxxxxT9943vvENfN8/JO2KRCJ885vfBMB1XbZu3cpNN93Er371KzZu3BiO09NPP51yuYxpmoeknTPFAw88cNDvsWXLFs455xx27NjBRRddxD/90z+RTCbp6enhF7/4Beeddx7f+973eMtb3jLr745Go9x999187Wtfm/Csf/CDHxCNRqlUKnWvH3vssZxwwgl8/vOf53vf+95+/bY57MGcETYHALZu3cpb3vIWli1bxkMPPURbW1v43vve9z5OO+003vKWt7Bu3TqWLVt2CFs6Eb7vY9s20Wj0UDflkOC0007jkksuAeBtb3sbhx12GFdddRXf/e53+djHPjbpZ4rFIolE4oC3RVGU/2f74ec//zlDQ0NThlyOOeYYPve5z/Hud7+bWCz2PLdu/zFbw/hAQtd13vzmN9e9dtJJJ3Heeedx33338c53vhMAVVX/nxg/B9tIdF2Xiy66iIGBAf7whz9wyimn1L1/9dVX88ADD+B53j59/ytf+Up+9rOf8ctf/pILLrggfP3Pf/4z3d3dvPa1r+Xuu++e8LlLL72Uq6++mq997Wskk8l9uvcc6jEXjpwDAJ/73OcolUrccsstdQYYQGtrKzfffDPFYpEbbrhhwmeHh4e59NJLSaVStLS08L73vW/CKerBBx/k1FNPpbGxkWQyyeGHH86///u/111jWRZXX301K1asIBKJsGjRIj7ykY9gWVbddYqi8J73vIfbb7+do446ikgkwr333ktzczNve9vbJrQvl8sRjUb50Ic+NOt7WZbFBz7wAdra2mhoaOD8889n165de32eAwMD6LrOtddeO+G95557DkVR+OpXvwpID8y1117LypUriUajtLS0cOqpp/Lggw/u9T6T4ayzzgKgu7sb2BNO27hxI2984xtpamri1FNPDa+/7bbbOP7444nFYjQ3N/OGN7yBnp6eCd97yy23sHz5cmKxGC9+8Yv54x//OOGaqThhzz77LJdeeiltbW3EYjEOP/xwPv7xj4ft+/CHPwxAV1dXGArZvn37QWnjVPjJT37C0qVLWb58+aTvf/KTn2RgYICvf/3re/0u3/e58cYbOeqoo4hGo8yfP58rr7ySsbGxCdddc801LFiwgHg8zktf+lI2btzI0qVLufzyy8PrRkdH+dCHPsSaNWtIJpOkUile9apX1YWGfv/73/OiF70IkMZ49TlW+6KWE+Y4zkGZL7NBe3s7IA202t8wnhN25plnsnr1ajZu3MhLX/pS4vE4nZ2dk65Fg4OD/PM//zPz588nGo1y9NFH893vfrfumuoY/e///m/+53/+h2XLlhGPx3nFK15BT08PQgg+9alPsXDhQmKxGBdccAGjo6N13zGeE2bbNp/85Cc5/vjjSafTJBIJTjvtNH73u9/t07O588472bBhA5/4xCcmGGBVvOIVr+BVr3rVPn1/Z2cnp59+Ov/7v/9b9/rtt9/OmjVrWL169aSfe/nLX06xWNzntWkOEzHnCZsDAPfeey9Lly7ltNNOm/T9008/naVLl07gIYA8HS1dupTPfvazPProo3z5y19mbGwsdFk//fTTnHfeeaxdu5brrruOSCTCli1bePjhh8Pv8H2f888/nz/96U9cccUVHHnkkaxfv54vfvGLbNq0iZ/85Cd19/ztb3/LHXfcwXve8x5aW1tZuXIlF110Effccw8333xz3Un1Jz/5CZZlhTyf2dzrHe94B7fddhtvfOMbOfnkk/ntb3/Lueeeu9fnOX/+fM444wzuuOMOrr766rr3fvSjH6FpGq973esAaYR89rOf5R3veAcvfvGLyeVy/O1vf+Pxxx/n5S9/+V7vNR5bt24FoKWlpe71173udaxcuZLPfOYzCCEA+PSnP80nPvEJLr30Ut7xjncwNDTEV77yFU4//XSeeOKJMDT4rW99iyuvvJKTTz6Z97///Wzbto3zzz+f5uZmFi1aNG171q1bx2mnnYZhGFxxxRUsXbqUrVu3cu+99/LpT3+aiy++mE2bNvGDH/yAL37xi7S2tgKEh4Hno40gvQDHHXfclO+fdtppnHXWWdxwww38y7/8y7TesCuvvJJbb72Vt73tbVx11VV0d3fz1a9+lSeeeIKHH3449Ep97GMf44YbbuA1r3kN55xzDk899RTnnHPOhEPMtm3b+MlPfsLrXvc6urq6GBgY4Oabb+aMM84Iw3lHHnkk1113HZ/85Ce54oorwrl88sknT2ifYRgHZb5Mhyq/yPM8tm3bxkc/+lFaWlpmxKcbGxvjla98JRdffDGXXnopd911Fx/96EdZs2ZNaIiUy2XOPPNMtmzZwnve8x66urq48847ufzyy8lkMrzvfe+r+87bb78d27Z573vfy+joKDfccAOXXnopZ511Fr///e/56Ec/ypYtW/jKV77Chz70Ib797W9P2b5cLsc3v/lNLrvsMt75zneSz+f51re+xTnnnMNf/vKXCaHhveHee+8FmOA9PJB44xvfyPve9z4KhQLJZBLXdbnzzjv5t3/7twnjr4pVq1YRi8V4+OGH56gpBwpiDi94ZDIZAYgLLrhg2uvOP/98AYhcLieEEOLqq68WgDj//PPrrnv3u98tAPHUU08JIYT44he/KAAxNDQ05Xd///vfF6qqij/+8Y91r990000CEA8//HD4GiBUVRVPP/103bX333+/AMS9995b9/qrX/1qsWzZslnf68knnxSAePe731133Rvf+EYBiKuvvnrK3yOEEDfffLMAxPr16+teX7VqlTjrrLPCv48++mhx7rnnTvtdk+F3v/udAMS3v/1tMTQ0JPr6+sR9990nli5dKhRFEX/961+FEHv66bLLLqv7/Pbt24WmaeLTn/503evr168Xuq6Hr9u2LebNmyeOOeYYYVlWeN0tt9wiAHHGGWeEr3V3dwtAfOc73wlfO/3000VDQ4PYsWNH3X183w///+c+9zkBiO7u7oPexsngOI5QFEV88IMfnPBe9fkNDQ2JP/zhDwIQX/jCF8L3lyxZUtd/f/zjHwUgbr/99rrv+dWvflX3en9/v9B1XVx44YV1111zzTUCEG9961vD1yqVivA8r+667u5uEYlExHXXXRe+9te//nXC86/irW99q1iyZEn494GeL1PhrW99qwAm/Ovs7BR///vf666tjunf/e534WtnnHGGAMT3vve98DXLskR7e7t47WtfG7524403CkDcdttt4Wu2bYuXvOQlIplMhutWdYy2tbWJTCYTXvuxj31MAOLoo48WjuOEr1922WXCNE1RqVTq2lQ7plzXrRt3QggxNjYm5s+fL97+9rfXvT6TtePYY48VjY2NE14vFApiaGgo/JfNZsP3qs/uzjvvnPa7AfGv//qvYnR0VJimKb7//e8LIYS47777hKIoYvv27XVjfjwOO+ww8apXvWrae8xh5pgLR86BfD4PQENDw7TXVd/P5XJ1r//rv/5r3d/vfe97AfjFL34BEHoqfvrTn05JDL7zzjs58sgjOeKIIxgeHg7/VUNr4936Z5xxBqtWrap77ayzzqK1tZUf/ehH4WtjY2M8+OCDvP71r5/1vartv+qqq+ru8/73v3/S3zAeF198Mbqu17Vnw4YNbNy4sa49jY2NPP3002zevHlG3zseb3/722lra2PBggWce+65FItFvvvd73LCCSfUXfeud72r7u977rkH3/e59NJL655De3s7K1euDJ/D3/72NwYHB3nXu95V5zG5/PLLSafT07ZtaGiIhx56iLe//e0sXry47j1FUfb6256PNoIM9wkhaGpqmva6008/nZe+9KXccMMNlMvlSa+58847SafTvPzlL69r8/HHH08ymQzb/Jvf/AbXdXn3u99d9/nq/KlFJBJBVeVy7XkeIyMjYVj/8ccf3+vvmwwHer5Mh2g0yoMPPsiDDz7I/fffz80330wymeTVr341mzZt2uvnk8lknVfINE1e/OIX12UB/+IXv6C9vZ3LLrssfM0wDK666ioKhQJ/+MMf6r7zda97Xd3YOPHEEwHpfaoNkZ544onYtk1vb++U7dM0LRx3vu8zOjqK67qccMIJ+9Q/uVxuUs7Vxz/+cdra2sJ/b3zjG2f93VU0NTXxyle+kh/84AcA/O///i8nn3wyS5Ys2evnXoiyRAcLc+HIOYTGVdUYmwpTGWsrV66s+3v58uWoqhpyel7/+tfzzW9+k3e84x38n//zfzj77LO5+OKLueSSS8KNZfPmzTzzzDMT+GhVDA4O1v3d1dU14Rpd13nta1/L//7v/2JZFpFIhHvuuQfHceo2lZnea8eOHaiqOoEjdPjhh0/6ufFobW3l7LPP5o477uBTn/oUIEORuq5z8cUXh9ddd911XHDBBRx22GGsXr2aV77ylbzlLW9h7dq1M7rPJz/5SU477TQ0TaO1tZUjjzyybhOpYvwz27x5M0KICf1XRTVktmPHDmBiP1clMaZDdZOcimOyNzwfbayFCMK00+Gaa67hjDPO4KabbuIDH/jApG3OZrPMmzdv0s/Xji+AFStW1L3f3Nw8wRj0fZ8vfelLfO1rX6O7u7uOkD0+7DxTHOj5Mh00TeNlL3tZ3WuvfvWrWblyJR/72McmJYHXYuHChROM9qamJtatWxf+vWPHDlauXBmuKVUceeSR4fu1GH8oqBpk40PX1dfH8/nG47vf/S6f//znefbZZ3EcJ3x9srVqb2hoaGBkZGTC6+9+97vD8O2BCFW+8Y1v5C1veQs7d+7kJz/5yaQ8u/EQQszoADWHmWHOCJsD6XSajo6OugVtMqxbt47Ozk5SqdS0142foLFYjIceeojf/e533HffffzqV7/iRz/6EWeddRYPPPAAmqbh+z5r1qzhC1/4wqTfOX5hnIqP84Y3vIGbb76ZX/7yl1x44YXccccdHHHEERx99NHhNbO91/7gDW94A29729t48sknOeaYY7jjjjs4++yzQ94TSO/K1q1b+elPf8oDDzzAN7/5Tb74xS9y0003TanlU4s1a9ZM2OAmw/hn5vs+iqLwy1/+clJJhn+E7Kfnq43Nzc0oirLXjRZkf5155pnccMMNE7yL1TZPJ/g6lTEzHT7zmc/wiU98gre//e186lOform5GVVVef/7379fshOHcr4sXLiQww8/nIceemiv107W9zAzo3m237kv97rtttu4/PLLufDCC/nwhz/MvHnz0DSNz372syFHczY44ogjePLJJ+nt7aWzszN8/bDDDuOwww4DOCBZpOeffz6RSIS3vvWtWJY1IzHWsbGxKQ9Fc5g95oywOQBw3nnn8Y1vfIM//elPdZlzVfzxj39k+/btXHnllRPe27x5c91pb8uWLfi+X6fOraoqZ599NmeffTZf+MIX+MxnPsPHP/5xfve73/Gyl72M5cuX89RTT3H22Wfv1ynr9NNPp6Ojgx/96Eeceuqp/Pa3vw2z8KqY6b2WLFmC7/ts3bq1zvv13HPPzbg9F154IVdeeWUY8tm0adOkshHVTLW3ve1tFAoFTj/9dK655poZGWH7iuXLlyOEoKurK1zYJ0M1PLF58+YwBAUyw667u7tuwx6Pqhdqw4YN07Zlqn54PtoI0iu0fPnyMKN0b7jmmms488wzufnmmydt869//WtOOeWUacn71TZv2bKlbv6MjIxMMAbvuusuXvrSl/Ktb32r7vVMJlNn0M927hzI+bIvcF2XQqFwQL5ryZIlrFu3Dt/367xhzz77bPj+wcJdd93FsmXLuOeee+qe0fiknJnivPPO44c//CG33347H/nIRw5UMycgFotx4YUXctttt/GqV72qbixNBtd16enp4fzzzz9obXqhYY4TNgcAPvzhDxOLxbjyyisnuMFHR0d517veRTweD6UEavE///M/dX9/5StfAQizlsandwNhtlA1xf3SSy+lt7eXb3zjGxOuLZfLFIvFGf0OVVW55JJLuPfee/n+97+P67p1oZXZ3Kva/i9/+ct119x4440zagtIvtc555zDHXfcwQ9/+ENM0+TCCy+su2b8804mk6xYsWK/0v9ngosvvhhN07j22msnnPKFEGG7TjjhBNra2rjpppuwbTu85tZbb92rwn1bWxunn3463/72t9m5c+eEe1RR1Swb/33PRxureMlLXsLf/va3GV17xhlncOaZZ/Jf//VfEzLJLr30UjzPC0PQtXBdN2zP2Wefja7rEyQvqtIltdA0bcLvv/POOyfwlKZ6jlPhQM6X2WLTpk0899xzezWQZ4pXv/rV9Pf313HcXNflK1/5CslkkjPOOOOA3GcyVL1ntX302GOP8cgjj+zT91166aWsWrWKT33qUzz66KOTXrM/XsBafOhDH+Lqq6/mE5/4xF6v3bhxI5VKZdKM2znsG+Y8YXMAJJfmu9/9Lm9605tYs2bNBMX84eFhfvCDH0yqodTd3c3555/PK1/5Sh555JFQ0qG6uF533XU89NBDnHvuuSxZsoTBwUG+9rWvsXDhwtDr9pa3vIU77riDd73rXfzud7/jlFNOwfM8nn32We644w7uv//+CUTzqfD617+er3zlK1x99dWsWbMm5IRUMdN7HXPMMVx22WV87WtfI5vNcvLJJ/Ob3/yGLVu2zOrZvv71r+fNb34zX/va1zjnnHMmKMKvWrWKM888k+OPP57m5mb+9re/cdddd/Ge97xnVveZLZYvX87111/Pxz72MbZv386FF15IQ0MD3d3d/PjHP+aKK67gQx/6EIZhcP3113PllVdy1lln8frXv57u7m6+853vzIhv9eUvf5lTTz2V4447jiuuuCIcV/fdd19YXuf4448HJPH4DW94A4Zh8JrXvOZ5ayPABRdcwPe//302bdo0rdetiquvvpqXvvSlE14/44wzuPLKK/nsZz/Lk08+ySte8QoMw2Dz5s3ceeedfOlLX+KSSy5h/vz5vO997+Pzn/98OH+eeuopfvnLX9La2lrnUTnvvPO47rrreNvb3sbJJ5/M+vXruf322yf8tuXLl9PY2MhNN91EQ0MDiUSCE088cVpe0oGaL9PBdV1uu+02QIY3t2/fzk033YTv+/vsLRqPK664gptvvpnLL7+cv//97yxdupS77rqLhx9+mBtvvHGviUf7g/POO4977rmHiy66iHPPPZfu7m5uuukmVq1atU+ePsMw+PGPf8w555zDqaeeysUXX8xpp51GIpGgt7eXn/3sZ+zcuXNSuZy777479P7V4q1vfeukoeOjjz56xobwgw8+SDwe3yfpnDlMgec9H3MO/9BYt26duOyyy0RHR4cwDEO0t7eLyy67bILMghB7Uvc3btwoLrnkEtHQ0CCamprEe97zHlEul8PrfvOb34gLLrhALFiwQJimKRYsWCAuu+wysWnTprrvs21b/Nd//Zc46qijRCQSEU1NTeL4448X1157bV0qNkGK9VTwfV8sWrRIAOL666+f9JqZ3qtcLourrrpKtLS0iEQiIV7zmteInp6eGaWZV5HL5UQsFpuQPl/F9ddfL1784heLxsZGEYvFxBFHHCE+/elPC9u2p/3emaakT5duLoQQd999tzj11FNFIpEQiURCHHHEEeJf//VfxXPPPVd33de+9jXR1dUlIpGIOOGEE8RDDz00IVV/MokKIYTYsGGDuOiii0RjY6OIRqPi8MMPF5/4xCfqrvnUpz4lOjs7haqqE+QqDmQbp4JlWaK1tVV86lOfmvHzq8onTCYxcsstt4jjjz9exGIx0dDQINasWSM+8pGPiL6+vvAa13XFJz7xCdHe3i5isZg466yzxDPPPCNaWlrEu971rvC6SqUiPvjBD4qOjg4Ri8XEKaecIh555JFJf9tPf/pTsWrVKqHrel1fjJeoqOJAzpfJMJlERSqVEmeffbb49a9/XXftVBIVRx111KTfO/73DAwMiLe97W2itbVVmKYp1qxZM2EsVsfo5z73uUnvPX4+fec73xFAKPlSbVPtc/d9X3zmM58RS5YsEZFIRBx77LHi5z//+aRtnM3akclkxHXXXSeOPfZYkUwmhWmaYtGiReKSSy6ZIC1Sbf9U/6oSI3tbP4WYesyfeOKJ4s1vfvOM2j6HmUER4gD5NOcwhznM4f9xfOpTn+I73/kOmzdvnpKgfbCRyWRoamri+uuvn8DPmsMcDhWefPJJjjvuOB5//PFZi8/OYWrMccLmMIc5zCHABz7wAQqFAj/84Q+fl/tNpjVW5RzWlsWZwxwONf7zP/+TSy65ZM4AO8CY84TNYQ5zmMMhwq233sqtt97Kq1/9apLJJH/605/4wQ9+wCte8Qruv//+Q928OcxhDgcZc8T8OcxhDnM4RFi7di26rnPDDTeQy+VCsv71119/qJs2hznM4XnAnCdsDnOYwxzmMIc5zOEQYI4TNoc5zGEOc5jDHOZwCDBnhM1hDnOYwxzmMIc5HAL8f88J832fvr4+Ghoa5oqOzmEOc5jDHOYwh4MKIQT5fJ4FCxZMKCg/Hv/fG2F9fX0HtCDzHOYwhznMYQ5zmMPe0NPTw8KFC6e95v97I6xaqqLrPd9DmFE0RcEH0lH502Omjq4qOJ5PpuxwZHuKj7zycI5oT/Ff9z/Lxt4cy9oSdV40IQTbhooc1ZnmI+cczrP9OW76w1bGig7tqShRU6Nie/TnKjQlDN51xnJWLUhPaNvTvRm++OvNjBVt5qUi6KrC0705irZLImJwVGeKqKbRn6vQGNc5/+hO7n+6nx2jJY5sb6izsH3f55n+PEubE7zrpcvoaknybH+Onz7Vx7ahIrbj43g+lucR0TQMTcU0VJa1Jbjg6AUT2nfvU73c+OtN5CsuuqqiKoKyI4joCsmIwaoFKRrjZvg8chWHnaNlzljZwp+3jtKUMJjfEIXguQkheGpXhpG8ha4qHL4ghampGKpKIqLRPVwKn+dvnx3kunufxheCZNRAVxVcX1C2XSK6xtLWBAL491cfQVdrEoCNfVl++lQf63uy9GfLWJ5PRFdpSpgsa0lwzup2OtJRbn5o2177qXu4wMfv2UB/roLn++EYcX2fYsVFAdrSUW64ZC3L2yaWQlm/K8N/37+JxS1xNFX+/rGSzca+HLbrETXkfQ9rb6Di+NOOkervqvbhZH22t2s29mX3aXweSGzsy/L1P2xlw64sjufTGDdwfSjbLqausaqjgdGiw1Gdac5b284tM+inqdA9XOAz9z1DX6ZMwXJpiBrh/LUcj2zFpuL4JE0dH8G8higtiQg9YyVs1wv6GwZyFmXHx9AUGmMGBdvF90FXwfEEuqagqgqrF6S56NhO1vVm9/SBrtDWEOWkZc0c1Zmid6zM13+/lXTMYHe2TKbkhO2yHI/Rko3nCaKmyryGKIe1JenPWwesf2Y7BrqHC3zmF8/SGDVIRCduE8WKS6bi1M3B5wO17bI8j3U9WZJRPexfx/OxXZ/jFjdiuT6P7xyjMWZQdnw83wcgb7kIAZqqEDc0TlrWzOWndB3wOVD7zOc3RNg8VGC0YKEoEDX0cA0dv5+o6j9uxGY242im146/zhU+j+8Yw/cFmqoSNTVs18f3BaqqEDNU0jGTT110FHf8bRd/2z6K6/nkK154TUNUQ9dUXrS0Zcpn6vuCHaNFChWXZFRnSbOsu1rd9+c1mPx1+xglxwvGC7iewNQVIrqGpqq0p6J8+uLVANx//dd5+/dvwHRtNi9cxgm7ts2oVNb/90ZYdXIasTi2GsUFGqI6L17WQvdIkVzZpez7uIogkYxy4YtX8OLDFqKqCm869Qi+/JvN9BRsOtJRYqZG2XLpHiuSSCQ546hFJJMN3L95FwXf5MglzeH94kBTk2DLYIEHNufD76zC9wUPbO6hhElXRwpDV9k8WIBInPaUTqbs0J0VrF4Q54jGFFuHijw97PLeV67lK7/dwq7injb1Zys821/E8zX0Enzh97toipsM5iq4vqCjuQnL8Vi3K0PB8klENdYuTBPVNTaPlvn2Xwa46uwUqzvl5NnQm+UP3UXamptI2B5l26Pi+Pg4+LrGss5G5rfIAYsQ5C0XW1FJpwyOWdHJukGXztZEaIAA5MoOJREhlY5ScXwakimak5Hw/cV6nJ6CzbCtsm7Qwown8YUgGmxUBhBLCDIlm+6sz6vXdLBmaQeqqrChN8u3/zLArjGLEVuDSJwIkK845HKCXYUif+3bTjpuENVVuuY343oCV1NpatJpakrX9ZOf8RiyVDBjNNVs4AYQjUuDM+cqYMRJpVITxlxHm0oy1YCvm8SjOkIIeodsPD1KU9LA9QXC8GlraSIZ0accI9XfNVr06GhukuPP9ur6DNjrNScdsYhkQ4q7H9/FlsECYyWfiGFy/MoWLj6uM+x33xdsHymSr7g0RHWWtiQOyIbg+4L7N/cwYmvo0QQJQx4Cap9nX0lh5fwWevIOd60fnfV8qkPWp0QEWxM0pOS9QBpgOcvG13UMTaAaGrqqkHVhcMTB0EyaGyPhPRuVKE7eQihgqRqtTUmyZRfL9VB10DSVpS0JPnHRGtYsbOT1wfN7qifDnzYPM5i3+MGTw4z9uQ8EVFyFnoJDYywGpkHWE8RNnWhCIYKJ6/lETZ14MkpJNTl+ZWtd/+wPTkqlZjQGap+h0GOkG+vncRV6VDA2XJxyDhw01LSraLmYcQ90FT3oY00InIoLZpwdY3kUM44WMUFxiesqYyUHPSLwgYimoGoqj/fbeI/1876XpQ7Is4Y9Y746jvMVlzIO6cYYhqaQLTv0FhW5jioKi7UYPQWbUUdjWdvzZ9TOFjMdR+N//1Tz+IQVnROvE4K2AgxkKxQcj5KjMK8hjq6quL7PaMFGiRjokQQnHb6QX2/OUbY9UrEopq5iuz5DZYeYqXHi4Z00Nk7s0w292fA3WI5PxFBZMS/JSV0t7CrA4vZWLMfFUksophwriqKgC/B8QTJpUnY8hiwFX49x9M9u5+jvSFmZZ44/nTuvvBquOHtGFKhDboT19vby0Y9+lF/+8peUSiVWrFjBd77znbAgrBCCq6++mm984xtkMhlOOeUUvv71r7Ny5cpZ3adWhyNhaDQnTJoTJrvGymwfKTJWtDEjOg9s7Kd7pMhrj1vI6s40V529MuysbcM2YyVbfp8Ptz22kweeHmDbcJGFTfEJD1xRFDrSMTYP5tk+UqybXA9uHOD+jf3Yrs9A1kIgKNkecUNjtCRP6gXLpWS5NCdN5jdEeWpXhhOWNvLa4xbyyLZhtg4V2TZk05+roKsKRy1I0Z6OUbZcHt02gu36nNjVTDKi8dxADlcI5qUi5CouO0eKHLu4iRXzkmwZLHDP472s6pCL6d2P72K0aLN2YSMK8uRoOx6bBgsM5y2G8xZLmuOMlRy2DRfIlhyKtkcqpvObZwZwPJ+y7ZGsOUE7no/nCwxNQVMVDL0+Th4zNQZyPpsG8mwdKnJEe4qtQwVyFYe4qaOpCp4vEAJcX3DSsmZUVcH3BXc/vouRgoXrCTxfesAyJQdQUBTQg8/2jJYwVIXBvI2qyHakYjpdrcm6fsqVHSzPJ25ok/apqamUHI9c2Zl0rC1tSbBiXpJ1PRnmp6NkSw6jBZuYqaEoULJdWhIRGiI6TDFGqr9rtGizYl4ybEcyqrMiIvvs7r/vApj2mmq/ru5Ms6ojNaWRNdWiVJ0H+4PtI0W2DBZoihkMZKUntPZ5xk2dbNnFE4Js2SFvOSxqSsxqPtWiIaqjqeC4goS5xxObt1x5ulbAQ0EAUUOjbLvYro+i1JYpEnhCMD8VJVO2KTs+muIRN1QaYwaGprCgMcZHX3UEaxY2AqCqCiXb45cb+hkt2sRNjUzRpux4KEjPi4dgd7aCAFQVSrYHAuKmxsuPnM+5axfQno4eUCMY5HiKmxrnH72AXNkhFTNIx4wp79EQ1YkY6oR5XEXZ9ogYKg2TvHcwUduuhqhOKqYzWrRJBYcl1xdoqvQujhRt0lGDsuMRNzWyZQffFxi6Gq4jDVENX8g+ufvvu4gaKkXL2+/nXx3zHekYiqKE658c+9Ux75APPLXV9S9fcQ/sAzsI2NtaAhN/fy1q5/HDW4cnXqcodLUk6B0r4wlQatb9ku2RjhkkIxr3PN6LQNDWEMH1BLmKS9Hy0FSFBU0xdFXhqZ4sr1m7YMLh9su/2cxo0aYjHSOWlgfX9buybOzLUbBcOtIx8paD54MeGGBB0xBCtqd2H1BPOw0vkeR3p7yGW87/F5pmMWwOqRE2NjbGKaecwktf+lJ++ctf0tbWxubNm2lqagqvueGGG/jyl7/Md7/7Xbq6uvjEJz7BOeecw8aNG4lGozO+l+dDIq6jAUXHCwwXlc0DeQqWSzJqsCbwDq3flaV3rMxVZ68MB9yDGwf49sPdKMhNNh7RKdseG3fn2J2t0NoQITnJ45xscm3ozfLth7vJlV2a4gaGplKy5QnbcuQgMjQVzwdNUxjMVdg1VkYBvvq7rbQkTFa0JXnjiYv5xbrdKCqs7kihBOFJoYACqIqcDLqmkCu7xE0dRVHDTS9fcUnFjLqNDZgwKRqiBkQNDldVyk6G3bkKmwcL7M6UKQUbTDqms7ytgZ0jJUaKFpbrSSOu6kXSVDQVCpbLvIaoNEBqUF3UQcFyfJa2JoiZGt3DBXJlFy9YXFuSEUxNpT0dA/ZM9lTMpDdTCRdbzxdEdBU/mLymruD5cgLprk9bg4nrSwOmaGVZtSCF5fjhM4noKpbrETM15NOsQmC5HhFdIxUzgMk9SMcsauQ3zwxI7yZQdjwqroeuynBuV2siDNVONkZmsoit682iwF4Xuu0jRZa2JKY1wKZalGrnwb4iX3GxHJ+WpIkWhJYNbU97qwZ2oeKiBv9fPveJmMlmtbQlwbK2JNuGiri+j6FpOJ4IDC2wPBmW8h0ZurBcH18IGcryfFRFoWS7RHWN1Z1pPN/n8Z0ZWhImUUMjHTNYOb9hggepznBuS/B4TwbL82lOmAghx5rt+SiKQAgFFYiaGqqisKg5zjtPXxYadAcS0xnYUxkZ1YPE+l1ZVkSSdeNLCMHubJm1CxtZWvWIP0+oa9e8JF2tSYpWNjisaRQtl1TUZDBvoSsKC5qidA+VEAJsV6BrqpzNwWaqIPcGQ1O4f2M/63qzaIqy34eQ6piPpeU4luvfnrGvqwplX+C4cixOZ9QeLA/1/kBVlWk9duN//3hU5/FQ3pr0Ol1TiRoaCnK+5i05H1sSEbpaExiayvreLAJY3tZAIqKRr7g4no+hyedYtLxZH2439GYZK9mULRdTVdBU8DwfXZXtE0KurYoKdtkhYhhyHzj8aLSnN9CuN3LU47vYuGNgxs/ykBph//Vf/8WiRYv4zne+E77W1dUV/n8hBDfeeCP/8R//wQUXXADA9773PebPn89PfvIT3vCGN8z4Xicua2LxvBZGSg7rejKMFW125yqUHY8FTTG6WpM0JyTHabwXAeDR7hE8X7C6M13XccvaEuzKlNkyWKAlYU7YDMu2F3hmbJ7qyZCIaNz9910ULZdkRHpaFEXBDDxDvtijGyJds2AHG4iuKSxuimFoGut7s2wazFO0XNqSUUZLTjj4HNfHF5CISGMrW3JqTmF7Nj0n2IzGb2xTTZ7mhMnahWme6smwfaQoeTURuSktDZ6fEFHKjkfB8kIjImbKyeQLOYiXtsRDA6Taz9VF/bD5yfCk25wwaYo31U0uBchWnHCxqk72SEwNPGVKuNjKZyi/33blb6vyy1xfLoypqEGu4rBlsEBnYzT83gXpGLszZbJl6Ymrfq5kuxiqSkc6SjpmTLrBVUPByYiOqijkKw4lW1BxfKK6xuLmOE3BWAvHyLgFOFt2yJScwJAUNNTwXqp9VrY9UNirwfJkT4bvP7pj0k14VUdqrx636jyY6cI/ftNIRDQihoquKKHnIh0zqBq30sCWvLnD2xsYyFX2ywOjqgqXn7yUv20fZbRg05Qw8XyB6/u4nkBR5ByIGRqpqEHGF1iOjxsYglFjz2LflDApVFyO7GjgnactozFuTroR+r7gj5uHeGJnhqa4Qd5yw4OP9MhKL63rC9pTMTxfYLk+axamaW+IsGWoyI+f6OPI9hQ7x0oHbMPdVwNbVRVee9xCesfKdfO4bHvszpZpTphcfFzn824MTNauVQtSbBnIM1K0UVWFdNxgXkMELzCypFfUl0ZXyFGV66sAfCHoHStTcnyWt2p0NMb2+xAy3pM43mtX9dhJr9zURu3B9FAfTMzUk9rWEJn0Oic4DDUlZNjviPYUjXEjjB54vqDkSC+yjDAo4aEY5Jrv+j4jBZtn+/PhPNrb4XZpS4LRkk33aJHFzXHipk4p8JRX901DV2ndvZPP/eA6vvXGD5OOnSi/YMkSVgOrOlKs397EHe+d2bM6pEbYz372M8455xxe97rX8Yc//IHOzk7e/e538853vhOA7u5u+vv7ednLXhZ+Jp1Oc+KJJ/LII49MaoRZloVlWeHfuVwOgPZUDEVVieoaK+cnec3aBfzgrztpikeYn4rUdch4LwJM9A5VkYoatCRMRgoWuYpDOiaJlvmKi+16bBsuYmoK3/jjNmxXhjh2Z8ssb01ge344KQGUcLEWOAiihkrZkWRDRSEMoVU3yMe2jbA7WyFmlAJDTg7E+aloyOPwfAHBpiNPYZIb4wu5CQghJmxs002eqK6xsCmG7fo0xU1SMaPOQFAUheVtDewaK7GkOc5gwWIgJxePlyxrYSBfYaRoY+rapIv6stbkhBN4dXIJIbkEtYtVdbJ7vvyNky228jlIz6AIvsf3BWjVcJjGSMHiuMVNLG6Ks320yMKmGPmKg6JAvuJRDhbN5riJrikcu7iJouXyld9uqd/gxoWCmxMmuYrD+t4cubKNoij0Zso0JQxSUQMBExbgDb1ZbntkBz1jJXrHypi6GoZNqweFsu2Fxu2kfSUEQ/kKmbLNbY/sQFFgQWN8wib82uM6ZxQ2mC78V4vJNo3lbQma4iZ9mTJdLQlKlhcat5oChYqDrknD9vKTl3LPE7377YFZu7CRD77icD7/wHOMlRyUgMsB0hA3NJVUTHqhW5MRKq6H8GFVRwPNyT2h4tp7nrayLQyB1xqZRcvlnid6eWLnGFsGiyRMjYihYbkyDAaSyO94AlVR8AVEDOmdMzUVRVXpSMd4YucYH7lnXegd2N8NdyYh7ekM7PF0jOo8XtOZ5qRlzXi+YNtQ4Xn3zIxvl+X4dDbFOG5JM0ta4mwfKTKQLZMtOfRlypKOEKwD0vgC1/Mlf8jz8YRcc5MR6d2uXWP35RACk3sSa712ni9oTUZQhNxbJjNqD7aH+mBipp7UU5a38vtNQxOuGx85WdQUqzu4lwPqjmDi+jdatOkeLkjPs+vz7T9189fto7z2uIXy8DONhy4e0WmKmSRMnYFshVRUDx0WtuejoHDSzg18/kfXkSrleO+9/0P7566s+w5VVWaVrHJIjbBt27bx9a9/nX/7t3/j3//93/nrX//KVVddhWmavPWtb6W/vx+A+fPn131u/vz54Xvj8dnPfpZrr7120vfqPC7tDZiaRltDZMLmA1N4h1Iq+YqD4/oYuhou1CvnNfDXHaN0DxVpa5BGxVjJpmS7OJ6gIaLT1hBjaWuU3ZkyubLLtqEiS1oSFC2PXKXKLZKxZgGgSL5KruzgC4GhqUR0FTdYTXaOltidq1BxZdaPpqo4nkLF8SVhVVfIV1wiuko6ZpCK6QzmLXzPp+xIr9qzu3PszpTRNYWTlrWGG9veJk9nY5yBXIWOxtikpN2YKcnQb37JEtIxo+5Uv3F3bsKivnZhY11oZyYn8KrnYSBXIaarDBcsUlGd4YIVtFU+Q9fz0RS5CZq6GnpEfCGC05KgaMkw2JKWGJ/+5TNsGSwwWrAZKzloqsLi5jjpqE7BdoMQssn5x3RwzxO9Eza48aHgpoRJKmaysCnGuqJFxZFh4IIls+PipsbCpni4ANcuvI0xg3zFwdSVMGy6ujNNU1xm2K0Nntf63vq+GivabB3K05+z8Dx5gutIx7A9n6Sq120w963bTcX29ho2mAlXpbbt7akorukzlLd5aNMwyYhGzNQZKdosa0vQF2QIVhzJ4XvJshbeefqy0NN8IDwwFxzTybLWBLc+vJ0NfTJzUQTzSoac9/zmqC4zsLIVh5ZkFE9A2XIn3HO8kel4PiNFi2REZ34qRiJSQQu9nx4R3SMR0fF9gS+kIa8GJ/kq7QCg4nh0jxSpOB4r5jUckA13ryHtVJR1uzL86ul+jmhvmNSYGs//6c9WeGTbMLc9tvOQemYm4yUVLJev1hyK1i4yWLcrS65k4wWnMdv1AMJ+0AKjGkUhHRwo657RLA8hVUzmsUvHDJa3yax1oYCpq2QqzoT1D/bfgJ4OByK8ubfvmKknVdfVSa+bSeRkTWcagWBDby5c/0aLNht6s1iuh+dLTmdHKlpz6Fy4Vw9dc9LkzScu5tHuUZ7cmWGs5KCqCvMTES575vdcedt/onsu3cuOwrrjHhZo+6d5f0iNMN/3OeGEE/jMZz4DwLHHHsuGDRu46aabeOtb37pP3/mxj32Mf/u3fwv/zuVyLFq0iGLFZWd+z4kjbmqzIp46ns9fto9ScfxwAU3FdJa1JokaGl0tCZoSBk/1ZLFcn6ihhta8qipsHSoQM+Xin4xolALi6OLmGM/szlO0XYLoIAqS9Ge78pQWM7QgrAGGrjJatFi3K4Pj+qiKXCw0VcHxBJ4vF5l0zAgWfulha46bbB8uSn6UJkNmAH2ZMjFT4+hF6XAS7W3ynLe2g9se27HXZ1cl/m4bLvBsf45n+/McNj/Jx1915LQhl6lO4NXFautQgY/c9RR92YoMLwECEXo2UDyZwYY0ijyfkBsmBCEPyPGCfoyamLrCY92jWI5PRzpGRzpGSzLCs/05Ng/k5WINRHSNqKHxvUd20D00MSFjfCg4X5F8tp0jJclzEJLj4LiC0aKNL0zOXdvB6s70hIW3JWHyZE+GbNkhZmhUHJdNA3ma4wYtyQivPV7qz/Rm9vRVxfFYvytDwXKJmhq+qhANkj2KvdKIaw7C5h3pGH3Z8qSnyanmwVSobXtLwmRdb5bhghWGvAHaGiIcv6SJTMmhOR6hMWayIB3l3LUdvHxVezgG9tb/s9ns1yxs5HOvO5pfPb2bzz2wiWLFxRdVj5T0gJRsOQ4jusay1iSZsj3pPcd7JqIpNQx5ep5gUVOcdMwIDeiy45Et2ySChAyZ5q6iqzLZpSUhQ5sIwebBPL4v6GpLhP0w3YY7k410upD2WNFmy1CewZzFV3+7hZakOaUxVeX/VA3Q59szM9VvreUl+b7gU/dtrDNakugcs6iR7qECvZkyrh94wJGeyLZkhGREY/NgkXRMZ2lrcoKxurdDyHT9MNU4PndNBycta5k2AWOmxPbZGocHIrw50++Y6Tye6rq9RU6q619fZjNbBgu0p6JsGypQtl0UBRKmzvK2JMmYwYqozEJ/dNsIK9qSEw6uUO+kefmqdl6+qj3Mdn74uUFOu+0rXPCLWwF4+pRz4NZbOWpF+4yf/VQ4pEZYR0cHq1atqnvtyCOP5O677wagvV3+wIGBATo6OsJrBgYGOOaYYyb9zkgkQiQSmfB6pmyzZH4rp6xoIW5qLG6Kz5h4uqEvy0jRCvklcVOj4ngM5iwyJZvWZIQXL20mW3FojBu0pyLomsrTfTl0VcXQFMqOx/bhAscsaiQVMxjOW2G4SFOhNRkhW7KxXB9dhbgpQxS9mTJxQxptLYkISVPn0e0jWK6PoSv4vjwkeL7ULZJhD5+xkk1Xa4IlLXHGig7dI0UMTSVuKoHXTBogCxpj6Fp9Fslkk8LUFZa0JDhlRQvL5yVY3paoO4FM9uwKlsv7fvgEj3WPULSkcZiK6bxoaTNXnL6coxc1Tjk2psrAuXddH9f/fGOQkmwQialUAp2lkbxFSzJC3JAkTQ9AyPCTpssMJUOXIWldU1jWkqA5adKfrVB2fCzHrzt1djbFiBoKj2wbRQOOXZSmLRml7Pg805djd64iF/IaA8XQ1bpQsON6bB8tUXE9WhImjudTsj0On99AOm4wkK2Ez7524R0rOXQPF7Fcn4ojP6MqCpYnw6ZvO2VpuIiFfTVQYNNgPuQ5tsRNtgwViRrScMxVHLYPF2iKN6EoCrGAFD4vFWF3trxf4b9q2+OmzhM9GTJBFrEZnBJtz2cwZ7FjpMi/nrlyrxmAM8nAmilUVeGI9hQLG2MoKPTnyvXJHgmT+akYAsH7XrYy4PHV33Myz0Su7FB2fJqTJiXbY/tIia7Au523XJIRnVzZYaggM0JNXZXhbcslYmjhpp8r24wU5TpSpSZUMdmGO5NNcLqQthK8X7RdTF1lSYtM/5/OmDqYnpnpMNMNfyqjpcor7WyKM1qscMZhbWwbklEEFRl1SAVJRc01PM0qpjuEzKRt+zqOZ0psn0025YEIb872O2b6+6e6biaRk+r6t25XloFcBVNX6zidsGcebRkq8OYTF9cdXKfztC9rS7IsZXDhf30I5Rc/AmDs/R/iyM/9J6o+ed/MFofUCDvllFN47rnn6l7btGkTS5YsASRJv729nd/85jeh0ZXL5Xjsscf4l3/5l1ndqy0ZYTBX4Yd/6eHHT/SyYl6SYxY17tVdCvDjJ3pJRmRsWHo2pBfFF4JcRVCwPOKmzpahAioKmZKD7fqUHZkNpygKugrDBZuC5dHVmqRQcRnKW0QNjdYGE88HU9fwBUQNaSQVLZeGiM5Q3iIdkxl1BdtlrGBLnStPGmCagsz2kXYOtueTNg3eevJSLjymkz9uHuKLv95EU0eE+Q0mBdurC6kWJskiqZ0Uoe5RzfNripvoqjLlszt6UZqP/3g9z/XnCbz9AAwXLH69cZCBbIVPvOaoaSd99aRbPW0+0TPGV36zmbLtMS8VQVFULMej5PiBgeIzVrZ56WFtLGpOcP/TuxnK20R1FRTp/dI1hYaITtnx6M9b2J5P1JDPffwCLoRg+4iUtTA0lUTEQNNUkppKV1uC3kyZzYMFWpJm+AMbIpKAO5S3iOgqti9CgrYQUpKgJWGyqFl60DRFDZ99deGtGB5P9WTIVRwZVg0IxkIIhC84eXnzpAtd2M8Bz7FguXSPlAIu4MSs2OoG85q1C8KFbl/Df/mKS8X2yJRtchVHenOD7CaAiKJScXx6Rss8um2ET5y3agKxfbKF+kBpJtVyVI5d1EjB8sJkj2REY+tQkbULG1nWmpz0t062ye+RHdCIm1L7ydBVVndKwd9sWXLdTF3+a0yYZEsOqqKwvDVJOmZQqEhqgq4odcZNLWo33Mk2wZLl8tfuUTb25Xj7KV10NEbDsNzEkHYGTVUoO25ogKZjUt5hOmPqYHlmpsNsNvzpjBZFUWhriFC0XM4+sp33vywdjrVEROO2R3ewoTdXxyWF6Q8hs2nbvozjAy0RciCM6H39jpn+/smum4kRV73mV0/v5qu/28qS5jiNMaMuhAl75lF7OjY7T7thoHguGAbccgtNl1++198yGxxSI+wDH/gAJ598Mp/5zGe49NJL+ctf/sItt9zCLbfcAsjJ8/73v5/rr7+elStXhhIVCxYs4MILL5zVvTYPFTiscx6xQFqiOlnOXdvBkz2ZKTtj21CBzQN55qdiaIrKaDGP40kOlha4xC3HY2NfDl1TSERk6Mfx/MD4kKFC2/WwXMFIUXqoFjTGGC5a6JpCoSJlKeanIjQnItLrVrQZzFssbIrRHLjNDU1lIFemaLuh7pkCeAKEL9BUQUPUwPdhYWOMYxY1oqoKjXFzD/9NVWiITq7RNdmpavNAnh/+tYei7dLVnAifX1/AJVvQGGWsVB++uejYBXzjoW08N1DAF2CoSsDDCsKCnseTuzLc8oet3PiGY6fd4GtPmwPZCttHSgGhVoCQHjA/yPyscuY2DxbJVlya4hG6WpNSmV9XcTyf7mEp0Ov7MhvvuMVNnLKihR/+pWdClmG+IjlgiYhOxfHDdHLYk5AxXJQJGalYcIpWpMbNYM6Sv9X1cD2pup6r1HtAxj/7hqiOqSts7MuSKdkogKHvCWVZrofl+vxifT8XHbtwwkJX18+KEhqE1WzE2qzYetf7fDqbYvsV/muI6vjAcEEajoa+xwCrjtSqh3Bdb7Zus34+MsBqOSpbh4p0pGM0xk3KtsfWoeJejc3JNvla2YFayYHmZISmeBMDOYuxksX7X7aShU1xipYnOVVbh9nQl2NDX5a4oXHkgpT0Vk5xsi5ZUkOtZ6zI754ZqtsEqyTkXNlh+0iJa+99mnTcQEEmJ7QmI2zozVKyPWKGRt5yqTgeMV0lHq0PwU1nTB0Mz8x0mO2GPxujZfxmf8nxi8KQ1kwOIc+HV/BAS4QcCCP6UBjiMDMjrurtbkmY6Ko6wQCD+jGwrC05cw+lqsL3vgfr1sFJJx2onxXikBphL3rRi/jxj3/Mxz72Ma677jq6urq48cYbedOb3hRe85GPfIRiscgVV1xBJpPh1FNP5Ve/+tWsNMIARvIWzw3mWdaapClhhpPlqZ7stBylp3oybB4ogCJV311PEDU0YoZO1FDJlCxcRUFVpOxB1XsRM3RKjovt+cQ1qehsez4D2TJLmmMULZfGmMnxixvxBKG8hKIoLGmJky077Bgp8Z6zVrCoKcY9T/SyZaDA1uEifo3yrIIcgCLI/sqVHaKGxvJ5yQkZhLM5VW3ozXLX33t4YOOANESC0hHjn19LIsJVZ6+sEzjcNlzg0e7R0DhyQm6aJKz7gezGHzYP8eDGfs5Z3TGhTdU21J42K4509bmeL8t/BGEioyqmJxQcz6M5bjBasMNFUq8hTjbHTbkR2R6DeYs3n7SYdMzgx0/07lVgVteUusSMFfOSjG0fY9tQkRXz1HDxHinaHNHRwLyGCH2ZCrbngwMtCTOU8pjs2S9tSTCvIcpfukcByVup7WhNUfAVwTO7c2wbLrBiXn1JjLCfLRehSH7a/IYoxSAb0dRUVBVs12dDb5ZEROfErmZg/8N/S1sSdKSjbOzLSs/duI+5QRkpTVUo2164WT+fGWD7wzWbbA7Vyg7EDG2CCHG+4nDc4mZOXzkvfI6ampVea4AgCScV0VnUHKMvMzEkPFqweKIng64p3PyHbnrGSjTGDFqTEUTw/GQWpk6TplKwXLIjDsmowVjJoTlhysNkjd6e48lxcURHakIIbipj6vkWb53thr8/Rstsx8XzZYyc1NXCxr4cG3qzddqU+yIRciCM6OfbEJ8tZjsGpjXuHngA7r4bbrpJGnTx+EExwOAfQDH/vPPO47zzzpvyfUVRuO6667juuuv26z6moTFatClVM8wSZjhZdo6VJu2MDb1Z7np8FyXHI2aowQlfeluKwkVTDWxPco6SUYNM2cF2pUiookg+jOT0eCiK9NTkKg5P9+VoDoQfdVWV2XuuVMhviOhB+FKlJWlyRHsDy9qSHLUgzR83D/GFBzZRCUoJqWo1g0RaZapCmIr9TyctCSfobAdndWPsy5QDKQojPHWPf35bhgqoilLH79o0UKBouSjI7EPPl5tN7XIhhMw4vW/d7jpSdhWTnTbjFam7pWuyhpfvCaK6Gv4eXwS1xUydeERnd67CcMGmPV1jsCuKrNknZHbS7myFhqg+KVmzNk06FTXYPFgvHBs1VOanIqzqSNVJcVQX71UdKbYNF7jx15vZPlzkqAWpunqf45+9qiocPj/Jz8QeY7XqBXM9X2ogRQwKliTojzfClrZIKYhHt42E2UVa4CHUDI2xsoOhKmwayIeGwG2P7eDR7pHQ67S3TWM6kvRr1i7gT5uHKVhOqPNT/YymSikQNxBibYjqk/axEDLM3xQ36MuUufvvuw4oz2h1Z5oj5jfw8NZhhvIWbQ0RTlneiqoqbBsqTGmATjaH9sgOSN3BtoYocUOjUJmYVQn1BueCGo/LhsCLPj6835+t8NSuMXwByxsTxAwdFXkQWL8rg65JQeGqWrwQAoFU+PZ8P+T/NSVMjo83kbdcRgsW63pzLGqKzYoD9XyLt852w99fXbPZHEJm27bZZiPWeoYLlstYyWa0ZNMUM2lOmvuUoHIgjOh/1CoKVRwwbbubboL3vAc8D170InjHOw5quw+5EfZ8wdBUYlGDbFkSnpviBjFDZceIw+M7xgDqJkd1g7Acn/ZUhKG8JBprqhJKHuQrDq7nk4joxAyNgu3heh6uXxUJlB4URZEGiK5I4nxXa5J3nt7FN//YPWHDTMV0uloSjARlg2qt9sa4iYAw28nzBQrSyxRQh1CAlqRJQ41w3WwGZ+3G2JGOMpCzpEhqkMJd9/ymPPmIYFMANzAKA9qabGdNu/qylUlPjJOdNttTEeKmRsFy0RRpdInwjtLD0xDVaU9F8YU0hvuz5Qk6cLXehe/8qZuoqdEUN9C1+k2w2i+OJzPoijahcKvj+QznLZqTEd5y8hJSUWPSRXbFvAbedcZyvvybzWEYbLqFYVFLQhrxEIjPymcpFzcZZio7HjBxIdm4O8dgroIdZM0mgqoEVe9sR0rWVkOhLrQ8U6/T3sKGL181n9v/kubPW0aoOL7sc0WqX6ci0gBTFYW1nelQwb+2j/eE1qShKxDcv7Gfk5Y1T+ktnS0m+w13P74LUBgr2VOGQ6eaQ6amhqHexrjB9pHSpF6UmYSwOhtjNCUMtg4V6c96bB8pYrs+MUOjd6yCEIKK65GK6JQcD6vs0JrcIxBdDYuCLK1Vy/+rPXykYrI27cJZcKAOhnjrdMbJvmz4+5tVO1Pu0mzaNttQ+3jPcEdQhq57tEjC1HnziYsnPbTuDQfCiP5HraJQi/0aA54HH/4wfPGL8u9/+id4y1sOeptfMEaYxJ6aXbvGyvSMlciUHb77yA5++lRf3eSo3SBakxFylTGKtosanOpVFSxXeifipo4nIKqr6Aq4vtxAfV+goNCZjrKwOQ5CUHZ83veyFVQcf9INcyhvMZizOKKjYcKiVuUzgEJzwqRgyTJHipD30VSFiKGQjpkTDKOZDs7a313VNdpTZqa+5pmCMunJ57D5DaQCEUv51PeE6CXBXP5/TSEQQ53ovp7stKmqKkd2pHhi51jAawJP+AhfynnoqsKRHSkUVaFc8ViQjhE3tXHehTLrdmUBOKK9kfZ0dA/HLcgWreW4ndTVzF+2j1GoOEFFAEHJ8mTyQ1BD8Nt/7Oaql61kTWd60sVxNgvDYfOTpOMGFVvqS1UlNQxNGrWZkk0yqnPY/PrNwvcFd/29h4LlckR7A/2B6rwvpNFeDUOZusqCVBShyOc/Ux7LTMKGALYj5VmqRpiqygV6rOgQMTRWL0jx2uMln622j2v1fWoN3bGSw7cf3k5nU3y/w5KT/Yb+bIWHNg0DsHZhmqWtiSkN06n68aRlrVx47AKSEX2/aumNlmzee/YKVEXhwY0DfP33W4kaGsmoET6Pgu0yWrJJRvRwDkjIg0LVuzVSsFAVpU4iRAjB7lyFFy1ppmS7szamDqR0yN6Mk33d8A9kVu1UmGnbJhVznubQM6WhHjNYvSDNlsECj3WP8fJVs5dFOBBG9D9qFYXx2KcxUCjAG98I994r/77+evj3f5+UW3ag8YIxwmzXQ0eeFPOux7P9svJ6WyrKEe0NVBw/nBzvOWsFu8ZKjBTlYtcUNzhmUSOPdY9StFx8vxqukmruru/jWB4tSSmNMVKwiJlyQW6Om7y4S1aHD9XemxN8+pfP4PqCE7ua6R4phqf/ar3D+Q3RsGRSFUtbEixvTbB1qEBC0QLJAxm+URQo2y6pmEk6pk/qEp7J4KzdGFWFCQVyqwRk2/EYLTmTLoTLWpMc2Z6iPyhUXOW/1PwHTZGaSUIwaVunOm0uba2GTDMULA/bFWiq9IAd2ZFiSUsiXAiPXdzEhccu4MdP9Iabxq6xEpoKK+clScWkYnsyojE/FWHbUJEFjVE+ee4qSo7kuPlC8OE71zGownDRDjc1TVGwfUHR9vj9piF6sxXWLkyHpYDGP+OZLgzLWpOcsKSJhzYNB4WH9VADrmS7+AJetKSZZeMUmR/c2M8DGwdkfURkzbOYqdGeitKSjNCfrbC+L0vC1BjIWXU6d7Wh+cm8kjMtJi6C8PMpy1t5pj9frxOmwLyGCB8/98hw46kmIgzmKmwbLlCy3SD0XS05pZAwNYq2u19EZ98XbBsucNMfttI7VmJxSzwQc/Tpz8oEEyEEAzmLzsbYtIbpwZYcKFoeazrTrO/N4vqCeQ1m+DxMXaM1IesiFmw3qIcoqQ7VWpfVcZErOZQcL9AOFHUb5TtPXwawT8bUgTByZsoD3NcN/0Bm1U6GmRgjFx67YFIx5+nG1gRDPSg6X+WgdqSi+8U1OxBG9IE0xA8mZjUGdu2C17wGnnwSIhH47nfh9a8/qO2rxQvGCBvMWcR9g7gp5QlUBZriJofNb0APZAdWRJKs25Xh/9y9npihsWu0xGCuQnPCZFlrkhO7mnlyZ4ZSID2hKgoLG+NsHZJFmttTUSK6Rq7kkClKcuyK+Q2UbL9u4dg5VgonWzKq05QwJ9RHHC3ZEyabqipcfspS/rpDCkQ2J030oNB3yXaDhAGVw+anpnQJ721wjjd+6gvk6gHvRNCXq7AgHZt0IVRVhfOO7uCx7SOULA+fPcYXyFpuzXGTsuOzIB2dtK3TnTaXtMSxHBdT18hXHGxPcPj8BuIRfQIfZ3VnmtULpGfzwacH+NbD2wDYOlRi+0iZSECktlwf2/XZnauAovD2U7pY1pbkqZ4MtucjAgNZimtCtmxTseU4iJoacUMWfn9md455DRHGSs6kJ/yZZPlccfpyBnMW24aLlOw9XkJVUTiiPck7T19WFzZ/cGM/X/7tFjIlh5aEiaGpsg6i5dIzVkZRFHaMFmWpFk0nEdFxfVHH8UvFjClJtduGC6zblQ3116oJJNXyXDFD46/bRzF1lc7GOMmozsnLZbmmbElWg5Bt8kOPL0DRchkt2uwYKYWFs6WoqCygXrJdqffTnNjnzafqcan2jScE3cMyw1ZXFUqORyqqY+p7PLwNwYFjKsP0YEsObB8psjtbIWqoQY3TPddFDJ3mBIyVrEBzTIama3WRhBA0J02Srs9o0WKkICVuxm+U+2pM7Y+RM5vMwn/kDX9vbav1wM+UvF9rqI8V7bpkCllKSSOia/tFfD8QRvTz4W18XrF9Ozz9NLS1wU9/Ci95yfN6+xeMEWYaKhXXp2hLL0BHY5zD2usF+sZKDiNFh5LtcvziRuanoowU5CJWsjwWt8RD0cuiJcvB9GVLHL2wkXTcYKxkky07dDTGsFyPiK6RLTlUDK9u4XiqJ1N3Kh5ffNTzBYN5a9LJtqamJl6m5EgxWF3yPWKGWlcCZ18w3vipZldV0+ALlicFV5c089rjp5YQOHpRI52NMXrGypRtLzTCdBXSMTP0+p27tmPK0+x0p83WhmgYAqsuhIN5a9JFWlUVSrbHb58bpGTLRANDUynZHruzFUCKOqZiOrmyyzN9Ob78m81cdfZK4obGUN6ibHs0JQwMVWW4aAEKMVPqlNmuT0NMJ25qPNY9yrahIi9e2kwspTFcsHl06wib+vN89FVHsHZh4177YHVnmv84bxV3/b2H9b25sE7k2s503TOvzWDNlJwwfNcYlyV5qsXJn+nP4XsyXKupkt9naPUcv8PmJScNLW/ozXLzH7ayeSAfGC5S9LMlkFLJlV1c3w8L1bckIyTRAw6hSTqQ7vB8wfbhYl1W5Fd+uwWQYXwZ2pfJGrZrEzFUkqZOV6vkrg3kLbJlZ1ry/HjUelw8XxrZigK+JNyhqjKMnS07NCeCkG2NDMmBzPaaTXhtfW8WFXlIHCvt8UKH7TJU8qrKqo4GFFUaq1WOX6HisnUoT8GSoUlZUxXaUhEuPHZB3Xw92B6jyTDbzMJ/5A1/uraNX+PHY7KxVTXU+7Nltg0VKQcHTUOThcaH8xaaqtKfrXD0on1v94Ho90Mxdg4aTj0V7rgDjj4aurr2+WtqOY44pRl/7gVjhDXGDMpoWK5PRNc4YUkjeo0ujxCC7uECnu8T0VRZwqQtScmWJXCyFYenejKYukrM0GiIGnQ2RnF8gWmovOO0rjpOyOKm+JSyF/ubZXLBMZ10tSa49c/b2TZUwPMhHdM5bH5qVifEqYixk9U8O2xeA9tHiixp0Xn7KV28fNX8kMg/2XcULJdywFdrThiUHT8sG1KwpEjiqStap+U3zPQkvLdFunr6LlouyYgWZLZB2XHDpImS7aAoOooiN6yRgsU3HtqGqshqC74PTk56Ku3AYxlWAw6yIrpHiigKwWccNg3mg5OsT2+mzP+5ez3/9do1rJmhITbd7xqfwdqSMMmUHMqOx2hR0JwwieiSOJ4rS+HYuKlLcdqQkC05fpmSTfdokRcvbanzSob3yJbDca8osDtbYftwkYghExoMocnCuK7Pul1ZjlnUOCHzrnZM13pD1i5spDdR5u87x4JEE3B9nygqR3WmaEqYFAIv8fcf3THj4tau6/OdP3XTM1qiqzXOxt0yI9TQVNQgscZ2BboaSLtUHBKmVicxsS+CmFP112z4NA1Rnaip0WHqlGwv9EJXdd4KFSlD847TltHZFN8zP/Iy/FuwPJIRnUVNifAeO0dKfPW3Ww560ee9ZQLui8zBbDf8A1EbcX+xL2v80pYEK9qS3Ld+N5bjgQKlkhMk58hlJmYoPLptJFx/Z4t/hGdzyCEEfPWr8NKXwurV8rVZ6o6Ox3iOo+KWZ/zZF4wRVnE85rVESUUNtgwVGC7atKdj4ftVYU5Tk5wsQ5fZaKs703QPFdg5VsJxfWKmVqf3JIRgy2CBnzzRx3+ce2TdgJ5q4Rh/Kq7e3/GkovtAtsLRi5qmzTJZu7CR/77k6AkTCpiRt2BvxNjJjJ8Xd7XUGT9TfcfFx3bWVRmwAiNBILW38mWHhKnzjtO69roAjDdGEhG5eBctj21DhRkpq1dP30tbEtieH+o62a5Ukvd8QdHyKNlSVHVTfx414PC1NESI6hqO6+EKgWO7gQyITIbQVZmJlgvGT9UQf64/h6CaTalhOB49YyX+81fP8rFXHTmjjXCq3zVVBms6buAVhfTulBzaGqoFywVpXWPl/AZ2jJbqNnUhJK9tqanXeVBr77G6I4Xt+mEB+JLt4QnwfDfUqZvXEJEenUyF7prSSDDR07N9pMjmgTwNUVlnsSGqs7AxynBB9otAZqUamooQIvDsSArBgsb4XgnOG3qzfPvhbn773CAqCkMFi5LthX2t6WpgfPnomobteZRtl9ZkhIYgXDrbbK+ZlrCZyaGidn1YvSBVxxnVVJlt+pJlLWGWXHV+ZMsO3390B6oCK+c3PG+lhWbzDPZqnFiytmdvprzPfLOZZCMeCGNkunut6kjNOrFAVRVOWtbMPY/vomR7KKqCocrspSq3UlUUnuzJ7Fdo/mCKIv/Dw3HgqqukDMWSJfDUU5A+8Ak/2czMvecvGCOsisaYQUSTLt35qei4EiQ+jhC0JqPhYtycMNHVJCNFC0dVOXx+Q1hyBvZNnK/2VLxuV4ay7UkSrStwfZ/GuFFXUHu676m9XzjJBmTJFFVVWN6a4PJTltZ5X2ZKjJ2JJ2ay79g0kKdkeSxva8D2/DrZAU1VmJ+O0Rgz6vhBM/mdG3qz3P7YzikXkerCmi075MoOqZgRhtwsxyee3sNxq5afAiUolA6mKvtbVeTG7biCpa0a2ZLUhhOB6j+A5QpihkJMV1HUPWK5eiCGqiiySHp1nEQNKXY7WrDDjRAk32rTQAEQHDa/YcqyObWYKoM1oms0B6VxLM8nU3IQCHRNZX5Qq3FZW4KBbIVcZY8MRCqm8/aaWpTj76GoKq3JCDtHSjIjD5lYIZBcRD14vyGiM1a06R0r0xQ3Wdwcp+L4Ezw9tQLIvi+lWUxdkbpXnpRksG2PbMmmP1uhENRhnIlhUR2XPaMlVBTSMckBrWbPguwfLeiziC61tkRwrSekIVBt84ldTazvzU7r3Z6N4OxMwmu168NI0eaweQ14QlCoSM2ojnS0jhdYnR/bhgoM5S0WNMZnzEM6UJjpM5guLDuZdMxsjISZtuFAGGozude+JBbMS0WltFEwwTxfeq1jpkYyomO5Pn2ZMtmyc1D65/9VzMiozmbh0kulEKuiwPveB6nU5F84w3sAk3IcE7PQSnvBGGExU2b55QLOTHPSrJscjic9NnFDo6s1UZea6noCIRRiEZXGmo21iqihkplCb2wqrO5Mc+7aDj7/wHOMlRyMoNB3OhYhZqrct243ywNOxExQnWS7xkqUAjFXxxNsHSrw1x2jfPAVh3PBMZ2zLrmxN0/MZN/xVE8mfC8Z1WmKN9UlHsRNjR0jpQNafLZafurJnRn6MmWsQKF9QTrGstYEjid5S1WO26b+HEXLxXJlmr+mQHMiQtTQsYPXFEVy8yqOlKSI6NIzU3akIVJxJM8oomv0jpXwfJ98RYq1NQTkd9/3w7GgayrtaZnh9ODGAe5b38ffto+RKcuQQ9zUOXl5C1eesXzafp8ugzWia7Q1qGRKDivnJRgu2qDIJI/+bAVdU2mIaqyclyRqSLHaFy1tnhAWrgsbCcFwwSJqamiu5NdVOX4RQ4bwesdkkoOPrNG5vleWAlvUHOO4xc2hp6dWALkhopOISv2wki0lT+KmTsmWlSbKjs+SljieL1jYtHfDYmlLIhyXXW0JxkqONK4DXk3Vu6YqMhHDD2pytiUj0gutqkGYVaWzMYYQgm/8sZuS4wXq9oKoLsuHVTfuiwKv72jRZnlbgoLlkSnZGJrK8rYEW4eKE7xPMwmvjfeaVY2F8d7oKftsEhwsRfPZrimTGSdTScfM1EiYaRt8IcK6mns11P6+i3W9GbJlFz3wOL7tlKUctSAd3mu6Pv+Pc4+cdWJBruzgIxOXdE3F90UoUQMKQriUHI/cLIywQ1V8/WBgMkOotsj3lEb19u1w7rmwcaNUv//BD+D882d836kM95O6WqbkOM4ULxgjzNBUohGdwZxFSzLCR15xOD95qi+cHKausLApDgga40bdZzVVpoJHDQO5GovQSBst2mzqzzFWdvjeJHpjMLUF/WRPhnkNUdZ0pnE9ERbUFjCriVGdZLvGSqEXJG7qJCLSjT1asPn8A5voak2QjOizztoZ334/CMG2p6J1xlU1a649Ha1Tqx+feFCouJi6QqZk81RPZq/hgNpFZH4qgu16CAQNEZ0V82RG6+cf2ETCVBktyTp7cUPDcj12Z8pUXC8wuGSChPRwNGN7wwzkKiiqQtzQwlCn51cLMyvSQNakgSxPpXtU7KuGSDKika24FG0XTVHRNYVM2cbxqONzzG+I0paM8PTuHF/57Wa2DReoOH74XWXH5r71u3mmP8eNrz92yk1nJhmsqgojRZtc2aExZlCypadXVeSYzZddmpMmC5vioW7XVPcQyCLkUV3D9fxQdFc+CwVNUejPVTADPTIF0FCoOB4DOYu1C1Ohp7JWAHms5BAzpVFTTSKI6AoNkQjL2hp438tWkC07XPOzjZQdN8ic1OtJ6jWGRa33LhHRaoxTHVNXKTvyGTQlzaDMlsFRCxoYzNus6UzzppMWh/Udv/3wNrqHS/hC4AYhWCEgFTM4bkkTUV1mw27qz1Oy5Xc90ZOp8/imYjrtqX33Ps2WlH6oFM33hWw/3jjZlZEZq8cuaqQ5kPqpGgmbB/J85+HtYYmxyZ7BjNowkOfWP2/fqzEihODTv3hGevRtWfsVYOtQgT9vHeGfT13KlsECcVPfa5/Ptg9TMSP0zsZMTW4+IUSY8FW7nh7o/vlHxWSGUFPcYDBv4XpiaqO65xm44AIYHIQFC6QW2HHHzeq+UzkANvblKFguHTXUptniBWOEOZ5PseKSjBqYukpDzOAT566qmxxVcb3xJ7Rn+3O4vmCs5PC37WOk4wbLWpNB7bZMwL+RemPlGr2x8dl7U1nQ4xdMBaacGJMZdNtHimwZKMgkgkBEtKqobuoazUmTTMnmu3/ewZtPWjyr0/JkA78xZtA7VqZfrQRhvT0LUFdrkrZkZEq1+irHBxS++cdumShhqKxoS3LSsmba07EJC9X2kSJP7swwVrLZNVYed78EJdtjrGihKhE83w+yyUDTFPJll7LtkTB1CpbH5oG85BWZGvMaIvTnLBQhPaVCyPDaaMnCC8oQeEKqvKeiBhXHoxhsxipSiFRB1saUpar0MPFAUSRXDEWGCoWQSve7c2XGijKLtmxLj1o1TCaQJZ62DhW54f5nufXyF0+6WM8ogzUwPNoaIqxd2MhYyQnDwqoipRlaUHjvWSsmNfZq79EcN8Li4Z4nsxg9X44w2/WoOFK/DCHwhBxDVe/SWNHmCw9uZllbsu4AUC0snS07oTirqakM5CzWdKa58oxlVByf/310Jz1jJXrHZHJAdYxVif+1hkWtJ2hPSaEsuUBGww5kSDJll1RUZ0lLgsG8TXPC5LXHL2TFvAZ8X/CtP3XzXH8BTYVExCBTskFRUJFVMjb153nJ8hZWzJNe34G8RVSXCRvV31KVAClYLk2TiCfPFLMhpR8qRfN98cDVGifP9uf41p+205GK1lX6AJmxPlq02To8wOaBPOm4MWnocCZt2DHikLccFjUlpjRGNg3kuPHBAht6c1iOh6oqRIIELtvzGcpb3PSHraSiBpYnx9Pe+nw2fZiOGSxIx9gdhBxrv7tkuxiqSkc6GqzxM8M/es3HmWAyQ6hkuTy6bRTb9TmxqzncR8cb1UfddD3K4CAce6w0wDo7Z3zfvXkRN/RmGSvZlC2X5Cz6pBYvGCPMdn1amkwWtyTIlhzyFXfSyVF7Qts2LDkpWuCK7s9XqNgeQ3mLQtlBURWyJYd0zODw9ga0Gr2xLYMFvvHQNkq2y1jJmbUFPdnEqLrI1/dmKTkecUNjTWeaNQvTwaYuxT3Hl7TRVCktsHUoT67szKrkxmQngI27s/SMlYgZGo1xs24BKlpZlrclJ1WrL9seW4fyYc2+xrgZGrr3rd/Nz57qoz0VpTlp1i20T/Zk6B4poilyU6y9X7YsC2qrihoQ92UGYL4i63j6QlDKesxLmiSiOktaEwzlZZ1HVVVpDuQqfAFjJZuS7aGC3LQ9GYaSGWfS6K240hMUNTRakga5ssfK+UlakxEUIXi0ewRNVfD9ar1Hlaih0hAxKDsuG/vyaIo0yAQExFv57BUUFFUWgv/r9lG2DhZY2d4woY9mksF67poOHtjYT1NcGsHNCbMuLOx4AsfzpuTlqarCxcd2smkgz5ahIkXbRfgCU9fwXB9Fkcappio4jiwf5Qn5fjomJRWmOwAkVZ3VnWm2DuUZKzq4Aek8ami89viFAHzpN5vZnSkTNzS5AWlaOMZWd6ZpihsTCP+1Y7veOHUlMV/Ivm2MmQjEhNDQtuECf9sxiqJAY9wMnpPA1GQ9WMvxGCpY5CoO6ZjJ/FSUrcMFPE+jJbnnwGFo0nDPlGzGsEMv68HEoVI031cPXHX9zVdcNEUhPm4s1lZRUFGY3xAhauqThihn0gY1yC6NmVMbI9uHHXbnKtieFxZkrz6tmKpRcTyyZZeiLdffWnrKgejzpS0JjlnciOV6Momp4lEODp0yRKlw7OLpk7bG4x+95uPeMJUhJJCZ6IoC20dK8mA2CVd7x41fZ+mK/4ZPfxqSs/P07c2LuLQlwWiQXb56QXqfQpL/mE/9IODYRY20NDdStDwqhjdhwFU9TJ4veNOJi/GF4Mu/2YICYeHltlQ09DZkyi6uECxIRzmiXabSV6EoCh2pKH/dMUpzXG4Es7Wgx0+MDb1Zrr9vI9uGivjV+JUCO0dLPL5zjIorOWCJyMRB4PkCQ1fwfOnunslpeXFTnE//8pn6gS8EvvBDzpTleAghU/1VVSEV1clVXJ7tz3Humg4uOq6zTq3e1CWvoeqdURRFihIOFfF8+Z2255OOGuFC+96zVvCnLcP4vghPyXZQLqohojNcsKm4LnFTx/dlKHGs5OD7kpCuowRGmUvB9rjitBaOXdwUZlre/uhO1vdmmddgsqEvD0g+RsX1GMx5KAqh0Vcls5u6zET0hYKpB6T0qE5fpkzZ8elqSTBatLE9QdzUiBhSUFcIKb+g6ErIQxtfAlJRFBQEluPzpy1DkxphMHWmXZUz5PmCn6/bXbfh1IaFx+t2jceG3iz3PNFLyfLIlm2coAio53gyI1KRtTstd0/9TjNIDIjUSL9MdwCQQ1gaoYoiMyIjqiQh3/LQNp7qyUhvW8APq7gW6aj0ym0ayNMcN2hJRkLDYjJPUNX4zFUcuoeKHNmR4l1nLqNs+5OGhjYN5ClU3NCb7Pt+WL9TgVCiRB6+TKKGCkK23fV9fH9PmalqGPr5xEwzMA+kVMG0Hjjfp3ukwLKWBL4QIcepFpMZCVXJIMv1iBmSsxsxtSl5TDPxAi5vSzAQlPOayhhxfCEzEwXoNQZYFYYmNe1cz8cNDPNa7G+f1xrSo0WbhU06mqLgBcLI+2JI/6PUfNzXMTeVISST6SAZqRda1hybNY88yN9PfTUDOZ9stAG+9KV9avPevIjxiE5TzCRh6nUHn+IsvIovGCMMph5wk4Xc5iUj9I6V6WqVgzYXkKdXzEuCgL5MmS1DRY5ob6gzwKpwg2ym5a3JWVvQ49vp+4JbHtrGs7vzYYikahgULYftw0VSMQPH94P6gPX6ZyVbDs50TCcdMyaclqOGynDBpr+m5Eatqn9oLA0XGC3YZCvyWdg+9GXL6KokO+syPoepqZy0rIW1CxtDtfp8xSVTsvnmH7v3nB6FLCdTcT0aY2agcWVTsF1WtCXYMlTk1j9vZyBbpiFqMFSw6sofCSHDfI4PJctDVfd4mMxgAfWFTOtORDQKlseft45y0bF7OFCvPX4hvZkyO8fKlGyZhecEshrpuEnF8WV9TkVqS+nBadfUJF+sITj5bh7IhyT+4aJN3NSJIg3UQkWeqluSEYSAouVMuVBXi7CDJP5Ph9qQTm1GaNzUZAHzWZ5+q4vkUz0Z7gq4Wwub4rTEDR7eNiITEgRENOkh8HxpLIJsc1PMqDPAQEi9I6BsyXZUN4MW12RDX66mVqQMPXm+4Kbfb2X7cDHQzJJZtBHdI1O2yZQdIrrKWMnmuMVNvK0mq3M6T9BgzmJRc5y3n9rFYfOny4iqn6uqqlAtRj/ZIbdoeUF2qs/ubAVVUVCVwPjUFBKBt6RoedP25Uwxk41sJpnNB1KqYDqy/bP9eZmF68O1926c9D6TGQlVyaC4qVGyPVoSe+RDJuMxzcQLePnJS7nnid5pjZGOdIye0VLIeZwc0gsc0dVJQ4bx/ezz8YZ00fH2q1LAP0LNx/0Zc1MZQoamogVtrgotx/MZ3nTDB1i28e+omTF2n3bxfnn4ZuJFbE6avPnExTzaPRoefBR35okTLxgj7G87RjEGbZa1JuoG3NQhtxy7s5JsPDZgTyBftiYjqIosvdKUiEy4X6EiO2F8xwkhhSHHig4qcsnf0JulKW7IQr2Kwu6gVFK1nVsG83UhkupGYWgKjXGT0aJN2ZEGxFhRljPSVLlJlmyXiK7WlTNSVSWc5PXZhBpRQ+PHT/SytjNdV0JjQ2+WiisNHekRk4aQ7wOqNHYqroepqTQ2GLSno0A9H+KpngxWoLUGkLfkQqsHKvRWIOi6fleWvqRJeyrK1qEihYqD7Xr4vgi4OTLUV20DgOsL8CWvSoVAHV6RpXp0FdsTtCQjDOTKdTy76oJ38x+2snNEqhzrqhpqwSEET/ZkqLjSlZWK6WTKLpmyNEgcT0hyvwK6Ij1jpqaGz33FvCTxgHyuUBV+Ndids/BBFl+vWe3lb5TtP6Jjci9YLarVAH76ZG+duv7qBQ00xU36MuUZnX6ri+TmgTybBwqUHI/2VITWZISIKTlWulr1+AhwZag1EZHFul1fhiOFEEGmsUfRktIgmqbi5X1uf2wnZxzWxq7REk/0ZHAD/qInIFdxSZg6qxY08LftY5Rsj4VNUVQ54DB12Sf5iks6ptMYN3nzSYsnLOAz8QRNZ8gcNl9m9BYtN0zIMHUFy5Eaco4vMFSVdMxACEFftowQsr8UTYoX+wJc1wM05rdGSUQmr+U6W8xmI5uKh3SwpArGP/daKsdRC9JTZjtW+2JNZ5pN/fmQs2m5UlbE8QQxQ5+QsT4Vz2xvfa8oyrTGyEXHdvJ0X5bRoo0frPfVdc4Xcn2qGmBLWhLkKg65skvZ90NdwHkNkUDQe9/7fDJDuiqRMpNkpvFY1ZHitcct5N51ffRly6hA1NSelxJQ+zvmpjKEGqI6qZjOcF7qJC4Y3MmV//1+5g30UI4leLahnZXzGvbLwzdTL+LLV7Xz8lXtdYr5d7x3Zvd4wRhhEJguNWN2OtLdsrYEO0ZLrO/NEje1CeTLbCk4kZcdOsdtpEIIxsoOyah0JVcxWrR5ZneO4YKFHaTIDxWs4PSsBPXBZEmgd56+LByY40Mk439V1R37mrXz+c2zg9OWMwIClX3Bi7ua2dSfpzlh0p6WmXvVxIJNA3kp62C5obcqGvzeWgeNohDyFVRVnlrKjjcpH6I6mUqWi0AWOi/ZkqMkRBDGUaQXa7RoU6y4xCI6mbIML7Y1RMhXXFlEvcaVpCA/43pS78sHSraHHghbqopCxJCaQ1U+YC1Wd6Z538tW0petEDdk5lFtFt4xi5vCDFgUmfWHEKRjBnZQQN33BGhSG8z2/DA0O5SvcOziJoCwgPtr1rbzxm8+RtnxQ0Ms4LWHv2dhU5zTVrRNOZar2NCb5fqfb2TbcBCmDtAzWmJ+Q4REVN/r6bd2kWyIGqHExljJYUNvVm6AgKqqRAJeTTpmEDE0dDUQQ7Wkp7NguQGPShrJmiIPC82JCDuGi9xXcXlxVzNP787hC4VC4Emq1j7UgxItKFBxBZrqhfw+Efy+oYIdeHYnJ8JOJ/B7/4bdPLptlC1DkxsytQXUq9mmyYiO7dqUHckHbElHUBWFzQN5ChWpxWa5IuCnyFBkMmLgeD69Y2VevaZjv0M9B8J4OthSBdXnvm24wI2/3lxH5ZjsPkII7gnoCpYjvfiW67FrrCTlXRA0RU0OnyTaMBWPaW9ewL0Zaqs6Uvxi/W7u3ziA5UrxbM8TwQFD3sPUFVob5MH7uEWN9GYq7BgtUbJdSpbLcyWbRU0xCtb+Ed1rDekNvVk+/ctn9smTNEHNHWhPRzlvbUco+DtbzDS0eCDG3FSGkKIodLUkGMxZrNn6JB/44XWkynn6Gufz7suuZXTRSj44A73N6TBbL2K1v3I5dbqvrcMLxgh70dJmmhvTbKnR7ZmOdNcQkYriRculOSHJ21AlX0qpi3mpKO2p6KSdU9Wn6stUSEblhvbEzjGZaQVIxXWpQQaCmKHRnooggKI9fvLObBC9qKuFi45byHce7uaZ3dKISscM1namecnyVjYN5Pn2w90M5ipYjk9vtozrifq08JrEAsv12DZSIBsYdaMlJ0zXrkXF8XB9QVzXZEuFNAKkDMCeCbq0JUFT3ODRbaOoiuR2VReqqC41cSKGRszQiJuShO340rPlIUnbiiJ1qBRFPjvXl3IMTXGTgu1SCAwsgTTGqunci5vjshzVFATUZa1J1i5Ms35Xls6m+vHQFDdoTpgcu7gJ2/UxtRwKgkzJpezIbMN4RENRpSfMdwSjRUfKcJQdBnIW+YpTV1T8PWet4MZfb8KZJGIR1VUue/GiCYvH+IVvcVOcWx7ayrP9eXRNmRAW6Rkrc/TCRo5sT7BlaGqvUO0iKT0AkIhKr+hYyWbzYEFmcAZyDQQHBoBcxSEV0YnpKpmKG0o5QMB5Q3rO2lNRlrTE2TJYYN2uHJ2NMkPS9/dIs6AojBYstMCwz1dkeFIIaUwrioLn+VRcn5EgC20qTCbwO1qw6c9J78wR7Q0sbU1MashMVkA9YmiA9PSmogbZikNj3GTLUAEzkO7wg4OE4/pkfSdYMwQnLWver43A9wV3/b2HvkyZjnQUX0iDb7bG0/MhVaCq8kCZLTt0tSZDA2z8fZ7YOcZzAzksx68zKndny0QMlYuP7eTPW0bYMVqaIBk0HY9pOuNgPO8XmLBGAVx5xnK2Dxd5tj+/J9wePC55qJDCqbqqsK43y2jBxvFlJMH2fBKmXF8OVJmo/THAp8oq7B4u8u2HtwPKrEsgzcYjO5sxV02uGd930xlCI0Wbyzf/nn/94ecwPJd1C4/ko2+5lkpzG0lj9nqbk+FgF5J/wRhhyaiBoqp1nT4d6S5veWHMuVDxUGNq3QaXjEh+1euOX8Sj3SOTdg7Al3+zmc0DeSkUG4Qoa3Wmqv8t2B5bh4qBwrvLNx7axhdffwyqqkwIkYz3uhUtl2RU57D5SSqOT2PMJBnRKTkeFcfjL9tHeaR7hIGche8LWhImHY0xqRTvC57uy8lss+C0WZ0cu8ZKUqnbkjUWHVe642sRRM/IlW0cT0NTFSqux5d+sxlT0+omKMBg3goLKUeDOn1CQMX1MTW5GUsOjjRSReBxKtse2bKDpkqCtOR7yYw6Sf5WmJ+MIHxB2ZHFpKu6XiXLZctgHl/AS5a1TOqV2NuJpylusLApxq829NOaiLC0NU5vpszTfTmSESkHUbRk5pwZ6PwUbdm5vWMlTl3ZVjdhzzhsHr/c0M/m/jyOt4fcrgTP/xfr++nLVsKFrTZcmC27sihzIsITPWNSsLWmyHNtltbmoTwfP+8IdFWddGMav0hWx3zJlh5Ny5EhH0UJOBgauJ7k3kUEtCQizGsw2TpcZFFTjIrtMpC3A8+uzP4UikJvRj7D9lSUvmwZBRn2Tcb16kAmX3EoBmWhoroWZIgF8h9IXpEbGGTJiM5Pnuhj9YKpT7q1G1B7Kkp/toIQAs8XbBsqEjd1mhLmBENmqgLqaxakeMnyFtoDHbIbH9yM58O8BhPbFeQtNxjb1QoGCu2paF15tH3Bgxv7eWDjALbrM5Cz6uRgmhPmjI2ngyFVMJnRs7f7RA2Vvoz0Ihy9qHFS78jTfXneespSvjpOMmg6HtN0FUMURZnScBj/zFZ3pvn0xWu46gePs2usHPIBDV1lXiBFNFK0mZeKkC3blIL1xheENIamuHFARFD3x5M02WdHi3aYXLZ9pMS1P3+aR7eN8NrjD2xVgipmOuae6snw/Ud3TFntZSpD6Ewxwrv/9z9RheDvJ76cb7/jkyyLxcOD9oESoj2YheRfMEZYFZIw6vFsfx6QbuaS5U7Qp3E8H4T0iKXiBhXbD1KFoSFq0JaUpO15qUioNzaeHL20JcFVZ6/k2w93s3mwgBuocquqguNNdIH4QobRDF3wpy3DPLhxgHNWt9eFSLJlGzPwOAmkTpMv4EVLminbHl+pUYOuuB7rdmXDkImhqTTGDfKWS2FAhiSb4ga5ijwZNcWN8MhXFdF85RFt3PTQtqAETj2qbRBIEnk0EEj1BDTGTOal9vBAdo2WiJk6ric4sauZ7pEiIwW5WXtBOE5VFHRNwXY9CpZUqY4ZOomIzoLGGP25CqMFG08IlGBhNDXJrFNVBSsoqSM1ueQJVnM8qekTZHQO5Cts3J2bdMGZaqInTJ2tw0Ue7R6VEhYKPL07y7yGqGx/QFDPVRxsV4Yim+MmBcuhGBDSLzp2QV1m2t2P7yKqa1x4TCdbhgoynOgLUjGDku2SKTl11QDuW7dbVkOwXPKWi+MKnvFyWK6gOW5MespMBGHqLYNFXr2mY9L5MH6RbAj0xfqrhpKmBp4XBcuRocPWhgirO1KYhkbS1NjQlwNgVXsKy/Mpbx8jZsqM0LItqxLszpYpWS5NCRNDVVg2L0n3SIEFqShlx2cgXyFXdnEDORAt6Nsqt7FqUKuKFL1d1Z6a1vAYvwHlKy75QCfQ0KSnpjrmpxIUnW7R3TZUYHeuQtRQcX3pKTN1FacanhYCOxDc3B9ukKyDuZ1c2ZXF0jW1Tg5mdWeadMyYkfF0oKUKplMRn+4+wwUby/NDIeda1PZFMqLP2AMxXcWQh7cO09YQIaJrM/YkJSM6C5sSzGuIYgVlrjpSUZldHMiv9GXKxE2d45c0Y2hKnWA1TK31OBvM1ntZaxRXE4aqn62V/IibOk2aStnx+OuOUXozB64qQa3BM5Mx53g+dz2+i7GiPW21l8nmpC9W8cPfv4dmu8RDb34vqXGe1wMpRDvbQvIzxQvOCOvPVujNlvn2n7pRFYXd2TI9o6W6kByArsmMp5ZEhBOXNlOwXUYKFv3ZCmXb5bl+aQx87fdbeO9ZK1EVhZ8FCvzjT1pvOWkJ63ZlGMoTZtPVZsHV/tcXAkXI7Lyfr9sduoqvOH053UNFtgwVyFXc8HSmqwor2pL882ld3BOUT1kxTw6U5wZyUiE8YcgTdODNSEVldpkVeLbiZn2KL+xZkJe0JAiy8AHpjq8S4muNMh+Z3QayHl9fpkzEkJIFVUmO0ZLN8YuaSMZkeG93tsL63iyKAhXbw/YEIwVbCqUq4KkKjifDeo7nc9yiRvKWy/rerKwMEBh8MUMaCqMFC9sTaApBkW1JnM+UHdpTe06w052Mxk/0v3SPcMtD2yjbntQMUjxcHwqWR8EqBqKtSsg3lERuadD4AhnaBH78RB9HBV6b+rqMCnnLRVOVsNakoiiUHY/5qQgDOYub/7AVIQTDBZu85YYPvuqUzJSdQApjquk8ddL85IukCP/XcuQz1lRJOPc9mYVUzRzdMlQkEVR5iEV0hO0GyvkyVOn7svKA50vx3JGCFWiCKewcLbFloCDHvELIR0tFDUq2R9HxaYkbmIaGUxXGNDSO7EgRi+gM5K0pDY/qM65WdRguWIHcgTTax4/5ybxA0y26+YqLIgQJUydTlhw1U1MxA++u78vvWpCOzpoPVlsD9bZHdlC0XBJBckSVc1atMLB9uMDKeQ0zMp4OpFTBdB6RXaOlaZNC+rNlWV4rOTGhCeo9ckcvatyrB2K6iiG26zGQqzBacjjzsNYpBT3HrwdP9mTYPJgP5Uc0VaFguSxrTdKUkPqG1XJWy+dFwvD8VL9jXzEb7+V4o9j2fHZnyqxdpJMQWij5UfWaCyGoOD4LUlFG97Iuwr6Fs/c25voyJSxXcgH3Vu1l7cJGOSf9IggL2hbzVE+Gn5x1GUtbEwetD2YL35fyKjPFC8oIGy1YrNuVIaKrdKSixIJU/mf78/x52wjHLGykozFG2fboz5SlkKUCeUuKSfaMlinYLq7rYwVaVY9uHWH9rqxUiTcmP2m99riFNMZMMoF+leuJUBepOmzCcJSiUHF9EhGdvmw5jJX3jpWC7BtNboaBd8LQpBfoz1uG+Wv3KI1xg4LlyizMclU/S17r+jLbyAjCOZZjk6+4NMaMMMUX9izIazrTPNo9QsTQUXDC9qmI0MiphWCPITmYtyjaHqs704FWk8nO0RJuyD5X6EjL0NRo0aa1IcJo0ZZSF0H7SrZLzNTxfBGGklbMS3F4e4p1PRlKtgcIkqZKtiR1uXRNygmoosoH0ykFBmVzwsTUtb2ejKqbr+v6fOyedZRtj3TcYLRoI8ZR4nz5wMK+NAMeUK7iEjE0ulqTmJpad8/ahXVPKv6eE7SuKpSDcdIQ1dk8mCeiaWTLjtyEValBpQbZmb6QJYo6AqX4am8UwjD11FmW4xfJfMXFduV9s2UHV0jvk6GpmJqC7XuMlRwe2TZCe0qW3DppWQu3PbaDsi3rQaZiOjtHSyBkCEcEXiyFwDPmCZ4dyBPVtZDAX03qaE9FOaIjRbHi8Nj2UXKWSzIIQc5riNLVmqApYVKouNMaHvmKKzlg2Urwm3yKljxhN8Zk1YxyzZifrReoP1umL1cJTu4+JbsSjjddVSlUZOLOuWs7JhgM0xkUtRtppuTQM1aiMWYQNTSK9p7kHEXZY0huHyny4q7Jw+y1OFBSBTPxiFRDvVPdJ2polB2fpDaRwDy+L/bmgZiuYoiiSG+q6/tsGihwlKaGa2BDVJ/UcKiKYpdtj2REJ2FoofexFHgfDU0lbmiy3NhBFEGdqfeyP1sJ+6S6Bw3lK2wdKrBuV5aV85IT1pnqYcg0NDrS+l7XxX0NZ5/U1cLGvhwberMsbUkQj+jhWIgaGp6ATMnea7WXz12SRt34NJx3nhRdffjhfzgh2ur83bhjYMafecEYYf3ZMs+MSM2aoxemcXzBc7sygUQCFG2Px3eOsaRgETE0LFeQiuoM5Cwe2jwMSOPEDTZHmfFloikKu7PTn7Qe3TbC6gUpdo6WKAaZgaqi4AtR56MQSN6VgDAz8ameDN97ZDsPbBwgV5Yn4rip0Z6Ooqsq/Tm5oH7xwU24QmCoComIQSKiBW5nDZequGYggaDJTc3UJZeqGoNXVYVCxQ0XypOWNXPbYztZ0hxnMF/B8WRYaGq/ivSCQVXI06N7uICmJKWQpYB8QGgGQFFY1pqkZMnyNXZQgzKmSde5DENJ75vl+gzkLSCHoqq0JE1J3i/ZjJVlhmXUkL9JqqMrpONSt0pT5Wt5Sy5CMz0ZPbx1mL5shYaoLHkkjdk9Hqi6jgvg+kJWZwi4Ic0JE88XdfesXTik4KAISxdVv6Oq1u35AtvxpWaYomBqyh5jTVHQFJkRWnF8qVFk6qF+nAjC1Mtap97Axm/MMUPD9X2sQBMsaqhhYXBf+OTKcq7kSjbzGyIIBB2N0T2G3Lwk8xui7BgpBan9Isx+HQxkOYIBgqkr2K6cB6oq+y6iyyoGzXGDXZkywwWLw+cnaUpGQvL+3rw2vi94qmeMnrESCgrpuE7c1HE8T2rRCUEqaoTPeCaCorWQRch75WEKaEua5CqO1IhzfRqiGrqm8pJlLXWF0fdGaB7vXYoEhdHzFQdNVUPCezUBQwhBwfJY0qLPWOfpQJCMZ+IRGS3ZE7STqve58NgF/Hgvel2zEQ/NV9wpK4bUZgz3ZyuS34oS8uqWtCRC3iPsMTArjkd7KspoySZqSGqG5Os6bBsqkIoZrOlMIxBs6M0dNBHUmXgvV3emuX/DbnpGSyxrS5CMaKAEfMRUhN2ZCjtHpSC2rlYNKMltruqveYK9rouzNXhqx3vBchkr2YyWbJpiJs1JU+pIdqa49eHtM6r2MnDnT+l45z9BPg8rV8LYGEsXL/mHEKKt/t7q/G2JzryE0QvGCHtqVwZHjRKP6Dw3UKBse/jIUFzcjBA3PXIVB8f3MYRK3NToSCdZ1CzDX0N5S6qcqwpxU5MbUxAmURUpFrd5oEhzYk/pkuqCtGWowJtPXMyzA3me7pMhwsmEAKtraDXDsDdT5tZHtuN5UvQyGZEnr0zZCesT2p6PGxSc1lQl5JXZQfgmorkYhlR29gIPHMj2Rg2N5fMSbB4ooGsKIwW7bkGucp1akibJiEHRcrA9GYucjB8GBIRkedo0ddg1Vma0YON6PhXH5YmdGcqWLPWjqCpNCZOjFqR4tHtE1vZzfArUetWkIWBo0kC0XSlV0ZwwedHSJhY2xXlo0xCP78wEBG6ZoZiK6qFwaNWz5Lg+ZWZ+MhoKCsNqpoId8EKq2Zq1DrEgcZCGqI6hqRzRkaI9tYfvMn5xql1Y56UigdinNOzHL47FICnCqxLUxw0cU5elVARQsFyZbatI0vvK+QneefqyvW7OtRvzul1ZKrYnNd90yYczNAXb88iXpUdY11QMXSUVM9nQm6Mvs4Vz13bUGHJSl871BJUg+UOteU5VQzZfcUFRiAbjBSH1wqohwpXzGsiUHUZLDs3JKJ6AsuVO6rWpepie7Mnwx81DPLZtNCw+DrLaQjpu4gbyMGMli0VNcbJlm790F6YVFK31XiUiGnf9vYexos2xixp5ui9HxfVoSsi6pZmSg+MJDpsX559P69qrHmHVW/6es1bw4xo6gRIc0kxdxdSlFlzClJug1KUSCKRu3dtP6ZpVhtb+koxn6hFpT8cm1OcNM972otc1G/HQhqge8GwnVgypHnaltJ1AV2R5pD1lz2TIuDo3qwbmgsY4tudT7M2GUiWaKuub7s5VaEtFwvJafZnNB00EdW/eS11T2Dla5PGdGVSkgHQqpodh0+VtDeTLLiMFySV2PJk4UrJdoroW6q+Vrek9yzC7cPb48d6RjlG2XLpHiyRMnTefuDjU1Zqq72BPtZdX/OHHtN/zJfA8OOMMuOceaG5GhUMuRAsTvcN2uTjjz75gjLAVbUl6i7IkykC+gu8L5jVEMDQVIeTJV1OgL1PB1BResrwFy/XYOVqSIYsqD8oXRIIMRRGcmqshulxFalDVVrivXZD+49xV3PyHrfz6GalBUyW2w54aWAhZ2y5iqJRsj92ZCktbYkHozQu5YLbro2kKUV2DwDjUA9Ku7/sowe8aKtgYGmER6aGCLP3iCUFD1KBiexy9MM0lxy+iPViMqgvltqECEUNFUxRakia26+H4eyQIqlCQXCghpGAnyMmTLzt4QmbI5S3JYyvaHn/vyfDMQJ41nWnmNUTpGStJUr4qY1aut8fK83yfsi0TKBRARXqNOlJRnu7Lsztr8cYTl1ByJF+oIdDFGi3ZYbmZqmdJ15S9elBqN1vH8wFB0fLwA0/eBC8YkIjogWyG5IZVxwdMfhqrXVgHshVihkrekkWmy44XLo4CueE1JUz6sxX2mKZ7IIQgakiP2byGKFFTC2uKzjTjCfZszPc/vZtP/fwZiln5my3X3hMyF5IrGQ2MXUNTWDFPenuf6sny3rNWhIrkvpBikGpwMEhGpOivHzxAVd0zn0Q4duXBoRoijBoaXS0Jutr21PuczGtTPXE/uVPWGHVcH0/sSXIoBnzD5oRJOmYyWpS8tILlsn5XDkWB5W0JlrUmQ528KmEbqPNe+YFA64q2BpqTEVZ3ptk2XGCkYFOyXVxfoHgKmbLLj5/oRVVk3dm9he++++cdDOYqdd6lqhjlaNEmZmhYrs/qzpQ8fDkefbkKL1rSzMtXzZ9RH9dipiTjycKns/GITHWfqkzLrX/eHugWQjqm71Pa/9KWBMtbE2wdKkyoGKIpokbmBMxA5qZWashOmCxuigP1Bma1vmm19qjnSzmcuKFxSY2RfjDlC6rParJ7dDbGGMhV2J2poKKQjkmPVm3YtClhsmZhI0/tGgvq4zokTC3U5WtKmLPyGFVDi+t3ZWhriEodNV9mx1dLiAGTj/eYweoFabYMFnise4yXr2qftu+EEFQqFh/+9bd43R/vAmD0ksvI3PhVljY2UQ1kH2wJiZlgOu/w3vCCMcLmp6IMBLpD1ZoUeavqQQgyMoL6hSXgoS0jiMA7ETd1VNWRtQmBkZKNYblEA00rCDIFRZBVWYPaBalke7QkTZa0JOgZLWEHhZR1BbQgC01TZc0yXVOJ6LJu3tahogyB6iq6KknnVZI0wkPXVISAZMQI+Gt7sgN9IbA9Aq+GRt5yGQkW9XkNciKfu7ZjUq2Y2pNPV0uc4YIFtoehScOmapBUOUMCWVvQdn38oLRHlR8Fsg2qIkNnZdvj7zvGWNAYxdRUmuIGliNrt4E0KhVFbgJVWQxFkbW68hUZ0q0aAH/pHmVtZ5r1vVLjq6stWXOC1Shaklu2bahIc9LkomMXTPitta7z0aLNWMkGIZX5i8E4mQwKso8iuvTWWa4kxHq+mHAaA5lVV93Qqt6PJ3dmGCs5ZFyH1kSEFfOSGJrKlsECzQmTlx81ny8+sCnIQJVhYyGqBcKVgNSv88nXHElTPDKlPtLevB4bd+f48RN9oUdWgPT6iT3mn/TYyfFZlUtpT0V5aleGE5Y28qYTFyNeBF/67Wae688F9SL1MIxdnSe6Kp9XxfGwfYGpBRxJJeCRBRvDsYub+PdXHcHOsdKUJXiqJ+6xko2mQCSqh0ZRQ1QaYhXHZyhfCSopAEJhpCgN9YSpsWuswkjBpj0dDRMivvHQNkqOx1iN92p3pkSu7LJlKE/MlIknXSTIlh0iukajoeL4gtZkpIYT2rnX8N3WoTyeJ0hGdUYKVshZ6mpNUrSylB0P30caCKbOaMlhQTrGa49feNBO+ZPJoixrS/JPL9n/ENCG3iw/fqKXoZyF78v5Pr8hWpdFPFOoqsLlpyzlrztGGS3UVwzJV1z5fHxRdzCqlRoydZWdYyWWtSUnGJhTFb4/elFjeP+DKV8w1T0SEY3bHt1Bb6ZMV1tClvwS1IVNq9m/UUPj8PkpXr5qHvet76dou3Q1J4hF9Dr6yXQeo9r1cThIUNs8VEBTpPbigrTcR1Z3ptk2VJgVgX+qvivZLu//za2hAXbHhe/irrPeQuRXmyd4q5+PPpgOe/MOT4cXjBGWjOikYoLBnAVI70zF8bCCcjhOwDSvdlnJcgNPlYYZSB9UIYTMfrIcaXT5yBCQoSuhqKu8bg/B/bmBPLc+vJ2i7bKyLcnipjgb+rL05yohudtQZRi0NRmhKWGwZSBPwZYaNDFTxXYFmq7KUjdUjT4ByIU5EdGC9HubguWHdeziph4YQFLZXira60QNjd3ZCrc9tpNHu0cniO1VPTbP7M7xRE9W8tUEMiQZwFADsr4i5WernkXfA6HsIaxH9IB/I8DUCTXK+rMVorpKMqpLo24Pbz/47x7NMEWRBoftitCtXhvu7c3scUmvWpBiS1DPUfK0ZDgyamjc80QviqLUeVKqG3nc1MgUbcpBoWpD16i4U/MkDE0JtKwU2pImiiLDcNuHixM04z5138YJfKCLj+3kLSct4ameDH/aPMxg3iJbdqi4Xp2K95+3DPPIthEs1wv4QXLBleU6FV60tJnTV86b1ricTlix6k4fKViyzJKuhKHN6lgDuVkWbZfFTTEaotJLs22owECuwhce3EwyorO8NcHLjpzHUN5id9bC1PcQ80VgiekqoQGpQlhBIhnVUAShAXrxcZ3ourpXGYr5qQi7xsokIgZCyH5xPRkerE5JOVfkoapku2FZGssVOL7DSNGnNyM5gMmIxo6RIvPT0brarum4ScLUqNge24cLNMUa6R6WAqAtSVNqvrk+qZhBZ1OMLYMF7lu3m4rtTRu+K1Q8RooWPWNlVEWWSkrFDLpapVxGtWLDYN4iHfcP+im/VvKhbHuUHA/Hlfpqf9s+yutftIjmaYj3e9vQ60JVQTLUjtESX9lHgdM1Cxv54CsO5/MPPFdXMSQWyOYkYgZxU3qsy0G/tyQiLG6OyyzZ4KA4WcitWvheCBFWvagamOMPOGs690+hfTrUehW3DRXYOlSkI9Csq3pMq5mP1aSNXEWKRa9d2MibT1rKcUua93iM8taMPEbj18eKLakKui+pH0ta4oASCqNWaSwzJfBP1XcNUYOfnP5aTt/wR25/zTvpe8UFLDWnlhc5WBISM8HevMPT4QVjhFVJ4NmyFIQkINhXdaoURZLK5WYQcFdUWQMu40mDpuoPURTJCdKDsKChSY5DVXai1guiqwrDBYtP/XxjSKy3XZ9lrUmOXdzIo9tGsD1JFF7V0UDE0GiI6OQtl+eC4rdVPsJo0cYJsjKrsczAqReKnEYMjbgnM49ihoauKVKxW1El2d/22NSfo1BxMZrkadvzYV1PZsKg9n1B71iZQsXF9f2wjp7jg4II7+d5PrYnEEJy3ZIRnYItw49+YLDZnsD2AvJr1dBChi99ZGWCqhYU/p5C1tU0AAWCDM+AtB7srLXh3lqXtOXITJuK6xPVVZa2JmkNtN1qJ3BtqGh5a4K/bB+laHsyy01R6MtV0FVwJ6mlXe1rXZPp1M2JCB991RH8X/b+PMqy6y4Php+9z3jne6tuzdXd1YOkVktqDR4kW7aJDQaMDZ4I+UIMMQSTl4VJXiAEzPB9+AVeY8IQHAgLkhgTM8eyIbax8Qi2ZUm2pVYP6m71VNU1V9268z3zsL8/fvucuremrm5JwFrKXstDd1fde8a9f/v5PUNeonXJbuz8SueGBodvvm8K90yXcGmNGHG3jxVwpJpPJ/Sf+rbj+KVPnKdnIorBOCGLCmM4PLIz9+tmjBUTOL2Y0bHUcjGU1dFxqb3GQWhfMoQARouZNNao65Kooml5aPT81N/n9XeOYaFpw5FSfoVzCBaDg1qUkKrdgqmkk2/e0NByg30VGf0tAD+MBgQOnDGEpAyAynlfS5VoAwojriDnMoEhJoPYKBbwoxhtJ0bPi7alJxQMFaWshposlle7Xqo6EwKSz6enflETpQzlS2J3Fd2VtS4WmrbMnRSysKdMTsuLcPdkEUM5HQ8cGsI7HjqIUkZ7QXf5A5YPTgAvlLYBOimsGz0ff/H1RfzE62/D6cX2TbWAXsjopDffN4XD1dxAi1NXaK48NpLHVDkjPfbiNKWh5xH/sV+JuV+O0fMdhH4zox95YYyliGnCX+NybbpWs3BgKJse834Ro602KQ3Lx7GRHJ5aaMGLYgzldAiBlIJz34Eyrso0mu998MBNKxb771392gIauQqKpoKmNo4f/bkP465DVeSfx2fl+R5bi/ebGS+eIgxAJafjvgNlPDHbQNcJSBrPhPTbIqQo2fknBQ7nDH5ESi4hWNrOjAUQ80014LHRPA4NZ9G0abea9uy7LmY3LPhhnBpDJj37u6aKGM4bqHU9RDH1wxOfrryupI7xTMTgjAxAux4ZgiaIkcIJETE0Og43CNG0A8RChndrCq7WLByp5jGc0/FkvQk3opy2K+u9NLOyaKpwgih9qM+vdPDIk4v42/OrVDwa1HqdKqtY73qIpJcZZ9Q+TVp2eZ0Qtp4XpgHlCRG7H01MXpk4pnPMmirswJeLKE32/Zw5VaE2kh/GGC0Y6Qvc/0IfGcmnE0wyeagKTYwMSCfgpN300aeWYD7IpaRewRPXG1huu2AgNaYiA5k5Y9C45NX1nYOsI2CqHKau4e0vmcbJ6fLAM7efRecP/v4qFIVJRIW4MbeNFbZN5mNFAwsNGx1XpMf14JEh/PBrjm6b9G92sUsmdSNDrYCCqUJVeJrbmIgkdOmDltE4Zjd6sLwQjh9BVUiVq/JNf5/Pnl/DAwfLmKvbZMoaxrhWo98J5W45QaLGSxl8/ysO4eWHh/fdSuhfiAREKnBQOUv5eQJU6EexGOC2KdJKZDCGi3iDYSSg64TotuwAKRETSDdzlhui7YZoWSQ60RSW2pLMVDevd0ZXwBnDaNHASnu7b1a96+LcchtCAEM5HV25GfEiASWOEAuBUwst3Dtdwg88PPOCL+5xLPDlyzU8db2JjkOKz1JGT49ZUxRUcjqato8vX97A+992ctdW8U5jR+6MEOm7WTBVXF67dXPNk9Nl/Pp33zvQtvuTx+dxdqkNAaTzK33tzq3T/XCMXqgg9P2Ondqm/fy1hBJyYrKIH9gi3LgRYrSbTUpGU9INB9mkQCJuIXpelLYZAdxSu/rkdBm/rs0Bv/QOLPzab2PuNd+J//7lWZSzg58BPH8xW8/X2Fq8D2s75NHtMl5URRgADOUMvHymgq9cqcMLIkK4IoFAxPBJrJWiYxCEdMQCcAOaxMkQjtoapsZhKByRAF57fBRvOkmu5JYXpS//ksx7W+t4KYcm6dnPbdg4XM2lE3rHCZCTHipXa12azASw1vWhKWSCmdWVNEsPggjrpsrRsv1Uwh7LBUdRCI6vdT1YXoQj1RzqPR+uJBjrKpeWBAIN24fCOU7NN/HZ86t45KklLLedtHiMYlqQHF9+ju2jYflUFBVNzAwr0jk/wmqbhA9MtoFkV2ugqEraUwkq5snoDy+IMZTT0HZDiQwQ6hZK24CMvrnIxXGM2Y0eDlfzA9YCR0byuFbrYb3nYaKUQcsOcK2PXKtwunen5pt46UwZDctHy/Jh+VHq9SUA+AFxQBKDWoA4UozLlnRaqHNMlEzc18cTScaN5PxxLPCZ82tQORU3msrQcyk3s58cnkz4DxysUJSUS5Jvx98heUEupKfmm6hktxti7jSBJZN6JPk5pHJVYORJuWh55DivcC4Lp5g2EwGpdIdzRopObvr7BHB8ygZMFqsTkyVcWetio+fB1BVMFE3cM13Gv37loW0FbP/57LRzL5gqDJWj1nXJ2qRP4BDFArrCU3uMGLRh0VUOEUYAAzg4PBERwVcQ6srlc+WH1D7veeGAiTFAm7kjIzk8u9ZFRwbWCxAPLLElSUaySfjOk5PpwjZRyiCjcdR6Lp663kIkBEZyOnKmBk1NCt9YxlnFyBsqvvslB17wAixZfE/Nt9KED10l5N7QNltLmsKhcY6rNSvlUu13bOXONC1/4N2UezA8vdB6TvmV/b/7tgemcGm9i9MLLYyXTIzkDThBvGfrdC/E6IUOQt/P2KltmvDXOm6A2ZqFE5MlvP9t90BV9x8mvZdNyrNrlEec1fuED5yAiSCKUc7qWOsQenvTikUhgN/8TfCf+ilACBz67MfR+s63wQtjZPTnL2brhRz9xfv/8QnbYVhuCNWkNmHDCjBdNjFXt1N0I21/iU1vma1qOMbo34QgjtPBoSyaFtlFfOHCOp683sTRkRxecaSKSMQ4s9TGRNGEwObCRjYEmz17TeE4OprHlVoPdhBhbsNCEFErZCSvw1AV1C0PIhaw/CjNjzQ1jiAmBdlQTkfLCdByyBsqo3N4kUAcAz2XPMCcIEIUx+h5AaKYTF8zA0ohcuBebjn4+OllNCwfk0UTS00HbYdk93Ecw/IAL4rxskMVVPMGLq50CFWrufDCKLVT4IwyBpPLl5Cy0yEXRlWiiRSPE8ED4IYCGVVB2w0GlJhCCIwXTJQyGpaaDi6udlLC91ZrgWSy99QI51fIRqA/4Lrr0vWar9tUzAQRChnijAhIsYHKEESUV8hBJxALMkklvp1AGEtj0F0CpfcibDZ6Hi6sduBFMXKmjpKp0ud5oWz/2XjkyUX62S0Tfjmrp5yjR55chKkRGrnadvD4tQZOLbRwea0HU7ORM1QcHMphuq+1tnUCSyb1MwstFE0VDZv4Jcl1p/QIjdrSKket68ENYiiMoZTVBxZpYNPfp255+JFvOpr6RXlBjKlKBg8cGsLDx4Zx34HynujJXi2fWIiUR2VIYYsbRCnSxrCJRMWCjDdNjSOy5Tuscbhhn+iib9OV0TnKmoamFcAPIqCvCGv0PDy71oPKOSHEugIRCxwazg4UYP27/tefGMNUJZOqOJfbDhw/ImoEADuIoKrRQOFLhRiJecZL5o7X5/ka/YtvJavBVDl6EjFv2D6G+u5xMo/Fkvh+M2OrR965pfbAu+kGFFn2yJOLuH2ssGPhuV+hSXJeHz21BNuL0LB8rHRcGCoRye8/WNmzdbobYvQPEYR+o7FX23S94+HAUBY/8PDMTRVgWzmWfhghjKkLpKtkLJ2krNA6hnRTqyl8W1di34rFIADe/W7gD/6A/vwjPwJ84AMoNN1/Ukas+xlJ8X52roK//LH9/c4/naN/gUfLDdCUZOl7pkrY6Lm0Uw9imggF7ZQZ2LaQakBaSGCTg5W08xTGMCJDXVc7Hv7m7Co+fnoFpYyGjZ6HjhPgSDW3jTiZeFf5QQTbj/BtJ8bxrx46iK4b4sOPXwdnwG1jBcm7aVFUkYyQ4ZxB5VSIDeU0VHI63vrAND55ZkXaMLhQggie5LcxRiTljS6ZZeoKTxfYhBBNLTcGy48wV7dxuJpHy/alNQakIo4QBssL8Y3rTXDpU2b7EfyQfk7ITqmqkJtW0Nft2drKYwzSuJUmu7W2g1CQJULPC8EZQ9ZQUMpoKJgqal0P1xs2Wk6AthNA5Qx3TRYxXspsawUkKMml9S7cMBpwYtYUylVs2QGevN6A1FWQ+SlnKc+Psc2wdYUjPRepsUIc03PBOX3mx55akmrM6IZy/kbPw2PX6nADKvosl3ITC6aWFsROEOP0YgtcTuw7TfhZXcXfnl/F2aU2JT10XMp3zOuIhUDXi9B2Qqx1PMw3TNw5QfyinVzJk0ndCYj837AoBiqxjAgjIp9/30OHMFXJ4gOfv4z1jjewM05GGMVgjBbpSAA/94Y7b9i22rq49rwQv9OXhdrf8rmw3Emr+qyuwgtCyTuMIWNfCdVU6R6pnGJnvFBmlQrA1Dksn973xE8qigVypor7D1TgBDFsr43ljgtDU2XurIsziy0AwPHpEsZLGVSyOs4stvG12SZOTpcxXjJ33PXfPVVCLAQurXYxlNWRLSu4ut6DExJX04+81BhXUxhUXUHLjqHwF3ah2YbsAJiVGbMqI+5s0/FRYTp0hTymCoaWvpc3Mw5WshjNGzi/0oHjhwPvphB0/8ZLJtw+asRuiQK78bCS5+jUfBN/8vg8bD/ERDmLoyM51K0Aq20HWV3BW25BiQm8MEHo+xlb348TE8Xn1Zphrm5JpbaPxaaTIpNeSGbRBVOFF/roukHKCUs4kHmDaC/9bcZ98c9aLeCf/3Pgc5+jyfY3fxP49/8eYOx5jdn6hxycE0dvv+NFU4T961ccwsTIEEoZDbEQeO/Hz+P4eBFPzjel8o74SUxyxPoRGJVLVAxExk8Uem4QY6Sg447xAtpuiKu1XhreG4sYuspR73mw/RCjBRMty0fL9pE3icQrILDccVOp+bHRAq7Veqh1PUyWsynEfPdkCU/MNghRU0h9VyhquH2sgEpWw5X1Hi4sd5DRFDQdcpofzhmw/AhdacvBGYMvVYaqwiAgUJftRCGScxbQVYpFymgcz3bd9Fok743CgJgRkV4IYLJkYq1HRra6DJl0gghhJGCSDFIS+WmkHC/OUJHxJX4YYyiromNznBgv0O7b8nHbaB6GpqYkZxHHOLvchu1FmCiZuHuyCCYDW7e2An72DccxWjDw9GIL5b4CDKDzJLsQA+tdX7qpx1jpuKlSNog2W9OxEGlLNbkOERnYIyPdtIsmFUNnltpQGBtQP26dSJqWj6cXWrB9strQFCr+vCBGEPkYyumpgo8zCofeCZJvWD6u1LroOCGODDO0HbqXXkCE3ER1a2okOFnvuojiGHdPllC3fNwji4LTC61tk/pXr2xg1vZTsntOV1DK6MjoHF+fa+Llh4dwsJLBfMOG7bOBOBQ3IBsUAAgiDx/8yiy+Pkfq23t3aNkCOyyuKqFoAHFF+ls+R/UcvvhsDRACL52pQGEurtQ2RSuCJW0tKqhVXUE5S672obQPgZD5jxLRLGdUBLGAoSm4b7qMSk5Hfb2HVx2rkgqw1sNqO8JS24GhctzXlzU7Vckioyk4tdDClVoXjk/2NYeGs3jVsSpFjcmN3cdOLcELY9x7oIyeF2Kx6cCLBAIBhEGMeuTJDEqFTGzjGEdHci/oQnNtg6JtspqSLpZ3jBWw1nbhBCS2Cf0IQeSBSxFQRucYLRqpg/x+OHzJPb62YWGx5VCcmExJUDhPOaz9UV/XNoi32nVDrLYdfOSppQHLkK2bLwBpS/XSWgdeGENXOGo9H8N5HYeredx7oIwr6z381all3D1582rGf4yonL2Kz90McW92PL1APnsKQ8rvDGNKPnHlDlTlBCA0LD9FmseKGVytWTu2Gffkn1kW8MpXAhcuALkc8Gd/Bnzndw787j8FI9YXerxoirA/euw6Thxy8fYHpgec4E3ZkguiWBqaioGCQWXEAaHiIkYk3emTYmKynEU5q+Gp+WYajhrGVKDlTRVNy0fd8tG0gtTOwA1pcSlndbzs0NCAqWbbCdC2A5gKh4BAwVClZxhHRjcofy+IcNtILm19JAosJyBnZM4Y1noeoigmXhVkMLg8J9cn9E1hJDGGPH8h2zFuGOFqrYdGz0fJpCxKT6IjseShRRF5mnU82hUCQBwQUZ8z2daRUHUgW0OcUSHLAGR1OifbD2GoCr56lVAhxgE/3GzbHp8obiYQcI7RQganWk3MVHNpAZYMBpogn5pv4tGrG3jlsWF8/uI62U1IlCvxnzE0BcdG81hru+B8M/Cb8jg321LEE4JMAYglJ4xDVRh5DClkqrvUcmD7MY5WlVRynywO/W7yE0UTV2pd2H4Iwl0FVMmz4pwhCON0pxmEAlqWMurSCV+SmP0gwuX1Hlw/Qk5XoMp2Qc5QqdiIyWFfgIjmqsIRxzF6boRTCy0cHs6ibvl478fPpyakEyUTbzo5gfd823G8xz5LhPICZaLqUk0mAJxZbOE9Hz0HXdpArHc9mBrFUcUx0JDFk6EpGCuamCiaexKWdyI517ouFpoOsrqKph0MtPl6HiGvbhjja3PNtP2oqxyGpqQ+do5PaHAUC2R0DkBFywmgMbruQoAEKSGpe4fz5NFmqEpqkfGu1xxJd/MXV7v44FdmMVE0kc8MxpIM5Q08ODOElY6Lbz4xhktrXax1XPzZ1xbw0VNLODaax0OHhwbaWAWDFvPA2oSL4xiAAjhBiJ4rMFIw8c5XzrygXmC///dXcXmtK2PMOIoZFcM5IzWITRsDQkCA0HLF8nGtZuF9f3NxX6rA/ns8XclCUxlOS9ubWtdHwVRRzQ9GfV2r+fjtz11Gywng+lQAh5HA/QfKO8bD/bcvXYPth1hqOVjrehLR5jJFJEQk+Up3T5WeU8vwHxqh+YcQAcSxwFeubCCOBYpZLeV3agrDcN5AveelHZNyVk/b6OWMDgFxa+hbLgd813cBnQ7w8Y8D99+/7Uf+KRixvtDjRVOElU1twDzR0ChklzPydwpjcmePBeCHFGEUx8QH6jghTI2jlFHBGd9UIMYCbkBmdx2Z6UatRsCJBQqGhtWWiyCKoSgcFVNDHAu0nQC6yvEDr5zBv3nVprXAuaU2Pvz4dcw3bSw2HYrfkRNiLJAGyRqCnJ+TkdHJab1p+WhLXhhjgMIYFIUhkhMpB6F6AtQ2DIUAiwUURgT+REW21nax0qIJL6PTAhxEMdwgQgz6nEQZ6MsCTFIEEPcVqL50LgeonSdALU9NocKMArsZXJ8MO02VyNXNKEAUxVhqOWg5Ae4cz2M4T27+Cqe2mLqlNZcQfNt2AMuP8Fufu4Sj1bzkNsSygE78gWiy1yWCZXWoqJkoGghjQr4IAYxR7wVkRlg0ULMCqIwCbxNORNsJyGYjIlf4YoYyCfsXh9ML7dSY9exiG+sdj7I7BUBtTWqeEUrJJcoaIYxjnJgoopTRcHapjeFQx2zdQscJ4YXEfQIDJooZ6LLAVBVCaXWVFp9SRoMTkFoqjAFTIp5uGGO55cj8TQ8tO6Ag+6t13HughKYV4NhoYdtOnzYVAXpugHJOg6lxdN0Ith/D8V2o0q7F1DgKhoajI3nkMxqOySSDrS2m/lbY0ZEcel6Elk2oFp1TTH5c2Uq62BG6HKXFAUUOCTgxnZemMDDQjt2UObBtm4QtB4eyGC2YYKCF+UdfdxSXVy08NltHxwnQsnyYurJtkk+C1zljyBg7T5sZgxTGX7y4jigWAzv3s4ttnF8ma5iJUgZA0jJlm1QHibomm0FF4bhjvIC7Jm99odmLP5Us7sttJxXpJOrtpaYDTWGYKJlo2WRTkdEUKJyhJ2PRpsqZNIx5r4JgJyJ7LEyUMzY4p5i1oqnh/gPldGO12nax2nHBOHB4OI/QiDFbJz+2Z5Y7qRs8IHlYRRNfv97AUFanPNZISENgUtEkQfduEGJug7y+vFtsGf5DIjT7FQEcHyvclEp165irW1jvuBiWCt2i2R+RRp5dTdvHQ0eG8CP/7FiK8vVTL/b9fUEAaHIT8//+v8BP/iQwMrLrj7/QRqw3wzF8IcaLpgjLmSoqlZwM1G7g6EhO8poSqwUZnRLRi5kiN5IPRK2iAHmZ55fwxq6sW5jdsAEA1TwRFBMvq64XwNQV6BGDE9IuzNQUTA9loXKGlbaXHl8yIdZ7HioZ4mNoMsi6LS0nwpj4V0muYDJW2w5W2+4AN4eBCLQJCqVKVWci3eeUdgSdszTeJZSLN9lWUIFBix3FdagK/W7WIEQhlgIFJ6QkAS7EprmqXOxjkSBfChiTiI/kGYwUDEyUTFxY6cAEKR8tP6KiJiYUqu0E+PpcE6WMhmrBQNHUyEagr1/ctPyU4KsrRJauZA1cb5BHVU5XcOdkUQavb7YJrqz3cGg4h54fwXJDdD0iCHOQsacXxihlVJRzOipZHXWbCPMZXUEQEaKmSLUUgG0cmX6Sbt5Q8QtvPIFPP7OK3/nCFRwcyuBazcJ614MvojSbUgAIwggNS2CsYOCdD8+AM4YLqx08MdtIfdhiQUUWk+1fR9o9EKJJhbUvW+OljJYSvU9MFHBpvQc/jDFeNNPsw6yuomDQPT8134IQwEjeGCjChBCY3ejBC2gRttwI5ayBghmjaflwpKKvZCoYL2YwU81CVRgaPQ+ayjFRNLehDwnJOaurOLXQSlVyAgJOECNnKGg7YRoHJoQgg2NBhb8QSN/FZHMQySImiokb54YxbhvLo5o30tZ2FAs8s9TGx55aRssJ4AU0B4xLNPD1J8a3TcQ3bEPJkGIGWji2LpjnlttoOj5sL0Qho6VE56EcGSi7QQzEQE5XUcnpmK6YiIW4ZYL3Xi2sfn+8uyeK8KXatSStCNp2AMYUicArGC0SSnh5vUfzhlQQb91w7MTj2onIXjDJby3hyTpBhJ4foWASYntxtQOVM9w9QZSDes8DAyVDdNwwdYNPrENCqRieKJrY6JGpqCfNpclwleYcQyUu6IbMyb3VluE/FEKzHxHAqfkm/uNHz6DW9W7Zr6wrc3mPjRVwfrkzkJcZxQJOEEHjHG+4ewL3H6zc2skIAfzKrwCf/jRxwEyTCLV7FGDJeKGMWJ+L19vzVby9aIqwrhNgOIM+h/VDuLjSxVUZR6HIXWjCX0omeIAW5ETunpDbgSQzkRaBMBKo9TyM5llq/ufIHR4goPsR7hgroJwlEuN618dT8w18+XINDx+tphPiJhmfokqyuoKeS1FEjR6RWJPQVQCIoyj1GTo8nMF6x02jf/q5bbrCEAoGJlVhALnIe1EML4xAlhsKKlkNbSfERMlEEIk0IojFgGlQaDMDyD8JQNePUk+1CAATIlUXAlT8VfM6HjhUSc0Rk/iPtuOjJeM2oigir6Cor/0hRywAyw8Rd4C1tovhvI6uG2KsSAXmtY0e3DBC0aQJejinY6xoYKxowPbJw2at7WKynKVCz9vcsT58bBgLDRsnp8t4dq2LWs9Lo6c0haNg6FA5x3e/9AC+eHEdX7q8gdWOC1NTZLC5iivrFkoZegl7W8wg+0m6nDMcHy9gOK9DUxSKV5LCBz+K4ErhBUAFxeFqPs0eHC0YuFaz0tgnIS1GioaKUAisdVwUTRW1nkfGoDLUm9zA6f6Myaw3TxZgs3Vrm2ghb2qwvQBuGOPyeg/DeT191rrSRiUxbi1kKLBcUzgmygpaToCmRZzHmeEsZjesAVuQvKnAkG3T9L10QzR6PpoO8RM3Fawxel6IlkNZd8k96UpLCC6TGjwpCOFyoRWygM9oCrwoRkdOkNW8MZDpuhVpSVo8K20Hjzy1hKlKdtskfKM21GzDSn9upwXz8FAODcvHXN3C3VMlQmxi8mTL6ZuK1LuniiiaGiIBzG1Yt4TW3KiFNRClxDmOVPOwvbYUvPBUfERZgyruGCtCVRhcnywz3CAeiGjbSxW4E5G932A0iWRy/QgMDLMbFKh+Vx/nU1O4VJgn3lTBgHVIz6X5yFDJ5y5rqtDVMLVwSbJz204AhTPMbfTw2uNje7YMb7TI/kNE5dxIBOAGEb3HQYRjo4VbblUmGwxTVbblZSqckLByRtuV03nD4XnAu94FfPjD9OePfQz4l//yhr/2QqJUz6XN+3wa9b5oirBTCy0M9QQODefgJYpIIPUUCoVAMqckyj1VImFRLBAgHojrAZIgbQqGZQCCUKDWczGSNzFeNHFlnUiOXS/CcE7HgSEycz210CLnfi/Cb33uMv769DJmaxamK31k/L4XAeCIEaOQ0VDMaGhaPhqyJbPSdtB1Q2R0Bc+s9FKid1J8JcccCiqIFEZoXc4gv7GuF2JmOI+lFqF5tZ4PP4qx3HLTUHEOEgQUMzo4Y+g4QeqXE0QCmgIgIr5XeoWkPK2S1XDvgQpKGWodFDNkgkk+aZRekERExQKpUrH/SjNGnC03CGFqKg5UctA1MlktmCradgBd4ei4hEwNZXX0vBAFQ8XRkQIWmzYOVXcOgc7qCj52agmulGMbKrUoE0+3rkvtzXrPRzVvYKpsYrXtSpuLkFqaGRVjBTNtFSYTVzGjYrxoDuy4BxbyUYqkubDSwVqHeGtcEH/pttEC6paH3/7cJXz3S6bRtAO8fGaI/MtC4jrNbVjouIEksfuYqeZQ73kIwph8saQqMJBEdNsPMVcnOwdD4wPGi8lQpFFTMaNhw/LQcQMU5b0LQspY9QJCdPUBTh5DVlPQll51Ty+20rSHhOCb8BVX2y7uPUC/lTNITOL6EcrZQVPQ4ZyO9Y5HAdyS29WR701JFikdJ0jFExyMOFWMQtXhU8E20mfuC2BHpAW4sc/TjdpQOV2FiAkp3mlkDBWVrI6cocpnVwPntJD6UYycruLOiWJ6vR0vvCm0pt/l/MOPX0e952G8ZMIPo5RfmuStplFKRfIlE0LgcDWHta6LhuWTTY+gouZwNYeKRK0iaU/Qn1qRnt8uqsDdEMRkntsayXS4mocAMC7btslnJArzgkFZpIlqVwiBphMgb1I8W2IHZKoKem4oTbnlXkIiYm0nwL0Hdiflb11kdZVhtGjiVceqA7YqL3RUzp7oqxC4vN5FHAscHsntyJPbr1/ZzHCOukNzTUyUTBwbyQNMUj8UhrW2i3sPVG7Ic9uxaGrUgbe9DfjylwFFAX73d/dVgN1soXMzBdtz8XrbWryZRY6Nno/Hr9ZxabWLn37DccwU928N8qIpwnSVU2vPCTFZMvGVKxsIY4HXnxjDUsvB0wstOP4mEhHG0paBE8qVeIcBtLgZMgeRQrgJVY1iItaOl0yUszoEemg7ATKGiplqPkW4vKRtpiuoZFU8vdBCrUtS/7yhAH3Ge9SyiCj/a6qIT51bxeV12ikCSOOWhnM6vDBGR8LvCY+LMdoBKlLJByFS+X9GU2CqCvmKhcT5CiQPrJzVYPvk2SMEPbQ9l1Rf5axGnCVJbubgYCoQSXK/AF2PckbFnRMlVLIaOk6AQNpZrHUcNCwflhciiEh5qCtADJrUEnfzPj4wOMgU9dhoHjEEvvuBKTw+28Cp+RYsP4IueWYcwMW1LvQNC6WshkNDOWgKx/c9dAgl2QLaarx4bCSPT55dQRTHkgDO5PdKYUEY479/+RpGCgaOVvO4a7KEjZ6P1baDclZHNWeQKpIPqorqPQ/rHQ/fdPsIZoZz6SRxz1QJl1a7uLzWxXjRBAQpELn0STE1FUstFwoHtSvDGK5PjtRtJ8D1BoVIW36YqlQ5A2Zr1EJlyRmwZDEicn/PC6EqHJPlTBoTpW6ZYIhXxjFTzeH8cgfXahaOjXK4AfmtdT1a1MJYYMPyUJCWCsmzqKvE8VMYQ7VgpNdS5ZCtaIbHr9W3BcYnG5/+YWoKTKks7DgkcCGzSI47xgoIY3KTj2PaQEWCjHUVhUNRqEhIroflRWnBtBPSkowb+Tzt1YZ68HAFf/zE/J6quaGcjnc8eAiPz9Zxea1LKk2f2mhHRvIpz+lmCd79C1bbpvBmMGCubm+mYmRUHKnmUyGP5YX42lwDbh9fsphRMV0hYYkTUMF9eb2Hta6LsYIJzgDLC7cVtsn57VQ07oUgVrLatkimRL3efx37kbO23ARyztIA6slSBkeqOSy3XBRMBU07QBCSvQck15eB5rGiqWKsZOL0QhvfeXLyhousq0W4stbFmcU2vnBxHYeHc7jvYPl5jSfarYDY69p13AB1izaHRXNQKHKzfmXnVzpoWAFW2i7m6jZMjaOS1TFRysC2QgznjRvy3HYqmh70a3jX+/8djOuzQLEIfOQjwOtff8PrcbMo1c0WbLfq9ba1eGvaAZ5d68jNN/GYf+aRs/iFbz10w3NMxoumCNMUDtNQsd7x0DUVrLUdTJQy4JzLFqEGjTO0k/YbkBJ8ozgiSwLQYmFoisyKFDAYl+Z1PCXT9rxQLkhkJ3H3RBGVAQUltc1yOi22bZt4Ik/ON1HreThSpck4CY7tuQx+ZONvzq3CDyJUMiosGagbxbTwdr2Q+Bw6h+3HMFSgmtex0fNTL7BEEJCTxUrD8lHJ6QhlcRRG5IxdymhpIdfPcbtrsohKToeIBda7Hpggkn05q0NhDFw6ybfsABldwSuPDuHSWg+rbQcdWUzaPu3KqTBkaXFLXYPtRQFAdhlDssgsZzR03BDjpQx+4Y0n8OXLNfzCX53DepfQKbIcYAgUkla3bR/DeRMrbReljLYtYJdzytb836eX00B0hSNFXRLDwq5H+Zl+RLmf4yUTY0UDV9Z7WLV8yYOjBT0pHunlpj89s0ymkckkEUQxWo6PaxLNSlq6qkLXNKurCGOBnhvg9GIbExKBu1rrwQsjKvRkGz2CJB37EbxYQNeIgO5ID7pYcgPLWR3VvI4j1RyeXe+SoW68abwoRIyeG6BgatAVhsPVHI5Uc7i2YREpOopTxRxnxJMMI3qGEpVo3tBQD4jr2H8tE0XqkeEcziy18elnVnB8vIiuG6KS1cEEiUr6kTPbD1E0VBi6glJWR9MOAJBH3rNrPUyWqCiIJYcxUQIrUuxQkW3pu6ZKAyjoTkjLwPN2A5+n/jZU2wnQcQIUJR/w2EgeZ5f2Vs29/sQYXn9iDHN1C6cXWvjIU4vwAlLy9efO7kTw3mmx3ppN6oWUhygEECq0sSDfN4pLu3OiCCeI0LB9WG6ISk5HVifRz3rXg+NRdIipKlTsMBJDtG0fQUzP2taW615F440QxOG8MRDJFMdix8KD7HqKOLXQgqpQJm9ik/PGkxOYKGfwO1+4klq/JObJKX2EUZrDnRNFVPPb+YnJd29dZM8vd+CFEcpZDZYXomUHz6sy8UYFxG7X7lrNgsrYAJLTP/brV9Zf8Nw1WcRy20HLpoKsYfl41bEq3vWaI3ue505F08TZb+Cd/+n/huF04R84CP3TnwJOnLjh9YhjgUeeXMRy28Fk0aRIMrY7StX/3QVThWkSRWOve3SrXm/9xVs/qELzlgItiLDQtPFbn7t8w/NMxoumCAuiGJYbIm+oUBhDxwlRzMSktPJCBGEkvaCouEo6NJwzWmBiepU5SPVHwjaREq/COAJngA7a8Y8VTXzriTF8bbZBflyRLIJk24wzcrG3fGoJJYZ46x0XtpRRV3K6nNxs1Loe/CDCWMlEEAE9P4ahEg+m50Vo2j4MlSOra/AjcoDXFJaGYhMpnUleloxaEVSIbXRdygdkQE5XUmRDkwVBEFHRVs5qKJgaGj1P2hPIwoFvChKcIETRJDL7kZECHr1SJ25cRpMeTXHa9s2aKiJBSGNSuPTbfwCQRHQNnHNa0IVId9ucM5Rl28wLE2sRgYhRJqAid8o9L8IffmUWpq7suDsaL2UwXjThS1EG2VNQFIfCGSJBSI6mKJu5n5NFeCHxltY7Lu4YL6LrBQPtSOKmkZfWr376IrwgTieo1bZDmaIR+RhxxhBQkGYqejBlQVzrUTzRxZU2YpCtQt3ypeGoQo7ujCFrqOBBCFWh+3d8jEj4XTdELAT8MMJKx8Xr7hxFxwtpQ+IGKGc1OH6UJi7EscCT8z4OVDJ4xysO4sOPz8MNIhweySGMYjx6pS5JziRkadukIDVUDl3hCLM6hnMaum40cC2GcgZWOy7WOi5+54tXMZzTMZo3oMvUiNWOi44Twkl/x0BOV3C9YaOme8Td0unaPTXfwrnlDsAEGFhqISIEkNFU3DaahxNEuPdABT/7huMDyrGdkJb+sR+fJ84ZbD/C/z69PLB4VrIkHNmPau7ISB5HRvK4baywL4L3Tov10ZEcGlYwYLR6dllahKgMUUzzw3BOSePSLq934YfE7VI567NwAaIwRhALZDSOk1Ml1G0fHSeZr2JU8wZGCgbqlk8ZovtUBe6HyN7fTj08nMUzyx2cW27j8FCOlKd+hLrl497pEl5+eAinF9tYabtYabv44yfmcWw0jzeenMDTCy184cI6Gj1/IP1CV0ndudBwkDc0uH6Ei6vdgYK2f5EFQEIUaT3EGEPOoOvVnz/7XOKJ9ov47HTtTkwWCS1Wdy4k9vMc79SWS4LO/SDCcsfFUE7HiYniTX0GAMQjI2AKx7OH78LH3/t7+Injd2I/TbrPnl/D355fhR/GWGt7AyhuJacPoFQzw7k0bD6IYszVrTQ/tpIlwdlO9+hWvd6S4s0scjy71hl4NgCasz0Z3bff8aIpwvwwxnDFwMGhLObqFlY6LlY6rnRqokigWFA7xY9E6vwusOkhleAaycLCOCPOWN+/V/MGKhkNcxsWvCDCm+6dxNMLLZyab1KmpE4xQ65PRHRSNBLx0Q99AAyWT8avx3mBDEQFcbtKWR2MUbyPECL9fs6oFbracaFxToaqAFpOAAiGvKFQEcOY/KwYngwBJ9k5h8KJnN+yqQAgNSPAGbVkBRjato9YABs9D0EkkDdU5E1VWiqE6cI5VjQgBO0aRgpGSvBNCr/EPiMShORwlaU8poECDNRGJRl7SAHmbpjutuNY4AOfv5L6lIERQRvyHkVRogwFqgUDKuc77o4KpoqhvI6SqaXqxEvrPQACpqZgQ3KZdJUjpyhY73r4u0s1GedDyMDFtQ5OTpVw2yiZzSYqzCgWeHa1g6GcjnsPSNNRqfBTOGAwmgjCmAq+UJCKsW6RaafKOXH5OD2XTBLzfWlMGoQxmGzztSW3h0cC1+sRaj0PnFE6QH8kzOPXGnjtHSPwgghnFttY67gIZdRUUV4DU7bpfv0zl2B70YBdxcnpMs4stuBHsQw7J3J/MUOcp7IfYaqcoWspr0UYxTi3TC7puspxaCgLlXNcb9ioWx68MMIDB8ro+VEqbMhpHF+8tLGNuzVVzmBuw8JKO4LCCD3yoxiGqqBoqnADun/3TpfwtgemoKp8G9rxXH2edls8l1sOVM4wWc6gafv7Us3th+C97fuKHLWehy9d2kDD8nHPdDHlMLp+BFNV0k0ExR/FVGgxYL3jIm+ouHO8giAWA6HPXiSQ0UgVaegKDplZ+JGgTVcMBFGE73voUBpDdTOqwL3OMykwn55vYbnlwIsIbVWkZUYlq2Mop+PkdBn3Hijhk2dWKFptiw3IUtPBj/6zo1hs2tjoecjqHLqiQFH4gK3MM8ttAMAHvzILzjbNlU9OlVKEhIQo4YARcZJ0EkbiOccT3Qwv6cREEeaDB3Fpjeal28cKmBnK4Vc+deGmnuOtSGosxPa2HKP1CKYGQ1Nxpdbb8xx3a+1tTM7gv/0//wPXyxOY7yFFv28UM/XBR2fRcUJUpF9ZGIt083v3VAnFjJaiVInL/1rHS5NvktHzqNt0ar657fhv1estKd42ev62ZwMguxVHmm7vd7xoirAHDpYxXCljqeVIN29qiVWy1PbpyHxEhTNwMIikvRELRHGMJIJLSKSMiMDSXDEZArD8CM+u9VI+T0ZT8GOvuw0HKxn8xTcWMV40EMYCT11vIRbUekiMRDMaRzlL5qhrHWqfnZwuo2SquLTWgyEPgpRg1LIJJIrEIGXjAnBDmnDzuoYjI1lMVbLI6yqWWg4urXVheZt5eU4YSRmyPAEATdtHx6EA45G8gSPVHBaaNi6tW3CDzsB1vXO8AE1V0oUzryu4UrNwaDiLtY6LoyMF5A0FC00bpxfbZKAo0SXHpyDlJP4nIeUnRyJA3LzVjgdDpXzL/t32lfUuTi+1ABB8HEYCkdjkpUFeF8454lggn90Zzt5Klu95VOjkDC1NQDBVmsR73iYPi9y+GdwghuNFODXfwgOHKjjU9+Ju9Dx4MooleVm7Hk3uOYOUs44fkZXIFlWrAKkcE/7hUE4H50DTClJBhKpwhHGMKNq0WUmK7CAiG5BEqOFHhH5cWG7jynoPBysZjJcMLDcdCE4oqMLJD2+mmkclq+H0QitdJJIxU6U4pktrXXTcAK5PxscvOTSEt9w/mfqhJQuLECJtxTMGDOcMSjFgDMeMfKpgvbzew2Q5i1KWYpWeWenuyN2ibE2BkYIBP4oxXc6i5fgyj5BC3FWF7Rp6fSs+T/2LV85Q8JEnF3ZdPC+vdaFyhn/xsgPgjOH2sTyOVPN7oiV7Eby3LtatPh6K41PA+JnFNoksBG3IihnydQoj2tw0LE96IZJ9h6rE8CJCthLu6UbPw6W1LkyVo+VQy62fT3ZoOAfLEykV4FZUazudZ1JgLjZt1C3y3ctqCryQwtUzmoK8oeIdDx7CNx8fxa986sKehcv/fPw6bC/EaMFA16M2eP9CqTBGIoCMhomimaJsZxfbuCRDqpNsy628SaJmIDUBbtsUoXYrY7+8pM+eX8Pjs3VcWeulfLij1Rze+fDMtufYlAXCqnyO33L/JudtJyS1nNHQ6Pkp8gcgNYROEii8YO+WZoIOFU0f3/ObP4snX/tmXL7/YQDAheoMrtV6A+j3blyt5Dm3vBB5Q5HWItSNSVDc2Q0Lt4/mU5Qq4ch25XUhQRUktSRGxwkw37C33aNb9XpL1orHr9ZlXbCJQnpBiIblgXPa+O53vGiKsLxJHkMXV2mCvG+6jPMrXXRcqmbLGQ3rPR9OQMWVqvCUS1AwNWgKw0bPR8FQEMTEN0oy6tIhSfKmNFVt2T4+c34NV2o95AxS9iy3HACQO3cOBnKgd2SEx20jOaiqgut1Gz/4qsP49rvG8eXLtdRaIKNTMaCrDD1XIktyfSpndaicpe0nQ2O4bbQAReGpmWnD9gePWQy2ADmoDZmXBUgQRWg6PjK6gqKpoZLVkDc19LwAZxc7eGJLXt4VGV/xqmNV/NnXFihuhxFvTFd4yk9LzBN1hSMUcYomDhxb3/BDsrR448mJ9OW9tNaFG8REamcMqgLEISGbyYgh0RhZwO5Eutz6QmY0Qm40haXIjcI5RCzQtIOUCM8YKTqTHXYQxbiw0sHBShaMU/Gx2nZgqApGZMQNAATh5uQuQAibJ5FAJi+CAHGuuGzBthwfh4dzmCxRq+DsUhuGymH5IcKIOI+RIPuRxJ4iEkCt68FyQ0nSj9GWGwvOI5gax2jBhICDnK7gtjHKlUy8tAASmax0XGz0/IEQ6eG8gYdyOtY6Hpq2hx//ltvx6ttGJIeIDUxuYRynyrqcrg5YrDDGdlWw7sbdSq6faZBf22hBx1TFlBMtIb8NK9gz9PpmfJ62Ll6xEFhuOzg2Uti2eDZtag1e3aAFtpTVblm6noz+xboleShp6LWiSQ/CEE8vtHD7aAGKRE6Hcjoalg9f8gI1hfJmE5+0M4ttil/K6al9x5X1Hpo2RZ0lkUJuGGOt46LeoxZ1QgV4PlSBycJb73m0iYrjtL2T0RWylJDH+8RsA0dHczcsXK7WyNR1J8+rMIolYgzcNppLkw/6izgvjLDcsjFWMlOlJb3jgvibAC6uUks3hsCHH78OTeE3fX/3w0u6tuHjg4/OouuSZ2Oy0bha6+Hr1xv4yW+9I32O+1FEQ1VgaqT8TroDOyG3s/UeVjsuhvMGpiqZdJ3o9+vTVT6gaN46CqaKUbuJd/36T2Pm6jkcPfsEfu33PoW1SCWrJTmHHqxk4IUxqQjXuviZbz+Oe6bL6eckz/nMcA6+jK7bbPURT7Zl+5htWHj5zDBmhnP40uV14v7JtXfzWaA/OwF1nNrOdmTqVrzekrXi0moXSy0HmlSKB1GMDRnVNpzTIaQ1yn7Gi6YIW+s4WF0jpdnJqRKGCybu5jx94JLWSsIhSApg4lYLWB4hLJYfQeGAqSrkuh3QxSYEbROliuMYYURE7vWuh3JELaTUdwtAGMeI5e4UjFqOX7/ewj1TJQzndRwfL4BzhoePVjFZMjEvVSuMcWQ0lXYnshWpKeRGbwcRcqYq43F6qPU8jBdNXNvowfYjRFtsNvoAsPTPCcqjcDLaZDzCgaEM7pospj5fRVPHy2cqeHqxneblCWySZI+O5vHRU0tpz71gUAZkxwkQSyI572sf7jaSf2WMJq3Pn1/rUzQRaVhTOPyQ2smJUWz/OQVRnMrZgZ1Jl/0v5NnFNnlhBdReHsoZmG/YpM4LKUuP2tJEpM/rGnp+CAHiiC21SDWZ7KhMTYETxMgnUSB9MnoAMi6GAsK3FqGkuI0RhjFaWeL6nZwqYbmtE09QmryGsYCiMNje5jkxUJFoS/Ie44DCyJ4iiImj6PoxVGm82bB8zAxnB2SKI3kDhsqx2nYwVjS2LXxdN8ADB4fSAmzrtbyy3kNdikPGiiaO9ikA++/HTgrW3bhbyfVLCvpL670BhV+i7LqRtcMttQFLClZapE69UusiI+kFkNcvIepyMIwVDJi6elMk7p2I9+liLXkoW0OvTZXD9gVcP8Ja102tHIoGXUNdJU4e5xyOH6KaNxDFMVbbHmb70gjyhpK2dvO6As6Ahh2k+bK9KIQQAt1bRH52GsnCW8zoWGq5W9o7tPB23BBTFdo4XVrr3rBwiSVatZPnlZBCoIKpoloYLNKTIm6xacPUFKy1XWQ0jq5Ukne9kFq9ehKNBZRMHdc3LHzg85dvmqS/X/NfN4hIdBORj17OIFPmRs/Hb3zmEn7ne+/H2+6fwqW1LoZyOsZLJkbyBpwgxtnFNhYbNjK6OoAeJt2ciaKJ5ZaDCyttmCrD+ZVuWuArjFq3YSTwkScXMFXJ7Hh+M8vX8Mu/+kMo11ZgFcr4k5/6TfhGBrN96HdOV0mE5IQIoxiLLQc//cgZ/OrbT+KkLMSS5zxbUlMlbH8BLQTRhmZ0NUWpSL0v1fRCbGsrJn/f88Id361b8Xq7e6qEn37DcfzMI2ew0HTgy7WFMyZTRBQ0evv39nvRFGFPL7RgZPMIohjLHQdZg1ypX5KtoOMGOLvUQRgTH8fQFOQ0BZrKEYQRar0AjIEKINDClijEEqhala1ALh+WrhcilArAZALI6go500seUUImV6R8nzEKxn56sYXX3TGa9qNVlePfftNR/PInzmO946GY0cBlSHEUI4Xs/UikkTxFU8VCw06d9DsOPazxrldokPNm++TJVclRSG9OVwYczZMWxfGxAjYsHzmTisKUJDtC7azllpP23O8YK2Ct48INaCJUFLajOWtyLADVAwybqNPjs3Vc2+jh2GgBt4/lkZffGwWysEts0/uGpnDM1S3Z6o3QkVFDOWNwIk9eyGsbPfznz13G3IaFuyaL4Jy8w5683pSCDPoeU+Momlqardh2A9heSJ5rjLhTSXvuzEILYyVzUyBhEsmfMfLX6jC6j+hrRQKbbVrOGaJIoOZ4OLPUxnjRRFMGsCuy/SZigTCmoi7J7UzulReSG7uqMfm51N7teWGqOt1qgAlQXupkKYOsrtwUbN8/ue2VuQhskmBLGW1X7taYMOjaqRx5XUXBVLDYdGQRL1JrkNRQWWyq4/YaN9MGZKBWqACjNrQfpZFKwCaJO6MRQmfoyk15Nu2mknvo8BAMjThgW73dGGOpsAcg/tQdowV07ACrXQqkr2R1qArNPaZOrWYGoOc2sdp2sdbxMFIwUOuSBYjKGWLGULd8mRhCVi4JGv9rn3kW73nDnc+LPUOy8BoZvqNlSsLBUhiDFRBv9UaE6lJGw0jRwHzdxrHRPCoHqd0aRLRJOrPYIouNHVpGyYbg7S+ZxtmlNp6eb6FpB2iF0gxWo7nA9iMYmoLbxwqoZLWb8uRKxr7MfwUQRtQ67jdV1lUFQ3kdLdvHhx6dQymjwQviTd4pgLzCKalhqY2G7eMlB6jYblj+QGEaC7IdeXy2AYUzlLMaopie9Yyh4u6JIuqWv/P5ffrT4N/zPSh3u1gdP4hf/r/+E9iR2xA6QZ+vHB8QoWV1BW4QYbHp4Ff/5gL+9SsPY7xkoiXFZYmVy7YCGgLFjIof7FPSckZioEh2V2QUcpqkwTl5Yy41XfzSJ8/vqkC9WVT35HQZ73/7Sfzqpy+iIRMarjdsaApH2wlScdt+xoumCFMYQ05XEAug3vPh+u1UgcgY7aqLpgYvjFEwyRHaDSKJXAkwAcSCsuxMVUHBVGXRliTMx8joKjSZ3eeHESBRmVhQAUY5cQwZjZRGsdjMYBSRSK0bomh7qfTm+6YAAL//91ex3HZl9c2QNziOjRQwUjRSMjhjpAqcLGeQNRRcq1nwAlJE7jWShV/htEAfquZgKByPXq3jet2GAAYsBBqWn8bVCCFwbLSQchIev1aHrnKYKk8X71JWx8GhrCSXQkbLbMZD7dSKFLLgiWP6365LiqZjowUcqebx0kMVfPHZWvrzWy+doTAUDAVLLRcNax0CZI5ZzGj448eu4xVHqxgvmQM7oGOjBfxf33QUH/j8ZVytWcjqKlbaTurODlAblQKY6WUzNAW5KEIcK3jd8VG8+rYRPHy0ClXlmN2w8PkLa7i83qM8O5VyDb2QJo1iUcVqh0FVgSgSaVuScyqWEkHFwWoOG10PhIBQ+7nthnIzwOEGMfm4ZVTatQex3PVSIRrI+0RtS1ps8oYKL/BhBxFUxgYQw4Sgev/BSlpM7he279913j6Wx91TRZxb6uCYqW5bbPayNrjvQBmfv7CGZ9e60Di14jP6JscnjgVyhpqigU4QoZTVkDcU/NWpZdw9ubsh543G1jbgZpuGskjDOAbrsRRRpQJJ2RYtth/Ppr1UcotNB5WshstrPYRRPBBPRuKQGONFA7rKqT3sBpgoZ5BxVKx3XERS7JFs0BLk7p7pMs4stdC0PVheCD+KkDc1zAxn8OxqD54UawjBYOqqfFYiNHq7LMi3MBI0KIqxpfVHI7HHSVTRt4/l90Wofsv9k/idL1xJ719O8r6WW0QPmCiZ243psLkhuO9AGW+5byq1EfnUuRV8bbYJzmh+33otb4Wkvx/zX0+PUzSo31QZABROwp3zKx3kDXXXFm0lq2O+YSMUYgCtTebyJBfYTRNaooGM3aGcDl1Vtp/f7/4u8O/+HU3O/+yfoflf/hAjs9YA+j1aNBCEApYfDhSRhkZ5xxdWu3jvJ57BdDkLXaUCsW55ODldHvDK9MMIK20XL5sZwutPjKfnd/tYHqWshp58B4OIcmQTiyWAujpfulSDF8Z7KlBvdtwzXcZ73nAnHnlqEWck3xkgzutUTscT+/ycF00RljfJfDQIY1mZh3h2rYvbRokYHEojsGpex30Hyuh5EZaaNp5Z6UiFHkfJ1NCVkS6RIKsAMk1NpPGKJEBHaVWeFBlhLNIWJ7XNdj5OxgBNVTDfsLe90G++bwpvvHsCj17dwFrHxefOr2Gj52G8TAhLMvoXz7feP4n//NlLuFLrIYh2+dIto5jRYAfkQzNeNBCJGH7IMJzfbEdpCkPRJJ+zWAjMVLPwo3jAuM4LY1TzOu6aLKHlkFIsb2qo5qnw9YIIlh8Repi4X2+5FrEkGgtAiiQifPirczg4lMXJ6TJ++DVH8cxyB1dl3mf/FCRALd6VDvXqex79O5H8VfzNuVV8/MwKxksmhrYQRpOW2h986SoevVyHE0YU0cOJCxgLoOkEGGIMhqbADcJUtn96sY1n13r4u0s13HegjE+eWUHeUEnm75O/mx1HyBsq7hjLp9YQkPwyFpHyVWEMnIl0ITIUjqMjBTRtDz/06sMoZjT8z8fmcGm1i5yh4vJ6D+UM2XkADI7vpa1ThQE+AD8WaQFJpFdOnDcAnmyf7+RVdfdUCXdPlvYF2++E6FQkX/Fm0LRzS+302imMWu1BKOBYPnKGitGCkVonRHE4sHDoCn9OyjVgE6XxVDKqdYIQukrFa1YDWjbZeiy3bAznDalCFMhog7w3YG/Ppv2o5LLlDCo5DYstB25AKEy//9rxiRI0zlDMuPg3r5rB8fEiwjjGez56DllNSX3M+hdpU1Nw+2gBP/TqwyhnCVX571+ehSq5Y1mdri8RnsmqRlU4xks7e2zdykjQoDMLLRRNim5K5lHGpcFtVkfHCTBTpRD1hw4PYfEGhOrd+D4vmxlCXXJzd2pf9W8IEpT0yEgeM9UcVtrPYKxowJCbcLbP+7vXuJH57+/9/TXULR85Y/t7FsUCmkpFlB2QGfFOI0EMu46P9Z6/zVYhQePdgFIrbhvNUxoCI2ujjhNQFmf/+QkBPPUUFWDvfCfw+7+PO3Udv3BCDKDfBVPBhZXetiLS8UPYfgRTJZ7wcJ7i4RqWj1rXw5nFFo6OFJDRyZOzaQeYLGfw9pdMD8wTyUb8S5c2pFm2mnZ0/DBCGJE5uRfGN+2Mv9/7l3RPfvtzlzFbtyiL1bX3/RkvmiJMUzgypo56j+TwsQA6ro2W5QOMWhdFU8NMNS/bTwxnbR9xTJyKOKb22VBOT/Pr2g4tumNFA65EGbpumOb6aZyRJxiHDMQlVCzu88VSGLWPErVjRvKDltvujqobVeX4pjtGAdBu4jc+8yyu1CyonINzQmgyuoIj1Rze9gChZ4wzmCpHGEU7ok39w1CpLSQEOTLPbljQOAfnbNvGMUyUowpF4MzV7W3GdbWej4bl4/tfcQjjpQxyhoI/eXweZxZbyJsqzi11wBnFz4SxGLQD2YWs/8xyB+/+06fwk996B77z5CSGcjqu1awBRaQijWP7686krRlEAtc2bGQ1suHwwxhlU9u2MzoxUaTPZICpUmGT1VX0/CTjkmwhjCBEww7AGMOh4SwOD+fgBDHOLLTw+QtryBsqTk6X03ZWEMYUBdLxcGQkj9fcXsX/76+fSd3xYwCIBAKINEg+oympL9Nah4xX7z1QhqZwfODzl7HcclIkgYkYbhihnFEB2X6IkbR2BfKGIicpMgUxVI68qcJQOTpugLWuh6ym4J6pEt7+kk1C+Y1ad1vNR9Ndpxfi2kYPEMBYwUBrH9YN/YVJP2ckiOjaXZME8lffVpWS8HgACY5icUuLYv8oyGtyab2LnkfPZ8+L0sVbVRjCSGCp5YC6vQIVU8cd44VtvLe9PJv2o5Jr2D6+/6EZfOALl7HYdKT9BE+LzqQldu90Gd9+10SaBnFyuoSzi21MVTK7FhwJny+OBf7uUk0qvyh/cfN3qOAbzhkYyRuYq9vP6domox8NakjT6v65Uk/FATRnv+9vLqZ+bJkb2IDsxvdJzG1vZkNQymgoZzVkNPWWveV2G7sdJwB85pk1XK31EEQxdHUQAbV9og6UMlq6wdvp2BRGIetrXQ9dd6utAn1OKauBu0x6SMZpKkdCZyDlfh/PkjHg934PeO1rgX/1r9INRzJHzAzn8PW5Bh6/Wt8BvY3RcugeV7IaLD9O1euJ/Q3ZJW3e23umSnjoyDCiWOBarTcQG/XDrzmK9Y6HaxvWQJ6pwjmmKya4fIduxhn/ZkbSPfm3sntypWZhWPs/xPxdBoOpqbAShEBsmo2qCW9GrvxdL0THDmT7SoBzUjvq0osobxAvYLqSwbtfewyPnFrCSttBJaMhZ6g4s9jGaocM2xQp82YAIgwWGgAkkZ/4EIWMhjgWsAPiLu02+lGCMBJo2n7Kr9IVjulyFkIIfPTUElp2gNtHC3hqobUtl3HryOpK2k+PpJJuKK8jlmaz/e3IjhOCgZy1F5r2jsZ1fkgqlydmm/j5N47TpPuSaSy1nNThuOP4UBU2kM25G3ctqyuo5PSUlLrWdnG1ZkFTCfJRFcLD3CAa4JopjI6HMfJyCaIYscpQzhhUODOkuXrJzuiz59fw1St1xEKgYG7GEUVC0OfHFOXUA81BGY2jYVFu4pFqHmMlE5fXe+Ag/yayleBpC5wzjiu1Hh48PETxV0kB1jcENhWeQRTB8dnAZJ/spD/y5AI+c35NBi4ryOn07xTbI2QMF939huVD4YmUmxSLI9KEc7ntpupMccOSffNZfOSpRVxe6+LyWg92EGG8aKCaNxA4Ma5tUJSO5UdoWD4ePEJE/v4Mvq1jp8KkP4B7opzBatdDfRcV5F6L4n4z5maGcxgtGPj6XCN9t/rwZgA0d2R1Bf/2mw7jixdquN6wUc4O8t5u5D22X/fuiXIGv/r2k3j/py6iYfkYL2VQzetwgxhX1nvbCoibleHvpvxK0gtMVcHhKm0wbiXTcq8g7DeenMBvfKYDsCR5Q0DlHHGMtEU7Xcmmx7/cohbtOx48tI1O0D922jjciiruVn2l9jt22+C88+EZfP16A42ej6E8JR+EkttGqnDg5FQJjLFdkxpWOy5edmiIvDHbHioy3aX/vt4+VsDVWg9LTRfPrna2UE9i1LoehpvrKPzcnwG/99uUAanrwDvesev5vPX+KZxeaMEOyMg8a6iIBWRWKVDJ6oghc0j71Ov9aH85q2O17eDxaw388RPXd+Rz3T1Vws+/6QQ+8uQCzi514PiECp6cKuGe6RL+PFHp7zBuFcHcafQ/V+evr+37915URViyexACqGRUxILh+EQBpYyOIIzwtbkmnl5o4eUzQ1jvurD8TeRIV8js1A0ieGGEgkEFxuHhLL71rnFMD2UH1GC2lKgKEPISxVGqBOSMOA6yA0XxRxqXcTEcnSCAofCBRad/9KMEBypZtJ1O6q6ucnLyPrfcws997CzCWOBoNQ83jKCr1FJITqp/id1UgxLHReEM1bwBAYG8oaFoqtsczSs5Lf0d24uQNQYh+jDeuX3RXzg8ca2BtQ4pRxNV425LfwI36yoVYk3bxx89dh1eEGEkZ6DpBNJ+Ads+RJWhw2kupaDimoKhY7RsUj4WTBWX17q4ttHDx88swwtjjBaoaAoiKr4kpgbG6GA5Ayo5HUVTGzAWPDCUBQCsdV30ZqlgTQQNh6t5lKTp4J987fqAanbr+VOLW+Brs01MlAy84ujIwGSf7KRfcWQYH3x0DvUe7XjDOE7VuoBIi1yFkeIyFki9eCw/RNgWA+aX55Y6WG7trfoajAzRAAYUDBVNO8BT8016XgUFeetSMn55rQfLi3D7WGHXFsCNCpO9VJt7LYo3kzHHOcPBYZLVD7TJ++5RLASWWy68IMY7H57Br376Ik4vtAYUajfyHltqOeQZ6IV7ChcKpoojI3m85zvuTM/het3es4C42YJjJ+WXqnAM5wwcruZQlojbrWRa7na941jg6YUWRgsm7pkqIQhj+LGAxoDLNQu1rgeVszRXt7+V9MRsAz//xjtvupV0s6q4W/WV2jpuJmQaIN7RT37rHfiNzzyLlk2b8iCKUxV/LEjB+s13jmKptbtf2L959WGstFy89xPPwAmIx5yYax+u5lDJ6bC9EIsNyhQdzht98WERHqxfw3/641/AUKcBMVoG++Vf3vM8zy218bFTS3IjLFC3fWlOrqJgUqclq1N6zHDOQF5X0nxhhZM3WTmrQ+EMjzy1dMNEgd3u51zdwsf6VPpbx3NBMHcayXGcnavgL39sf7/zoirCgkhINRnZAYwWDByoJJJ8Mka9Uutiue1grm4jBrWhqFACIiCN3fGCGIpEVc6vdAYegs+eJxJ2ziDOWILKxIKKl6zBYXkRBYFrKop95NSOS744QzmyOCjVtIEXNY4Fvny5hlPzLVSyKmbrFrwwSoOnvZBQHi+M8exaV6owI0yWssgbFOMQCVqIo1ik+X6awpHVVdwzVYKhcmgqBxNk3Jo1FCw0HBwboby4RKWW0xR88VIthYAHlU03bl8wUIszyXtM1tEwGlRxsuSzGUmmE6UpB9K4JkXhslUcwA3ibb+vSLPPRA1EfLEY611CK0/Nt+gzpRzz8+fXsNJ2YWpcuiDTxJWcK2NEh6AWJ6laTY0inxJjwet1C25IULvKKFYoKdIsr42jI3lEIsazqzZFP6kccUx8w62KUc7o2RBC4J7p7fwFzhm+7e4JTJYz+OlHzsCRu89eQJw7gzH4Es2JQejsSN7A0ZEcBTR3PLz2jhHJJ9sfZ2Irl6lh+YhjIGeSR9Fy2wEDMFnKAIxyQlkQY6JkorGb2kqOG8r396HafMv9kwOTcs8L8TtfuLLvUOA4Fji33Nlxc5BuWkA+bh95chF3jBdge4T2rXRcGCrHZCmD+w9W9vQec/0Iy20H8w0b9x8oY6jPU26ngvJmC4ib/fmtyq/+gnInxG23sd9Inn7Us/9edxx6l0syL7Zfuft8tJJu1uvsVhC0rdfjZkKmk/Hm+6ZwuJrDf/7cJXxjrgkmRWYUsE0WE588s4I3npzAqfkmnphtYK1NWboZfdMv7G33T+HbTozj69cbmCya0DWFxCOMFP1NO0DBVJEzEmEabca/8+oTeM+f/jJ038PC1FGIt30vDt7gPJP7fqCSxUhex1MLLdgyU3m6bOKSH0rUXsVwjv59qzfZcsvG1+aa+0oUSFqTW+/n84Vg7lY87/b3h6v7f65eNEWY7YdQWZhW2rrKMVMd9EQiw9EQ33FyAn99agmmziknSlXQcgjd6ifUD+VIndbvETMznMPZpTbCWKQIiuVF6HmBRMQo8sJQideQN2iCSRQppE4J0XYDfOjR6wMvKgA88tQiTs03cWXdgqESKblokurECyM0LXLJTnx/Om6IWteH65NbeiQRECLpi7RA0VWOat5IVUNCCNmbB3o+x0rbxWLLwXBOx22jBTAwXN2wcGQkR6Z/GxbcfbYvkpe03vPg+KTIyeR0tCVPQJUFQ88jj5kkMiWUx+yFPpo2FZKMM+QVlTIQMxqqeQO2H2FDmj8mO8YwiiFipAkDyUiKHctPEE4NkRD45LlVhGFMcHXbTa1JksU4+T0BgAmBMCKY3cgTdyyjKdjoeUgY97o0ySRBg4aOG+Diagd3TRQlfE7kUSL5U1s8QUoBQsIYqL343750DUdH8ilXqn/kDBVDOR2jBfKGY4wc3uu9AFlNQSgEIskvKZoqylktDVHveRGKmX7Dw70Xuq0tQ00Z9D9LrlUgFW8Jv0RXFUyU1D0X0JnhHI6N5HddMPpVmx99anFbG+K+g+VUzekFZIxctyhT8eR0+YYTenJ+6x1PKshos8JSawi5MZMF9jPLHXTdEIerpN5LUIisruAt908OoD6fPb+KDz46B8sPMTOUI0pBHONKzcITsw2cnC5hvJTZE2W52QKi/+f3g8b0K7+urPcwdwPEbeu4mUie3VDPxLE+YyjkTxgONuszGsf1eoCnrhPiul/X/ucybsVXCth/Qbrr906WcGgoh/Wut+P7cGW9hy9cWEccx1hpufBCmosLJvkzJt/zxpMTKRVkrMCx1HLQcQJYfohyRsNo0cRdE0USwQQRvv1v/wRv/vMPgAuBi/c9jPd9/y/iJ0Ymdy3C+u/70ZEceh51hGaGcljr2GjaIa6s96ApJDw6UMngeqOfS0yGx1Ek8OHH5+H4EaYr2Vvmc+2IYEq7l9W2i6G8jrf2pQrsdu92Kp7vO1DG0wutHYvqg4X9P4cvmiKs3vMhPCIkK6AFfXbDAgNLSbSONOIbKxrQVQV3jZdwfoXMERkoEkZh1GZjAI6OFnBoODswoczVrRRBCZNVGySj5/KF8cIY40VS5LlBhKlKFgoHWjaF6zIwHBvJpxPx2cU2Lqx0yDMmFqhkDeQMl4wVQ5IwqwrxjhJflkhQv9v2qZBxwwh5hctdToScocD2QhgZFV5E5zdWNChOyAtxtdZFrUv+QQcqOYwUTFxZ66Ju+fj69QYOD+fSHX4Yx/jJvzyN1babwru7tS/6X9KxkomllguVM3RcgqKTcPScpsDQyHbBC7ezk+IELYoFui7lXTpBhHJGR0bnUBmQMOoS0YN/A4pTGFPe5liRzCxJtUi/JEDXfutHcEhPGiFgeyFs6YMj5DOWiC5sP0JWZ5u8slhAMOC28TyenG9KB36WKkGTSSEpaDSFfrdgqFhsOnj/py7iPd9x50DwcdcljzI/FCjkFfpfkziGkUhyLgUheGGExRYVCUkftJ/Umoy9OBNbF8+CqaZGoYayWczFsYDgCTKqSyNW7MnFOL/SQd3ysNJyMbdBJsXlrIbJUga29BFKhSdJaUQgJuo9D3/2tfk03y9TUlDrulhoOsjq1Cod6iPOb53QkzbGU9ebNCdoCoIoTHNPIe958mwwBvldZorkjJdMjBUNXFnvpVYZ51c6KXev44TQFYbFpiNVsGS27AQRLqx04AY3Fi7cSmzQzaAx/cqvS2tdAJsRTDca+43kmatbg6inoaTiFT+K04igft4QADQtHxdXO2g5Af7osev469PLzzmZYL/jZgvg/lSAsZIphWGk2tvKQ93tHs7VLVyp9XB4OL8NGSavOAVfvrIBgFT440UTkaA1xfVj3DVJXl+nF9p49+uO4Tf+9ll88VKNbHcEoCgcTiEiK48gRkkF3vyHv4qXf+6jAIDHvv3/gz//3p9A7Md7tu6S+57VVZxaaElqTigtSKjjEgN4+32TuLxu4cxiG6H0QIsE0HEp7/GuySLmGzYadoDbRne+1vvlc/UjmE/Pt7DcdmjDq1C6zUdPLYExtuNzs1vx/MS1Oj5xehkjBYNUnFuK6h98+diex9Q/XjRFGLWN6GHLqBxZXRkIBS1ntRSavH2sAEPjMDRyXL641kHHdZM9MEyVkKMhSbDun1C6bggOIKspWO24iPqQF84YdIVBALhtNI8fes2RdLfec6klYaoKRYnIlkTeVHFMz+EL0gvrtXeMgDGGpZaGWteDwijGpdlnrBjGgvLSpJovieuw/BC3jxWwIvMzOeeYqmRwcCgLAWrtzW1YafxDNa9jppqDF0bQFY6XHx5C1wsxW6Odx8982x344qUaPn5mGbpCCko/ipE1FAzndFhegMWWjclSJt3JX6v1cGW9h/GiieW2g44bIJLInapQWLgfkd8TkxPSjejhYRRjKKujLR2mex5H2Cd+4IyufT/xf7chQIjQSw7mUOs2YXlhqoj1oyj9zAGOkORmBDEVAFYSDSMNYY+NFrAhjTYTPl01T75OJ6fL+MSZFdheCF0lhZOIyWQw6oNdGSODxqyhQiBM23mJ+CJZVCOJEgVRlJpf2iGlNyTPIOcidZyfb9qIpfO/lhROQgwshIY6yJnY5DLZiGTxWciQICNxurZ9is4iBJHiXgxNIaNQxuB44a5cjP6J767JElbaDpq2j9W2h6YV4FXHqnjXa44A2BLFotPG4vHZBvwwxoOHh9IFS1c4DIUjiuPUYHUni4HTCy18+PHruLJOYoK1jkvFKUNKKUjvibwvjAEZnQ+o1+ie9ef/reKRp5aw3CKeVU4nlDqQ8VjDOQOcK2mk1zcfH8Xr7xrbsbi61bbWjguKF+Lrcw2cX+7gBx+ewetPjA983/mVzsB36SrDaNHEq45V9xRW7Fds0HVD3DNVwrHRPJ64VkcQxei69OxyRlQKL4xxoJJNfdealo+ziy20nQAjRRPHxwtwpTv8c/F9eqFGEjLdsn0stdwBs+vD1fwNEZ04Fri42kHd8pE3VAzsBgBAUIyWG0TIaBw5k2xqOJBSI+bqNm4fzePyehdPXKvj/EoHABn5miony52ej3rPRxAKvElt4r4v/w1izvHJd/4UHv2O78XSPriAXTdEo+ej6ZDS1Qup86IqDFEUwwdROp6ab+Nb7hzD+ZUOYsHQ84g+UTA0jJdMqArHWJEi02o9FzlDS/OJEwTwZvhcd0+VKF1jtYuhrD4gatmLjrAjmmsoab5oGNMcz7ZwFf/36ZV9Px8vmiIsZygYrmTRtAlxsf0QOUOF5YV4drWL4bye7q6PVPsMAUfzuH20gI4dIqNz6UsUpTt6SLPEuuXj/EoHOZl31rB8+OGmxQBArYtkEb5nuoST0+XUeynxVRkvmgADGj0vfeB6frSlZaShmjOw1HQQSI5T4EdgkIiJwpE3yAyvmtdxaDiH2Y0eVtpeStS8/2AFDx8bRjVvpB5CAGB5EVq2j9/67CW0nQBPXW9tmzSOjRZwrdbDj/zJk3h6sQ0vjAmpyGhwg0jm/3lkd5HVcKRKL20ymVyrWeg4FMGTdBg4Iy5AIliI0v+68Qhj8rgayeloOQHCKIbCGMp5sspou8GA0eqNhhuEWOt6yMmEg0BKrBNUMSHjC8mv4vI/ZPgA2D7ZlRgqxx3jBUxXcjg0lE0Lm4Rv13IDHB8v4KWHhvClSzVp7ssgGF2HpKvHGZmxFqS6SOEc46UMTs038exaZ8AOwvZCLDRsXFm3oKsU7m37Ydo+i6XqTGEUUu8HMUIhUFRU5A1lIDsuceo+UMmk7vNbC4CVtoOFPi5T6nRd68LywrRw6Td+3IuLsdPEN1k2Bwwbh3I6jo8VdgxyFiC0L4oFLq138WBWB5MoiqpwcAa0nRBdNxwQviSBzf32GqbKMVu34AaDxPwk2SAWmwrnoZyx42KQ0RWstiN84syKLH5MrHVcOAFZ2WR0BUEYo+uFqOZ1VHI6al0f55Y7eNdrjuxYgN1KW2un65rc67YdYM638d5PnMdj1+pp8PnW73K1CFfWujiz2MYXLq7j8HAO9x0s71j83ZDT17eAJqa8nzi9DMen+c2UwqdkY5HYg2Q0jourHbSdAKWshtvHCjTfSXf45+r79EKM0wstzG5YUBW2zeza8to4MVncNSQ7ed/OyPih9Q49/0eqm/FfXS9Eyw6gK1RMDXJz6TvbToBQij/+9Alq840XTTC2iS6aGsdKy0Wt6+Gr46PI/ej7oOsKnrrnVVjZJxcwZyhoOj4c+e5HAlDlJliRannGyKH/7GILU6UMqgUDLcvHqnwvrqz3oEghRiwETi+0CUGTIEMxo+LwcA51aV+zH4FIHAt89KlFtJ0A05UMdFWh77gBHWEnNLfrhei69Jx2tswlm/mlzRseUzJeNEVYXu4OihkNlhemrvhxDGxYHmaqWbz9gen0JvT3kQsmOeELAThhlO7oExfthuXD8SP8f//6HDgY2q6PIJKEcAaIZOGW5q0KB5mcSsTjyEg+9R67uNZBr28nmNEV4nJFpPoLIkK95hu2PCYl9dARoEKvYPKUXzQjWwdJ5iGXW/cgivH3l2po2sG23XTD8jFXt3edNKYrGcxuWLjO6DtH8hrckGwyvIBQM1JPGrhrooBrNQs/88gZjEme0pIMMe9/l0lAMIj8bCWn7zUUzlG3A3hBhEgAusqQ1TUcn6BA469c3kBnnzLkMAYurnaQldYNAkSKZ4CE7ql1RJYmmxtTDqBkqpLLAowUDDiyIGOMpaTihMNxcrqMI9U8fvg1R7DedXGtZtH3R5uB5hz0DFQyOnTp4zWc0zGc03B+uY2hnD4QVVLIaLj/QBmPX6unJsR+GEHjnPIw6QhgB/T/g0hapEDga3MNOF6EIKYAYDCkVhe/84UreOPJCXwyLSaoADA1jjOLbclloiB3XSGl750TRWlmTHydrKGi54Z7qsl2mvgYY3KS02BqKq7Uenj06sa2n2taPs6vtIlbCHrHHp+r4/hYEZWshmJGRb3ngcvnPxlCCCw1LXTcEG4Q4fBIDn4Y4cJKlzJh2eB+IAbApLiFrGeYXNC2L06OHyEGsNJ2MVHKIJabDC8k2gADRZ4lRq8ALYbLbQfXNnrgUq1cMFUcrGT3zbO60XVtSud0V6LcOZ0Kpm/MNbHccvFjrzuGj55aSr+raQc4v9yBF0YoZ2kObdnBrsVfvwnrZlzXJmrRX4Qn6siRAkVTddyQhEuc4cBwFkFESRAt28d1J0BLImC3jxX2bCs/HwHjz3XEscBXLm8gEgIFTU3R5n5u6JX1HqbK5rYifqAILproOAHqPQ/1ngfbi9LEF1+Khqp5PUVn+lMHkuinnhvACQkwKGa0gQIMAO6eewaHBcMTI8cwlNPxlROvoLXB8ffNBUyGHwm4YZQK2sA2zcoVzjFS0LHcdiFAG//5pjPg4h/GAutdD7YfpghzTiKhta6H9Y6H4xOFfQlEAOCz51fxmfNr8MMYax1vAFQYyuk7Pje7chVD4iqahgJLZin3j4yuwA/2CggcHC+aIkxIgjRNqgy3jebJlK5uoWkHWOt4+OMnruPx2Xq6s0uVMGu91NB1vGTisMxeO7fUhhOEkrcUSfuCzQk7YYRpXLan4hiaymBqCs4ttQdu+GrbxWrbTT2pojhG2wnRsH15/ATp2n6I9a4HN4wwnDfIVNUJyHuFgRzFA0IvkgLs3FILbTvASMHE/QfKmK3b+OKz62CgHehMNbcZkdKwUw7RbpPGhZUOwohI67qioGETSuHLJAHGBPIyl/D8ahddN0DLoYSCRNmQIEk7DUUWd2yPnxm4t6AwdEPGJHXcEJWMBssPcW6pjbGiCWsfOYLJYNj83lAIFAwVh4ayeHqxBS/YdPaPxeax0jlRgTteymKsSP5jhiZjm4omQkETYdMJMFnK4K1SvRfFAj/wyhk8drWOc8sdbFgeah26x0VpxhgLDLT06lYAL4oxXtq++A/lDdx7oIILK204QQw/EtAUMnwN4xi+5NipCgkIGKgNUOv6EIKUp7HAgBHo5bUufv/vryGrKwMFwFQli4xGuaJJkLupK7j3QCXlbCXI2XrXuyG5u3/iS8yP+41YkzZWresNTJBJUWH5IXGspB1JywpwbokoB0eqeXTsgEjHUiTj+BGu1rpo2gF6bghN4TI0mXDNYkaD40dgUYy+PQIYIIUNBnpegKbt72qIOlnKYK3jSvdv8rpr2QE0hch49JyTYMKLYlSyOhw/xG9/7jJazuYmaTRv4NqGdUtE5YEFRQhc2+ih51OoseVFZFkCoO34iIXAh746h7UOFY7AZi5m4gOY1UmIMlkmdd4jTy6mxV/Srq5kdSy3HVxa60JTFGgqObNndAXTlWz6fCRq77GiibGCga5c2JJ7bnlR6htV63r4o8eu4/g4IWBbx/Pp+/R8jLm6hfWuh+Gcjp4Xyiidzc1FVldQ73l44GBlANHZCbk8MpKHLQVElh/iaq2H47yAZanEPVDJYq3rUnh7n19jktbSdAIMZXWyNVEHr93rnvocfuov3o9eJo/v+Te/jW+58068dGbopjmHlkfZqbXQJcBBcl0B4k0yBmQ0BoVxcEb2P1+bayIWYuCYNU6taAaGao42Xx2X1JOGbJ+OFUycmCje8JjOLbXxwUfn0HFCVLIaNIUPgAp3T5VSu6D+52Y3NFdTeUrnUHgfjUMOx4+ga9ufzd3Gi6YI2+j5yMJDRiMY0glizG5YtGhoHIeGs1A539E1fa5u4emFFh55chFuEMEPQ1xZt9BxA3DG0uIroymIBBVByaC2Gk0ohGpp8IIItsylBOiF++pVakcJAXhBhK5MfTcUQjAiIRBFwOW1LoUDSxUdY9SCOTScxWjBxPnVLrwgwkTJRNFU8Y25Btp2gFJGw0TJxOnFNhYlL4Ux4OxSG1ldwVDe2Ax7tfxdJw1NYWjaIYazOtwwhuWRG7vKN+Nxglig6ZBdQRhFiAQjbypBpqHpJ+5SZMUSbWIQuEHc5eZ1jgSqJVJGci+Cwjk0xrBheVjruPvtbKajnNFw91QJC01btkFCVLLkTRZHZKYLIFX7xUKgnNFw38EySiaRTN3Awnc/MI0vPlvDN6430nyzvKliOGvgv3352gASeXQkh3e9+gjGS8SX+8DnL2OpSb49W93RTy+0YKgKRvrsDPpHovS9/1AZH31qSUq/Ac+l41Y52VSIOIauqTg4nMWG5aOc0XHnRAG6jGYBIJ9ThoWmjZccLO9Y9D04Q2aQP/Cqwzg+XhiYtG9GTZZMfKttF6sdZ8C1u2AqKGV0hDHtRBMOXd5QcG2jBzeMUMlqVFwF1J43dYoom92wcP+BEobyOoYABFGEOemw3fOIfO8FMUoZUqlaXghVYXD9WH4OhXIXTRVghGjfM1XCaMEgGoKh7mqV8aaTE/jjJ66nk/nBoRzWOh78SEDnm5s1J4iQMVQUDBXXGzZJ3Yfzacvx/EoHK20X1YKB/A5Tt6lxtHZRC/YvKAIC9R6h1kK2eMApAL7thPCDGOfiNnRVwWQ5i64bpsHhSdxYxw3gBHRMCmf42/OreOjIEKYkWvf0fAuzdQtBGMtjEAhCYMP3URE63nhyAgDwS588n6q9c7qCpayGI9U8hvue6/6UiANDWfz16WW4QYz8DkXY8+379FxH1yVe1O2jBZxf6WwzvLa8EJwzPHxseOCd2AkR7g+1blg+1jouShkNLzs0hHrVw3LLxeHhHCwvSvMmFU7Fsq6QXcqrjlVxdpkoJBmdYkW+77N/hHd+5kMAgLMHT6CXL2GsaN4SkpiTNBhdVSBkhyZpFWiSD02G1zTnvfzwMB671pBrA0X9hVJsBTCUsir8CLh7Ki+9GuMUQW7Y/g0Rz6SYtfwQOZk5u1WlPrfRw22jhW3PzW4K7YKhomAqWGm5mKxkBn4n2XjdfhPX7p/Gk/oPMGIArh/B9iNUczqu1y3YPoUfD+cMlDMawNiOsH6SH6Zwht//+6u4vN6jl4exlBRiagq9RIKBMyIjyrkNnJECMysncjAi7ic377PnV/HZC+uIBO1K2w7tGAwZCc8YgyqNSlsOWV3o0kg2ifYYzps4MJxDxlBxZqGFlhOibnXRdAgBmyiZuN6w4fibuwmCgkM8vdDCfQcrMjCVwl7vqZZwvW5vmzRsL5KO+uTanLTi4nizUGPShkMIilbqupS76Ev3dsjdEYfYseVIOwsBf/80LhRMlUxNwyjlb3khtXV3EP3tOXSV49BwDkN5UskuNm0cquYQC1JPMg5U8wZ6HpHPPSki8ELyUTpSpew1QyPvNccPMZTVcbRKyqaeG+C0tP+glkwWtZ6HJ641cHm9h5/59uN4w90TmCpn9nRHNzUFzh6Lkakr+J6XHoAfxvjy5Q00pEWDqRE/Ko4FxW0hghdQyzKIpX1FRkPD8jEr+WFuEMH2QlytWYgEPb/9JNmMVP9OlTPbJsWbUZPNDOdQyWr40qWNgXa47UdYaDqY3bBRymj4uGyLNiwfh6u5tEjww00bGDCgZQUyIsrBk/MCQzkd73x4BreNEgXgjx+7DoWTMvjJ6y1EQooXZDs8KbZj+fempkJVgLZN12Sj56OS1fB9D83g8dn6jv5RJyaKeHy2nnoVTVcymG8YWO96iCQRX1c5RgqGRFzbUDnD3RNFMOnbljMUjBYNXG/YuLDSwcNHh1NPN4Bc5S+tdtB0AvzPx67jr59exmjBwKtuq+LeA2UcrGRTnmslK/0CZXGb+BgyBqlQjuBFMQ4NE0Luh/QucYa0AEuuUz4hy9sB/ssXrki7DaImKAwo5nXYPrUWjwznMJTXsdbx8IUL6/jE6WU07SBVeyuMDYil+lXryQL5QjvXP98jKX4TkVfCt0y4wUVTRzmr4b4D5YHf260VloRakw+hjR981WF8+13jaRRT3fJxdCSfillcac/y0JFhvOs1R3B8rIA///o85us2CiLET37k1/Gtpz4HAPjzb/oX+JVXfz8OVgt4+Gj1OZ23rjAoXIUbxsQJkwkdvoz3q3V9vPzwMO6ZLmFcKkZ7btR3XYi6kTcICQ1jgeH8Zus5ku3KGyGeSTF7eCiXprckQeKERKpSuGDh5YeHB56bvRTaCaiicrKg2rrx+q57x/C+fV6rF00RllhLCAB1qSQEBExNoZvbxz/ZCdZPYoIymoLbRgu4UutC4xQs2l9IcMkTiSOxGdTNBCnNOIPlBdAUyuWbGc7hzGILv/t3V9G0ApQyKnSFp8fnhTE0hYoxhZOnyqW1Xko8VjgpNRXOMd+widCqKrhtLI93vfoIal0P//Ox67hjLI/TS214IUHFtgzNBoCI0fckirEEduUMO04ahsZh+cRpYek5kxFnck0T0rJMyaFWMGNgnIEJIdE7atPGcYyttRZnSPkxSdtyLyBL48Sr6bgBTF3FwXIGZ5Y2U+1vBgQrmpTRWLc8HBymmBRN4fi+hw6hlNHw9EILX7mygatrXVxY9RHGAllNQTmrg3NaRCy3hVJWw4OHh/HYtQ007QB3y2gRCIGrtR55TjGG63ULK207nXTnGzb+7798Gr/xz+/FfQcqu7qjv+X+SXzs1NINF6MjVeL5feHiOtyAHPQViXoQmsShKQxrXQ+aQu3sIKLJ6px8ZrK6CgaBngusdVysdwlRNjUFxYw6UHQ+PwgES88DoLZE2/GpnQEgpysoZzSstknl23EC+CGJJlq2T/FQKoPGqe3g+LEUtrjQFY4/fWIex0bzeOjwMNZ7HpmEGkpqr5HVlXTRiOJNm4ScoSAWMTa6AbxQ4NJaF1EsMF3JYrJs4hfeeGJXxG+rV9Ed40W4QQs9N0DJVHHHeBFDOT1tT981uVmAbRbDZEGz0nbwxGwj/R26V5uUg7GigcvrPTy92MLnL67jcJUI9PcdKGOp6WBWIoCxwIBiWAEASaYmdJDjaq0L249geREsn6K6hJB8VUODrnIEkUBOJy9BhTO89FAZi00HOYNaP0WT3s2G7eNQNQcOhq9fb2Aoq6ct6aWWJtto1Haa3bBQyWoQGOSP3axzfb+VR86ggsbyoptqsT2XMVA0jubxkoOVbfmxOxWNewkbaFPOMZzXcXycUie2GsmWMxqKGSoY3nRyAq8/MZae67/9pqP47T97FL/yh+/FSxfPI2Qcv/jtP4q/uO/bkddU/PA3HYGq7r+d1j8sL0IlQ8WS7YVkCi7RsCiMU8V7zlDxtgemqAuT01E2NUmnIeGSEAJPXm/t2fLbz3yzWczSPGV77QFgQQgSfBwaVgeem/0otP/tNx1NfcK2brz+j0/YDkNXOFxZFEQxEaVNVYGqcMzXbRRNLd15beUV9PfnbxsrSD8mBwICisIRh+RvleRT9b/XAkAogA3LB7eInH+kauCtD0zhmeU2fuaRM5hv2AijGC07gCLjdQyJPOkKqQ69MJYTiYpYBDK6R4PGyXqh6wZ4drWDoayG+w4O4eGjVTx6dQOcM8w3bXTkgwfQS5y0ATknu45EMZaEvTadAFOV7MCkoXDgG9eb0BQKGU9igGhS3izEOEtc6plE8miHndEUOKAXjTMBkSCJYifbBwZdWl7sNVSFQVd4qlidqeahcgZDJeQtjPdfgk2VTZgaEeuT68EZFZ6ljJYiot91chI//cgZdNwQth8hEiSwSMx2Gz0fisLx8iND+NMn5gdaCl2PWjs5Q4MfRljtuNTylehiFAvMbVj4kT9+Ej/zhjvx5vumdm3nccbSxYh8gSjLsmmTCi+ZVHKGiuGcgTgG1rsegkjI8yJ4nXMGx4+hqtS6UzhwtdbPAQI6TgSwxHCVEFhNGSw6HzpSfc4IxFzdQtP2cXK6hNWOi7YdoOMGCCPiqmV1FZYf4ZnlNmyfeJhuQBwi5oWAoDiUYkaHoVIyRcPyIGIgZ2g4MVlMZennlzvoeSHxnhhLJ+kEuaHCju6rymkxqfeo8DZUDgYqwAGB//KFK3taI2xdJL0gxlQ5Ay+k+KUwFmi7AQ5X8xAAxiUXa2sxPJxjqPU8qbCMcc9UEVelnUYpo2GibOLCSlcGuGtwgggtJ8CZhVZq1vmRJxdxeb237RgjAcQRJYEwMPihQK3rwfYjaAq9i1Hf+5TwipIgafLrE2kLOVHpbSIO9E7F8jk9Wt3cPCTWJh03hK5wtGxSy3XdcFthdfdUCe9+3TF86KtzuFbrIYqBUkZNNydZXcHphRZW2y4eu7aBqzUrtU0AKLNwKKc/b75ie3m27VQ0ZnUVDrYXjVsLxmMj+V3zIHdC/PZrJHt0JI+feOzP8dLF8+gYObz7re/BY0fuh8oZpssZHL2FNmS/bY2pKziSzWGx5aBp+XClRQ5t4hVkdQU/+PBM6nHYX6QykyUnecOW334Qz/5itiLbuf3AgoBAMaPiBx8+PGCovB+F9neenMR3npzc8Xp3Op19X7sXTRFWzmpwoCGjKWjLYqOYIeJ52wnSnddO/iNzdQuX17oomLRbUxXip2z0CHKPGaSlgEjd6JN2Rv9IVFVrXY+ywJwAC00HRVNDj8m4nZB64wnXKIxJvl7O6HCCkCY+UyNzVidAGCdRSgI9z4YXmvjmvIZf+dQFXF7rYqXlEL9MCAznSBSgq4z4ZICEyjl6LrUdmnaAlx0agh1E2yaN2TpNeHeOF7HYcmAHdC1iWdgmgyKIqNDlfcT1vKnCjGlijwUQSRVgYu8AkABAUzkiP0wLqKStSxYLqbcoqnkdP/SaIzi72MbchoW7JovgnKPe84ifJgtZzjYVaDsNzmhnZmpURCfFZXI9tr7s800b6z0Pd0+V4Udx2rJL0MmRoolyRiNj3i0thURZo3KGVnKOYZyq5BRO7amWFeA3PnMJR6o53DNd3rGdlyzsf/Clq/jG9eYA56z/57uScP7QkSF8fa6BuuWnWY663GHaUYyMrqGcpU1Jw/IlkZ9MVpMIFGr1bZrq9hedN3Ke3s9Idq4z1RymyhmsdFycXWzDUAn+d4MYDYuudTGjoSrzKN0gSifapN2QRGfFgtCzKI5hSwuEhP/YtP00s7F/kq73fNnOjjFSyGBSFjd+FEPl9B5V84OGxDeyRthpkTxYyWK+aad/joXAez9+Ho5PhspbCfEAUDQ15E0FDSvAqfkWwjjGSMHE7eN5Sq4Io4GWi+NHGJsoYL3j4en5FtS+diuwabOR0HcAIK+Tm3opo6Gc1dCwgjRDM1GF2j5dn4ymkhDFCaR52ua7l6j0kneK/JU2n9Nk9POd2g6FvTftAA/sEvn0sVNLqHU8xDF99ljBxMnpYuq72LB8rEpkbrqcQdPx4UoKBxPEeX0+fMX249m2n7ijnT6nkqV5/mayKm/U+k8KjEtv+1Ec9Dv40ze9C97IQbxSUzBW0HFtw75pi4+txz5ft9DzQmQ08o7M6VKMUc7A8iO8bGYIrz8xnh7vbsjmjVp++1FGbm1fV3I6XpIlYMEPIizLcPPXn9g0V92vQjvplD1XFe6Lpghzgxi5PPWZs7Ia73ohiiZP+8JdL0TeULdV2acXWrgsFZLJS6+rnOBMSIl/LOB4JEcHo2IL2GxPQrbqdIVDCOBrsw0ojKUTOqm5fATSz8oLY5gqFXQFk0Kwr6x3EYgY1byJoZyGM4vtlGBPoBO1UD706Fzq5HvygIqnrjfRsn1s9DxU8yYymgrH9yEAZDRVxvsIrLRdTJYzqRHmI08u4uxSG3YQIaspODycg4iBY2MFVAsGvjbbINUhIxl0IuevZHWsdT3EMfFLyhkdbkCy86xOyFu/JL+/NAoigSDa7PMrDChn9VTVRxyvGLrG8d4334XvuGcyhY6v1ixMlDLUDhYilQ4bKocmPaJ8aR7Y//nHRguwvDCFqYUYvB5bX/Z+vkaeq6hkK30qPlps5psO1joudIWh1vWouFR4GiROQfBxKsbQpUoxjqmILWVUNG0fH/rqHP7Td9+752TjBDGGcjqOVnPImxpUxrDcctI4rWQ3uN71IUARPA3LhyqfY0Pl8KIYd5RNfM9LD+Cz59ew0HQAQYVhErhLKKyQHm8xei7lZSZFZyIhfy5jaxtGV7jkYlEh23GCdPdK3kGURzkznMMFqcRN4k/cgDI/Ncktc0MKai+YRDCfGc6hYfuYbVi4e5Laxckk3XEDnF/pgnNgvGCg60ZQGMNkKYMDlQyGC0bKhwOwb2uEnRbJ/j/3IwOjRWOAEJ8UldW8gfsPlLHWdbHUpHzOew+UYQdR+vNJaZUUP0l6wJnFNhaaFrWkt6hVEjRaCCAnVYl3jOUxXSGPu8Wmg4urlNwRC0rrGMlncMd4IS0WADIITVq7STGYbFBUhaHpBMibKpStAg/Jd1rreGjaHn78W27Dq28bGXj2t3qXTZQpVeTCagdfulzDSMHAkWoe8w2LWlkKw7NrXWgKw1DOAGOUP7vW8XD/gRKu1Kxb9hW7kWfbj73uGHKGmhbYP/eGOwcK7gQ12e1zllsOVM4wWc6gafs3nVW5bfzd32HuxEuIUzo6hD/7j78FBuBI34/crMXH1mP3VOIX+qFAGFGyha5y8uNc6+H4eAFvf8n0wLXerUh96EgV9x4o7dry28/571bkMTA0bFKpbz2emzEafj7Gi6YIi6XyIkltnxnO4txyBx03oB1/FGG17ZJDel+e1LmlNj7y1CLsIELBUJEzN9EBzhjKGY0yAoFNbpNEazioAEhCSSMBOGEMRU6KGY3Dj6hVpyucSNseEEsTUy+ineRtI3nomgIvjJHVFMwMZzFbt5CR/fTEhDMWhCR17E0n37yp4iWHKvjabAMdl3xmyjL4NYhiuEGEjhujnNHwspkhvP0l0+nOjI5683w0uWg7Ptlj3DlewNOLLQRSekzxNAQ5H67msCGzIS3fS4OzOy4R70m9F6HtBvCl9l/p250ny4PCiEjOmZLex55HbdnbxwoAtr/Erh9RK0oKGhIpu65waJxabrGglkvRpOvJGEuNKy0/QjGj4mUzQylv4fRCK504txYKyS6pafm4LHfhfhjjL76+gPWOR0okjTShWV0BY9SOSfxjE7WPkAohQ1OQ0Sh26Mp6D1+6vA7bj9AfG8M5QxjG+MOvzGKxYePISI7IrHJhO2aqKTrzs284npLdGSOyqxdE8KMIlhfD8oCJcgb/4VtvR8Gk5/n8cgeVnIbxookgEjg134LKGRjjKGd16H6EO8YKKGdJcHJ9h4D2Wxlbd679eZQC5D1kqkrKEUkW9+G8gYJJruG2H4KBCnEi2TO0HGqVPbvaRa3n4XA1j1JGQyWjI6dvVzaudTzcNppPF9KnrueoQCEAAQAASURBVDf/QawR+heN2RoVEhmNpwbTSR4r4wwjBRP1ng/OqRDvR1mTkVyfBFVoOz4sL0LRpPgmQFqr9P08ABgqeSDl5TNVMDXcOa7C9kPUuh6yGocTCNw2mkMlp0PEcfo5eWOQf5PRSDFXMDWstV1MljI4Us1hueWm70//6LoBHjg4tK0A283BPGcoCCOyG2naPp683sSG5VGcVSgQxAJCJPdsk4zd86Nb9hW7UTbmmcUWfvqRMxjK6fBDMYCQ3dtHwt9PxuZwTse/++Zjt85li2PgPe8Bfu3XkPmpn4N35I3PS4Gx7dgBPLtGgffjRQN120fXDZHVN9/XseJ2W4k4JqrBd907iY4ToJghW57kPHdr+e133Gzw+s0YDT8f40VThAmINLX9cDWXth5mN8i/yPZCXFrrpoTjj55aggDwsVNL8IIY40UDTTtIidqJvDWJMFJiUoQ4QZSSW1WJiiQTW5IdyRmDgEhbZS3bp8ifMFFVMqiceCeljIYgFmARBZlCLkT1ng9DfjdAu7uCqaaO0/1OvsN5Aw8eHsKT85SFN5LX4IQxLD8m9QpnOD5RwFv7oPFkdzPZtzDNNx3ULQ9eGOFAJYv5piNFA9QSDSIBLouk0byBUkaD60cpugOQW3slqyIIYxSklxggUhfytDUpqzA/JnsRxsg1XuU0QZUzOixvk9K/tdWz3LLx/3ziAtY6LsIohioRyFAWvJwTihIKwI+onXPHaAGzDQszuooffHgGE+XMQCRQMpG+7f6pbQqtxKeKnNAJDWhaJOMPolhG31AxwOTzKARxBJMCNoyJW1YwVGmpIXC9buM//K8zaSs1b6p46aEKvvnOMfz9pRq+8Ow6OEggkpDkK1vjtBoW2k6QKuISVa/oK3gtL8RP/OVp9KRhqRvGWGgCtaKHQ8O5tBBSOWD7xL87METFa8/dPYJot7Ebj2brznW8SCaW9Z6XcjkTdEWIzTzK8aKB5byBlbaLO8byyBsa6paHs0ud9NpnpEdV4g90dCSPobyOdzx4EI/PNm44Qe9ljWB7ISIhsNSynzPpO1k0PvjoLFY662g7ZBWT5LH2qwZLGQ0jRQPzdRtjRWOgDdh/fRK/LVXhKUfLC0Xq3A8AYAzJqYWxQN5UofYXSClvjnyqFM7ghjEWGxaaToAjIzlAIEWk75wo4vI65c2qcsPa7x/3gc9fvqlW264O5m6IuuUjFAJrbS99tlVFdikEqYAtP0Te0FLz0iCMUcrqt1Q875WN2bIDNHo+7CDCWDGDybKxa6rB1s/Z6o03XjRxpUamvfduUVDua9g28H3fB3yUMiBNaQ3xfBQYW4+96wYpEqspHKMKtayPjxVQzulgYrutxF7t3H5e3XNt+d1M8Po/tAL3H7UI+8Vf/EW8973vHfi7O+64AxcvXgQAuK6Ln/zJn8Sf//mfw/M8fNu3fRv+63/9rxgb2384ZjI0lYMpHHdNFtNJbCinQ8RZrLRc5A0V906XUS0YKXH30iopg6YrWVTzBs4tDSorNM6w0vFgagpedWwIfiRwdrENzkFIRyKVBxVkpJRkaZRREkXkhSJVkCTtAAFAiWO84e5xfNd9UyiYKk4vtvBbn72EuboNP4wJ5XEVqApDXlfphV23YBp8m5PvUN7A/QcreHKugesNB7EghGmqnMFEKYOOE+J3vnBlm1P21p2Z7VNxd2q+KcPEdRkpEqJgcNw2lsOltR7Wuh6KJi16w7qaSuAdPwRjlGLPLD9VZ8Xpf20fsRBgAvCiCFA5xgomcqa6baLof1nvPVCGG8b4hb96ZqD4SJCVnKFAV3najp3bsMi3ZmZ4YJHYrdXwxpMTmxB30cSVWjf1jdNVEiNEgiwR1jpeGt+hyL9XOAfnAkFIbR3irSnIagq1TGwPnuQHZnVFFh5ULH3hYg1fulRDJauDg1qXkcA2eX+yq/3chXU8Pd+ii8QGg8g5AwqGgp4boO0EUBjDUE5HVqfPW2q5sPwIOV1B1w1Scm2SAXkrk9K5pfa2Vvc9U6UUhd26c9Vl4aAqDNk+oYfth+mxcM4xUcqgYflouyGGsgYFsEsbFF36AukSReu4AS6udvDGeybw+hPj+ObjY3j06kYaWv/w0eqAQmyvibnR83BqoQVVYfjQo9f3neW47TnfUpj+6lvuwXs+dhbnVzrbkM7+6/6W+yfxX75wBdfrNjgDOg6ZddrBZroHQCrDExMFdJwAlheilFFTfyZFamQSi8MDFRMjhQyWWw6O9aFVlZyOuyaL+Pr1Bhw/wqn5JpLcvCPVHF57fBRfubSBqxsWYqkcfcmhCl51jKwy+he+m0EngN3bRA3LTwsXAKkoJ4oFYiZS8+WepJsknFtNovq3gmrs2rKSRriBNI/WJP0gbygYKxq4VrPwh4/O4v1vOwlV5QOf028Js+mNRy35W0JYV1aA7/ou4BvfAHQd+OAHUfqX34tjnzz/vBQYW6/BViRW4RwMMbKGKg3IBdb6bCVuNYLrVsd+i7mbVeA+1/GPjoTddddd+NznPpf+WVU3D+nHf/zH8clPfhL/63/9L5RKJbz73e/G2972Njz66KM3/T0/8+3H8alLFIKqq0oa9vv0YhsKZ3jZzNBmaLbMITu90EpT3POmuk1ZEYsYDAxHR3IYzpsQQmA576Bh+dAUMpZLiKyJVQOXPDJV4RBxnCqtonAzn46UhYQeffbCOt58/xRsP8Knzq4ib6iIpUcK2VhEABQcHM5iKKdjdsPeVdZrSBuBYYN2AYkhZ7KYXlnvDThl7+TKfXSkgCvrXXhhTMWmjBcZLZg4XM1RsYmeVHuKVKaejDCKUet51Lrcco/6CcL9o2BqaXHiBBEWWw7eeM/EDSeKt94/DQbg/Z9+Fh2H/KJMjRR2GY1jupLFu193DPk+3kbymb/0yfN7tghOL7Tx7tcdw8dOLeGJa3XM1226r5wBUNDzfBSk6pTJZ2Aop0NhDG4YoecG6bn6kYACIBYkjohtQsmEADSVwr5TJ2mFYbntSmNRDbrKEAlqaSZhvYnIxJFt2c+dX0XPj6AywFQp0oqKfvqP5ceS64gU3RjO6VAVhrrlUxqDkN5ujOGobOXtFEG0l1IMoIn3lz95HtdqFm1CpMpivmHjwmoHP//GE2kh1r9zXW07eOxqHZ+5sIamHSAvQ+JnhnPQFIZ610XD9vDw0WEM5XR843oTKy0XpkpiAk0hlC1p+UaxgGDAQ0eGt4VUGxrH312qDRRRu03Mq20XZ6Tn2/HxEsZLxFE6s9DCpdUu3v6S6T2DrvuvS/8xxEJgomTi5HQJHS/EWscDZ3zHxQAAMhpHw/bRdohAb/sRRgoGTkwUoSs89Zb7gYcPI4wFvnRpA14Yo2hSi9ELNxH7g0NZ/Ox3nABjbEe0aqFpQ2EM4yUTk6VMyu+6st7D0wstDGV1RIKep9GigX/9yhmcnC5vO+ebQSdoHtihTSQLh2RDyxlSrm0YiwEz6CSQ3vEjDGV1xHGM2Q0bJyZLOFjJ7npv9n0s2FQ/G6oi6SF8II/VD2OsdNbxHz96Bj/48OEBc+JEkdzvy1jveWCMYbXt3BwSduYM8KY3AQsLwPAw8Fd/BbzqVeDYbpdyqwXG1muQOMknSGx/KxwYRNn204b9x8wAvdkW5nMZ/+hFmKqqGB8f3/b37XYb/+N//A/86Z/+KV73utcBAP7wD/8Qd955Jx5//HE89NBDN/U933JiHLcfGBu4qJEQUBWG4+OltABLBmMM46WMTHH3MF7KDCgrgjDGRs/DZfkgJ7+TSK3J02jT6DEWlP1IBRYpRlp2ILlcQirjgDCiyWs4Z4BzalV+6NG5lOh6croMIQSemG2gZQfIm6QYq/d8HKxk95T1ztUtMMZwfKyIfF94cXLsFDxKPkWT5Z0npYx0Ha7mDRwaziKOxYBpZ6PnpXmKoRjkp6RqNflyJsR8hs2syK2vGwOgMibDqAcXz/28nG+5fxpHRvLb5Oy3jxV3fZmu1Xq7thr623x5Q8Vb75/Ck9ebUDhHKaOSD5tMPEjVWCA/tkR63nNp0VOVTZVaBHL9T845WTtMVRk4BsnlB+Oc0EfZ0t2MkyG+S8cl8vHBoQy+crmTqi+BzWQDlpC2Y0ILNFUBB6RoIqZzMlQ4YYzRgoHvffAgrm30cLVmpcjhPVMlPHRkGFEs8LfnVlNLgP4UgFccqWK8ZCJnKPj9L13FxZUuFE6WEZvO4QEurnTx3750Db/1L+5LW5P9yObrT4zjFUer+OCjs7A8iiC5utFDyw5SU8rhrCFb/dTaNxVqgzFGZrqJ3101bxBh2A933I3vVERtnZhX2xGW2tSSv08GmAPU3u66IS6v93ClZuH20TyOje2OjPUjAlldQcP20LIDXFzt4qtX67h7srgrORvYRGwfOFBBJARW2y6uN6yU3D2U0wcWjx9+zVGsdzxc27DIBkdVZBtS4OBQFr/0lrtxjyyati1E0k7F1DiqOR2KwlAyVTQdEra07QAK43jZTAVOEGO+buN39rDvuFkj361oZNcLpZKOniPG6DM1cMRi01KDMaQxVqZG9/0rV+rgUhj1K5+6cFPI5W7IaCDtGMAo9iuMYjyz3IEriytT4+g4IS4sk7nqu193DEdHcvibs6vbo3sUSBoGw+PXGnj9ifH9FSTtNvDa1wKNBnDHHcAnPwkcPZr+8/NVYGy9BgVDTdeppLhPWuFCCCy3bMxU82g7Ab58uYbLa90bzrH/mBmgN7tJuNXxj16EXb58GZOTkzBNE694xSvwvve9DwcPHsSTTz6JIAjwLd/yLenPHj9+HAcPHsRjjz22axHmeR48z0v/3O/XsfWiLrVsfOjR66knz9ZRzeswFNqljCUBvZKkKoTAUsvZxpvol1qvtgWCBEaWOzRTuqgnbSbL24SehWDI6PT5tJOKwRjDU/NN5AxKjk9iF+4YK+DphRZ6bgRdZWjZHta67p6y3pyhkiJyFxVbRldkgYQ9OQOkLiGOVj47+DOayqUjPp1vv0w9iAQVH3KBTVqR/dL4beiYbNtSK4yni+d4ydzxHHYaJ6fL+PXvvnffL9N+1TFtJ8D/Pr0sJ08VuqpIF/MIQoi0u5p8jR/FcLokCkgUpZFsBe0Wq9RxQ+iqj6I0QIxjqnApixQYL5pYaDppTEmiAL1Ws3BgKIs7xov47Pk1mBpHKK1T0sqw/zojUfFSoduwKXYqlsXMeo9I1D//HSfStp3th7hWs/DHT1wfsAQ4Pl7ETDWH1ZaDj59exkefWsJY0UTRUHFxrQvOGYYzBoJYtmI5Qzmjo2H7+Pr1Bq5t9HBstLDtWnDO8G13j2OqksEffOkaHr1CaI6pcUyUTBQMNU0iODaaRzFD7VU7IETwttE8kYRVDiYo/eArVzbS3Xhy7+s9D3Xpxr9TEZXMIRdXu/jgV2YxUTTTTU2/r1feUKk9o7BdWyz9iMBwTh9YsAsGcT0vrHZxcqqIdzx4COMl84aIbTmr4/axPJ5Z7uBwNY9//y3HUjEHQPPgz7/pBD7y5ALOLnXSd/pkX0s4GVvnzE+dXcEfPTaHMBZYaVMYekbOaUEco5LT4chYtoKpPa+oxk5opOtTDqiicPCQOhNCcm01hfhgQpAoJwbdCzckLmw1Z+C20TwMTbnpFthuyKgv8z9zOt2j2fqgZUgQxdBVjsMjOax3PPzVqWU8dHgY//v0CkLZYtdk+932Q2Q0FUdGcgOWCDccpRLw/vcDf/ZnwEc+AlQq237k+SgwdroGh4Zy6NgB1jse8qaGgzJG6WqtKxNGgPf9zUX4UYyVloOTB9QdI7j+qWSAPh98tBuNf9Qi7MEHH8SHPvQh3HHHHVhZWcF73/tevPrVr8a5c+ewuroKXddRLpcHfmdsbAyrq6u7fub73ve+bTwzAPjK5Rq+9d48VJWnF/VGKgg3iDFZziBrKDtCtxMlytfaypsYympQRnIII0HtPlB1n+TZAQxDOeqRaypHEMYE6XMuCxbKZ2vYpLJzghAqI+J+cuyzddrFemEE26eJZq5u4Z7JEt56/zSWWjau1qyBXc6Dh4cGMuwADBBBk2y80ZKJ+bq9O2dATlI7GQnmdYUUaQopD1tOuClTl2aPWV1JrThuNGIBdDyK/bltNI9yRkPLDW6aw3EzL9N+1TEdJ9gWiVE0NeK9YRPRStoSKgN8WWxpLKX3UGEtNtuzya4+lt26huVDVzlMjYxVwVja+hzOGyhldczWemjYPlyZB3hgKIMfe90xLDRtQsg0smRJWuTpl4nN6yMEUh8wCPKp44wjiMnv7I++Ooe/e7aGpu2j0SMzTYUz3DGehxdGKXfvaq2Hlu3jaq0nxSYCi00beUOFE0RQOTn0J0a/TPLoTJVQwktr3R2LsGScmChiKEdZqBMlk9rqhoKnFlppEkHHDVIFYOLCvt718MDBMgSAK+s9HBrOpq33ph1gVvqDdV0iq+sqRxBGOxZRR0byqZlvsqkRQgz4egFU1OkKccR2KkZScnPRxLPr3YEFGwDyZmLq6+GJ2QZ+/o13pr+7F2LLOcfhah4tx6f3ccviejOLcPLu/PXTS/iLbyzAC+M0xSOWXKuuG6KS06EpHG4QoGUHqfv5RNF83lCNrShO2w4QQ2AkZ8DRFbScAJEQEPFmQLbKyZ7i3ukiAI6Lq9s5dsf0HM6tdPAHf38V/+5bbhsoWvd7LAlSeKBCm3pVYQOWIf1CiaKpQWEcl9e7GCsQghpEMeoWzYuawjGSN3DnRBHFjIa5DWvvgiQMgbU1YIrQUfzQDwE/8AOAsvNGEnj+CO9bTYgnyhl4YQRDVdC2A2xEHnoebUqmK5RCUutS+/XMYptQ5Jw+8Ln/1DJAX8jxj3qGb3jDG9L/f/LkSTz44IM4dOgQ/vIv/xKZzM7o1I3Ge97zHvzET/xE+udOp4MDBw7gP3zkNA78/Txee3wcx0bzGCkYeMXh4Z3JtkKg4wa4VrNwYrKI73/oEP7q6eVtROK3PTCF5ZaDDz46h3NLbYwUSLG31KbgYZUxjBYNOAERm4+NFqSSkMizQzkdcSzwtevNlDQOkES73vM223MCiBSKjGk7gbSkoIw/XdFg+REsL8RG18eVWg9NJ8CxkTze8eBBjJcyAzvn/gy7puXj2bVu6mLty7bTq2+vYrXt4On5JkpZDQWDAqk7jo/hvIGHjgzB9iNcWu/uWJwmKqmOG0BlEVq2D0OlNh2XxPAIDIo0U9srXJuDeGQNy8PF1Rgjhf8/e/8dZll2loej71o7nnwqdoXu6Tya0NMTBBqNlWxhESwwgsHXxiBfguFnrg02GC7BlrEuYF1jY9kEXZOxERjbCIGFhIwCSJqRZpAm9/RMx+rqyuHkc3Zea/3++Nbe55yqU9XVPT2C+4zX80gz0111zo5rfev93uDcFmf2/cZB1DH3zVfQCWPUehGKDiluvZAk8lFC6F+Y9E/M4ETIT4dp8Ey0IdXwBeCcwUQ/UkYooOWTJ5eZqimFxFjBQsk10fRi+HGCjrb74Ax4+lod/+GTF/HwsfGs/ULXcoCLp1TGV0sd4hNd+ZlpgLpGFcYLtBAsN3zcNVNEN6JCRUiFixtdveGg9iKhYr7ODuXgjGxaPL0TjoSCULTLT9MbwlgiTKT2jtp/8btW6+HKVg/HdRYngEyZVXCo+Gn7CU5NF+FFck8X9jefmsR/+4slBInA+dU2gpjaxIzRIkgGyGQEO6qI2lms7wy6jrVLuGXyPVssKeqaOGqXxxc9N4R4juXtPX83VzEApTKaREoPuBGacDOLcJJI/PJnriCMhc4F5JmJMkwOL5b0vnPiRb2w0iSRisFR0nFsL693bktbZ7CAbPkxfvuJRSxu9zBZJANeLxYUx8UZemECyzRwcqqArz0zhw8+uYhT06WhzVXK2ar3IlyveVhpBTh7uHKg9uSoYrYbksjpqrYYcQcsRgZFLTnbwNXtCB89RyjYWN7OaBphIpBIwtJHFSSD3Mty4uPYP/6HYBdeBp58EpjUuY/7FGCjPudW78t+JsQtP87yWQfR2pmyi5myg7VmgAUdmZf+3ZczA/R2nP8rHX+lysxqtYo777wTly9fxjve8Q5EUYRmszmEhm1sbIzkkKXDcRw4jrPrz/1I4MKmhwubV+GaHK5tYK7i4p1nZzFesPvwdiyGZNWuZeDXH1/o5xfqf251A/zHT1xEzYtR64SoeVTQCM2vcS0DR6YLODqWx5XtLrphgqYXZRl7qVRbKYV//LtPo96NMF60IQSRMYWixZEz8uyJJe2iPO02bWnFjFLIrC7AqOVXdS28sNLCSpN27oMTbQofP7lQw0YrQKyNWjWNAStNH+//xCWYBkcsBMQWLfquaWCqZKPomPjgk9cRxsQbChOB5YaXndcgV+VDTy/j2etNrLZ8agkZHIZjoBcJMq3lBiEzMi1Ghu9ZRtTXooamtgi5Hc7swMFtEnYWmURYD/Gbjy9iue5hs00xFndM5LHc8DMi++DpBInEoEwiEQpS21TsFigwjYaJ7JqEcQIvJK84k3O42oB2tenjpbU2Gl48lFpQ8xL8+ctbePJqDQYntawCsnbkIBBWdAwoMHqe9J/7UWoCzDCWtxALIEgERJTg2aUWIiHhmhyVnI1umCDUCE4kJLohBTwzUMHFdXpCyTHQ0/K7zBUB0EUPgxdLGCbDqen9J95R7eJBZZYCMsR1Pxf2vG3QDn6jQ7mqtgkvimDxPnIkhMR6O8CxicKuImpnsR6LQXVYinpoU1eMbrGkhVw3iHd5fAF9n6+ia2YoXfrsNr0IkZC4utVFWxeh6c+Xc6SWvl1owuNXtrHaClDN2+hFdP0tk2coP9dzz2aH7GSU6mfAdkLigf6iDvi+VfXo4BgsIC2D98Orp4tYbfloejF6IbWhH9Hh1ULuTrBIrWUCnasLkJn3C8stLDd8fMtD80Mb2f2QwsHxA191Gr/5mLYY8UhVnHcM3DFOAfUA4IcUMTaWIz++uhehbJHYpuAYaPkxrm51Uc5ZQwXJoIijuLGKH//Aj4CtXIF0c+DPPQd81Vcd6BoexO3/Vu5HOk5MFXF1q5vlsw6htVrk1fETrLcCbLRJlfxqKRBHjdt5/q9k/JUqwrrdLq5cuYJ3v/vdeP3rXw/LsvCpT30Kjz76KADgwoULuH79Oh555JGb/mwhkS2CsZAoGyYWtnv49c8t4F0PzsMxKax2tRVASoXJooNT00WEscRnL24DAM4eruDkVBGXNzv40/MbkJLk0GQGSAozqShQOogFLqx30PQi3D1TRq0X4ehEHt+ug6AHX+h//tWvoxgjj3ylhJ7AGCf+l0Rq5Nk/n3SXlA7GmEaMIiiGPdsfZ+Yr+Lr7ZvD5P9ymwiAlxOsFl4xXFaESHCho/hpAisx6T8f4TBY08deDaxkjVWCDu9W2H2O7G+L3v7SELy42EQsBw+BZ223Uq5YK+ADtu8bJCHKnM/ut7GZu9ALuRV6dr+aw0Q6w2gwwW3bR9gm1rHVDeCEp0tZbvo5NAhyTLB3aPiFHaYtRQsFgDIxjRL6l0l5xTIe1a/Q0SFDJW3jL0XG8/e5pPHu9iY+/uIaGF0FbYWUIDtPWDH4k4Vj967jrq0DqyJS3N3TtFZGDx/M2rupgaaUozUFIhZ4UiGWIomPCiwn57IVJ9pxypkUJ+vmRysh84Kj1SYG+SoG88EDF2ErDx6kpakcOPj+piWPBMXa1iweVWQAyVVY5Z+3pwi6lwnTZxXNLTRRdE2EstX2ILsCkgmsa8COKDsvb5lARtbNYL7kWuH73qUglY9W05TUK0UgLuS9eq2cocXovBttXBmPZ76bP7qWNDq7XemgHlPc5lndQcs1MVbfZDvG2O6duC5qw1QmRCAUnx8G5hVhEOoSaUjrSB0yBFLimvq9RojlbjDImz8yV4WsLoNtlQ7DzXR3PO6jm7GyTnRLar251h58bbSeRtoBjQT6G5ZyFvG3gmaUmXlxtYb6Sg2sbN7VAn5mv4N8+ehbf+8Ev4ZnrTYDR/b+82cVmJ8DxiQJWWj4Ays2MpUJvpZVxOw1OKOJaO8BU2ckKkkERx8PbV/GPfu6fodSqoVGewAd+8OfwjXd9Bc4c4Jp9uewh9uPXjhVs3He4iudXmmh4IXph8qopEIHhdWK95eP3n15B48tkj7Hf+Estwn74h38Y3/AN34CjR49idXUVP/mTPwnDMPCt3/qtqFQq+O7v/m780A/9EMbHx1Eul/H93//9eOSRR25aGblzCAU0vBhKKgSxxH/9wjWcnMijERCX5/RUERNFG5bBsLjta48vhY12iJxl4OJGB0KTnCNBuX9KDrbVGHI2RySocBGihZPTRWx2wiwIenB84wPzkErhP/zpxSz/TypACQUBhfgA55QuPl6UIIyJV5CzOJ5fbg4RnaVU+NylbXDGcKjkaJ4QxSkFmqeVohRCEt/D5Ayx/vyyy7HR9jFXdVF0TZw+VMKljQ4ev1zD8ckCrtV6Q4jSsQn6s2vbPfzBMyto+uSgrBQVenJg8h4cDP28SAVCBZVS8JNhJOFWdjMHnYDumS3DffgOXNzoACCE5nefvI6Vpp9B6yemivAigTAR6IYxOmGsSfMSjmmgkrfhmAZKjoWGF5EQQ1eXtsUhFZBEw/y4OJFQBodpcNgGQ8GxUHQM/L03HMFbTk9lfJV758r4iwXKgmSMNgSh5mBxXVQL/YwPrJMZ+gR9XROpoKRCzgRiQcWFBCCFQpIoXKt5Wes0Ra2UJjxHiUTABAxGRWLa4hz8rvT3gljCNNhQm1UJpQtNBcaphfufPnUJH35mBQDDUt3DatNHKIhvM1fJ4YEjVYzlLeJi6nZxyTFRcg1sdSg3dDxvo+j0J/5RLuz0fOYRComgEwGMCi8hhou4KCE3eh+7i6jBAuDSRgdQQCdKMFN2MFPOac5ljKJtjGyxpIXccsPHZjtEJ4hRzVsQEv321UQB6+0AZw9X0QsT/MKnL6PeizBTdrNYHCGBlh/B4Db5Mw1WRvuMJJH7+qOlY6rkwDRIYZqzTYwX7Kz9LWXfXoda21wbpqpsXkqTNl4Nwn56H27EcduJXHbDfvtYKWQFb6pojIWEVAyTJQcm5ze9QL+8QT6TKdeyqDeP2x0qkA+P5TCWs5F3qOhKUdsU0eScULlv0XPZoIjjG68+gb/78/8CdhRg7Y7T+K0f/wU8o0oQB7ieX057iBvxa13LwJ3TJfzDtxxHNW+/ai3BwXUiiIgylAiFB49Us+P6y7LH+EstwpaXl/Gt3/qtqNVqmJqawpvf/GY88cQTmJqaAgC8//3vB+ccjz766JBZ6+0YsegvFokE1rukBguFwAurLcpz1J5OVdeCbZto+RFeXI31RERKwkCTVKWGDhhSz1EGW/OAvJiS18fy9lABkVbmzy418aGnlpG3qE3q60X5xlPo8EgRq/PrbQhBXKpISPzHT17CP3rbSZyZr+BarYerW11ynzc4hCT0JCWQc9YvJtPHj2u4TCnAjxNsd1nmxt/wYtR7Ea5sb+DSRgeVvJUVQQCyxenSRhdeLDCeJ98wizMkMoaNPk9p8HypCGOkaNJO+ZFQ6GmbB+DWdnNJIvEbjy9gqe7h+FQBBcfIzCYHX0Cl1C63/Omig6vbPRwey/dFGANq2K1OmGUXWkaaJKDgR/02n2OZkJJ8umKhAKVg8b5JJtP3gYoAhoJjopIz8fDxCbzl9BR6ocgK3V5IxZ+StMgRV1DpHNHdk0cKdtkmh6ETA4KY2pQCgABBV7GW+iuNkgohs2Oje8GQaGWnUoCv1Xwilpn7enoeqTdeitClBXXeNrKiMdB2HWXXIj4c5/jsxe3MQ48xWozCRGCt6RPxPUf8s4xGkAh4kUBXt10Zi/H09SZmKzl4UTKyvXFupYUnF+qwOIfi/UB5Mg5WGMvT4phmHu7FUxksAJ5bauK3Pn8Na60ADa+dKVE5YzgxVRjZYjkzX8E//arTmeJzqxPBtTjG8jZmKznUesQffdeDc0NGyiSoUZgoOvDjhHihXUImy66Fw2P5XQ7lg+OPnl3BL3/mClZbARJB92Cu4uL/ettJfOMD80M/+6aTk5jTgh3X4nBMA06RIxYKQRRjqxtnNIxkwCSaMwbDSP3wqJgFXh0bghtx3HYilzmLI9F5r+2gX/CmisZq3kI3EBBSoZq/uQU6LXQSofDw8XEs1HpZcTUY4RMmIitQ0uzMQaFULETmD5aKOL7+xc/g3b/0EwCACw++Gf/th34WYb6I2SA50PXcz+3/dt+Xg7rP74yoOug4SBdk5zqROBILGtl/cbWdmVu/Gud/kPGXWoT93u/93r5/77oufumXfgm/9Eu/9Kp8v54foUD9+VjzoiSASCSZdcBGHNLuVO/aUx4ENKcn9fpKP5NQAloM0wWy4VGYbbqLzirzjS4ubnbgRwJjOSvj9dxsAZaORAItL8ZY3obJOYRSOL/axvs+9hJ+9Ovu0rsyMgGNE5mp01LrgyEYA3oR1q2iNMDcixJEiUC9pzI5Pgcha65t4oXlFl5aowUokUTYBgNKDpFWg1iio9GXVEa4g5uuo4tSl3umXa5JEagkcHmzg//8mStYbfq4d66srSH2382cW2nhNx5bwCdf2gAAbHVDjOdtHJ8qYnwg6ueZ6w1cWG+jFcQYy1mYKNowGcP5tTbWWgEmS86QrDqdPBdrHp5bbuK++QqUUnhprYNaN8oyDHM2R8E2YBgmkYYjod3yWUZoThEn26SMxpxFEVnXaz388P98HlIqVHIWTh0q4o3Hx8n0d9RDjd3XNL21qTlvlMghbpZUql8M6kJwSDTAoIUB1CoJlYTUfELbYIDiiCUglMyOI+W3GZxCfaUCDIPjkRPjsEwDL6y00AkSVHMmOiGJXjbaPgAKAE6kxFzFBWNp9mGMRFASxXw1h7GCheeWWljY7kEohemSA5OzbONT70V486lJfM9bT4y0hghjibmqi4YXI2/bCCKJdkjf4UUJEilRdin1YNAc9epWd9fEn6KiKbcou7CD92aPcWa+gv/4dx/AJ85v4CPPr2KtFYADUFBZeyZvG0OLZ8pBK7kmDE5FfZyQAbQfC6y3gz3d1v/o2RX89B+fz2LOnBwVxNdrHn76j88DwFAhZpoc/9fbTuKn//g8NtshyjmLvPuERMvX7VnNAeOMhB0m5/Aikc2jnJFIIX04EylR60V4eb39ZSNEDyKXLywTtxExeXodmyxSQabRMSH7iCjQX6AvbrTxuUtb+yI3g4VOWmANCidSi5Tp8rASPc2hTc2zB4v+tLV37fVvwvbMHbj40Jvx0e/4YUhjb87hqPHlDKh+Nd3nD9IFGYX61bqUKzqWJ9X0wnYP1ZyFbkT3h3OGMP7y2WP8leKEfTlHuiCl82IssQuNSREhBWpfpmogpaDNWKnNkv5OlnuI/kLHGNMqHYG5iotjE4WhyrzkmoAirhOFWctbLsDSESYC9V6EWGcmtgPiY/3Yh17A93/VKVRyJroBybkBZG7o0O2rdKT/Fulz5QwwDFJrhYnEetsjQrNlIBYKjk2B4afsAj59YQtQCq8/NoZ6j86rmrOQsw1sdkIkGoGB3FsLx3XrK9ZEqor+/f/06UtYbwW4uNGBbXJEQuL4ZDGTOY/azaRO7RRFlcDQ5p3dMEHTj/HgHWMYL9hwLY7FWg8AIYQbrTAjOk8XHSw3/SxUd3BXx7SIwzY5okRgrRXCNBgmizYYgFAbePZCsmhwTAapmEatqIVzqOTCjwX8WGCq6GC67MBgHBc22uhFApa2MGkHMWq9EMsNH3NlB1e2upQ1l5Kw9NipupTIal7daukrJRWoFYmBn9ml2mRkSSBTHybeV4BahgGhBCaLOVTzFlYaPvxEZArKKCG+1VjOxmzVRd1LUHJJFZmzDDQ82v0niURPH0jqWZdI4qZBhy+3gwTzYznUvQj/5G+cQse/giAWfdsBUEEbxQKrWjSxMzR4cJFMI8m8iBA9y6QsTi8WYIyhmreGBCc/9dHzIyf+e2bLhH5Ihb/xuil0dXSYZXAUHQNXtnr7oiipD9o77jk0cnf/3FJzaPFMI7i8SKCtif2MAUXbhGHwPd3WU6WjHwlMlx0wRkVGzuZwLY7Ndohf+cxVvPPM7FBrMi3KUvSsrekbBudwOHEc02PwYwGlqBUXC2Tt8pJjDqkRo0Ti1x+7hi9eaxyIb3UQ5ONGP5Mil1e3u3j/Jy7i4kYHR8bzMDlDFIvMu68T9s1G0xEkApc2unj/Jy/B1mKkQUPi9Pt2FTraXzIdaYTPm09N4uPB+o0LlCDIWns1p4Rf+tnfRVAYfqYPauvw5Q6ofjXc5w/aBRmF+qXvTSKBvG1iuxviyYUa/FhqtJ7sadZbAe4/clsuwb7jNVuEAcOgz0EKH6mQ7erCWIBrZGaIAJMWbkrqxYMT4dDkeOfZWQAYqswbvQhSAQXLAKDQ1LvKVGF0K4P4DVTk5G1OgdUArtd7+O0vLMK1aGK1DQafEXnWNnmmUhz5maDzNiShOomQesdo6EDnvgqsqxGeIBH44kIDUkFnWSpUNem1O6DEGyxidxbCiYbvp4oOxgsWFrY9nF9tYyxvweIUypwGMp+Zr2SF2OBuTkqFX/nsVby81gF0e9PQooc4IQuNl9faeOTkBBa0H0/ONlB0jczRnb5DoORQmHQ7iFHJ9b1tlFJo+xFmyy6u1/0h9+swEfB8kQWJp0a60CjfuEs8Hi9KsvbFP3n7aay3Avybj72Ejh+jlLN08Dvxm6it42GmkkPRoXgklbbDFaD0YphSg3S3HAAV6boTuvfQi2YUSwgQAmZw6Ba2yj7fNMj5/l/+rbvx6YubWNzu4fShEg6VXVzdJh+nKCEDyzsqLn7275zFVjvCR55fxeVNUg27lqGLFRIxBLpllSgFKahlmqIRafiywRh6scClrQ42u+Eu24GSawGuBccyh4wu0wX66cUGml6MmbK7K5JMSIWibSBnGXj3I0fxt++fw7GJAs6vtfed+B996HA24XPOUXJZ1lrqhiTLP0ibY7CtNlhQkNVLf/EsucSDW2qQHQgJORgMg4p1xka7radKx3LOygqw7LYz4sGttHw8fmUbb3vd9NDff+MD83jnmVk8fmUbG+0An3hpA9ttyhdda4eIhIRIhhF1pf8vFhKLdQ/Xa14WdH+o7GK27B6Ib3UQ5OOgHFHOGYKYUiHqvRhrrTpci6PgmIiFQMuXyDlmZicBkF/f88tkgTGWtzBVcrHeCvCxF9bxkefWMFNxMV6wcWq6iDcen+gXOo6xyz4kLXQeOFLFnYdK+xcoV64A73wnjv2zH8Sp+TfjheUWCtOlYZD1JmwdBluEh5SDRPRTTxTwqthD3E73+ZvhtI1C/Upu39k/RYqFVCjnLBgMGdr++08tYX4st2+ROKrgB4CF7e6Bz+c1W4TdKtqUtmtSFKecJwPKVOXHQZEeUUIomGOSp84jJybwjntmqDLf6KLk0o4w1DmP9PssQ9PId/3WRiqcZAC6YYwgFllsx7mVFpGjtcLNYAwCtNDtkZ89NCKhYBkK7SDR8TYKOcscUoHVuqR0USDkrGwbiAUhPHUlYRvGUCs4HYO1LGfA62ZKGMvbpFxKJD53mXhCJiclnh9LWCYVO+0gxrUBv5nB3dzV7S6+tFgHY8B43sF2L0QYS9gmg20ZCGOBrW6Ilhfiyha9PJMFG0y3OC2DZbmMec0VvLrZxWw1P+T7NlF08LXHxvCfP3M1C0Y2OdDUhYhjGSg7Jpp+rNWoVNh2ggTVvJ3xqYqOhfvmKvjtJ8iJnnHWL7K0sWkrTNAOE6w2AxRdC71QUCszLd5ZX53IeD8iCsCQyjadAnfeB6UXTc4pczSW1AKs5jgsk4qmMBZQiuOtp6fwt87O4thUYShr8IHDVWx1Q6y3AowXbfyd1x/GR55byxZIUxfRjNE7U83b+r1JwKAy5a4fC70rT9vSDEIpOBYHGRsfrLUyuEC3vBhLDQ/dIMadM2WM74gki4REIhT+9v1zWfF2o4n/j59fu61hzDsLCtskD7ZaL8TZw1UwxnConMP1ug+lW8muRq5afryn2/qg0nHUsE2OdpBgqxOO/HvT5Hjb66ZxdauLjzy/hlLOQc0jY97Mh26gDuMMWUrIi6st4olxBtc2cGKqiFLOQtE19+VbHQT5AHBgjujg5907V85sLWrdCIkgzu+Z2XK2qVNKYWGri14QY66a05YSMa5sdTM6SpRIsgdabmG57mEsb+PyZgexkOhobhk9BxQin/odcs72LlAeewzqXe8Cq9UQ/5v34a99+M+xXPdeUWuPc4YHjlTxqZc2cGGjkyHsOdtA3jZweCz/qthD3C73+ZvhtI1C/frxgk1sdyNIJVFy6T53wgQ5x8SZWXI02A+5HlXwj+VtAAobteaBz+c1U4SNnm5GL0IH/kzetwWIdRvRNBgc08BU0cJ4nvrMY3kbf+s+8jZ7dqmJi5ukoiICNnSMhkDeIhIyuxFKsc95ABgqphJJKIZUmjMiEnBGMR5CKcRSwjQ5DMaRRGJXYTRqxAK4sN6BZXAcKrtULKWOx4qy6xQUDM5hGwYY46jkbUSdAH4s4UXaK2rgM1N/pJS8LXX7seRaWGn6uLTRRSQkxvM2Sq6FRFIrsd4LYXJHZyYm2SQ2uJv7+Itr6AbauV+3BRJBrZAUmYoSiXOrbSgFFFwTiSbPSZkSy6kV5kXkDB5LhWeWGkRo5tR2fNvrpjA/lsNMhQi33UCgqxf0nG2gkrPIskHRrisRJNrohVRgTRQdHNFttsevbOPcSiuL9bE4y+wc/EhkeY9F18JdMyUcn8jj3GoLcUL+WAopGkpFclqIS0WKxr6VA6FGpPDcaXsCVPMOTk0VcXGjg3YQk9GqFBopM3B8qoDveesJcK3uGtV2eOTkJO4/UsFHn18bXiDDBGutAE0vxkTBBsBgGamSLtFtciDWNgeWQXzEcS1wOXu4ijsPFQ/UWllv+fjQ0yvZ98+WXbSDGFudEJFo4sw8uXankWQ7+TgHmfhXWz4YcFvCmNMiYbsTwDINKCXRDihjsx0IKNXAqemyJslzhFrZbOhneaLg4PhkYaTb+mTJBtftNhKRpA1oGvReMExpJ/e92nudIEG9G6Hh07tUdgldGERdLU6JCpFQ2OpEOufUzDhY+1EI0jFYAJ+cKqAbisxz8eRUAVe2evjQU8tQUAdCRwDsKqjnq7mshX11m0xWt7shbNPQDu8h1tsBio6JE1NFKGAoHSGRlDwyaA8UJQpbnTDj3bmOQQHezQA528D9RypDSt1dBcrv/A7kd30XeBTh6tG78P/9vp+F/+wGxvI2crYxlCVKGa7jEFLh6lZ3X5Tp3EoLH31+DUXHzGK94kTB70WQysY7z86+6vYM6TO1037mIOjYzXDa7puvZKjfSbswRBE4NpHHZieEaXCNimLoubRNY0/ketSmYL3l47MXtwAAd00cvLR67RRhnMGxGBJBi2DRMRHECaJbgJvSQiXRxM2iY8DVAdNhIhHFAm3t8WOZHLYh8MEnr+OjL6xjsdbTELWJgmUg0QrLIBKZTB96N3mQgig7P7a38zzxf4Y9t/xE9qfdRGJmLAfRDrQitG8dMWqk7UwwIGcTZyYdnTAhMi7nukAdvG7kwj76o+mMB9uwL693kAgFPxJDqr+0MJko2NjqhNjuRZgs2EikRNuPsaF5QP3d3PBL7ZgGxgYk9kIq3T60YfIEfiKw0Q7A0pApjT4VbBO9MIHBGQ5Xc7hjPA8vSrDS8LHRCfEbj13DbMVFK4hxcqqAyoyN7U6IixtdVPPUmuwFxMMzdDtEaATViwWEjvIpuxbW2wE222GGJDDO+hzERGXXyNDF0FTJxXw1h3NrbZyYKOBdD83hlz59FTmLwzA4gpjOyQsT+Iyhq5HKiYKNomuj4AhstlPzXhpjOQt3Hiphvuqi5Uc4VHZo5x3LLDXiRlmDqXv2z/zJS7sXyJyF09MFfPFaE60ghm2SYjdnGfCjBJxT/E4i6V1SSsHiHKbBsvt7YrJ4oHSDJ67Wd33/XTNlvJA00fJiXNzo4CuOjiGIZeZ9d2a+nClRDzLxcwCHyg7+4lojyxNNJBU1TG/YDhLGnBYdlzY7aPRibWuiMgNUw2DYaAOu5ZFRM6cC5shYPsvGLDkmwBi6QTLE7zm30sKfv7yFRCp0exE6fgTLNJC3TTimAZMrtP0YRycKeNPJyX3bewXHQMOPEERCo5iEbpoG18icgskY7hinYnCx1sOzSy3cPVPCHToHd+c1HEUITwvgvG3imaXmCFPaHF5YaUEBmDsAOgJgd0GdcrZ0C3u54eHoZAFbnRAbbYlIkJnvWa2ka/vxUDqCyQFfkjCCuQyzZRdPLTW0T52NtuaDGpxhbiwHkzM8t9TCN5wdYTytFPDe9wLvfS84gCfvfyv+xw+8D9VyEY4OZR8r2FkiynorwBeubmcm2vvZ9OxUh5NYSmj+MMNGK9j7uG7TSJ+p1Mg7TCQcg2OumsMDd1RvyA0sOAaEUlhr+ihrsdvgPR/sgqTCgJdW2/izC1tDPFeh1df3z1dRcEnRPvhZez2PI1FxpXSMGz1vW53gwNfjNVOEmQZDLGhizttEoA6S/YqCvcfgz293oozHlD4GBifium0ZeP1MGbPVHPwwwRNXawgTgWrOghcLuBbB0hMFGzVEkFJmrTipbo4XJtRoTlX6d/udR6KAa3WfJvh0ThrxOQChFAzQPAeB7U6ESxsdzFUpE6zlRehFAmXXBANJv/O2ibYfE1LIASG0YSf6YgYhAc5VFmotFWBxDoOnCzAQK+idC6PFWLezQiHR00WsFwvcr/kU98yWcVW3C1yLwtLTcNxUYh8lpNAyuEIoSFEWCzLe5Qa14gB6sb2Q0KSiQ/5oTS/GpY0uAi06SEn1SSLxwnIbDx8fx2TJIZ8t3ZoMBUXzNL1oyNTUNkhptt4KUO+F+M3PXUUniDN1qinJy43MexkYo0U5b5vECfMitPwYjmFgpenDiySCmAjbKefB4EDeMTFbtXCt5qEXxAgTBUdI2AbHeMHGdjfUmwtqvb+83sbFjQ5OTBbwE++8G0XtS3UzDuL7ZRxOlojMHGipPmPUnp+tuFBgaPtRpiLN2SZmKy4eOFLFG09MQOjd9Dc9OL+v+uqNJybwwScXd33/WJ48+65sdVHrhnh5rQ3T4Jl/3e/9xRI+/MyK5viM3xBxc20Dbzg+ji9crSMSEludCIkOQJeKJvyjh24cxnyt1sPnL29jpRlA6KzPtACTirzVvIiexe/4a0fx+cs1LNY9zI/lRhahKaI3uHu/61AJ51ZbCIVCJITeONGEU3BMfO/bTuDljc6+7b1v0kIFBW32zBm49ijjnBIfmO6Jk3CFWkOOZYy0UNmLEL4TcRtEF+s9Qtccy0BOo1ajxs4Fdc+CWqs2QyHx9rumcddMCT2NvP3a5xbg6F3lcDoCsjZ5qv5MlEI3SHBysoj5sVzGDUwX+l4oRqMsSgHvfjfwO78DAPjDd3wbnvyeH4atI4gGkb0nFxp414O5rCA4SAv2Nx9bwKcvbIKDxCflnInjk0VMFAn1TPMsXy17hvQZXG54qHfp/chbFHy+2goQXq3tyw08t9LCh55axpqOBiw6Bso5KxNm7cmNGyLQIaNrGJzBMFh2/oNjr+dxFCre0Z5zaWxaq+sf+Jq8ZoqwvGXAY1QAGIyBM4ayYyEwyFvoVsdgA2cQIQMAJALX9eRIUn6akBOpYGuVW+qOTAHLCienChASWKr3HcoPWiSm6reDjp2FVurrRBMqFUY7f56h75gupEKXCTT9GFJRdJFUCuWciVNTJeRtI1NB+bGAwRhs04QyFPxEZIRxQxebJueQsl8UR0Jmyk3GVXaxE6GgpEAI+j2DM0hD4YEjVfyrb7gHJyaLOL/WzlRsQUQqvW4kIFVEBExd7HWCWEcBMWx3QgSxzNCn1GySgb4jTojIe/ehEqCAC+ttaq/kzKy4C2KJ0zMlvLjSxrNLTXzlsXEUXQO1bkT32aaWRBj1SfOmQTJ40wC6QYI4Uri83Rsyso2FglSkkEyd9zmjQuILV2vY7kSIZd/P6wN/dhkrDV9H3ljZotXVId4Fm/ycqjkTQSLhazSQCPDkGTVYkPe9rg42MUtJbuQXNzpY3PbQ7JFoYecoOSYmSzbWWwHunCmh6PR3pEqRj8+xiQK+5SvmUcnZ2GwHeOJqHR98cnFo1//Os7N4dqk5kty8V1xNSsRPNFJsGmTJkbeNoWIujbCp5iwsbHf7oeFumn3Zn/jvO1xFNW9hveXryCami2yDEKxWgGrB3pcX1vAiXK97kFr8AP2MgwFMkSVILCS8MMGLqx18x5uO4Rc+fXlfnpCUaggBEYK6AS0/0ZwmKu5ci+PIeB4nJgs35MD9yfNrqOYsMEUctLS1mUZ0GZzBMSkjNRWuzFWoIDlUViMLxqMT+SyuJy3ydyJufZUbecs1vQiJUBgbs/Yskr0wgZASTy/WSQWuJPwwQTHXR/F3qjZ/8/FrWYbkW05P4c8vbmWIa19h12+TD4mTNOI96liAfWwgGAPOnIEyTfz63/8RPPc1fwfFHRmQGbK30cFvff7agVqwqahkqe6Bg6GSMyEUdomabpc9xV6E9fSZioVEohSqeaIhuIrymtO2/Sgu1uAm4tRUEVc2yXtyuxOiGyY4NVXa5Qk46Nf29tdNoRuJTCBRsDj+7OI2Lqx3yAaH90lL+wkdDhKbJvdrJe0Yr5kirBMmcPIOiraJKJGo6Gy1F9dawGj+6c0PRgVeunBLCWx2Aiw3PFyv+5mkO4wlJooW8vpYBt2Rv+nBw/CjBB/48yuZCOBmxs2geoPKucHfV6PgNP1HKW8o9QPi2oIjb1N00dnDFXzwiUWcW2ljruri9XeMYanh4dxqG0XbyMxtky4VOByKDDI1V2nwHBIhUclZGSKUKlOBfoyR0EiRUAphLHBls4fnl2m3FMSCELqKgZxt4unrDcre1G0hpZSW0uuCMuyftFTEzeMGqWlIgEDZjQ0vxrn1NlZbQVaU2iZD0TEhpELBNnH2cBWXtzpYbwdwTEMvxoTwdPVzkHICTYPr8+9vBtIWh9BVuAIVxak7ucGAnG1iuemjFyYAI++ulCB8Sbv85x0j4/yki1Y7iCGVwnjBxmTJobgdABc2ughjgfGSjRNTxay1VbQNXL6BvcLgOLfSwq989iq+tFhHN0hDuwW2exHuP1zt8wf1QzhXyaHRI27IRIFanr2Qioi5ag7/6K+T0TC1MVb23PV//9tPZQ7yg0jdzriawbzAtHBQULhe8yAU8PDx8V0u2s8vNxHEEk0vwjVtWJqaqQ5O/K7F4ccCtmlgomgSoqo5hQAtesqLMsPhUePyRjd7v4SiFn26u6KcRiqaUs5KwTH3tQAAgB/90PMZAlLXgiAAODqeg59IRDpp4Y0nxrHVifBbn7+GjXZwQw5czjYxWXSw3g7Q9qlVnxbtBe0EHwvi2E0UHbzz7Cw++vzaroLxylYH3ZAQ2/d97OWhllpKf0gRt+FjgUbYGY5O5LFU93e1pevdEF+8VkeYSFza7NL7roCF7R6+8ug4xotO9kzsp9oc9LuaKROCSzw/DImTlFJo+DGKrolukODKZhd1L9JoOMN43sZMJTeMsqQESAD40R/Fha94G/70MnBsH2RvsUYJHUfGdrd2B1uwV7e7WfFzYqpAObOKuMw7RU23w55irxb2G49P6HgvE8sNfyisnjFtP+MnmK/md3mx3TGW37UpyNtmpsBu+wkub3XwNffMDFEkhlArzlFyh9nhd82U8eJqC+fW2jg+UTyQ0GEU2X9nbNrNtHJfM0XYdMmB6TrY6oaIhYJrcixse4iTm21G7h7p5VYKUIw+L50wokTi/BoRvg29KxaKSNMFm5Ll8zapqVaaHv7o2RUs1f0hR/9Xa+ws1gnxoeLxRvWf0r8fCYnJooMgkTi30sa7HpjHt7z+CFabfZVcSSMxbd0WkzINDVcZWXzUCBKJpBdlhdfOn0uROoMBJ6YKWKh5eO9HXoRQxCObKbuIhESRm5gfyyFncTx9vQHGgMmiCwbg0lZHG+4CYMNcPAWK2inYwHTJxWTBxrPLTby83s4Cqm1tlhrGElESZW751bwNP0rwnW8+jvlqn7dB4dfE4zGAbLeWhnmn94GBwbY0b2ygJ60AmJoXZHJkge4c0ApbantRBigVqClKkaJhQhJC8w8eOYrVVoDLm100vRjdKMFUabfQoq139Z+/so3PXtrEW09P7+nN9OxSE//l89dwbbsHzklVCgCbHYnNdoCnFut4/dHx7POVlKh7pFCbKNqag6N2yfQPok788DOr+JfvvHvXsQ25dtuFobxApShuqewSRUAmEtdqHhHG9Xc0vRj1bgQvFrjzUAlNP0LTi4fMYL/7LceRtw2cX2tnHoIm52ADmZyphciNRmotonQBvnOBTakKjskzU8n7j1RHKuwGERCmgLzD4ccUsm5whkiayNsmcpbSdi7AbCWHK1uExM9V8yOPMWfTxmK67GC9FeChI9UMZfAigfW2j/V2iLxFyujBe3lyqjhUMJKFB/FkD48RrcELE3xxoY7zq228/XXTGMvbYCra9Sx7UYK8ZaBasPGW01P4+Llhz631VoCnrzcQxCITxwDQhPAEj1+p4cE7KlhrBehFyb6qzX/5zruHit2UHmBySkMo5yx0g4Q2D5UcJvI2nrreRCK1KbIutLphgtVWgK+6a5pQlk9+EviZnwE+8hGgWKQN1f33wVl8cd/2N9do/o1asBc3+nQAat+RgKKSs7JipuUnaAcxNtvhK7Kn2E/Fen6VOgdzZXdkWH3anehFMRa3vSEvtlFpJWMDiuaWF8GPJb7tjXdkEX3AjUn8MxUXtW6I4xMFNP3oQB5mo1IASg7ZXqTim0ru/xDzdw3bNKAYI38jEAcKSiHe2XPTY9B4decYVRwN8rcGF3GlgDghJ+9tRUoZkilbCGKBrU6AoxN5XN7swuJA248pqsegxXkvPtdBx80UcoyR8eJ4wSRbhRt8OWMAh8JmJ8Cdh8oZl2CnSi7U2YVBTMauRZdMV7e6IaKBIngnBy4W/XbgKHDO1P18kzGsNQMIqSj7UPO26l6E3kofah8vOnj4+ATW2gG+803H8NmLm1QgQ7d70G//Dl63OyZyeN2hcgbR+7HAeNFGqBWxDGTuGCQSpiFRtMkp3LUN3DVTwompIu4/ArzjnkP43KUtvO9PXsJGO0JRRyZJjeTVexGQtqAYPbNphFU6X3GQ47yUxAtKA74HmY1pG4uDSNIlx4QfU8vR4NB+OAzzYzl85187jusND08vNvBfv7CIu2ZKMDQPrtGL8NJaW98nMt784f/5PP7ayUl871tPDEX1PHZpGxudUJPJI3AGTBYd2CZNfpO6wEo92d5wfBzr7QAvr3e07xjd+0MlF28+PYn7d4TBv5KolSyfse7hqesNbHYoAzZKJPxYwLEMHKrkcGWzA9fk2O6GWGsFmK1Q+/TqdhexJAR3vGDj9HRxyAxWKYUPP72Cy1td1LpRZs9S7w23vr2I/OeqOZt84vYYh8ouXJNimpQa2BgM0AUMxsA5cTRT1GInF2+wcJ0o2lisefBjoQ136e+bXoRDZXeI05RGshkcN1SdfsPZOXrPt3qYreRQyduwTeJGTpddfMtDh3fdy0HxRsuP8dtPLIIz4PShEhhjA/YeMa7VPCxsU8zaTMXN8h59fbwTBQeHyg4UsMtza70lsNL0IaREwTEwWXSQbpknixz1Xogwkbiw3kUQk1fijVSbO4Un6y0fT1ytE89vu5ct4O96cA4/96cXKBZMKTiWAYPxDLFPmCKz7F/9VeAf/7+IJ/O+91ExhoPF/ZycKmRiG6IsyCFyeXqPgIF2PGM4MVmEF7aygpZrsGBhq4cj47duT3GjjdK5lRYaXoTpkj3Qyu1/TyqQurrVQ5jIzIvNj8SeaSWpoCJvm7i23dv1Xh3EmHa8aOOf/s3T4IwNqTXz+j3YeS32SgGYKbvYbIcAFKaqu6kXe43XTBEGAEJn9pkG0NNmoXuVGfshQTt/Rw38IRtYvpVGS4oOPfxFbdKXTqo5y8B2N8R2J0QiFfK2ic1OBKQokf58A7fuGXbQAiwDaRWhJGWXAqdH1WEs+z+ySGgHQk8ufS7Bzon2Fz59CU9da2TEVds0UHZNbHfj7DMtg2mCOgV168MhbpIuVgYPxzZ5RhRPJBnBNnyC2l3LgGsZu/zD8o6JIBL4+Atr+Oyl7ezz+upL7OLhkXwDuFbvIW8bGffL5EAQJ5oDQCcRRAJPXmsgbxuZD1B2jTnDW05P4c8ubOJjL6zDj0nezgxOBqwDJGwpJbpBTG1MnUGpdB9ytuJQOHw72OX5lSKLSgESCo5UOHWoCMc0UNOeXZ0w2eVU/tDRMfzRc6vwY4miwdHoRXj6OhmaksqVZy3jz17cwsJ2F8cnC1iq+1lkUDlHVhgAIMFQ92KM58mA1bVMjOepTbPZCfHkQh0dHQ5/z2w5a91c0FYYpw+Vhia/2xG1krNNNLwY3YAUvBbnmCrZuGu2gl6YaHGHhJDACystrLZ8HCq5aPsJHNMgsQjJnzIlXZAoPH6lhtmqi+MTRRQdE5udAGFCCE8vTDJfrImCjUPlHBTUvu2eN52cxJHxHBa2e1mrPCW3c0bXtuCYSITCvXOlPVGLQVXhla0OJGiRIxSJfobyNgmhTjlN3ZBQwqmyMxSpk45Bvsw77jmE+bHcTbuhpwXj1S3KXJ2rEsJR64Z4dqmZ2XtUc+TDKKTA1a0e3nB8DLZpZLyetFWeojeDnlsvr3fwgT+7TBYxlqFjs2QWhVbO2eiFMaFDLoltUnRov2drsNi9/0g1838cRCCvbndxabOLnG3ohAqyA2J6HVBK4h3/5efAP/s/6Eu+7duAf/Wvhq7PjeJ+vuOvHcOvfu4qnrhapw6LVuuXcyaOTxRQ60XaxqU0VIiM6bzblBMZJRQ/dvdsGV9z78yBbC72e9722igdmyig7kXY6kQouQYaXqyRSWrh9sI44zvOay82MMr1PTFV2DOtBNibRH/Q7MqUR/y/nlu9odEvsHcKwNvunIL6Pz5ho0csJHwhwBkRu1MSu5Wq8fb4vfSWZcqkgT/nrN+WUxjtRWZwwNGO4GFCHCfToKgRKRVC7VbvmISeAKSCI8d9+rZbLcDS9iJAL0FmpDhicM2virXiCOgjQoxpdWnSd2Hn+jNtgwqStaYPw+BDXJfBiTYWCvcfGcN6288k5nHWtgE4I5QhZxnohTH8TjR0IikCkCJlnAEFh6MXJZAgkjHxxOiOpU77O/3Drm51yaQzTIYSAtLCRfOfs+uU/vPyZhcF28R0ycXcWA6LtR42WsGwwtEkN/kN7Sc06AM0eE2++aHDeOZ6E1e2eoiTCK7FsuSEdBiMZUHarmFAGgpxojBTdvHG45NYb3tYbwbZd3PWt/dI9EWSAHphgkubXcxVcliq+3tyXv7J20/tatm1gzjLAUwEKUwnChZqvQgXNrpYb9F5mgZDyaJi2NNecyYjTl/TjzFtMkRCwYspvQBMoemTUOHEZAEbnQCXNskuBAxYa/r4lc9cwX/8ew9m1++VRK0Mtkjumy/j+eUWGKP3PpFkybBY62UEdZNTq6/ei7TRroCpVcyDn59O4mEiMaed95Xm2tV7pHYuu2TDYZlGFl10o3bPYE5jN0wyJSzjgJTU/horWJgoOvuiFp0gQRCRcCZMJCYKNpoekZ8560eUNXoRporkK6bQd0x/14Nz+MUbEP5Tf7hbdUMfLK7r3RB/sVCntiBjiJIYlkFcyrtminh5vYvnllp4w7FxVPI2/Ejg8lZvF3cnnXc6QQIJsmVoDfDeGAjxK7m0oWIsFa/wXYt0J0jQ9mMIpfbk8Y3y+Lq40UE3SFC0DRg6w9fQqtFSEuBHf+dn8Nbzj9MPv/e9wHves4vwdqO4H4DU4lEiM9U2AGx3Qmy2Q9w1U9rTxiVt5bWDGFe3epiruii75i7By0GipEbdy1Ej75gYy9koOCZtBhjTKRCkjmRgiAWlkpyYKg5dj7JrkYvAHmklgyT6naKAG6mnv/mh+RumYYxSa+713APAC9fW8D++/0CX7bVThEWJxFTVQSIVEZmhWzyaXwOxuxBL3e5TwjiHyhbKnG3AMcn9ejC8u6+mA3KmAaUoUNuxDBRsAwosa+0oQO+wabEtuSYRZhm12eKbUFjsHAzAeMGCxTlqvQiuZQAm4EcJRtHghCTEyTZ5dh56A46CYxLK5JFqyDI4Sbn1ucVS4eKGQLVg4XeeuL7LOyp9OY9NFjBXdTO5dq0T4vmVFiyTQ2hj1FCHSg+if2nhNdiqVArY7sY08Sqg5UXgBse0NphMOQ9pK6jWi3BxvY1rdY8UiTxGNNDqTP+Zqg7Twjr1sTx7uIqHj4/hg09eh2saePBIFU8mdX2dJKSiTE0whkNlMo8d5bdzbqWFDz+zAs7Ie6wbJGgHaqi4BzDk10VGnAymwVDNmVhvB9Di0kyxmrarhBzmEnIGtHoxttoBOKdifxTn5cNPr+ANJ8ZxfrWNp643sd0NoaSCoZFJzon3wEAFmdCbCoUk48GVckAnjCFlH7lLZIL1lspcxRlnyFm02MVC4dmlVqbIJAUoPXd/en4Dv/7YVXzPW08COPiOdmdxs9MXqeyYmCgSl2ssb6EdJHhpvQ2DIfOdA6Nr7Vgmal1S9o4XjKEIm/S5bngRXIvD1tYFfTfuFvxIoRPGMAwOzhiujCgY9hqDOY1LdZ8SLSRxEI+M5/CmU1M3zN0ruSYkSG2Z3qOxAkMniBHEUnMR6ZiPThRgGRyXN7vZMd5M5t+tuqGnxfV6K8CF9TbZyJg8U0wH2s/QMo1M7LKm/QxvhLhRLi/Z1kiQspTea4U4lPB1e/joeB7HJgpYrBPqBwDLDR+LtS66QQI/lijnTHzwC4v4lq84MhQOvVfheV3fszAR5I+o3/djURs/+1//JV63fBGRYeH8T78fD/zYP97z+uy30P/UR89nMWcLtV62uU0jvg6V3UxIsxeqttEOUclZ6EUC51bbBy5A9ruX2UZJqV2h5eNF8jd7YqGe+YR5sYBjcFTyFlpBknmxDQ3GcHq6hC8u1rGw1cOpab6rmHr4+Bj+6NkVPHZpG5sdajUfRD19z2wZP/XR8wdSmY7aVI967o9PHvxdeM0UYXceKoI5DjY6gQ4i1kXGAJGLDXC6JFLSNZmxkikfKeE6vg6kzhPhPJX9p0WLwRkqronpSg7bnRCxkDhUcbDdCTOYPW9TKLhSQC8SGDMpOsLg0BPuKyODmZzBjyWYRQo7y2Ao2AZMTejuhRKxlEPomGMZOFR2EAtASKEjHWgh92OBas5Gw4sySb9UCgmQFQenpop4YaWFlebwizv4cg7uJos5U7vVU1Ha8lNfLDmE/pmcdsOxkEOh6hxAyTbQi8knzDIUJosOkaw15yFNBri40YYXJoAiTpStC+idfLPBf+cAHrpjDO979D6c0C/VEwt1vLDcgmtybGpzVZY2oRlxn954fBK9aLcP0CAic3gsj9PTRby42sRL6106F9dCmFD8UGrOmYoGGOg/Xl7vgvNehrqaBsvUoaPsTMq6vRIEEpYJCpHfwXnJ2wb+9/l1PL/SQhAJNLyI3L8BcM1nIfNPYKMTZryiXpggTKiwswwONRDplSo/paLQY6WgUQ06Tz9KIEAIdSwkDIMW3tSCI0gkfu2xBTx8YgJnD1cP1J7ZWdzs5Ys0WXDghQLtgNIjvDBBNWchTCSqOZLph4lEIoi/aWjlaTU3vLB0wwRBLDFbcTNrAgAYT9s9W11stAMs1j1MFOybDizemdOoFHDqUBFjeftASNOxiQJmKy4urHeQuoOk/nixkGj0YgBkFdH0YxgG23WMtzPzb69jPDlVwMdeWCcTZoZMYckYwIQE4wyb7QBnD1eHxC43OpY7xkhUkHJrGRtGulOB1Fw1l9l8PL/cRMtPsNEJIPTcyBngRxIfO7eOl9c7+Jdffw8A7GliCwCfvbCZUQsck7ZJYSzR7QaYaG2jka/gx979XvzId/2D7Bj3usajFvpB772ia2K8YO8qeOpelM0/exXU981XUOtFWG36N12AjLqX6UZpIrGHCsO0a5TG96Ut3EEOVtuPh7zYdg7XMnB8ooDjU30TXcfimK9Si/8/f+ZqRo2YKNi4c7oExzIOpJ6+Vb7p7RivmSLs4noHoRFnhp3QqJaQA6ZteqHP2yaE9gsSiqDQWBCcrRQy1/DD1Rz+P++6F5c3u/ivn1+k8OcwAQdxpQ5Xcpgs2HhuqYmXVttwTI5KjhbaTkImdYfHc3h6sYmWH2keicrakLcyDE6eREIIBLFALARsg2mVkkLJtTR5k0QJtW5IhHKNGJGqjtpH1ZwNoShX0jQAP6adYzdUEPpaWCbHTNnF3bNljGmzvJ0vbvpyPnm1hkSoTCVpUPQfNPiXKSYHT9/VaKQfiz7ig7RNytCLBPGmdEu31o1wdDyPM/MVXNnqYL1NpHL6Pg4FQkJjwciwNxbg+gPTIoaD/nuy5OA933DPkNomdV9+drmJKJGwDR0ErqGzRBDhtpyzhngko0irSil0QpF5SSkAEwUHnTBGGAuEyQBCxgDbMrQFisz8zFyNXPrRcPYnBz3X986VieO03IJlkhq3PADlN3oRrmx20Q4SnJggJNExObpBC4m22yjnbERCoqH9fbLP189MvRdhosAI9WEMEoTGifS+6pNIpMKEjiZ5aa1NxHOkBqS68GZMt6gZemGC//L5Rfy7b6nsG4s0qrhJC97RvkgCR8fz2O71+ZiJpAL+UNmFaxF6vKULTs5pg/CJ8xtwLCLrxoKoBEJqfteOyXu8YMPiJZRzFr77zcdw10z5loqXNKfxZke6qN83X8Fjl7bR8OJMpZxoUUclZ+H4VB5+JPFdbz6Ou2ZKI4/xdmX+jRqcMzxyYhIfeW5NdwSYFpawLPC+5BKlYLsbDYldbjSuNzzYBqUwpPNVep+UfkYZqBC7d66Cd56dxb//0wvYaPs0J4Ha6vR+SxgJw8vrHfy7j1+AbRFvcidytNzwkbPI8He27GrzZwWL0yZkqTiB7/m770WcL+LkG+/HicnigUPHB8eu1l/KU9RDSIWNTjjEkRxVUEul8N6PnL8tBQjnDN/04DyeXmzg8SvbmltMCGwvJKuajXaA82ttnJmv7Po8KdWQF9sotPvBO8bwE193F643PC2MCPD7Ty1p6kCUUSO6YZJ9TxojtZd6+nbwTV/JeM0UYUEi4Nocsd61k68ly+I1oBQEqB03VbLBGcNGhyTWm50AfiR2kdSfvt7AP//vz6GmXZtjQfYLhsnR9OPsIbhvvoInFmrwIoFAtzZTjxbbNOBoN3ehxJBaZOcYbDONGnmbo+hY8MIEoUZQpAC4SRw0P5aYLPLMhNSPBYqOBdMQGfrQCRO4poGJgoNjk3l0ggQvr7VRdkx4MeULFmwqBio5CyenizhczWWT26gXNw2M/ePnVrMcNdNk8GORtXoNDLRAB05USPLPkugrBA1dNHMGWIaBkkYo/EhgsxNoHycDZZfakUt1H65JnllENGeZKtM0iMdlmyy7f7bJMVly8M+/+nU4e7g6dI3vmS1juuzC3uxkGYwGJ+f+kkPO7wvbPdw5XRziKI10WQ6SzKk8zfzjOYbJooNYEFG11iPhgpO1aAjxck2GIFHoRQJHx3Jom+TqnT4fhGAyrLcCTJdzyDkG4oRCuLOhyFDViwUck2G56aO70ckEAkL27Rs6QZy1OmIhtDcSVdFeRN8tlIJpcDBGO9+0tZyiCbbBcddMGfNjOSzWe6h7fR5cquak71VQmud2ZauTRQddq5Ftwrc9fAcAoBeKkWjIYMG7ly9SrRfioSNVLGx7eHGNPO2iROHSJinlfC0wyFkGcpaB6bKLK1tdnQBBzuzlnIO2T5yaqaKD8QHXbaUoxuT+w1V87b2zr1oEzKgxuKgHEc0p3TBJHZnAGFDOmTg9XUS9F+Ps4Sq+9t69Y5QOMvYy5zwIgjZTcbO81dUmiRosgwQdJb2Id4MY6y0fj5yc3JdPN3gsTy824EXUeeBcZJwwgJ4t1+LgnKGmTVqfXWqi7JjY0kicrb2fFMiMUypKu/jiYh0nJgs4M1/ZrQBcbaHei/DQkTFMamXfux77EDZKE/jTu94MMIZz0ydwz1wZ3/PWE7fERQJunSO5s6B+bql52wqQcystfPjpFaw2fVLEM2SgxlTJwTEtFtivtTeEdpddnTwQo+HHmKvk8M0PzcM0OU5MFSGlwh8+u4KGF+NQxcVKM8ja7rbJ0fJjLGz38NAd1X2LyVfCN70d4zVThJmcSON526DAUgFEOoMvfZHSBWGq5ODNpybxK59dQK0X7YlMJRI4v9YBY+RcHgvaNcdSQSUSXSRY2O5hLE9cGjAKpc5ZBhgDelGCK5sdUEsAsHjfsHTUSBezUYeTkrMbXoR4R7UohIQX0+TUCWJYhpHJu6dLDi5tdsEZ4AiJ182UYHGOIBG4uN4hiFtI5B0T985V8IbjY3AtA7/9xHXcNVOCaeyWI+x8caNI4KPPrxICaStqaUqVye+JCE3kTG4QKd2xOEzO0fSjTESR+hk6lpGFbgN0XjPlnJ7wYzy33IRtcsxVXOQtkmuPa0WNZ0qEscjI5qYu5lzTACCRzxl4y+lJfM09M5it5nB5swOgv+BLRcf/yPEJPLtMLc+iY6BgExrCOZFNF+o9vOHYRLZgjHRZFsR3ccx+USh1H8/SLvoAFZ1SAWFCxY1jcZQcC90wRstPcL1BwdGDt52BnrW6F2tXdOJwDd4u8teh4irQ0U+pn1H6FEaCigmhVbOxIIiAM4acRUansZDkks7oKXVMA47FUc4xjOUtrLdCuCaD0CgyYwxHxvJYbvgDx8t0+4YQUgbtaSYUnl1q4refWByJFIzanQ8WvPv6IulMxumSg6W6T/YMloFOQC1Speh9dEyOtaaPnMnBOUfJtXBmroxyzkKjF+HJhTqeXWriDcfGkdMK6P3MHm809mtN3WiM8mkio2JSo7oaGeoECZ5dauHEVOGWLQkGv3MnkjOWJ9Vbw4tuiO6UdDut6lqYLedwQW8EUuQu0Ju/g1zPwWNpeTFWWz4SQe0pw0jnDOJnUYuQqB8XNzq4vNmFa1H3Iy3AAI2IGeS959gM7ZDyOLsD7b+SQ/PMWM7Spr8Kky7Hz37mV/E3PvU/4ZsOLs2dxubUHAzG8B2PHHtFXKRb5UjuHLerAEmfu9WWDwUqrIVGXE3dDRnXljX7IWsp2j1o9pxekxOTw+cy+J6nqHTfeyx9z+MsqH6vYvJ2XctbHa+ZIizvmNS6AvGLlNKLoFYepcR0i3N0g4QKAqYyBdHgGESk0tZYy48zCJsxhUQQZ2qz7WO7w4YMN20tcy+7PCuauG7L3chTYq9OpVTYFb+U8iq4ziUkLhxweiqPMc2dUiCIeLVJi8ZWJ0StG5GrulZRjRdtTBVtrLcDPHa5hkcfmkc1byHQdgY7x+CL+0fPruDnP3UJizVvKG6n6FJgMPHAFCIh4ZgGKjkTBqciJEokWj5x2CwDiEW/66OQTowSXgSsNCn7suxauHu2BMc0sNUJcXW7lznrW5pcHguZkc0TIZGzDYwXLOQdC6+/YwwtP8YHn1xEw4vR8EilOZazMV60UclZWG36WGPE3YsSiVos0LMSlHMWOGPohAkmpYNjEzk8t9xEJWeh4BhDk51SKssotE0DkUgyn5wUqWzrCcPs+4dAafQWDFkxAQXsnFrSNmAsBPxIQoHUWV9abOLOaUIn11s+mn5EKLCimCLLNPotRJUglmlkksquvcXpOar3iJResA20/CRT3Q35LeUtPKUa2OqEGXcMoALR5Czzoks5kKm7vNCcw1hIfOipZWrvHBApGCp42Y19kQo2FWlKo6mUotAXSUgA3TCBxTkqea7VaNSGHi86N00Yz97ZEcXW+bX2TbemBj9vlE9T3iY0L4wFYqXgDKLtr4x6OrLoW28F+OzFbQDA2cMVHJss7HvPhhbBKVroFus9nZRB6O3R8Ty+/Y1Hh+wTgGGkrRsm+MVPX86OZbbsotYjW5aaF2Gy6GTZfgCZGJccK7NJCGOZ+drtHEyj0ELzNFcbPlYawVCQ+InJIoq6JZg0WvjWX3sPzjz/eUjG8J//xruxOTkH1zIwVXRw/5HqbfG+uxmO5KhxOwqQweduruxioxXqYoghbxOfeGG7i7GbiEXyowTjeRsnJ4souiYMxrDaDPDzn7qUPT+D77lUapf3mMlZFqruY+9i8nZdy1sdr5kizDI4cq5FE7FpZDyhwYJK6ELmpfUOLm12hxRq6UgLm0GlnlT94iglYwLkth7syB7a7pLr83jBRtEhgnjbj8nlXO5tlXEzI+XrkCcQBV0HIo33SfDscgvVvI1jkwWM523KLjQ56l4M5pEaLAXkhFLYbIcIYoGqS8q86IsSEwULS3UvM1hMx+CL+9xyE//moy+hqwnQaatRKspI5Dn6PYNDt8qkLsBooY71QTBGfy/1BRaSWnhpVmWUyKw9OVlwMJa3EQuFimtiQUiYBkMvjFHN24TQ6PYakcIVLEnFTRAn+PCzK5Ca55O2GxmABiJMFB28tNbG9Tq1O8fyNlyLo+UnCBKBoB2CcTIEXmp4+Pd/ejEzmXzDsTGM5S2sNDy4toGluodeSO1IQi5V5kXV0dcrfecTSWgZ11LNKJFkgaALo6JjoKetIfRHQSpSxZkGIbAG4zg5VcByw8fnr9YG7leqAlWwbTMrPBij4lDGAjmb0J9uQK3ckmtBKoWWn8CPk6z4t0wGroUsxyYKGfn/2EQea60ASCR6YYyCbWCtFQyJT9LnXmlVpWWQ3CFMKIh88DkbRAo+9NQyXIsPtSZ37u7HCjbunS/j4noH7SAhR3sG3DNXwVffM40PPnkdZw9XsN4OsFjzMoFNejHS51ApWjzytjFk8jxTcW+KMA7sjR5tdkIkQu1bcO7V+vvcpS08c72BsfxAGLFuOafohB9JvO5QCdW8nVlmHJR4vXPsxXNcb/swDfr3jXaI+WpuX3QnXQRfWmvj0xe2tIluojfAVNT7icCvfPYqLO2gvhNpsw2GtTY9U3fPlVHQRshn5ipoejH8mFrm0yU3c9pP1fHTZQenpguEvjOmW+4SBu8XZCkKH8QkS+7pHMvBIHEvbOH4VB4ngxp+/H3vwYm1qwgsBz/9934cnz/7NuQ1r9LghKIptU+QOG7cCrwZjuRe43YUIIPFpNJedFvdSCuk6R1fbgSYLvsY03PwXsha+kw1vHio3QtgKL3gntny0Htecs0M8S67hHinVBHTYDcsJm/HtbzV8ZopwmgQROlp/pb+o8wrTKi+8eooBEz/1VABdisjFgpb7RCiSIVHyhDlN2R9HWxQsdIPDx7MZEzbPOvtAJudEGN5C4+cmMBk0cFzy030QjlkAJq2wlo+OVUDwGrTRzVnw9a8rpNTpV0v7jc+MIsf/4MX4EcCEyUb250ICeiYiIyv0PTiYf81Sdl81bwFIYizZnDdNgY0IsYRaSRLaG4SM9I2Fqnanlps0gQAUg0yxeBqq45EUJB6LPrnGQuFrU6YkfKrOQub3RBSUqvKNsn0db3tk5pWIzR0PITo9cIE290Q0C3OUMvihUzQ0XyW8aKNRi8i9ArQBosDqQiJQJmZmB8jG49elGSFVZhQTIltcFhaUBCLdNfHwDmHyQAThO6lxrZCEN+Na9VtEAttjcIxnrew3YsQJXQMcSJh92E3ikSxDP28kwXHdNkGY/2fSaQkR3LbwMMnxnFutYNaN8KXrjdwarIAoYDrdVJzMgDPLrfAWUt7gjGYUEOWKQrI0A/XNuFaRmbkOTjStuL/Pr+OF1ZaGQJ1arqIb3pwfmh33/SIG+Lr1lMiJWaqLt79yB1U6Gn7lJJrYqsTZgkGTH+P1O+kApG4LZPDNBjafr+Qdyx+YML4KPTICxM8cbWOKJEjsyvTxUcphT94ZmVk6+963cPlzR4KToCVpoXjk0VYBkPbp3aMwRkYUyg4Jso6vueVKL/24jmm3wcgaweV9MK47/cp8pajJAiAc7LCiRKB9VYAL5I4e7iCMJZDSFslb+Gl1TbW2j44o3i0iaKN45NFjBcd3H+4imeWGvBjiVo3ok2fJP5nnJBD++8+eR1jeRsrDQ+TRQqUD2NByDCoawJts2KZVBianNBQyyB+bNOLYHzpKfyX//aTKLdq2CqO4Se+82dw+Y67ITQHt5K3UHQM/OEzq/j7Dx95xa3A26FefaUFyCAi1fKirH3smhxMo+aUTNDGVMnZZWI9OK5ud/HCcgs53e4lVbZuC+94foZQvOliZg3TDmLkbZqTy66NjXZ4oGLy1VYC7zVeY0UY9AKZoBcRH8c1OSLR98QaRMX2G6NijfaLOto5Uv+ew9UcALbLPPSVjrQtlAg1lFmnQKpHhdRigF6O7V60yxrDYMh2t/S7GhzQba5IMAARHNPLdqjpi1vrhlhtBWQHoTloKkHmA5Jea84BpduMUtIL3QsTMEaFQ9am0jwkgzE4BkekJBKlY3w0OhMmEr0oGciWIxsBPxKYKTnotYMsuDhDO4CMjN/yYpgGQyRkhsg0/QTTJTJ9rfciQAHVvI12kKDpxSi6FoyBDEcFKjDTa8X0fze8GC2ffM36CJfKgsltnfe43SH1nq0d6qs5Qm+FIpQoUOT0nm4SLN1qThKJGMjMdNMhAQQJwWNXtz0ApPhSCjC4gZJjoZZQy5U8mRS4/nyDkzM72X8ABVcvNJwQyJ7OCnRMDsci7tHJyQLOr7XQ9CI8dT3Wx8hw90wZJ6eL2OqEeG65CQYF1+IIYomcSYVjIgeeMQCVnImCJsHvHPVehMtbHbT9BCcnOWar+SHU6J1nZ7HS8PH8chP1bqRjhwwYBkPJsuAYHB/4syt49KH5bCFMhMqUsUoOX8fU3FQBiGOJS+sddEJy2A8TicNj+cx/cL+xV8tQ6WecMezKrkwXn2euN3Bho40wliNbf6emi5lohlSgLdwxlsu4Mlk00QCFYBTaclBO2l48x0FuTjeR2O6EAICSY+75fR96ehmxIENZhQg5i+aMlhfBi6XeKEssbneReuYppbBY85BIiV4oYGhlbZSI7PzPzFdwdLKAgmPg6etNFBwTTS8CAzBddnFqugjXNHBupQ2TU0eg6JgouRZ6UZJxjQxGVi4AcHKqiI1OqBd7M/MiVAr46+c+i3KrhoX5k/jR/+fP4HphEiJIssSEY5NF2AbHJc01vdVW4CvhDY4ar6QASREpL0ywUOuRXY2mVHDOMqPtbpggZ5t414N978TB81hvBfjIcyu4uNHJVK3lHAWjWwZHnEhwzrJkllEo3j1zZVze6KDWi8A5QzVv3TQy+Gopgfcar5kirBNEKNs5HU/SR4b8WOJWSp/b0TYUEqj1IpyYLODF1fYtO+OPGkpzi4R+AVLUhwFZHJFUAIsl2tovyzIYLJMhTEniClkBlg69OUXBtRAntGM9PlXAu994FBVtP8A5w+9/aQmJUHByPGthUfyIPr7sOFOSLLICCQywDUJ3PEHH5mh7BiG1HxtncDk5P4/nLFJ/KpVB0QApJysuObwvNTzkLAOVko1GL9YRNPRlCtQ6TpGpWjfK2pBelGCzo1DJWSTQUKkIQ6GoW5ZRIhEmFJzt6fYz1wUstbUo31EoQAmF6bKDbiSAmFRgtGiR43WoFVyJEMhbHOWcDdvkaHhx5kWnpETeNhAkWl2qBQ4ZSnuDBzpRgBQSXhRjZ6S0nygYTCBnm6jkiGSes0h1W3SAixshYpEMfUXBJAy31g2xVPdpwcnbaAUxTM7hWhwbnRBTZRcFx4SjkwVirYJTCnAsE7ZSGlkDqjmTArYZ24UUKKWwsE3Kv4JtoJKnLLpB1Oi5pRb+8V8/iR//8Ata/UlFbboQjuUtXN7s4omrdZycKuDcShuHyk52z9K2ebYBUcPmuVu9iGxflELeMgAo/MKnL9/Q2HIvHhAVL/QMpOhRGskVC3o2lxseSq6Fk1MF7fw+3PprBzEqeUu3ZEy0gwTrnRCc6cSQWOxy/d+JthzULiHNnYyEwFYnzK6dZRCh3YsS9EKBUFCA9LWah3LOxEzZ3YXupNeknLOx0gwyG51YSMRSb1AkUDQ46r0440MqRQi2qz8v1M7xiQSqlgE/FllkmWuZuHumhJxjYLnu4/hkHtBdAakUTk4VcGWrh/lqDnfPlPH5K9vw6omOM6MN7XjBBuMMpw6VMFV2db5lkm1YJooOPvTN34evOHsMP3v6HTg6P4WpSOzKdKRUDSocb6UVeCuWFgcZt1qApIjUFxfqmedXmNCcFWlPwVT8lLN55uw/eB71XoT1VgAFKtxSAc9mJ8Rq04djUmC8Am2Y11sB7j+yG8ULY4n5sRweOjqON52awAM7ckv/Ko7XTBG23Y3RiD0iqnOd9Yf916ubaQ6Oiiw6yEiz2zi7Mfp2M0MoZF5Sg2On+FIN/JPaW7v/bujnNTfCYIDtWPCiBIvbPbR9yjlMYeKpkgPTIE5PztbK1NCAFw77Wdm6LbbVITJnziLfqwcOl9EKpM7PI16XY3JEgmXZlienCmQZ4Bh4erGBan5n7hsVoeMFCw0d19IJBOV0Whw520TbjwklEBKK6X+qAe4fqJ1b60VwTVJlhhr9OT5ZQCIo2mSp4QGKVKgMhM6NqockaKdObUKeFX69iAo5qfvhBmfIaV5D0bVQ1BYhqcz+vtkS/uJ6M5OC3+g53nk/pQJqvRg7pyaKkKJil5AdhgcPV7DU8HFN86UskyFJ+vzFdpDANhgWax4iIVHN23Scfoyia6Jgm1mG5x3jeQhJ1g9+LDCet7XAIUVsGSwDODFF3mzTZQdrLX8IKUijZBSASt6CUgr1bpip1NKWRdOfxLjOa0zVpulCCFAr7vJWF9/+8FGsNgNstENYZh/VSK8Xpw569n4KkOJYmhyTRRfHJwuo6qLuRvyqvTyJ0uIF0BuBToiLG51skQ8SkSHXHY2suBapHAt6UWv7CU5PFzMjWtsgvqnBqEAe0wVohr7tQFtGtUlHcdKyxXOji7VWgKtbPcyUXRyfouKWFkkfQlIebjVPG5iaDkZ/8EiVzLI1UpJeEyfHh1A0qTlFJueUuwhCj8GQiTpiKVE2TNgmh21ShBoDzVOZCjaIsdkOcXQij412gKmSi8tbvaECigrEHOpehK89M4OLGx1SGOdtFB0TUgGbbR/r7RDrLR/zY3mM5cfgdX285U9+F5/7ur8PaVpoBTFqP/DPoR5bQBDLrO07OAYL3xNTRSoinlrGCysteLFA3jJw33xlV/IIMLqVfSvu9rdzpP5gTy020PIT5G2pI/j6RtupGGmjTdmgXiT651F2sdbys/zeOJHoqAQFx8g2uQwMk0WbBHBC4fefWsL8WA5n5itfljbi7UYeB8drpggD+kjBkTHK0bsRmsV1ZSUOAHtJkNfVzQ7X5Kh1w9uCrO0cN1vTKQCJuHHxaXIOQxP+k4QKpfd/8hJs3ZI8NV3Eu+6fw1zFxfWaB9fkSPSkGCVkD6JAXLwJnbOXquTaIRHMv7DQgGsaCLWNg4TCqek8JgpOtth29U77jScm8Mz1BgkcLNp1MpAqh2tkQ8q+OSNj6U5rx/nLvnqT6/Yo4/0JHxYhNCvNAI5l4MJ6B0QVIaVjIvtCgtTBfvA+pNc1SpRG9KjoSxf3lKfIGZm++hBQKsRkiYJs87YJ1yLfnOVWiILFdVG2/32l67f3PU95eYM/T8cicXa+gn/y9lP47t/6EhJBxWcs1K6HJBYK270Q43kHAMvI7JbBh2whIqG0I7qONRJKq9PoeqfxRgXHRCIl3nnfLD74xCKeW2pippLDRMHCeitAy0+onRmJjAOYLqZHxwsIY4mtTogoUZirOlmBMzjS1thMxc120+RHFWqxApkRU1QTKSZTcUjqDXdsMp9FrByEXzXYuqGNDz2vqZVG2rq7qj3R8rYJISUaHhG5IyFRcqkFVutFCLQFQMEx4UsymD4zX8FLa21sdoJ+zBhow+dHAiKndqEtAEa2SXdy0oSU+NmPX0C9F2GmksPZuQqFnTd9tIIE982X6ZnO2tmGfuYFerrle261jff+r/M4dYjQm/SapAHUqcItXeRiKTM1OwnL6WdScYRlEuOw5FqIkjBDt0zGhlSwbz41iV/73AIaPsWv9WkLRKzvhgnGcjY++sIawkTigTvGhjZ10yUbW90tXFjvkP1Nr4Pv+Xc/hJMvfhHHtq7j337Lj+Ds4SredHLyhqajO9uMxGClZ0vp/9459mpl34q7/e0caRRbyrdtePSu2CaDaxsouRYc00AsBJpejMcubeOF5VZ2Ht0wQTcQmSWJkJQyU+sRPcbWFJGWHyPnmDgzW97lN/ZqthFfLeQxHa+ZImzwkdzqBNRWOwAath8Jf2exInFzvDAGaj80/ehAhd6tjptB9G50GKRcowKsE8ToRuTIP5Y3MVXK7eLl/NrnFrDU8MFSNEH0jyVVhvqaLK4jKSEVIXa9SMC1aHccxgLX6z4miy5KrjU0mR2dyMM2ODphgq7m5RiMI+8YSJTUajjieyhJasqtTgTLINJoJCgxgHEGriEQzgGpuUExU6QyVGRoK5TS8VMGXJuc3cO4b+abFjRp0TeINgJEkCcRyO67okCIS7rr74UCQhK3ztU2A2EiMetSjFYnFFkB+0ruaXqcBmPIOaSSzFkGvuvNJ9D2Schiah+7lLe189wSQVmJDBLdUICDECNozyWhJ1TH5FhrE1LS8mN4UQJbc3GCWKDomNjs+Dg5VcSTCzX0wgSbHVIuCm2YGQsStaRxWiXXzBbTthdjtprDVMk5MPH5xFQR98yW8ZmLm/jB//4cPC2KkAqAogwANnC/LP28vbhChsyp/H69JfDyemfPHfOxiQLG8haeuFrXKCiy4nEib2OjFSDSk0HaAq/1ogwhTEUyBgeimFDdrW6IbpjAtQxYmgeaSCq+HNPA2cMVKKVwYaOLF1dbqHVDjBeHY5T2jW4BUHINfOqldXz0hVX0AkrOSGOgTkwVsdUNsN4O8cz1BoSk3ELLIOf4phdRsDujVj5nxOkajJM5NV3E80tNlF0TdY8UbkJSMRdLQkgafoy8ZaCSN+FFCRJdwKaHm3ITHVAx3/YTSCjcM1fBd77pGFyLo+FT4VrN2wO0BULWm16ELRHqKJzdYhDOyWz4xdUWas+fxw/+2o/j0NoiAjePP737zVlBa5r8wG3GQWRrbuDnzq20sdq8NIRsvRJLi1drDB7/yckCemGM5Yav1epkCeSYBpQiz7CJooNrtR64Pl7GaMOWIqCMMZRzNtpeBCFUZqskFaW93DVbxnjBvqHf2KtxfhnyGCb44rU6zq+28V1vOoZ33PPKjI5fM0WYY3EkmpAcxKQYkxqt2KtIuVFhxBktcIOIx82gTwpA3YtftQIsPa/b2OXUBHqF7U6AjrYmUAbDSjOAbRoUEpy3MjXaZEHnBCqtBBz4HM6QOZMb+mDTa0nWqbT7NQ2u75vAla0u7uIlrLUDjBds3H+kgj94eiXjo5iauBkJidDrX1gG6Ky8/vWQihzgg1hp3zDavUMpSEkFiWHQZGJr7pZlcBwey8PgQL0Xo+ElEJI8y2Qy3P7d69oPih0GxyAqle6KhQK8WCAQEiYDDM5xbKKA73vbSfynT12CVOSen2gUabCNdtCRfm/FNQEwnJgsYLrkoN6LMVNxcWmjAwWgmrNR60V7Im9KAV4o0NNoJgBsdkK4QYKcRehpEEt4UQIhqLBNi7NemGhrDso8bfkxat2ISPkKUKDdsFQKzGSZjxxXDO2AWsqOZaDsmthsh4gSiUeOTxwYkUjbDbVuRPYkOqaMKZl5Qw1er3aQEMIrlTZkJoRupeXjNx5bGFJrDu6Yz6+1sdkJtdcYMn7MdifEZjvEdNnNkg+6ISVZcMZQLVjwEwEvEvCiBKZBVi5CEc/Sj0S2oC3Ueghikfm1zVVpsZuv5nBurY0TEwX8wN88neWhXt3q4unFBlpejNk0ZFLf0OWGj0ubXdR6AfSrmkVsldxUACBwZq6Mw2N5rDR8gAEP6LzPth/h2aWmRjxN2KaBjm6VDsbJfNOD81hp+FoRTbms6bwB6GJYK4m7IbXlDV3UeZFAzqK5pGibuHe+DJMzXN3q4Z65Mv7tN98H0+SZ8bICdqHgaUtfKeIq7hSDKEW0A9tkeMv6y/iZ//oeFLotbI8dwn/4gX8P9/UP4Qd2ZG7eSHF4s8jWX3a8zs4x6vjnqjmstUIw0L1qBwkqjFT0jmXg1HQxe0bSa2zpTVqKgBpaoeKYXKObAnGicHgsB1MT/b8c5zrq/Bo6XaHlxbgWeXjvH5/HF67W8C2vP3LLqNhrpghLR0q4pVBRhmQPqOsg6JHcZ8E7KPr0SnIibzRejU82BgonBSLQV3J2RqBM43cSoXBlqwvH5DgynofBGTbaobY9IE+yIJaI0zbhQPFhMOIZIFMPMriOof1eAhic4d65Mv7BI0fxh8+uoqF3Yc8sNSmtYMQ95UC/ANTHTtmGhM5IpZAQaINyzkLZtXGo7GCiSK2mth+j4cVwLI65Sh5RItAOmnBMSmFwLU75Zf6NJ4WCbaCts9R2DqX6aGr69wZn2eTjWBzf89bjeMfdh/Cbn1/Q7bs+SrPXc2fyfmj9qGFp/l4sSHFW70UYyxPClPH7RB8F49rVnq4jfehg29U0GISgibgXUfFQcAxc3uzAjwTGCzZytomeRi/TsGTTAA6PueiFAo1ehKYXk4u5pEXXMY1MvGDqgjmRIFK6fjaLLvGSllv+gRCJQYPUtZZPBGGmKINVL8qDz1FatIbatHW7G2Kp4eHcCuXDzpbdzDl/kKtzz2wZH3p6GYlQePj4+FDAcdoynK24qOYsTJYcSKnQixJcWO8g75gwDfJDSxW1nJNamKxf6B16eaONXkjtINc2hjhgjHMcnyii4UfgjA2dd9OLsdTw0A5i3DVTBgC8tNbGWssfibT6sciCksNE4Fqth7OHq9juUr7oWssHwLDU8LDdpaDwWk/B4AmZ9pp8CL0pOmZWtDx+aQtb7SDrLJhGmqZAogilFA6VXdw7X8Zy3cfCdg/NJMZkwcGp6SJsw8Bay8eR8Ty+803HYWrblV4oMJa3wVSUGff2szQT5C0DeceEYQyLQeq9KCPhv+OpP8W/+qP/AEskaJ15ABu/9Xv4h3fMj+QI3YirdLPI1u2O13mlPKdRxz9RdDKPxUgj1bbBMVHsK0NzNtl+pOdRcsyhVIuMF6g5um29Obu40YHBecbfu9G5vpIorez8NroouSYaPUJzr253EepWtm1SpvGXrjWw2gyGfPwWtrsHvo6vmSIsiGXG8QJIIWZyQhGiAZKxrd3VyzlS8+00Wx0cexU5unMFAHsS7o09/vyv+hi8HAy0eCsorRAUYKCdDOdAnBCStd4KNfeFchHJSBaZG3060ms1OCFJRW3Lu2ZKWGn68LXaaL3l4xf/7DIWax7mKi5WmwEt1nr3zAbuAQNxuyD7BqgpYsS19Nzg1FYkdK06pLJMCaXHJ4vYaAdwLY4LG20IqbI4JABD0v/9RqhhdoORX9HgGETPUsQBoIJxrppD3jbwZy9v4dmlJtperNupKvt5zsksduejJQb+zADADfKlS2Tqj5d6HlFhvd0JtXFsjEMVBwXbxFrTz9rG2T0aKHjT4pHakMPHoECTbhBLTJcd3DdfxViechxfWG6i5dPirBSd58trHe1tJnWBTrmUVJACYULFqcUZgkRmGZxTJQdHJwpoeTE6QYL7j1T3RSQADBGEV5seOAeEZJCKVKixjsJQugI1GNMWH7RIdAKBF1fbAIAHjlRR1By3nYiG+zDvxynpqJ7OQPQNU8BaO6BilHMU8yZMnxDEVO7PGV1/IYFIJMRbBB1LLCQ22yEMzjFbcXFisgCTM9S6YSZKSBGE55aa+JNz61mbZabsohvE2OqEeCqsgzFCMUZtEpmu9GNBFjCVnIWWTxFt290AQgKLmtOW3vv03gZ6A5fyuQYRjfuPVHHnVBHfudbG9bqfZXSm/NNYSnT8BEXXxFw1h3/6VafBGcNzS008dmkbm50QLT9GkIiRtgRpPNJEgdI/2n4CP1U2FhwcKjtQCpgqO7he83DKKaLhxTi30kKYCMzEXfzIxz4ASyT4woN/Hb/zfT+FfzQzM9QOG7XwpzmH12o9vLDSyv58P2RLaaVwrRvh5fUOjk0Ubmu8zivlOSWJxGcubGKl4YEp2lgyTu3HiSLxfCt54u2+bqaEI+N5AMDlzS7O6s9/YaV/HmmqRdOLoBQwXrDhRQIbbdp0VwsW8nafcrDZDvG2O6f2PNfRZsg2ALILOsg5P7vUxMXNDqBoHepFpJadLDiZUTiLJWYrLuqao5b6+J1f3LjhNUzHa6YI2znShSLFLXg6uTJifwSxQLhPAbbfGCyu5B7tzlEF2M3wyf4yh8HJv6obkmForRtRAQCKZ7IHfKyEJD8yBYod2uyERFyXKlOoErLCUHZNnXOowHQLiDNgpuxiqe6jFxEX5VDZxWrTx2YnRJBIbLQCxJqUbHJqSwqpMsuLtMWXIm6OaWR8k7OHKxjTFgeLtR5KrkULGeO7UJOvPzuLDz65iO1ulBlSphNhmIh9ofEUQaFWiEJZ51C2/GTPYl4q4mVV8+TVdajkQCjgc5e3MZa3SF2G/jOTWiqkqNdQVvfAcXCDoZLlYBL3ietC2jYNBIlEJU/+Zz/435+DHyeo9+LsexIJcKa0ihJD1xjASKsVxyQzWQGasMe0kpWBIRbI3MfThcnTGyAFZBshaUjYoKIE0L5eWnih0FfTpRNsukveC5EAMJTd1w0T9EKJsbyDdhAjSiSCiJQqLH1QQQkFsVBZYSskFfP3zpeHQryBYUTj4kZ3eNHV1i3pSNH5QUXooBO4rTmMrkkInRJ0L3O6DdvVJtSTBRszZXcIaRtUANomw2OXtne1we6cKSMSTWy2QwzW2On11cAjteo1fzOMJZRLz//L623kbRN3ThfxzFITkVY0EseRUENbG91e3Ojg9DQVY9R2MnFupYXffGwBz620NDpFaBsZvXLYBqfsX80R7AQJHrxjDCemivjGB+ZH3t+rW93sz+4Yy2dFzENHquhqnzvL5CjaBi5vEZr3rgfn8IufvoxLGx3UexHCRCBnGVhHEe/5tp/E126ex2ff/QNY3/aG2oU7g9MlCNm8/3AFK00fV7Z6Q3/+hmNjZHi9A9lKkbd6jwQEv/HYAv5ioYZHTkzi7Hwly7m81XidV6qw/KNnV/DLn7mCxZoHPxa4XvdQdC3cM1vG0YlCVlD1wgQmZyjnLPTC/jE++vrDkIryOlPBzWTRxompAl5e72juKEdLxDAMjpzFh+KkRnU6bnR+6y0fn724BQBUqN4gSuvcSgsfemqZ7o1jwuYMnUBpClGE8YJNG2nOYJsGZivmkI/fhLtbFbvXeM0WYZbJaQJB3wiUMcA0DNw5XcSV7R7ULRZhg+NmwK7/fwHGcpahScOgeBFB1VL6coTaGwYYRnakIn4TA+Vn2iYhMYkElFAwOOUQerEAZwqxAAq2SfmHMcnyC7aJa9s9REKinDMRdSKtTCSitlTU0trJ+QD66JjSnC+Tc1RzFiaKDrpBgomig29/+CieWKiNRE3umS3jiYUanrhSg5ASpo41UUqi2aM2zF6FdPpnnJGSsGADze7+rUsFIFGULJBI4OJml5zyE5kZ8JoGG4rXSvkuBmNgikwmZyoOaj0qKqRUWskYD31XoL3hRESKJNc0UO9G6GkvrmrOxHY3GuLopCaMqZhivyGkgmSkBm5olKqcs4bMPVMz0VhSVFGqVFUDnxEqqSONqJXPNGeQK4W8Y6LhxdjqNHftkkepp3aS0VOCcMmlNlXTj+FHST/aSRe3fiyz6kRB6Y2Bg5lKbuS5p2gPoA7UTvqGs3PZYj5byRGy5ydoepHOmJVauctgcorhcixDh8fHSJTCCystmAbbpQDcbId4/dExbHbCXW2w8YKNE1PFLFkifZ8Njv690D5XMnsOyAm+FyZwTAMPHqnC1NxMrlWMCoTWWpze50hIrDQDNHt0rEfGKGP1T15Yx1Ldg8E4TIMK0jCWiEWkPfREZlkQCYXffmIRlsFxZr6y6/7uhfQ8cKRK7emtHmYrOVTyNvxI4PJWLytiUj7Xbzy+gPq1FdzTXMfFY/diouAgfNvfwGcLXwNgWA07aLmQt000fcqdfWmthf/94jpKjka/wgQNL8KF9Q4+f6WGii6wzx6ugjHi2KXIm5DUds1bBj72wjo+8twaZioubIMjTASWG7tNsm8lX1RpRfJYnnJxP/TU8p4Kyz96dgX/+n+9qIO1VcZbbXkxvrTYAAAcnSjg3rkynllqwtSoumsbQ+jzh59ZgRcJ1L0Ia+0AjsExV83hnffN4o0nxiEU8BuPLSBnc2y0wyHUcrLo4lDZQd2Lhoj5UlJE1y9/5gpWWz7OzJbBtLHlejvIEPyNto+5qrsn9y69RkEsMFN2UfciONqEytb+dW0/gm0ame+ekCrLX77/SBWR39v3PgyO12QRZjIqJCJdhClFlgJ6vw0hFWYrLjrBwfu6QD/i51aLqf1+z8BohOEvY5icI0pUFgoMqKF21177MAVtmM9oB1xwTJQtA9vdUKu+IuRMA0Iocn/Xv7PU8GFw2i0rRWHfZa2QtEyyKVDoh1jvbKEMLuZS9f3TFICLGx1wRnL/s4ereMc9h/COew7tyRt49KHDuLjewUrThxWT4qvhxZoYvfucd6KgUgFSEAIm97lW6e/G2gk/bxso2Aa6Abnnd4MEVa00y9kcUdLP+1SK3OgN3ie1U0tL7FssMaRh4Qp1j3bhnAMFzUeyTQEogTChotJM1az7nEN/KChFZ0u+YAKAlfljJZJaiuN5Gx0/7hOlkYo4aHKUUIiSfuZr6szt6hiZKDn427ezHTRIEHYsA5MGQ71Hk3salaWgkyR0ixAKUBp1XWt6qOTtoagVoF9cnZ4qYbro4PxaGyemCii7VvZzg+2kd9xzCPNjuaEiYq7iomlxrLYo9YEB4AqwDehWqVafFRx0gghCKRg7LkVaVMWCitxRSQR5y0DBMhAb5LEXJeRWH0ulkTrVt3BRVBh7YQLL4HjgSBXjRQcLW134MbmbuwaHkGRLI5RCQxeSnDFIUFGmlML7P3ERRcfEiakC6j06/kTnvqZZqaSeo9+t5iwsbvfw85+6hO9/+ykUtLHtqCDvnUjPO8/O4tml5r4RPWfmK/iecR9jv/HPUAp6+Ll//Zvw7zg1dF/T4rrlx/hfz62i3oswUbBxbrWdqafDWCCUEt0owfm1NlxtwFx2kaVodIMEzy83cWKyiKtbXfhRAsbo2kwVHVzZ7mXWLVEicWKigNWWD9cy8OjrDw8Zkt6I57WTxzXId0uj3v73+XW88cQ4vubM7NCzkSQS//GTF9HW6lzbJDQ91Ju7KJF4frmJ8TwJeB44UsWjD81jptLPUz2/1s6K1cNjeZyeLmKrSyHrecfANz80j/sOV/HcUlMrKPM4XM0Pte1LjgmhgGvbdJ5SKnzi/AY+8vwqFrZ7WKp7sE2y7zkxWdQRY0kW3t7yk2wTOIp7l16juWoekZDorbRoMwbadHDO4EcSOdvMOJfb3RChILubnfy+G43XZBEmFE3AGTox4AcWCYXza+0sif2gw0x5MlK9Klwvzg/mV/blGJ2AEAIwMvXcebpp64Yzal3suhwKUFodU7DNLFooTBTCJMk+w7WouIiEAmdkedABUNbEz05IbuI3uiyDpH/99QBoAVlp+Nhshzg5XcTDx8cB7O8cfWa+gh/9urvwYx96HtdqHmJNEid0T/uJjWgD7hyx6PuW7fUzWQuRkYouRZw4p3MKtMKO2rYMnBFCIUHPcY4DfiLBggRSE9sZhgUQAxGqmcu/VIS2DG5QXE6IiB/RDzNFbcmDviZCAq5FKQgMwForgGuZxPuxOLY6ISo5C4fKLs6vUYRMhH6cWHqx0v/mLOUZKX2NCBGcKDgo5yws1nv43KUtvOX01J6L006i806CcNoOztkGVjM+HMuOwTEZpOJIhMBai8xeycHfwonJIsYKdlZczVdz+J2/WMTV7R7WWgGWmz4mCjZOT5fgWsYuz668beBv3z+XOZCvtwP89uevoRcmWSSLyQm92+6GcE0DBdfEbNVFbSXEqakCepEYiSB4etMyCpGzdN6fzRmKton1TpAJB6QkexYoev5MzlB0TBwezyMRErPVHJRGHZRWHlOAsgkJkfEEKa2DiorjkwWMFSw8dmkbBuMoORYqeQthIiAVy9q+UhH/NBaE0t47V8ZYwcbzy0386Ieex3jBRqRTK2o98lpL0SUAu9IU/sXX3Y3rDW9vgvYnP4k7H/0WGO0WtqYPkw/bjsU1La7bfozLm13MlF1c3OwgTATKrpWh/I7JESSEhJoG02sFKf/CWGRt89WWj412oFWtDo5N5LFQ6w19XidIoBhw+lAJlze7OLfSxrsemN/VDt2L8zS48RhE3VLElCKfYvz8py8DYHjHPYey6/LYlS2sNMneydWu3pwxMLOf59sLBRZqPTx8fGIXMreXGnSmksOhspspZe+dq+x+N3e09/wwgWORKfCvP7aAxy9vI0zIRy4SEjnLyELVD4/3o7uIPkC2KalHX942EA4oLQevUZGbODNfwcJWF0HTR5jQxsA0GI5PFDCu3/H1Frn6T+2gIxxkvGaKsHSxSHfXwwHdbOi/hQLkTeyo08/YazXlbNhx+1bGbeiM3r6hd7FCjDYKTREvnnHs+u2qdPFPX+x6L4IQlB8YCpUZV8ZCwU+0PQW0YavedTWlzDTlctQB7Bh7/Qi1+2iHd227hw8+sYgnFmo3JKeePVzFd7/lON7zhy9CKJXxvWIxrD5Mp+xRXz+IGnJGCwxnHELKLFMS+u9M/QB5sciuG2VGkv9ZoFu8XFdkZC6q0BYJTIOh6BjY7kpYhoFQaP8utdt2gTEGofqIbnrtGr0IvdBAJPqGkuk/1L5l5PDnR1p9eeehIl5/tIqr2x7CNjnsC0Vcq25IgecAsjYaQO8rgz42/Xl5mya9ad2y8WKBjVaApYaHXijw/k9ewp9f3MIDR6oZ8jG4OO0M+h5FEJ4oOii7JpYbPkzOUMlT7qQCRVpFgnh0nAG2aSAWZBLbCxKcnC7CiwRMg2GjHWCl6ePwWB6TJSfLt/viYh3HJwp48I6xrAD7qY+eHzrWas7EudU2trsRTEZ+dilZOI3BAQPOzJYzp/KZSg7VnLUngjAqiQAAijbFwwDAnYeK8GKBejdEJMTQXU4kULA53nJ6Cn/rvhl88Mnr8CMBqRSCmPz9YkGoQSJUFiifPi2OyWFx4Hrdg0IeJufwogTdKNH3QKAbxoiAzBojFlRknT1cwXjRQaMXod6N4MUCh8o5zFUdbHUCLDV85G1qTY9rI910lFwLT1+v4/Er21mBvmv86q8C3/d9MITA4j0P4V9/x0/h0NzhIdR6ELks5yyEsYRw1BBXNC1aZRq1BjLM3eyEqOZt2AaHr4gfBjC8/e4p/M+nVnB0PI+Ka2G9E6DWjeCYPCt6fUlqXeayPduh+/G8hnIet7tZgccYQxgLNP0EiSQD7vf+8Yt44motc+4/v9aG0By+wWFwBpsYwYgF8MYT4/gXf+vuXdf2ZtSgBxEhzFdz+J9PLeP55RakUqjmTQSRQE8otAJSywaJwEY7zBDu1DT4wnoHTHO6chZHVSvBsziuRGBxu4eKToB46I4qDpVdXFjvIEgELIMi87pBkm2gXMuAH0sUDyjQSsdrpggD+m7MO4cY8Wc3Uy9xUIEwaqSPDtcT56jvuplxsCXv9g1Dt257evds65w6pVfCQUJ2OtJCV0kFzsnbiikyXUzDXaXqm02mxZDUO+QgdZSXEqZpwuKGlsQTGhMlShPs2S0XtoPXkYEKHD9O9iWnpmjKs0tN/M4XrmeGpmlxuPNY9jq0gs0RRH0E0TI4LE6uz6ZhwBAyExVkuzehMFVy4Foc211SlQ4SVNPWHOf0rCWJtnxgjNBIpcA405y4/okzNfz7KZK280xSON4y6PPS9yhF3xigkwL2vuYpj+x63cepqSK+/eE7slZFL0zwoaeX8bEX1mjXahD/zzFpNxyl3DGDafTMwEw5h0NlQr4aXoyrW4Qa2AbPyP9PXq3hI8+uoJK3MVfJYaJow2BsV9B3ujiUc9YugrBQCuWchaJNhSghs3QBXZO+pxsKnJwsoOZFaPsxWkGCy1tdfPU9M6j3Qqw2g2z3X4SJiYKNdhBjYYtaID/xdXfh5Y3OCEJxgD+/sE2mtHkLZddCLOl+GIxMRg2N9BkGQ8OLUHRNmIztIv4DfQRhJ+9skOB9YqoAKPIwHM9bqHXDoWeZgQrgk9NFfOebj6HoUM7nwnYXMxUXQiK7J7G2KqBnpS+2KbsWii7FWW20fFgmQ5xQgTFedMhAdruL7U6IMBZgHJipuLhntgTbNFDrhri00dHB7Dzzl7INDscgdPLiepssK3RxfK3WQ8uPhwr0oQ2XEMCP/Rjw7/89/fe3fzu67/05WI9d35cIn7cNOBZHN0iGYpdSnuqgUj7djDR6EUr63hVdC7VuhENlFxN5G1udEC+uttHyyYPN5AxOxJGzKCnB0kXQqHbojfzGduY8pgVjGIuMgkBiIHIH+OJiHStNmg9zlrkLaxCSkguE6nc9zq20cH6tvWv+vBmfs1Hh3IPXfixvQQFYbwdINApX68aQUuoEE2p9TxQd+FFCyJgXwY9Elk1pGRyJpE2TUMBzy0389hOLeGaxgQsbnT6P0bEwUbRxYrKIB++ojuS6vevBOXz4mZWsaLyZ8ZopwoSioiAdt6OQSVGKjLOikZm0PZV9ly4u2L4MoH2+B/2F8ctZgGVjgAMSD6yyxg1apAp0XXIWtZyaXqzbl9rCQiugKGdRZarJVE3JQLLgas6GIQhFMRghY+mLttewDZoUhOpnhabSes77yGfWElTAajPAW05P4spWD7/5+AK+fSCUPPNU2uji4mYH3YBUnOMaxSFe243vjskZxgsOWjzKPJ+UUogkYOvHIxYKrmXANSnKpZK3cGaujHKOwplT6J0xwAAtPLEmayvGYDLAto0siSBFjgYFE8CAYhQDhfOIYxZpS1kXcJwDFqPcy7GCjY4foRdR6kDq7Tbqc6ho5bANhicW6vBjgX/6N+/MWr8528ALyy2YnCOIBao5C4lCVghJSZ5BY3kbXpTgwkYHK00PJdfMTGBzFnn3TBUdHCq5uLzZIVf+WFKOovYZOj5RQK0X4bmlFr7/7afwB8+sDHGEUoLwTCWHphfh1z63QIHiIE5VmEhcWG/DNg29OWCYKDk4OlnIsi29WOBtd07iNx6/tmv3zxj5652a5tjsBLhW740kTK+3/YwukRq8VvNWxg9KQ7nbfoKFrR4Oj+VwYqqI1aaPUwM5mcD+vLNR1h2//Jkr+MRKK9t8GRxwTEpqyNsG2kGMn/iDc5go2KjpQvN63QMAuBYVjA0vyt65NBvQNMjZnum5oR3EMBiRzVMQYaxg4/X5May2fHzpWgNjBQv3zpYzxWeUEM+K8maNzB7GMgml9GOJTkDxVowRamlwjrzdL9B3bbg+8IF+Afbe9wLveQ/uZQw/4Dgjr9O7HpyDa/Gsfb7U8GBwaNNREi0NPvt03zWKLRVafoQj43mYjIx9GRiWmx6W6j6UohYysbQoE9OPIsxWXOIcYnc7dPAZS81lYyFRci1c3GhnnKdHHzqM86ttXKt5GNNt5qZPwh3bILSXTKwl5sp9+4X/x1fOwzEpz9HgSvu2yaHNoMGAth/hfR97aRdf7WZ9zvYzvH34+Dg++OQiLM4onUM/V6ZhgAtCY71IwI0SMAVUKhZWdJ7pWN7O7oEXCVRyFJf0/k9cQsHmaPRi2AaHUtSV6IaEDra9GONFeyTXjWshSlo0TlgHZ3C/ZoqwVzrSthGQogZUYLxupoSNdoBeKGBxBsMCIqm0ukhqJ/O0WLm1EuovqxNJqIciiwDGYBsUTZPWYSkRPCtuBlAxxtJrxlB2jMxdX2h5e9WlVkmKfo0ieSv9800/QtG2wBipDyPRJ9nvNWIxQMaXA/cMo9pw9C+dMMHL6x1s90Jc3uzi4kYX1byFsbyNzXaARCvnoMhmoeHH2Nb8kxshnGnLEqAivZyzESbkn1Z0yU+HrBgUHNPAnYeKWGkGkEri7pkSKnlqq0wUHZydr+CppSYpHSWpBfMWSUJzJsfrZsuAAp5cqCEWBMELuRupS88//eO9TmGQN0bxRQxjBRM5y0QvSlDJ2QiSUAsg2Mhi1OI0SY4XHI12EjIxqMTqheSWfu98Bc8tNbHaDuheKQVkKi7a6JyeLuHKZhdeLNBtBvBi8gnrBFQQhYnEhY0ONjuR5i5SYZuSkXuhwMmpIi5tdlBwTLznnffsSWiWUvWd93WBVOuG0IlMaAcJJgpORsgv5ywUHFLx1rrRgXb/g7YDw0Hl1N4KY5mZ6TqmgfGCjaYXI0wkGr0YjCOL5wGA//TJizi30sJY3kbRNWEwhnWdMpHaGOxnJio1am1yKhYdy9Q8WboP9V6ERi8G5yHydj9P1AvIp8+LBMquiUM6AaDkmtnxuhYhV2Es0A4otszQ5/ylxSbumiljpuLCj4RWLdswOSf+kiCjTIMD3bAv0kj0bjBOpBZ+SKQlTMuLM5uMIEZm5ps69mfKuO/9XuAjHwG+8zuBb/3W7B6Nuk69MMGvfm4BX1qsZwhYIsi0zTHJMiSMZZYIkfI5zYF9uFTAdNHBWjvAfJUK4qYXU9vdoE1OEitESlIbeo+COm2Hps/YTrI915PPc0tNnJgq4sx8Bd/1puN47x+/SB0GTarPWcRndDRyaHAG2yL7hUubHZic4yuPjuHxKzWaq7QNzuC8P5a3ISR5gF3e6uHO6WKWEXrPbHlXizEtFqOEeJVfeWx8SNW81zP6wkoLYUyIogIp69P12eDkdxgJoK0NtmOhUHGtLH2lEySZP9yxyTwurHfQ9CIkwoCfCJRztNHpBAl8/TwpBUyA4fvffgr3Ha7uepcHi8b/4xM2YtgmA9ML/SCAclBvrnQtAJAhQwzkk0MvpUCiFAq2iUmHOCRgHGWXWnmpIu+v+hgka6f8m9RpPW1l7WxBMqUVbJxBat6Q0hNOIiS2e2RtYHGGI+N5KCh4ocjaFEC/oBs1hAQ6YYzD1RyOTRbw9GIjIxfvNRT652EafVk91cLDv5meSy9McG6lpX+HfMKqroUnrtYQJTIj7ktFRPleRPyCgwwJzYVjtHObLNhawchwpJpDL5JoaifzqZKDomvhkRMFbLQD1Hokh07h+FgqPHikAgaGc6ttGLxvG3Jsskg8GKVwZcvBts4VBG6ulZ3+7ODvKND7MlF08MCRKgBqPfQiMtB0TY6mHw+1/BmomM/ZBhzTQCcko8REUst5UImV7pTDuB8wSl0/ml3TdIX5ag7zY3nkbRPn11pYawZ0D6VC0TGQt010wxibnQCJUFn+qFJk/Ft2ySR2reWj4ppDWY/3abuDwZG2RpYbPs6ttjCmVVUKZPxYsE0cnywMKyJDQko7+p9+mGQmroMj3f0DbFexltp3FB0DtsnJN0v0MyGnSxyNXoRq3sJDR8eyeJ5zKy3kbMpgTJGpomviK4+O43veemKoTbSXCOVarYer2z3YpoGCY+1A8YjcHEsJlxu4XvMgQS3G8ZyFDR3LFEuF6ZKDMCYH/9S/j4HetVYQZ1YY1YKJqZKL9VaA55ab2O66mCg6uP/IGM4eLuPnPnERDV3MkcWM0p9JEVbXah7FpdV6sAyOWBA/qenFQ89v2ppPMz/Pept44brEx19cx10zJRz7k4+Dj+D0DF6ncyst/MzHXsLLax0whiyAvtGLEMQCPUn5rkJSYWPr5z7WG9iUEJ6qstM5cb0daHd5J1v4UwsayYCxHGWrrrfJI21nOzRt2+8k2wexQCdK8PtPL+P0oRLOzFfwjnsO4YmrNXxxsY6CZeDSZg/VvAnGqGLzov7GQihgoy3RCwV+5GvvQv1Dz+PSZgd6WsnWhLxtgnOGuhej6JgZfWAQcRxsMeZtE2stHw0vQhBLLaqIdrUyRz2jJe1z2I0EHNPoF+FimFMbS4UcaE5VUuHMfAVeLIZ4kp2QkGtC04VOfYlg678vOCQEOzVdhGUwFJy9y6a0aHzh2hj+x/fv+WND4zVThMWJgm2TvYLQK37aqhk1di5YKecFoEo7HettH91AZJ/jRwKuFWMsb6HoWGgHCQo2g2MqBFGC4K+4TX6mRgOGHub070xO1zAYqJokqBATO86NcXJvT3eGs1UXFdeCZXIs1Ska52aOK1EKM2UHtsU1Z0pByBsX0QzU0gr2q/QwXFiKROLiWhvOkWqGgl6r9XBqugiDU75huqDczB3lDPCjBJuay3JsooAfesedqOZtFBxagHuhGJJ0D8LxtslwdKKAN52awH1zFXzgM5fx8loHx7XlQdaOALWtFICWFyHn0GYgvonnj+uTM1KemSCT2dcfraKcI2Qu8wPiDOMFG9WcBcfiaPkJCo6BlUagF04yOZSSyNqW5hq2/QS/8fg1zI/laac8VcRHX1iDUGTLEAvaBAgpsd0JYRgMm50Ah8fzqOYtuDo2yosEGGeo5m0SICQCLZ+8jDJTVYLVwBj5Z211Q7T8KMt6lIqsab7+7OzIUN6cybHZDrGw1cuusWtyHJvI6x19jJJD6sqUN/LR51ax2qY23YPawiEdg2jGnYeKu1o1lkZDgiQNqqbcSEOrDsOYNn5zY7ksnmfQqPKhI2No+zHaQYxeRET3lYafeaHtF9mSSv8to5/pl45YkNcclMqSMAYDscl3j2xGVpuUE9gNE8xUXEwWHCzVe1hpBdn7ZjDyqdtoh+CMFHp+LPH333AEX3PvLD5xfj0zOa17MYA488cyOfHeWn6M9Q75SbkWRzekh3fnHA5GZrdBIjD2qY/jR/7bT+P3vuLr8YvJD2CiaN/QNV5KhQ89tYyrWz1C9PM2wkSiE+jNhxbHmJzB4AYsg1qls+UcelGCrk4hCBOy8Jir5vDoQ/P44JPXMZazsNEKUXLomSahj0KYkA8bQBFgDS/GQ1rIkcbkpAHonSAZItsDZK8yW3YRxnLID+vR1x/GStPHapNa3rFQYIza+q5pZBuLlEeYBt2/79Gz+MCfXcKfXdjSubocEwULsST6SFnzEHdmhKYUj0cfmsdHn1/D41dqGTI6W3ExWyET7p//1KUbGsYemyhgtuLi5fUOKq6JmhcR/WIUFYIBy3UPDS/GZDvE/Niwn1+tG5LqFACDjhBTRN+IhcysgEquibafoOXHQybAO98jzhmOTx6cF/aaKcIAQlsUk6RG46TG22tJ2vnneZt2owyKAmT1YhYJsev3/Fgi6US4Y7yA04dKqPUiLNa66IXDCMGo7/nLHin6kW4GB8A/In0zzYHDjYufvGXAMiiIdbsX6cw/aKf46KbarAxA209wfq2DuUoOV+MeQq0WHBXTMziEVLAsfkMO287RDBK8sNSEaXAUHFMv6kDJNbDU8AEgg70PcvxCASKDYWXGsavmLJRcEy0/ziwJ0jEIx2fxLO0Av/cXS/iwtYKxvI1KbrTL/3w1h7tmyvjE+XV4UYJk4DjJjgJQuohNuWHpvw/ef6HbuPR7jOKOhMR2N8J6y8dsxcVE3kLdi+laKOgduNTKLoZ2QAWYaVAx52geT8GmifsPnl7BXV9XwvHJfKb2TCRFFVHqggTX5rrtoJ9O0A4SVHSx6WmjWRhZBxOJpILa4EDTi+BFZA2gJLUaKq6JnM2x1grQ9GK8rE00P/rCGr73rSdxZr6C55ebeM8fniMln1KwOINi1PrqhAm+dL0BxzDgWiSi6AZUKD1wqIrZag55x8Lzy008uVDH2cMVzFRyu8jdJyaLu1o1ieae9SIqiMjIVqHtxzA52ZDcMZbHj33tXbsCoScKNi5udrKWlJASyw0Pzy+3cHyyOGRfMKrdU3KJbN8O4iyaKJ21Ut6r0pNFcQf3jAoQjtcdKsBPFL767kP47KUtBLFA3QuxOlCAAToSJkyQaGsG2+SodUN88InriITC7z55HX4sMVmwAUbxTFGiOYigcGgpgV6QINQCmxSB5VwHveviiDz2YvzDpz+Cf/qx/wwOhXs2ruBExQKz7Ru6xqfRQ1IpFBwLofYwkzKN1VI6vxYoOAaKjon5ag5Xt6lwnyo5WYvU1qpHL6J0lomiPRBkTWbWAKG3UMDR8QKEkvjBv3l6SNmZIrUX1zu4tNnNQuFj0S+oTkwVYRl8SH2Ytw187ZkZfO7SFrWXvRgF28BEwdHWIfbQRiFtE56Zr+CHvvp12OxEyFkclTz93FOLzYzon7YzLZO4wNvdEJe3iOJRyZmo9SKM5S2cmCzAtoysla+U2mWeOmpwzvD1Z2fx+Ss1+LEgJf6OAoyeQ/ofYwSevLzexmzFAU+JlkphrelDKIWcySEUPVPEe6X5ue0nKNgGhKRr+sEvLGKzGw4prb/5wfkhr7px6+Ar+2umCEs5SmlvPtI+TYPBzvsN7watp52ISCwVXlxt4e6ZEi5t9dANYqS4yc2iJ6PGEP/qNnze4Mi8pziDwWjy54xlipkwlru+NC3e0ussFe3gq3kXnYBgesek6JGWH+/bfhw1FAhBmiw6+LtfeQS/8OlLuLrdg5T96KlRg4RENBHnbXPfaKFRoxkkyGn1FSmBFGbKOVzX5FnGDtbQ3nl/YqGQs6hV8P2/9wxyloGmT5yZ1D36gTuq2a7ci8RQ1l9abK02fZgGw1zVRcOLMvJqwTbw0noHjR7tEAcXPSMtwOjSEOEe/XsIpEUMTV7QHEeTMzxwuIplvXsOhaQAaSGxxBkcy4CUCttCIdBBy5bBdWtFgPPUVoOI3i0/RjVvY6po4+nrDfy//+B5XN3qarROYVvL8x3TwFjBhsFp4QpimWUPkhqNWpBBTMT9ogJiQbFGgzdAKdoghXGYiWfuGM9jYctDoNs3JQdo+TGeuFqHHwm88+ws/tOnLmGp7uvniaJ3mP4sBR1/JhQ6YR85rhgcG50AecfE/FgOOYvjmaUmLm91qTgdYRC6s1VzeatDxY5GpNPv5JDI2YRU/NS7zmT8lNQCIG8beHG1nZ2TkBL1Hm0cW35MyFWOCo6XVtuYLtOzs3NROXWoiFovRJzIocDr1EbF0qR4kw+379Lkg1LORtSN8MaTE3jT6Un87MdfwtPXm7vQqZS+kEhq344XLMSCo96L8MufuaKNSw1wzrNWrLIV2gEVDQwKzSBBy4sQaducgmPCjxLtb0ZoKGMMpkzwE3/y/8O3PfVRAMCHHvo6/Pq3/nOcLeXBGBvpoD44OkECT7fLTU7tRCnJNDo9Fw5CMYuuhUQQ3y+RisKpFXVLKjkb986VUetFeOzyNmyTwWRsyKcufRvTtl6YCLzh+MRIa40z8xU8+vrDuLzVhdAbjJTzlBZUQqr/m733jpfkKs+En3Mqdu7bN8+dHBRGo5GEAEmWDGvCGlsGY7DXnxe8C/ban73GYMM6s5931wlHvGtYG7MYsLENJtlkAwIjECChOCONRhPupJtT58p1zvfHe6q6+96+aWa0gNH7+4Fmeu6trq6uqvPU+z4B8w2BRy+RCjC1QdE5rh8rYL7pAwzYV8khY+k99gur45D2D+Vx484Sjk/VMaG6vx1laGecGcYCT0w34IYROBhGCxaafoiLyw7sJG+yS8Hbzzx1vXrx4TF88vgs7juzlBr7xsn9RWWVUgfPQNOL6VpfauOJmQb2DeWRMTUsNj0sO2EaKq9JqPg2riwsKJJrKG9iru6gHRC47LYBuX9yGfc8OY9BlSlpGRw7tyGQ/I4BYZbBO4oxteho6JCyV1f3KS77/0hP9fv3ph/jGxdrXRQkmf7/lQIn0bu+XLWiJ0gOS6eAUjcg4qZtUTcoZ+mpF5IbinRUF8teoMsYIIRA1fHRDggEVJ1w2/mY3dwkAJiqOfjk8VmMFW0stXzlTRT3BXUaI5JsJKi/w4E0V1FKijcKt4DA3UjAa/gwdYblVoBKzkDWJB6Cu5UNrFNOGIO3Kf+SgcxpswbFuszUXDS8ECdmGnjNd+3BA+eqG0rQB3MWXv/CQ2j7MT726DT+9oGLabdgNU8+Vgt6v/NGgjyciEMlU+ECEbQN/Mizd+F9D1xAJWeiaOuYqbuotkmJRMpFA+WsgTDWsNT0EcWUGRjEErrsGMAuK5sNPxKoOT78SKLuBNg7lEcx44FDjeE4x8HhHIrKK6vmhMgYPFXDaZzB8SPUvFBFQgksNP01vDQhkTrNC/WZxhRpvOVHKGY6xPO8bSCIYkwutfH7n3kKSy3KUrS7QqiTqKhkexpkepw1dYyXWz7afowjE+Rr9dy9Fcw2PLzmzj24bqy4ZoyREHs/9NAlfPbEPBpuRCPhpIujOr5CHTfb6Hh6AR0LgBXHhxeR6ktKoO7SPS9jEIC9VHWxu5LFYM7E/edWcG6pjefurSBT0lNvqamqi+fuHUDBNsg1X9CotBWTGCRr6ihndUSxXDWu7CzAieovyW2cqrpKHQhEced7Sa7xhCBOhHZSsT4138ItO8sIY9kDTpKRsh+ROvTASAG2wbGoHjpcZX/DlfdgLGNk3Dbe/k9vwfPOPQwBht9/wU/gH1/wo7h5tJxeU5uBgIKtKxEMUgFAImRg6ZMN3UP3DmYxpxIOOAdafrwGGJm6hoWGj5GijYvLDvYN5uD4cQp6NUadO12jkV03GFptQHx0ZwnXjBSgazQiTDhPyfmz2PRQcwP8ny9PQkqy/BgfzMINBWbrLvKWngLy+aa/YRzSaguJgm2Ac3VMYgFb17B3iECPF8XIWcSbPqPGeH4k4Ecx7j+3gtv2VVDJdcb03VYVm9XdN47jzEIL7aCdWinpLDG1JoCX+KuVMwbGSjb2DuVQc+mBNYgFsoaGfeNFTFVdtFRaARm/MsTJ6ERKtFWOZPc9OIwF6ir5QOMcz94zAC8UODG9tOm+J/UdA8L8UEBoomccFaPjk7S6EkBxpRSu9VwLrmb3SuddNgJXWIbGMKiM51p+mBIVOaObcLLfCS9Opv/XAYac0XaCSKLh9YKU7So903GompctNn3M1RehsU5uYj8AxtQ+0v2HDPkmBjKYrjoAmJIpM5xe3FrGlwT5kx2frimXZLphWzpHFGzvU3FGQMcPBRp+hIyuwY8FBhUBOoxJMt70QszVPfzmx56AznnPxZ9+TrVonFlsqQVZ4gMPXlJqJw4JhljGa8awG50riRVCUjrnGMobKGdNfOrxWVTbASIhcHapjaoTpNtmQBp4XMyYGC6SoeaB4TzOLbfh+KScS9CLroBUyyeQ0PBCGBoRnVfUuGKlHeDxGYp78SMizlJ2W4ixkg2NM8zVfXBGXCSNA4stv+dEk0CXcgqAUiy7QYRl9SDhR8S3K9hGaoTrBjFqiseWKCvBgDjsjeiS6BWWCABBFKOcteGFMc4vtTCQHUDWIpXiuMqYPD5dX8MpOTJRgm1wPD7dwEg+xlPzLQWMWUqajhRAXm75PR2bhKxMQFVDEBGfyAtjpcojl30niMijbLndUXyrcU3e1jEYmXjkUg1PzNRRto2085OoPg8M5/Ddh4bwyWOzeGyqjpYXpl2eZPy1dzCL2YaXjrG+fHoRC02fOomcxk4JqExH4RKI4hhOwDFatJA3CeRpWsdEt7sjJyVRQ4byDO0gQt2VODCcx7GpGj1ogboYls6hA3jfB96Mm2ZPwTEs/OIP/Bfcf9PzcNuugTWGrhuBgL2DOdw4UcLFFQcNNyRxkey9pnSN+JHDeQvzDR9DeQt7BrNpx6w71ip5r7sODuEz3hyW2wH2D1MsUc0J05H+HfsHe0QVfd3xh/MYyBk9nnQACQbOLjYxU/PghR2/x4Wmn/pfJbytwZyJ17/wYA8vdb2RYLca8PR8kxTmQYTxoo39w524oIT7Sd1rCVMnmooEQ9uP8OilGm7ZNYAB9T2stqroV92fP4hoPE5jeyDmDLbqgHUrPWMpUcmZ+IUXHQJnDE2P8ljf+eVJDGQtlLMmJpdaWG4FRN8Q1FWzNQ3XjBWx2PSxcyDbuQdLyqr0Y4FKnjJInSBOvQa3Wt8xIExIGhEmpaHjn9SvVtslXPX9uapbuzqQLm9qKvKGpPCc0cmcVTfDpVZAYxxGBMakVn8WDgIs/cYOl1MM9MvJ06+t00iTANjaI8kAaBpLA4DpYpKYq3twVPTA3qyOhaa/5X3gIIVtGEssqt9jjPUch+19RlrQhQC8KAZA+WOxRGrwyBkwkCXeSSuOcVaNqQbWWTTqbog//+IZuGr0m4xht2Bf1vtZeUcJCxBwGStlwMBwYpa6UQkvJ14FdoSkbM5YkGrP0DRIKTGUtzAdCggVM8WBNHA9qVo7xAPnq7hutIC2H2OlHahtSZi6Ac6gvLooWmy57SOIYmjKosNQI07ZtU9JFy+1CRC0AHmRTLlbpnLA90OBKA7Sm3+gxq3dwHd1DJfoeh9SDdK/h7GEH1LHKMmq4wpg9+OUdJPB2z5xXOYbPglQJBBIAIgVEZo6i04Q4/R8p2OTkJWfmGmk6QSJdYLgAEvAJChwmfL0aIwbKhRZbQd4YqZBcWCSYc9QDvsZw/nlNnKWjp+4c18aZXNwpIC/vPcs7juzjMVWANvgGMiaGC/ZWG4HPWOsxaZPwh11jDTGkOibe46nGiHtHcojiGKlbAaGC2Zq4JpEMUlIFGwNowUbdS8k4AF6UJtveqmlihcK5CwNH3z+v8P4J/8cP/9j/w0nxw/hqOpQrq6NQEBCaH/wwgpOzNIDSKKUB9Q1I4GhggU3pLExAz3I5LPre2PdvKuMa0YLKbCoZC2UMyZ2lGzcvUoo0i2+6HHHV6HtOmep3YkXxjg+VUPdC8lGRwKaRg8NTS8k0Ku6td0Pczcp9fNmtZqz+qGHp+CHJCRxA/Jzi+JEEUoCDikBR9fghZTe4Yfk0J8YsK7moK2u1Z9/rGgjimPMNzyKydI5BrMmIgn4YYR2QOPEphfh6M4y9g/l17WfuXX3AJp+pDqylG5weEcRr3rubrzlM0/15K2SqpIsZDgD/CjCUovWBrPvnvev7xgQthrLM04fngZV1K7ttq64miO+q1n9Fvp+KQCXU67ikFw7WoAbEgeOMVoUIkEtZV+14MOut0xGEaG6yFd7qCZdKSnkZYWQJyOZrKlRXp6KL/G8EAZnsHWGUJEmk0ORjNNi9f6WrsHQOcrcRM2h7sras2L9YqqTwDl5pXUrBlNeyxa3RWCgs6+R8pBLvsdkAiXS7hCR2J0wTm9WPXYIXaaN55cdMDAlsxap6SOTcsuiBCnI9LITIUWeXiXbwHTNTfez32mXdDZioSJcLC1d5GNldcJZB7ClxxeApjM03RBPzjWws5xBww0JkIIW7qG8jX1DOYrxmW1gJG8jY1D+6FzTw0qLRlGMdexVGEgZC40hlgkgVd+ZGtMknTJT5yq6JcRIwULLo+MaSfpuOGdYTwLSDVqT49D2Q+QsTY3ZYkzX3HQktVm0TMuPsKiC7ZOHEDpmBKw0xRGqu2HaseGc4ejOEj7zxBzCmD6Pzmn0FwmAsSTPkSswJFOneUMZ9U0uteBF5M7f8oiKUM4TADqz0ML951bw4sOjAGgB/tMfvQWfOzGHTxybxWzdI4I0sGaM5QQRhXILiVCqEHCsvW5sQ8PNO8sYyBo4s+BjR8lGww0wWrRSA9emHyEIY8w0PFwzUsBi0+/xV7t+vKiMOCNkPAcrGnF1/vGau/DFg8/BrdfvxCgjc2bidXaupX5E9NV1eLyIfUM5TFVdNL0o7ehxBmQtDbrGsaRsOo5OlCClxIMXq9hRtNeQ0JP32j2QxfmVNm7dM4DdAxkMF21cN1boAQzA+vmL3dSEiXIGAzkDZxfaOLXQTB/K3DBGDAoGSI56FMeIZYBzS23ctLO05TFgdyUWEvuH8zjUBSTrTggBiayhQwLK2oGmEwVLRxARjcTUGWpOsMZ6o18Hbr3Pf+14CaGQWGkFCCOBmYaXcgGTichg3lqz3X7O/FlTBwM9BO6qZPHaO/f12IAk6uUwEqnoZUUZCJ+eb+HCsoMstv6A/x0DwpLFIamk/U1ZeTKV43+r19O5i7EgZdejl2pK/t75N50BQUSZfqsX30CRtk3OUtUo0AETSP67XUIYEhI5I96ZoG6clASwQiW1B4BQ0AhNVze3WHYEF4dGctg7RDl+55ZaxE8Ioh4AtVmZGj1hRcqfTEhARJuHh69XYT8Eo0qis6AHMSlwDY0ARBA5GC9ZGCtm0Ao6i9Fz9lRQzBgpRy8SUvH0FNdlnU+aHF+6WXWSH4oZXXn9kCjFDWOKrMLmHb8glrB0Eh2UMgZFLbV9WBpHLOK+jvrJuBcA6m6ElkfZboYSc9w4UaKMPfV59g3mcanqIBYSB8oZ7BjI4NKKgydmGyhYGlbaNEpPLnqNA1zS+RkK2r9IdEaHiQJNKl7PcN5CzWmhkjORs3TM1YmgztUNffUHWH1/Aagj2PRCMMYwU3PR8qM1nJJ+0TK7B7JwgygdcXaP7JK/x0l8khpDArRATVddZdkRIVZtu8StXuc0tts9kEUpYyjD0wgjBbvLLylSZP7E9JJGxutxpThn+N4j1KlZz+z28ek67j29RMo/FfmUTBq6DyMHcPu+Ckxdo25QzsSP37EHnzw22xNdw0BeVDtKGdx1aAjvf+BST4diIGfixh1FPPcDf4m7v/KP+LGfeCusPbtwaCSfdpVOzDbwv+45vWEc0XpjuPPLbVSdEHceGELNIV+rMCY/N9vU4IcCsw0Pw0ULN+8u454n5zFb83B+yYFtcJSzBnaUMnCCGJWciZt2lfDGDz6KBy9U0VIAKG/rePaeCn56la9bT/4iqJvV7Xk1XspgxQnw8y88iOmqi7d+/hQsnePJmUaPPU1yCgvQ9T1Xd7GjbG86BtysujtjdTfE33z9Ak5M12kk3nU8TZ0r0Q11Ot0wwmzdwx37B9OsyvWOfb/8yYGsgX1DeQRRAyvtQHWm6f5hJ+KRdW5aGznzr7YB6VYvG4o3vdwmvzvKoNQRCWCp9gwI27S6/aVieeXcr2/n6r65S5AXzeqbfiTpJqnx/qrMSHS6TsmioXGWhjAnxFUKHdp6EYmcth2LmLyT1M2cRl/0rqbOYYGnYxQuKK0gY2pgjKOSNXB+uQ0/EqjkTKWMIS5RsMmXrzHA0LXUXgPY2K2/u5PVr7pB1lYruYFGQYwvn15CxqQbSySoK7g85GOh4WG4YGGm4cHxSZ3Itf4LSfKqrlHHy4/i1HOp6YUQAmh5cQrMdM6xeyCLqtNApEbS65VEh9hqaAyjpQzOrzgUKbMFP49U6KHAtsZ4GhqcLDpcqfQ0ztKn03LWhK2rOBy1qCYiHAkCvqEa9SajMAY6P+NQwODE8WMgy4RylgQYuway8MIaGmqks953txpQCJBZ6GjRxrVjRZxbavdySpLvYhXAAaBibDagSwDwghj7h3Npx+ZzJ+bw2Sfn1ZicFjfK0VRGngrVDeUtMLDUgHk4b1KKQEBdHY3RqGUwZ/YsyBtxpdYzfU06FzUnxM27ynjkYg1hLPpeHzlbx1zDRyUvexbAA8P5dRfIrKnho49M93QotDDET737t3Drv3wMAPCqi/fj4M+8uEdV2C2COD7dgBvEyJgajiqV4UYeVYkAIlvSUcgYyNlG6lDf8mJwTvY8t++r4JPHZrHSDnDDjlJqTDpX91Fth7jr4BBecP0I/v7+izg510zH7QCB43tPLWKh6eHNdx9O9yd5b1+P8dR8I7Ug0TgpK/dUcvBDMlalkHANeVNl/6463sk5KiW932zNxXcdHF63A7jV6j4XDI3j9z79JKbrxEezDOoMO0EEU9dg6WReTSPb9TvNq499t6lxkhBQd8gTT0hgKGdidyWHSs6AqWvIWxrOLrbXVb1ulB6RfKY1WZY6R6BoGZZOVh2McRgaiay2Wt8xICzpEFCX4JsXBbReaeqm9H8bCyYE19U4hIGeVlIrANkhIK/ex+5xXPJvBDSSsGOmHMYv7/OlIy6J1Gg3uYTCSAKMCJepwaGg7LC6F6Kk/LcSI8fEx4ZI6/S5syaHswG5PukGJMkBW9nfrYKsy2nAxpLI7AYXGC9RisBMzcOHHp5GJW9iKG9iKnRJ+Sk6nYekdBUhJCVQyZnQOTBXp8ggS+dgtoHrxoswNYaaG+KpOSLGZyzi4yWL+ebHQGK8bON7bxjFY5dqqLthCt6kXL8xmng6Jf+mawwn55owdYamGpFJULj2deNFzNZdHLTy5LivkzVE4h0nQUA9+fzJYYglmcUOZI2UX5jwpSQDbpgo4XnXDOOTx2ax3A5w3VgBM3VXkXY74+5+1ywHYOj0oGBqDN99aBC7B3M4vdBEZp2b82qAY3BO49EuY+mkklQLxpDysx6fruOv7juPhksK1ZyppS7gkUdP6XQ9S8w2PAQxxWE9Nd/EY9N1GJyDMVKA+VGMgkpf6AaM/bhSqxV6q4ncaeeiaEMy4JrRPM4utqlL2VVZkzqejAGvvm13Dwdqs3il7g5FttXAq//wF7H/iQcRcw1/9SO/gNlX/QRe28fWAeh0iINYQPhk4SE3uXhXZyBWciYGsgNpViNFhUU4v+T0jM12lO2eiJ6BrIGHL6xgcqkNXWM9ZssVnaPmBDi32BvtVbBJnX5sqoZIylSkEAlSjzacEOPlTPodWQbHxRVnzf199b04Vh3TjTqAl1NHJkr41Zdch1/58DFMVV1FkufImbrqsNP5vaOcwb7BHB6fbmCmtr5Z6+pjv9IO0oQAuk9TZFEkJObVQ2niu7iZ9cV6DxLdn6W7Y1ZzQkDSCN3UufIqo5G7F24dYXzHgDBAjZC+RTte34z9osWZ7uYaeoGYqXNlDoke9U9yeXaDh/V2nSteTpJfpnOGUC2+2+089htfAUkMEVLjRkNjkJyUMpwBfiwQRcQViIWAzjUAUj190afZ7IIJhQCLWV8RQD9ey1aLuoWXp2zVQLxGy2CYKNuQACmFLB1hFKffU/c5rzEgqyxGwkggZxKZ3QloHKcxpIHQls5xfrmNpVaAlh/DNoCZqquk5tGW9lcCeP6hYdyyewCDeRNVJyBCdtJN7PM7nCFVtiUeb7pGuYdZU0PBNqAx8vKKmETbC6Fx4LhSxK0oXyuAuIo0tu5sO33YkUneJ8NIkm9oGciYGg7vKOH3Xn4EUyrw9ytnyCC3myx9ZGcJ7/nqeczUvDWfgSwkJI3wY4lPHJsDQJ245VaAozvLa8QVqwGOpgjWEVt7rSTmuaNFGztKmbTb1A7IVJIxBlvXYBsUttz0ImTVd111QsSxwFLLx1QYI2NwZAxNRbkQqPJEjBvGiz2qwX5cqdUKvX6JA00vwko7wGydkkWiWKTXkcY6DzhF20QYx5iquvjU8Tm8+PBY73nRZ4FMAODRiRJOzTfRevxJvPEvfhkjcxfh2jn88U/+D1x87vPw+j7AIiF3T1UdAgMqTWK6No8HL6zgTf/2WvzgzRN9zlBSSK4eTTFGmaGJ2eiewRzm6y4KNil8DY2+WwIEBmyDLFfIw0+mD4edYshZBpwgwvHpegocdpYyaHgh6l6IwbyZ2qoYGkPR1rHQIC7a7oEsOGcYyBp48Hy1a6vq++x6Jwm6Nl58eHTDDuDl1o07y3jLK4/i9z99EivtAKNFG1NVB7GikORMHQeG88hnDBy09Q192rqP/QEzh3NLrTQhwI/oAS1raqhkTdS9sIdDux3ri/Wq+4Hg4QtV/PXXLmC0aOHCipMKRjTOMFRYK/hYr75jQFg/zsa3UvVb1K4mTa3fxZd0uxKuRneXiWwpqCsRdz0Zbmd/QqVEY4xsJJJRR8YkUiZnFFeynX1er5pehHKWpREiQRQjioGViAJxT843wNUIJooF2sr/rN9YJOmYJuAoFoAviRMVrnpfroDCVrtk3Z/N1Bk0xuCKznHf6iZ0NTarOiGafoSCTaOzRy9WAUaLli47og2dA7fsKiNjGnh8uoamkIgkKewGsiZ2lTWcWWzDU2HKx6drqbJU5ySKqLp0LA1lmLpZSQn89f0XMJA3MVq0cW6xDUNZTQRR/yxV8pdTgIlTJ7bmBABY2kVq+hEylo4j40VcqjqouyGqTkjjR3TG5hlDgxcJcEXIJ284Dk0jg9lQEGgbyJkwNY5lJ8DRSgl3HRrEr/7jcUwuthALoKSCqO86NISbdnVAyGefmEtBWDL1leicT5Gk4160dWicYbHlY77h46ELK7h1TyUFYv0ATiVHcTicMXAme4E6AypZI3W2T7pN+yo5BMrBPfHTMnUNtiGw3A4AkD1A0iUmw2ANN06UMJgnY03Hp0V/cqmNobyFjKX35Up1K9SypoYVx++bODBX9zBX9yCkJM8mjaHqBHQ/ZiwVvJg6R87SsNIO8LXJZXzq8VkcHl/rpZbUagC48/xJ/Lc/+wUUnQYWK6P4kzf8CTK33IzX9/G4SkDrVNVB3QnTUPCcRerVlVaAP/7sKewbyuFon6BmzhleccsETs038dilGsZKNobzVuq3VcmZ2DOYwVdOL6YK6GRcuE9lu2ZMAr6uT/ehxI8qAVWAerCU5CdYd0P88+NzeP8DFzFbp0zU+boP2+AoZgxonMMJojSc/GLVUecSQ/fhW70OMvWepq7hWbsH+lyRV6eO7izj177/enz44Skcm6pjoenDVAkJiWcasD73sPvYJ2PBJ2aI/5UxNCXEINFL1tSUkIumIMn9cSvWF1up7geCf3psBrahp6rKhJ9nxh6+uMXtfceAsG/HuprNMTJJZPC7QE8sSR7cfZNLxrb0OwwaW6t23Mq+aSBifOK1kvixWQZlymicwdI4vGj9pxK2aoy2UdXdEF4Uk3t5ojLsQjVCECHbjwJ1LHjK70p+jINm+YwxZbAoYetaKgLQeG++wuqlYTsgKnn6FJI8wzwFSra6jeS9IyERRgJSkDN304+QM3UMK+m9E8Ro+ZFy7m5h31AO/+baEVw3lsexqQbOL7fRDiJM10MVdA2cWWpDKtHDWIky5ygTTldZqNqmICz5HDNVD//j4ydQzpqIpQSPBfImR0tK+H3aobFIFgbF/RPK0oCTW7wlycdur8pmm2v4aLi074ZGvc10zxiDrXMMZA2EUYyaRzwvjTPU3QhRHMENJYKGB0OjjtDeShZ/8JmnKBpIY+SX52lYcQI0/QiHRgvgnOHMAvkuJUkKyQdOzvXkk1k6R1apwobyZJ9AYKWB5+6t9CzcCcARQiJn6eCcCPi2QfwXIZF2kQSAA8M5CCnx6MUa6k5I/kx9/LSSMZnOmfLXo9GJpdN5fny6jjsPDmEwb2EwT5EuZxabmG2Q2rEfSbk7Hqnbnb87ccDxI2RMXalzoYQBBJQ11fEMYom8pat7E4HzhhfhrZ87hR3lTN8sx34WDcI4hGp5GAsjO/HUO/4GP3XLNesCuPPLbZyZb1FcUCx63OlNXUMlTwrq9371Av7wh9cGuj8+XcdHHpmGo2xUZhseLJ1jRymDW3YP4KZdJfzDg5fghDEFQNtaOi5s+3UcmSiRYlcCdY/Mgtt+BI3TOZx8b0Im55XEn33hDB67VIMTRKk6XEoyNPabZKsylDexezCHukOKWRIQBLhldwkPnK+mwpfkPpN4YXLGsKeSxZ0Hhja8pq+0ki7SZ56Yxdu+eBZ7KlmUM71Kb2Bzs9ZkLPgXXzpLAfXq4Wo4b6UxX1IJUdzk/rgF1et2q6cjOpLvcf732ms75OvVMyDsO6SERA8AS18HARSgc2EmjumxkBt2qtar5GFOk2QNoXNSnTFJ+Wq2oWGpHaC+SVs42Z+tjC6pYyU74z0FcDijwF4hRQrOOEh9VGsHEKuQTygkhBQQAmm0j6ExGLqG3QMZnJxvIIw7+ybV7yeWCP24dZwRoF3t4s4ZRwyZHv/kc2yliJROAcZOGOOpyQbmG75SGcZoeEDBNhRZnWOx5avorQiLylGejq3EYpMUp8MFCzvKGTw52yAXdJ1j32AOjFHno+FRJl/N23wc2f3vfhhjSdktOKGAE1J+q857TU7TY8MIXHIpYXIGT4kPbt1VgmUa6ZPsQxdW4AR0DmUMDVFM+wwAgXJN56CukqFxNHwaOTVUOLVtcIQCKJgaIkHcsQ8/PI1AAZZYECDyQ3LWBpx0THJqvoWWH6GSNdH0ydgx6Yb5suPNpmvUNSTQo6GSo7HsQtPHo1M1jBbsNXYO55fbqDkhjuygMVunI0bncmIvcbHq4L9//ARqTohLVQcNL8R1Y8UeP62WAjaMEUm/YBvwU+81AmNBLHB6volKjkK4x0o23CDCa+/ahwnFL+oGNN08r6cWmqk7fwJkksSBCysO2kGM60YLOLvURsMLAZVW0c0NzBg6/Eig2g6ItA9gpGCl0Urd9h09FgXDOWWgy6ANlPC+//4OPNFmuM638X2bhJPXXeqcZk0dWPU4RdcVx9nF3m6MEBKfOzGPv7rvHNp+lC7CSYZq1tTwspvH8U+PzsAPBcaKFqpOiIxJFjNFm7I4zy21oDHlB4fkoZdG52310KRrHEJd4xonnzUhJYbyJhaaAT0Uso6PYNHWcfOuMpxAwDPIaDUhse8dyuHW3cBDF2uIYwlNI5+2hLObMTX89PP3Q9fX8hU34/xttzhnuG6siMGcSYrFPgqfrXSsjkyU8AsvOoS5uoeM6gYCwEorwOQynWumxpXwSqRq26vJeetL1leCoItbNAEHngFhzxQ6GMTQKP8viimb73IVo8noR2PEpzI0DUVbR8snTkisczDZfxzVXUL2vUbXLU0tThLUjUj8YQyNIWOaWGmHEFJQKHQsO2arsiPXTmZJSVg58eIENEY7U8qQkiwZ5dL9k8YYCZjSu7qHyXiKoxeAWTrDcMGiLLogAhc0zkyI75sN+0JBnDCdc5yaa8JRHQZddfk8lZGYs/Q0WkmCrBcYA+49tQgpJfI2WUhkDA0tP8KZhRYAUhc1fXqaPjiSx65KBrM1F/NNP1VqJp28jUom/5NAJWcQ4IMad3M6/uEqcMrQGaOmwCaKcXbJwTVjRTDG0HBDVNukhNI4g65RBzMxuTV0DUEUI1bdAkOjLkPLj9KRqlQLWdbSUXeDlCRsGzwVLoSxQCzo+Jm6hlPzDaVglOo1jopuqhG4XKOedFU4M2PkMQcpybQUdJEMFy28/JYdPZ2eZPE8OFLAcMHCqbkmGl4EKen9TI2h6oaYrXk4OFLAWNFGywux2PRxPKrhxp3ldDyy2PDw2HQdXI0zE8PlSEjIkAw0OWNoeGQoW8zQ2MY2NfKp6kNUTvYvsmQqdukGMhonZWbO1DHf8JGzdRyZKOHcUgvLysySvjd6EKFuHXnCgQEmJ9PXfvYdCQDcnWH4sT/9VUwfOIwv/+BrAACtyggGs9GmuYMFWwfn5DeYs9beYGIhYSjrhKQb8/h0HR9+aAr/fGIODTdC3tIQxAL7hvIYK9kYLVo4s9DC33ztIhYaHsaL5GFXd4kTl8TnmBrHXN1DztIwkDVx/XgRD1+sUfJEIuUFECl1sRCUA2nrXKU5kIG2F8SQoMlG0TbghhQmv9Dw027P+eV2SmLfO5RHYrbsBDFC9RCWMTT8539zsC//ra8rf5/O5HarH6cuqe10rJL8yvsnl5XHGI12yUtPKPK+gSiW68YvXWmtZ29xw0QJH9viNp4BYd/BxUDdiKxSvbWDGNeP5bHQ9HF+2d32tpK1p9v6A7GEx2K4zRhgxMVp+vGWOj7J4r3V0jUK841lrILa6abW8pOOmwQD2RDsH87h7GILDAxBFMFR7rNSQhlY0lNhztBQ9wQG8ib+v5dej5VWiP/1+adwaqGV5sZBilStpjOgaBuouWEKYiV6O2ScAeWsievHCxRTFAnM1j1cXG6jlDVQdUK0/M2tHKJIYKXtKyAkUy5fEAt1MwL8KADngMFZysOZa3jKaoRhue2jbBMpuGQbWHEC+BF9Hp0zXKqSIpAADm2Xg54CTY2lCQQblRAJqCU7jEiQ037iop0xNPhRx06iG9iZOlNgSKLqhHh8msY5pEIi4Js1NWQNDY5O4IDCdxWg4xTTo3Ny615uBWn3lzIPOdp+mCo+aUzM0k6nqUBxIqtP3O+vGS0gr0xVKzkTVt5CENGNv+oqd3LQMdSUes0NqEOmaQx5S8PEQA4Xlx287QtnetRg3QqwSs7C7fvNlG+iawxPzDTAAOwbzqW2DNeMFRHENJZ8aq6J5+wdAANDW3H8fCEg0RlJxki6vmT8KmRi39FrIHpmoYlT800ADNeM5rF/KJ/uX0tZduirOgsdywRlt+CF2FnJYSA7gIYX4uELVXVOJV1PAU+FoUMCw0Uz/d3VHKGmF8FeXsIb/s+vY8/pYzj8wBfw2F0vQWOQiPxbIV/vHczhwBBd/2EsYOoduwMp6Xsu2AZKGR0FW0/HnzN1F0EkMJAlFWP3eLGSMzFeyuDsYhNtP8Zsg4QIYSwoJ7Hlw1Ked6bOUbAMHBimc+iW3WV89ewy2n7XPjNgIGsilgJBJOGGAuUsPaIUFLAIY3J1FxYJMM4ttrGrkk27PavBzp6hHHZXMphr+nD9CCtOgDsPDOEn79q35hit68q/qjN5ObVRB2krPm3d27l5VxmfeGwGrooLstWxqDsRTEPDq27bjR84On7FHbyNqp96t2LE+L0t/v4zIOxfQSULRmJFsFWrCwkaB7W8CMKkMGA/kjg4nMdMzUOgzEyTjsdG2+z3b8lryRhU55fZWttiRbEKVk72tWufk9EnA6kh5+qekpITmTOJH9I1MqgMFFGWCM3AStvHX947iRsnShgrZTHfClBzQtVRo2M0UrAAkNqwrMBUv04RY+Sj9cjFOoq2jpGihVhIPGffIIq2js+emN/S501EBVydALEgnlUiqEgJ3QLw1UhP02jxoP0kl+dlEULnMUw9AUQCVSdAEMaIJNkbEEhHGlxt0Ix1y92wpLvK1VjM0jW0gygdFSZxH1EsoGlc8TjI3TsZLTtBBCElJhfJFTxUnzUh4tLiFKTgWDLA5ARyBefYOWDC8cmk149Eh/MoOj5sQJI3qKX5qLpGAgEvpO5NEkh9/WgR959fwXLLh23o6fGMVx0QMsPtjCilkKhkDYwWrbSD0q0G69cpSPgmDTfAcjvAUN5CsYuDUsmZODJRxqm5BqpugJNzTZSyBp69p4J6O8BULQaEhC9lz3URS4AJCZ3TMUjGNmQg+hgevLCyykB0AP/pu/fj4Ege3zi/khoDJ6kZCYgZzJlgoJHnXMPHRDkDxjlKGRM37RrAwxdWUHMCcM7SaCpdYyhYOnYP5lBtB6kBaTewqpw/jd/9w5/C8NIsnHwR7/ult6YADNjaKItzhtfcuRffuLCClVaASt6ExnkKtC2dI2NwXDNKxrm//akTmKm5yJlaCjo574wXk2zQjKmh5UVYaPrQOEvFMpGQaHohDI1jVyVL0wCJ1GA2SaYoWFp6nw1jgX1DWUwuOchbwLITwgtjZEwdlq5hIGeiobq3TTcC1xgO7yjhtXfuTcHRemCnYBloeRH2DeXxilt3rhk3AtjUlX899WK/6jfS3IpB6la2++ilGoYLFiJFM2irRIqJShY6Z6g54dMKwJJard5tNBpb/t1nQNi3aXVzkkzF4dpufFFyWkqQNQFndNK6AXmuhHGcRsxcDfgUCTVui7eWZ0h8HuXjtAXbldX8tfWAYRCRRD9ZxIKwo6rTORGEk6d529BgGxxNL8KXTy3hiycXU6CWM4nIHgipIjLoqd4JYgjZX/GoeLaUVyglLqw4mFxqEw9PShweL+DASB6PT9fTUZEfib5AR+PUJRrImsiaHBdW3E58Ttc9J/lVjTGcWyS+UbeaM+mg+aFIwQg5rtO/Vdshaizs9RVKxoUKha136iXjxQR4JpUxOZTNDo3YlOKSc96Tz6hp9BkNk6f+bzM1F0Vbx+5KFvMNLw207ixOIdp+pOxLBPIWkcNn6zRKzZgahos2CqaGeZXhmDzASBCn0Iti2AqIEdiViGKJA8MFtPwIv/PpJ7HiUDen5cdouBFxAznrva4iAUuN/5LrlXOG0VLHtHW1GmzdToEf4eRcExLAeMnuYTIlROT9wzlcWnHx6tt349l7KxBS4qtnl6jjJEkw0/29JJ9XSCCMYxzdWcZNu0r4+wcu4uRsEwB1GoUE2l6ELz21iIWGjx+7bTemqi4WGj6aXohy1lDpCpSR6QQRHr7kweAMyy0fX3hqEdeNFTBWysDUOIYLFmyDI28ZivogUVCRP6fnWz0GpGNFcnIf+dqXMPZT/wGs0cDs8AT+9s3/G8s79/Ucg62Osm7cWcab/u21+OPPPoWaE0LnHIYKcM8YHDsHqKN0z8l5fPbEPFEEBPG4wliinDFgGVpPNigD0A4iEogwshhhjOwjKjki+19acXDnoSEsNLzU64pG3gTuWUJtSEbGIB6txkhkQ8CN+IXlrAkzIHuGW3aX8fuvuHENr2sjsHPTrhI++sj0mnHjc/dWcHyqjozB0fKjnsDxzdSLq2uzkeZGBqlJrcdLS0bTB4YLyFlaKkBJ7EDafrzl/dxurbdPyeuzi7Utb+sZEPZtVLRYdryfEiDDmYRtUVL96rVwNQjoruT1pHumc4m2H8HSiSfkhp2Inu0WB5QVQK8HcvdCvFlJEFgxNA2huJzUyXX2TV3jQSxQtHRURceeA6AnVCklBrImhJBYcQLEsYBpcMhYIoxoQTY0GrloQYS6J7DQ9DFSsBR51ltz3AzOUM7qaPokOY+FTO0/IiGw2PDxhboHXfHRQsUdWu/4C3SNWxnxXKTqzAnROe6MEbgMBIV8J/+SmKWGQkIXNMZzwzgFWMm5I0EcO+KykcVEpBbJBGB1KwLXHG9OoDUWSgGqeHqGRqM+aQIFy4Ab+ABDahCsc/ocmsZRUTYSK20fDAzff3Qc5YyBv/7aBUVkD5Cz9HSfGWPI6ByHxyl/zw1inFtuY5EBeUvHrbvLeHSqjlipQL2Qsg25+txCEFi3TU15W0kM5g3cdWgQf3bPaWW2SfE4j8800PKjlHyvc4GCZaAdRHDDGH7U8T2zDA5T16h713W+rR6hrV48J5cCVJ2ArichcWq+iaWWj/1DeUggdWwnPqHE/ZMrOLyjhDAWqDukHnWCXp5n0uXWOMOP374HL7t5ArsHsvidTz2JycW28hCkGCmpUhIkgKfmm3j0Yg2vf8FBvPPL53DfmSUsNinAO2voaPshqr5A3jZw484S/FDg5FwDT8w00mDv2/cP4eW37EDeIhuBP/vCGTx0fgW6JpCzjNSAdLnlY6Hh41cv3Yux97wFLI7Rvu0O/OGP/w9c5FmMe9FljbIA4AdvnsC+oRze89XzHTuSjI5rRot4xbOII9VtgGtoDGFMgo8VKVHJmjDUA3BiwMoYww3jpVSIkFXq0IQrGAmJFx8exQPnVtJOJ+V5JskiAkttH5wxXFgmD7OmF8HSSaWaqF41RhMMXeM4MJzDa+/c15dYn5xLq8FO24/wZ184s2bceP/kMj51fBYtL0LGIFBczOjYP5RPbSS26re11ZHmRgBpIxAXK9FMpqSlPm3ddTV8wbazTzfvKuPRSzWcWWih1WhueXvPgLBvozI08rla3UZyQwk/ivpaOmwHP8WCzE3p6UwqHsrGW9B5J3dQSpXFqQjj/ZzVt7o/yQJR96Ien7LLreSWzIGu6Azq/o2XbPiRQMuPUgl/IhNfcql7Yhk8BUMEDol7tdzye15veCGKGaMTvJy8r+K/OIFAztRRcwP6rqQCQrEEs4CSqWO5FaQb3AiyRgqXRspsMv3Zrv2h8R+BpSCWafcsGWPq6FLOMpGCZo0ReAIDjK5xZ7I9Pybyq6VzIO7EAPU77tTRo/co2HRcq+1QgVxBPC0pkbM0cADLESnkiHemIaNG5Ym1SN0L8dGHp5E1dXBGXYaWUrwBBNyKGR3P2VNBRVl15DMcRyZKODZVQ8uPezyGEoUdV2BVqAMUCUkZqkIiZ+r45X97Db54cgGPTdXBGUiNqrhUlayhskwNhJGAZWgoZHS4QYSmHwNKBGFoDEEkU5NSYO0ILXmajoXEq27bjdPzLbznq+fBAOypZHFqgQjuyy0ftXYIqE5dkhgxYJu4sOLgf91zGncdHIKjPPFMdf9IrFkgO3Ygt+wewP7hPCYXWzg+XUcQxWnHWucMTJ03gaAHta+fW8aP37EHf/qjN+NzJ+bx8WMzmK15uFRtIxQSOwYyqScWAIyXLDw+XcdIwcYrb53oCacWgnIXE9PTrlNY/V2CCwEWx8CP/zhy73wnfmLJu6JRVlJHd5bxRz98U9+R3G998kSPAS5jFE0Tt8gQteaGKGd0SEjM1j3kLAqqHitnkLH0FBgnXb3BvAVTIyuL7k7nWNFGwdYxr7pjjDGUczTK1DjDUsuHBMeBYRtNP0LNoSQES+e4Y/8gfmpVvmS/6h6XCSHxW588sWbcGMT0kNZ0QwgkkW9EX3AU920gZ25p5LuVoPHNRpqbgbhXPmtiTah2d222n5ej/Fxvn+6fXMYnHpvBcMHCgeECKkZ2w+101zMg7NuoNso4vJxu1eqSALwgQsEy4IUCZdvAcivAej0ouj1KNdpgnVxFAfhd7vIbdePWK10DDK6lXZcrKUNjMDiNVyUYdEaggeKaZHqxWhpDw4/AQwGNAQGjMa2ukXs1dZGoErPR5O9JV8kNBWIRpCq9BDNzToIAP5bw3ACx6CQKAPT9VduksMtbOlacANikw9Rd3WCt5+clEMUSkVpw626Hp5YCMZ0hjmXK3dNY0i2U4GApgRtAmlWpy04clcYZdBkjFh2X+lgBPXKPJ0K4oTEcGM7DCSI0/Qg6Y1j2qLPAAAjJkTE1mEoYwRVpu+HS0yxntI8MoBDkchauMmgcL9l4/jUjMDWGTxybw3jJRmHVkzFjDAeGC5iqOihlDVyquqnH0GjBhhvGZPIrEg4bBWSP5i388kuuRdbQcN+Z5VRVmgRihzFZC5QyJqJYIGtqaPoRShkDlqGnI9C2HyGMWU8m4+oR2pqnbJ1juU18uaM7y2CMYd9QDnU3hB9GaIQhOGMYKdg0rjJ0XDtWQDlr4MxCC184OY8wJnBNruxJF52+T08pZwsW7U/Ti9AOopQob2odYMQYYDLACykSpu6GKsB7DC8+PIovn17EWz9/CgNZ4rp1q95qbgQniPHIpSqWWz5KWSPtaGRNDVUnxNGdZcw13F7gkjMxWszg4zt/EN/9ktsw/iMvAxjDkQlrS6OsrVQ/N/7JxVZfA1xL11DJW6g7Afwoxkpbopwz8Jy9Fdy+fxDvu/+CElT0RhkZGimp616Igq1j/3C+p9NJ4Jyu4kqWkhsi1Smv5EzEQmK+Sdy6JLXh7q5kgu1UvxBsKaVyn6ds3ZV2qPJTTZQydO87t9RGOaOvO/LtBjU1J8Dp+eaaoG1gayPNrYC4r0+u4MAwRR31qCylRMMLMbnYxuEdxOtbXZej/Fx3nywNYUyinEjQw+QWdFVpPQPCnqmeCgUwudSmroPOyTCyTzsm6XwJxRsSspP1txo0XA6EimIgZ3YI8ldSRNaPFf9FotF1hbhBBFPnaLdDRfymPfaaQTqqGcyZ4IwDCDudRoaeCJ7kPkjcGnpNQvG2FOqJYgnRZf3RD1u6QYRYkE9RoIKOITvGituxDWFQPnBdnbHVTUXK46QOVzlD4FvnxEtxujKrks6klASqTI1jpGDi3z1nNx66UMWF5TbmGh6CSGUwMoYoilOeHldquYyhYaKcQdUJcGyqjjCm+KRSxkAlZ6Hlh3D9CIEislOiA1Tnks6Fgk18GI2znpvyfMPHS28ax6cfn1cGqWsr8Wz64Vt3qpELdTcKlo6qE2JSBQF7IYOuCXzXgSG87gUHcWRHCW94/yPwI4HhvAmu1LOmpqWGrQmpe6xkI1xxUXeVVxEnkHTGbQGQGC1mICTg+lE6Qnv5LTvwuRNz+Kv7zqMdRNhXySFT0rHYdHFx2YGlc0znXWQNLe2SeZFU3VAifo8WM6n7eLUdYKnl48lZP31gcMIIpkb2GwAplYlvxNBUyryCrafntaFsP1afVZzRudxwO/kRXKlPTU3DcKEXgHXn+3EwjBYs2KaedjRecmQs9bNK8hVzi3P40ff/KT7xM/8V7byN80ttLNzxfIx3bTcRMSQL//nl9lUjYXeComkU1/brWGkHsHRS+JazJpbbAfYN5fC67zmAQ6MFNL0IwwULF5baODRa6BmRJXFG3eCle0x4cq6Jt33hNFyVp9jyovTes3coD4MzzDY8vPbOvbhubG2SwHa6Ov1CsJtelNqN6JzB1GPonKUj1YyhYbnt4/HZBnaUMmtGvqtBTRALzNZcHN2lI98HZmw2KuwHFJNKQNyZxRZefdsezNS89Ge9kHhgy+0AOiNO7+98+skecHW5ys/19qnpR2h6pM5sKH7gUp84s/XqGRD2HVRb7UhlDOIonF+m4Nd+v7caG12NTlx3SQAtf3VI0OXXelS0WJDBX/KeOuvYEiS5l14Yo5TRlKs3/Z7GWHpMpASEAmVccbgs5T7PmUQIUsR5Um54/JnaVmL8mYyPErsJsPW/w36v9/u57qxLnnS8JMUg3TBWwDcu1uBHMlUG9hwrtUEmaXQx1/Tx6KVqqgIlqb9AEEtIQdwkAOkI/d8/dzeuGyvigw9dwsm5JhgjgnkkiNAcCR83jBcwVXUhhUTW0hDGUARlsrmQgsw082bn1tX9ZN1wh7Y0orhurIAbd5ZwfKqOCUU8HsiZuFXZKCRP0b//iqPQdY7JxRZm6x6lCkg6jkAn8sUNY/ghZXAO5i2UMibOLjYx1/CRVeKO518zDAmy2ji/1O4hSH/k4Sl89sQ8Gi6Nv4JIYChvYarqwotieJHAN86RGtHUNRQzBiydYbEVQAgJzjj2DmZTAPb4dB1uSPmpuhI3xFKm9iOaGr1Cne/Jsdo7mMPewRyemmsSSONd9g2gDiFjtIh2c3CEkKg5AYI4xmLTTzthnQ5LjIxB41LL1FLwfHq+ic88Pocg6vzetbNn8B9/7+dRWlmAwRne+bq39B0rPV0+VkCvTQjQEewkdjcaJyXny2+ewAPnq/i7By4pYYvActuHG8Y4MFzYlK+WdOGaXoS8ZeDweBGLrQBeGMM2NIwVKcGAIt8YJsrZNZ2j7R6H1SHYQOKHJ1Munm1oODSax3zDQ8ONEAky/d0/mMNPP//ApgkGi00XZ+YjPHx+BYcnSthZzvSYPm42KuwHFLsrAXFjJTvtKD56sYbJpRaiWKKUMbB3KIdKttfw9/B48bLHpOvtU6iEXLaloe3HWG4HOD3/jDrymeoqDjL21BjbcKSZ1HI7wLVjBZxZaEFjDLbJ0drA2+sq46+0YgFq7UYd1d7Vru6tcgZoGkcxY6LhhcrygsaEBie1U2LJIJXzN+fdo0AJ29ThRzGyJl2QfiRTvyl/E4ln8q9MSHCNoWgZ8OMYjjr2G1HjUvLvJp9XoAO8pBoXaorIf2y6noJPQ7IOyX3VcbJ0pkaZDJMLbSy1gzQTlDOgrkBZ4gOlhlm4f3IZZxepY8ZAjv6McRgaUrn/6cU2TI0r/hkJGRio+1Z3Qxg6vW9LeTklldyUixljS0aQ+4fyPbyc7g5Q04uwq5LtITvTOJShnDVQc8LUIZ4xWozDOIYXSpgaR9bQ4EKglDExUrTxw8/a2ZM52Y8gPVPr9aBaaPq4uOzA1KkryhjScZWQMs181ZgygQV1QgayBiaXWvCimIQKTPmExQJcEmWAQ4Ix3hHJMIa/+/pFWLqGIxMlvPSmHfjymUU4PoE/Qy1GkSKXF2wDO0oZdQy6QMA8AdXJxTbGijb2Deepm+JSgLgTxBjMWenos+qEWGkHOLvYhs4ZJpfaePnFh/D//u1vwQo8zO88gE+/+g19x19Pp48V0DEUvX9yOc2XHMpb5DKv8mk1xvD5J+cRC9mzD35ErvdTVQeGxrfEVysoleRDF6qK0iCVotfFvqE82bqsA0S3exz6WaB0xAEi/Z52ljOYKGdUlyyEE8Z4/YsO4eBIId1WvxFdtR1guuYhlhJVN8RD51cwN5DBgeECBnLmllSs/YBid3WDuP3DeVw3WsBPv+9B8GWGjEmWMpOLbSxlfOwbzGG5HeAjD0/Dvo1v2mFbb0y63j4Z6loMIgGNA3N1d1sUmmdA2L/ySkZSEIBkctNumK5GPydmGogEcb7C7Qy4NymNbT5SUzxwFCwNI0UbF5edq/b+G1XC29A5Q97SUXMkpOrnzDcD5G0dE2Ub01WPuiEM4JzDZB2OmKExRDH9Pcl+o4gQ+rfEe231Ieh+LQE+g3kT55bbfbM7k+LJL2NzANb9XmAdVSx14CRCAdiGhli5uvftpLHE7Zxa/WPlDGbqHoJYwItoDEH/rrzKOHVDTJ3j/LKDM4stHBrJY77u95h8MkaZeQ2XOE5ZU0cxoyOIlL0DoEwudQgpUXPCNCy3oEKmLYOjlDG2bAR5ZKKEu4+O4x1fOoszi/QErWsMO0o2fvyOPT2LV3ID3lHKwAtETzYj52QlonNSRz4510Qpo/ddeKNI4NKKg8Wmj6GCiX85uagWUBvzDV+NADtmspb63G4Ypxy+IJZYbvswNY5QCOicK5VhhLmmj4ZLyjZHcZOklFhs+qqrK+HFEhqLKRmAc1RyVkrkf/0LD+HFh0fx/OMj+MqZRbhBnFICDI1jKGcqg9GBlMPWDQJumijj2FQNMzUXdS/CnsEMAvUQlTF07BvKAYrsnY4oGcOB4Szu+Nj78PpPvwMcEk/ccBve8wt/gHOhvqaDdDVI35tVEtJ9z5PzqLuh8hIjF/1YSpSzNLo/v9TG91w7DKbG03mbvvczCy3sGczi1bfvoa7MJmPSth9hue2TdY6lq5E+lCFsDaWMgdv3D/WAlss9Dv0sULKmhozBsdj0UcoY6ffE1Lk/3/Bwk3p46a7VI7qkC0tRViZqboAglphv+HD8GAdG8ul5uZGKdbuu+vecnMdjl+pgQHpddvI6YxwYzuO0Mh7eSoet35h0vX0qWDoKtobZmoehgrUucFyvngFh/8qreyHtBgL9ioFutE4Qb6ljtt1KLqNkIe9XiUJN1zhu2FHGcstP44Wero5bzz4yunjJcgDI6KQELGUMxEKi6cXIWRq8KFZeX8SPSW4mDS9UfC6JMKaxIlNAhDEGWyciexIzlNTq7ymKaeHkYLD0/rmfgALYcnvjYNn1hoaaq0UCkFIgFDQG5TpHrBb+9Nio/ybAB2DpWC4dmyqPryjZMQU6Y0HbcsMIxpKT+iAlJp9Ax/dMgPhIN06U0kQBXWM4Pd/CXMNDGJPlAQNTppjE80oWKc7ZlowgH5+u45PHZpExNNyyayDNHW24AT55bBYHhvPpz3bfgG/YUcS55TYabgRXkEo0FnSO5G1StI0WbPzQqjiif3p0Gu/40lnM1D06Zxh1l64bLcBUnmTJE3QYE3AN1LnnqvMlUR8nY+vEZrjuhdAYR9sjm4pIkAp4n1o0a04ENwy6OIzUOc2ZWg+R/yMPT+Pw3UX89PP2ww1jzNZc2AaHqWmwDIam11lAgbWmnnlbx827B9JR7NmFNmIpUMlYuHas0wnpHlGKIMLrPvRWfPc9HwYA/MOt348/fdnPY580sGcwizsPDpJXmZA9/lCXS/reauUsHYM5CxpjqjvV4WkNF2ycnGsglhKtIEbB7qhdk31YUIBms30QQuKdXz6HljISXmqH0DlxVTOGhroTQuMcL79lRw9ouZLjsNoCxW8IlLMmYklEc0N1ozez/ugZ0UmZdmGTTrHGCUgaGkPdi3BmsYXvPTyGV97af1TazW27fV8FUwlQLNqIpETLC1F1wx5emhASnzg2u4avaWgs7bDP1l0KCwe7bEXlRk7/hkaiIgZ17a7hUq5fz4Cwf8XV3V3ReWLKKJW9Qu+qrQHQdN6J+3kaKtmq2RVdk3R9AOp82YaGUEiMFCxUciYWW9TW5sp/4+r15NaWkFL5KVEgM9kV0LE7urOEOJZ4YrYBXeMwpSQFmfoAOufgkDB16tR4YWfRlLFI1X4Zg9zdnSBW3R3yUkv5Vsm+AGgHMUYKFmpugDiOU7XhlRZnDIYCdrGgbSakfyEkAhA4sw0t9ewClDGrpNBgLxSo5AzMNz1YRkfF2u/MoVEqOe97IdDwKUA7iCl4mOKMmAqVZghi6izlLT29oQLAYM4k0QiQxr8EkcBszUPG1HDTrlK6SGxmBNndRUhI1En1c7HvvgEvtwNcO1JAJCXm6i7OLLZh6RquHy9irJSBG1B49Z91xRH906PT+O1PnEjjVawMR9OP0GoHODHbgKWTH9NKO4CljHw1TtcJT0zakDY9AYAMOzMGWgGpCRmILC8gUbJNXDNaUEq3QNFxWKqKZEm7mXV81boX7SMTJbyhe5EOBTTBeoBsoiBcDQIGciaena1gruGh2g4wUrCw4pChK9BNAqdu3T54uOH41yAYw6f+w5vw6ef9MAp1DzlTx0LDw/sfuISPPjLd1x+qX10tf6imF8HQOJ69t0J5i11GoCvtjo1M2Idwup19+NyJedx3Zknlq1pp8oITxPAjgcGcicGcifwqsclWeVPr7cN6/mEfUQauW7H+SEd0Pimel1skXkhK49SdvnasCCEknDDGq27f3TPSTKoft20gayCwNDx0qUrWGZI+10jBStep88vtvnxNoNNhrzoBihkD14zmryi3cj3z29v3D+GmXSV86dQivnBygcybt1jPgLB/xdW9IJYzBsJYIm/r8ELl8I3OImzodIPWNI7gaUA6CSFcSKwJqE720w1JGWTqHJWsidm6q7p3HIJLQDJoUiCIewEmW7Wdyy0G6iy0AlJBhpHyBNMZ/DDGpaqXKkEtXYMb0udgirAlGEMQxYCy7dAYAZdkjDSYM+FFND4i40cyfgXrdABpQaSnqUgQkTqIyDV7O0a3G5WQEmHU6Z4xUGg1ZwxRHKcO9KaupYaqDARcTF1TAc86Kf4WWsiZ9BTcCqK+XwID3Yzpu6WfDYVAFEo4Pi10prpx24aGQyMUNnx2sY3xUga2GpOcnG/C1DiG8mbKEeOMYahgIWNwPHapjpce7XQL+lkPJLWmiyBlms9o6BzjRXtNF2H1DdgLYsw3iXh/865yx5Ns1TjomuE83vGls3CDGCNFC4zRZ82aOlpeiFAQuL9+rIC64t5IIDW3bfnkHZUxWM8iU8kZMDQaW9XcEM/dV8H/+/z9+Nv7L+LCEvHDkq6TkBKDOQMLTVokB/OmUr9FPbE73Yv26kU6Z9Fi3/ZjTC62lE3GOiCAMQwXbLT9GC+5cRyfeXwuPd5+FPeMKAcnJvDeX387Bucu4snnfA/0po/5JhmWHhzpkNs7/lA7r8gfaquVAAwvFGuMQFOfN0ad4Y32YSPlohASHz82Az8SGCmYYIwjZ5GAIVb8rKzqTK0GU9vhTa1X/a6RG3aUtqy03DuYw0DWxNcnlxHFAg2PEgPaAY3IExA5XrIhJHB+qY12H3rLety2MwtNLDQ82IaGgm0Q3UEAD56v4nV/9zDe9G+vpf3rw9dMSuMUVbejlFnDBb2c3MqNHvDuPjKOX/nwMRw7N7vu76+ubxkQ9pa3vAW/9mu/hje84Q340z/9UwCA53l405vehPe///3wfR/f+73fi//9v/83RkdHv7k7+21Yfiyxo2Tj5l1ltPwID12ooqpiV8KY5O46p67N1VY60iKMlKy9nutELIn0rXGGJ+ea2DOYRd42MByTT48AEEc0gFHCLsSSAGSkMiOTSv5dJv/bwmcKY1rMVpcQEo9N1VXnQcd806dumJZ4WUE9/UkKAlegKxKAUC2uxOdnMGcijKl9nbc5HD9CEKtQbEatcp1z1Bx60q67AQIF1K7W1yJkZ1tZnSEGS9WejJECMZJAHFCeZGJNkXw/Q3kLe4fy5AcmBEIpUclb0Bxa1BPH/eQ96DMx+FGMcsZA04sQK+NYk5MPWeI4f3A4j5+4cz/GyzY++sg0Hr1I/CI3jOEGEWxThxfFqdGolOR1xQA8crG65RFUdxeh2g4wucpYM29rsHRtzcK32lbgr75yDuNFG/k+nmRJZ+mjj05jpu6hmDFSAAbQuETXNPgRydpPzrVSJWMiRrAN6nY1FAiqOhQ2njFofBnGgrzsGMP3HRnDrXsqsHQN/+ue00pwYKRWGW4Yp5mGhkbAqTt2Jzn/uhftZJF+fLqOv73/Yk+XYiRvkZWJT0kd3Z0ixlgKAm7eVcY1o4UUvNacEDdcOoFr2kuY/r6XYyBnYiF3AAu7DgBS4vRCE0LInoDyXn+oZRwczuP49Na6GZdjyglszEvKW1oa9J43e0Fo9z60/Ai/9YkTOD5dhxPGyBoabpwopeO47i5OJABDAwCWJkponKPmhChnzDVgaru8qa3WRg8vq+vEbAMLDY84sZJMuwECgG4Qo5wliw3GGFw/6gsK1+O25SwNUSzR9unhPGNqXXwvgZVWgD/+7Cn82vdfty5fM8nttHSOHzg6nnJBrzS3cr1jpOscr71rH/6oVtvS8QO+RUDYN77xDbzjHe/A0aNHe17/xV/8RXzyk5/EBz/4QZRKJbzuda/DK17xCtx3333fpD399q0wEurmQxe7UPwdCs4lX66Ux3MViwjaBDCgxlWWzlNOUEIMN3VFehUSGYNuQKWMQW7RksjIiWN710Mo5eUN5jDb8GgxkMSFSbLsGl4IP4y3NMbkq0QDCRlcqNEjY4lTPJCzKGRa08hLrTtqJ4j6iw9CRVDVOQHNlhelijPBqEMlJW3LMjQIIVIuWP9Ako35df2KeH/0/hrnGM4ZWGyrYyQ7Hbxk/8OY+Fk37Sqlcv29gzlkLR2LTR9+JJA1NIwWLbS8CKNFCyvtgJ7kZRIAT12/pCNmmxqMmJHyTtdgMCKsx1Jiuubib75+HodGCzg6UcRjl2rImBrytobpKtlAJIHSGYNjIEfhy00/QtUJ8dil2pYWkKSLMFd3MbnYhhfFPTfu5VYAzhjm6h5u2rXqmHfZCnDGkNnAk2y+ITBdcxHFElam91v0I4FInTcSgMbJULXpUYcvZ5IwZddAFk/ONVTmKAMDdVJrDv1cxtQwVDZx064ygN6O3cMXqmh6EWydrqeCbcAJIiREgERVG0Rxapi6etFer0txYcXBbN3FheW2yq9FmveYKNKS7XHOUvDK/uED2PneXwaEwDtvOIRL19+SvlfDC7HcDlBSyQMNN0xBHWMM40Ubx6frePHhUZxaaG7azbgSG4uNOECzdRf7h3IAA86oju3qfbhpVwm/qyKghJQp9+LiioMn5xp4892H6Z4Gyn+tOgGKttEDpjSWdHHsNd/LZvu3nQiny6kEPEVC4rZ9FZxbamNKqXwNjR7qMmqkKKXETM3B3qE86m6IycXWmgzINf5bKgWDKeVhJWemHUhDo5zYqhPgcyfmU9PW1XxNzoi6cPv+Qbz4cKd5s9Xcysupw+NFvOymHXjvFn/+mw7CWq0WXvWqV+Gd73wnfvu3fzt9vV6v413vehf+7u/+Di94wQsAAO9+97tx/fXX4+tf/zpuv/32K37vhIj7dFQ/Bdw3s2xDw1KL1FcnZuuoe1Gq3uvujFztihXhKGdrsA0djEnUHQrkTiJRNM4wWrQgJV14payJG8YKmFxuY7rmQWPEQ0rGRQmXTGMUCF7OGJhteKTmUT9rGXRq6xrDUtNDvA6xvfuSS7pnCfeq49VFYzovjNWIkW4uLQ+IlZFaLCUgVSzQBsdDgrIapZSp6jHZh0hQJIyh0WdaUd0wAGl3pHvbbNV/t/IdSgAjBQpErjkhltoBwlgg7EJyCVTgDChlDQxkTRzZUcIrnjWR8kUWmj5MnWHnQBaAxGDOxHnuQOPkk1Vt+3AC1cGTZN2QSOApOJ1io3aWM5hteGQQqXFlEqrh/sllfPDBKUhJ5H3i5MhuqyH4kUDVCVHJmsgYGmpRiK+cWcIP3rz5wrN3MIeDw3l88vgsYkGk5ORI6pzABGcMX59cxosPj/aE8yY37ZylbWkcNFHOQNfIZ0rXoAjmSM1OTZ1AqgSDF1L3y9SB68eK2DecxZmFFiCBZhBhvGhjMGdituGh6VGmY8MNUbQNtP1O1+7IRAlSSkyvODi72KZQcuXAzxlLuwVSUkj0bN3DjvJaE86NFHiDkYmTc00EsUAOSDlLS03Ke7xurNCzPc6A/X/5P4E3vxkA8Ogtz8NXszsw0JX/eGK2CT8ScMIIj16qd0DdUB4MwJnFJhYaPpwgVjmm8bpWEFdqYyEERUG95MgYvnJmCQsND/MN2fM+APp2VH7olh1455fP4eRsExpHTx5m2w9xcraJd947iZ9/4UHYpoZxU4cTxGvyJluqi3O36uKsrqvR1en3ubcCTrrBU97WMZAzMVq08dRcE6EQsHUOLxKYb/iYb7ho+WSG/XufOrluBmR3hXGitpZdkXwkeBKCXjM4x+RiGz/7/AOYqXk9fM2ExD9etPH9N47h+HS95/Nsp+O31WPV8iN89JFpnLgwv+VtfNNB2M/93M/h7rvvxote9KIeEPbQQw8hDEO86EUvSl+77rrrsHv3bnzta19bF4T5vg/f99O/Nxr9TdOI49L5+3Y7CpvVtxIA46CYlz1DOTw508BszQMgUxuAqhOkbuRXu4j/S9J9PyIyl65xZEyOlk8O3qGa81uGhmKGwQ0i1L0Qc3UPkBKRlIgC6tyJLsPTWBJ5/YHzVWUFQa8vNH0UbYGCTdmCGucAYhXHQ1Am4cJ1f0+xIG4UYwyeUgbGyh5BNfLUZ6ExYiwkfCHSG0QCsLZS3ZgwGZcyEGi0DK6sHZDmJYYqx6+7ElFD5wa1eWkM+MGbx/GV00uYrbkIVBB5t/o0ORM4Z7h2pIChgo0ziy3kLB3/9e7DfX2u5hs+bIOj6YXIKYl9Es1UtA1Eks43N6DvoenHGMyZaCtSeUnlbba8CF4YY6nlwwmogyMkS49v9+eMFSm66YfQOcNQzsJCw+8ZSa63oHDOcPv+Cj722IzqPsouZ/4IlqHhwFAeZxZbOL/chhPEazoqB4aJDzNTczccB/3QzRP4i3vPYmrFVV1c+jkSf9B5V7R13L6/oqKfOhE3r759DzhjeOxSDR96eIpGp8tOmtvpRzTiAmSPEODx6Tr+7AtnsNwOMJw30fQTrk6kumzEDW0HMeVs7q30Vayt16WQUuLcchumRvmexawBLyCVaNKtGC3aODxepF/wfcif+mmwv/lrAEDtZ14H7Vf/Gw4dm0vBQxgLeCE5tds6iXQSm4GaUyUSvAqa3zOYhc45ZmoObEPDK2/diZt3dbpuV2pj0S8+arRg465DQ6nnW/J7/Toqk0stPHhhBYyhB+AbGiULrLQDfOPCCqRAOlI80tXFSfJ4dY3yIV98eGzda/pqdnW20zlcLQxgjGFnJYucpafJE+0gxnTNgRcK5C0dOweyfTh+/TMgDY0eGITyDIyERLPlI4hkj8Ck7Uc9pq091+hQHhIS77v/4lU39F19rBKj3rylY1fO2HwDqr6pIOz9738/Hn74YXzjG99Y829zc3MwTRPlcrnn9dHRUczNza27zd/7vd/Df//v/33N66tPR02tXkl3gYHu8k9TY+ybWhJ0wXzXvgqqrQDnl9so2SZ01XlIooeeDuCoc9ructtPZfHUpqYLN1bWDclIzw2In/LopRqcUFBYtCKGUyeld/vp6EwmIIy6CsvtAA0/RN7UYWgchiZSTy1/HeFKknNoG1qa8xivGtFy0EUfio7f19UUkzJGOZfLLT8d50kpU08tAYk47uyRxgBD1xBGApGUm+6LoXHcc3IBMzVPcXhYGtq9urI6x6Wqi7xtwA9VfmOfp8dux+qaG9IojzPytwpiLLQIoE2UM3ACGjFkLB0jRRun51vImmR3EQsyO5ytuyRG4GSeGoUxPQ2jV4whgdROpJQxsEMFsSc8rs0WlLFSBmNFG0FMv9OdV7h3KI9SxsD5pTYevVTDZx6fW9NReXy6oexU2LrjoNv2DeATj8/C4GSUKgQD6RhoHB8LInZfP15COWulxzQWEgtNH20/xk27ytg/nMeBkTx+9cPHCCRqFCg/lLexbyjXYzFxneJfJcrPqhPi8emaeuhhqZnwcMHCXkvHT9y5d90Mwrobou6EsDUOCUnWJIylCsecpcMLBa4ZKcDUeSpsYBJYcehes5/7aN/9MuTu/ypiruGvfvSNuPfZr8TBY3P4oVsmlMdZiL/5+gVwRnyrqhOmEVNFW8eMeiAj2wjKM2SM4dAomUo/Pt3Ay7s6oFdi37DR+LX5+BwOjRb6ut5316n5JlpetIYknpy9yWc+vdjsUd1eM1Ig2wsvQtUh/7ifet7+TQHV1ejqbLdzuJ4wIEmemGt4WGkHiqIQbjsDsmDrKFg6ak4AXacIJSFIpMTA0i7ZcjvAXN3D9x4Z6wGjc3UPH3roEqpOeNUNfdccqyLHA+dXsNIKEAuJ0cy3gU/YpUuX8IY3vAGf+9znYNv2Vdvur/3ar+GNb3xj+vdGo4Fdu3b1WCEAwEDOgK5pcNSTYRTHcEPV5gTWzUz8dixDo87On987ibobIhbkZJwsZGEsnhYABiA1fKXqLKR+GAOMxlMZXUPdDeGFInUFD2MCN76UaYcy7iJadZPuMzqDG5HZaDIMpM8lUXPDVJkZbuFDxpKAmMEZTI2hlDHBGbDc8uHHEvUuovbVPmYSpBxtyBBhTCCkkjOgcfJuswyOQyMFhDHdSLxIIGtRrpula2h4AapOZ/+Ij9URRORUKPBMzUNL8eckJGSf89zQGIo5E24Q4/R8E4N5C9M1p+9TdveT+CeOzeLvH7iAlhdB1zQUMsqCQ0hcWHYUGZ3jiOqQJFEpUlIHqmAbcHyyL/AUTy1W8/JuH63OGUXXqRvEODHXgK1zPHaphrOLLXz4oSl4YYwd5WzfG3DB1lHJmyjZRl9iecujLMivnFnasKMyUc6gkjNxZrEzDpooZ+gJ/OsXcWqhCTeIMVyw0PJjZeTb6WIOZk3sGewNGe6nbMsr36rRog1T4x2/NrVPCbC47+zSGgCicQY/FGj51FF1Qg/ffXAIv/jia9ZdiB6fruNvvn4BF6sOpqouTGWjsX8oD6G+l4Rf2O33Big+XNNH04sw8+7/gx33fxVtO4f3vOEPcOHZd6G86rsoZQwsNn3sKGcxHAs8Pl3vGZkKxR/VNJ4SvYH1AdXl2jdsRBIfKVo4t9jGu+87j99/xY1pmkL/2moXiojir3vBQbznq+cxudhCLIBSRsdz9w1e9khxu3U5ncMNhQGg7+DgSAELDW/bGZDJw0zG5KlfHmMUp5TwZjkDLJ14nN20gf3DeQgh8Y+PTqPqrA/+LtfQt9+xanq0fg3kTLhhjIvL7S1v75sGwh566CEsLCzgWc96VvpaHMe499578ba3vQ3//M//jCAIUKvVerph8/PzGBtbvzVrWRYsy1r339P3EhKWQa7fTTdEMaOjmOGYq3uwdA5NUyOnb5G54uV2qhioWxDEMc4udp8YEpbOwMCuuhqyu1ZzmJLPEasWEmOAFwnwGKmqDugQwzlUrE4Xby0h5pPvGdKQaABIbKWE6IwIBSgTcqNKFIC0qEslECD41koUjIqD5q4TP9S9je1U93crQUatts4wkLcQRAI5g0PXKP5luubguXsqaLgham6Ekq0jbxuYr7tr9itxrdcZQ9HWUHdjaBzImhr8ZNwqZU/3V2fUmZGSVJIaY5iuu3DCGO+578K67fwkTLnqBNhRymB0t41IkfrzloamH+HcYhs7yhkwRtFYNC4mdWOgxAhjBQtnvAg5g7I6w4BAQ3KfXO86iGKJRhyiIYE//OxTMDSOKBZppyvP9TU34F//vus6i8hI/3HinsEs5jdZRFacAD//woPgqkPU/QResHVAEoAKYoFSRsdYyYbOOaZqDtpeBAmKSuoOe+6nbGt6EfxIYLyc65vtmQCLxaafApBuZ/rBvJkC/ZYXoemtn82aPOkvt3wMZIx0nLnSDuD4dewbykHjQMuPULQNnJ5vYcUJUn+9vKVjIGsiZ2l4581346YXHcPk3a/E4u5D0LB2MXzpTePwQwG7SEKYXZUsZusuxQCpjoeucewfyqOSM/t+7m5Adbn2Df06aCvtAOeUejaIBGYb8/iVD0u89q596wKka0bzyKtx/eogdCmJ+5m3dVwzSsrTjz4yjcWGD6HEDYnZ7+HxIiYXW1eNPL7eeP5yOodbEQbceXAQ73/gEjLm1jMgu7ltdxwYxncdAP72/gtk2RNSwgKBf46crffQBpJ9ezoNffttO8mPzJoaGGOot9wtb++bBsJe+MIX4vjx4z2vvfa1r8V1112HX/mVX8GuXbtgGAbuuecevPKVrwQAPPXUU7h48SLuuOOOK37/th+jqfxKNE5P63sGs1ho+ghiARbLpxWcbLcuF4BxxlKX7NXlRxIb08ivTiVjwASkMPWWTPG4kmsk6dhwzsASgCCJvM+6uGCJK3tS3X/WGIfGAbeL8McAaBpDHK0duyXdCM4YBGQPiHJDAT/yU+uG4bwFCcCLfLJIWAW6hOz4oW2nVo/YTI1hVyWHfUM5PHKphpm6R+8jJdpBhIa7gIMjObziWTtx7+klPHKxCiegm1PW4MShU5YdAkA5o6OpZrDdmYeGxsAF+TUlitXk36SU8KMYdTeEEMBE2cbeoVzfdn5yYz8518TxqTp2lDJrLBtKGRMHRzhqboBX37YbXz+3gjPzLYDRQj5WsrFvKA9DYzi37CBUBreGJuBFMgXt61WiLAUDHD8C58BwzsKKE6A9XceRiRIqOROMMYwVbTw2VcNnn5xLXblPzzdRzJg9rvmDeQt3HRzC36tFREoCS90ds2QRScaGq5/Aq+0AQgI5gzhODS9Ey4twy+4BDGRNHJ+qoa6y+bKmhqVWgDm1gK12SN8qsBguWLAMeohMnOm7VXeJtULVCfGXXzqL17/oEPYP5dc1sqVxZh1umGSiRri04kAoLl3DDeBGnYtSSonnPHovThy5Dafnmziz2MbSa//Lmn1eHbwexgIPnl/pyk6kB4bxrI0Ly046Kl7vc3cDqp4ujZlDK4jTUWne1Na1b1jdQesGsVlTR8bgqLsRTsw20pinfkBs/1Aez94zgHtPLa0h2zsBEdSfs6cCN4jxZ184k461xssds9/f+dSTGClYqDrhVeEzbTSev1wD3M2EAVlTw0cfmd5yBmQ/btvx6Tq+NrmEdkDKaClJzEIh3R3aQPe+XamR7UbVb9tJfmSkKA3kF7m12jYI+8xnPoN8Po+77roLAPD2t78d73znO3H48GG8/e1vx8DAwJa2UygUcOTIkZ7XcrkcBgcH09d/8id/Em984xtRqVRQLBbx8z//87jjjjt6VEPFAAEAAElEQVSuijJSV0/ojBFXo+XHaHkhsoamRk7fQgjsMssyeDreW6+DIDf4t6tVEgSkTA7KJ9Q5bJ2nMR05kzx3nDBCwSKVkMapk+F1ZTCmN/kN3iuMxZoxsgQtLP2KM1oMJNYH3UknRtdIVSZl5/XVv3IlE+xkW6bOO09nCWAFAEVSdcMYZxfa8KNZzNY8eKGAzqE6D9RxabiUmRYLiaYbgjGm9j9K+UgiFsqqgojvJdtAO4jhRUSeb3n0e6WMhomBrPLP6u1gCCnxUaWYXG4FmKo6qLkBDqqw3u5KbnwjRRuvum03Ts23cGm5jS+dXoIfUgxUxuCwDY6lpo9S1sBo0cLp+daGx5WAtJIWKOAZx0Ddi1DOGvCjODUkrTokj59veHjbF89iMGeCg/hLZ5faXfmRGdx9dBw3TpTwkUemMVf3MNdwe7zEihkdY8VMDwBY/ZTcfXM2NN7jyzWQM3FghJ7il9o+5drFApYipX/0kWlwxvpGJ20kBLjzwBD+5dQivnFuBSvtALoa+wNQ0VsUyVV1JP7l1CKm6x6O7iyli/vqz1DJmTgyUUq7QVIy1LwQz9pVxmNTddScEBpXggIp8HNf/Gv87Fc/gM89cSfeN/GH8CK56WK41PKx3Pax0gpQyZvQOY3Om36UZldSisL6nlzdgCrp0jw528AXnlrssYjgjGH/cK6vfUM30M1Z2hoQG8ZCXZ85zDf8dUdanDP89PMOYKHhY3KprWxBkH6O68by+Mnv3oePPDK9rvL0/nMrmFxs47l7K8iW9CviM23G91qPHJ/URsavGwkDhJDb8jLrx20r2DoG8xb2b0QbWLVvV8PIdr3KWRqElJitOShlTcqOtPQ08UJnDM4605J+te09+KVf+iX8/u//PgDg+PHjeNOb3oQ3vvGN+OIXv4g3vvGNePe7373dTa5bb33rW8E5xytf+coes9arUaZGPkWBsjyIhcCF5fa3VPeru5SHnyKwb+HnGXUHhNwcZCXcoadr9MoA6IzcvnWNYSBjwtTJAZ4ziRt2lGDqHCdnG4qIHoMxAso8QVRb3Ld01LmqItF/E0mHZTW7g4FMYC2VpRlLGqEJ0dtNezoAbKy4WueW2hAgk912EKPphoilRBCRiswLY2ia6jCCACJjDDlLw3DBhq2HWHHIZycWxP1KRiMspmilKJbKIkGgqUAxZwymriGIY+gMKGVN5M3OrSLpYDxysYqn5ho0IitlkLd0LDQ9LLcCeAF1n7qBmKuiX973tQtYaPnp0/hQntRjVSfAfENgIGtCSCBvUddB11gnUJxRt7Hb3sPSeWehVvwy4vbFqDpA0dKx3A7w5GwTs3UXYRSTwq6SRduP8dhUDQCp1AYypORsuCH+4RuXECnxwkPnqzB0viYceKHh4/nXDKeLyOqn5O6bcyljpN0QUruSTcezdw9gqR0giAR2ZQ0M5S0YnK9ZcNeMf9bJ09N1Mkj95LEZiixadX5J0HlQ1jWYOkfW0Hreq19XpJIzMZAdUCPRGPMNHz/0rAkcn65D19TY2/fwlo//Cb7vyS8DAM6P7MbJuSZ2DuY2XAxNneGrZ5aRt3TEMR2TrEmB6BlDw3LbR8bQMKbipHaUs1v3w1p9sfZ7vau6ge5I0VLxSroCD9TFGsxZKNoGOOMbjrSOTJTw5h84jA89dAnHpxuK46ThqDJrzZpa/5GZUp6yZHoA9H0A2iqfaSt8r/XI8bQ7mxu/ricMuBpeZj0PH+vQBlbv29NlZPv4dB0feugSZur0QJYzNZSyBvYP5bF/KI+WV8Ni08d2VoVtg7Bz587h8OHDAIAPf/jD+IEf+AH87u/+Lh5++GF8//d//3Y311P/8i//0vN327bx9re/HW9/+9uvaLv9ygnpJpjYEEgArafJpuFqFFMXI2cMnG0+KhUSEGql2ux0kFALWURkx81AvLYNwJaM+wSguCKGyvyjLk2iRBzJGzijkVN8LASYApo652AgTy0DctN92+gzblTdm02AVRBJhFGcROzBD0X65422e6XAzAtinJxtwI/I1iGICRTQ90P2CgajhwgZdRSRkZRYbHpoehw5y4Chc+i8k21nmTzlVukcaV5jrLIrvVAga2rImhqafkifHxIrLR8PX6pi/1A+BVUZg2Om7qKSJZPQZISZZBW6YYRzKjoH6t/OLjbR8sm1vftpfKbmYiBr4NW37cFYyUbB1vHYVA1v+8IZzDU8dDUxVEcCqDlhj9hGSlqoVtt1RLHAcjsAGNB066n/22jGRMnWcXYxcamnDtGhkTxWnBBNz8XphRbOLLYoyDiMISEV1yzprop0D5KR7HTNhZASrh/RSJYx7B/Kw/HrqXM9PUhJnFloYSBroO6FOLPQAgPQcCNMVb0ew9PuBTcZ//zlvZN48MJKalybt3UyDwUtFH+vJPnJSLq7dM5SC4ycqaOYMTAxkEkX939/266+XQTGGIoZAy2PoZwVWFJmvcN5C5VWDb/39/8VN1x6EqGm409++L/gE7e8GK4bopAxMFtf38Zjz2AOCw0PB4YLCGORphc0I8pOFOrcpCiv/r5gq7lTuweyqZHo91w7jJbfyX7MWwR+3n3febz69t001uqyLklAw7nFtkonIIsYskzRsG8oBzC2pZHWRl2ixy7V+o7Mmj4pT/NKedqd33o5fKat8KM2IsdfqfHrlXqZXQ6Q6/s7Bsdiy8dc3UMlb+KHVo37N6vubuLB4QLOLDbhBTEWmz7aXoQDI3lkTUqy6BdltV5tG4SZpgnHcQAAn//85/Ef/sN/AABUKpV1Pbm+FSvJZVvNL/qWLdVGj8XWuGrb+UwMaownt+aVttnPJCAkZ2rImgx1N0akvMBqQqDhMeWqTFLjr08uIxZCEcVpG6Ean2iM+FwmZzA0DeEVhPJuFRxJJFy1zvFOfpcWe+K1reP/uuF7bbQPSUdSSGC27iFjaLANE1XlQJ8Q5g2eMPk6o1eNd4xmnUDADX2VRSnTcXAQ0SgFUnlUaRwDGQ0rToicwTGYN9D2BWpOmFpCaAzKQd6H48dpd2uxRQvwWNeNnTGGfUN5tP063CDCcttHzQ1TP6eWTwvLek/j959bwZvvvh4nZhv4wDcuYbnld6xHFPBv+VH6QJJ8V0EssKqRkHrCRTEJDwyNqbE2CVHcMMZUzUs7HQDZMUzVyEHfj2KVfUcCBkPjcAIBJyAPQs4YsqaG/UM5XFxx8MsfOYbFpg8viDFTd3FxxcEtKk9yQI3zzi42MdegrMkwjnF0ZxnjJQt/8aVJCClRsJWhZywwV/ew2PSxs2zj1PzaBdcNIlSyJg4MEQFcYwwzNQ//857TCMIYJ+fIJFTn1AVm6gRLrl1dI2PYWMqUlpEs7gC21EUYLpKqff/8efzBe38DY9V5NLJF/OZ//B84duBmiuEAcPv+QTx8obol8nae67g1O4Cpqoun5mlf8pYON4wxlLfghjRG+uFn7Uz9uk7MNvBbnzyxJlJpcqmNnQNZcM5R7EorWGkHWGkHOLs0j9PzTZSyRg/XKgENf3XfOcw2FlB3I5g6x2DOwr6hXPogstWR1npdovVGZgnJW+cdEn8CHlt+DD+KUXNCVJ1gS6T9rfKj1iPHX4nxa1JX6mV2OUCu+3cevVjDTN2FHwlYGodtaPjII9NgXeP+japfNzFjampEH6LuRTiz2MKtuwdg6hzj2Swe3+Kx2TYIu+uuu/DGN74Rd955Jx544AF84AMfAACcOnUKO3fu3O7mvmm1zSnXunW1TV7XK8onJE+oVp8A1CspgY5x7VZBSnetBhbJny2Do+6GNApMAJaQ6U9MlCwEocCKs3F7izMaS+RMTQX/isty+d8qKNKUOABIArg73SYGpL5qtG/05+7OoM47x7R725wRGArX8eVKRg8SpPZryxhB7CESErbBkTV01LwQfhSvAczd75WoSSOhPNiYxEDORM0JFX+MPLyyKodRgtRc144Wce/pRRoFK04edcgIkHhRjHNLbZQzOqmItWSU2KmEP5Twri6sOKnvlpDAzoHshmqlyaUW/vLeSZycpQXYUE77jJG/VaRMVW2DU6cHSI1uEyNfxighAgAiEacHVQLIGhoKNgULX1xxEMXU/QMAJyZKQsIBAgAnjBUQp6Nr6Rwlm2whgljgUtWBq8bDB4fziCwdkRA4s9jG/edWcHQn+ZFRDJeJkaKdAojdA1n8wj882hPe3PJCVJ0QkXooqTkhbJOsP17/wkPpYlB1QhyZKPUcy7yt4/HpOs4tkYlq1jLQDgS4FD1dQ1JL05hVYwwtP0bRJt7YcjvAqfkmXnHLxKadB9vgKBkMv/U3v4mx6jymhnbi13/yLZge3tmjAHzR9SO46+DQtsjb800PQnVWya6F93Tsjk838IM3T6QE+dVcpxOzDczWPQwVLOS7lrluoj0Hw2jBgm3qa0a/RyZK+INXHMWvfPgYTsw2sH84R+eEOt5XMtJKar2RmaFzxEJgsRVB4xyn5pvpxCbhbwZC4Fc+dEzlgHKaJhSsvmay2+FHrUeOvxpxPlfqZXY5QO7IRAlCSpyaa6KSNTFWymAob8ILxbb4df26id0j+oYbwgljvOJZE/ir+85Dl8GG2+uubYOwt73tbfjP//k/40Mf+hD+/M//HBMTFN3w6U9/Gi95yUu2u7lvWl0t3PR/k0PmRxKQvQBs9fjlm1HrAYqGEyp+09piAKZW3C0dv5xB8Rehso64Wtw1BsDgHfuLfttlACA7YNsyOCLlDpvRNWQNjroXQXZ1zBKAxBlx+WJJoMEyNESRQBTHqSJTKosIUj8iHXdyTi96YRJWLhFJyhrsBoSM9Y+dSs6LgkVZoRlDw6E9eVysOsrtn7qfJqcb+Fgpg6mak2Z16hqDxui4xxKouiHKNnG+HrggUM4YGNdtcsLWelvvlZwJgxdQzBj4ybv24rqxIupuiN/71MlNpeon55qp0/hA1sSyyrU0tO4xMEPJ1rEchylATsArY1BdAx01N4TGGXQA+4dzWGoFyCrzXo2LlCwddZ2ExEfSUxK2zsljT8ok8xTQNOJS2VJguqbAQtbAUwvNlLhvcAY3jPHkbIPigvo8tU8utnrCm/0wxFLLp/fgBJ5jQWPwd993DnsGs7hxorThaMk2NHhRjIJtpeDU0jlCIXvEKTpjKOdMhBFx204vNLGieGnv+sp5HN1Zwt1Hx/Hopdq6nQchJG7ZP4Q3v/yX8DP3vg+/++/fDCdfQqxGd4kCMFFebpW83VLjOPIIg+JhmSkRuxuwr8d12j+cw1SNQOSgUsVKKVOifcbQSBVsautyrZIw5v91z2nMN3xwxq9qNuN6Y7aGE6IVxIhjYCCjQ9MYllU3XONkGwMAc3UPLS/C3uEcLlUdPDpVwz0nF7BvKIebd5fTzt52+VFbAUuXG4p+pbVdICcECYf8SKS0CQDIa3xb/Lr1uonJiD5n6Ti/1EY5a+LgSB4Pn57Z8j5uG4Tt3r0bn/jEJ9a8/ta3vnW7m3qmLqNWN8G+2QBsvWISWD047O46JR2M9YpDWVUwYLiYwUKTsvIsnQNRfNncsO59YVBKOkmSZ6EsLAQApnZOSkAqwFTOaLhp5wAuLLchJeCGEak3lZxeqO9GSrX/6k1MxnHtWBGLTR8tQVwmyCQtgP6cfN6En8g5QyVjYKkVUDcqkmgH4VrQqn63+3DEUuUfahzX7yhhrk7O1Yd3FHGdVcSp+SaaKjvUDSIwxjBbc3Bm0SFTRAAijJUJp+qIKW5VYpWhq309s9DATbsG1tzY5xoebtpZxktuoMy7ycVW79O4lGkWaOKwbhkci02vx2nc1jmJECKBSGVHxkLCUcaIGZ1joeWnfMaMqcPUeOotpTFgtJjBzTsH8PClag9BngHIWGTYLKVEzjLgBpFKJyASdl6pdSNJYLi7K0aO92SlcXqBFJwZQ4OuMYSxyr6LBF543QhefMPomoWq6UU94c11J0wtWdD1cJUxOIIwxl9+aRK/9YM3bDhaMjVqpwoJGIypTihg60xxq6iLmrd16JzDlxEmF1uIBIH70aJNIdmqS/C6FxxE3tJ7F1spgGPHwI8exU8/7wB+u+HjF/fdQMdFeY8lCsBut/etkrczBk8FEQ2PIqS6DVoTwH5qvrUuIC1YOoq2joWGh5m6ix2lTOrynzU1OEGMwZxFZrdYn2v1dGQzdtfq7c/VY0zXXeQtDRpjJBJxojTaLUnwMDWGSt5EO6TkBtugvFk3jFFzQxy7VOvp8lzNoO+EnN4tNrhxoogfvnXX/xVj2e3U1fIL22o3sZQx8Mpn7cS5mcUt7+O2Qdi6WYyMwbIsmOZaH5dn6tujUpLzFf7sekrL7eBFiSTomKHmBOlTvK5TrmLkRVfUzUzBoOiQ8NPX1Og06SZxBhQtDXsG8/ix5+7Ghx+ewsXlFpwQCMKYuGHx2m3HksBoKatjR8nGaMHC5FIL7SDudHCSrhbvCEQYgKGciYxpQIJhue33cAETfk93BygpChjn0DXANnTYuoaRgoWVdoATM3W4oezJHSxYOtxI4Nh0o2O9ofY9jiU4SDwRSyJGJ2a4czUPoSBxixcJHNlRTm/sSZ7fkYkiJpdaAAhwDBcsXFhqYyhv9WTkJWPYO/YPYrhAPKMgEmh45I8khESc+MSpfSxYOm7cWcZA1sBU1cXJuQYcP8bRHQUUs5QheXKugbypYXcli6oTYLRgo+3HXQR5hpGCTQHZAEYKFi5V49Q81tY1jJVs1N0QiIRS89KDQRgLNNwISeqmHwsULB0Njww9pWpDxbHAfWeXUzDS3UGoOQFsg8KbE6NTOhYyBVKMAQWbUhum6yQW2GgxsAwymqYRsqbSMkRq3MsYgwZS2EZxqBIJSIlsmxr2D+dRyBjI2zrOLLTwj4/M4M13X99ZoFst4Md+DPjiF4EvfxlHbrllQwXgVhflbjByfKpOatcQ6Si7skplaykj5X6AdKXlpw8aXhjjwfNVjBYcDBctRWeQyBh6SrBPaiMvrKdrRLd6+yfnmvirr5zDeNFGKCSOTdew0gqUKIt+Pul8V1UAfBgLDOQMmBpx+9wgxuh4AQtdFhpXC0w+Pl3Hb3/iBCaX2uoeRvelycUWHrlYw2+9/AiO7ixfleNyNepq+YVtp5vIOcPPPP8A3rvFfdw2CCuXy2sQZXft3LkTr3nNa/Cbv/mb4HzrCoFn6ptf2wVJ69XVGNGm4EJK+IqoGsYSdSfc9P3Xq9X8vW7slICfxFA2GRHqHBgv2ihkDNyyewAvPjyKM4tNfPXsEtp+vGY/uv+egJqmF+L+yWXkbB3DeQsHR3JpNqDjRwjVEy5jUJ0RAxmTOEk5S0c7jOF0BV5KdAxvV5dlaGqMKRBEIY5P1+nzSKDaDhEKiayhpbmDewezeGyqhsY6NyEBwIti6rapL8VTbUgJ4q7N1T2U7DZMXUMYi1TR9n++PImlVgAhZephNld38dR8C4ZGruo6pxtlLAmcJOOz5XaQdpwSPlfynqbGcPOuEkpZWph3VbLgjOHMYhN+DCy3AmRMjtGihZobppwajVP4umZoqLrkCWgbHM+/ZhgSwEqbhADNIMJ40cb+4Tx0jeG87sDUOOpeCA4GL4ihaxzlrE6h0xEZ5SadQp0zsgWRQASJx6Zq+NyJOUwoxV5CIDd1cqAHgPGChZVW0Dlv1Fg6Y2rIWRpiIdHwSJSw0WLQ9GLsLGew3PKx3AqUolD02NqUswYMjSGIpLIo4ciZOnYPZlHJ0nnXt0swNQW89KXAo48Ctg1cuADccguOTJRw3WgB951dwmLTx3DBwp0HhjaJ9VlbCRiZXGrhrZ87hVPzTeyqZNNYq2SkmCx414wW1gDSC0ttPDZVQxB1lMwcwELTx1KbwMxwzsK1Y2t97DYi2l+NbMaNKtk+ebgxZCwdecXNpBxWBs44hBBwFa8z6cTqnFP0mCbVQ1GMuhNirGj3fH9XCiaFkPjLe8/i5FwTusagcw4noIeOSEg8MdPAL7z/EfzP/+cW3PgtAsRW+76tNlvejrhiO93Ewzu23hHcNgh7z3veg9/4jd/Aa17zGjz3uc8FADzwwAN473vfize/+c1YXFzEH/3RH8GyLPz6r//6djf/TD1TPSUl4AUR3I2kiJsU6/PnflvTuDL9lNRRklKiZFPQ9GDewiueNYEnZur4wDcuIVQ3+fVGqgmoI3WaRMOPUPcizNQ87K5k8PoXHsJjl+p44PwKJhdbMDSOnKXDDSKUMp3FwQliBKtmrwlQTNz5k11gQBpHJEFE9bobIG8ZKGcM1NwAWVPDoeE8BguW6tyEaHjRhrYjQnbGnZyTf1Py2SVIaGAbHD/y7J34yCPTJGYQlBXpq65Qww0xlLfo8yhD0qbqGkEJFs4stPAnn30KQIenlY7mIFMxjc5ZSpwHkOZOfu/hMbzq9t1o+zHm6h7+6r5JrLRDhFIgp8ZOVYfA3c6BLH7qu/fhlt0DKRfm/HIbj12q4UMPT8EP6UbdbR47mDOxfziPrKHBCWPMK7UVOezTw4GlOrUSgIjJ3iCOBd53/0XEsUDVCSk4fJD4dCvtAItN8sHSeMIFI2K2pjGUs+ShFkQxdI1htGjj8I7ShovBj9+xB//ny5N4aq6JWJ0nCQYjDqHE7fuHUMlZ+KdHpyClRM0J0PYjzNVdHFBGuz1dgoceAl72MmBmBhgZAT72MeC22wD0d2L/l1OLl+XsznnSueNYaYeYra/ANjgGsibGSxQAnyx4+4fyPYC02g7w2FQNfiRgajR+tSyywOEMyCnX+lLGQDnbm+hwNYj2V6O6QYNUI3FdnROcKaqEaoVrjOyEmLrHNFs+vJDG8E/NNTGQM2FqvKfLcyVgcnKphQcvVFVmI0fVUYHanIygg0jgUtXFWz59Er/6fdcht3qM/X+BM7a6kg7W/ZPLFG3mdZkt2zp0jeH2/UPrfueruW+ve8HB1Jz6ao2mtw3C3vve9+KP//iP8e/+3b9LX3vpS1+KG2+8Ee94xztwzz33YPfu3fid3/mdZ0DYM3XFJYEUgK3OkNxqFZUaDiA7g4SwnGw/4VRJAdgWp66b6ubU3AiLTR+vvmMPDo8X8UsffIy6F2zzjp9Ex3NNKoTDGVBzQ3zy+Bxe9z0H8Pxrh/CuL5/DXMPDweEcHrnUUO7qhHJqbpCClMRuweQMmkZea8nIKjGjjWWH70b8KVL47apk4Kl2yIoTYI8axdTdUBHQyWV+s5F0okBMxnIm4/CEwNmFNr5yZgl+KFDJGrjv7DLJwXUOxigUfbHlA1LCUoHjZIvCIIVUodYS55bJ/iYRJ8gulJt0MoNYYr7hY7ho94CPV966EwdHCml0UCyA2/ZVcG65jeVWACegG7CUFMj++HQD1451CLn7h/PYP5zHodFCz9imYx6roZwx4UUxTs230PZCxZciAQpntG8S1JHgnCFnGWoktpLaWlQdyqrdN5TH0Z1lHJuqQUoJU6fQclMTZNdg6WBgcIMQNSfE3sFc2mHaaLR0eLyIjzw8RWBYtVg1JpExdeytZNOx7sMXVtDyY+KNgb6jVhCh7kR41p6B1Itr9IufAX72JwHHgbzhBlx67wdQHZlAYbGFth/1xO70C0q/XGf3G3YUMVN3UXNCzCpe410Hh/BTz9ufbrO7OzFbd5UNC4MQBDhKGQOWTiptgCFvG7AN7apwo4CrT1DvHntVsgYYoHwVBZkWK9CT8B2Tq6PhhYhjAamU5BlTw3LLB2MMc3UXN+0qX/Y+JXVqvoWWF6Fo62j6MYS6T6WqTo0oDheWHfzKh4+hkjMRRPKK45aupDhnuHlXGZ94bAZuEKOYMZCxNPiRwEzNRcbUcNOuUt/vbL2Yp1fcMnFVAea2QdhXv/pV/MVf/MWa12+55RZ87WtfA0A2FhcvXrzsnXqmnql+pWuMFKJbLE1dFxI0cmn5UV/glHStBICWH5MasYsTttD08CeffQpLTR9nl4iUH1xGZ44x4t5AAucWW/i1jxxHJWei2g6x0g7xoFODqVOLP2NotL+CHOz9LluLIJawuKRop0iAK+BlatQ1CiIisCfjGFPjaPk0QuMMaWxOMWOkd/HES2ozta2QtFhnTE0BNgaNA22lBDw4XMDjM3XV7aJxlK/ECwmAlgH5xhm6hljZjehKYRkHUQokDc4gwCCFUFmXHAZnaAcR5hoe2mqUsPpJtJuMm7d1SEk+ZxpnKFg6TJ1Un9+4sILp2lqg0G9s0/IjfPThaRybquHcEpl4jpdpZPnYpRoWGn4qtpCSRh9F20QrIId5PxKoZEnh54UCCw0fdSfEzbvKODBcQNXx8W+uHcb7vzEFLyT1bNUJEMUyzaMbLlo4Od9MLRTWGy398+NziqytYSBrpt9poDpx+4az+Nrksuo4UddS7/KPq7nEHxwp2njZ8kmM/n//iYQUz38B3v4zv4MnHm3BD5/sGace3dmlPLuKzu4T5QxFF4UxZhoeKjkTh8eLPd/V6194CO/+yjmcnGsoLinUiMmApRMXKGvqcAI6Tq+8dSeOT9evuJuxURbjdsFGN5hL8kxn6i4kSOwRxAJeKNIxfsuPUhENeSwSGEq6xHQfoYe3r0+u4MWHx65CJ4puDJF6aNI560NNohD7hhditJjBjrJ1RaD8cis5nnU3xL1PLWKoYCGKBZpenBpG7yhnoGsMj12q46VHe41bN4t5ev0LD10VYAtcBgjbtWsX3vWud+Etb3lLz+vvete7sGvXLgDA8vLyljMkn6lnar1SmCI1Rd0M+CihYfrncpayEJ1AKLPO3p8Feq0NEvCR/pzsgLO5uoc//9JZVHIm2URs87MwJJ5jAi0fCIUPKSRGCjZumChhMG/h5FwDLS+CANIuEoWvd1SUGqdFJvH7SjaekNuFAmtccaC4aru7QQTb0FBzAgAMdTdA0dZRyho01lAjWEMjgLJRRUIiigV0LVGxkYlsGBOBPuG1SCkRxKQmVILD1MIjjiQiGQGSwdA7402m/iBB37ee8mmpCxCp1t93XzOEu2/c0fdJtJuMu9zy8cD5Kto+5SU2BWBEBD52FG2srHKkT2r12Obx6TokSITgK9NbxhgYGA6NUMg1fU7aRtIBCyKRdg45p+irIJIQQqDtA/efX8Gz9wwgiCRecmQH8raBd3xpEnWnIzwxNYZ9w3m0/bgnNLrfaEkIiY8fm+nyHqNxsRAyVQVeWG6j5oawDQ2DOZN8yWIy79U1ssKZbXjYWcngWT/+g2D3fRDLIxP4jX/zn7BUFemitNj0MVV1kTU0VNsBdI338G2utrP7cJ5ii1Zv78hECa++Yw+OT9ex1A5g61xZoXS2oXOGVizTzsjLb564og7WVhbp7ZDdV4O5gayBfUM5rLQDFY+jI5ZS2VOw9LtM/islZfKWMjo4pw53xiCrjjOLa4/Z5dQ1owXkbR1NN4SUElKZWScK3DC9cYqUL9b2yZfv4Eh/UP50WF10H8+aE+JS1UE5Y+DasQIMjaeK7IKlo+XHa87RrcQ8befhYrPaNgj7oz/6I/zIj/wIPv3pT+M5z3kOAODBBx/EyZMn8aEPfQgA8I1vfAM/+qM/esU790x9ZxdT4ALx5qa4rOu/yY95ypU/jiNIsNQ9HFg7btuo+2NwjlAK1J2QMgwVK36z0V1SXH2WKO1mkeGsrjFMLrVgGRomBjIYL1l4YqaBSs7CYM7EV84sQApA8A4YTAj8yUwp4YfRVmXK3YpB6kbiNGmoKvDlBGQ++sRMA3MND+WMoQQ0NJaK5Na8P0I11uXqaThraihnDAKRUoKBhBSJXxrAwLkEA0v5XmSoLhEFEpyJFLglJUCAjxSqAprOU5XsE9MNvOymiQ2dyOfqHk7ONdAOojRIW6pOHgC4odgSUOhecCtZE/MmpRmstAM4fh03TBQxVrQx3/QAKREJwPEJRAVhDAkaHy21AmWUq0HXiGzf9iM8crGG3ZUs5uouHr1Yg61zCEuDrfhlQgJtL8LeSnZNjFF3CSHx5dOLOLNAwgcniOGGMSl/FbFd4wyu6rDmTQ22oaOSY2h6YfpzRb8NV7fw/GtGcGTPIMRHPoq3fe4MlqYbPYuSoZHQwQ1j3H+OuFuxQBpuvmcwBz/cXHmW1GolW7UdpBFGiYoWDPjcE/O4/UAnnuhi1cFs3UXB1hFEMVpBDFtqPSkKYSwQCoEDw7kr5nxdzUV6PTCXRHm99rv24vNPLqDtR9hTySKWEovNAFUnwDUjJp5/7Qj+4cEpRELADwWCSELjInX3L2YMnF9qb/k72Kj2D+Xx7D0VfP7EPPxIpJ1zAJ0HDUWNcMMYp+abuLDspKP31dfa1ewkdh/P//n5U5itexjImshbOjjo/H5iuoEjEyVU8lb68/3UkVfL1mKrtW0Q9rKXvQwnT57EO97xDpw6dQoA8H3f9334x3/8R+zduxcA8LM/+7NXvGP/t0pn2NBQ9PLp4P86a6vAY6u1GlyxrteT0QKwNf7Vmv1T3aCCpSNjaqi5EaJg62kDnZsMOcy7QZw+da725tps32Sfc0xKiWo7wCMXq7h5VxmDeQv7hvKouQFu2lXCfWcWoXGWPmEmY9JkO6EgD6kEWCRJht3nbRAL1N1A7TfZTXBGoODCkoMLoMUU6DUt7a5+ADgWgKUTIZeB4fZ9FWiqtZ+sO5FQ+8yY8lLjkH1AHoMi/yueS7dIQEJxAdVn0RjHeNGCH4l1F7q9gzkcGM7hU8fn4EcxNMbAIbvOJXqf+aaH8ZK9oUR99YLb9CLKM2XEN6q7Ic4vObhuvEDkaC+EpqxGYtW1szSGICZwlsj6kwWLMaDlhWi4Ib56ZgmzdY884nIWjNQEV9L7LDu4ZiSP0/NNfPn0IspqvJlE93z44Sk8crGKSysOIiFQd6VShGqp4CSIYmU1wtIRsKVrsPIcYSwxujSDP/jrX8dDu25A9t+/EwBwvhXhzGJ7zaJkaDwdT8dCImtayNpaGm5edyPsUFmgW6luUnoYCzw+XYcXxWloesML0XBC/PmXzuJjx2bIDy6KYekaDI1jtuHBC2jU1PBCZBURPxYC1XaASt7Ca75rb3qsLnfxv1qL9FbA3Gzdx5vvvh4feWSaondqLnwlbPEiiVMLLZQyBnaWM5AMPV0eMIaWF21J/beV4pzhhdeP4N5TC3DDzn0tfShkiY+egG3QQ1ksKaWg7ddxeEcxBeUbdRKnVhz88K270hzZrXbHEvXmY1N0D5pv+KlatNiV+JHk2QL9FbFXy9Ziq3VZ38y+ffvWjCO/HYvW196n7+5Kvver5dD+7VzJdXa1DwVnDIYagdDfO6PBRA23HTDcM47M6HBCgiYLzYC6AVvcFk9GfJI4ZUksUNxl1tUNiLayT6tfiwUtYF4U4IFzK7htXwWlrInJxQAffGgKTT/q2DQAqSO/oST7ZDJL9gLzDV9lI3Z3yujGVG2H0DRA13RYhobd5Qwml9pp1yaKxabHZbV6UoK6C5ahY6KcARhwfsnBQtOD48edjpxUfmMMYEyiHwZW92+l6CTuXzJWhQRk8rQtgXxGx+EdJRgaX3eh45zhjv1D+Phjs8rzTSIMZc+iYegallsBFls+LIMjZ2l9c/gml1o4PlVHxiBOYcHSUMzoWGkHKNoGsqaOuhvC0Dh2VzJ49JKvFKFITV9NXaMHPSnS79zUGXmgqTHwXMPDp5+Yx0Q5Q75d6neTUaKpcdRdyjw8s9TCWz9/CqamqdGViYUGxVsNZC3kbQ91h0ZGcWpjwNIDzZkaz/kRKjpHAt1vunQC/+Pdv4GBdg0530GbewDWX5TyyjojEjLN6iTuHlNGqT6CnIndA9n0XNxo9NRNSq+7AbwoTk17vZCiYbg6LkmgfVvlkR7dWYZt5HFsqo4gFEqMEyOMyKKjkrfwpn97DRhjVzxGvFqL9FbBXM7S8YpbJnBqvolKzsRYycZw3oIbClxYamO57cOPKIuU2Z3tXG3FpxASj16qYUc5g6IdYq7hI1bnr6VMlWNJD2dJh50DKNoGGiqkfqJsI2dp+Nv7L/YFn4ORiUcu1fDEbAM7y9ltAeTPnZjDfWeWIaVEXuWwhjGJTVacAANZE3U3RNOPULCNdY/PdmKerkZd1lZqtRoeeOABLCwsQIjeJ9sk0PvboTjrWlT7VHLTflr3AcBowcRsc+tZU1veNqNOUHiZKLJ7YdY4W7dTciUlpETe0BGLSHVDCNwkZ5WmFo3tOuQzAMvtEMWMgZ1lG49cqqevbw2EdfhWUnmVSdVZK2V0AkiiY7Da7/03fR+1ba4WxAcvVLGnksF804Op+FbpOE8dEwki5mcMDpsxhJFEoAkM503UvVAZb9K+J/49EkDO0Mn4cjCHc8ttxFJiKG9jvuEiiDsO+P0OcwL+Vn8+zhgMtYjO1DwUbB0ZQ4MbxmvahNStU0AbSrm5qgOagHwG4kGFSgkGsFRkcO1oHgM5E7GQmG8I1N2wL3gaK9kYK9lYbLhoer3fEQcQCYGGK/DUXBPXjxfxvq9dwNmldk9n5OZdZXzuxDxOzTdhahy6xlHM6BjKWWj7MRpeiIyhIYoFpqoOzi850DmHbnFkDA2cEbm+7ZPs1DYo+zQWEm5Ae6RzhqG8iVYQo+mFmK5JFcIerRol0vdwfIbO44GsheGCBdeP8PXJZQSRwG37KhjImTi/pGFFBLB0uvZpdMxTUFvJmiCDWbKmyFkGXnzsi/jlD7wFVhTiybGD+Ps3vw3/7fB+AOsvSgnBmavvMgmIj0QnbcDUOUVlBfGm3afEi+nUfBNz8z4Klq4yE2MsKwHAYM4kT7ZWANvgGClaaHgRLqw4eNbuMjKGhkcu1QAAw3kLusZwYLiA//hde3BkRwm/9ckTVzxG3O4ivR743CqYq7shPvbYDPxwbfTOodEC3JDI5ldL8bleJaDxwHABOUvDVNXFxZU2nICUkl4kwJlMVbVJJXSF5ZaPZ+0eAIC+4HOlHeDxmYa67zEM5k3onG8JIAsh8Yljs/AjuhcmHqWmTrzHxaaPukfegF4Qg4Gte3y2G/N0pbVtEPbxj38cr3rVq9BqtVAsFnt2kDH2bQXCNsMmCebQWYccfrVr71AOsdgmwthimWoxDi/jd7vHWgWLnuSF8qC6miUkqfU6vlMd8MIZ0pEPZ0Q8TTowsdgY5OgaS/kK3ePmjX6nGzgR4ZSARqA4RDqncN3rx4s4t9RGww3RVuNJnXfGl2G8OQBjSMAAwBT4WWkHWG4HyvWepfutKTsIJjsKwzAWGCrZWGlTR6CQMyEZ0PIj4p4pRaHGAQ6GG8aL2DuU68nlCwUR5wFA02jk6kdxypvrru5uVec1iaoTIBQSL75uFI9M1RDGAnmlRAu7OplAZ4TLWdd/k45d13ZDBQo1RiMzMnWlEeqg4nMkI6u/+foFLDb9NQt7wdZhcIamH6edwYRjKATSz73Q9NDyQhyf1nHdWAF7h3Jwgxj3Ty7jE4/NoJghpVnGoJEe8cBi7KlksdT2KW8xFpipeTB1jn1DWUwuOmQvodRq8w1KPJAadQycgPbJ1DmGcrRgWIKiaEIFnJsedScNNUqMVQRSGAvsGshitGjRiJElgJgWyYGcibGijemaBwmK40qEJHFM50QMOolGChaabogf++x78bP3vBcAcO91d+Bd//m38UsvvzVdmNZblFbaAdrK9gOMrFeaPo0Bh/IWdleyqLshHr1Uw2cen9tS9+nIRAk//KydODPfQiwlWl4ECQkOyrq0DdXhEgJFTQdjPO1GNv0IlbyF2/ZWMNvw8BN37aPvNOlqLq4fc7SdMeJ2FumNeE9bBXMNN9xwvw8MFzBVdbCnksVCy7/q0UpJdYNGxhh2VbLYOUBxUEsqpUAIAcvQUHfDdIwcKe4j5wx3HhxE24/XgM/uXM9SxkBLWWDks1sDyOeX22kOa+KNlxTxHoGaS6kUC00fpaxY9/hs15j1SmvbIOxNb3oTfuInfgK/+7u/i2w2e1V24ptRG5lTrq5IPj38sJGCCVNjmKy6V3W7CRhIJMyXWxJ0c3cC0TMWu9q1XscxcXo3dE6+P4ypE59ByjgdX3WXrTMUMyZsxZVqehFm61s/vj1jV0leVTGS7g0ptHYOZJE1dXx9crkDViW522dNjrnG5l3N7k7QaoCYjPCS6teBjAR1IkydwQvIgysWdDPrhIKTmkpIYKrqopQ1IYWAH8VpFzgFmyDSdsbUUz+x7g5q9/nPQBYAsZCIYjIqPbvUwnIrSN3ydU0DWIwo7oyXEzDUfd3145tZBkcla6DhUYRQU4awDA2jBRsFiywnzi42yeMKEqWsBStDpPAkM+/nvucAWRtEAhlDSz9PJEQK+Bgo4okx4g1NLraRNXUMZA2EsYAbxBjIGhjIGuTtZRvpQ8FyO8AtO0t4YraJ4YKFhhtivJSBBHBh2U293ixDx2AeWGp5ab6lBJBV9hGWQR5WSSzPQsNLRQ+sS3URqu8pCW9OruskhsdQIc8NLyQjXuWNF8QCkQA0SNimjlKGQrGbfoS8reM3//l/43n3fBAA8LEX/hge/blfxS89d0/PwtRvUfLCGKfnGwgjUskO5gxEsYQTxgAk9gxmiLcUxvjKmaVtdZ9u2lXGodE8DI1il9p+hKfmmsiayfdI36ChLFB0zuAqbz8AyFg6uLK36AZTV2uMuNVF+sRsY8PR58+/4OCWwFwxY2y634bG8eo79qCUMZ42g9R+oDEJsAaAs4staFzDtaMFzDc9NNwIrkiMUU2UswZuVrYOq7fTyfXUacTJWfr9bgUgJ4rscvb/Z++94yy5yjP/76l0870dp9PkoDCSRhqJIIExNhkLY0DeD2ubNcbZXgwOOGO8rOGHWS+wDmtgnbCxMTbRNhjbGIwAgSSQRpoZRmHyTPd07r75Vj6/P05V9b0db8/0CMnwfj4K03O76tSpunXe87zP+zwm5aaXlLGX5kijZgtu29XHG56/n1LGXHd+rrZnaHtsOgmbmJjgDW94w1M6AYMnB89roe4y3/AS7tNWxVaUUeNfL6QMZZi8CUL7VoVEIVo78hkultXCpsmlrru0qUUin0scrp6MhRGJM7q+kkeoO5ubDENTfK2MpaELQctTGlvFtMl1I0XKTY+T0zVsL0w6towIrdpA3SGJdt7W5Ual5an7g8RxlUq4RCVtYbQbtFIqyVhsuhw5v4ChazScILmfcakx6XKSyiqllFE8jvhz8VANLbL+0QQeYaRjBRfmmx1iqD5L8KNgySi9/VgxGtiekGpA3jIwdJ1SRqiuLz+Mdt4Z6k7AZKXJYtNDAAtNj0sVOykLZ02dcsvjL79yXhHyhUg0yVKGIPSWynt6lIimI2HUSsvj7FwDfVuOmq2EHat2wP5teZquanCwDNXYMFOzOT4JYz1ZXnrjMH97/0WyKUP5jLZxxuJSTIyMNR0fQxcM5EykUFICaUNn74BaWMoNN1lEQ7lUUtaEaqDoyVg4fkgtQjxPTteou34i63F8osL1w0X68xZzNVuVzAUM5C2yloEQ6rkZKaYxNY2LdzyP8Iv/yMRvv4Mbf/wneNkaC1PHojRd5/GZGo4fUkib+KGk7ijCvyrd+9x/dpHRnjTXjRQ5N9cgZy2JW8bJxlqL6+7+HAeGCio52ZbHjErBfigxNIUQ6VHiDFqioxYv2mtxdraS67PRIn1wpLhh6fMTRy7xysNjGyZzWUvv2jx6o269K5GEWA8BzKfU90IAYz1phZA5fpSkKzS4vYS3/DiquqHub9X2O8zVYeMEOb63o6UMthuuQOJqtpJk+a9P38HhqCS6UVxtz9A4Np2EvfjFL+brX/86e/fu3dKBPJljI3mEyz7uVeJZXWnE+YFALVK9WfWiJdJ9upojjoTiE7Si3PS4brhApeWz2HLV+aMBqMVJcVIG8haLLY+Flpccw9A1dARB2F0Xi66p39vdl6PpBfTlLGw/ZKZq059Lcc1wAYFa6OqOKqGakdSAqWsR/2aln+RqcSWJd3x/NCIZDk3g+xJ7ec1cqH/dOFrk1Eyd+YaHoStivxvKDnFWxw8UDy1UwraaUOVszdJo+SFCgmVqGG1+sJrQENGdilGnGPESQiWEy6onmFqbiwArN0N9OYvenEnNVlIaOcvA0tVxZ6oOuuZSdTzKLQ8/ynj16IaHUj0vmlCK+KWMRTFj4vpBlJiqfwxdRPdL1bRVF6JIylqVlqeSs5ROw1FaTDv7sjwyWWU+8sKUSHockzsPjXDTWImPH5lIFsk9A3kaTiXp0JNSaXD1ZJRae83xqTkhlkEiJRD7GI71Zii3PHRNYCCwdI1sSnmOji82ldCsFzJXdxhfaGFH982NukBrts/xS1V29WUpN1wcX+nDZS0j4WrlhHIHMHWNf7EO8x1fO8aumw5s+NzFi9KXTs7ynn9/nN5sCtv1OXKxnDw3elRrrtoe4aIkbeicmq1jGerZieUKYuRvtcV1OdI0XFRdctNVG8cPkmdstuaSNn10XetASdfi7Gw112e9Rbrb0mc+ZWyIuISh3JJxX6kkxEYI4N6BHAiSTtqsZdBiKaF8xeHRNkHafsYXmslxdE1E9AaPnLXSXH2jBLn93t4wWuTsfCNB4tS7TOP2vf288ODQhte5/JqvpmcoXEYSduedd/LLv/zLnDhxgptuugnT7PTgevnLX75lg3uyxNXKk+IygvtkgOWiiMu0GoBQ3oUCtVD5QUjKEIqkvsXnjROL5VPhh5JLZZvDO3s4OlFhumInZVIzWtgcXyEdPRll1BsIQcbQEMjoeCJCt9ZPIGPV+Pmmy3P2D/CGFxygZvt88N7znJ9r0JsxePBiWbU8Z1TZzgslGVOnL2tSiwRBY/QoHqMXcXLEKtd3uWEZGsW0QbnhEoaCXFqRvmNB25jPpmsqsclaBhXbU80FhoYWSUWYGol8gh9xE6UMmfEcAFW+QmB7AbqmdYxB05ZKt7bX9kwsg2LblyChaaQ1JTcR89viiL3crhkqqN1x1G6fMTQena7zvOu38bWzCzQd5VmHUDt7z1NHWepoVa35QSgpZkyEgB5TWZWUWx5mJFsQSnX98fh0oZLRmu0rRMdTxPOmG3BhoakQrLxqCnAD5Uf56aOT7B3oXNz7chY3jpU4O1en2vKoO+p5ec6BQV5xyyh/9dXznJissncwpzwwo8VGRijvQD7FtcN5LF1P5AYkUHM85moOpq4xVbWT7sGUETBbU+T/nKVj+wGTVZtsSqdia6QM5R+oa4LvnjzBmz72bj74W3/MzNAOpqsh5Z5BdnX53Gma8rO0dJ2BvMXD403Spk4olUm4H5VNlc1WyPmFBqYuOjh1Daei9Jpy1pok9iCU3HXrdr56Zo7Ts+rPrYhsWcqamLrGYsOl4QYYWkjvkBmhpGtzdq4G12f5Ih2GkjOzdR48v0g5MtFeLdqTz5t39KyLuGzFuI+Ol3nnZx5lvu5QzJjqPeUE3H9mnvGFJm98wTVdJWIbIYDAqn93845S4rm4JEir/EkXmy62G2AZGkEguWG02GGuvlqiuRqiF8/RfMPl2m0FfCmp2x6LLY/RUoaf+M693xT/yo1CyLX0GdYIbdmLuONgQhAET3zZar2oVquUSiV2/Pzfo6WefCXUq4WyXWlYkSeY68cEYS3Sc5KJh+ETFbqA0Z4M/TmLR6aqWLrG9t4MewbyFNMqMVpouGRMjcmKnSAbSsZBkksZFFI6Cw1VXttoujOmxvbeLN9/2xjPv36Ilhvwh58/xaVKi6mKnUhELEQq6X1Zi5RpAAppKDeVl6ChKbuUeNEOQ9mRhOksGStvZi4sQ6M/nyKUksmyrUjeujJ9jsuhcdearmncuquH0zONiF8TcM1QHscPeXy6FnlpyhVl1JQu6M+nosXCwfF8hKZh6VqCnrlBiOcvJZjL5zXmy7UfWtcgHZX0nLbf16OFWyma97J7YGlXX7d9yk2XwWKKC/NNsimdr56ajyyC2ho5iJC96P/zacUNijs2Q6kQmvh3NKHKl4YuyKUMKi2F5uVTKpHx/JDhUpqMabDQjMuLqpzXn0txeEeJU7MNDm3v4RWHR/mjdg9FS6fp+Jybb5BLGfzos/fwwoNDaJpYqZHUtqD2Zk0ylsGlcqujjAWwUHe47+wCuqZK33Fi03QVH0aV5yMfTiRP39XLeLlFLhJlffH9/8wP/vn/hx74PPjcl/EXP/k/Kbdc3vryGzbUs2pf8EIpees/ncDQNB6ZrGIZGqa+pMwfhKphQ3EMdXKWTsNVCaOM7kF/zuKWHT2cjubvzXdev7p+12CeZ+zt45+PTnJisoouoBqhpGEkweEFIfm0yTXblO/nRpyd1RChA9s2/r2Nov24labHhcUmvRmTa4aLCfLX8Ux3MfdbMe5j42V+9WNHOT/fxA9lwjnUNdU9mDY0viPadDacoKuy23plzeV/t8JftP15z1l8/61jDJcyTFVafPTBCRZX+VxfzkoaONZD9ICrcm83G3HeUalUKBaL635200nYUy2+nYRtPlZyhBRUrEjMRITsq1uWXB5xx2CIWjizlkExYyRcmuMTFSotj5YXsK1gIVGLU8rUuSXytXvg3DxzjbV7RdvLfLGeUm/W4vZ9/bzg+iE+9sA4956Zj4CeKAGQIDSlqm9Giu6uHxJIpQ6fMrWEBO9Gdjm5yPS5W/5YxzxokDENerImrhcyU3eSscNSGTm+f7oQ3LS9xMWFFmlTlUxv29XDyZk6Cw2XrKXj+yHzTRdL18mYqvzYn7O4fU8/Esl/PDarDJAjOY24HOSHMhJhVUhj01v5RMTc8jjpsSKB0BClTxbLfqQMLVkc+nIWh3f20puzkFJyaqbOrn6lKG8ZBnXH44Hzi8n3pn2p0CNXBF0T3BihC6AUvL22Z1YX0JO1Ir6jn6ByGUOjN2dRbnm0XFXqs0yFRsUJT9rQuXGsRG/O6lhMG47PX3z5LCemavhBSCljcWh7ibtuW1nuWW9BDaXknZ95lIWGy3Apw0DewvZCJiutSHFf46GL5aTEV8oY7B7IJ2is7QacX2hyzbYcR8Yr1Joub7r7r3jtFz8MwMPPfgkf+dm38mjFTxKgtRbcVRe8wTzzDYeT03Xm6g6FiPsG4HgBs3UnMoVXJen+nEUYKkeHuDzb8gKGi2lGezK84fmqFLpWYpoyNZpOwPbeLLmUTs32E3ukfEpnpuay2HT4hRdcw3MODHYt7LmVXJ8VibWpcf+5BeZqDqWsyY1jPUkiFj/TG839Voz7+ESFd3zmER66oDqX42abWPJFRJQFTSieVj5lbqnhdhhKfufTJxJ+3/JS6vJ52CjRXG8DEydqTwSPa6PYTBK2NWpj347LjidbAgad1aT4i6oLDcvQGCqm2VZI8dDFRTQhaLnBVZPvaI9AKuQoa6qOKVOP5QJUaeOG0SJfP7+IEwS0XNUmPVxMq8UpZ7HQcNfVS2v/ioYorbJAwnzd5V+OT3Hk/CK5lJ6YSNsRsqU6ONWuvBWVIQtp1ck3VXWUhk6kkF7ImOztzyGE4oxUW16i/dVNCBSK5AchCw23Q2RYY6k0GN8/gRI6TUeaVQ3HZ7CgJB7iTqSYyyalUDpflkE6Mguuu0rU8LrhIg9fXEwU+TNRG7jiXwlKWYsdPRmOjpc7UC/Fy1N8NYEqj/bnLaq2TyuS9oB4/qKETBc4fsCpmRo7erNMRabNu/oyfPnkHAhouJ1SKe3zF0Qq/RqqjBNIxYGL5SnUJkJ91tQ1CillCB5IiRmRu71AMlrK0JczeXSqRsPxMYTq+FzO4YrLSg9dLPOFx2b4+rlFqlE5s2r7jPauXo5ai090YrLKJ45M0HQDFpouk1WblK4x2pPh8M5eXnXrGGlT41c/doysqVPMmB1k90LKYKpiM121AcnBgsEP/s3/5HnHvwjAX3z3a/jCD/wsjYrfUcZabXFfs7tvooKRSJqEmF5A2lQehgsNxZnTNcW7C0KlsWfqGtlIJ80PVNfmnoE8P/XcvRuS2B+OkO747+JuvDgGCykajk9P1up6sd1Krs9ayvfXDRc55pepND0en65x284e5hseU20cqW7Hu/z+3BR5h673uVxK52MPjLNQd/GDaGMo1MZMIpOmHD/ih5abLjeMlrC9cMsMtzfrLrAez65ru6g7i1edx7WV0VUS9gd/8Af85E/+JOl0mj/4gz9Y97NveMMbtmRg3wqxWgnnyRbxl1QXihzZkzH4jv0DPHyxTNNVUgdpHTx/86U12BwSGLu4eIFSzC5mTJqual/vz1vcurOHICrR7Yn4NsquRXJ2tkbTDTB1kOFKq6rVhhDvFr1AMl62MTRB1tJo+gEaCr0h5i7pGpqQGLrOUEGV8V50sMR0zcWOFqmhgsWZuSY7+zJMVloEUqmZtyLl9BXnb5uf+K/VAge2F3QkPKslczFiF+tEhVIRWP1ARp1Iam6arq/KhObqLf/DpTTz9Sx9eYvTs/WEbyUEDBfTHBwtEYaKvxU3cCSdkKFE19UL1Ij4aXN1N+n4i58B5Xmn0ZuxaHlKfHOm5pCxDEIkf/u1caUXF3GN1goZ/UvoMFVpIgTctL3IiUs1pYWm64ShQv6qtodjxNY9GjeOlujPWR22L2lD54ELi+weyCsblejnccR6ZR+45yxn55uA0tUzdKWw/6XH55itOfzm91wfIaCdC8tyk/A46dnem+XAtjyzdYepiuJ3vfLwaELUPrS9xLHxCmO9S4vbYsPl9GyNc/NNNRGzc7zpQ2/huguP4OkGb3/lL/LRg8+jON/kxQeHE4RuNfRh32COhYa37oK3qy+LG4SML7Zw/YCmFyoOYsai3PQSvmRPRiF0GVPnprE81ZZHywt54wv2s39bYUMS+3ApzWTVZq7uMlxamdRupYL55SBkayUavTmLm7b38OhUldm6w388NksgJSlDJ23qfOLIBJoQGyY53RLql38uiLhU/VkrkqyJRKgFCJSVVxAubUBbXkjTVV3BW2VUfTmyIGslyE+0p+MTFV09te95z3v4oR/6IdLpNO95z3vW/JwQ4ttJ2CZiNQ7NE5mUtZewlocu4g43ZdkToHa3th/y5/ecoR6hPoFUyIJlaMhg9WRirdAifpPdpRx+y5O0PD8pFzbcgLSpsdhyObyzxAsPDnNhvsmnj09yfq7BnoE82ZTBbM3hUsSdyppK7X75PKyewHT+zI/ETX1fouugSZFATravuimvHSpQs1VH2pm5JiOlDEPFNC034Mxck76cxXMODPLYVF39nuujaxpN1+8oTwoU8d3UNIUmBQpR8IKI+Bw1SsTyDmvxshBK5uCOvf1MV23mGy6FtJJSsL0AN1CooaFp+CGYOitb/h2fjKXz6qfvIGtpnJtrMlFu8oXHZhkuZJSQqlBJqe8uib2qngg1Kk0T6JrGQtPF1ASeWBqzrmmkTS1qABEEUiEs1wwV2NOf42vnFyg3XdXNGKhnRqxTDpconbVyy2e4mCEdCZ7mrBgx0timqzkf68lwYaGJLgT9OavD3BdgoJAiY+qJPU57AhYThstNl6mqjR/ZM5UDiWUICimTlufz+HSNX/3YUfpyFq4vV11E19rlD0fPTyxpcMNoaU3drmPjZaq2ku7ozVlINFwJlUyBP/n5/83sDU/jcMuj6QX80O072b+tkBC249LncH8a2wv5+rlFJis2N4wW11zwFlsub3j+Af763vNMVWyChhtJcUQ3NpQUUjqaFguqKlPzlqeEMmMqwUYL9WA+RcrQmKq0EpHa5fdgKxTML7d7cL3x9+YsDmzLs3B2gWLaYPdALrEc6gZtWs9jsf13V/vcZLlFteXjRrp/iVZfMned9AUplzTYtiqp2UpZkCfa0/GJiq6SsLNnz676/9+OrY1vBioW61W1n1sQlbA0obgcMsTxVLno5HQ96aKLI0RJJcSef+3HWe+aNCGWymabGLMVLdiuH2J7AQVdcH6hye986gR1x0+6IGdqDtsKaUxDYBm6SkiCuKi25CO5mXP7odo6KjQp6OA75VMGuZRByw2467btHJuorNpBlLV0+vIWQRgyV3M6uEoCyKX0SCFeOQZYEV+q4fjs6suRsVQ32kMXKyoRk3E3ZPs41X8zps4bn3+AHf1Zjo1X+PLJOaZrDgilrj9cSrO7P8e5+UakbaXU7mOdnoW6w5GLZQxd8MefP0XZ9pSqexBSdwPOzTXJmDq6phbX5QKvKpnUEAj6cpbq0tM1jIjTk7UM0lGJ2QtC5upu5D1oMlxK0/KDSI9N1RIFcl0kLL6ngVScs/3bcpiGnthuxWblsZeiIUQiRBzbPbWH7YWM9mTIpvRVO9P8IGQ2uoexRIOU4HghXuCSNXVqtscFv8lQMcNoT2rVRfRyyjbLdbtaXsBAXtn45FIGUpj8zx99G36lSmtwL7em1fN5bq5Bw1FJ26997Cjjiy1ShqYEaSMJiZFSmnPzTSYrduQN2jmmeMEbLWX49Zdez/vvPs3dj88qTT1NSUa03EBZ2WhhhHaGnJ1tsKMv29HNt+FC7anzZK3V78FWKJh3m+ysFuuNP+Y9SeDgaJFiRpWx87q2IdrUbfntuqHCqp8rZkzyKT1yaBAIoRqVtMgGLHnnCPV9iKVb4tiKpGYrZUGeaE/HJyqeWqP9dmxprIb2xD8PQoVeCKFeBhKFkMT8gdVCF6oM5AXq/zOmniBmq0UpY6Jrgrm6sylxWS/yqFOlUlhs+jx0oYyuCwopg4yp0DXbV0jRqw6P8cmHJjgxWSOUymDWDdR1xdfbbchwqXwak85B/ezsXIOZmkMhbZCzdH7rzoNrchs04ORsY4UTgUQp4Q/mrUTNXUolezGQj7TKhFBdmrpGIFWpOB5DvN01NHXPTF3jnx6+xGzDxfGUcfS2Yppn7O7lC4/P0nQUyXlXX5ZKy2em6pBPGezsyzJRbnF0vEIgJaPZNHMNVVptOorIHnOu4nu82nMhpSpJGobG7v4s5abHtmKa07N1arbXwWeSqJ24run0ZC2VBDbcSJBXkjIUx0gXrNgIxOePd/amLjA1VR7tTxsrBFSbrhKsPb/YpBlZG52crrFnsNBBoJ6stDi8s5dXHh7l41GLfZxU3zRW4vRsPeqEFer5Ry1qpqGEhKtR6dbQVAehBtRspWV3dq7BRx8Y5+BI8bJ2+avpdr347o9Rv3CJv3rJ6zB1wWKhHy/bixvZ+sTNIlOVFn9173kuLrYopFQi7IcykZDYM5BTKHPTTQyP26N9wds7mOeNLzjApYrdwVMrNz3OzNUVGhN1bB4cLfG6Z+/uSGi6WagP7+zlFYdHE5mDrVQw75prtEZZbr3xV23lrjCQSyk5krbYCG3qNjG/5/Tcqp8rpI1IJy9EFxI0EXUUq+pG+8ZP09QmqT2B2YqkZitlQZ5oT8cnKrqa3V/8xV/s+oDvfve7L3sw3yrRjvwsR4GeDDwxQazjpBb0sB2pEZEHoFw5TteXlDIG1ZZPIFW5cL1ouX6EkmwuAql2x+0hUejUYtPD0LWkZHmp0uLMbINdfTmOT1QBMAwdIWRibryZaM+Z2vkUoOakbvuYuuCjD04w1ptddXEIQ8mp2fq65vE1x2d7T0Z5SWqClKmzeyCfcNyqLZf+nMVU1VZ6WZIE5VF6U0pmxPVDHpmqsX9bgXRRY67ucuT8Il89PUchpSx4pmoOKUNprvXnLFKR40Ds5ZY2NC4sNBVHTCxpnQlkh/3Xas+xIgMLrMhWJ2MZZC2Da4eLHJ9YEjTVNYHtBgRSkrG0RKzRNFRHbqzpFaLsobzQW7XRwtSgkDaTZHeqYjNUTHcIqBqaGosmlGl5T9YklMqEvGIHHNpeIm3oHYuEav4odZCeLy40+eqZeaX158uOco8qs8b6agplmK053H9uITE8FgIulVuM9aR5/vVD66IpszUHNwgoN12VxLdpSPVkLVICfvSjv89z/vlvALh37y2cue5WYv/KVihxvYCFpsdNYyXuPbPAQt0lpSv0zvVDNE1QTBtUbZ+Zmk1PxmSq6qhyVlsCsdqCt3cgv4Kn1puzuC3bS9X2ODPb4OBokXe+6iYMY7neXHcL9Y1jJW5suwdb1fl2pVyj9cZ/draBpgkObMuvQBNhfbSp28Q89k5d/jkhBHsG8tQdZQafjp6vGDpXm6gQGQqKKYWAJhuiLUxqtsoCaKsSuq3ujF3rHN1GV0nYkSNHOv784IMP4vs+1157LQCPP/44uq5z2223bWKY3zphrSPI+s1OuJaHoSvjZD9qZ17BvJGg6QIZZWEx8gCdbc9ilRKnGdnqhKHqzGl6IboIyVg6tCEqlxtJeVFKDEPH9QPqts99Zxd4xS1j/PujM9iueiHpmhIyDeUmrIZYnTsGS2r7UiqS92LDXXP3/OXTs8zUnI7jLj+e7akOMuUIINg3kFfGtpEXZn8+xUtuHOZ9d5+JpB1iOyeZjMHSBU4g2VZM4fgBj05VmK251B2PMIR6yucZe/oIpUg6tn75JddSTJt89hvTvPfuGilDI20Z2L4bdS6qEbY3VBia6BDCTRsCPyQZSyztMFW1edbefiYrSgNrSdDUxw8CGm5AytDY2ZejN2tCtGtXSaGMuhsVt2ytV2ac/GdMjZFShr68lbywD44WOTlVZaJiE0pFoB8spFXCB5yerTFVdTh6scyBofyKRSImDB+fqPA3913gyIVFxhdb+EEQzb0gJbS2hVw950Y0RycuVQik4rTpuoYfhrS8gP/7H6cYKKTWNMk+O1tnqmqTsQz+9Etn+cLjsx08paLf4tfe/2scPnoPAB//L6/nkX0347Qp9kskl6o2o6UMt+/t56/vO08uZXB+oUk14khqKE+/jKlTbfls782w2PS4VLVJmca6C956C+R01WFHX5bXPXvPigQsjm4X6quhYL4VXKO1xn9wtETa1EmZqx97PbSp2/LbYCG15uf6chb7BwucopYk1XVHde8amqBoWegRCmZF3axXw6h6qyyArjShu1LXgG7i+ESFv/nyo11/vqsk7D/+4z+S/3/3u99NoVDgL//yL+nt7QVgcXGR173udTznOc/Z5HD/c8byxbod8TA1EJrA81cnFn+zkjJBJF5paLjLREXbIylVCgVtxz8TqAQktvtpukEHEqZKTWpBHYq4PuWmi6EJ0qaOF4TrNgpsFLG8gZKMUD9LGRotL2S65jDWl2G0J834QouWF+AHS8mEJhIe8YbnXu3v1XtEJN2bri8ppI01d8/fuFTFj8zVjWjMcQNE+7OTMTX+2+27mCi3OD3b4NxcY4U/3bGJCveeWUAI8HyFrqQMDYlkpuZgahrHJ6o0HD8Rt4znp+4EPHh+kRvGetjem2GyYvMPRy7xm99zPccuVfBDybaChROjPMvmW9KZeMcoYfuGI06KQ6lkMXb0ZXEDmSzUN2/v4excg9OzdawIlXlsusZM1UYI5c7g+Ao5skNJxtSw9NV3mnE11vVVr+gz9/Rx123bkzKi44X051M0vZDRnjTbe7Md3Y5Py/YxVbVZbHr8xHP2rqo51c4d6s2myKVsglBT3YCBREpVKlfPgXqmM5YqywdS/X98RD1qZnD9kD/94lne/oobeXy6xsMXywyX0hia4OhElYbtkU8ZHBorkTJ1jo1XGF9s8f23jrGjMc++H/0B9pw4jmNafPTn3s7xZ7+YGxvuCsX+p+9S8xFEZceZaiua2yVuqBuENF2fjGlQtz1u2VEiYxlMVlpoQqy74F3pAvlEefUtj63iGq02/p29Wd7+mUcuq4TWbfnt2fsG+MLjs2t+run6vPjgMD90+05qtk+l5VJ3VGf7NUMFmm5wVcq8y2OrEujLfU6uhPfXbcTnmJ6rdv07my72vutd7+Lf/u3fkgQMoLe3l7e97W286EUv4pd+6Zc2e8j/dLF8ebAMDdcLCYh8866iONhG5cy4TNc+hBilylgGvRmTi4vNdY8XStCE6qCLEZA4ERvIp9jVn+P4RHnFuePPIZTel2PqbCukGevJ0HR8jk5UEu0hJXa6tNgvj1heISmNiaX/ylAmGlqaFhG+azatyIJpqJBShtKRgGrN9onFWS1D0FpFdDQe/9L5l/SmLENDF0qpK0Z/dCFoeMGqu+eW6ydk/mROV0Hjyi2fr51b5PXP209+FXkDgJ/8zn3RztWmN2sRRETgmq00vPpyJuWmhxPBfcuvbLHlc//ZeaVmDvzriSn2DGSZrNikTdUxqQnlntCe+MT/p9C/Tp7g8sc7LhvqmmB8scXrn7c/eekvzKrOQkvXuHasQMrUefD8IhNlG02onXw+ZeD6qn3e8UNler/KLUqQ0Gg+n7m3n5u293SUESfKTT5wz3l2D+SUz2HHAQSDhTQNJ1hVc2o5dwhgomyy0HAZKqSYbThKrDfypNSEIJvWKaZNdY3GEoKnXAokKVMna2qcX2zyx3efoukora1LlZYqEQrBWE+GvYP5RJus37c4crFMcP/9vOuDbyFVnada6ud//fTv8uiug4zYPqWMyTXbCpybb7Crv1Ox/9SMSnLLTR9dCNBk8vxJCWEAXuDjh00kUEyrZ2NbMcX3HhpNjrNaXGki9UR49S2PtZIdpfXmcXa2wcHREjt7Nxb7Xm38l1tC67b8Zhjahp+767bt7N9WWLMUdzXKvFczNvOchKHkzFyd9919mkvlFjeMFhPnn255f92eJ34/7B3svoS76SSsWq0yOzu74uezs7PUarXNHu4pHd0iN64fbpwdbVFseIpVnq+YTyWlpDdvMl5eWU5cHn4IuljqMLR0ZYB8x55+jl6qoGsaulCimmqxU2iIlJJapPdUTJvcvEOpuQ+VUphTGl4ok/JtEEbk77ZVPUFd6ETrZLT6qiRPXaQXaVFlDI2vn1sknzIS8ciYh9R0POpLlcGE57XWtetCDcLUtURgNAgkpqWQKFNXorZBVEYrN10evljueLFdM1xcSjDDJQuomPsUx3De4lK5xZ9+8QxveMGBVQUabxwr8cYXXMNHH7jI0fEK5+YaOH7ItkKKuhNE5tydCdjy59aNULm0qbPY9Pi7r4+rZyFrsdh0KaQMLEOjYXeWi9uPs96zspSwSU7P1smnDH7zpdfzpVOz/PmXz+IGIbfu6EGLarq5lE7DUYlW1fYoZUy292bozZo8PlNPrI5gpUhteyIWtCXi8Qv7SlCP1bhDMdfM8QMGcilsz2e0J0vTCxgppvn+p23nT790lolyC0sncVrwI15XIWUQREK/J6fr3DjWw/5teS4sNDk+USFt6ewZXBKHXWy4fONSFS8IGZ2+QG91nkvb9/M/f+qdlLeNMFpIsdh0ma6qJoxrh4s8e38/B4ba/A2lVIK3qO+GF0jccKUfbBCqjcDO/lzCkfvYg+OM9WbWRQy+GYnUZsP3Q+45rTTcBgspvu+W0U7JDz/g5FSV2bqbbPDe9s8n+P7bdmwaLbkShLDb3+3mcxuV4p7s9+xyIr7mY+MVHp+uKUAkEgqOG3C2So6j4/0Q2l3/3qaTsFe+8pW87nWv413vehfPeMYzALjvvvv45V/+ZV71qldt9nBP6Yj90jaKJ5E/t0qKRCenR0MRnhuOT932OzpnYt7UauBdEJWoUobGdcMFNCGUCGZLaSq5QUjLDRJhT1DoQMP1yVgGT9vdy4sODvOBr5zjwkKLUsZgruHiE4kJCqkEBaPzxWTnMOrusQzlZdiIOC0xKqdr4EUXkU+Z9OdTnJtv0p+z6M+nmK7YSdeahMT+xQ9UR+VakTY0bt5e5OhEtaMxwAslgeOrcpquyM1TVRsB/MmXzqzQhjo4UqSUUbpJ7aKxyztEH52pI4Tg7FyDiYqtLHCWaUudm2/w+HSNasvH8RRSZBkaKUMHRKSs33nc1R7HuuOTtlRXp+srOYyRUppy06Pc8kjpgvqy32kvQa4X7YKz8w2XIxcW+eC95zk6XuFk9GI8Ml5m70AeIyK5DxbSSpfND7l2uMhIKY0QgsF8miPjZRpuC0sXmIYecQzj8rJ6PtwgZLZmd8xTTKjfP5jn2MTG5aHlqEGl5eF4IemiRrXlJdY5N4wq5KfS8nADpeH2XXv6k8Wv1vJ42z8/ojYFqJd+ytST5Haqqsa5sy+bJIaljEnW0gml5Nxck76sWjDOzNWx/YCerMm/3vwCdvfnGP+OF9CTyTE3U6c/l+INzz+QyJHMVG0+fP9FPnFkInn+Liw0ku9S0wnW9IEtZQyCMOTCfIPDO3vZv211xGAjonP895WWl4gslzLmNw1t+YeHJnj/3ae5VLYT3uVwMcX3HR5loeHx0IUyJ2dUU4quCdK6zmzd4Z+PTfHoZI3fuPP6NZHpteJKEMJuf3e9zz0RpbgnW7Rfs6IxKL7jchN52Bo5jnZuod99Drb5JOx973sfb3rTm/jBH/xBPE/58BmGwY/92I/xe7/3e5s93FM6VqGtPyUitqtI/tz284W6k/xZj7hOqy3bmlAlwYyl89xrBvmJ5+zl40cmuPf0PH4QkrVMcpahlN1lO19IvfSGIvucD91/gbrjs9hwcfwQXQiCMETXNdK6SghEVCvJp/RIbVqLOA0R9pEycDyfpUZHgSE0BopW0qE233CZqmgYukYhrXNgW56MpcybH5+qMVWxlxJFiF5wCo2Lr97UNUoZC1PXVnRnhlLJK+SEgR8qA+PBQgpT18gYAl/K5IX3c8/bz3deM8hnT8zgeKsbimsQ8cYkvkCVay+WkxcmKKPahy6UOTvfIAwl+ZSOaWjkU8pwWpURl+7vegifH0pqtse2QpptBYsHzjdZjDh7XihpRll4nLDH17xRxPIZugYagrrt8zf3XkDTBFlTxzKWXoxNp8L2vgxBKMlaOoYucbwQxwuoO76SH0kZpAxtaRMRWeTETKu4QUGLSour7f57syaGLtYt8axmJr0tn6LScvn6OZuWFyq5DE0oba3+HG4gIw/DAx18sh98xi7+9v4LnJ9v0pM10TWli6Y4byp5zqUMRkoZoouIupNVolSJ5CU03+OHPvk+Pvmcu5i3+tE1wZHn3EkxYyKAkVKGU7N1Ts/U+czxqRX+evHzd9uumErSeQPbnw/FEVV8zUrLp2b7FDPmCsQgmd/peuJosG8gx488ezc3be9J/v6hC2UuVVo4fpjYMN2ys2dLCdHdxD88NMHbIj1BVWIP8SWcmWvwx/9xmp997j76sqoTNJ8yKKSNSMhYcauOX6ryxg8/xPaejLqWTRC7rwQh7PZ3V/vcZiU4lqOEz943sGZDxZM1ll9z3fExdNU0U0ybVG2Pc3N1erO9CCG2RI4jRtmbjo/TWtujeHls6oxBEPD1r3+dt7/97fze7/0ep0+fBmDfvn3kck8tbY6tCO/Kmvm+abFW+UgCDS9MFtogZjqvEpaucce+Af7L08bImDqPTdXY05/lsaka4+UWVduj6fjqZR4dO9LHRKBkCy6VbbVIGEqRPH6Jp02lcO54CkHLmBpuIKk7ATUniNA3VRe0DI1thRTlpnqxDBXT9GRNUobOdLXFXN2lGAmeZqLjLjY9Wm7IjWMlShmL0Z4s0zUHxwmw9JhrtiQ5oKEWQ8cPeOhiGdsLlVyC7EQ5FWIoSZsaEkMlTuMVpFRoWyGt03R9PnHkEj/+nL3MVB0em6pQtYMVaGkY35Dov2fnG+zszdDyAv7ki2doegGLDZfFposuoJg1qUWejGlDo5RR8hP5lEHD6UTcVgs/UKXU/rzFo1M13CBEoJDe2LQbVPfcUhOFSOapfbgd1yEVYqxr6ljxYnbLzl5qto8RaaHF452uOgqhcQPqtofthxwdL5MydQbyFiOlDD1Zk4WGQd0OcIPY/kg9WTEnTyU7YtXd/6WyMsIe7ckkpbv20g0sM5MuaszWHR44v8BERSGc/XmLfEonkEQ7a8XDun3vwApCv2Fo/PR37edtnzpBteVTzKgOTze6h0IIDo4WEZpgoe7w2HSNasuj4SpUWtegOTPHL//Jm7n+xNd4+rmHee2PvYe+Qrpj0chYOlOVgE8dnVx3wX10qtqGJoukHB3Ln8TPohk1SgThkpRLO2IQIw3ji02abhBZOKmS89fOL/Dqp+/g4YsVxhebyr8wDJV/ZBByqWLjnJnvQGGutnSA74e8/+7T1CPkPAyVzZgQYEQo+HvvPk3G1LF0Jf0Rz5+pqyaKStNjfLHJrr4MuwdyTwk0aTMSHMcmKgolrCgHCEMXjJbS/NRz9/F9t4x9k65g87H8mgupJa1AhTIbyeaikDa2RI5jd7/q6r73zAKh0+j69zaVhOm6zote9CIeeeQR9uzZw6FDhzY90G/Hky/auT2agN6swXxzfVg2nza4ZWeJP/r8qY4vbG/WpJhWVkFqJ6+BVEQrCRCCJ5U+0v7BLK4f8I1LFZqe8nV0fYml6wnvJ2uqkkwgg6RMKgHblxiaJG8YvPLwKNcMFbj3zAKnZhVyoUyCJfmUwbVDeU7O1JUieNpMFvyzcw16Mkohfn+0q9c0AVKgoxKvfNqg4QQ4nhIoXYx3OFEtLp47y1DSHkJA0/WZiVTUlcQEuIGG7QekdY0jFxZ5ze07efPLDvLRr1/kH49eYqHhJXy31RCmMJTM1l0sXWO2NsdQKc2uvizjiy1yKRNT1+jJCFpeQLnlkbV0spaB4ykvuMXmBjszAaM9GcYXm5SbHgJBKWvi+gGOrxbmQCp+Y8bSKaYNXF+hZ7qm7K1aXmzU3ZaQycjEO+LaGZpgpCerXozLRFSzlqG044Rgqmon8+CHEtsLqbQ8xhdtXnhwG6OlNP/+yCyuv+RaEM+fZejcsbef+88srJuM9Ocs3vD8/TScIFn0gQ4z6XLT47HpKvN1h3JzqSFgtuaQNg1KGYOMqbPYcNGF4Om7ezk2UVkhznvTWIn/dsdu/uGhCebqDlVbzctYbwZdV2XW83MNHh4vJ2gxKF7b6PwUv/X+t7Jn7iJNK837v+O/YqXMRDcujlbE85qs2OsuuBcWmkqcNfATVDz+aIKECfVPjPbFSuoxYpBL6fzNfRcYX2xSaXo4geJZ5lKqEWa+5vDeL5xhR28GPwzxpaQnawGCdER490PJfN3h4w9OEErJxx8c5+h4hUrLw9Q1rh8p8Lpn7+HQ9p71n90u457Tc5F9mbonVhu6Y+gaaRFJw/ghIz3L509G6Jnal/qBTN4P8fP0sQfGSZtax/P0ZCC3dyvB8emjl/irr56nFflHpjKqSerCfJO3feoEwIaJ2JOl9LzimoVg70CepqOer4yp44ch1ZbHdNXeEjmOE5NVZmqOEibuVveIyyhH3njjjZw5c4Y9e/Zs9le/HU/SSBbN6OViy/UfoLhU8b4vnEZISTplRNpQkslyK9LgEmhRiS5YBXpruAGfe3QWXdPwgqCj7Nf0woizoiyTUoaeoC1xd6eUYGoKRv7IAxP80Q8e5rdephTqH75Y5jPHJ5mvq5LcgxcqWIZCSRYaLqah1M1najbHLylE5Dv2D3Bmrk5K1zANPeIWhdQjRXk/Gl8QIS/tIKFAkds1FGJQbSkdntj6Sb20Q0KpkIZLFZtKy+Pwzl4OjhQZLqV51789RojAQOK0zVW8QAZSyTM0PcXXunYo32HEDcoeqCejyPSLTS9pRDA2eLEIFFJXbrrMVG2V/FoKTQMTL5AEQch0zcYPwfECFoKIYC5j8V6l0h+EIDTQpELzQqkI3hoSy9LJRIgWLIlJxiKqaUNT5Uc/6OArxmthIJXf5fhCix9+1i6+fGoezw/Q2iolUioj8pu2l/jiybl1k5FTs3U0Ibh5R0/yd+1m0uWmx/GJCnXHw/ZCQtr4bdFYXD9MlMlbXsCffvmskp6IylS37OjhoYvlpKw5UsqwbzDHDSMlbtnZwx17+nnHvz7KfWfmOT/fxPFD0olAreDm88d438feRl+rynRpkF/5b7/DI8P7ODxSTPgs6roVn220lGG6aivtvVUiY+m0vJDerIWhCaq2Ss5VQ4pCnvUoAYs3Mv2Rkno7Zw7g1HRddawGYfSsqHm2DJ1i1mSm5rDYcEGopp3470X052rLZ6wny5ELizxwfoELC01anuKQSqnuxVdPz/Pr33P9lqAwSvA2JAxDDH3l/CwlvuraLWPpM14gI5N59Z5r53PE1/OvJ6Y4NlFJpDy2Wn/qcqObZhRTh3946BItN2BbMYUQ6kuVsZSv60zV4f/dfYY7bxxZszTZUXout3CCkJShMVp64kvPq11zb87ixrESZ+bqiRNH0wu4eQtdF/xASeOcnOieW7bpQu/b3vY23vSmN/GpT32KyclJqtVqxz/fjqdexLv7WPah0YWhdiNamBxfstDwmGt4lFs+ti9puGHkI7i+obcXSKXZFa4sZUlUB2YQKHK2lNECEZW2VGKikoX5usMfff4Uvh9ycrrGh792kdOzDTShyMVEmlnVlk+15TFXc5mpuVRaHg034M5DI/zgM3YqqQw3IGUoZKfcVERs1cggOuyBYt2sWA09dhHwQoXcmEbMUVoyKg9DqYy4vYBqhKhpmuD6kSJp0yBtaMi2hEET6vixx6ZERJ6SEk3TMCOvQr9tkjNRolNIG7Q85d3n+CG9WTORxGjXRgO14Oas2CJIIZrK406VfE1dQ2gCwdI16ZpA09TLx/aUPVRfLqU6YaVaxQ1NYGjquUoZOnsHcoz2ZDoM2/uiF2PW0plruKqM3f78tQ3S0NRYH5uucvdjs4yUlNBqPm2SNg3yaZM9AzlGSmmOjlfVTjhORqRC7RbqDjXbI2OqhG85ETfZQZsaZ+bqtCIENIg6C7QoSdE1QdrUyFq60mWTkpanym27B3L0ZCzuOzPP2z51gvvOzNOTsdg9kKM3a7HQ8PjGZJX+fArL0nnl4TFVIvcCxRXTBBLBS49+nr/+29+gr1Xl0bFr+LVf/n88/wdezM3bS8w3XOpRc0nd9jk1U6cvZ/GyQyPJ4rNatNyArKnTm7O4fqTIrv4chbQR3U9B1tLpyZpoQlBuehiaxs7+HA0nSM7xqlvHaDgBlZanjmcZ0fdZ8fficrVAifS6fti2EVAblSBQiJOG5PxCg8en65GWnaI6pKKFfrbm8o5/fpRj4+VVr2czMVhIRZurVcXro6Yl9T2vOwHtb6Uwkr0JQhlxQ5ccBBYaLqdmVXNMxtSS+39sXJVrj09UrnjsVxKxBMdkpZVI98QRJ9a5lJlQN+IELA4hNIoZk4lKi3tOz616jrg0fd+ZeS5VbAIpyZo6fhAyWW5x35n5J3Qu1rrm3pzFrTt6GC6l+a5rBnnnXTfx5juvv+LksL382ZdPccsm0NtNI2Hf8z3fA8DLX/7yFZ1FQgiC4KlBlFqPpPyfNdZV7pcg9DZIbJ2QQMNVC+V6dzuQYOoRfB+tq+3zvvwsYpWf+xJExFNZSkaW2vyrtto5f/nUHC/9gy9StX1aXkjKEMo82PaT3XWsPWYZiuei0grJp49Osm8wz089dx9v+9QJZqqqOcEPwqRbzzQEu/pynJypJ4llnAzCyk5B25NoBAhNvdRjfo3rh2Qifz1QL/ea4yeSF/HLME50gKS7NAglthegocopHTyHtIkXKmsaQxfcMFLg4qJNb9ZM/BofvLCI6weRqKhCrCB2DVBJs6ZBKW1G3ZVLd7xme8mdMXRN8d8iCZAQtXilTZ1SxozMoNVOU9cU3+vpu/v48efs4eNHJlYVlQyizsFcStnmxIinQEScMg1NU/ek5YU8PF5he2+GqaodlUOj+6EJBvIpLlVaCIh4SmHiYRiX19KmRm/WWkHEjXfQs3WVtKtEwktK4XFZ1RSCIIRiWqPcUlZI+ZS6r7omyKV0/EBJT/iBappAiFXJ0FlLNZsYEWrq+SFW6PMzX/k7rMDnizc8m9/6/l+lWOzl5h093Lqrd00pgoMjRe49O7+uwOdNYyUkkuMTVW7d0UPdDZivOUxVbVpeQN0JKGVMpcRu6FSaHrYZdMgdnJmtRxp8ElOXzLXcyLpJrQNa9KzEvEo/lIQypGZ7uL4kCENAcOxShWrLS7TorKhhAUDTdBwvYL7h8BdfOcf//v6br6hc9Ox9AwwXU5yZa2AEIUabWXUoZVJqtzSBG0rKTZdcykw2Pn6oeJKD+VTipSml5OxcHdsNyFk6pay1okx5pfpTVxrd6I0dHC3yldPzSfK7PCxDo2r7zLY5fcQRo0DzdSdC58PEozVj6VRaHn6gqhBP1FxsdM2jpQw/+dx97N9W2JLzrVb+7DY2nYS1q+c/leNbLQED1pXTUKW2kLSp425hIi3D7rrz2sfRLp8BsSAohFHyJdt+HoYqsXK8gPGynehbpUydhmuzEHX4gdI+ExoYQkFBIkI0Yl7Km++8HoA//NxJzs0rwVo/UDyi64eL5FM6Z+caSSIrkSA7yczLr0VIqRC9MEiSqr68RSljJvD90XGlM+UFCh7XhSBEduijyYgALlCr2ompKllLZ6iQZrbmcLHchFASRsr9955dZKwnwwsPDvFvJ6YjgV2FsMSToQmFcum6YP9gjpYXMltVbftLLKu4FBMmaFTG1MlnDGSE+lVaKuEqN12GimmuHSpwdl6V+u7Y28+hHT1cN1xgb8Rhan8xpk2Nx6eqVJoevVmLXMqgZteTEmMYza0p4qRZRd3xOT1TT7hIRoQILjRcGrZPKWuybzDP6dlaB2fJ0GLxXsVZjEnacUfYdNUmY2pcWGhhe37UBRkhh3KJk+iFIbqmbF48P8QwFToSJ3U126cadRRWbb/DBLudDP3ZE9P809FLzNaUJ6SMkEMrm+YtP/67vOjr/8pfvuCHqdkBvRqJYfZ6kgXdCHcCXCqf5NRsg5FShh39uUjKZUnc9fnXbePCYnPVc+zuz7FvIMfJ6RpN1wNE0n2WoKOo72whpVO2PcWViZLgUKjkutz0VClUB0sTHUmjQG1eHD/gxKXqFWk4gWqQeP3z9vPrHz+G7YdYyGgbpmgYhiYYyFscGuthqmpzdq5B0/WTr4LaSCk5nnicNVuh6xIS0/lk/FukP7UVsZGO2HzdwdCVQ0XGWpmIub7akA5GXe3tEaNAxYzFRNkmaxlt9zEqPds+Y71P7FxslWdlN7FRyXe92HQS9tznPnezv/LteJLERgmQ8rUTNNytO6cvV0e4VoslUrDaSS/lILKDg9UeXvQhAWQtXXUIegG5lE7eMpj3XCVES6ymDw5hIjdRswO29+aSl8P3HhpFE/B7//IYpaxJb9ZipJRG05Q2VMbUcYNYl2zjq5LR4GJledPQuWmsRMPx+cPPn1IdeMV0QhC1Pb/NIFv9fhiVwVKGhqlr5FIG5abLFx6fJWXqiRYbKCcDKQUNx+fcfIMP3X8xknjwqLQRyzVVL8ILfdJSp+kGPHNPP3N1hy+dnOtAAVw/TFCtgUIKDZIyVNbQkFKpxoPaMVdsj/2DBSTwyFSNhy5WOjgy7S/G8pzLfEOVQfYO5tE0ODVbT+QZ1HMgE307L+K4KeSOiBelnjBTV6jbQsNFtuClNw3zu595lErLoy9vJaXblhdQyprkUzqfPHKJ07N1/uSLZ5IGEwSEYYjjSaVVtwzt1KL/BqHiTIVSkrb0DqK8FygJi0xKp+4Eyvy8LTKWzpk5lz+/5ywNx8fQBX2tCk8/d4x/vu47cHyXh61ezj//h5VcSRiyb7CQNA+sJ1nQ7eKz2mee0aZvBqx5Dk0T/PAdu/jXE9O4geIrCiQyVKhmytQi/qRGxjKYqSuTactQcg+xxI2ZMqJETIK+lPgvDz+8Mg2nOF5xeDsPXljkb++7gO2plFqgmiT68hYHthX4ie/cC8DHHhjn2IRqGsqaOqM9aWaqDvMNF8vQyVh6YgtVShuJ6Xx7bIX+1JXE8o7T33zp9asm1r4fMlpKc2G+SdrUOkqSUioC+67+HM/eN7DiHDEKlMpoq3JQYwP59VxErlY8UVZYy10XNhOXLYrRbDa5cOECrtu5Yn+7Y/KpHfUt/IIYQiVhm0Ud2xEg6E4QVAhoeUFSgpqqOIlierz8JUT6CBXSNKVyr2tQtwM+e2Ka4xMVzs41KLc8mtELw/WV52A+pZNLG1SiOVoN2WvnWUmpSJemLpACHE8ykDH54Tt28fEjEx2de3sH8zTdAMtQu6lQSixdS0qpxYypjLlNjZ29GTw/YLEZ0oyQHNV4oAakrHB0Ki2Xc/MNkCQitO3vHi9CEf1QyX+86tYxhBDM1h3OzC6hAIGM1N3TJoe29yAgKe+1QqWWN1Cw+Jnn7ufmHT1MVVp89MEJFtcRhvytOw/y2RNT/PW95zk7r3baJ2fqFNMG6bbEsj0R9TzVITtSShOEiusWl7van5X4j1lLpz+XQhciQrR8dE3Qn7PYPZDH0jXuOT3LJ46M4/lhR0fYQkM9P3ECHKIQVEtXpam4pGt7AWlT59qhTqJ8XH52ouTVXFbmaTk+i00XAYyW0vDoo/zfv30LO8rTOKbF5/c/Q5UyfRuhKc2z1z5rV9eLRzeLz5UuUIWMyVhPmgsLraSjUwhVrjY0SKdV9+iOvgzjiy0MXW1cdA2ylsFAPsW2Qor7zs3j+tFcLzuHF0oMvRNl3CjWk7o4PlFhquKwbzCX8PDCUGF2hqZx56GRJAFdbW7a9eOmq8perZgx2NdmK9UeW6E/dbmxnkJ+ezMKKJSwnY4Ry/q4vkrAMpbOTz5376qk/BgFUvdWbXRMfekZ8iP0M5Dyqs7FWvc93rDEf7+8e3mrztOOQPeb3VeTNj0bs7OzvO51r+Mzn/nMqn//VOGEfTtWj0101j4hkTZUmaPpBuuS/A1dvTDiz3hhsGpXoIbixgWhZLHhkrXUTvz8fIP3fuE0fqh0vkIpqbQUenSpbFNIG/TnLMI2o3HLUJyY9kQBYjK9SiZDVCJKCKYh+IFn7KCQNlfo9sQE9bNzdRZwablq/DHXqRGLS0rJ8ckquhD05y3mI92bjKm4F003IAxDao4qTQrZhuSwlKRIEXfBKf2j/pwqBe4dzPPmO5V0xtfPLyozZ8tARh1hhqZKNwci70TPD7lUtXn6rj5ec/suAD75kErA1hOGDG4J+at7zzNZtiPfUqXhttB0SRtKiyxGMNV51HulmDF59dO38y/Hp1lsKSJ/bEEVRBpkGUunJ2MxV3MxdY2n7e6jGXHDTF0tAkKo3f/FhSYyhJGedEdHWB+SyYqDQJVfY8RV0wRhIBOx1QNDBXb1Ka/NmA8FamEqpg0ulVuM9mQ6ylRSSs4uKB2h3X1Zsvfczf/+wG9TtOtc7BlivHckKbu7oSRn6PziCw9sWqqhG4HPKxEQrdk+pYzFs/dnI79SP9k89GRNdvbnqDQ9XnD9EJMVh6FCCl9KLE1gRY4BAOfm04wvKiFXIUTSUewFITKUZDMGh8a603BaL/E4OFJMBDxv2dmXXIMXcT+nKzYPX6woNLxt8W6P5YlrLqXzN/de4NhEpeP+w0oHhici4gTh4YtlPvrgeNKR241CftyBGuuEVW2F0O7qz/GTz927ZodqjAIdvVimmFZC0TEnDNR3si9rUbP9qzYXG1kybfT3W3WeGF0+cX6662NuOgn7+Z//ecrlMvfddx/f9V3fxSc+8Qmmp6d529vexrve9a7NHu5bMp7MTQFbNS5BlHxcYWhC4HShiuuvkj3GtkTtESdFhqa4Tk4Q8vhUFS+UZEydwbxFywuxPS8icQNSmW5PeD6OL8lZOoGMuzZJEqW4g7OUMfFD1Snmh0rrrJA2GchbvOzQ6Jq6PX05i95sL5WWx/n5Jk/f1cPHHpxQ5cxQCZ22XD8y1QYwkqTKjwQ1TV1ge8pxwNIFXhCR3qO1QdcEpiYSAnkoFRcwCGVnmUAoRC2UylMyZ2k8Pl3n4mILU9OSxClr6WzvzXLXbdvRNNEh8bCWNMSDFxa5+/EZZmoOliZwvJCW59CfsxINt/i/MY8xBHoyJj/2nD289MYR7j+3SH8+xVS11UG4789ZDBUzSKQilpsathcmjRDtcWGhietL+rIrO8J0TbkPhEFIKWtieyFN10/0oVKmuvb//l37GOvN8gefO7mCg2VEc2TogroTdHCzcpbi1D3zC5/kB/7iHRhhwLGdB/nv/+UtTKWL6FE3XilrsqM3syIBu9rCpt1EjIBkTIPb9/YnCU2c6DacANsMEgHljGWsypfZM5BjsakcMxw/XOrcjZ7Ba4YKyfO1XmxkzXPXrWMrns3250IXWlecpeXJ2V23bWeivDYH75WHR5+QexUnCCena5ycrtP0AoaLKQbyKfKa0ZWm2ffdMsadN45sSjG/HQVqeQG6plG1PayIz2dqmir3boEW11rXvd59v/PQCJ+OBIyvxLKpW+ungyNFjp3r5e9/rrvxbzoJ+/znP88//MM/8LSnPQ1N09i1axcvfOELKRaLvOMd7+DOO+/c7CG/JaKdF/VkTcC2MuJrXE6y7zZ0Ab1ZCz8ME8mC9ZLX1QC8tT4b62tpAmzXJ2XokdCkgaYJWp4qWwmIFOFlUroDxR8pWTozdZcY+JWRfQ4oJC1tmrRc5eV441iRhhMku8Bz8401SZxCCAxNIVOTFTtpmAhkLCshEEKR1SstH4n6L1LiS5l4fZqqxSGZhXju4sQrlp/QNbDduNxodLxoRqMFZarS4uh4BT+UFNPKcNrzJa2GSyitjhLORsKQthdwZrZOEEpKGZO0qWO6AQsNh9maQ1/OQheCxaaLqQnylsFoT5p8yiSQIQ9frPCdBwYT/sXhHT2KcxUt/vmUzunZBoe29/DsfQN84fHZNTsFZ2p2wiX0AkUaTxoCQql06AIY68mwrZjG9QLc6OeTFZun7+7jhQeH0TSxKr/q9r0D3LyjlOiEtXOznrmrhPerv8bL/uWvAfi3m7+b33jZL1AJNfw2g3LHC5gs2zx8sZws/McnKiv4SjeNlbjrtidWk6qDB7Mt35HQtKNAG92Hphvw/OuGCMOQ+84tJqhvMW3w9N19/MR37t3wurqx5vn00UlsN1j5bErVoWy7AZWmR2UTljOwPgfv0PYiH7jnHKfnlLVYKWOyf2jr9cPav7eFtAkCCimDxUjr7saxEr05K9I00/nXE1Mcnah0aNrFYzIMjedeu+2y5yDWCWt6ASlDZ6SU5vDO3i0nw8PG9/3kdI33332GrKV3Zdl0uedZfpw9A92jy5tOwhqNBtu2qRvU29vL7Ows11xzDTfddBMPPvjgZg/3LRObzUMEagl9qhd3DU11Qdm+XMH1Wi+0qCwRtsFpy2UgNhOCJTX6pQRRlT3GetIsNv2oc06JMmpC4EepnRGVLzWhyrXllk+lpdC0mKQdRuiakjQI0ITADRQCU7d9+vOpZBe4nMSZLEqRkviZ2QY7+rLUIyFNx1/dozSmMYcyTMYQRg+MkgQISEVaPbGkRBiG+AEsNJyoW1J1IPbnTHb2Znn7Zx7pfNFIGclAqJJvPm2wfzCPH8pVSzjrdglJycmZGkGo1Mpje6pcysDQiHTCVEkrCCXDxTTXjy6Z7EopOTVT5xNHLvHKw2NMLLY4HXX39WQtWm7A6dlGsuM2DG3dTsHenMVU1WGq5kTzpxJuKUmU7kNJpKNkKEcEYLHpMdqT6UBn1uNXfe+hlUgI//iPaFEC9v7veg3vftZ/xfNXbiYabojju3zgq+c4MKTa6d/26ROcmW0o0/LoIbiw0OTEZIUfffZehkvpJwQd60b6oJv70Jez+Inv3MvBkSJn5uo8Pl0HJNcMqY7abq6hG2ueS5UWEjqezcWGm/AbXT8kRPLBe89j6tqmEobV7v/D42Xe/dnHWWx6CXpctT3mG86W2hwtTxAWGi5hCLm0nkhEnJ1r0JtVzhmnZ+pUbZ99AzojPZkts15qn4MnSjF/o/tezFicnlvk8I6eDS2b1kM/N2P9tNny/qaTsGuvvZbHHnuM3bt3c/PNN/P+97+f3bt38773vY+RkZHNHu4pG1e7pCh56iZghZROw1EWKvGCa+nQ2kQS5oWSubqDZSw98JeDqMUhohKHpQtKGQtdQDMivQ8V0yw0ajQiInoYKnX0OOHzg1hfTMOPzMQjmheWruGFkjBUZO1MJFUwH9nYpE2N0Z4sLzs0wsGRIrD64mV7ASdnasw3XAyhSKwzVZuWu7rBdxyS1Xl8QQhSqBKrDTi+Qs1iDU9lqaQSDsNQZYnPPjrNsfEKGVNLDLNrjk+15ZNLKZSj2lIoRX+ker+8hLNegnmp3GK25pBPG0l5NSbwpkyDwbwy+PbDkEzG5KbtpUg0Nr6HSy+7fMroqgNwPZSilDU4Nl5mNW3iIFhCECcrNvN1T/mIaoKBnMWLbxhK7mcca/GrVv35972cuR//GT6hjfDuwdtw1qndhyGcm23w/+4+jRTw6GQNXYOUoScbk4bjc+RCmTfPHmPPQP6qK7bH5dAglNx163a+emaO07ONy7oP7Z/bv61wWdpN3VjzaEKwrZhistJifyqfOCLYfhDZ2EApbXF+rsEffO7kphOS9vt8dLzMez77OAt1l96chalrUQOMH3XKNjetmbVWCXp5ghA3hajvlxb5JHpqgzenypTtmnaXo2m2EQn+iYqN7rsecViNNXS7uu1e7db66XI6PzedhL3xjW9kcnISgN/+7d/mJS95CX/zN3+DZVl84AMf2PQAnqrxRJYUY0PtJ3MkJt0akc6VikBCwwnQtciGaBV1/LUilKp7casSXiVzoMocIZKq42PpgvFFBZ27rTB5eYVyCTkTqLEv/x7HMgWmJnCjOrMXSPpyFvsG87h+oHaes3X+35fO8NUzc3z/bTu4cay0Ar4/O6/KFQP5FPu35fH8kNMzdZSkZds5V7muteZH0xQqB3JVBDGQ6rquHcpTtT3+1788xlzNJmXoGLpGMaOaEeK2cwkdZs6w8uWzXoI5W3Ow/ZBUEBKG0Gq6FFMGuq5QAiVYq5Kz4VKKYnolj6v9fDfv6Omqu281lKJme/zc3x6JvD3lmgm+oUU2NqGkN2viBpLZusP77j7DsYkqP9lFqSyJ48dh+3bo6QEhGPiTP2b7sUm0v39IyTu0fbTjngqFAt57Zj66bxIZQNP1FHIX3ZcwKqv15UxMXb9qxtLLycmhlAwXUxze0cP23gxDxfSqPKKrKRfQjTVPytT43kOjydjn6g4tzyeXMpRTRsQ/682aVySyGoaSD3zlHOWmkkYxI4ukWEJFOQ0od49ukZP1COFBKDsShOWerLFERKXlU2kqj9rl3aabQXO2iuS+FbHRfQ/CyLt2jRJKt92r3T5fl9P5uenfeM1rXpP8/2233cb58+d59NFH2blzJwMDKzVE/rPF1UiIDG39rkTxJGDyt3PaVot2GYjqst1AjNbEPoCyLbHZqBtzHX3ZTUUsNSBQUhYtT3UfGrrGbM2hmDKoSKXsHJ+z/Xura1qyUMe3Q0o1Pk1TaukxKf5pu/t4+MIiZ+ebqmQUxcWFJo9O1njzyw4midh1QwV+5eNHsb2APYO5pKuo0nRVh2VUcTK0pfMtD8mS9IQZJUuS2FLIxzI0DB3i/ob4XpqaIG3pVFs+tufTcAJMQ1vqVGwoa6c4MSI6j+OHzNcdZWeE6hItN10evlimkDa4bqjAXbeO8amjk5yerXGpYhOGSkS3GRl0111Fum84qgycNjR0XcONlMyHS6lVVaeXv+y63Xm3fy4MJb/8kYdZjJwEmm7A/CrieBrKj1NH4vgh5ZbLtkIaU1dcm/vOzNPyAt7YTZLzz/8Mr3413HEHfPrTYJrJvTN1pZZfczqx7/h5jdHKmqOkS5a4iSrJcbwwkfPwA4W27OhLXRXF9nbuUdbSWWg6TFcdHrpYBqYppg129ef4wuOzqy7KVwspWROBpZOf9sKDQ4z1ZviLL59V3qEoR4xYtiQufV9JeencfIMzs3UMTcPQlhPalXhp0/WptLyukJNuGg7aE4TlnqyWrin+q+fTcHyyKYPeqFuxkDYQ0DUnrltyejexFc0lG933aktxW2u2z1Dx8rtXu32+Lqfz84oEO6SUZDIZbr311is5zFMqrgYipQmxYiccR8pQvKVgq7KRy4zNoFewOjrTrm26GX5X/Bq70rnXheJ2NRyVmPRmTVKmTjVSVM9ZBuVVXkASpZAe67XHpU1TEwQS8iklR+CHEtd3efD8AqdmGhi66FBzb7o+j07V+JMvnuE9r74FTRNcWGwyW3PYv63QscNaWJYUxHY5q0X7z32p7Iz2b8tzcaHFfN3BdsNk7jRUWTXmPPlByHTVVs0EUbdj0w0ops1k1x5IScOJBDURPDZVTfSeYl/KP/3SWRxfWR85viLk6gLm6krm4dBYie29Gb56ZoGJcitJTkOpzM+VS0OApSvrosem6mRNg778kkL3VrX8n5tvcHquEfF0NDImmCIq/8ulZzNubVjSulPNDEJoFNKmIs1XWhsnOX/0R/DGNyoY2Peh1UqSsPjIlqGhuUGUTC89Z2EExapkLIy4iao7U6B2+iFLDRmhXHqPbLViezv3qD9nceRiOepgDRPEWHX2NnD84KqgcGtFt/w0TRPcOFbiNXfs4vGZOkNFZc0Uy5bEsVF5ab0Eomb7BJEkzXLNLFA82Xqw1AyzXnRDCL/3zAL7BnMcn6gmCUIieTNbZ6pqk7EMGhG1wfUVd/LcfFP5nqJ4sBtx4jZLTl8vtgpN2+i+9+dTSXfkRs/FlZznSjo/N23gDfBXf/VX3HTTTWQyGTKZDIcOHeKDH/zg5Rzq24FahNbKRxxfrun3+M0MDejNGuhrPHPrjdgQSqyx28d1tDfNQN66vIe1LWLidcsPlAp8ELJvIM9N23voy1k0I6gobWgdoqYaJKKg7d2eMRes7vgsNF3KLY+0qXFhoYkmoJg2FVoU8TSKaWWi/bXzC5yZqwNtXANriWswX3c4OVNbUSJba07jccWLsuOrTkFQQpe6JpaaCIj0lySYhlK4jtEnQ9PY2ZcjZehUbS/iuOlKosMLqUdIjKlrqr3dVWK2MzUXIZSExGS5xYX5JhcXm7hBmEhMnJtvstjycCM5jLjcu/wZKKQMtvdkaHkB951dYGKxucKk+krb3Gu2r7ofdbVIKi6Lero0TW2KllR3l6yxgCR5NKIu096MmSQ5yyN0PSo/8TPwcz8HYYh83evgX/4FiktcsmuGVPLtBXKp/C2W0O9YoT/2NRRRMwWRkGwQRqXmtoejXR8vY+mrGpVfTiTco2KaR6dqlJteUpo2I228UELN9mg4QWIHFl4JmXMTEZf4b9peotxyOTfXoNxyObS9Z0UyWMqYSjbDNCLT6s7nab3y0vGJCr/z6RP89j9+g7d/+hF++x+/we98+kRiTl2IRGqzpk7T9VeYZntBiBeG7BvMbbiZ6IYQfmq2zh17B+jLWZyaqSfG7lYkFXLTWIkfeuZOerMW2egZKqR1QG1qpiKNO01THekxJ2652fZmyOnrRYymHRuvJMb2V2J4vtF9/75bxrp+LjY6z+uft5+d/VkuLjZ4ZLLKYtPZ9HGWx6aRsHe/+9381m/9Fq9//et59rOfDcCXv/xlfvqnf5q5uTl+4Rd+4bIG8mSPrSxDbhWy80REXAbT28phYVSCc7zwsroVhVBcKl0TyiZmg+jNphjryXBissqlcispjW024lOFvsT1fSq2T7k5w6HtPRyIuoqKaaUUHQQhs3Un8YfUNWVwIgWJjY4m1LxoQvHeALb35Jkot8hZOq4fKN6VUGUtU1edgJWWx+PTdfZvK5BL6YRSMlluUspaeH7A/WcXabj+ptDH9ikJQhmJR0JfzkxMd2N0J5BKKsIMFbITSmU0va2gFNBzKYOzUceYH4YEoUK7Wp7S/LE9peWkC0E+ZaBrMFW1AbCDECGg0lTdUaFUiVzd9Xlsukal5UYyGZ08rBg5XWz5yIUmlq74bMcnKszVVelrq2QY1CJpUrU96o6vkmVD4DlqIHGpecm/cuk+a9HiE6uA59Mm83V3RZJz4rFxjNf8INd8/UsAfPiun+WxV/wMd822uHFsqdlg70Cep+3q44uPz6ILlRTGaFcQwUuKt6YQnG9cqlJt+TSiDov4nsbcQcvQOszXt1KxPd4weNbSd0PlqyJB62Ju6GzdYe/Akh1YLM1ypVywjUpY3fLOLre81E057uBIkQNDBRYaLm4QLhMUDllsuPTlU/zIs3ZvOAfdEsKHS+lVGx9u3tHLKw6P8okjE7h+yK07e9UzZPvYcUeKgIrt0Zez1uXEbQU5fSvRtPbY6L5vBR/x+ESFTxyZYLbqEEbuAEOFNK88PHpF76RNfzP/8A//kPe+97388A//cPKzl7/85dxwww38j//xP/7TJmFbmTDFO97L1dB6IiOMdtleQGRJItAjpKDlhl0nCu1RTBtUnaBro3lLF/TmLJ69r59Hp2qcmKziXIG0v6WrXXvLV3Y9Xz+3wLXDBQQi2SkCFNImliFYaHgq8ZMhpqEh2xIIEclcGBoYuupWsyPOWRjJHQgBhqbQo3SyQEqOT1T46AMXuVRRgqOWLmh5AV6wZPPRHt1sBBRqp64rnzIIQlXKXH6fJEQIq/qblhew2HB48MIiewcL3LqzNzEnXmi6pE2NkWKGuuNjR9d2YaGJFV3PQkN5dDp+0IGyaShkTg8l83WZ3DfB0vPfXroOJYkafRAq3kzWMshY+hoF+83H7v4c+4fyzNVtmg7MNxxSkV1UEIJEYmgkti1qvALL0KPSkiot9+dSGJHOUnuSc3yiQvjqH+Dgw1/GtdJ8+Ofeztdu/W4mJ6pMlDu77jRN8JPfuZeZms3j0zVqLU8Zvkf3Pk50rxku8Jpn7ubdn30sSm5XljEkkDY1rIgQv9WK7TE5ea7uKJV5TfGpOnRuheK4eUGI7SvU8+GLZT547/mrrlYex3q8sziJq7Q89vTn+MZEheMTFXb358imjHXLS10nEHcWeeXhMR6fqtFylZWa7fn4gfLA7Mun+KUXXcNNXTggtBPCcyl9hSBue5K9lrF7O4KVTxvcOFbisakqVdtOrkETgr0bcOIul5zenjiXmy4np2sJmial7Lim4WL6ssrn3fDLroSPuDz5jqU9zi80+cPPn3pikbDJyUme9axnrfj5s571rKRr8tuxfgRSlQxylp74ED5Zoz1JtDRBytDVoioEurg8VXxfxhpd3f3ytoLiBUkpKUcJQRiGeGH3UiHx5xTZXXY0BLiB5LGpGoW0qfSvNGi6PgN5i8M7epio2Epbp+UpEcRYlDLKsAxNcTDylsHpSIg0iBZJESGIfhjSciVNJ6AnayIQyZd6/2CBkzNVFhpu4kkoo5QjKTPK1ROwpGwV/VkmnKKozOiLruZISuUveXGxRbnpc+uuXnqzJlOVFtsKac7PN5itOVE3nEIDm65PX049E7ExNqhnOwhVB6Shi6RsFoTK+1GIzoRy+djcQOJGNkVCKD/CkWKa4xNVLi1LYjZD7m1fgNOGxkLDo+b4SjsucjuIm0ZShp7YW8mojJ01tYTblzZ0dvdnmazaHUlOvFBX7/wJfm3mAn//87/L+P4bycOaO/0bx0q8+c6DfOyBce47u8BUxcb1A0xTY6SY5pl7+rnrtu0EYchszelIXIUgoQQEUfkyY+jUbf+KuSrLI0aPvvj4rJovVN1UfY1lYroen8n1ldXYZu1zVoutIITHSdxDF8pcqiibJA015oWmS2/Goi9vrZDNiKPbctxnT0xz79l5mm5A0wtwIsSpmDa4bqSH//7d+7l5R++m5vy+M/P4gaRqL7lDFNMGhi64fe/AusbuyxGs3pzFgaEClZZPxtLQhMD2ArIRJUJKiR+GzNddHp2qJd+py0EPlyfObhAyWW5xaIeB2wgTxD2+pkLawNK1TZXPr3a35tVC7+LYdBK2f/9+/v7v/57f+I3f6Pj53/3d33HgwIFND+BbNUxdRArrT53wQ4kpVSu85ynD3supR9qR0Xa3WFbTVQvl8UsVpqt2RwLV7dklJBZEMcldR5GxBWrhr9uKs5QyNFKmzu6BPELTGOvJ0HR8rh0uMl212dWfpZQ2qLsBnq/Qsbylc8+ZeRrRok50fSJUZS0pSdqkTV3jX78xyXzd4cBQIfGErLQWkTLEDaQi9moCy4g1f5TIqtoNe8k1CAlCE2isFJUNQmWYqzlCeT9uMF9BqLz7Ki2XYxNlSmlF5l1oulxcaAHKwqiUMQiloGpLFhoupYwV8dFkRPJdOk8QSkS0MMdyCnEJba2xOJ5avC1DwwtUcieB/ds6X3jtZsobvXzbF+Dz842kg1eVlAW6piGBHktnT3+Wiu0zX3cxdRCE+KEqwWUsg56MyVAxzVzd6RDhZWKCc1aJUzN1em64if/z+58k1LuTAdhI6PLEZJX/9a+PYfshlq4lCVgQKC6PqeuEET/ssekapay5ZjJxuRGTkx+fqnFhoYkfSgSSMKqFakJZYvnRJrPcdAilwAsMbhwtIqL6bj6lM1RMcWa2wV/cc5Z3vurQurY4W7EIxknc+GKThbqLH4ZkTT0xHs+YOvm0wWueuTNxQVge3ZTjzsy5/Pk9ZwlCyfbeLAN5ixNTVcoNj8WWx0zN4ZMPXULXuhOD1TTBLTt6+NTDl2i5AcWMSSalNsKXyi0yls7NO0rrLv6rIViWoUXvFvVSlEDT8Wl5AdMVm4Wmi+uH/PmXz/K1cwvJd2oz5PTVEufZms3p2ToPnl+MxKJlR/PSfN1BCMFUpbXCZHy9+7oV3ZprxdUUaoXLSMLe+ta38upXv5ovfvGLCSfsnnvu4XOf+xx///d/v+kBfKuG64XJDumpEqFU3Ke4jBReRgIG4Pqqmyvo4vIFcGKyRsNRHIbLmTFdRHwwucQLkyjUSMglqQyJMqTOGBr7BvKUIrX7uMvmrlu389f3ncfQNISmUUgvLRwX5htMle2IL7ekhyZR1xkjF4amFNc//+gs/TmLxYaLEZVv0oZGNqs4XE4gkyRdSqm014TqYNKFAE0hD6noRRq/gzWhSoKaynoiKx6FOq5Fv4v5XSqZUyjhbM0hCELyaZOm6yOEjMrSIYtNj96MSdZSorzlpkNP1qIcriwYSpaI7ZoWIWBREqaLTgeD+H4HoWoo8ANJylAJnBeEK9CGeGHe6OXbvgDP1V2aXpA0BeiaiBoNdK7Zlsf2Q0ZKaSxDie0Ol9IM5FJ8Y7LC6dkGLTfAD5Qe12gpw52HRjg4XGDuLb9D7//6/3j4f/0FZcYYKaYJ9ZWJxXq8mbXKJUkSUnfJmjopU6PuqOYSXVPIrqELbtvTy0zN5Yfv2MWtu3qvikr5jWMlfu2l1/GGDx/h4kILSfQlktEmQEb3W4P5hiozZRwfNwjZG1m5tCvUT1Zn+JWPH+VHn71nzcXyShbBMJScmavzvrtPc6ncwvUDfCnpyVqAIB25VCh+ash9Zxd54cHhVcexYTnO8VlsuohonspNj0cmazh+SF/OouUFVFo+Ry+Wu04QwlDy0MUyg4UUXhBSswPqToCuCUZ7Mhi66HCsWA0ZXg3BKqSUlth01Y4QQcHxiQotX3E649LgSDG94jvVjejuWonzcDHNcDHFubkmui4YKaaTphhTj6kbgnvPLKyZDLfPzdVEqOK4mkKtcBlJ2F133cV9993He97zHj75yU8CcP3113P//fdz+PDhyxrEt1oItk4Nv9ty3FZEgm5swQmDLkRbRfRPzVYv8ctJwNq/e8vHHSNWQagSggPbCoRScu1wnouLNsfGy8oHrD/H9948yvOv28a9Z+dXwPELdYeHx8uJv2S4ykBldC2FlIEXKt2tubrLdHUWS9cSsnzLDZIaY2xmHL9AglCihUs8KiAylG7TLYtkJCxDoWJxyUXoGqG/ksOn8gSRcN16simCMGSh7tLyQgKpdIMEGiEhYRgi0ag5PhlTp+kok3JvlWPHEY81Z+qEQLNND2v58ytQiKsUSiA2axlqfFFCE7/w/unoJebrDkOlNI6vOGqFtLECLQP42IPjzNcd/EAJzQogpSuZDtcPI+snyWzd5cBgjq9fWKQvZ3FzZHWy2HCptnzyKR0/UP5/ewdz1Gyfv/rC42R/9qd54Vc/BcDMR/6Bx57735hruNy8vYfenEV7XA5RPk5ChktpFpseuqbRn9PxAhk1OMjIYknQkzW5dVfvlmpxLV/Ybxgt8fv/9TC/9cnjCSKmmlDUOISAXMpkV1+Wi4stMqbOQsOl3FxUx5MK/UibGtWWzyOXqusq1F/uIhijn8fGKzw+XUOPmomUx6V6KpWXokG15TPWk10X0dioHHd2oZF8TqCSTdsPKEXnE0LQcgOGRgrMVJ2uEoT43u8bLJBP6dQixX3T0CikDOpOkIy56QZrIsOrIVj5lMEZJ0BKJUTsxM9TJE44WEiRz5jsTxsd36luSO5rJs5CMFzMcH6+iR9IbD8kYy5J+GRMg72DOU7N1r8pVkKrJbFXU6gVLlMn7LbbbuOv//qvL+uE34oRb4hj5Gf5onO5OY0G6LogCORTotMyDokqx1q6oOGuPvL2edE10OWSL+JmY6PmBxl9Jp/SqUdJRcv1ma46+GHIXM1hotzi3rPz3LKjp1MN3g84cmGRZkTAXX4N7WVXJXQq8cIlL0cJ2F6olNlDkkROtI3NjyRMNKCYMajZQSSvECYLoCbUS940NFIodKQ3a5FPGYyXFf9F0NnlKgAZgqErRMjzJbqAlh/iR6hX1tSTUqfrR3MZhjRd5RQwXEpTtZe69VabW6Kxm4aOJmTCB4yTiNihgHiuJMhA7c4bbsBI5IUI6oUXSsnp2Tq2GzBRtpc4MhmDPQP5Fa3yp2bqFDMWE2UbKyLgx2RyQ9dwA0kupakyoONTt332DeQS78x4Me3JWpG3aKiekek53vyXb+FZ548SCI13vugn+YfnvArR8pmp2jxwfoHbdvUlidjlEuXjJGSkP8tEphWVgM2EgB9KVUqfqrS4Y9/AlpDw41iPb/P2V97ERx+4yLGJKk3bww0lTcfHNDTu2NNP3Q2YrKjyUiltMlFRJe3RaNH0ghDL0NgzmFs3KbmcRbC9TJUxNSxdQ9egZqtuRUNTWmtA1LWoNjMNZ21EYyOtqJxlIEPIttl9xZuI9vP4gew6QehIQIVQ5txtESegD18s85njU+siw8sRrKmqTTFjkLeUY4DtKSHlbFo1J83XXXb1ZVdNaDYiucfj9lMhC3UnSRoRqvkpa+nYfqi+SxHq359LsWcgRzFjcm6u8YRbCa31rL/q8NhVE2qFLRBr/Y//+A9arRbPetaz6O3tjmz4rRTtbe1CY4W8wuUmYPHiHj4JNcTWCyEgZ+ncvL2Hpuvz0MXKiqQUOufFDyXBZSRgCuHo7rMSeGi8HDUeBNRtVYLLpwzcIORSxcY5M8/EYos7D43w0MUyJ6drnJyu03IDJQQrO5Ph5bynQILjB4kgavx3Icu0oSDyBlScqFjGI20qzTHLUHIXvSmLmZpa5HoyRuIBGSvh51MGh8ZKDBXTfGOySqXlJkbftI0tNjKXwGLTTRLjIJTUo7bY5Hei/woBlqmzuz9HteVyeq6B5i8ddzkCqa5JqFKukBFypRT3G25ApeUliSZRmdL2JW6gOjQXmx69WTNa7HROzdRXiOEuNFwaToWDo8UObSzHC0lltIQjF3e0xnMek/KDQKrmCyAfLXbLF1MlUBtQ+8aj/NEH38ze+XHqVoY3vepX+cK+Z6A5AcW0kiEpN10enazyjD19tLzwsojyYaiaUdxIMmXPQI6mEyRdo4YmcLwAxw/JmDo3jhUTSYgrLUXGicx83aGYsaI5pKOc9paX3cBnT0zxqaOTnJ1TzRtWKDkyXmZPfy6xz4n15oCO5pf+nEUxba7wIG2PzRLCl5ep6o6PHpXkNaE2F1XbY8DQoi7cqBs5ZENEY71y3DP39PLX912gFXFFY7uvOOLzmLrWdYLQTQJqGYIvn5zbsCz35juv5+CdBzk33+DRqSp/9uVzjBTT5NMGFxeafGOySiFlJFzMSks1rhTS5qYTmqmKzXi5yZm5OgKRbJL2DuQxDQ1D18hHgrApXetI0uq2v2kroY06RzeKjbhldx4auSpCrbCJJKxcLvPGN76RBx98kNtvv513vetdfM/3fA9f+cpXANi2bRv/9m//xqFDhy5rIP9ZYzltKtbRictTl5tCrfZ7V1qaFCzJBlyt1C5n6jxrXz9CaJyeqa/KIYJOLbWgTcz2apRf46+O40uQ6gXa8oNEbDVtKvHSmDj68MUKv/nS67nn9Bzv+feTBEHIY9O1rsaltMLMyNNxKWJOWnx9SvZCI4xU0vWIbF9Mm1wzlOHCQhPHD+jJmNQdHyeQ1F0lc3HT9h5u3lHivrMLnJptMFLKqDLbeTdBwNrn0QvCaHMg8fylOTE0ge+H+FEpWLCkJq9pqqPq6ESZ3f1ZpZuji4TnFUQoX4y+BSHUHQ+BiGQeBFKqcqsbhJiRbIgTeYVq0QA1AeWWx5ELiwzkLcZ6MoShJJCSgmlg6kIhaqHSI2t5Aadm6oz1LKFnKVOLFP5FoqXleAGmUNpvcVKmCWi4Pvm0kRj+Ll9MgzBkcHaCD/zZz9PbqnKpMMCPf/9bOL/9AKYm8CIR4L6sRdn2mG+qDrPLIcrHO/OT0zUmyy1Oz9YZLqbY2Z9lru5Qbfk0g5CWpxabUEo+fP9FPnFk4oq7w+JEZnxRlY06EMe0QcsLlBDrYcnHHpxgoeHSm7WUOntUfmw6ATv7sjQcJeobWy65XkBTyqXmFyGSRb7S8jgzW19R5toMIXx5mcrzQxw/pOH6UdkWGqEqfeVSetTla1Ftudy8o3dDRGOtchzAvWcXODZeYaiYajPRVglgnHQW0gYNZ/0Eob2Td7CQ4vxcI2niiSNOQHf155ip2ivLclIJSWdMjaPjZc7MKW3CvYN5araPLgTZlHIK6MlapI1YnkeJO7dCGZmNb67kFkvv+NH3spQxCCTRM1Hh4GghASaGCqmEE9Z+TYe297CzN7vqsxDHZjtH1+qk7oZb9vDFCq9/3n4+cWRiXS7c5UTXSdib3vQmvvrVr/La176Wf/qnf+IlL3kJUkq++tWvomkav/Irv8Jv/uZv8k//9E+XPZj/jBETk6GTkBwvtFt9rssNQywtsFcTW2u4AQ+cX0TXNBqOQh1W4wVp0RwJuYQQbTYBa0/clDTF6p9rLxkGUnKpaqMJgeu7WNEOLWPqLNRdCimTh8fLnFto0JO1sHSNBcdLBrmR9lvGMpKx6ZoqB4YslQcNTSQv7z0DOfJpgxOXqmRMDduT7N+WZ6CQppgxOTtXp9Ly0IRgqJhmMK/Iu/N1h38/MaM4MH7AxcUmk5UWaVMJw+qRZlnd9nH8MGpakEnZURH+RWJ+6wZL0g0isscxdCUT0vJDzi8ownNyHaJNMqMNeStFZP6FhhchZapk6geS3ozBXMPFNAQDOYtAqpKw40uCyGNyMJ/iVbdu50P3XaA/Z1FueciWcpRQaJbAEGrBuHXn0mK6f1ueoxfLFNMGC02XfEpXquWBJJSqIaLlBVi6xu7+HBnL4FK5xf60gZl0pyr0pmb7zJeGeGDfLQzNXeLH7noLc4U+0tFzZOgari8ppjXyKSUKezlE+eU780M7DI6OV5gs29RaPjduLxGEknPzTUIkw8U0O/pySXJypd1h5+YbPHShzHzDIwjDTsSx6aJrGkcuLFJuucniVbP9COlcMqqeb7jcOFrk8emaSoKk6hJe7tXYcgO8IOSvv3qembqzardrt4TwR6eqzDdc8imDhbrD8UtViL5bPiAjf9jFpoPj66RNdW0dna4bxFrluDhZnK46pE2Nmu11GITvjpoT1ithLS+LeUHIfMOh5QXsGyysSECfvb+fD99/ET9cKv15QcjZuYYSXA7UxuD//PtJfvq5+7hxrLQCYVtu+h2LEcdc0W5LbnFCs9j0OLyjh+OXqtQchSQX0gblpsfDFyvsHcyBhNPRJnH5Nd28o8TbP/PIup3Pm+kcXa+sno2Q9Y24ZfmUwW9FSOJWGtB3nYR95jOf4UMf+hDPfe5z+ZEf+RF27NjB5z//eZ75zGcC8M53vpOXv/zlVzSY/wxhGQLf7yxLxcmXQCFBcbda0wu2PBGDyxOB9aXyz7sc3a/VQkctxu3Hi7Wh5hteYtq8lgBpu3G1pmloMtx0Q4AmEikvNE2s6b+5/F7pQiFWSCWX4HiqG8kNQk7P1gml5Pf//SQvOzRKIJWeTtbUqfrhhvPecgOsSNhJRP/So7EKIRL5gSAimvdkrUQB3TJEIo7al7PozfYyXXVYbDrcsbePTx+bYrHpYUYlv5ShkzGVgnopbXJwpISpw8npOlXbTzwk/QgJy6dM+nImNdvH1AVV228TK43mMLpAVX5VeloCooXGx4tg3tisPcb7BDBczDBUTPPghUUqLZcgjH32JA1PoVH9uVSSqOZTBq4fUnd89g7kyFoGMmpYGC6lmarY+KFUBuWaRhB9p4RQO+FjExUKaYNXHh5jYrFFywvQNQ3HD8lZSuoDVFJgCsHte/v5ie/cC8AffO5kYtGTT+vM1xxSMsAwTKRp8Na7fpnFmkPdTINUTRVaVCqWcglB6MlamybKr7Yzz2Nwy46exAvw2ESVA9vyZEyNjJnm0PYe1cQSEbeHiimmuyB/r4UOVFoel8otAikTU3lQ34tiWrkNXFxoEsqQnX1Rx92yhTxrqbKsaWg8Y3cvlUc9pIRn7O6lmLGSY0opOT1bS7r+1ut2XY8QHi+0R8crjC80ma60Eh5uX87CDUJqtkfLDRP01/VDdvenuHVX35bIebQniw9dKFNueZSbHv35FPu35bF0bV37rbXKYo4fUHd8xhebmLrWkYBOLLY6Sn+hVB3SRmSVZuoCPDgX2RHFqv7LS7ztpt9BKBnIpxCSTdmFrSYMu1wLTNcFr3vWbsZ6s6sm1TfvKPHpo5Mbdj532zm6ZyDHH33+1JrHe8mNw11zy66GAX3XSdj09DTXXHMNAGNjY6TTaXbs2JH8/c6dO5mdnd3SwT3VIiY6L1+HM6ZOIa2TT5tYGpydb1FIq9LJ1SivbTYBi2MrFDNig2hDF4ladJyAalF2GBLxvKLWem+Zd2b8eUMo5EgT4ArlX7iZiLsIpaQreyRVOoscARBKUkGqDh4CtZPOmBpeKDk73+DP7znDVMVWC40muoLqbD8kF3WQxSUyVa4gkmVQNkF6lIxJKSmkdSbLNqO9maQcIKPW+qlKi5FSmk8dnWKx4ZJLqVKR64dUWj6agHTdwdR1dvVnOTffVLpbUrWh9+WU+fip2QY3jBbZ2ZfhyMVyVF4yKbc8/Ii/pkcoXW/WUkiaoxbCuu2TSRuqvT1UXZIdZu2oBFJZMakfCiHQxJKHpJQk9ljtd0QIJQa7rZhmvu4CgpShcXGxSdpS2lheoJod1GcV0f7Txy5xfKJC2tLZvy2f8PgeulDmUrmFE4QUMxb9OYv92wq87NAILzw4lCwy7ahLXvq86WPvREPyJz/1O5xeaDFta7hmuuNZC6UkcAPF04q4KYfGSpsm7K7V9dWeeC80HG7f08dnH5mmL2ex2HQT5CNe7NKmQqvWIn+vhw5UW8rUPmvqq6IDlq5RtX1a7pLv6fKFPGPq+EFIpeky5YVcM1QACTM1F13TE/TjUrlJ3fHJR8bzG0kNrHUtSfJSTFNtecxUbZpuEKG5ISlDJ5XTWBAuhbSSSnD9kF944TU858Dglsl5tCeLD10s8+VTc8xUbSpND9sM1ixhrVcWO7S9h1MzdXb1Z3nN7bs69OOWl/5m6y62F2JJVT53/JD+nMUNo0VOzzYSVf/lJd5SxmTfYJ5Hp6pIod7jZdvbVMltOVk+fmZjvpauCeZqDsOlzKpJ9c7eLG//zCNdyU501Tk6XeMDXzm37vHuOTWfOGZcje7HjaLro4ZhiK4vZYq63vnlXP5F/VYMCYkhsC5IzIuByOTZS35m15/c/YwaStdps+5AukBxiOQS+VnlJ6KDqB6XbiQhBiRWQDEymDKUgGbaUOTNhy6W8YKw4zMaq0t9rKfGvl4Ymko0LF3Z1ZiGprha0UEsQyVg/bkUo6U0959dJAzDRIW/W3/Rqu1jahquDBFIAqlQwYypM98Iot17yImJKrHwg6ErZf6GE2D7Aaema8w3XDQhmKraNCICbd3xE50tU1d8q5YX0HAD7j+3iBmR2bOWKi3VHZ+ao/ghaVNH07RkIXV8RTL3fOURmjLUznrPQI6TM3WylhElkhqD+TTTVUf5QrbxweL5SBuKJ+T6IaGUjJbSNF01rrSpKZ6QqxLHVMRNaefR6ELZA10zlGdbIcVD42V6og7BmBOmNMzciIMmGSikMDQtkSh41eExvuuaQfJR4tguhrp8AY4XiAuPnWPwv72B3LH7CXSDL156nOPaiPqes7L5QqI6XB0v4JqhPHfdtn3Ti3ul5VFpeqR1DYlMCMug3rOGLpiq2Pzjw5e4VLG5uNBMTNiLaTMpG9Zsj3LL46GL5RWJy0ZE5BffMETK0HD8IEqy2q9BIS1pU0sSqZgYLaUqo89UI8HPIKTlhclCDqxAP3YP5AklbO/NXpbUwGrJy97BPOWmR8MN8EPVcNGTFTRdn5xlcHCkmHTh9WStLddTi5PFvYN5XnHLWFclrG4kF2ZqTiSRkl+19FdpKVN1S1cI93zDTUq/mqZ1zOVaJd47bxrh9r39DEddyZspua3WSCCEiGRBoG77pC09SWiWJ9VnZutKjqWYXkG0X/4sdNM5en7eo+Z47OjNrTmn09UWQ4U05xeaV6X7caPYVGr3p3/6p+TzasJ83+cDH/gAAwMDANRqta0f3VMw1CKuSjWmrhKQZmzn0h1Y8k2PZHHZ5EAFoOsabhAmpT8jSmqUaTN4QYDrKwQMwNQ0hYhEyWtcGvMDSRAqUnSt5TGQt6jZXiKyqUjiIuHbwdK8bja9TekCL5TkUgaWoVS0hVClyLibNf5epg2d3QNZzs41CGRktqwpDsZaN1YTkZ+erwjulia4dqTA+fkm1Zaf8LEcP1DlSQFCE9RdPyGMF9IGg/kU44vN5NwDuRSjPWmOX6oQSig33QgBWdosxef1Q2g4Pjt7M4lyuSotGcxUHSxTo9J0GCqm6MtZSRmh0lQdlQgYKqbYN1hQwq9Rs0DNUUlSf85M5B+SRFskOp7UHB/hqs6nnKUzU3Nw/FB1rGGoZFdIbC/ADQI0odF0fcWj6c8xFdkD7R3I86z9/Xz2kWlqtk/WUuKlAJWGKi/251N4vowsh0IqLZepaYdT03UODOU5MFTYkLQehpKJrz7AyA98P6mL55E9PYiPfJQX7riJ+z/9CBciwroulNvC8lvvhSHbCulVj7vegnx8osIH7z3PhcUm44stLENLusp6cxYLDZej4xWaXsDugSwV20u4fVaExgmxZBZfbnrcc2qeV9yyVErqhoj8ldPzjBTTCdLbzglrumoTMdyTYe9gjkcnqyuI0YWUTimjSuBvfMF+9g7kk/MvRz8qLY93/POjCaLWHmtZ6LTHmbk6R8crZE09OWZfzuLa4QIPXljEjzYiVuT3uWcgR2/O6roL70qj2xLWZiUXzs03ODVdT8a/dzDH+fmG+q6hTN81FDoZc++WH2MrjK3b43KN0dvnYKHuMlWxE6pCu/xMKWMm4++mczSmUKz2bC3Nh+Q7DgxQOz51VbofN4qun76dO3fyJ3/yJ8mfh4eH+eAHP7jiM98OmXgaZi29Qz9pq/hWVzvijpHNljUlRK3yGi0vRBeKMxQ/uzHB3oi0qnQBRsTnabk+zWjXKom644RSbz8+WY3KdJ1IWuw92Y5AtXdV0vbZeHyrhWVoyECyf1uBgXyKM3N15usudcdfOoeAnqzJDaNFTF1jvu4qXkkk3tl0FRTefo8FMRKoNJHiMTl+SLnps7MvpxKvaGzzdZeCEMliF7duAyw2XM7MNTiwLY9dSrN3MEcxbbIQoWG6Fpkpt/EP4zmXqNKfQHUa5tNmolnUjLoBM5aOF0oeOL/AcCFNPmNyYDDP+YUmg4V00lpv6hp+GCJRLewZS5UKG57qKhWo5C4xL4/HINVVur4q78bj0yLFdyGEQgf9kPm6Ry6l05u1GCllmG+4yYvwxGSVe07PE6KS5KYbRHIeOhqCnpylukq1kJYbcGa2TtMLSEXjjpGx9UjrxycqPPjnH+Gud/wCqVad6cExPvLW9/Lc626jsdgkRIm9iggRWu25klJwYrJThHQjj7t2SYjejEnNUdy8uKvshtEiZ+caNGyP0Z4Me/pzqjRZd6NGCmWGnMprSAlNN6A/n2K62kpkK87NNzgxWeVrZxfUOaLFTLQhbSOlDDNVh73b8rhBmPBtWtGC2Je1MHTBrTt7uWl7kS89PruCGD1ZsclYOi84uI392wodc7Ma+rHaYrrQcDk7V08Q1OUWOvG9ev/dpzk5XUu4gfGCvb03w0zVZqbuIKXkuuEiO3ozEKGsVxvh2GxsVg/toYtlHp+pQdT8omuCtCHIWeo4pq5hu0uekKsdA67M2Hp5bLaTdXlMVVpMVW2klOTbUN1YfmbfYD4ZfzcJ377BHNNVe8M5vXlHDweGChs2flyN6DoJO3fu3Jaf/L3vfS/vfe97k2PfcMMNvOUtb+GlL30pALZt80u/9Et8+MMfxnEcXvziF/PHf/zHDA0NbfpcprZ1KvXrhR+RYdIRKuBtlk3+JAgplZ7S8qSiq99FcbcUuRxszydt6gm6pQlImTpuoAjVWctgsekmRNn4dIEEQyphP9cPkrJo8jVrgxQ7Eq7oA5pkhWbXWpHSNXb0KdSiJ2ty285eao7P+EKTE5PVaDem5uPsXIPerEq6wki6IJdSSUy15amSzLLjhxE5TRNg6Ypzlk8Z/PRz9/H867ZxYbHJo1M1/uxLZ1houNQcn96s1fFSiVGQ45eqPGN3X2IibhpKiNIR6ulW6ulL3Ko4mTZ0QdpQ/nhuJLuga+qFHcqQmarDvHCwA8m5uQa6rpEyNA6OFPi1l16PrmnqBTVdp9xyo3uk7ufJ6TpN11fcuVVCRBPS3nkrUQmzoSnVek1TvoOZrMlNYyXqTkDsatdeyoqTlMGcRdX2MHXV2ahpineWMbUEnTs3X2c+spFRArVKePX64SLzDXdV0vrxiQr3v/X/8No/+x30MODstbfw/l94F0dtg7//0IPkLIPJcisi4kd2TxHTTRciEv5Vf/Z81an68QcnkFLyh+uQg3/uefv5+BEl9XBgqMBi01M2Mp4S5q3ZHg+Nl9VikjLYO6h8TYeLaS6VlZ+qUoRXrgtuEJIyFR+u0vR4+GKZD957PvHOrERzl7MM+vOWQkuyKvGzI922VxwepW77LDRcxnpUcuVGcg8jpTSvPDzKx49MdG2ps1astpguNFyOT6iSeBBKhlax0Imfh0sVhRhmIv5avGDfOFZiz2Ceiu0r9C6qULScrTc334rYDIp0fKLCxx4YT56HXPSOrbs+fhiCr+gDRrRxWu0YVyu67WRdHmEouffMQrJBjKVs2ptBHp2qcudNI11Ll/zIs3bz8SMTXc2ppoktRQW7jauLw24Q27dv53d/93c5cOAAUkr+8i//ku/7vu/jyJEj3HDDDfzCL/wCn/70p/nIRz5CqVTi9a9/Pa961au45557Nn0u09CekCQsjrUWpKsR3XKRug0p1ReiP28x33TxNzlxMZIlUElp3VmuiRUwVkpzeFcfD4+XqbZWJi6gFk1diBWJ7Hq+k6vlvBvlkRXH57U3DnHvmUUevlhmuJRBF6qNXJUDBf05C0PXWGi4zNcdvCSh1KKXhcZgQSNr6UxXnQ6Jhvg7rDTHNLYV05i64L6zC7zw4FCi2+MGqrsvaxkr+AtmZLPTcHyCtjpxIWVQypqqKzDibgUyRISROKwXKj6ZEAgBu/uzydwJUGRux8cLJKalkRKCuh3ihcrb9Gvnyvz83z3Ez7/gGl55eIwPfOUcNccjbeqUm0oLKm3p2O7aIo7rzb8fKsSMQOIK6DM13vw9B9F1sUKD6Xc+fWJFkuJEtjDVloftK52pTMogaxmcm28iUeVfKVTTTM32OX6pyr7B/AqeUVym8wuDSE3jyHe8hI/97Fspu1BZKCs5kIJgIG8xvthSJuoiRkqXOv0UMqloCMWMxePTVT5wj7tu+e8DXznHdJvWU1/OYmdflkcmq1RbSmOr7viYusbB0WKiwt+fT1FIG0pqJHJQcPyQgbziAVm6xlzg8NEHx1lsuMw3PEKi7tYICQ2qknLTU9w8X3UMhkjuOT3PnYdG+Nwj03z9/CL1qISVT6sk8FK51bWlzlpcrnjBu31PP+MLzYQPdGa2Tsv1I3Fng32D+Q4LnY89MA4otOzGkSKuHyZOAvGCfW6uzi07eujPmfTnlBTKubnGE4ZwbDa6RZFA8epsL2C4mGah6ZI2dUxdo5RR8hJqA+CyrZgma+mJB277MdbS4NqoZN5NXE6Z89x8g1Ozda4bLnBmtrGiDB6EEing9r39yXG6SfiEEF0jc1ej+3Gj+KYmYd/7vd/b8ee3v/3tvPe97+Xee+9l+/bt/Nmf/Rkf+tCHeN7zngfAX/zFX3D99ddz7733cvvtt2/qXDlTJ2MYLNr+hrpRT6XQI0RoK7lmQoATSGZr7hUld/mUQWWZwrIW/VN3Awppjdmqrc7JSoKzLpR4Zvt9Us0PVzCoVUIA//DQJPm0yULTZbJiY3s+Qgj68xaOHyYt34W0wWzVTl4IaUNPGhBAoWK5lCqtxt1+CuWJeDppkz3R4nhypsaZuTqaEEyUm4ov54XkrJVfSz+UWLrAkYrcqgyIASHYO5Cn4QS0PJ8gUKR0t62cHEpJ05PghXz93CKWoZM2NWwvjOyDQkDxsewV0KdkfKHF//jHb7C9N0PK0OnJmMzXXcxI7uFyjWtDlB1VQuCXyiD+84/NcPve/o4Xd0zYbU9S2tvfNaGEbYWAG4YLPDpdIwhl4jLg+Yrgm0+pruTJSoueqBwXR0yM7rntDv7vOz/E1C7VDX7m0iJOENKXt7C9MCpxOGqjJZc2HWFUVtWEQiEE6v7P1X3qToMd6xDPT882CELJaE8WUMnFhYUmugb9eQuBpNoKCJGcm23Qk7HojYQ/+/MW83UHUzfxAslN20sMFxWye3K6lniQxjzLvqyJlBLHCyOeZkjTVe33AzkLX4NS2uL8XIO/XWwhUV1u+wZyqkQkBJfKLf78nnPUbZ+RUmZdS53Vno/VSrO9WYuMpTNRtpmuKoupdg5X+3wdnaggQD0PmsbegTxNp5Is3KrJxeUbl6ps783y+uftJ58ynlCE43Kim6Qi/i6M9mRxg5DGhOpGzVoGuibImjoVX3lk9mRMzs83O44BakOzWlkcWLdkvpnYbEITc+J2R3I0sdF7XAYfyKewDI3hUifXcqOE73KRuScqvqlJWHsEQcBHPvIRGo0Gd9xxBw888ACe5/GCF7wg+cx1113Hzp07+epXv7pmEuY4Do7jJH+uVpVQn4jaxmFlR9NTOeIERWxhFhYf80oOF0qSBCxOeg1decjlUgZTFZu/+9oEoZRkLOVAHZcx45AhuFf5TolorJMVm2f0ZblmW54Tl6o8Ol1VyagfokWoQSPqPPTCpUmfbzhUWi4ZyyBtqtJp3jLUbrzlqSRMaFiGRk/WTAQqg1ByZtbl9//9JOWWh+OFLDQ86q4iC+dSbQuaVJ1uGVP53y02XcZ60tQjexTT0LhhpEDd9qmHSuMnVptXJbKlMq8dNQcYmurYjU6AJqB9rYwfJ6WOr7hGj0/X2NGb4dycT7nlJZphoBLmbjY1yx/TQC49G3GH4599+Syfe2SmYwEIQrmCtNyXs+jJ9DBVdWi6PtMVh6FSiksRqVfXVOLhhUEigTFX9zA0mK07FDOm4sZMTsJrXoP367+D4wkyJZ2p3dcCULO9xLZIlUl8cimD64aLHJ0odyS6WpSAGbqW2BwFUWk4XI8cbKomBKRktuawrWBxdq4eoXxW4rOYS6nEZq7mcGa2zm3Z3jZZCJ9K02OwkGZbPkXDCdoEekm8MxXKqlFIm3iBSxBKbF+VfpHKqzObMrhmqEBPxuA/HlOyQ0/b1ZNIquRTBvvTeY5fqrDYcmk6flIeb4+1WvvX6sy8VG7Rm7N40cFttLyAXX1ZejLmEscgnq8IyUCQzGlvlJTHC3csULpnIM9PPXfvN32h3Uysp8h/ZrbOg+cXqTS9xHJouRaXpqkN8JtedA2Hd/Z2HCPmKa5WFn9ksgpSbfjW0+e6WtHOievNWdyW7e1AV4WEsu2t2kixUcK31Q0IWxnf9CTs2LFj3HHHHdi2TT6f5xOf+AQHDx7koYcewrIsenp6Oj4/NDTE1NTUmsd7xzvewVvf+tYVP5+ruxgpI1kELldL68kaV0P0dasOGc+35yu1bQkg1JddjxAkP1wJbz0R5eP4Gi1dcasqts9MzUaJaiidnULWoukGhBFckzENpFQvPD96adm+h0AlSp4uSZt6JBKrNOJ29uXY3ptJpBfOzNa5uKikBa4bKpApGaQMwb1nF5ipOfQGSqW86QZJg4DtqQVwtmbzb4+0VAksOr/jK32qeIGSgsizDUI0LKHo+hKlQF+NjqnU4Om42fF7KeZw+aH6TddXGk8ZS08aFmLSfbffp/jzsZhrzKXSiQSDNUXq789bHST6u24dW0Fajonb1ZaflNAOpHKkTZ0LC02kVBIdWtQgYkR6bI4fEHhKsHX3+Cl4+ffC+Dij0/O4P/2HzNZUl2iMoMW2RYmKuK5x3UiBhabDVNXGjdBDU1dirfmUKg/25UyqLZd9gwVm1iAHLzZcHp2qUm6qhH2qqkj5lahzzwskph5LdaTY3Z9VPpRVm6mqzWA+hesrtf9CxqSUNTnXhnzcOFbkw/dfTGQ7YvullKHTl7MoNz1cP0RoSwLB14+UIhsfDzcIsT0lb7LcA3BPX46FhpvIHXTTCddNZ+bj03X6siaGpq1IwEAldxlLiQS3z2m8cCv9PKURdtdtoxwcKXb3cD6JYnlS0Y4clpseFxebVG2P64aLK7S4vEDiBQGHd3aKBK8791aOz0cJ93dfO5hYCa2l1XYlsVa5czVOXIyuSik5NVO/Ij7bN6PU2E1805Owa6+9loceeohKpcJHP/pRXvva13L33Xdf9vF+/dd/nV/8xV9M/lytVtmxY0dS8hCAoYP3RBLEvoVirU7EuEsuCGEhIkuDKi84fqCQm3W4XlczDF01Cxi64ORMPbKoEWiaiJ4TJeVwqaJKp8WUQV0uicEmqBHQ9EL0QLJ/ME/V8ZivuzTdgLNzDXIp9XU7M1Pj3EITJFRbHo/N1BjIp5irO4pYbgfMNzzmG0u2TqauErAdvVken6nj+gqxQCoj5FBKDE1HE4JS1lQlOk0ZUTecAD0i5wZhSD5t4PkSYaljLzY9ZKRLktw/uXTPwnDp+tKGpgy/WVL5j4no3UTyueh3lU6a6ijWBAzkLbxAvajz2aUF4N4zC+wbzHF8osr+VL6DE5a1dLxA0pu2qNjKP3OsJ8Ns3aHS9NA0ET17S6MUwG3Hv4L4+bdAvc7s9j387g/+FpNVhzNzTYaLafYM5hPbIi+SOYi9/4QQXD9SwvGUGbRl6AgkWUslYIamJVY4r33WLj6xCjl4seFybFxxzQaLafYP5HjwwiLj5RahBNNVMgMIKKbMpCx3aHtJmWiXW5yYrOL4ISldYyTqmv2O/QPcsqMn6Yb8xJGJBMWKvQxBJWL5lEqyShkTIRRiUMqo0t98Q6FcQSgxMkpfLu5UazoVrh8p0pu1yKWMrjvhutLCqjpsK6a5ML+OblOEyByb6JzThaaXuApkLIM/+9I57n587op8NL/ZsRw5HC6mqdseszWHY36Zm7b30JuzKGbMdZOV9ea+7gaE0caq7gQUM0uqyd1ota0VyxOuhuPz8ch/cbVy55V0Vj5Vo6skLC7pdRPF4uZ2HZZlsX//fgBuu+02vva1r/H7v//7vPrVr8Z1XcrlcgcaNj09zfDw8JrHS6VSpFKpFT8PpOqYAwi/nYCtG/Ezfjlo4Vpcu5Alzaj2REsSd/OphRIhn3CunuNJhKLiUG0pyYZASmxPSSmEocRHJGhjueUhkZiRmGYYQX3xsGMu276BPLZbpeX5tFyfRyar2F5A3fYQqHKaZSrNrAvzSgE+a5nYXtjhImDqInnxzDWUJ52lQzFjKpV21UmheGgsSYBIKRLeV6yp1t6lmk8bVJpuRylb4WVLIcPOn+u6spqKf0VIuSYf0YiS6vjvBApx9MOQuKcwTvA0FJJh6DqhDBNpDiEEw8U0RycqvOj6IU5O13l8qspi01NCoqZO0w3ImAbXDhfoyZqcnK7hBaqxIG1qNL0A11+6Bk3Azxz9ND/3mfcjZMgjB5/G7/7o71AcGeJmL+DouFLVr9g+h8aKpE2NuZpDKSonxwtYb9akP2/RH3FVJiutRA5jpJTm8M7ehHOiLScHmxqPTilxzVLWVGry0fzqmrLYUigYSSIWz2Pa0BkppVUDgBAMlzIMRHy1C/NN/sWe4pqhQge60O6duWRDpEj8scH0QD5FsQ15mKq0ks5aKxLQNfUlX8hTM3W292Z4ze27uPfs/IZ8m+W+jm1kyiRiHtl37B/gX+y1dZvuuk3xlybKS3Nq+wFHxys0bI98yuDQWImUqT9h5bSrEWuhV9cMF3GDMpWmx2NTNZ6+u1chpOskK+vpkHkRvxFBxBHtjPX4fWvFWh6Y+ZShPDDXKHc+mflbVyO6SsJ6enq6VsQPgivLcMIwxHEcbrvtNkzT5HOf+xx33XUXAI899hgXLlzgjjvuuKJzfDtWj/gOK5Lx5R1jPZPseLGPP6J4KAoBk5Ei6GrctmjjfkXJ2XqUOQnM1x0uLLSiko1OIW3i+g5+KBXSEyqT6EDKqCyjypfxXPlBgOMvoQwzNYd9gzn2DOQ4v9Ck2nKZLDfRNY3erInth2Sj8rjvK/6K8JTbAKjES3G51AI4mDcpt3ylmJ0ysEyDuuPjByqpklJ1ALuqZS8RVFV/VmWbIEoUF5vKQFvXBAjlO9A+7+33Xi6bJ4FE13VlsRTNzVqhCYFmEAm7KiTlhrEi37hUpeH4aGjoETM/bej8/+y9eZxkaVnl/33vFntErlVZmbV39Va9Nw3NJjgsijT6E9BxAVlEGWYcYETcmVEEUcZBQFABEWSZQcUGVEBZmh16o5eq3qq7qrKW3LfI2CPu+v7+eO+9GZEZmRlZndXdYD2fD1qdmRFxt7jvuec5zzmFpEGlpdpuucRKy3F8oaa8fkKAU2l5LNQdLE2161aLt0f70kyVllQbd9U2mdLnf371b/iluz4PwPd+9Kd570t/nQO71D0umzS4dm8/JxeqzFZsjk6W2VVIEkjIJnQsXcMPZAwI2kXf5aZLpel2deJfvbicWVJu9sP5JJfszNGfNrn77DKOpwLFvcBX50EIrNDG4/Rijb5UHzPlJo4fkDJ1rtmzcm/O6lrX1lHELkTZmZWWq2xNPHU8I7Zz32BaTel6fph5qAC6EAJjVZxUytRZqLW4eGeGHfkEL7tReUTWbX9dE9r2XMf5SouBjBWb0EYV6ciu3dPHJT34NkXH9PhcVVmluD6jfSkODq+873a30x7L2ijC6sqxPvVA0lRGtoW0uSFY2ciHzDS0eAGILC3aa6vRPavZu2Re4/unixRrTviAEZDVjK7tzieyfut8VE9H9Otf/3r879OnT/M7v/M7vOpVr4rB0K233srHPvYx/uRP/mRLH/67v/u7/MRP/AR79+6lWq3y//7f/+Mb3/gGX/rSlygUCrzmNa/hTW96EwMDA+TzeV7/+tfztKc9bcuTkT/stRXQtJqdWF16qMnZbs2cjP/PSilTz7DlBWs+N8IFlqG8bhqOd86TkRvtjggnx84s1Ulbym8nYWgkTJ0ESlcUxe3omoYZ+tjEnmTh9iv9lNoHv+XyreOLJAw9tALwcYOoFa68lspNl2ZoOAor2ZiaUABGCEEiWvTdgKbr0XIlvu9g6FqcV6gLgWloyCDABWQglSg9UJ8lVl0fAkVCLNcdLFNpmBT4CzY8vrpQ2sqBjKXMQZ0Vrwst/P8xsxWCvFQoDLc9nx25BHv702QTBvdOlGiF+92ftqjaLssNl4xlcGAoA0JQrNncO1lS+X+aYG9/ClPXOTFfRQMu3pFhOJ8klzCQqNau6wfMVlosVO2u5zwIJBcXJwmE4P0/9hq++VOvZLSvM9KkP2NxQ3qA2UqL5YbLrz/vYvozFp8N2yjn+nTevrjcfWaZj916hstGchi6RqWpWtetsDWfMDRsN0AGEhsQgc9c1eaB6QqFtIkf6Iz29RbzszpUeroUMnYho7Z3IM34Qo17J8qxBkwlV4SGypqgWFfgMvJwqrZcXC/gzFKDP/nisY620oYRSWGu41LNZqlm07B9rhwr0J+xzsm3KTqm3z6+wLu/epz+tKkmQ9uOy6Npp61X7W22TEIxS+sB0EdTG7FXAxmLG/YPcGy2yiueto/r9/Vv+Nkb+ZBlLT22WckmOj9rq/5i3di7StOl6aoJ40ie0Z9WQxfdzs/50G9th/XG+aieQNizn/3s+N9/9Ed/xJ//+Z/zC7/wC/HPfuqnfoqrrrqKD33oQ7zyla/s+cPn5+d5xStewczMDIVCgauvvpovfelLPP/5zwfg3e9+N5qm8dKXvrTDrPVCddZWANNGAEy1CnvX92y12ttSKUtDExp+GLzs+X5Hm1JnxfvMlyC97gBhI4ar5+0K3yAKEa6F8UiWrgwg66FfkUCgEU4CstJN8UIxbPs2BQGhWa9qvcVTdKG42/MDiu0RP237EYErtW1qpxdqdnx8VOdAxnmbuiHC1wuMkNlQ+icZTzh27G/4eb5U+aZP3teHGwTMlFrMVVs0nc4pVS1ciLUQoJcbLglTQ9c0kAGGrkTeO7IJHp6rIoEDQxl25hMEUjBbbqjBGF1Qs9XE36U7cxybVTYS6YSOE6ioqytCD6xizeb2U0XqttK7JUyd8cU6B4eyHBzOMFlqMl9zODCcVTqgaCouUPmR67Gmnm7w2p/6HZ4x9zB3XvE0dvnrTC0KwXAuSd326UtbSuQ+Wuj5Jr7eDb99cfnnI9O03ICsruF4Pg3HQwYSy9RDZnOlfet4AUEg2T+Y4bmX7+D/3X42jPOxO7L1oHvrqB0ArmbsarbHO774EF65GWvANE2lLESh7a4fKPYy1AA6vsonHe1LMZxLrjtFt16uY8PxsT2fuuNxcqHGZVqOmZAd26pvk6YJ+tIWlq4xnOsEYFGdSzttvWpvsxVrDsuheXF/2mIgY52zpUO32sxFv+UG9KVNrt/X39Nx2khzdXA4AxJOLtQflR6rG3vn+kHcZUhbgnLTpRrm3cL2np9utVlaxeNZWxbm33rrrXzgAx9Y8/MbbriBX/mVX9nSe/3t3/7thr9PJpP85V/+JX/5l3+5pff9QSg9ZCceLYDYKghp/9tur93q9uginI7r8e8F6kmrL20pJiyQLNQcpAyjdUQEQtpASRDgrPMB2wUYY7AStl8kqp1Xs10Shlqk8ynli9UK3Wvd0DvMDmN4dLESTaUJSBqClqeaiopRUJ/TcgPlFN+GFLrth4A4uxJWrhlonyxVNzhDV6LrpKlj6eomt96xiXRRap/V8X/9cw7xvq8dV61WoSxdDE2QMHSCIKDhBniuYtWELtg7kMYydM4s1ZUFQtIknTR47uU7w5anQ7WlWhhPu2iYa/aoEPa1QcEDjBRSzJab/NPdUyzVHZquz7GZCjXbiycbo4imul3iwFCWXEL5tU0s1TldbIYCfQPpSfygPSoJrpl+mOecvJP3/MjLFWOWzPLVgzew09TRtd5jYnp9Ou/lhr+alXB8td2GrvzFXD8gaeoMZSzc0FTV8QJ+5oYxbDdgqtzk1FK9Y2Ixyghcr3XUbfuDQPK2LzyI50sGMxZSQsbS0TRBqe7QcJVFi6Grc3xoOM3xhTot12esL8XOXJJaGNm1M59grmJ3tP26LcjtHm/FusNcpUUhtXErbbPaauTPubIi7axe2jJYbjq0wocpIVVY9rlo0LYyMRiVlJLpUoP9Q1nKTZfxhdqm+7GZ5grWBqxv9bx0Y+/MUOsYDT01Q0PZqLba7txKbRZW/3hrBbe8x3v27OFv/uZv+N//+393/PzDH/4we/bs2bYN+2GvyKrg0Vb7O/Tq1QQr+q+tvKZbdXtttMiv/l0UDB614jRNcN1uFVHjBQFamPyog9IyhdVLC9IIP+/RHtEfOTTIj162k7+45ThTy00Shmr7DWaUAzlScufpotpmGeB7QWiz0LmdUirD2wg06YYWuv+rKbtetnM1SI7afIGMJhPVDwOpWpmWrsLjayGbYWrgtrOLIaNl6JHoXd38ZsstfKm0VWlL58RCXbX4pJpkDQIVMRWFdre8gPHFBhfvyPKiq0djINXuZ9RtQfnJq0fXXfiu2dPHWH+am++a5EsPzlK1lU4taSpPK01oIWC3KdYdEoZGywv4/pllEqbOYMbCl6olJFAxZY4PP3HsO7z7C39O0nM40z/KZ65Uxs+qrRZwcCjD2eIGU3hbHInv9Ya/mpVIGhqaplhV3yc2BqZNj5UydRZrDl96YC40XpX0p1X4eRzVM6oimXrd7ggk5ZIGk8tNckkz1gTl0xZOzabp+vSH+agVW8UY5RIGQ7kEd08sx/5UKjxe456zy3Fbab12WmSrUG66nFlq8MvPPMALrhh5TIKjz5UVaWf1LhrOcM9ECccL6EtbCAHlpstcxea6PQVOLNR71qBttj3rsVcnF6rUbI9AsqYlvNF+bKa5erR6rG6AOJc0yKcMinWHlKkrqxfj/Mcp9WKJ8nhrBbcMwt797nfz0pe+lH/7t3/jxhtvBOCOO+7g+PHj3Hzzzdu+gT+s1c5wbFdt5S2jP10PgD2aKCQZ/s9qAwHRz0AxYUII8kmL+apN0/UAgR96OglNi807ewWInlS5jNFxjdptWykB1O2Ai3dkGcxYjORTmLpY0+55+kVDnFyokUnonFyoU2q4eGFr0gyf9qTsBGUpQwVkR5qx9oqAVTS8EPlzdTv+KgtOWUT4viSQqr+cMtWgQCTWz1g6CIHmBWFLNGw3S4keTksqR3/l0XZsusJSw2EobZEMJ+EqLQXAzHDcMgByKZOUrxaeg8MZfv+Fl2MYa4W83Rijdiam25P/lWMFkqbG0akyu/IpzhTrGJpqYbZclS8qJfhC7V/a0lVmpeuz3FBRSn0pM45Q+q+3fZrf/ubHAPjaRU/mlkufhh5OjhqhFuX5V+zks3dPxUBEFwJfKnParY7Eb/WGf+VYgf/+nEP83fdO8+B0mbiprAlySQNT12I3e0NTE5ffO7nEct3huj19PDBdodJSRrK5cDDgnokS1+wubBpNE23vsdkqSzWHvpTSBbaHPScMBW6LdQdPShw3YLnukrIM9g+lObvUoBUykJGPWrWlBg7uPrsMwFSpgS9lV0NXJfjXGMxaXDaSe1SL4Gattv60yY0HBvjcvVPcfJeK/BntS2+JFWln9Wq2H5v4Ruc5balzUHP8njVovYL21eyV6wfUbJUbubs/He9rr+zORqzuo9VjdQPEK6bCJZbrDsO5JGlzbZzSdgOh9nMGK7rR6J6+3VrBc6ktg7AXvvCFPPLII/z1X/81x44dA1T80Ote97oLTNjjXNsJ6x6tXVcgwZVrmRwjZIySpnKQX6zZsSDdCMOtI7F5wtKxXX/FoX6TclbpsrZaCVNjptLi2GyVStNjZ07HCnPw2nUm6YRBLmnyuy+8jOWGzW/841EcL6A/YyGA+aqKNYraqgCVlouuCSxdwwnBRLS1lq7FeZCBJGZIRdt+SCCTMMgmVCSL2t+A5brSo+wbSJNNGhyfq6Mn1aCBoSnz0KWaoywOpAKrQaDMOWVA6IUW8NWHZpku28xXWnhh+0u1ObU4VUAIxVAO5xKM9SU5uVDnuycX+ZGLh7d089zoyT+apNw3lGah1mK23ArtNRTYjJjbUtNjOJtQQxJAIWly5Vge1w9YLlf5g399P//5vq8C8JEn/RR/8rxfQWo6QaAcxfMpg/60xWghxU1X7+KD3zzJI3PVuF2yuz/FLz1t35baFL14YLXf8O+fKvPZe6ZYqNiYmkYmoeN6yufN8SS1loeuqYgmQxMcHM7E+ZKRU/p4h1O6wNAFP/MkdR9eL5rmyrFCfA7umywzudxgpizCnFEt9rMD0DWVR7hvMIPt+fzCk/fyr0dnmFxWAKyQMuOr1NRVbNdSzeED3zjJrkIK21O2CRPFBtft6WMgu2IftN0MyHqttrG+FBL45G1neGS+StNRmYvOBhN63a7ndlav1HA6zG+BjjZbIW1tqnHaCmhfren75K1n0DXRM7vzWIrS1wPEVphtqWuCvlWmwufLfiI6Zy3T5+G5Sgdrm08Z6rp2z58WrZc6pwbsnj17eMc73rHd23KhfghrdUvNl+B4qh334Ewl/htfKud0J2zvpUwtNgM9F3i5mfatWyUNjYbt8vHvnebEQo3xhRpJSyebMNhVSKqw5IQR6xcKYexN5N5thQJrP1ADEO33uEAqnzSQ5BIGXhDQcFZamUIo2wspla2Epqmg6EpD6XICCbbr4/mShqEErQJ1w3vK/gF29ye5/dQyddslQKIJTeUXipVopvZjEwUUyHAhGSmk8aVgqWaH7vx+HMUTAE4g4/2pND2WamVsT/Lurz7CNx5Z6FngutmTf7szfrS4Ky80VhaN0JtMaIoZTGiCluszU25Rnpzlo5/6I55y5ii+0PjD572WT1z/ovgkaAJ2ZJMc2pFFArPlFp+64ywLVVt51YXHdKFq86k7znJROF0YBJLxReXmDpJLduY4OJTtWMg2mmQDJT6eLfscm61y70Spg5HZ1ZeiP5Pg6KTyfrp4p/I88wOoNB0GswmeeWiIT90x0RHV0x7tommCpZpD3fE2PMY3Xb2LLxydiacVS02HpZpDgKRYtzE0SJgGUiowPpCx8PyA6/cO8NLrd3PHqSJHJksqUqjtcUdKSSXUIs5VbfYMpNnVl1Hs5mSZ208VuXp3HyOFZM+C762Ch9WttkhruFx3VHtXqkifYsOhPlXmyjGVDtDLBGV7m61d4xTZ0sSJCobWk8Zpq6A9qplyizPFBrvyyZ7B/mMtSl8PED/14BA/fd3oY5bjmUsauH7A0ckyfhB0sLbFukO56TFaSJ4XLVqvdU6f/O1vf5sPfvCDjI+P8+lPf5qxsTE+8YlPcODAAZ75zGdu9zb+hy5D2/7A6seqVgOfqN2ma6rVGITeW3FrNGhjXPyAhNDYjlnNXvVXLTfgxHw9tsqQKCfppZrDVKlJPmkykFGamaceHGL/YIb7psr0pyyWcSg3HWxPLfQ+Ky3GqBXrhz9Imhq2JzD10BfPl1iGSg6IjlEhZbK3P83RhqsMM0OgJgS0HD8eBhjOJfnJa3ZxZKJMreVih2ygJtpMWjc4HhJIWjo78wkSofGp7fn4uqTpqunO6Jxomkbd9qi2lGBe10VHtNBmLZBenvwjZ/zvn17G8XwGMhY1OwpEV1eDaWgMpMw4j3G57mB7PuWmy9PGH+SGM/dRt1L82k/9Nt+46Ib4801dcMVonst25jixUOeqsQKfPzrNsZkqmpAkzZVYM9v1ODZT5W++Nc5rfuQAH/72ON8/s0wtfGLOJg1u2DfAa5+1kkuYSej4UjJTasa5lO2L5Gy5xVS5yd9+Z5zJ5eYaRmasX5m43jNRYrqsYqkSpsY1e5Tpa9rS+cw9U53ic7ES7VJreSQMje+cWFz3GB+fq/LBb46TtvT494eGc7Scsgp6t30Wazb9aZWR2u78/5LrxzAMjWdePMQtx+Zpun748BBlq7q4gcTS1WusEKiM9adJmTr3TJQ4sVCl6Sj/ttFCkpuu3rVurNC5goeonRYEks/dqwDYoR1ZlusOgYSMqZM0dSotl9OLNfrT/eEQTMBSGCPVDRi0t9kuGs7EGidlfkscLZUNdZWbMXy9gPaITWs/Fks1h8nlBqWmw6HhXIfPWrfXPV6i9CeC39fe/rSawm257MgnEEJJJ0xdpaDMV2ycjMXe/vRjtk2ra8sg7Oabb+aXfumXeNnLXsbdd98dh2WXy2Xe8Y538MUvfnHbN/I/cnnBo9NnPREqWthU7p5yce82GepEAesSAl+CDNjq97XdENbU1A1ZOcSHWq0urzHCiYFWiHb1EGB4IaCRKCuHeqg/Sls61+xR4upc0mAgdE0/W6xTLbVUNqLonPCMW4tChTrvzCcYzCSYWK4zW7HjgGkhFLC6fFeOk/M1AimxdIFp6iBV7JAUAs8LSFkGP3vDGF+8b5aJYp2l+or7fSCj9mx3CBqdE00oNqxm+51Tazg4YTsylzRwPeXIL4QgqQucUPc2XWpwcCjLRLHBR797ine+5OquGjHo7cn/xEKNl9+4j4dmqpxeatCfNulLWzi+rVg7XTCYSWAaGrWWRy5hMlNW+Y2mDndc8mT+14veyD07D3F85wGy4WRrQlc6w/60xYmFOgMZi6ccHOBtn38QPwR3pYYbA1fLUG3x751c5NRijbPFJloIjkHZmXzrkQXmqy3ectNhAG6+a5KZclOlLiR08ikznlgs1myOTpZIGBr5DRiZgWyCp+wfYKbS4lXP2MdlI/l44QoCuan4fN9gOm5ZCoj9vMywrZ5PWZxcXOa6NpPX9vDr+TAMveb4pE19jfM/qCGKA0MZSg2HphustHeSJoRAMJDEwmuAgWyCG/cPcHKxTiapWJCZcotP3n6W204V1wCr7QAPq6+3KIJKsVdaqOHymFpuMldtUaw7OF7A337nNHeeXl6zTe1ttpMLdUbyKWq2RynMw02b6mEmur420zj1OtE5W27FDy+7CimyCYP5akv5yjnl2Gdt9esyCZ3/e/vZx1WU/njnNZ5dboTxXEasn4yYsIajLIksQ+PscuMHRxP29re/nQ984AO84hWv4O///u/jnz/jGc/g7W9/+7Zu3IVStZ0ArF1jtNXXbfU1KVO1w9wwggUkjrcFsX0gVS5g5B6+QcVTnm3Ax5dq0jJlKqF50/XW+KQZWtgGXfUBfpeNdLyAvQNp0pbOkYkyP3n1aKcIdUeWYt3Bdn2EppHUFLsVhNorQwPT0Ll0JMeeAWW0OZixmC43edE1ozhuwLG5CgtVm7mKzXLTZSSfYqSQYKbcotJ08YRGShOkrQSDGZPTCw2WQl2d50tMTXR4lq0uQae5r66J0IzWB8yOqbWHZ6pkUgazpWY48KDMaiPdVNYyKDZcShMlkobOTGWe3/rMUX75GQe6LpC9PvmPFJL88jMO8NbPP6DYFpTeRgoYzCjGzvUDdE2BjBc98A2O7j3M6ewwnh9w87U/jqUL0pqgkDRJGBrllkvdVgL+60NQcbZYp9xwlR5Pqs8QWhjy7YZJA7aH7QVYhtYW9wMDhkap4XBqoc6HvnWSpqPe+9BwlpPzyrl9sWpTs1V81cNzVQCu3dMHsD4jI1QIu+MFNOzO9JHNxOcDGStuWdpudw1MX8pSesFVIDhqbZbCacWffdIY1+7tX+P8D4oRunZvH0cnSuwsJNV1F7bi750oYXs+Q9lknHoQVcsLmC43kVJyaEdujZi8PXngk7eeedTgYfX1pkCoYq8ibZLt+Tw8W8WXSqe5M59kVz65Lthb3WaLWHCAvrSFhJ41Tr1MdF41VuDW8U5mU0qpgH3doel6Hcan7To74JzanT9MVW15mLrSnZ0u1qk0PZrh92Ewk2DvQFp5lv0gacIefvhhnvWsZ635eaFQoFQqbcc2XajzWOfa3DuX16npOw1dBLh0CtV7/UwZMkGuJ9koECtimjpabVIBQF8GWOu0df0AVofbRGzS6vcTwFhfkoFMsuPmFS2MU8sNJbqH0MrBj73HIqE+BBTSZnwznam0uGZPP6982v6Y7Ygc1T9+6xl25hOcKTZouUojFdHoh3Zkma3YnFys05+2OL3UUJOVdLKBq0vXBAlDDQI4XhAau64aagin1sYGUjz/8h184FvjuL7EC8AUyjg1YahJTCmVZittaTScgIemK/zFLce7MhVb8XK6amwnt40vceeZIqP5JE03YHyxTstT1hVN1yepa/z85/+G1337U0zuOsAvvubdOMkMlqlj6gqM2l7AlWN5Gk7AcsPm1593cTxIcHqpruKiINTPifj8m0K1pz2prsH2KbjoasgklG3DbeNFduQS8f5KCWeKdeq2p7L95ioYmsZluwsMZBNUwyGN1YxMteXhBTKMonH5+K1n+Ocj0x0tuHYQcHyuyuklD12Di4ZzvPLp+8gmDD5+6xmOTpbwwu1u18AUa7ZqvXWzx2mbVnz2pTs2nJ6Lrvn5ih2DwUbYJk+bepx6EJeUHJ+vEgSSA8OZ+PxHwOroZInfufk+BjMWpabLxHKDvpTJUDbRwfJsBTysud6E4OBQloZdptxU0U0tz8fXlAVL0tI5OJwllzLJJo11wd7qNtu5Oub3AqqfenCAT95+tgNIrUwalmk6Hkt1m1LTxdC0Dp1d3fZ7bnf+sFZ0DSRMnSftXdFPRsxwzfZpef7jqgnr3jfYoEZGRjhx4sSan3/nO9/h4MGD27JRF+qHo1peQDM0mRRwTkguEqW346du9zdPrgVMQoRxSIGk7nb/8NU/VRrblQ9o/4IIIRAopqLlKIH1PWeXWarZ/PgVO9nVl4xDslVwthLrJ009NqF1vIDlmkOt5XFivrauQ/j1+/rRNcHRqQrFuoNl6PSlTTIJg6rtcXSqgu36oQN/2MpEgT1NCLrEvwEKMKkgZjX16Pnq9Za+ss/R0/TFO3JctbuPsUKKq3cXKKRUa3AwY4YMn9L/EL6PZWgcGM5QrDt85u4pglWIO3rynwnZkI7z0PaZ0SL20iftZrSQothw6UtbHN6VJ5swKDVd9JbNH336T3jdtz8FwH3XPwsjm8WT0cSaMpuN8jMXai329qcZ60/FnxlZpYQnt/NAhYa90Xk3NBEPTbRcH8cLFPvqS+q2R3/aYrmhrBmOz9dohq3bQsokYxkMZi1GwjH5iJFpOB6KXVTbuVR3uH+qxELVpj+lbBv6Usr88y9uOc79U2VAgYCXXDfGzlwy1FfCfKXFZ++ZotpUweY12yMf2lxE5zufNEJRuaDacjc9BxtVBAav2l2g1HQ4vVjH9X1296cZyFr0pTvtKCotl6W6GjCIQsKjWm64LNUV8DJ0wc58Ag21jfdPleMJ4KhSlt7TRFu36y1qvfanTcUs+0pYP5ixuHJUtYSjc94O9lZX9D29Zk8fh3bkOLQjxzV7+uLInV6r23EsNZXP2xueezEjhZQCUtZan7UrxwoMZhM4XsCZYoNSw2HfYJqfuHKEtKWTSehtQy5r63wapD5RquMaAHJJk4FsglzSRELP1/v5rC0f/V/91V/ljW98Ix/5yEcQQjA9Pc2tt97Km9/8Zv7n//yf52MbL9QPcLV3xs6VhXNCuwVTE9ihvUN7S211qQk3ZcHQ7py+UXW0adtf0EaH6RoU0mYssH7/146zVHOw/YCEoVFImliGhhc7aBOzTZpQiQBBAA/P1zD0jUezexGU5kLdkR+AZQhaXujCL1ZteHtFurLwV9F6EZl/rp5aS1s6SUs51g9mVQvE0ASOp2Jrok9wfGVdkU+a6ELrylT08uTfDkhXt35sN2BPf5pn90ne8P7fZ/DoXXiazjt+6o3865N+gsCJcg8l+ZSppjw9nztOFRXzGMBb//XBmFkqpCw1pdVUuqko8knKlSB1QxOh6NqnGYKvSDemayvMhC8l90+VY+d+Q9Nj3UnV9uKJufUYGU2DybA9WkiZXDqSQ9e1rqHcD85UeN/XTlCsO+xZ5RH1yJyKgsokzVgDE4G8huORS1kUUgYJU+/pHMD6E4rdhNd12+N9Xzux5r3HF+oYotNSQX3VJKcWa/hBQEJXXneGrmEZGpYh1uQMQu/gYb3rzdQ1CimLtKV0QpeN5CikTFa37B4rpmgjAfv4Qm1d9nggY2FqOfIpkx+7fAcPz6ug+0/dMcFn7pniouEM/WmL6VJz28yIf9Bqq/ecx6O2DMJ+53d+hyAIeO5zn0uj0eBZz3oWiUSCN7/5zbz+9a8/H9t4oR6HOhcN2HaWHrbWoglDTcCuQpLlpkvDUfYJupRhjuLaKdLIiFRNWq5qN7J23yQrrJds+//teCyXMFmq2TwwXVVB6L7El5K0qWN7PvOVVrhtK+kAsu2NEoYgbensyFn8yo8c2NBfqxdBaTZhsDOX4PRSnXzSpO74QBBbS6wugWIGW+5KNmS0z8fmKszXbAYyVgc4bBeDHxjMULd9qi0PPwjQNS2200hZOvuHsrGmab3Fa7PYlNWAdPUCNXDmBLtf8SuIU6eop3O8+ef/F7fvu5pCQscPAabrB5SbDnXbj33BsgkD21f6shU7jN3sG0hzttig7ngx8IoOViFlxd5oxbqtGKU23VjLVa3RQtJgpqSik9p1Y6auAsztMPdxuqRSBmrhpOeBoQyzlSazFVu1xlyf4VySS0dy67bgxhdrsUh7Zz4R2r0o25NDO7IcmShRarhctbvA2WKjQxM2mLHYO5ih3HD5met3c3SqvOk5uH+qzD/dNcF9UxWajk/K0rlqLM/PPGlP7Py/uiXY7fweHs2TNHWSRiejU215VJoelr4i5s8mOt3V23MGtwoeNrrebjzQzydvP4uhaWsAGDy2TNF6kVKBlBRSJqcWa1wxmkfTVihuKSWzlRa7+1J8/6wyQW0HGfdPVcKEDPGEBSCPRW31nvNY15avLiEEv//7v89v/uZvcuLECWq1GocPHyab/eEU9v1HrdWtvQi5PFpg1iu4i3BTBMD8QHK62OgkqYQS/wcShrIWU6VWpwwFGfthtdd6n28ZSnTud6HYBIrtuetMiUAqawTpBbHHUNLUmCo14zcPwte0g0nHkxhCZfH1pa1NRcW9CEqfefEQVduj6appNtv1Qx2c7DCs1cTKMY32ztAEmlCDC2lLgbqX37iP5x/e2dEejZ4kl+oOFw1nld7J8Wi5Abom2JlLctmufNzK2Wzx2uroescC9erfgVOnKI7s4Q//yzsJDl5MarpC1VZAtT9jsVC1adgKAKYsneGsRYCg1HBpOQFXhNE+t40vce2ePmzPx/VNlhtuPHTQn1ZWJId2ZLl9fIm67aNroXWJVEMjSkumk7QMluoOfenVbIqy+RjKJMgmTbxA8rWHF1Q4e6gV1ARcNJThP126g1uOzXNZyICtrgjYPjJX496zJZYbDpPLzQ7R/cGhLCOFJDOVFn4A1+/tp9ryOhzC67ZPy/S5Zk8f/9+1Yxueg/unyrz98w8yvliPA+UBJooNjs1UecuLDnc9j93O797+NH/8bw+tEaGrYOcAV8oVMX+75slVgy0tx0cgzgk8rHe9Adx2qthT1NFjXR0h4XWH2XKL+arNZSP5Dp+1/rRqqy1vMMQw1pdiIGNxYuGJB0DWq+02l30i2GWsV1sGYb/8y7/Me9/7XnK5HIcPH45/Xq/Xef3rX89HPvKRbd3AC/XEqHONuYy1Wd10wPQGyCIQ022bbE8tMHXHX/M5W02GCgIVh1NteWsmUjWhmDVDFyRNQ8UDaZKG4yvtkZQIBJq2Avwka6OTlNu7G4t517vZ9CoovWZPHxfvzHHz3ZPce7aE6wdUQgYqFQroG45Hw+3cI0sXpCyDbEIxNbom8PyA208Vef7hnR1/Gz1JRoxIylALupRwxa48u8NJT3VOelu8ehld73psPv5xar/2Bn7/2b+KsWMHA6Fz/KnYOT6IrUiyoSWDrmvoKHuJctPl9FKDS3ZkQzuMvUyVmhTrDrv702tii266ahcTxSaBbLDccON0ByFUgsHFO7LUWh6Vpkvd9sgkRAdjmTSUH9d0udmZ4iBW/pE0dS7blef7Z5dpugHZLiAsArYTSw1OLdXRBWQSZofovmGXuWxXjoShMVtusjOfIN8WFRQEAacWaxwYysagar1zEASSD33rJMdmqxi6WMPEHput8mf//jAHhtOcXKjTcnwCFFv9k1eP8vzDO9e8d7e2UDQ8sVrMH2meoiGF+apNIR2cM3hY73p7IraqVttz7CqkGMxYHJut8sB0maWazUDWCtm8AT55+5kNJyCLDYfXP/cQmhBPOADSrc6XuezjbZexXm0ZhH3sYx/jT//0T8nlch0/bzabfPzjH78Awn4I61xbk5ETfDuz1MGw9aDXEnSCqdXb4ksIvAANiRGGNp9rOYHEaXlhALRA01amGnNJg30DaaZKLUxdULfVwMFizQ5F28rscaOSoPy2bI/J5QYNx+ez90x1vdkc3pXvsL7ItYmZVwMdTRNctjPHd08uMldpMbnc5ORClfGFBhPLDRx/hRULCRgQkLV0kqaBrgVUmh5jfekNp85EmG6o6Roj+SQ126PYcOjPJNYsXjce6Oe+qfI53/CjG/HJ2TIX338nj1z91JVoo7/4MEtfeIj9oVg5stWotjzKTYeHZio4rgin/dQV4/oyHiQoN1UWou0GjBRSHa2Kuut3MAV+IHHamCRdE2jh+zp+wFy5RSqhM1JIhqL9oIOxPDCUwdQEyw2HgbTFf7p0mJrtx+xUNswfvW18iUPDakqw3fYhYhMju4JjcxWCQJJPrwRtm7qIAebJ+Tq7CikyVqfma7bc4thsBT8EqJE27iXXjalhj9VapMUa3z+zjCZY02LNJ1Xc2O2nllistRjMJJiv2ZQbLg9Ol/n28UWuvr2whlXt1hayDMHu/jQg14j5+9PKMuX6fQO8/Kl719hlbAdb8kRrVa1naDzWn2a0kOT+mQoHBzO84XkXc3Aoy31T5Z4mIOu2z1Vjhfh4nV6qPyogdr5ikM63uexjEd8UBErn2Gv1DMIqlYpyrJaSarVKMpmMf+f7Pl/84hfZsWPH1rb2Qv1A1HrQorPxslJtg3bxTb/bay1Dw27TJ3Wrbtqtbn8jET1nTG5WMtzAyMG/P2UiNEGp6SKRNJwgDumWbd5Zvfif+UDN9nnHF4/RclUA70XDua43m/We0qdLDZKmzpVjil6v2d4aMHfRUIb5qoNiWjRcX4a2GUFs3VFquuw09Vi4rWsqwHy1lmvNjdHSadoeD85WWKo7QJVswmzL6ZN88vazPT3FdrspPjijbC7qxTK//cm3c/Vd3+Dvfu0dfP6KZ8dartViZSEE+ZSJ5wdIKbBMpfNpOF4oqJehoF597my5STapXO0PDmfXbVWcmK+y3HBoun7Ybl25uFMoBipA8rSDQ5wtNtiZTygAFTKWErh/Wk017h/MbGhS+6yLh7jlmM3x+RqGpmEagrSpk7J0dveneerBAT5x2xkGMxZV2yOfbNcyKf3ZYt3m+n19vPLp++NrYnzBYbbSwtBUYsBIIUXT8bl9fIlbHppT5re61nGuzhYb1FpeV8G6EOq8uX6A40vuOrscxo3JUCsXcOvJJR6YrvCF+2Y6UgW2IuafKTcZzCZ49TP2r7l2tpMteSK1qjY0NNY0DgxmWW46atCnjTHf3PC1yefu7f7At9Xjdb6Yqq1kaZ7LuXks4puiz3jwzFzPr+kZhPX19RGloV9yySVrfi+E4K1vfWvPH3yhViphqGmzbmv4RlOAj2d16I00RWlFICSQnRqkbqUJxQpttmu97rrbNvF3LiVYYYg0TZAwdNKWRrGuolhSusZ8tUUQqBZo9FFBqA/qEHVvUlJKKg2Hmu3HTEu3IOG33HS5ekq/a5L7pso0XD+mDgMJf3/HBJ+49QxLdXsNmPv+mWVOzNcwDY2+tKXiOXy5ci1JNfFXt10SZjRBxxotV7cb43LdYXyxRq3lhV5hkoNDGa7Z08cdp4osN9w1T7GTxQY/86Q9jIQ5bRHYWnNTHM6yVLeRU1O888O/y+7xh3BNi0QYs6OijRRrdN/UWi2PoQvcIGAwYxFIqQLAUSa5ESvreD4nFuo859Idcct0o1aFlIpFq4YsqZrc02JbECEEz79iJ5+9e4q5Nt+smq2ARMYykAHYfsAjZ5e7hggXaw5ffWiebMJAE4Km4+N6kkXHoV9a3HT1LkYKKRxPcmhnjgenK1Rabsf0Y9P1MYTgmYeGuHp3H1eOKhf89371OEKDK3flEaGw2/UDyg2XctNF1zRu2NdPyw3ih4An7etb9/pV5svqO3C2WMcPCFuVxLYefiBxXAX0mq7PG9sYjF7F/OuxUVtlS3phP54oraqtRBlBb4avY32pOD/z0bJL55OpOtcszcd6u9e7nto/Y3CVDctG1TMI+/rXv46Ukuc85zncfPPNDAwMxL+zLIt9+/YxOjra8wdfqJVK6BpS+pihUWLL8Wn6El2o6JSG44eO5U+sitqJQbDCMMRC+k02VxMiFo9HLbJHs4fRZKQmVlqYW3m/6PM1AZamhTYOKkS86fo4vo/nK28ppw2ESRQo28rnADiB8ixqun6HW3o3fyIZLm1Nx6dYd0gYQgl080nuOF2kWHPWgLlCygxjhwQyHDbwA9lxnCXKoyltBezIJ6k0Ha7Z09+h5eq4MQKTxQYPz1Vx/YBcaMnRdJWNwNGpMtmEwdW7VyJxMgmdpKHx/TPLHJkssW8gQ9LS6U+bzFdtPF923BTvPFMk99AD/OXf/y8Glheo5fv5xG+/l7OXXYuAtmgjpeU6MV9TbcJYy+XSnzZJmRr1yHG+re/thVFMepdpuG5132SZuqN8tyKtnSaUuatlKC+mvpTF6Kq25uopvA98c3zdEOE4LklLqmMHsQbQ0AVzFZsjE2WuGM2TMDWShr5KB6cAXS5p0pcyuSZ05dfC1mmp6XJgMBsDMKQKI7f9gIGsRdPxaTg++ZQZPwQ8PFcjk9Cp2R79usD1WQl0D/x4MMEPJAldwwkn+bRQBOqHfnleEDBTam7KYFw5Vohb6gtVm+FcgmdcNLQmAmurbMnjEV79aGorhsawuQVDL8L9Xtml881UbRWA9lrt291tongr273e9fTi68b47D1T8bFxmmu95darnkHYs5/9bABOnTrF3r17u470Xqhzq6odicolE8ut0I4hwc688oo6vVRXU29byC96tKBms1pt3yBDW4bICXyjShphNIsb0PK650iea50rVo2mGTWUSacTCty9UBPm+mrh1TXtUW2riHRyfoCpq1ZP5JYeiaijm829EyX+/f5Zlmo2uaTJfKUV+nxJxhfqceunK5hDAV3XDyg1PTQhkJpqF7VPuXq+ipLSBaGWa6BDyxXdGG1DxeBMLjdxvABTVw8I2YSBQFBIW0wsN9GFFgPNYl3ps+YqLQUABaQsm739aW4bL+J4ATceGOhwT3/ByTv55Q//Pmm3xdzYAf7s9e9iom+EZKnJSD4RH5sd+SRP3t/P/7v9LI/MVVXIuS4YLST5uSfv4XsnlpgqlSmkTGwvwPFUCzma5tw3mKHYcDZ8qr5/qszffe80DdtXGZusDIk0QxPhg0MZMkljw7ZmEEjee8vxdT3fZssthBDsH1hpV7ZrALXQdw3o0An2t00/GrpgrtxaA6K7LWxVW9lCrLBo6j3U9akeAhYqNpfvKnDHqSLTpSbt3Hcg1XWkacSWCTEAQ8QSBDs85gnD4Z6zy5se69WL2zceWVgDltZjS2Q4TJEydY5MlhhfrNFyg8ctvPpcqxdma/XQy8Y2HJsL93tll84nUwVbB6C91uml+oYTxb1u90Zs2iOzVRqOMiveKjbasjD/a1/7Gtlslp/92Z/t+PmnP/1pGo0Gr3zlK7f6lv/hS6J0VIYuYiH4dMlmvuqQNBXzEjFLvbYnBzIm5aa3rQzaRsBOE2DqGhlLp9hw130PQ1Nj/YFUZpfRwvZEKBEutBHTpcw4Bba3wqI0HLVv8QOTVAAuzq7cpLTQ5FPXtRgU+KG+Jqqm45MwNL5zYpHJ5QaeLzmz1KDcctGEIIlGTXqcKTbwA5WvuRrMFdImph62uaWPFR5zdS2tbKiuqf0c7UuTsgw+cdtpyk0VhXNwOMvzL9+J6wccnSzR8nxczw8ZWmjYXqhrM8N8RzWJWWm5lJseD89WqLQ8gkCBNj9Axfg41RiUnV5qKK2VEAxPjvPf/uI30WTArQeu4zd+9vdZqCSQ5WU1jWgZHBzKIIH333KceyfLtFxf5TomdEbyKaSUHJkoc+PBQU4s1ECq1AJL10gn1HDFWH+KQMLpxfq6T9VBIONAbl0DgYYZelkFMgiBhmRyucFNYYYodG9rnV6qd3i+WW2msI4fkDJ1WqvOS3u1i6tXsx6ZhNGhn1o9zddtYXM9tf0RG6drIhb5t3/ekw8McM/ZZWwXhFhhUaVUAffR9yBoA/ZBGIYeEmJooS7v1FKdeydKXRe59sUtlzRIJg08KbuCpW6gslh3YlbQCxTgfs9Xj6MJHtfw6nOpjZit1VrQ9rbqerq2XoX7vbBLW2GqzkUAfy4AtJe6d6K04UTx5bvymyYwbMYCHpkoUWy4XLxj6+BzyyDsT/7kT/jgBz+45uc7duzgta997QUQdg4VsRaRwWb8xB0CKL1t6q8XTCVQLTRNbK+mTEK4mK5oiyJTUkMTFJIGmqZAhoA1AFBDATBNKH2MiPySNtmX6LPPd+UTBjXHx5fhdKQgZh/1cGNsT8ZWGO2gdDUAWw3SIs2ZoQkyCYN80gi9rfSORTC62ewbTHNyvsZS3VXGqLpADwGc7QUIIahIF0MXXcFcPmmGWrAWvhR4QYDvy9iaQKCYvat25yk1lKv7TLmpWlOu0iONL9S5Y3wJiaDcdEHI8Hi0QedAYhqBisgxlJbp6GSJpZpLy1sJXo8AhhsEeI4CAUPZRIcR58Lug3zzp19NaWKW3/zRX8UTBqLtwJZbLvdOligkDc5oAs8L6A+9uZquz2y5FXuAnVlqcPGOHKYusHQtFsrHruu211X/Fi0cpYbD0amSGsxIJ6i0XFxfGdMKoSZnPV/i+JKnHhzoyfNt/3CGY7NVKi0nNJFV5r37BtKcWqxTa6l4ptXVzgAcHM5uST/VbWEzDQ1dUyxp0/UZzFgdxyF6CDi9VGdXIYmbDdZ4qLXcINRIBkhEh41MJEmQMtIYqsnN755Y4qevXevGf/Pdk0wuN3D9oIOpyCV1Go7XAZZWg8pi3elIKjCleu+HZ6sU6w5XjBbOC2tzPqsbs+X6gTL9DbWgn71nak1btdsDwHayS+d7COB8uNsHgeQ7JxY3nCg+MV9jd39qw2OwGQs4UkgxU2mxULPjeLJea8sg7OzZsxw4cGDNz/ft28fZs2e3+nYXCgWylEmo3wE2PKlu4MZa26BN3k8xIIGU2wbAohrMWBiaxnLDoeX6cUtSCGXx0LI99JAVM0IbAFC+VLqmJhilVDmDNdtfd/IyqpCMYgu693MuFYkkYxf5phMo/Y+uzFW9IKDUcGNgu9GhXQ3SQLEHSVNjKJtg/1Ca+yfLLNUc+tMWLdej4fhUmipf76kHB/jGw/N4gYxbU1Gb0TQ03DDDcEcqScPpAuZQI/6uH1CqOzhuyFCEmjnTUP5UZ5ea4XUiablhALNlkLEUcFus2ji+gpHdTGwBWo5HxfbQhYqZgbWDEoFUANT3ZWyi6/kByUYda1nCLuVN9qVfeD2fOzKF50UPICs3vMj/q9T0MHUFhpbqLpahkUvotDw/9gCbqzTZmUtyptjgouEMNdtnqe7EthCrn6pXt8Mc3w+PTUA+dGpfbrg4bde8pkHa0vAlHJkorfvEn0sauH7AzFITQxMMZawOJmy21CRhaCw3XcbCSKSoujEAW5nm67awpU2dpKmxWLUppE125JMs1x3lVm/p8UPAXKXFRcM5sgl9rU9dy+O2U0vYXkDD8TruMxL1UKJr6sGm6foMZhPMVZprQE/UKirWnDWB48sNF0OIjlZmO6i8yMpwarHWllQA5aYXmhmnmCm3mCk3Ge1LPm6RROda7ef4yESJf7p7El0THcCkl7bqahAObNrCXq8eiyGA7bYMOb1UZ77S6mmieKNjsBkLOJS1SOgas+UWO/PJrn+zXm0ZhO3YsYOjR4+yf//+jp8fOXKEwcHBrb7dhYKwxdH9dxK2pAWDFaF8dE/ebiBmGZoKsfbUMIGuq1aR6wfKIgDAD0iaOhrKFiEAgtDJfTifJGFqlJs93gC3Yft1lD3ERhUxj4ahIaWybEib6ktne8pOYhkXKVVb1Q823rSoLWMZIo5RSho6ewfSWLpOwtQRLY/lhsOt40UMTbC7P8U1ewp85cE5yk0PTSinfVNXzJwXSEyhFlcvkOzIWcyUAoo1h+F8krSlU2spVmt3f5rX/MgB3v6vD1JqKjCvaRoJQyOfMrF0wWxFTQ9mLGXa2ukJpVpo8zUHTYTDF7JzkEKJs+HMYp2m44UsrIe7zsE2DQ07XLRz89P81d//AVo+z0f/6G/xrAQzlaZiG1HHWBFvEoSIW75R2ytpaCAJUwLUtpebLp5UOrdnXjzE1J0TfD1yqQ9LE4KDQ5n4qbqb1mOhanNivobjBRiaSzOMKEqG10MgJa4XsFhzeP/XTpBNGOs+8Uc5oDXb69CEASRlwHxFCdHzCZMjEyVGCkmGswmabrAuA7CVab5uC5sC/kqQ/9BMpc3BX3BwOMMzDw3xqTsmVHC0EB0aNYBUwmBHPglScmqxgQz8Nd8vTQjqjk8mqQTQ5Ya7BvSUmy7T5SZeEIQsYHTtKaai1HCYLrcUE0snqHxguhJHG7Wb4x4YyoSmyuphsV1vGdUPQni1pgn2D2b4xG1nsN3gnNqq7cfr6GSpg+lWx9zkmj2Fntilx2oIYDstQ6otr+eJ4o3efzMWsOUGjPalSCeUP9+g2bth5ZavwF/4hV/gDW94A7lcjmc961kAfPOb3+SNb3wjP//zP7/Vt7tQbB9IMjUF2FZ3jLazGo6P5weUW55qrVkapYZHw3Hiv1H6XMWs+CFlJMMWpqZBIW0wV7FDM9T1P0sAPXQsN6yItdroK6EJ5S7fnzYpNzyEkGSSFklDsRyVpkvL9XE8R7Egbe3IiKmT0XFnpYUa6pTRhWD3QBpDVwCo3HRZrNk0HMXogIgnz2bKLT787VP0pUw0EQnpJS03CFksoYxHQ88ryQooNjTBw7NVCikzfnJMWzr7hrJoyw18X+nHkuGiVWl5pEwjDpnOJNZ6QsXGmBLSpoZEYLe1GaNzM1NukTA00paurDS6nLVAKgbMMHSuOvMgH7z57QzVlynbQ+TmpnkoP8JDs1UkkNAhYRphTJB6L9vz295WHTehgSYVq1a1XZK6Rq3lkjDVtkQnw4+n9wSaLuKfr6f12JlPMFpIcmqxQbHhYOrKtgTU9ni+jCeDG47HlaN5mm0WD+1P/FEO6Hqh2glTTSGWmg7FusNMRR3L0UKK6/b2n7Np6Gpdzu//xOWcXW5QbXnMllt85DvjnFpqKIDaftolpK3NW08DaQvT0FioOSRNpUmM7GkivSdCWWNYhk7L9NeAnkrTjR3zOzdCvThhqOup0lzRmUag8gPfPMnZYgMkGLoWm+P2ZyyQyvx1tmzjeD7Q3ex4b3+a8YXa4+4Ptl5thxj+yrECN129i3d9+WGWGy6mpoUgN0HK0vjC0RkuGs72dI09VkMA22UZEoGnXieK16teWMDr9vbz4utG+cw9U+fHJyyqt73tbZw+fZrnPve5GIZ6eRAEvOIVr+Ad73jHVt/uQm1jbZUxW682EuAHEpKmQcuTSBlQbKxls6J2ROCveJ/Fi3YAD83USFs6CUM9RQm6G8JuB44UhPmNcn3TWU0IEoZG0w0wDKXNS1tqUdBQU4PFukPTVcyUDEGXLhRr5noBCDCEutn0hfYQl+zMYbtKd/OaZx7gxdeOMVluUm66vO9rJxhfqGHoIhaLun7AQrWF66tWjiY0nCDA84LYAsTUhZrfDNnTYzNV1ULVNIK6w2DW4lA+y09fN8qVYwWOTJSwdI0n7emPMyirLS92dB/KWNw7WcL1JEZK+UdFeiVTF532IULp+oQAsQocS6nauaahMZy1mK3YHb+LNEOB9Hn+A9/mf//rn5P0HCb3XcIf/sqfcl89jV0u4YUaMC8AI7xRRpYH7e1NQxPhqHnYGg4knu/jGQHT5RbPuniY28aLVJouhZTBcsNV50wTFFIGlabLZ+6eInmjpha5MAGgveV2YDjHfNWh3HQJgpVMUddXU3+aBoOZBC03oOH65JJm1yf+lRzQAmeW6h2LQMbSaTg+TVd5m10xWmCx5jBbbpK29Pg8brXunyp3+MulTZ2rxgq89Em7uWqswOfuncKXbOrgf99UmUNWhprjx8dmdcvyxv0DBEjumypTbbpkkgZSihB0SwxdrCuqzqdMZXHhByS7tGIdPyCha2uYrCvHCvyP513MbLlFytQopC2ylkHN8SjWbExDY1chyXLdZabcImkaa/RF1+wp8Mf/9tAT2r5iO2wbgkBy70SJHbkkV40V1pgJb3VI4bEYAtiu6gBPPU4Ud6te9WpXjhW4YrTAfaf7+cfX97aNWwZhlmXxD//wD7ztbW/jyJEjpFIprrrqKvbt27fVt7pQT9DaCPg0XY980kAgqTubx/S0V7vIvun4DOUS2K7f01ThuZYQygag5ihaenVpENPSiTDnbzZsf7TrU4SAlGkw0K96/6eW6gSBYkQiewRDi0SfaopuoWrTdHzqjs+n7jzLsbkqL71+N7mkwbHZSmjZYGB7PrZcsa8QIqBYdzF1JaCWciU42vECBtIGTVdi6OqzpJQkTQPHDyg3PY7NVHj/107whudeHD8JWobGxTuyqq0joZA2ySdNai0vjK1xma/Yqt0XLoYRCDN1geOr6B8Z2hPomoiDqJXWTadue3i+xNDVJKEX6v9i3zgp+eVv/yO/+c2PAzD/7OdR+uBHaX5rkoG6w0ghhanDLQ/N40toeT5JQ491Ye1nL23pChyF2xKxk54vqTRdRvuSfPG+2U21Rjfs71fsU7lJreWvGV+/ZGeWu88uo2kKKMiQ6TF0wUDKIh1G/rhep8XD8fkq44s1NCGYKjXwpfLTag/VNjTBiXnFwmQsnULawtA1RgpJduYTnJiv8bl7prlytLd2UVT3T5V5+xceZHyh3hEWfrbY4KHZCq9++v54IdE0jXyqU3Ta7sX20GylS+j4qpZlQjF7l+8qcP+UmlhNWwamEFSaHuMLdfYMpLuKqgspk9G+FNPl1ppWUcPxMDQFpgqpteaXB4eyXLW7wH2TZdJewN1zK0a4kaXIlWMFDgypfMt21uaaPQU+f3RGtdFSJoNZC0OIJ5x9xXYI69vZtNXvIeCchhTO9xDAdlU38LTZRPF61ateTdNUAH2vdc5H45JLLunqnH+hfnhLF5A0dJqhliRaFDdiztrL0EJNT8hKFevOui73EaukacTg6VywWhDIGCC01+qvnONL0hYcGMowlE0wHtLWUQ7gUDaBZWgcGMpwcr5KMhwsIDKclWoCMGloNBw/nFKUqg2V0OlPJzrcyMsNl0BKauVmPOIf7WM0WRbptPyQmfL9ADdQfkhJS5mENlw/1tIkpaTSUlNsSzWbz9w9xe/9xGX0p01uGy8qMBSyQfmUwYHBDEt1h8t25bhjfImGF5AwNAxdi02CNSRJy0AINbQQTTlKwmxQTcWn9CUN7FDY33J9TENDuj5SCKVRBH79O/+XN3zv7wG47Sd/iRs+/bf89ZcfwfYCrtkTGrxKyY5ckplKCz9QLchECiAwSQABAABJREFU2BaO2NSEodFwfWVGKlWb0w87ajtyCfozFkcmyj1pjc4s1ZkttwikGoBYPb4+UkiSSRjs7ktTbNg0nQDP97E9ScP1lFZNUxOHUaUsnfEFh/d+9Tilposdarsmig2u29PHQDYBqFZcpeUigb60paY3o+vzHCf4VPD2OMdmquha50h+3XY5NlPl/95+lpbjb5436PidX7o1LUu9Y9GNQrejlo/jBQRIDo/mefUzDnQFNfsHM1y7tw97fEkB6NYKSziQsTA0wXV7uzMV0QL70EyF208VEUKFtkfZrkGoF3zp9bs78jH39qd506ePcGSihADmyvaa70TEDAGPa5zRdtg2nC8T1POxreejtlPsfz4irnoCYW9605t429veRiaT4U1vetOGf/vnf/7n57wxF+rxrW5gShAxNKBrGn64OK+ehuqlVrdLN/IwSycMLF2j0nJJWXo4PRrgB1FLTsTRKRtVgNKxBXTGQ0Wv00LNVoAyyGy5yvZAsUYeICmkTDQEpZbL1WN5vntikabjd+jBvEAiAsV2uKEvViGlNECDGYud+UTMbnz1wXmabghi5YquLJq4jJhBy9BJJwxKDTfW10nAlZDVNSV6ThhEq6MQgrRldIRx33JsjvmqjRO2NLPhQr9YtZmv2Fw2kqMvZbKrL6WijbwAP/DRhCBlKjYrbRnsHbQ4vdjAd1YmE/3wQOaSJoO5JAs1B9cPWKq7SkQfnl+BYo6+dN3z+KWjX+KLL/lVrnnH73G2Yq/VuwjBNXv6sE8thbYIEDhq2zUgaWpcsjPHI/O12PdDk+ocDmUsnnXxEHUn4NRiTYGDtuOzUqHWyPG568yyslQJGUDHU4BXifwdzhYbDGQSTC43MMOBhkAaLFZtWm5Ay3XYVUh2AKjZcksNPGhwYCCDl5A4vq/afKeWuGZ3PyOFJJWmS832KSQNDgxlYvuMqM5lcVTB2wqQrAaffWnVVj82W2VPf3pjxiL0qfMCuUHLsshFwxnun6rEi24Upl5puZxaqHN4tMA7X3LVGuf7qNqZiqWazVh/Gj3UikaTwhsxFYd35dmRSzC+UEcgqdnKmLiQUt/hYsPls/dM85abLo/f40v3z/LdE4vrAG+fg8MZjs9X+cqDc9x2aulxbVduh23DY8VQnQ+LiXOt1XrIw7vyHL7p8LaAp+2OuOrpqN9zzz24rhv/e7264KL/g12moZDA6i6jEQo5dU35Ma0Xyr1RbcSWtbcpo//OJ414ajRj6eETsvq970sQK6aQq18bfVbE1jRCWwHlYSbjiKPodRGoODCY4eRClYbtUbXVayxDI5fUMXWVa/jZe6cVoNEEQdiKjAX6QIAkYWgkTbXNCVNn/9DKU+FIPsntp5Zi00uNNr3cquNihlOVkRu5CL3CvEBZf7i+YvnMtgfc9jDuWsvn80dn8HzJjQcGONWmR4qsLDIJ5bV05Wgfzg6fh+eqVFteuO+ClGXQlzJ53bMP8o93TvDtk0the1ZiahrDeYvRvjRnlupI1HYmDdW6CyQknRZNK4nwJacHxnjHe/6ZV77g6liv1u0JvT9jcdlIngdmyqFFi7Le2JFLkE0a2F5AMsz2VF5dASlL58qxPoSmkbJUhJGhiQ21RoYmWKi22N2X4uG5KuWGGxuMRteEJGA4Y7Fcd+IBAVMTGLqg6Si2M7LjEELpY4/NVjA05d7/8Hx15ZiH35+HZso0HY8AyKcMLhrO0p82qbbcDk3auSyOj8xV4+DtbuAzmzAoN13ySYOZcnNdxiLSe23estzHdKm1ZtGdr9jsGUjz6mfsXxeARbWaqajbCvBcs2fzoYTTS3WWGy6X7swxsdzAC6/dputzuthgJN/JJgaB5F+PTmN7ATtyVkd6QeQbNVNuYRkaH/nuKfxAnpPVwnbWVpicbiapjyVDtd0WE+dSP2hRVT19u7/+9a93/feF+uEpgYrsCQSshgOG3uZuf47eYxu9ZPXvJMoLKpvQVdzO6r8RnX8LqtUZgSZNKL2S4wUqozI02bTdIBaXR20/ZQGhon/2D6dj7yNDU5YQLU+j3HRIGIoVmim3KKRMkqamBNmOj64LRvNJlhsOyw2XVriQDmYs9g9llSN8WL5U+jMNNbEZtO3OaqDq+UE4Yu0jhAJgKUu1VjOWxnJTudMnTS1+l6iV44fTmjPlVqwFGQi9cqKFXkiYKClzzNG+NNmkwVMzVqxZMnU1YXhmqcFIIcUHf+kGfvPmIxyZKDOST6gWWtLgnomSAjuGjiMCHF8BxBvP3sf7//mdvPmmX+eewzcynEtQMleMDNd7Qi/WHc4UG+gho3H5rjwJQ1OATBdkTJ2ZSouGE2AZGsO5RMdxbjo+GctgZyFJse6uqzXKpwzqdkDDdULQpeMHCjy2vABL1ygkTZxAcvXuArOVFpWmSgnw2oZOFqo2t44vsncwzWy5Rcv12d2f4oHpamwiGrEtEhWA/bzDO3nu5Tv4v7ed5fZTS8yUm1TbNGkR8H/qwaEtLo69PQg/9aJB7jqzzPG5KvmUtYZ96rCo6FIRSzdSSG7LonuubZ5qy6NYc1huOjheQCbRmctZsz36U1bMJp5eqodCfQ0voOMBBhSTvNxw0EJPvivHVsxeH0+3/V6Oz0bg47FkqM5Hy67XOp8B4+ernrgmKeexetUw/UcqXVNZb5HbfXR8JKhoGF0jkMG2e45FgChiIEAxVa7v03KV7qRme8ggUJOOIQshpQytGtT7BDLUkAkNTUj8QInePV85xUcTmCJkLDQUuIwsECxd4ysPzMValygVwPUDTE393WLVJhGK0IUQJE0RTr+51GwvzF2sADDWn2ZnPtHJDkvJfKUVTwBudh0uVO021k7iofY5OleWrinrDD/A0nWkVABjIGNRaTqM9ik2o9tCKqWa9qu1lOt+w/bIpZRFRfskWq214ixvGBqvfsYB3vlvx1SQuGkQSJdiXQWIJ0wdTRNUmi4vvf8W/uTf3ocVePzKnZ/jDVfcyKHhbIfeptsTupQyNuAUAoazSfYNpEEIduYlJ+Zr7BnJkE+bHJupcmA40+FtFj3ZXzVWQCK541QRzw8otjm+D6RNDF3jspEct40Xabk+Axml03J8FXtDaF7bdD1832SkkGKsL8VkqcnDMxU0odNnmDTC8Ou5is1cxVaLux9warGOBIYyiQ6X7r60yULV4f6pCr/6Iwe5dm8fnz86TTMM0E6GAfEzJXXeevVwiuqSnVmySYO6rSYyV7MeddsjmzR47uU7GCkk+eA3T3JycTkcqBCMFlLcdPUurhor8Jl7pnpqYR0czvYUvr1ZnUubJ5PQWW46tByljVzxuFMt5VLDYRmHTEJ9B6otDw3oT1ssN5yOawdC5tzxyVg6+wcza7o7j6fb/kbHpxfw8VgyVNvdsuulznfA+PmqnkDYS17ykp7f8DOf+cw5b8xjVRcA2NqKFvtomq3dET5iBqK223aC2AiACQgXK6X9cn1J1hLs7k/z0GwFiUAIGfs9Re2faFsCCaZQnJnrK11PX8qg3PJigBdl/kXAzQ9NQU1do9xSU4PD+QSGpsVeXJqAakuxW7qmjCu9QBIEAVU7FB9LyVSphesvM5SzuGgoy5ligx25FVZJPXU2mCnbSt8mCTMJFfCIWquReD5oOyftx8qXEnxooEAYQKXhkklELTYNQxMMZhO86OpdfPL2MzTDQYFo2EB5ninRtC5UjNId9WKHaDy6FtpbFfdPlfnsPVM0HJ9iQ/lZaShAuKsvqQwgXY83f/sT/Nfv/gMA/375M/mtF70JgWIhLt6R61jAVj+he0EQg7qM1amVihbAk2EbrG6rtpcutDVP9i990m5AWXicXKiFFhcKnC83XC4azvJjh0e47VQxvgZtd+WcSinxAokbqP/fdHwyCZ25SosA4gXf1LUwckw9rGQsA0MLqLRcEILlhkN/xlLXX3jtJk2N6XKT8cUa906UGM4lYlF63fZVlmd/CkMTHJko85NXj65ZNNbL5js4lOWGff1865HFrgxgIOHJ+wZoOj5fODpD2jK4bk8fhhB4Ug19fOHoDAeHem9h9Rq+3UudS+Zg9N1YrYaJfPTaK5c0SFo6uyxDJVSsOka1lqsi2MLJ1271RHPb7xV8vOWmy7dNF/VErPMdMH6+qicQViisfJGklHz2s5+lUChwww03AHDXXXdRKpW2BNYu1BOz9La2yeqKROPb+ZXVhHpqMkPLAzdQ1guWrrMjn8SVMn6ib7k+fmyRoLRqXhDEYCWQqh1nGRppS8Wl6EJw7b5+Sg2XABhfqGGHL4g8Kv0goGaraCVlwhnaDaC+vAlTp277YEjSlkml6eD4oQeSJsKYqICluo2mCV719CGm7pjg68fmcQPFptmuj5SSfMpULvRVGz9QbVRToTEEoU9XdGzo7m3mo3RxUqrEAiOcFkzoapw/Mvg8vCvPbaeWuH18iXLDxQ5BmuMHKksykOimzlifMiW9/VSRq3f3MVJIdrhg33hggM/dO8XNd02qVltfip35BIs1m7mqjd906UuZLMyXeedn/ozn3/cNAD74jJ/jL/7TKwgQ9FkG5aaHH0ZZRQvYag3JUk21lXbmk0orlenMUtxKG+z+qbI6rkKooHIpYosFhNIN9acthHRYqtlxNp+uidjfCqDYcDi5UGX/UIZKU5mtipC1bThqP7QQ+DqeapEGEpKGsvaYr9pq+CNsdaYTOk3H45G5Kifma1w0nCOT0DvawLmkQd32uy4am2leXvusi5iv2Iwv1uPtU981wWUjWV7zIwf4zD1TaxZtIGYbP3vPNC++bmzTFtaDM5Vta/+ci5anbq+cw3LTXROOnjZ1+tKW+v7SOcF35Wi+Qyepa8r09bq9eWwveEJZLWwETrcKPp5IAGQ767GaAt3u6ukq+uhHPxr/+7d/+7f5z//5P/OBD3wAXVc76/s+/+2//Tfy+fz52coLdd5qNavl+msBWDQhiVSgYDtF+ZGpqx+iO9Vy1Ng7kOINz70YieRvv32ahWqTqi0wNY2G68UtvchDKmUqTy0hlMGqFyjAcfHODL94414+/O1TzJSb6EKEWZzK10vTiL3K1ILZAkKApgmM0IIgQCIR7O1PcU9NTREmDA0RPkFL1FN2NqHz9WML1EIXes+XMajVQ33brr4UxYYT/84LLRzaj5Eh2pIP1jmmfgD9aYPffsFlKvYmZVJImR036JdcN8YtD81Rbrr0Z0zKTS/+vISpYxoaDSfgKQf6uXeizImFKk1HWWCM9aWQwCdvO8Mj81Wajq/aaTUbx5OxH5PjBUxMLPA3n/g9rp58CEczeMsL/jv/dNXzkJ7E1ECEbeb29mZU7RqSY7NVPvKdU+zKJ8l28YZa3QZbT3sSsQOeL3nOpcNrzEZPLNT5zolF+tMmA2mT+6YqeH7oLyUFScsgZaoWby5hULN9xsMYo5Sp4fpBrC2DFR+ylhuwK5dgqe5gu0H80KCZGoTXXiBhrmJzttiMF43VbWDovmj0qnl5y4sO8093TXDfVIWm45OydK4OzVrTlt7Top1NGBsC3cO78rztCw9uS/vnXLU8uVDrmDA0xhfra8LR9w4oi5HoeuuYxqw7XLIjhy8ltTA+bFcI7j9zz9QTxmphM3D6RAYf58psnks9EX3Keqktb81HPvIRvvOd78QADEDXdd70pjfx9Kc/nT/7sz/b1g28UFurKF+v1+omim+vaNoQIGFqMVvQSyUNDRXWLOPJxg2d8cMWox8K4D9262l+74WXs28wzcOzFTIJlbeYSxq4gcT3lRt9IWVRSKlF+Wyx0eEQfu3ePu44tcxEOAIfVcJUbTs/kLR7uHa0AH2JzwoolahptqSphzmO4Htqoc0mDK7b24+paXzv5CItL1Ch2kK1OoVQru5122O57jCYtpirtrnKrzomuq4R+MG6bFj0moSh8eBMlbdcv7vrzS1l6WQSBp4vqdm+GgoQgqSlk0uaaEIoBsHIcuP+AWYqLV79zAPogjiIN5c0IBx6mC0rkDqQSZBLGkpn5foseSYPD+5h7+IE//XFv8dte69u0/lBseGSCUXPTzkw2LGAtd+oL9mZ5aqxgnJqT+hdndrbF8D1tCcd7ICmkUuune6br9jsyCd5ZLZKwhBYupoo1HVBytCo2CoM+pIdWSZLTYZyFrNVm3LTwzJUTM5AxuLEfC0Wg+uaYKw/RbHuMFVqxj54UqrcyWxCeb9pQoSf2/uisRXNy0bi6PWmUtuvmWjRvmZP37rvM75Q25b2z6PR8uwfzNCftrhvsowuoC9lxmbDvh8wvlDn2ZcMd1xvq9nXCNg85cBgzKIKIZ4QVgu9gNMnKvh4LKcUo1Z/X8rk1FKNK3flEdrKd/7x9CnbrLZ8VjzP49ixY1x66aUdPz927BhBsE25ORfqnGu73eeFUAyOEQZIR3qxXiqyEwiCgIazuacXhBE3Qk0Q3j9V4V1ffgQ/CGh56n+acDFDcXwg1YJxaKcKB375jXup2l4sDu5LmfzlN05SrDuM9iUp1pXQPWJvAk2xX8j1W3/t2yyA8YU6UsJg1qLS9GNX9yfvH2Agk6BUtyk3XRKGaoPYbrCid9MV6zZXbZEI3eijMkK0G4FA348c2OnKhkUM4Ei40J2crzFdbnYIo4/NVfngN08ytdzE1BU7pAkVq6Ru1kqP1gxUGHUhrbRLuwpJ/uXIdBzEu1x3CKQ6ZlGLtun6pC0dUxMMZS1m/YD/9YL/xvue+p+ZGRiJKVNDFxgCbF+17kbynb5P3W7U/WkT2/PXdWrvZQHslR145qEhHpmtUqy7aOFQCsCygHzC5MBQhlTCwNQ1Xvfsi8gnzvLgTIWD4UBAJYyA8gI1KTuYSZBPmuwdzCivsBAQ9KdNTF1TyQymzkVDWearLXbmkpwpNnpiXNqBJSiz1/b25WrQsx5A3a5Fe7sYmEev5VFscisIkI5PJBgVgjjFYnVtNsH3RLBa6BWc/t5PXLai31snYuqxBh+P5ZRi+z2kWHOYrbSYr9hcujNLNkwFiVjOxwo8b6W2DMJe/epX85rXvIaTJ0/ylKc8BYDbb7+dP/3TP+XVr371tm/ghXp8K5oeVIyWCuA2tLWi8W5Vt5XWItiir5gXKDbM9T1uPbnI3oE02YQeCsolji9pOKodmEuaoWdWwCfvOMt8pUW56aEJxfxYhsY1u/uo2R6nFuvxguAHK35h0eTkRiWAuuNRd1TgdbnpxB5hjh9wx+kih3fl49ZmNhFmT4YtUilXJhJdX9JyO9u0kfFpfAzagGH7LUOijr+mCYwQAB2fr/HaT3yf5aYbT7n1p5X2TBIGfIeh3Q3XptxyMQ2NhKHH7I0ZMjIJU6PSdDsWRTNkNB0vwDR0CO0/Xvjdf+Zpx+/kLS/7Q5Kmjk2C4o4xhB+gCzV8YHsBNoqhzSZMfvaGvfHNd70b9Yn5KtOlphK8R5Mg7QegrdZrd/QKNDKhKDtibNXJVi1txErElgKHFq9+5gH+4pbjKoBeKAuPlKmxULUppMx4kCBt6aQtdc1qmhYa10oGMhY7ckksQzBX8XjxdYNUH/B6Ylwi0NMyfR6eq3RkUOZTBvsGMx16u/WqYyp1k0V7IzbjiQDmTi/VmSg2sQwNz1EPCe0KfcvQOFtsdAVwm03wPZ5WC9A7OD273IiTAx7Ng8t21WM5pdh+D8klDUYLSVKWxsmFOneeVkbMuibIhvKFJ2JtGYT9n//zfxgZGeFd73oXMzMzAOzatYvf/M3f5Dd+4ze2fQP/o9cG689jVhKlP5Iod/hevjcaapIvWNXu28pnylCnNZS1qNkelZYXTxGqbVI5gXefXSabMGi5Xhym3HICao5LwlCL576BNANpi0YYGO72aBPRvj1BILFDS4hAQkJXACWQSut01+kihbSpgr3bbAksQ9AMUwbap04jAXH0/lHrt7392a09rIVjX8PZBHOVFmeLDUxNOaInUsq2YrLYQCK4YV9fHECeTyqdU8PxqTQdhrJJGo5quUU6qat395FPmR2LYi5hkLaUc7+pgyZ93vzlD/OqOz4HwDO+/xW+cv3zadgelqVj+2E8FSvXr6ELckmTkUISWP9GnUnoSivnS3YVElwyksP1ZYdTe3QDf3Cmsm5I9eFd+U2n+64aK3Dr+CKuH5ANdV9auHBZhobj+ZxarJFLGHHIr6aJzlZWRcUiRcDb1LUYaAcSCkmTS0bypMKg7rmKanFF06nfO7HETVfv4t6J0grjYmjsG0zzzENDpC091jjlkgauH3B0sowfBB3+Y8W6Q7npMVpIbgp62uN+Nlq0NxPd/9qPXsSObKKDGYwA0Ebtn9XAWckM1gdzDVsNdEyVGmuAULnphoAdduWTKmFBKsbX0KBqe0yXmiozdYNtWA9cPR5WC1FtBZzq2qpR0Mdx4dgKs7l/MHPOIDe6h0wuN3D9gMnlZjw9b3tqEKOQMrl6dwFT05guNfmLW44/4bzCtgzCNE3jt37rt/it3/otKhXliXRBkH/+SgsX6scLgAErrEC4Hb00nQOUBURwDg860UuifZ4sNlhuuDFgie43XiCp2S5RWy0I1GRh2jLQhaDl+dhuwL0TJQIpKaQtJpabuG391K0cV1+qm7qUEFsgScXyJAzVaqq1PPIps8OnKZcwqdt+HASuhQMOq9u6awBXG0iLStdFHKtzyc4s3zmxCFKyM59E09TN2tAVCHS8gIfnajxl/wD1lsdyw0UL31dNi9nkEoaKU1qox8zL6kxAhGDfgPIcM5p13vXPf8ZzHrkNgHf/6Cv49GXPxrQ9HF9iNzvZCjWQoEDvdKnJdLnJNXv61r1RV1sKbOdTJlVbmdQOZlcmJKMb+FcenOWj3zvN+EKtzU5EcLZY56HZCm+56fCmBpVPPTjAB745zlJdXUNxy1YT2GHrdWq5ybV7+jqYhG4MSd32+Mw9UzGQsgxlrwKSsf4Uyw2XU4v10LxVx/Ul/UmLM8UGXzg6w39/ziGyCYN7J0p858Qic5UWn7pjgs/cMxUzT5ftzGF7PvWWy3AuoYZJPGVEnEsYLFRtnIzF3v50bxf0Bou2lLLrBGXEZhydLPG7n70PS9eYKbeYLDUZzFhcvCNH0tTX1U51ZdbCxIDp0loH/2LN5p6JEoYu+LvvnlmjK6o01dRv2tTRNA1rVffR0tXkcKUNhP2gOKr3zOYmdP7v7Wc3jJh6LP2xegWP906U+MRtZ875PJxeqnPv2RLFmoMnZXjfh4Wag+NJjNBP0dA1skmTQ0njCekVdk5KPc/z+MY3vsHJkyf5xV/8RQCmp6fJ5/Nks09Myu8HtQKp2BRnu8VeW9kG6Lhhrxe6vboMQ+D5hJOFvVc7gwIwXbZj4Cfo1L0FgXp/3/GxXZ90Qidp6uhtWpCm43P3mVLcDnw05XjqZiElMeshA6X7SZk6QsCh4QzHZmuxB5EQK+78UiogFXQ5n6tZuQj8CglSKB1YNmEwmLUYLaQ4vdRQi3naigEYEPuoWYbKl1ysqeNXDcORo89oeQHDOR0JHVqXIJBrWKTd/Sma41X+6OO/y+G5cWzd5Lde9Ot86aofpS9pdgS6r96faFe9QPKVB+f48cMj696oXV9ZZ6QSulpMVvW9U5bObNnnk7ef5f6pCq7vI9qulgaS+6cq/M23xnn3z127wlrN1TizpHRfFw1neNXT9+MFChh6gSSXNLA8Fb7uB8qs1ZeKGXpxFw1QN4bkitHCGmD2vq+d4PhclWLdwfb8mIlMmQaXjuToS5ucmK/xuXum+enrRvn3+2dXmCerk3l66fVjJAw1nDJTaa0BURnLUO235UZPQviNFu2/+97pOLZIQEekkusHFGsODdfnSfsGGM4nOTFXZanucOeZIgcGM7FNSvtxW1cnNFVW2kFNdADm2XKLo5MlAC4bKTBSSK3RFeVTJglDU8fW0lmNJlUAvB5Pnm63Vul8Tv/1GjcExMdtvYipcwmCP9f96gU8un7AzXdNKo/BczwP5abLdLmJFwRxTqrKvpUkDQ03UDnHjhfpa7fHK2y7z/mWQdiZM2d4wQtewNmzZ7Ftm+c///nkcjne+c53Yts2H/jAB855Yy6UqtUtqccTgD2a8gOVbaiE9Vvbh43+Wg8jitpbe+rnyiLA9uwwV3BlktML8/0ebUlJbGyZTxromhazMJqQLNVdnnZwCBCML9bV4hUyNZauYod2ZhM8PF/fFJj2pU28AC4azrDcdKjbPoMZi2zCJJCSfNJEF4KEocUTYaCAgwiFyb7n88h8DdtVrTbTVNvr+hIzBI4vv3Efzz+8M76RdAvivWjqEd78V/+dwfIiS+kCr3vpW7h77HKSqKdNr8tQzur90wSMz9c4vVQnk9AJpGSm1KCQtlQAdmh+qodMVKRVa6+orfvAVBnb9cMEhRVvKC/0ZPveyUXGF2sKVErJ333vNFXbxQ8kc5UWn7lnigOD6TCMXt2s1TFUYu5UUgdUoPdwm4HtVuqK0QKvf84h3nfLcR6eq4X2KArwjeSTyodMqkXr7jNFJot1ig13XR3NF47OYHt+VzmACI+v429NCL/eon1yoY4fSNKm0aE/07ToHKiUCVODwWyCwYwVh3YfHM7yez9xWYdjfi86obG+FP0Zk5MLdWbLPlPlJglD49o2E+HVuqJfvHEPo4UUM2HLsb1F23A8TE155xVS5rZrlc43o9ZrIHbd9rfVouLR7lcv4DG6ji/emTvn81BputieYkEj8K0eQCUi1IJ5gYxB2Lkci+0+Nt1qyyDsjW98IzfccANHjhxhcHAw/vmLX/xifvVXf/WcNuJCddYTEXJF2Yyb4cEONidsa/Qi4t+oVn+kErmv+JdFbVI/kGooT8q2p58VwBYtVI8K0wrwQsCjaxqW0c64qWzDa/f2sXcozftuOc5s2Q0d9lUAd9I0mK0665rhtn0MCEHS1BgppLh4Z47jc1X2D2V5+kUDfO/EEsfmqnhSMl9zSJk6uYShvL90pWmq2y6BVBOZAuULJgHXC8gmNCxDZ75qc9v4Es8/vLNjW1ZPh43PV0k3qpwc3stv/NLbeTA5iA44gUSG2ZablR9IGq7PvRMljk6WmC43qTQ9MpZOIW1ycChLX9oknzSYLjUZ7UspcBYdn/AGnksZ1GyVhGAa2kr2ZvjfgetTbrocm63ScgPe97UTyng2ZZJNmhhCcN9kmTtOFWl5PkEglSeYCDNH/QDfluEUrrHGv6tb3T9VjvVpdcdDjyYiDZ3FaksBdSQNR+L6GrVWnUfmavhSoqFYyRMLNYayCYayiQ6T2ugJfqrcYLGmEhfGCinccOglMjsuNhyWGysRPetVL+2iSP94dLIUt3r8QFJqODQcpbextYBH5mtcpmn0ZywKKYtDOzTmq601bFwvOqFiw+H1zz2EJsSGfnHtjAbAtXv7sD3FrlRbPs1wWGEgbWHoguv29sfao61MYW7EeHRj1Bq2x52nijw4XeGXn3Gg48HmXKuXKc3xhdq2WVRsB1O4GXhMmBp+oDPal35U1ib5lElCV+bTyfCeHD2ABlIBf12w6h597nYd52vic8tb8u1vf5vvfe97WFank/X+/fuZmpra8gZcqB+MioT5m1UHkAi1QI+mBbjaOiIS7IPSGrVXN7JNypU2oFilXY2+mr1iRE0o77OWp4Tcpt7+hBdQabrsG8xQrNu8+6vHlZDd0EkKlUdnewFLNVu1KNv2p/394+2UimEaLKiQbCEEo31pxhdqzFaUyeeBwQyTyw1qLY8WqpU3kLZIhH5U1aYbD4oZuhog8MIw83xK2VE0HI+jU+WuN7xI+zS+WOM9KZM//K//h+T11zJMgsyZZVKmjq6prMim63c9Zu2gPBwQjNsQh4ZznFio0nJ8Fqo29ZbHRTuyGCFjaOiCWsvDkypOZrnpMlpIsX8ow7ePLyh39C6fp2sCxw+Yq7T48gNzHJkoIYC5sh1PEu4fSPP9s7UwfUHQ9Px4QxVQBd8QHBjKUtgEhN0/VebtX3iQ8YU6jufTcqNEAnVOB7MWpqY0in4Apq7YsEbYBtQ1SBg6ApVDev9UmSvHCh1ALGXpYUTWyjGNbE/U9Sd7TrLopV2USxqUGg7llstQ1iIIJMsNB8/v/Las3t71mIatiMwLKZOG7WF7AclNAsTrth8v+MW6w+5+pQf1wwimdl3aVrZhI8bj8K78GkatWHc4tVij0nQ5vdTgrZ9/gNvGl3jpkx49K7bZlGavbcvNLCq2kyncCDxeNZbvKRx+M7aqkDIZ7UsxXW61xU9FHREfQ1OB7BEIezReYedz4nPLICwIAnx/7Q13cnKSXC631be7UD8gdS4wytAFTffcAZilC/YMpDi92OjKXvWM7cK/MzRoX0NW2z9sVglDY0c+yXSpiesFKtjcUAL4StMlZem84KqdvPurxynWnHgRddriljxfMS1ayCwSDaYJdbw8byUXM23p7B9a+cInTTXhM5CxuGZPHwI4OJTlgZlK2HoVlFsu2UDdwNIJPQRzPn44FKCeAk0ShmoHglp0qy2v88lflxz40z9Ae9nL0A5eQbnpIp7ydOoCmnUnDlI3dZ1MQlJ3uoMwuerf5ZZLLmnEbYiUpceLV7nlcWKhxo8fHuHavX3c8tA83z9TpBbejLNJg4NDGfpTehzxpEFsAwIrNiACODZT4ZsPzyNRN2xT11YmCRtu7PgftDGrsGJZ4vmSwYy14Q07CCQf+tY4x2aqioH1g/hBQaLeWw2VqPOaCkX5pYarQL2p0XKD8PyqiKyG43NqsU5/emXasOn46JpGX8pUQvMuuZApS6cvtRLRs15ttmifXKhi+wFLYarDbHnFVNjQBW54fDVN5Y62b+96TEOvOqFP3HaGhapNueEysdyg1nK5ZCTPwKr4qtXJCe0Lft31u3p69Sp0ny234gW3G+Px0uvHOhi1Yt3h/qlyOHRh0B/6wd15pshUaXs8sTaa0uy1bbkZONju7MXDu/Ikb9zLI3M1QHLJzhwHh7KcXqr3HA6/Ue0fzCgWdHwpzl71AxnLMyLJRtrUqbW8R2W0ez5zKbcMwn7sx36M97znPXzoQx+KN6BWq/EHf/AHvPCFL9zq212ox7gM0Z0x2kqtFpB3Kw1wHgUA0wVcNpJjIJtgrmxT7yL83goGMzRwu2Qutf/nZv5nIvR/+vmn7OH7p5fDJzDVgtw3mOFXnnWA7zyyyHLDJZMwYs2CL2Ucs6RpQrEfQsMNgtAMl5A+XwGGGcvg2t19HYvPYs3B9lVuYqnhxoHcCUOjEQTKFd9XYGrfQJoXXz/Gvz8wy/hCnYShYxlayN6pm0jEUCoRdJPP3TPFfVNlqJR5y8f+EPHQHbj/+Gnq3/w+xbrDTLlJreXj+cqYtGZ7DGascBBCdIj+16tayyOTMOMb2UDGoj/dr6Yimy4N1+dlT91Lyw34/JFpBtIqED2bVAzHifkad55eDrcfmoFikqIgbS9s0RmG4KsPzVO11fGptLy4XVtImSyGWZHRGEikRYsQsPKRk7GVyXo1vljj+2eK6n2iwQsh8IQyqQ3aQCFCqFiwSJMXDq6YoSg9bRlUbY+UqVNuulRtj1zSjJ/gLxrOMFdpoQmN2XKTYsOJfcIGMxY78ykksmeLim6L9smFKgtVG8vQ4pZqzfFpOn442atanxJAqjZ72jIoN10qLZe5it2Vadg/mOHQcJY7zxQZzSexwvY5QsTAL7IIGe1LsyufpNJy1cSnX+LKsZXvQjdGoxdPr14Yo8i2ZCPG4wtHZ2g5PqmCirU6tVjD9nzySTP0BJS03IDRfJJi3dm2abyN2qPdmKdASkYLSW66eheHd23uYLCd8UebMYnbwdx1RFDVbMb60+jhg/ZsuUE9jFk7vdR41Ea75zMa6px8wl7wghdw+PBhWq0Wv/iLv8jx48cZGhriU5/61JY34EI9ttUrADNE52RbO/CKwEr039HvBJAwwPVXgsC3QqFF8MA01LzbyYUaE2EM0aPBjRIFCjfad0ODpxwYZGq5wdlis1PwD+wbyrBvMEOl6TBbtvmTl1xFqeF2ONSfXW7wse+dQaAmd9xwGKDdYiQIJGlL58BQhrNhKzEGflJpGExD42kHB2IxsvqVZLbcJGHoGJrg/qkyrfDJW9dMkNBwlI9aX9rkKQcGeOrBQaZLLSaKTVzfD7VCK4xRw/HQhGCskOSj3z3N+GKdncUZ3vOJ/8lFC2domkne/5L/Qd9ci9my0jXlkiamrsxNK02VTpBPmSTNlUGIbodZEyrfUwIz5Sajfcn45hvlJmYSBqdDQ91/OTLNcsONI2SA0AvLpRomErRcJdL3AjV4oesCgUQKQcJQtzYzZMls1+9o16Ytg7qtGJ7+tInjKx1hxIiZukbKVAa9Gz3dPjJXpdbySFsKOIlQVxaJ/LUQ0GlaFMm1Ejjveiqsvi+pwMVIPomz3KTp+gQBtBw1+Rk9wb/q6fv5zD1T3D6+RCCD0I8sADT8IGCx1uKpB4d6arV0bRcZWthKlUjXp+F4NF2VlBF13k1do5DUKTaUMXAgJYZQU2njC3X2DKS7Mg0PTJc5u1Tn7FKD8YU6aUunL20yWkjFgD6bMDqE2peN5LnPK1FuuDwyV+WGff203GBdRiNiiyKwct9UuQOs9MIYPfXgAJ+8/eyGjMd0uRmb+AZSrgp1J8yKlTTcgFzS4Pjco5vGg94E4REQ/cqDc/zr0Wlmyi1myi0+eftZbjtV3FQ8HjGFDVvdR9rTGIQQPTNUvWintoO5i/a5gwW11bF52kXD/PR1o2QTxrZMMZ7PaKgtv2LPnj0cOXKEf/iHf+DIkSPUajVe85rX8LKXvYxUKrXlDbhQT7zShVow2lmhdsClRT2csAxdhNqaCJzJ0DRva58rIJ6acwOJ4wZd25Dd9FSblbMRw4VioY5MLNNy18Yr+cBMqcmOfJKdhSSzpSYf+94ZnnP5DtIJg7H+FJqmMhgbjkfT8TpAansFqAk2XVcLVwfY09W0oiZgstQkYRprbk4JU+f4fI2W51NImdhewHJDhRYrZkXiBQH3T5eZLre46epdPDRb4diMsknIhkL3uu0RSLh0JEO5pUTs10w9xLs/9VYGasss5Af5H7/4Vu7fcYj+204jUQv+Uq0Vt3Q1jbi1Npi1MHUtjNKRHeazSVPDNDQGMhbVMEKkGnqBtdd6jv1AG+MQ0J9RpruGJqjZ3ooFhq9E7klLcNlIVjGAptJSGbo6NlVb5T4mdBFPlGYTapGJpliFUEMWA5kEGgpQjy/UFNvTdDuC0qOr0fECHF8ipTo4kf5NiJUz7K26mKNhkkrLVdYjuQT5tMUjsxWWmy7zVZtCOugUYS/W+dw9U9RaajBBhJ9da3lkkwbX7Cn0vNCsZo+OTCzznq8eD3V1yuMu2maJAtKuH6DryhYiYYgYhARIDo/mefUzDqxZ6P/53ine9eWHWW646oFNSmq2R8PxWK67XLunDz+Q7O7vFGr3Zyyu2t3HsdkKyw2HY7NV+tLmhozGZmBlM6G7H8hNGQ9NCHbkE2rYI23iBxIjPOa267NYt9GE4OHZijJWFnDvROmcQdhWBOEPzlTiVupoF5uTjVqjKofT5LbxohpgCog1lAcGMyzVnU0Zql61U2+56fJti4V6LJINtkt31622BMJc1+Wyyy7j85//PC972ct42ctetuUPvFBP/Io0Mt1KohaTqI3mBSvu8xFoWy2Y7/lzgZqtWC8lVtZid/rV2xB1jh5tRZsaAPUNkFrTC7jz1BJ9aYuW63N0usy/PzAbAkeDy0ZyGLrSk7ibKP29QPLwbBXXlyTClpSmKWPJjKmRTBhICdOlZhi4DQcG07zw6l185cF5vvJQjb4QwFRbESOhAKsAinWXpGnTcHyOTJT5vRdezoe/fYrvnynGzuHZpMGT9w3wY1fs5K3/+gDPu+/r/PE/v4uE53Js1yF+6xVvpza4A69qc3a5FftbRa1d1f7TcH0fkLzwyl089eAgH/72SR6YrpCyVItSF0pDlDR0LtmZ4+RCjdmyje35VJp0+FNFN7LVjv1qP72YcTA0QSA9NRWoa2hyJRpLE4KUaWDpyisubWl4gTpGyoRVhZjbrk/KUre/ctNVU5O6wA8Uo5i0VBZjteXyyVvPML5YZ7rcxPYCErrGaF+Ka/f28ZQDAyQMLc7X1IRiTJAy9tfTxQobutIMXhnAcLwAxwjIWgYI1aK9ft8AL3/q3hjsaZoykr3loTlcX6KH9hbxNRwC4q89NM9PXj0a/32vC1MgJV9/eAHbCyikTEpNN54mjr5/QbitxbpLX8rkitE8ui44tVDn8l15/suzD9J0AsYXavFnHZ0s8a4vPxxrJE1dJRFUWh4aSveYMlQ7tptQuz9j8ZT9AxybrfKKp+3j+n396+5Hr2Blo0W710nDn7x6lJvvnmS61IwfUFxf6Q0B+jJmHFtVsz1uvmuSS3bmttwK6wA1wypiqtxwMA2NQ8MZTrQZsQKb/u3Nd02SNDXqtr/mmnhwpsJ81VYZsYL4gW2xajNfsblsJLcpQ7UV7dTjHQvVrdb7zmyX7q5bbQmEmaZJq9Xa8odcqB+sCh/iQ02LAiiGBhoCHyWYd/2VtsrqKcNzHYZsv3yDAHwRYGgiFjW3v+25fEY3LdtW3saXUG44K23NwEfTBEs1m2+fsEno2roTP+2lbCMCTEPgeIo5FFK1b5dbHjkJth7g+AHLdRcvCJiv2kyWWorultB0ldi+6SgnfikVQ2npyges3PCwnYB7zi7z8qfu5T0/dy3jizUemasCgkM7MozP1/nQt8dZrNg8/75vkvBcvnLoKbzxJ3+TlkihLTfi7fWCIE4J8CQEXgSeDFxfslhzYpuLt/7rA2r7fOVaPZCxODiUpT9j0XR8Fio2d59dVixBWBqwqy/FlWN5Kk0VN9W+EEYmrpEHlO2pa0MZdQaghSPpmtrWuWqLfMqgWHcYSFtUbRc7bLU5no+hazzz0AASuP1UESecXIz0VfsHM0oYbvvYnq9cuQPlSWR7PmeLDUoNh2MzFQxddEwtCpRPUXSRRkL96N+6BqamzCRl+AvH9ZmrNqm2fAazCV79jP1rFmylP1vG0gXD2bURPeWmy51niowv1mi5wabtq3bWqNxwOb1UxwsCSg2XQCqBcyAVuPOClVazRHLZSA7LUMC5kDbxgoC3ff6hjs96yXVj/N33TlNquAxkLUxdx3Z9quFUqOtLWn7AHWeWGcwmaDqqZV5teR2tsKYbUEibXL+vf102abum13plPJ5/eCdj/Sn+6a4JvvzgHMsNFz9QAzdDmYSygwkHNUYKSVquf07asAjUpC2duydKa/JCR/LJGNQAG/5t1jL40oOz3DdVRhOi68Sn50tuPDDAqaV6/HozjGDbmU9uqi3bqnZqO2Khtsu76/6pMv901wT3TVVoOsr896qxPD/zpD09saiPmU/Yr/3ar/HOd76TD3/4wxjGORnuX6gfkGrXUHmBWlwUTb0yDm8ISFoGnh/QClHZuRJUctW/1cDdNtBddD7RP5pqPyYSxXL4rFhKGJtjMEABVtdXxzGha3FLt+UHLNYdTE1lLQohySYMHD9gutwi21LtykgTFQEwQ1cATAi1oylL+RZNLDco1R204SyHduQ4tCPH/VNl3v+1k3zzkXlqLY9ACP7HTb/BL479Gx+94acINB0hO/c1CCBhGgiUdsoL7RdyCY2WJxlfrPHvD8wgUDf8ctNVZqR0LmKLNZuUpa+I+CUhqPKxF+t8+FvjpCydYt1hutzkhn39aJoWC+e9cPIzCCSujPZdQ5cSF2UL0XIDlmoOh3fladh+2Lq1cE2fphswEIKs1z77IgBars90qUnSVOPsCUNjodqiZntkEiqv0ZOSvrQVhsVLmq5H3faYrSitXDah0/IC3ECG7VrZ0TaPGERNW7HVMDSBDP/DCyQzZZunXzS07g39kbkatdDCoVtETyahjvstD81z15lllmo2+ZTKE/UDODpRihkhoIM1Suoak8tNWiimMGmqa0kXaqE0A0HT9UkYGqamMVe16UsHjPWlmKu0mC611rBPj8xVWajYGJqGoWnYrk8xbJ0bmkAz1PlUnm+C+90SpqbFU266JsgnDQxdbKp12woD03D8DRftXhmPiMl52sFB/uobJzkxX1NTuGGqQMPxSJg6B4ayWLp2TtNz1ZZHse5QqquhnNV5ofWWR1/Y5gfW/dv5SouzrmK4LhrKsKsvvWric3e8v9mkoaQDthenJAgJxYaz6fafT+1Ut9ou7677p8q8/fMPMr5Yj6fGASaKDY7NVHnLiw5vyqKea235SNx5553ccsstfPnLX+aqq64ik+n8YnzmM5855425UE/sioT6QTjRpQsFyjw/wO3imN6NeTqX2q732e7yJbS8zonA5kbis1UV+Y4htPiLL0Jg4fqKselLW+pYhz5HKVOLw6UPDKUpT7gYhppYi4xZEYTtMWUd8dffOskbTT0U7c7yt989zezJSV5+5xf50FNfio+gaSX526e8ON621cc7QOL5QUd7uOlKpsvKKHai2OD/fOkRyk1lx5AItW2WrrFUs6k0XPqzFnVbeTddNVpgrmqzVLOZqbTQNWXdMF1uYejKv8z1Jct1hyvH+tiZT5AyNRaqNslQ4I8MzVlDgboCatBwAuq2sgxROirF9NQdn3zK4JmHhjv8m150zSgf/OZJTi7W8HyJoSs2LGXpjOSTPDRTJW0ZtFyfxZoThwR7Usbmv1IGGJpGIP1Yo6ZpgoylNI6OF8STpC0vwA9biklD0HQVsPy5J+/mlU87sMENvbdvwW0nl5irtvB8yVSp1QFomq7PzXdNAnSwRhKJZWhkMVj21FSvJlQbRkpwQ0bkuj391GyPVzxtH9fu7eOTt51hqtTsyj4dmSixVLdjUFK1FXg2dRF+JhAIkoaOFbbyNaCQtkgldGwvYLrUJGXpm2rdemVgjkyU+Lf2aKh1Fu1eGQ9NE/z4lbtoOD5/+m/H8KWkFgZqD2Ys9g9lGchYYVLD1qfnMgmd5YZD0/XD6VB1DExdUEiZFOsOss2gt9vfGlrofReo1I58ylQRaG0s4eePznQeP6EeAqPyA8lc1d50+8+Hdmq9FuFW2c+N3udD3zrJsdkqhi7WpC4cm63GMWhRa3I7Q923DML6+vp46Utfum0bcKF+8EoxQIJkQvmvBF0AGDyxwNN2sGDdqn0f5VY/R4LtSwLpg5Qdr5coZm2+ascCchnG6/SlDOXjVHNiawjPU5qwSHcUCKWB0gScnKvxOzcfZShr8cB0hYGp03zsH/6AA8szaALe95Sf2XQfkcRM56pdoOH65ISuAtSlWvC10O3f8VS7rOH6ZP2AwUyCXNLgnsmS8gZrqkQBK/Tw8gNJIW0ykLEoN5QJ7ANTZZZqSfrSVghwJOVQU9RyPDwZpSdErtnKjqTccNk3mGasL4kfSEYKSV73oxfx44dHOpzPv3B0hrSlc+mOnGoNI6i0HGYqNoWUGbZ9PZZqzhpjXy00BnV8ief79GeUaN3zJbYfYGqCoWySYsOh5vg0XB/Hk/E5tQwFngtpkx+5eHhDoHHJzhzZpEoLGDC06MyElhcBpVD/M1Nustz08INVzEnDQdc0bju1RCbUvEULVy5hkE8ZLFR9TF1dU9H/Iv3njlySgYyF4wekE0YHW9SNfRopJJkuN0mZGjXbw/FU+z5u3UZeTmk13asJwVDWwvYkNVtFUo32pTB0wZGJcqx161a9MDCWIfjO8Y3tJ6JFe6uMxzV7+rh4ZxZTV4kV7VOF0ec/GgZIHa/YNg6i/+7hb91w8leP9Irtf9s28SnC7Xw0DNZ2a6c2ajWmLX1b2M+kqfH9M8togthmBBTQzSdNSg0nbvMf2rG5F2oQqCGiXmvLV8RHP/rRrb7kQv0Q1GpA5QYBth3EInnkWuf57cI9TxQg160ezT77IbWoKzU3chWCEyHLGEgFMEw98iDykUIwlLGYq9hxRNNqzVzgq9cUGy6niw2khKeePcpff/Yd9LVqTOZ38KUDT950O1cnDXSrphfQ9AJySRNDE1RaLklT58rRbOy3VayrFt98pYXtB1ih1sTQ1Ph7dCyrTY+GHYq1TY2BrMVFwxne8LyLaTo+H/zWONOlWZzweBmaypjUhNIqBiFrs9x0OH28TtPxMXSlH7tjvMie/nQcVH7z3ZNMLjdwPJ9Sw8MLW2VpS8P1AqZLLRzfp9L0uh4Dt+2cKeAs6UsbgCArA+YrNpomuHQkx60ni4CKUdFDMBIZq16/p5+DQxs/XR8cynLDvgG+9cgCpYZDJmHiBwHlpoftquOX1QRnig0Shs5AxlqzoCgvrxY788lO/aIQHBzKUm+p6d5ACHJJI87xtAyNfFLn1vElEobGR79zCjeQzJSaXL3HINtlKRnOJkiGMVpIqUB8O5CQKkprd1+a43NVEuHwhuurazxpKiay7vibxgn1wsDsG8wwH4WS92C4uRXGY/9ghot35tTn79i+6bm67dOfsljG6cmgN/rbctPBMpSpse2pEOuo1b56Sjdpajiu8tQ6tVjjitE8mrbS697q9m+XdmqzVuMLrhzpif28d6LEv2/Afl6/rz9u83e7LqI2/yNzm4OwKL7s7hPTPe0jbAGEBUHAn/3Zn/Ev//IvOI7Dc5/7XP7gD/7ggi3Ff5BavQB1kCJtU1qrdV0Xam1F5qyghOASZXq5+ni1R0UFUi3wAjA0xU6MDaRZajicLTa62omo91BtTSnhpfd9lXf8+/uxAo+7Ry/ltS95C4uZ/k23N2IuNio/kLQcn0zol5S2DCpNpfUZzKp2zGLNZjk0GO1Pm1SaquUoxAqYFRC3qxw/oOVKhnMJpstqIOiq3X284bmH+O6JRSpNV4V861rcNlOMmGLhIv2argmEhPmqzRfum+Gh2QpvuekwaUvn3rMl5sot6q7fceCqtjrWxZqN66+1LVld0fGJFjwhVEs1mzSxdA1L00iaOq6vsiqj/TU0MHTlmbVZaZrgtc86yHy1xfhCjaWarQA5ShM4kDTZmU/y0GxFTTL6AYk2kaIQSjdYs1W25WrWI7KEODJZUjFSjo+la8rzyvZ4sOogBAznEvSnLdwg4ORCjaOTZRWyvdrV3g0YLaQIpGSuYndQxhIFxlKmhhcE8XVwfF4NFUQt1Olyk+FMguWWy7HZCnXb4zP3THVlNDZjYJ5xaJC/34a4nPXOzfmYnsslDQayFoPZBLOVZofYvptB70DWImFojC/WFXMbxlkJQWgromO2ZSkW605sidLyAop1h/mqzWUjeUYKyXPe/kerneql1fjdE+qBYENfM0PjOyc2Zj9vHy/2eDY2vgu0x5e5zXqP77kFEPbHf/zH/OEf/iHPe97zSKVSvPe972V+fp6PfOQjPX/YhfrhrI0uTQGxizGsjOVv9rof5tI1gRE2vjQBARqaUDYLQDyF5nXpbWpCtSkTps7Ds5U4j3C9UhYIHm/+1if5tVv/EYDPX/Yj/MYL/we2mVj/hUDSELRC4CdZm+MJnaHofiiyjzRsK2aiYTtIF2Fr0uPskhu3T7tv90o77PSi8vt6z1eP87pnX0TS1GJxP2Er0A2UR5hlCEBNTE4tt0iYGpmEGbfk6rbLsRml8Xjl0/ZxplinGoISQxPx9RkZwEp6s0IxdRFGUykPrIShM5ix2DuYYbbcYqnhcv3ePmYrLYp1J2bcBjIWI/lkT6JnUIvbj1w8xLHpckdUlJSq3born+TEQg3XC6i2XBLZlbYlqAGIlKWzfzDDTLm5hjXqS5uM9aU4vCuH4wfcN1nB95X+zTQEhaSJ6wc8OFPhirE8I/kEM6UWpxaqGFoOz5eYhkbWUpOT1+7pY7Fmc2apju0Rn3Ndg6ShEwCz5Ra254eTojI+Xw1HTaGeXqxj6hrv+9oJ6qGp60XDua56ro0YmLSl89ktxOVEjFs3f7huYOJ8TM+1M3zX7emjFk6WmrpGxtJ4cKbKgaEsgZTsH1A+X/dNljF01doVqAna5aarvPmSpkoqgDBuSZnhDueSXLdHXZ/HZqs8MF1mqWYzkLXOefsfjXaql0GLuUqThK5xx+n1fc32DaaZC9lPIPQxXAFruwoppksNkqa+ps2vSn2fs0mDS3auz4K1x5fpGrH9TS/V819+/OMf56/+6q/4L//lvwDw1a9+lZtuuokPf/jDHdTlhbpQsMJoSJSvWPwQ/DghryeCPk0TajssQ6MvrUKRW65iGwKUxUCw2cIfit0tXU2oVUMDTEH3IPIAuHTuDK+9/WYA3v+0n+NdP/IypNj8O+sFYEaBuJ5cF4AhQEhImxoNx4t1VBFLFbUzxvpSnC02aGxipBZFBnmBShCIeKhTCzX+4pbj/MSVI/SnLAU0bC90qIdAqIlatR0BhqnTl+4UM/elLYp1pfG48aASmUe/W3HwB1OALwVByNBYusBZ1caJzqcvFXBOmToJXePy0TyFlAper9s+emifMVJIMdaX6pg6yyUMfEmcFLBZ/fO9U/zNt8aptDrzIV0fHpiq4HgBGcugJl0aYdxQ0tRjkbGpaewqpPjJa0ZjsNCNtXn9cw5x892TLNcV+HhktkrK0rEMHZCUmy6nFxscHM5SrKvQ6oWagx6ak2pCcHA4w1MPDvCBb46rrNKEeoCQUobmucoyxPVWrnnVEtKwPZ9qy1WsoVxpWRdrDr6vwH1WM7qagB6+6fC6AuxeReORFunesyWmS01sXyUKjBaUP9x69gfbPT3XzrCdXKizq5CiL20xW25x5+lKPGX81n99kIuGM5SarnoY8JTOMhGe+4Thq1gzx1MDPpbOI7MVyg2XQsrk0pEcuq4x1p9mtJDk/pkKBweVBODgUPYx9+7qZdBifMFFCDb0NXvmoSE+dccELc/n4bnKGtuOfYMZNCG4bCTH0cly3OZvf2iTEm7YpzoGRyZKXc9pFF8mBPSlLbwtsKk9g7CzZ892ZEM+73nPQwjB9PQ0u3fv7vkDL9QPf0WgQNfWusI/XhUFJZ/rtuiC2Hi0l/eIvDTbySxL19iRUx5CmYROPmnFLQY3bBmahobwZew6v7r8AIShwrOrLQ+3h1bhQzsO8Hs//t+RQuNz1zwX2eMAZ9rSObQjS73l8sh8PRb9ayFbFBDq2sJF8pKRHKcXlX+WlMofrG57jC/UGMhYXDaa4/P3zQDrg2I1xRXE7F4gwfdBCDWZObnc4DsnFjF1ETOHkSt5VI6vFu5MwmDt0VEO+eWmy8mFmtIoQafiOfxvgTLRNTWNpKWjOX7HcMJq7zpdCIZySfb0p+NMRJX5mGO+0ooZmPapM4Cm7fUkeva8gPd89ZF19WkBcGKhxmg+iePp2J5Hw/HDxACNgbSFoQuu29sf+1xtxBqdXKhzYCiL7fkIIWK/KBBxXmQjzHuUkngoY+UAQc32mC418aVkKJvACYFztHD6Ull6DOcsHB8qYQRUpemogHYh0LUwo9j2GMhaawLOu+m5ujEwvbYMH5yp8Be3HGdyucFSXYGayB9uptTE9vwN7Q+2e3puNcM2vuAwW2lhaIIrRvOMFFI0HZ9vH19karmJqQucQNKsO+hCZXuO5FNkEjqzlRYzlRaOF7DcVAzYpSM5+ttayUIIhrMJzi43mVpubqpVPB+17qCFVKkXpbrNQs1mRy6xoa/ZVbsLfPzWMxydLK8dVKk7lJseo4UkL7txL45/mvGFOg1l3ggCDE1jtE91DN76Lw9SbrpomuCioQyvesZ+rtrdB6zElxVCE213o/bEquoZhHmeRzKZ7PiZaZq4rtvzh12oH87qJG/V/ywdcpbOQsh6RLqE8zWluFmpSTQtZlk2/XtW1uXY7VystN42q0CqlosuVIvLMnRu2NdHLqHcyIfzCc4uNeIWg+P5HJ+vMVtRlgJpS6PpBF3ZrYbj03DU4gfdwcwlC6fxNZ2Tg3sA+PTVz8cIFzONtaxW+35HxHYhtDTQQ0f7aphm0G3/+8McQE0Ijs1WlSdU3WGx7pAwdBKGxqfumIj1ZYYmYvbDX0X7+V30bTIImFhukrEMLEO1EG0vYFc+gReINtNS5bcl5ebJDUIo/zE/ZGMMXVtpR4YAQLV9DBbrdgzY2qRNgPqcRMik7cwn8KUCVtHC/sqn7+Oz90xteWx/tQD91GKNyeVGfC2uaOCIB2P8ABbrTnidK2CUsgx25hOA6Opz1Y21OTJRipmICFxFrWbC89cMJGeKDbxAMpC1uGwkr3zEwuvl5EKdLz0wi+0FpEMdlhDKtiOK5/L8gLrjkzINLtuV4cxSnWLdoekG6ELEDywN2w9buBppS3QEnEOnnisIZGhMXAMkl+zMxWzOZi3Dw7vyvO0LD7JUs/F8iR8E8cRcKswH9UJn/O0K5u6lonM1vljjvV89jtDgyl15RPhldfyAStPF8QMMTWdXIUXLVfcJQxfsH0pTSFkYmsarnrGPhu3z8VvPcFnIgEW1XHc6LF3e/dVH+MYjC1s2Pn201W3Qon3bqi0PT6ocXiEET9rb39XXTAZKp1lvuezIJxBhB0ANqhjMV2ycjMVzL9vJWH+am++a5L6pMg3XJ23qjPYlma/YnJivxcyy60tOLtS480yR3/ixS/n/rh2jPb6s0nJp1u2e97VnECal5FWvehWJxIqOpNVq8brXva7DK+yCT9h/vFq9JqtWpK6m18JWldbDhN35LNv1SRg6To9+ZqtbgpFppd8DAmsHnCJ8pDJ0wc5cgpOLDa7e3cdPXzfK+792ghPzNfIpC11TdLqKhBKqxbXJ56yHJZ81fhd/+c9/SjFd4MW/9C6W04UVVk6uD8C0ULwrUNqupYZD3fEZziW4eEeOo1PldQFsNmlweqlBwtR46oEBziw1KDYdMpbBcNZC1zSOzVXV8RGEGY0iNtHd6KgamnL3dsMb3OnFOsNZi0zSpGqrdq5qC0qabkA2aeA1XWq2T8KMHPdXciHrLZds0uDpFw3wxftmqIZ2Fyr7UW1XwlRu8bmEQV/KZKFmx+a8q7c3aWo897KdIATLDSfUsHVqgTQhehZtB4HkKw/O8vmjM8yUW7G7ecP28PzwYQAgeqiRK0AMVMsvbeqkLAUilxuqNfnMQ0P86rMOxovpRrFG7UxELmnE6QMRIIlCquu2aof3pUx2FZIdAHNXIcVEsY6uC+q2R93x1thzIBWASlk6SUPn+r39TBYb3D9dIZs0YusSQwtAEGvpmiFwjirSc82WW/ztd8b5/pllamFLKJs0uGHfAK8N932z2KLoOzlVanUEc0cMYKXlMdafOifz1UdTWmj9Umq6HBjMxgAsylX1QhbIDR80U5YRA8fTiw0u2aGRMDUuG1Gu9/98ZFp9X0IQtlx3uH+qTMtT36lMQqc/ndiy8el27Ws7a5m2dE7O12i4fpwxbIe6x/unylw5Vuhg8yJfs+MLauo2mzBClrXTAyybUAbNZ5cba66LTELnk7ediRMlIgPcTEJNYRdrDu/68iMcGMpwyc4sCUOjWHdU4P0WgHnPIOyVr3zlmp+9/OUv7/mDLtR/jNKAfEpF2bS8AB3lKN8Le3Q+y5cq6me9Fpho+zd0Mgzq9yK2gtiszDDGJvj/2fvvOMnOu84Xfz8nVq7qNN0zPXlGwfJolCwHbGzWgSSCbXnv3r0XWDCLuffaBtYb4XoXjOFndvmxLCYsYQHvLgv7W+SAkbHBWdiWHJRG0kiaHDqH6sonn/P743nO6aru6p4e2UIG+vt6gTzd1adOqno+5/v9hESOxZS1KE/Nt9lXy2cL8z0n9yqT0DUlG0/UeyYE4XM7YT/w6F/wc5/8bYwk5vTkMWKxTjbfrgEokMaxklwviav7a3lpmKoW8fR1MHjOhICxks1Pf/fNlHMGP3//ac4stTM3/wsrAksXA6/XhFAZpcmAWCN9jwR5L2kqQ1QTAsuUsTddP2RCWBwZK/D0vOS1pJ2wgq1z01SZc0td/DCi3vXWSfbqmgjg5P4RXn18Dy85NM8DZ5bRNTm+TPfFU4KHm6fKPL3QomDp+NG6CEITakStSeL/O153nOMT5S1BzU5J20/ONvndB87zxXOreGFMztSoqS7jkgKC6cnRUJFeDJ6/JIGCbXDHwZrMagwi5louo0Uri525VtRLfyfi2ESRPeUca12ftZ4Mge/5UnzQcgKqBZPD44MdPpDgKkqgaOksutK3TFNj3jhJ6HoJuqYxWc1xbE+JK6s9ju8pUVOmtmmsVc8PGS2agKDek+bAurIlkce7zjn8gy9c4NnFDpogGw11vJAHziyz1HZ59z3S+XyrkWHKRZIpA+vB3GmlAFAXgm4QPScl5XOtOE54ZqHNakdegxTMprmqJdtQ1hURkSKfp8Cx0fO5WO/y0sNjWcd1oNOE5DW5YUQlJwGLVF/aTFbsHcc+bdzfr4cbl31mHp7hL08v0HJDSrZONW8yUc5xbqmDZYhN42lYB+UgH0RO7q9xcbWjYuDWRTGHxoqyqzokRunCcofzS9JjzItidT/J7VuGzmjJotHz+a9fusz73niCUk4+qGiadl3k5x2DsF1/sN0aVv2KOUODWs4gVByhQBmIwjqP6IXEYgmSaB72WT/07/8Av0eTT+pptFAKKPqVnluVLiWPcptCHnQYJRwZL/Hjr5FP46lJaN7UuWmyRBJDvedxYaUnR5nXOeHQ4oh3f+b3eevDHwXgvhOv46e/8x0EuolqOAwFOtnfK4KrHHVJF/MECa5WFto0lLXExvOkafIHV1Z7lHMGn31miQfPrxLH0jVfF1I16PhRFnAdx5CzBAmS1yVJ0zFeKLMmU6xrKNPL9Kky2+dE7uvZxTZuEGb8LYQ0bz2/2GGiYhPHcLneI47XwW06lvaiiGcW232WD1381BNEcUFumCzysqNjfO3yGqNFmVzgBOtu93lTI4gkSf3cUpfjE9t7CJ2YrnLzZJkvnl9hue0xUbZ55bFxDAUmnpxt8mufOsPjM02SJGGiJM1pG70A1485OJZnpu5k11JTookU7Kdlmxo3TZYZLaqpRc7ENg3OLXcy48qdRL3ce+d+np5r8emnF/EjmYMYxdIRPmfpTFZMEHBsosxowaTtBgOCA8ePqOR0HF8mQkQx9LPZ5INOgqlp/NArDvFbn5XRP3srOUo5PTMjtk2dI+rcdmcbrHV9Jso5CqY0i067iXGScHG1h6E80VJQOGpoEoSoAOvtgETaAUyVdrK7pDqpcaJGs7Lr+o2M37lWpaD5iZkmM2s9ltoSVB8ZL2VK4oKlU7AMvDDOaAS6JoF61484bBkDHdf+TlM5Z9DsBVi6jI2yTX0AWG/k3O1kf7fLYdxpnZiukjM1Ts02OTauU8mb2Tlfakulcd7UB8bT/SP+GydL2KaGG8YIJHdUpKRlUqX58OvYdkOaToDjRxSsfn6p5OxGampxbqnNgxdXqeUtWvmAbhCxw+d14DmYte7WbvVX/70WxVDvhWiaVIrF8fOjikwX47TLtpPShZTEv2hviStrDittH1MXGCrw2t2g2JOLhlBfYkgLiWT9Y7jd+xRtA0PTMv5MwwmYruX5ydcf5/ie8oBJaBgltNwQN4joesG6Y/51nK+C7/D+j/4HXn/+qwD8h1f/EL/18n+YPRWmT8hpXI7oa5dHcZLZSwDkdEE5b2LosrXe9SLCOB5QBqbnP0Fecw3oeiHPzLX54y9fyRaEtJNhCIFm6XQVpyxBRgtlnLsw5REK7rl1L594aoEoSdBYj7dJeVq6JpTHVchaL5Bfqsj7TCQJEbDWk4q+E9NVVjseXT9UwFmCutGCRcsJMjXdu++5ZRMX5NbpKvfetZ8r9XW/HyE0ChsDG9UdeGWlw7+473EuLHeIYqjmDW6YLG8ZmJ12n1K+TRqgLMePUMrJfEgN2dFpOgErHZ/RkslqR9p7EMtFoH8UqQs4OFpg/8igf2PKmWo6AR99fG5HrvGA8nYLBkawGpIv+BOvvYGHLq7ylYt15hrdAbPbWsHAMnRetLfKTMPNFNLKlzjrzAZRQr3n0ewFvOO1x/mw8gCzDXn/aEJwbLxENW/i+BFVFblTK5jZ+Pvk/hovOzLC7/71ReIk2TBClNe9aJv0/JAnZpvbAom0A3jqaoNKTme+5RH3CUUixUNabLm87MgYYRzzF0/Ms5F7dr21XddowLS0kqPh+Kx2fPX5bHJkvJjlqoZxzFjJUhYfYfZZreQN3rohFL6/O/volQZdFaDeH7e08f7ZSedvpzmMO62uF6ELwd5aPgOVbTdktCBTNXq+FDW5foRADIz4j46XGCmYPHBmZVMkUb0nPdFec+NE1h3svw6NnhwtBlFC0ZbXIlXt+qHkCyZJwuXVLp94coEwTrjz4AiX6l1WVp8HTthu7VZ/Sfl9OPAEnn7go1iSx5+vEWRqF3AdDxtECQhNsNzx8ZRK0o8SwjiSYcIbCPdxkoaT6zSdMPvwp0Bsq0OLEpSJqIZlSO+pOE44OFrg8Kj8oF9a7fLYlQar3YAwiiSPI4oHR0rXcWw//bk/5PXnv4prWLzrnnfxFze/auD3hq6haYnMA9QE1byRKYg6XkjHW4eyXpQQ9Xw0IUPF/TAe4N4M27cEqQZ6er7JStfH0LXBeSVy/Ggb6RPp8M7cZMXm209M8eVLdcXnUSrRvg4WSA5Wz4+yrlgqmEiS9W2udH3OLXUwdS1zGdeUF5iMDop59Moal1a723KEcqaWRQWNKH5S2r0zNKnY0wT814eu0PVCCb4NQcfVWe14nFloc+9d+ylaBvc9fJW1XjC0+5QGKI8UZArC4Bhs3fz25j0VHnbX8MN4fZzL+vi8VrCkmm3DaDAdz7ScYEdRLxdWOvzyJ57h0mpPcuQMkV23MEpYaHn8yVeu8sY79/GRR2fpeiFChZMnQNPxKdoGb3jxJB9/0kUICcZltnmSXfMEWGx5/MdPnuHOQyO8+Y5pirZB2w1ZaLo8eGGF88vdjGf3siNjvPTIKGlPNgU+T8w2cdTIfOMIMftZIiO2tgMSKRfp6fkW8y2PjhsO3Mqm+kzMN10ev9rgL08vbMk922ltNxpOwXk/aD4+Ucb1mziBTDdYaDnoQp5HTSQkiYmvtp2zNCxD59U3TPCGW6Y2vXd67//12WV+9VNnGCnI8ePGe2OnsUXXm8O4k+rnJ/pRzMWVTqaEjFVkV5JIM+ZqIR4Y8UsFtXyfZMOT7cZ/b7wOliE/314YEURyMlDvygB6XRPIbyjZMfvzU3MIBB034MbJMkcqGo/t6Oh2QdhuPYcSyLHPRo6R1jeqM3SInie6RAqWrhfjdb2QMIoo58xsrBglDJDt1XRNWSUkaKEMNi5YuuSL7KDPLJ/0E1qOBAqmLlhqu/zCX5zmFUfHaTrK5V45sXe8YJOk+XqO7Ve+9Qe4cfky7/sHb+WxfTdt+r0fxsqtXW41zV0c1tmTxw0aMRtM5Lcs2ZSRIC+OE3KGhh/GmIKBL/NUhJUgR9fpeMDQpJN72434+BPz3HWwxl+fXcXQNGyTDNAlsRwLHxwp8PhMQyksk6yrItR2QXbKZhsSQJAg7UlSMKcLAgFzTZemI9XdW3GE0qigzzyzxOxaj0RtTwpOJBgTQhA4gepASKC21pPX9Erd4dxyB12R2e84UMsk98MClEeLphofhVgqh1Ao8OjECZoGL9pboZY3OTXTkERlIajmJAk7Z/a57ys5f8oJu/vQKGVbjp1yygm/bBsDgC3teDw93+Krl9cACXq1vtcYmuwcS18kSQLXNOkHFyMBsaZrhDF87pll/FCqKmXAOcRJLDmQQvnbKfDcPw697UCN2w7AG26ZzMDxQtPhoQt1/vgrVzaBlbI6flg3DO6vUN0gBVPf0QgxiROlkB2kUcQJVC2Djh/y5FyToqVvyz27VvV3uco5g1zOIEySPnA+vQk0jxStLJh+qeVxZbWXRXYBaCLK9mmtG5C3Ym4/WNsS9Gia4FtvmOBzZ5Z5YqaplLR952IbBe/Gkn5Z37gcRljvTn75wipNJ1Bq2xTcxay2QyoFqUK+4+DIQBfx0mqXtZ7Pyf1VFlouLSeUnD5NZrpOVmzqPZ9Pnl7MwG7/Q1K9K1MHVjoehhBEkVRRB2o0L5D3lGVo+FHCctvDj2JuHH0ezFp3a7fSSgCEwNATwr55YIpPBOA/j3zVnVhMbFUJgpYbZuOVjS7w/f87jBLiJMQ2NDpuSNHSdwTCNtpgFC0d4oSPPj7HRx+bo6y+jECOBTX1lJ7aXaV/2c+P2lg3LF/m7MQhABr5Cv/o//ilzV5XfeX466KEcMNocVglG/47rPr3VROCqVoO09Aw1ZNvECXKFiMlu8tX53TBeCUnF41EmtdKFZ/P1y6v8e/uuYVLqz3OLXUyLp5QYO34nhJ3Hh7h0ZkGhgZJIgYsLtLxXBCR8UAEKPsJofZDgt84Dmk521vsaJrgdS/aw2efXZJqX0WET4/dSBIMXWOiZGPqEgTESayenhNsQyMII3y1H0/OtTgxXc1GPf0Byo4fstx2ZafOiTF1gWXolG0jC2NfcwJeeniMn/mum7lU7w7YMDh+xK8rxW3B0plrOpJPFkij0fOFDr/8l89yYaXL5dWeVCWaGlPVHGMlO+Nx2abGswttPKWS0zbcV9K6Q5qnfvXSGmGcSBWw4uaZupbZm1xe7WaGq2EUZf5ygnXFtIYEf0fGi5sI4Ck4ll2K2S15bO947XFuna5wtd6j50tneEhVsTFdL8TSNW5VooOtKqUKdP2ISt6U3oBRTNeLiOI4G2Olo9VizlQGttfHPet/r5m1HkEUM7PmZEai5ZxOzw/52Kl5XD/aZFo6UrQ4QpFGz8cLBWVbcsEi9TC00pGgbt9IHkO7dgD6Nyp26cxi5xuWw9i/b2+6Y5pPP71IsxdQK5hS2KE88Kp5k1rB5Km5Nm+6Y//APqZCi8PjxW2Nkv/81PAR/cn9NZwgYrHl0QvlWDRSIh+BFA1Vi5b8jHghugnNXsC50N3RsYFSOr9Q9b73vY+7776bcrnMnj17eOMb38izzz478BrXdXn729/O2NgYpVKJe++9l8XFxRdoj3crrTgeBGAb63maRGZ1vawLjfVRgqdGOXANGwjVfen6sZJD7wxZ9gMnATSckMdnW7ScgK4f0vODzG9LjrfUC9VYLS1Tk12bgUoS/ulXPsRf/sE7+D8f+3jfG219RjQh+SHDaqvrlIByvN96u/1/a+oax8ZL7FN5cyMFE9uU6rggSogSOcYTQLVg0XYDWk6YcZ1Wu57MNXRDLq92KVoGJVv+X9HW1/+3ZTBSsJRaVRKShZDcPSGEyspMsm5kFEt3dk2sL/yGLlQkUjw0vqa/4jjh008vkSTSC8w0NKzsvyooPV43iISEtitdtm1D8g0Dxfev5k28MOLSSmdgFCIXu5DVrs9y26Ni6xKAR3KEU+/KzE2AfVWprjUMjeN7ynz3rXv57lv3cXxPWeVq3sC+Wp6n5losNCUvZW81x0TJ4qGLdb5yqS59k/yQlY7L1TWHhy83ePD8Kl+7XOf8cpsb9pTJW3KkvNXVT0Go5OMkGLqegekwkkagpr5ukNw/Kk7vnUy0owvypr7JdLX/GvSP5EoqWLyUMzi+p0S96/ORR+e49879HB0vEkayc7HUdllquyy2PDpehKaJbTtCsB6XM1KwiGP5ser6EXGSYCq/u1h1XuME/AEuqeSeRUmScc+2q5SWUO/4rPUCLEOO+yxD2orUOz7nlrvEyIcoEnlv1TseLcfn4kpX8ZUM2aErWOwp51Q4u0YlZ3DHgRrHJsqbzumwSjlit+6v0nCk1UrD8Tmp7qudjVh3+s1/fStEyTYYK9qU8yb1rgyhr3d9vDDGNHTGS7mhx9g/ykQIyjmT0ZIt/eWEUIKhhPnm1sHuJ/bVmK7mKOdMZWmhI4Q0wR0t2diGrigtgmMTJcbLdvaQvZN6QTthn//853n729/O3XffTRiG/MzP/Azf/u3fzunTpzPvsX/2z/4ZH/vYx/jTP/1TqtUq73jHO3jzm9/MF7/4xRdy1//e13Z8r+cbgD2X9zDSbL/r+Jv+hpulODHXSNzZVP0dpTCWY4617nr3JU6k0WL/i1OOj6FrROH6SMROIn72r/4z//ixTwBw08rlHe1Dxw2um58nkMccxevEd10Mv+6mJl3oa0WLH3/NMX7h/tM0ewHlnEHJ1vGCmJ4fUrA0ghiabgDJhu5UIIGuLgQPXawTxgmvvXlPlpUneT4JF5a7PHBmWRp9qvPXjxPTUbIupNN6kgjCDR25lDyuKdAHWxOj0zgSUxfsKecJIjI7jCiWT8hBJOOn8pa0ZvFD2R0TSMNUTXXxokSmEKx2fa7We9QKMtqo54U0nICybRDHCQ3VqY0TCdDDKMGME/7BjRO87TXHtl0Mb9lbYbQoPbv2VnNYho4fRnxJKVY1JWzw4zizTxEauEHEXCOiYOncdqBKNW+gK88pY0hyTKA+HGmHUghUCP26sWtHRUqZurwGugK//R/CJJHjHFMXtN2AgrmZAL6THMGzS22KtsG7v+cWfvkTz/Dli3V8NU40dY2RgkWtYPKxU/McmyhteQ7bbig7T5ZOlCSs9aT5q6n882L1/kLte9cPsQxNdcaEHIfvgHsGMqZsrukQxvGmeK1qXnbLV7sed4+Pcn65TRDFtN2IMJIdr54XYugaY0WZImCoBxHb0NHyUsnb8SKKtrFjUv3XG7t042Q541A+1xzGYdV2VcoCcjxe0Q15TYS8BueW24zkrU3HOMz0NdsbNWbdV80x33S3DXbPWQaHbYORooXjR5xZ7FArGJn5a6g6mGMlmwMjBZ5IfJ7c4bG9oCDsE5/4xMC/P/CBD7Bnzx4efvhhXv3qV9NsNvn93/99/viP/5jXvva1gLTKeNGLXsRDDz3Ey1/+8hdit3frb1kJ1i0mtiPVX2srydcxBk0r4to7kCBHdDdOylw+J4iw2i3e97/eyysvPkaM4Je/4238wV3fuyN5aJjITmA63twJjpRdjhhLFxRtqWzcEsgJGfxczZvKPRp+5/PnmWtKVZyhC46Ml/i+26b4tc+cVxw1bb3rpzqAbihHcI2ex/6REpqmUclLlea55Q6rHZ+OF3J2qbOuIgXVDVvfHUOThGBNSFuEhDSzUIKG1JA2ZxlU8ua2xOgr9W7feEWjP5fXDyWQ9MOYjifz+OJ4XUiQKMf6kYKFZWgstT3iKMYJY56aa5EzdSo5Ixun7q3laKV+RUIg9FQZmmAZOt91695rdiMurXazuKFSTnpJPXShia+yD1HnQteEVBerLmUQxeyr5SlYOo9fbfJvvuMmpms5rqw6Mt9UPf0nCfhhRBQn6sFEjusCJVhIR7VCjfEMTXBsosjFlR5hHGckbdRYMgXNj11toishxIgCp2ntJEcwBRm3Tlc5Ml5krumSNzUMXWNvJUclb5LANf2uFpoOs01H+tF50lxW+sGJTQacQkjwutzxsmPWNQnEdsI9a6X8JlNnc89RgqleELF/JM+XL67i+BGmIfDCGD9M1Mg/wrEi9ZC3zoXTNQl4gyjeMak+ra8ndinlUD5wZnnLHMa7D41edxRS0dZZc3zcIKJWsAbAVCUnx8Br+BTtwXtkJ2PWe07u5Y++fGXbYPdq3mCynONyvceeio21KjmPpg4gO9ZjRTnS73gRlYK5aTtb1TcVJ6zZbAIwOjoKwMMPP0wQBLz+9a/PXnPzzTdz8OBBHnzwwaEgzPM8PG9dHtpqtZ7nvd6tvw319XqURUOc9r+RlX6/p+BCenJJ+f3I4gxvff+7OLh4mZ6Z42f/95/h8re8nkNdjzPL248Ysu1rZGOx6yk57tAQDDe61Ug7PRoHRwoAfP/t09xzYu8mP6xL9S7/5QuXCMI4605JdVNCqC5QFCdcqTuMl/OUkOaHT8426XpBxsdLLRn6ly1NSOCiaUK53FuAJMr2grDvwAVeGFGyDPZVZSTJfQ9fZb7pMlKwGCtZ6EJkXKM7VXDvsDJ1Oa4NIrnoNR3psySEtNNIOWE3TZZpeyFXViX3J42BihOYazgYumC0aDPfdImThH3V/IAKUxOw0vH52Kl5jk+UOLvcBgQ3TpY2WSJsBCxtVwY2S7sHsg6brWuyO6dJI9u8aXDDnhI50+DsUpuZpsNPvf5Gfu6jT9FxQ/wwGlC1Fm2D8aKV8WU29ZgVsDR1jRPTNUaKNqfnW3S9cOCzqAsoWgYFSyeIYlbaHnFCFqwO2+QIquoHGZ88vchfPb2IH8Y0kKCo44XSqqBobet39eRsk/semVVcUKjkDJUdKcGWbWhKhCAynptQnwFDlx1dN5Bjz33V3DVJ7JW8ia1r+FFMTgH39dMnfdlsXWNmrUdJcewavUG1phDQ9sKMqzRWkvFUKbfM0MWOSfXfqLrn1ikuLHeYb7qbchhvmCzyY68++pyjnhI2My9SrcxWtZOoqocu1q8ZK/amO/bx6585x6IC+G0vJG/qOEFEztA5PF6g5QZcWO4ymd850+ubBoTFccxP/dRP8cpXvpITJ04AsLCwgGVZ1Gq1gddOTk6ysLAwdDvve9/7eM973vN87+5u/S2qb8h4NHl+cy+zL3T1+S/nDL73tikeeeIKP/mzP8xIq87ayB7+1Q+9ly/XDqEttcmZO/+gX495YFrpot10AtlBSkOzxXq3I4wSdKFl0R/pwmYYGq+5ac/A9rpexJ6KzJ9te6GyCFknuZqGwNQkj+jUTJPb9le5tNrFDcJMQWdoAoGGrgAcakHXNBkxNFaymarkabsByx2PthcqWwT5HrouwZoXJRwYyXP/qTken2miCSnx1zVBJW9wZKzIatfnzEKbki3tWEw1Ph08R1LZOVq0iOIExw8zYJk3dW7bX2O0aHFxtascvGWnbK3nY+k6UxWbRLme93tcmbqQRnhI+w9DF3zx/ApfuVTHDWT7s5QzeMnBEe45uZepap5yTvLn+gFLEMVqfEqWGJDutxACXZf3hqFEAP1dpf6u5syak41x94/kec2N43zpfJ2GE2z7+dI1getHHBorcnCkwELLZaUjs/iCWAJxU5edEieIqBZMSrbORx6d48Q+6Wy/k5HSyf01ul7IH3zxIi0nZKRgSn5aLHMee56Mtqnkzcwv7cJyJxu5HRwp8MFHZljr+txxoMZTcy26figtZpTRrBPGWLrGRNFkrefjhRJ6xiTEiSBQnEdryH0yrKp5k321PHNNl5YbZFYqkbJzMDSNkaLJhZUePTckVPdBasGRdnfjOMFUxsGNnk/BkoCtnDNZbLqMlewdkeq/3urvKKecyDBOKOUMRotW5r33XKKPul4kuaCJT9MJNllfFEydWsGi6w0fDVxrzLoTUUI/mHvsSoO1XkAjDBgvSluPZxfaLLc9gjjhUuTs+Ni+aUDY29/+dp588km+8IUvfF3b+emf/mne9a53Zf9utVocOHDg69293fp7Xs8xRei6Ku0yGJqgljd5+HKD+cTioe/9QU588RP8xk/+R6yJSV6VJFxc6SFEkpGvn4+Kk3Ugljd0SjkVYJwpFmV8S0p038jH2MizKto6o0WLsaLFXKPHzJqruG+CnKkrV2ppcbHS8Tmz2M5GYT0/yL50bQU+nSCWmZs5gziWX7RTFZsnZpuqAyS5d4aQHnESPwpstUgutFzOLXUAaY6amTgqk9pjEyWW2i4vmirz8JXG0IVSE4KXHRnj6IRU9jWdgFrBouVKIDBWsmk4AfWuTxglCgwnRCH4kexqHBkr0HSk6WTZHvxKllYnAV4Y4QUxRdvILCiaTsAnTi/y+TPL7B8pMFqyOD4hzSnnGg7H7RKmrmHpcoFOuURaavCqrlGSkDmRd73B0dXGrmbPjzi/3OaJ2RZX13rSMHebCqKYi8qLTWjScLOUM5hrOHT9EF3TcIMIXdMyk1BL17Ju1eGxIpdWu9w6XeXMQpuzi2321QqbFsk33rGPDym/spKtK5WsyPhVTSfg4kqXG/eUCKKY//7QZZbbXjZ+3lOyubDSZf9IgVLO4MR0lfPLbcVVjDA00DSNE/uq5E2Nr16qZ51BL0wIhFSSTtbyHBorUO/513SXPzxW5PaDNbwLq5lpc9rBGi1Kw9Wj4yW+ermOF8WS75WqqZFA2gkiwiihkpeCgZyp0XACDCG/Q247MDIQi/V81YChbDXP3mqenhdyabVL0TZ46yuP8IZbJp8zECwrIDdWtDZZTYwpEJSo121V241Zdxor1g/mHr/a4AtnVzi/0uWZxTZBKG1w8oaGrf8ts6h4xzvewf33388DDzzA/v37s59PTU3h+z6NRmOgG7a4uMjU1GbjOQDbtgdCxndrt/62VRTFlJwO802bgqXzq3e+EfeG78DpmOi9BpW8wVQlx8zazp62tiLU76RSRZumye6VQCYPpCtQFEvOiRdGA1+Aw3hWxyaKjBQsCRDGSyy0PHRNKs5qeZOWJ3kVh8cLuFcaLLc9DF2jaGmKpC4J7+XMfsDHD2OZoSjk788tdah3fRw/zjy00rBpQFkpJNwyVebCShc3jJks2zLvjXU/o5YbMN90qOVN7r1zP10/4sJKd0BlqgnBzVMl/uV33rTpKbvjhZn7+2rXV/wi2Y60TT0Dtx0v5OmFNlUFAptOoLhcEIQxXhQTRLEag8FI0cTUdbxQErTjOMEN5fmv5kyemG1m3ZJzSx2mFB/KCSIiZexqGjIM3dA1Gduia0xXc6x2POabLncfHh0YXaVdzY0L7XQ1T71PZLKuD1030A0imRfZ32Fo9nz8KGGsaHF0okzB0jF1CfxShetiK+axqw3+uwpQ9gJ5HrwwYmath6lrA4tkwdI5t9Th8FgRP4oHwsZTs9tGz+fphRZ+JDuD+2qFzOri9HyL+abLeNmmhCRgv6QwylTV4dn5Fn4sExwMDZ5eaBOoh4FKTtol+GFM3tK5eW+Zat7i0kr3mkT4fr7SasdjeqSQ+Re2HJ+xks1Lj4zwhfMrGJqGm8SIvua3rvz1/CgmjGLCGA6O5Hn50TFedXyc2w7UrjuvEa4/83GjejXtApbzJi/eV+GpuRb3n5rn2J7ic04U6O+G3nmgRsePMquJkqVzbrn7dY9cdypKSMHc0YkS33tyH//qQ6fwgoieH9LxQmoFi9DdaZbLCwzCkiThne98Jx/+8If53Oc+x5EjRwZ+f9ddd2GaJp/+9Ke59957AXj22We5cuUKr3jFK16IXd6tv0e1FYl/o4HjN7KsMOCXPvF+bq1f5t/85G9xPjbwohjLsrDU+9a7Pl03RN9hwKSmCUScPKduXvoncZIQRskm405IM0KTjBO2cbFOF7onZ1sYmmCx6fDI5bVMIND1I9aUmvLIeJGRosWt+2s8cqWOFyZ0vViNN3SqBRNbyfVSsJRmGvYUaffccj9xP8n81wRkMVRX6g6uGi9FSiWY5gNqmqBg6az1fCp5k9sO1Lhhssyffu0KX7vcoOdFFGyduw+N8JaXrGfhbXzKPrFPjlOfmmvyL+87BUgSeXr+NAGaKcevHT/k7sMjnJppstL28FVSgKapwOtYjiqlFYa0KogTGboexgmNnhwLHt8jzV+na3lGiibnl7tYurSOMDQhO0hBTDuKcYMIUxeU8gbPLLYzP7HVrs/p+dZA92TYQpsmGGSvye6IFIRJRfLLj40SRAnnFjtcXpXXq2DpHJ8oMz1a2HTPpc7of/TgZZwgYqqaZ2oshxvEzDcdbFPjLXfuHwAZj19t4AUxhaocJTd7svtYsOR4NkkS6eovYLRoccNkecAP6uhEkZmGHEeNFRXxWwj2jxQoWAZnFlqs9QLOL3fxgoicoVHJWxSzzqXMEL200uPGPdqOifBpB2ZjzuLJ/TXuvWs/geKF+VGcCSPSj1/62bR0jWN7SkQx/NTrj7N/pLDlWO5ada1g92G1lXq13vW5uCIfiq7Ue8w3HW7dX912W8MqBYUnp6ucWWxzbrnL3mqeakEqFc8td3fsY3atul5RwpW1Hsttj6lqjqfn2xTt9ZDvndYLCsLe/va388d//Mf82Z/9GeVyOeN5VatV8vk81WqVH/3RH+Vd73oXo6OjVCoV3vnOd/KKV7xiVxm5W89r2YYMvw3CaJMtxfMFwEZ6TX7nw7/IS2dOE2ka+08/zJkjd6EBHVdymzS1b14YZ9yQa9VGW4DnUpF66txo9+BHCTlDp2ybXFnrcXisOPSpOHWHf+DsMgtNd5NCM1HHONd0GCla5EydF01VKNg6V1Z7uEqBaPX5cYVxzHQth23oHB0v8o7XHef9nzpHFEMtb+C0IhW6LoFXFCckSq3Z8+XoZ6Jk0XQDkjjJgI8QQga9K5L84bEip+dbaEIjb8r4kpwpg47PLrYpWHr2BL7xKfroRIkr9a4c7Sovof5KR4NBnHDjVIWvXV6j13fD9ac5SAm9VB3222AASikXZ5YN9Z7PO193HE3xzVK3+bNLbZpOiBdY9PyQlhvS9SJyppbZWsw1HN7/6bMD3lDDFtqcoQ19UJGKVYiQysKT+2scHC3wgS9dou0FmIm0D3lmsU3e0hktrU8ukiTh/HKbhZZLoJIeZBaowZHxUgYyn5ht8f23ry+6KXl/oemy0HTwwoheEGW8LtvUKdhypHVsoryJs1XJmYwVLVY7Hi03oJq3ssSBOJZq0pumSjSdgKlyjtmmw1ovyO6X/m7bxXqXlx4eu66uTGoqnPIt00p5Y7MNByeI8OMES70wVNc7b8rvg2PjJT737LICisMB1I4zKrcJdt9Yw9SrqaDGCyPypg4J5E3tmtvaWBtB4Xbd0Od75Dqs0mPP5WQ+706/k/vrBQVh//k//2cAvu3bvm3g53/4h3/ID//wDwPwq7/6q2iaxr333ovneXzHd3wHv/Vbv/U3vKe79fel0o4JqvOT8qJ0oXy+uDaeeS42GEdXZ/iD+97D4cY8bbvAL/yT9/D5fSdxlNdSf/lqxLPJyHWL6hcUpPuW/uVO9lMgR1Km6hpFcUys7BdsQ+PEdJUkkV9IF1Y6nJppUjD17Is+XfDiOGZZqd/yhiCMyUZk6djw2YU2N+0pcnGlw5HxEvfcOsUHH5lRi1BMy5UKRC+MMDW5T/tqed72mmMYmsZ8yyVnagPnLFJKtvR403EUSGDk+hFhLOOpDE0jUm7cmiY4ub/C6fnWwOLkBRFnltqcWezwmWeWODJe5MBoHhCSsL1hAVxp+zJiKZERUoZSUCaJVFGm/k6fe2YJJ4jX70EG77eWI7uFG20wQPIIU8PYlFzf9SJuO1AD4LYDNd5wy1S2ABdtnT968DJfu7LGvkoOy9SzCKMkSTYFeT+z0Ga141Oyjey9qwUTje1dUpIEZtd6fPQx6Uh+YKRI3tJZaLqcmmnw5Yt1Tu6vMlXN4yi+2ULLxQ1ianmTnKn38fQkuX6YwvHwWJGRgslnnlnOxB6SBKgMfIOYW/dV8dTYcPNNLrhhT5mvXq5zcbnLRFk+EKy05Sg5AZZabmawvKeUo+fHAzzBRN03hy1joCtzXcBHcd2emG0y23B452uPS95YKLtvi20PN5Cg0DYECfK6l2yDxZbLbMPZEkAB15VRCcOD3Td2mzaqV5Mk4eJKBy+MqORMKejQNaoFi2nbuKZNSFpbgcK5Ro+cqXPvXfu5/TmOXL9RlR57mKz7421ncD2sXvBx5LUql8vxm7/5m/zmb/7m38Ae7dbf19KAY3tKKkJEmjPqQqDrspOwk3s1resFYK+4fIrf/vAvUvW6XK1O8uP/6D34N95I2PKVVcW6ajIl74dJcl371F/XA8DS148ULUw9DdGVHZ1KzuTGSUn+nm+5PHR+hYcu1jmz0MI2dQxNyzoYUiHYI4zWQZeuQRwpbyml4PPCmE+cXlJAK+bqWo+xgsnxiRK24TDXcOgFEbahs7ea446D68Tjx6820ICRgsVy20MqEYcfZ6pGvbLawzY08qb0/QmUFYmp8kJn1xw++PD64tToBZyeb+GGETXFtVpqe1xY7iCE4OT+KofHiwML4KuOjyuAt97FSoGMrYxKvTDmUl3ajZRsnQSRXV9fdWPdMJYcOAXa4lh6RckRm5mNv7byheoftVxY7nB+uctEaXNYc78B6idPL/LQxVWemGkys9Zjqe0yWrQ4Ml7CUBYI0TaEQyHgf31thpGCNbC4T4/kyZsaj15tcG65k41CAao5E42QnHLR7+fpXVrpcHJ/DW+I+WjTCXCD1MFfk3mWSKCbRklZxtZWFzlT58iYHIc/frWBE4RS/atBWYEJ15OWHK4fc2i0wErXy8KkExIqeYO3vvJw1pW53nBuGAQ+H350jjfdMZ3xxvZUciy2XGViLG0zXnZUWjrNNdwtt/N7D1ygF0SsbdHlGpZROex+GCY22KhebbshLSdUSl8GPLS4xrbS2opnVsoZ3DBZ5txShydnW7xRdUOvl8f29VT/exVtneMTMkC+nJNd2zS3c6f1TUHM363deqFL12C8ZNLs6ax2A3QhF62ep75gn8NEL+1obOcO8e1nHuQ3/+yXMOOIR/bdxNve/G/pVEeYCGP8KM5Cr6MhHl/PhWzf/yfDOnb9nbL0d0LADXvKdLyQyYotHdxV9lq96/OVS3WSJOE/P3BBEYQTCooz1N/B6Kn8SgHKOoEsw7O/4+MFEWVbp+X4LLU8zsYxlbzJj3zLYe4+MkrLCajkpTls/5dtOWeQs3T2WgYtJ6DlbsHp63uvKJEqy6ItjVMFstOYt3SOTZR5Yq6FALk4IQOK3TANSJajxJWOj21omc3FtFIApgvgheUO+6o5rqz22FO2CZWtgKYJDAFLbU+6jLshOVMqN0V64gHL0ImCiDiBla7HeNFGF9IyQRdQyVscUSO27cKW+xePh86vcGapDYn0ghNC+mLdOFVmtGiTt3QurPj8wRcvEsUJeys5Go7PasfPrumB0QK2qWcqz/TcpjeSpcuR/mLL4+BoYdPiPlqyeenhUeZbLj/8ykMULYPf++sLmBWNp+fbA10FOXbTWe14nJ5vEcUx9a6XnccLKx3OLnUwdBln1Z/xKl3zBTNrDi8/OsaVem9Lq4vbD9SIk5ilVo6m49PxZASXEBpxHOMEMsHBCWTM1J0HarS9CD+MMlHDG26RorFrjffuvXP/joBPyTYGlHtTlRwxMsLqe07u5dieIj/30aco50zqXX9A5CCEYKqS46uX64wWLU7sqw4FaVtlVKbVb12y6fO0wRA1b+qEcYyZCJpOSM6QuaDp/bzdttLaaUrCpdUuPT+6bh7bc61hoHqkYGLosiNpCEGj56OHOw9P3gVhu7VbSCPTr11uZJ2nKE6jjp67P9hORpdPTB2nXqjylf0v5l9890/hmTajpi6f4tUbpw0vXY2w+kFdqrK7VgnkQqQJiBX/RNfA8eNN+7hxm6Yu+Icv2c+fPTbHYsvLxiazDTlSAhnHEycRlYLFUkdmHe4p2wMdjLT7kLA+2u0/V2n5UcJCy8v4X2Ecs9iKeP9nzvLeN57gTXfsZ1gNPJHvKbLa9Yaemwxcst5hdIMYL5BE7pS4XStYPDnbBCEXjpYryd6GJi0fTF1ejyCK5VjCkBYebS+krJR5e6t5zq90edMd0/zuAxdYansUbJk15wcJPU8SsV9yeJSPPzE/lNIrVXACN0wwNY2m8ubShVRa1nIm9bZLo+sTJTGjxc2+UP2LR73jM9tw6Hghhq6I/wm0lLfayf01xgoWaz0fgSSPCyE4PlHG9Zs4QYjjh8w3HBR/HQ3QNU2mHwC2qZE3Dfwwwg1jDDV/3RigXLANdCGYrkmCvh8m7KvazOYdpXA0ZBh7ENHxArwgpt4LMDSN//fDT/KSwyO87dXHuFLvstaVo2B5ztYfJOJYxmKt9XxumizR8cIt/aBefnSUP/ryFSbKtgrBNrNoGk3TqOXleQkjWO16NF3p57XWC9hXy/OmO6e5tNql6QT80YOXt+1y3X9qHjeICO2YesfLzskwsHLbgRo3T5Y3GSAbhsaHH5nh7GIHhDzWzOtOdaCjJKHjhhwbL2b7kSTSUkbeuyazDSfLUryWIe6w6rd4ODXTzJTAY0U7E9vsdFuw85SEx642+MSTC9fNY3sutfV41MHQBMf3lLlq9JhrOvScvyXqyN3arW+mClRrydAEvSBSsv6vb5vDRn9aHBFr8stlvjLBG3/wV1goj5EILeucRaoLFkQo9R5DW1diyM+GVfqSlHye/e2Q1/VPOQWQtyTf5M5DIzwz3+RqvUfPj1jt+jJeaU+Jc8tdirY0yBwrynHgcsejmpfWC8ttlyAwB95nq7FoCgrcMM6OO0mkYeMv3v80R8eKlPNmNg6Ik4RzS10g4WWHR5mp95hZc7B1jXBI0kH6fmkUTZxIsYEfSoWl7kiPsgMj0o9KIONsLq32aDoBuuowWIbAyKwt5LixF8U0utI6w9TlSNNrxbz0yBh+FPP7f32RejfI8icreYMffuVhXryvwl+dXpQZdPrGxD15Pkxd8G++6ybaTsSDF1c5s9BiseVx1pVeZ7qAasHkH9y8Z2Dh6V88pio5FpouURyrEHPJ67MMTdpdBDGPX20wVZWmuofH1hfukaLFiekqF5Tird6VwMHQBKMFE6Fpmc9V3tQzvlSchKw5AZfXetnoLgUKU5XcwIJsmxpOEHN0vMRap85MwyGOk4FOsClgtGDiBhEPnFlhqeXxmhvGpXkpDHByBKDp8rPthTHTtTyvvGFiSz+oKE4yonVqjuoGEZoai+YtHTeQkURNJ+ByvcdY0eLk/hq3HahmtiSNXsDVtR61vMl4yR4AISk4P7fUZrUrg7iFcvev5I3M3b8frAzrwHzuzDK3H6hx3yMz9ALpMVfMbebQ9VT6QClnQpIw03C4rDpIAtnJIoEbp8rMN51tDXG3ExukFg8XVjr82qfOSn+4vRWEpl33tnaUkmBofOHcynPisW1VcZxwYaXDmcXBVArgmqPjsaLFT7zuOG03ZH65zj3v29Fb7oKw3dqttNKPqVyUpdeSF8ZfFxDb+KcTnTV+90O/wO++9E18/OZXARKIpe9vGYKuFynwo+M74fpIcwOe0HYAwNLg6zCWAGxg39Q/BUp4sBHgIfMm227I//cvn83AgG3IhcENIkaLFh0/wg0jtfhJrpOhSxPOeteXfmIJWZh1P0n+WhUDphDKlVyqrt7xx49yaLzAWjdgseXQ9kIS5eFUsgymRwpU8gbeNaKmUl5WGCYk6uqHUULbjWh7kn/2iqNjVAomf31mBUhUMLgEYa4fESeR/DfQ9UI6XsDjs011LWVno1awWGg6PH61yeGxAqahZyAsCCMev9rkVcfHs6xGP4gw+7IagzAiiuHQWIEX76vym589z+XVHssdnyQBS0XmCAE9L+QDX7zE/pEC33/79CZuzYCJrb6eL2hosktqGULF4wSMFEy8IMo81mT3T+POAzWabsjleo/vOznFB750mdWOjybIFqc1IRMMyjkdy5A+YbrGQJbgaseTAOrGiWxBPjZR5GuX1hBAywvwh/iq6JqGYWgUbEPGxKx0ESTZOVhXLPZfZ3ku2164yQ8qzRvsehGNno9lCNYcn54f0XYD9cAgMA2NoqWTM3WOTZRoeyE/+qrD3DxVoeuF/PpnzmVdEtvQmF1zaLsBT85KMNQPxNwgYq7pSHUsUM0bROr+7nlNXryvwmrXz5IA+reddmBOXW3w6acXKdkGUxWbtV5AXnmupR3oiysdTE2oUO2Ap+aaLLa8DAjbhkxK8MKYlhOQN/VtXeOvBWY01RH68dcc4/2fPpvZSVxrWxs5XQdHCtdMSTg0VmCx5T4nHtuwenK2ye8+cIGvXa7TcVPgavCSQyPcc+vea45Hzy130ITgjoMjHKsN7+ANq10Qtlu7pSrtzkjieKpCfO5GpxvrpuVL/P5972F/a5l/+5n/wmeOvxTPWP9iTpDu25qQgOlALcdab51bsBFzmZrYBKz6S3aUkoGuyrCvUE0gPccUST7pA0lhLA1OY03uU6wUfm4QoQuZSzfXkJmHrh9h6DLKKIqlgjNnaNLtO1X0AabKsdyqNnPfkgF+3VzLYU/Z5nK9SyfzQ0rwgZ7vs9L1KZg6cbQOMNPoov63jRMJuiR5e/1dw3i9U/jsYpsbJ1UUk65hxknW5UIIBAmGobHW9ekqzpsbpiHcsNb1cYKIj52ap971uXGqsmlBObfU4c8em+cnXncDP//np4dmNVbyBu983XE+8tgcV+s9ZupdAgVqw1jeMwK5oPa8kN/53HlumapwdrnNqZkmeys50lBtP0xUrqUulYNhlB0zQnYI/ShiqR2z1PbkuRESfNuGrjpYecaKFkfGy0yUbFa7vhIJJJnVghPEVAsWtq5R7zbXR2HpvbihjXt6vkW9G3Cl3pNiGDYbDetC3tNtN2C8ZFOwDHp+yFzDzbh+cSJ93/qvczp6TkO4U5HCk7NN/seXr6x3mAyN2YbDctsnTGTGqRDSb873YnpeyJ6KTdsNuO3ACN/+oiku1bv87gMXmGs6WecnTqTa1jIEPT/i4kqXkYKZebucXWqTJPCifWXOLXWpq7ihkq3TdEIeu9rgtgO1LAlgWAdmsprj7FIHXWjcOFXiqdnWQKSPpUvLjhP7KoyXbR670sALIxKEijyTD5luEDJVsTF1jclKLvOX28o1fie1Uwd62MyzsgzBnorM3rQNbcuUhFcdH+dPvnJ1uNqVzdyza6lUf+Fjp3l6rqUsaKShsuOFPHBmhQvLXZJEckN38l7XU7sgbLd2q68S5Jd+9A3OKXrNhYf5jT/7Jcq+w/nRad76lp8dAGD9JYFOxHxrMJJoGDjZbi83jhZBdc9UVyD9nXy/RC1wwztUcoxJ9hoJ/hIV5yLQkItjz4v7gE5Cx5cgydLXOXK6phEnO+8wbuR1RTGcmm1sCeTiBHpBRAx93ktik9WHBJmbdyLlOelCOtg/s9Dh1ukq880ei4EUHoSxHIeU8xYdP6Trb+aApJuu93wevLDKy46MbfvE/gMvP8jPfd+L+e3Pn2d2Q1bjj7/mGLdOV/lvX7osFbzx+nsI5D0bk+ASkTN1zi61+X/++BFMFQDdcgKOTpRU/qUC50J2w+JYRvsYuoYXSO+wMEoUIOiLJVKWJPWuFEy8+oZxHrywQpQk7K3mMsCWIB8QTF1QtGSX5eT+GvPNHmvdIDuu0aLJVFVG/Hzy9AIffESCjZyp0XbXx9JpKZ/a7EEgiJIMVCUCLFOOQ1Nrmf6Rt6ELLFNnUmWXglx4f+3TZ5lvOozkTRneDjzVC3D8UH5O1GdFTexIgNWuz6GxArcdqPKLH3+aUzNNzi62sQwNP5Sj1FrBpJKXwpW8OcgVbLkBq12fcs5gpe0rIBzj+D66pjwKdcG9d05TUpYOAx0Yxa2rd/xMfSiD0uWoOI300YSkEtx7134+f2aZWHWkTV0oEUefEEcI9lZym/zlvh6l4U4c6DfyrFwz4tyifHDQNMFkxZaJC8ttBHIcfFJlUBYsnQ89OrsjHts1VaoPz/DsQhsvlCkbfhhnylxNyM6bZWj0vJDyEPXjTnhuW9UuCNut3Xqe6wcfuZ+f+9TvoicxDx68lf/rjT9DM1/e9m+CGFrXeKq6nlDudHSpsFPWFRBinQu3Fe5Msv+3GaRFsQRYEXK0tdUu+REkSPNU97mkiW+orQBYRsZWO6kJ0IRGwtb7trHkoiuzJpMopuuFNN2AlU6AG0brKs4wRrjBgBJv474ABKEM7B7GT4PBp+iNWY39BOxHr6xxWfHx+rcP6wDBjxICpVZcaDiMli00IVjtyNzHE/sqVHJSPRrHcmynaZqyFIHVboQQULI0BVwlILVUGHbXi7AM+c5dP+LKlQar3YAojtlTtgfilixd4+qag23oTFVzUg6StZrlEdimRqPrc7/qFE5WbC6udDNLjyiOs6BsEgkWEhKiRIXJq5oo5STgrPfQtUHhh6FI+odGCrzy2DgAYRjzq3/1LI9ebSAELDZleHvOTEn48tgNkRCpcyvvJZHdI/c/PsdaL6Bg6liGNPLtDws/Ml6i6zVxgog4BtePEAguLHelKjWMqYc+Rdugmjdwg5ieL200anmTqWp+E0F9retnQMsLIxw/wg0iVjoeR8ZL3FUYycQPMs4oYbwkR5XH95R4ZqFFHCfZtU8FFF4YEyaSD9fvL7dV7dQSYjsH+o2j8rVewOm5Fl4YUSuYdL2QthMSxrJ7O1KyKPR1va4n2H3YOLffnuPLF1fpeiEIgSUEQiPz9ROqCxypY06FKsPe67nEJu2CsN3areerkoR/9+nf460PfxSAPz3xen7mO99OoO/MR+Yb1YvTkePGWCGotAsm8xZ3to1shMTgWDSBzKk9GtJV6q/guSWpXHdlT/fq33ESowkNQ5NjpZTkvRWlbmOHLPQjnpptyi9oXWAbmsoLlGRvoQlE6nfW995pRy2K5f8ttT1GiptzbTc+RadZjRtLWiYMAvO+5simc5C3ZCB3qBzfvTDi0mqXG/aUWGp7eKEct0vgkdDohVIAoGm4IXihn3Gp3FACCDeJGCvnOThSYLXjcXWth1CecenCZBk6hSSRatKOz0jR5NRMkyiO1ahMqlGX2h71ns9EyWK+KUc9fhhlnSchBKahE8UhQYwCRevdv7QLpCl/ttGSyfs/dW4AoCdIwG5q8N0npzAMjSdnm/zHTz7LX59dIU4kz80yZCzUWs+np0bcidoRjXUgWrINgijmwkqXqUqOE/sqLLS9LJGhmjNpujIs/M6DNU5MV2XkkROw1PaoFmJetLfMSkfysmoFKztveUvyDRtOwErHJ29J8+CUoB5EMU/ONnHDiIJlZE75bhBxYblDLW/Jkafa9+WOx92HRqnkTbwgZqqaY17x0DQhg8BNxSdsuyEdN9hRN2en0UbXAmr9NhTAgMGr7EIlrHZ98ioqzVB2G6mR7U+87oYBa4xh3LPtxrmZSvXxOeabrooBW0+1EEKKQPwowQ1jRgoypurr4cwNq10Qtlu79XyVEERKGfQfXv1D/NbL/+FwSeI34q3YGrTZhiAG/A2Aa6cArP890kV543aEtv1o9G+q+sFXxudLwNLl6CpKyIjmhiYI+sDWdqAsSqShbCQkgd3QNDRTdoaSDXPVlJuUgt10u3MNqaSzDD3zcUrimIurHY6OFbOQ8q2+yDueNCLVNZGZ3DJkfJygRAE5AxRnLIwSNCEXtaMTJW6aLPPkXFN1DCU3KGfqdP2IKE4QujLUVZ3SWJHqNCEXV9vQ6QUuXhgPADCQACCQJxo3iHADna4bMFG2cYKYuhfIsWWSEKhR3P4ROWpKkFwqP9IIoxhLJTWEiUTOMoxddnE7XkgYJxwaLfDSI6P8xZPzMmpsyMOArgnOLHQ4NdPg1z99VmaXJgmWLn3ZvEAed9HSaSfh+hg0lhy3JAE3kdy5nKnhB9LD7JGrDZq9QEZAOQl5S6Ngmdn4caRgMlq0uPPQKD/w8oNU8yZRlPDQxTqhH2VfB14oRQC+MuT1wpjf/twFfviVh7NuT9PxBzzqkiTB0gUCna4XcWqmQcHWafSC9RzQcY+llottSvPpSt7cEG4uLWA0AWtOcM24pZ1GG+0EqPV3+QYNXuUnJo0WK9oGuqZlPME0uupDj8zy7ntetC33LA12345Qf3GlQ6AeSBI1LZBSHQlUpUo9pmAbvPWVR3jo4uo1eW7XU7sgbLd263ms933bj/DJG17OVw6ceF7fp7/70m8sKz2bJNl32N8Mq+0A3bBmVwQqz+6bo9JdtAwNL5ActZTD1l95SydSmZxs+u3w7YZxTJxI5WycDFeVplO3jUKAlhPy4IU6OVNjpGBRtg1mGo40A47hPX9+eluTSU11YwJFgN/KQFjAOgkcmYvY9UJKtnT0vrzaY6xk8Z0vnqLjh9S7PpHqFjWcAEOTi/VSy8VTB5epWoVcPJ+YaVApmCrHNMpyLb0gou1JYUGg0hHaXoiuCWabLmEUD4RQ60osMNdwGS85TNfyVPIGbhgRJyJLCLAUIcwPk0xw4ocyCDwB/stfX+Sp+aYMvDayJEZ13aQVx5fOr6BpcGGlq5z1kaIRNWb0Qmm62n+PJwloyiclfc+ULzi75hADBctgVBdyFOnH+JFPztBo9nwWmi5jJZsf6XPRf/xqg5GChUh8mo70PGu5gXLdJwOeT8+3+I3PnOOek3s5s9hmYdGjbBuS2xXH9PyQYs7k4EiBK/UuSy0P05G2KDIHNM9cw+W+R2YZKZjMNVyOjBXpelFf3BK0VRTYvmo+6+YM62LBtW0aPvTILEmSbDv+S4Favw1FEMUD2YtBJM+1oQl0TZr+pkrejcrH7bhnabD7dn5jcSK7t54Kte8jyikah7zxj4wVecMtk7zhlsltO3xxLGObdlq7IGy3dusbWCcWzvHjX/4g//yed+EbJrGmP+8ALP34p92X/oqBZh/Q+HpqO5Cia5qcuV1HpU7muia7HkH0jeumCaSa0e8jB/WfJ5CjLEOXi+uwRIKN+5ooHBcmMi5IFzAMe/arS7O/B160t0LTDaSHVL1LGCfkTZ2bpiocGS/iBvG2JpM3TpYpWDprXX/TWLi/qnmTkr0+8pb2E4IDowUmyjFvfdURbp4qbwodX+t5/MyHnlQcJkVwT89nCvgSKFqy21LKG+wfKbDYdAfARBjLFqChyWvg+pH0JUvWHxCyc6QEAnEc8+xCm33VHEfHS/S8iA6K26SAmKEJRqsWdx8a5VK9RxTHHBkrEaVZhWoOaahFu79S241Hr6zRdiJpl6KpLi7rHbZN1xLJL9PF+m+DKEHoCX4kGCvZgFD+eIK2F9D1InqxDBC/bf/Ipi5JOSeDxMeKFgstl5k1Rylupbo1r5SLRyaKLLU8Hr/a5M13THNusZMZr+qaYKxocXi8xEjeZHati6bB8YkSB0bzmVlwqr4t1PKMFExWuz7HJkrMNx3Wen7WMXv50TF+7NVHt+1ivfzI6DW7SmcWW3zgi/5QoHbMKvLUXIvf+fwFfvL1xzk8us7p2lOxB7IX41glb1gy1isVYZi6RpIkhHHMasfnmYV2BoKGcc924jeWt3SqBZO2FwwoaRMSwkjeAyVL43tv25eBra14bk/ONvngwzM8cm5u6O+H1S4I263d+gbVd5z5Ev/pz3+FfOhxYXSaX/3WH3je3/NaDaiNCrOd1HZ8qaHvISBvSJPNnZYA8qbet1hKu43red/tyjKk+3eC5BHZpq6AVkwYSnARKlGBDL6Ohwod+on+ikuOpk5QztQJohj69nurfZ8o29w4KcUYV9d6PHa1gR/J8dbMWo+WG3BkvDQwatloMnl4tEgpZ1DvBtIaQ/l89V/fDGgqcCM7ChFxEtPoBbz0yBjf+eKpge2mC8rjVxuMFC2Clsty2xs4lr7pHA0npJQzKdkGx8ZLyvYiYq7h4SvPMdvUEZqgljdZarsZHzB1pUg5X1G8nn/pBhFPzrc4MlbiRXsrnFVmpnlLEvtvna7yQy8/xEcen2Ou6TJWyXFmqU3LCTM/LyAL6e7/bKSefysdH0PX0AUgNBKl0r3WPadcOmRQNwmGbqApkBPG62Pk0YIJicwefedrj/PqG/ZsGi8PEMonilkygGVIcUTLDRkrmlRyJrrQOLvU5jU3jnPDZAlTl6AkjSZq9AIeurTKfEvy0uYaDm4YZYavKTiq93x+4GWHslFaLW9SyZtZ9NEbbplE08S248bTcy06britTcOl1ZCO1+XAyGBMVb3rc1GZ/F6p95hvOty6v8rtB2rMrjksNl3ypkbbC8mrsbiuCQqWQZKk+ZMWYRTzyJU16soQ+Q++cJGvXqpv2T0eSt5X6lI/iJhrudx1oMZXL69JWw9N4EVJpqROu557Kjled/NmnmZ/pTYXF5a7BE73GnfUeu2CsN3ara+3koS3feVD/JvPfQCNhM8duYvfe+mb/+befoufb9ct2a40sQ7eEuTITfpRbbGtBNpDLBq2K2mzJbKuyHqw9+Zu3jW3JQb3NR0xRHGkum06fhgTqTbMRrBkaAIhNEJFmpOQLDu0/sMkSaTaLk4k4T8doVj6ZmPf9NybmpAATMiR1dnMD0nLlJj9DudbmUxeWetRy1vUbZ+2FxIP8fgQSHuOqONBIsc3QSQBQsEOuO1AdUvOWTlnMFIwafR8hJo/akOuhybgxHSFlhPyqhvGaXshcw0H2wwo53R0TcOPYnKGzv5aniVltdJnRSb/tyLMpXuj6xqHx4o0HBk/dGCkwF2HRnjV8XFuOyCVZymZu2DpPDXXykjqBUvPbEIkB055uSFHl6kPXBjF5A2NHlIhud1TzMbOKaDCwQXVnFQUzjVd1SGVM1YhpEntnnKOkYK9pWIwJZRfXOkRx5CzdRUdFWKbOofHJWBIlbOVvMkNe8p89XKdfZUcQsBaz+ep2ZYEoImMDstbUqHZdRscnSiRt+SDjutHTFVz/Nt7btlylLZlaLatM1mxeWahTdsN6boBlcJmex3Hj9A1uZ1+76561+fJ2aYcW5vSqyZvalnX956Te3nsaoPHrjRY7fo4fkStKEG+5P3F2KbOaNHmSaWejOKEyUqOvZXctt3jjbmWgApAD5VXnsbVsqQEVPIWURxTVQ83UUKWKFHNm1xZ63F0orTlqPZ3H7jAM/NtdE2KYnZauyBst3brOVS6wBpRyHv/6rf4x6f+CoD/dsc9vOf1byPSdu6Y/PXUVl0rDfkFdC3F4tBtJuuSfMvQObGvwun5FsE2QGuj8eZ2JdS+hVEsR4FJsu7FtMPdFchuVxQnjBVtDo7mJeDRBX4IHddnvuXSUeHKUR8ASDZsKEqkjUT6/tfq56UdMzdI0DU5/vOCKAt9T8+5BiSqEzE9kifpG5ul5P4wkqa2/RmbJ/fX8IYYP7bdED+U4E148khSoJ0iBqHe1/Hl30pOk2CkYFGydD52ap5jE6UtuwZ7KjlOzTQZK5is9YKMLwWSnGzqmuTSxTJi6LYDNW6YLPPbnz/PlXqPSAGRNDMwSZLM7qG/0n+KBIQmVZBhnHDvndMcGituybdJydz1njdIUjf1AWNXP4wz/7RA8dA0IcH+ak9GT3GN+83QZaeLRIJGy5R5n5omKFk6PdX5led/fR+jpE8YsUWlZqZ/+IWLzLeWaDkhlqFlI8ZR5a6fKmeXWh6rXY/5hsullR45UyOIYqkY1UTWNTLVCH6547Ha8ynbRsYzW2g63HagtuUobVhodr8lhh/GdPyQBy+ucvehUUZLdpZBmQaY3zhZZkl1Uk1dYOiCC8vtTPUYxgmGrlEtWEwrpeEDZ5Z5+dFRZus9ul6O1a5P140ybpqpaxwdK7LQcnH8ECGgaBkcmyhRypsczxnbRhSdmK5yz8m9/KdPnWGm7hApcUvB0jk0WmC+4bLY9rh5sky959Nywuy8jhUNDo4VafYC2m645aj2pYdH+drlOkJArWARXodp6y4I263deg6VABW3w2995H286vLjRELjva/9p3zgru993hSQ2+3LsJ9tNCfdSelCWhbomoZtaBybKPGWu6Z590ee2vTaNNdROs/vfBRZyunsreRZ6njSmyeBnKFjqhHidikA6i2xDZF1kVpuwOXVJDNn9cKYibLNWMmm7fbWeU1sPleGEIwXLRqOTxTFdIPBV2wHLdOfO0GUjT51IaONYP38561U2ZUoBZg0MI2T1KdLmmcWLIOmE7LS8YdaBRRtnTXHxw8l38pUwdKpitELY5IkyThupiKo24bMJI1imFnrbblYaZrgVcfH+cwzS3KsqMuFXtckeDF0jVrBxA9jFpoOrzg2noGkn3r9DSyokVJViQ4QgpbjS0+qvvOVPjhk51F1qmxDo1awto2YKdo6PT9kpe0PeEZZhgSHaYJClJCBJJD36kTJou4EchzdlyTRf30FstMZJhCpDqLs1slzqmuCkmngxwl+ELG3YhPGIouhMrSE5bYclR0cKWx5HCDBwb+/9yT/6kOneHquxZGJ4oBqMfWfmq7lue/hq6z1Al68r8p802Gl49FW4eGj1Rxl5f3WdgMcJTogStCFBDO6ENz3yCzTI4UtVXzDPMn6LTFypqY8u2K+fLHO0fEibS8c4JaNlixmmw6rHR/bkLkFPS+ikjczS5Gxok3ZNljrBax0PJ5daPNXTy2CgLGixZ0HaoSJzGu1DI2DI3kurvaYa8h/j5fsbNwK63y0rSKKnpxtcv/jc3Rc+dkr2joJAj+MWGp7HB4rMNtwWGx5vPTwCIsdD9ePyFk6U2Wbrh/jmhELTTfrFG4c1T58aY1mL1Dg+fq+/3dB2G7t1nOs8W6DWxfO0TVzvPP7/hWfOf7SF3qXsuonP++kdECoEeFkJc9I0cqcqZ+abRLGUg7fT9ZOo4Dg+nhnjhcxVpJEWD/QiEUsjSeDwddtdPAXff+1TSlrj9Vi4wR+ZkBbyZlYumCtFw7lNfV/RTpBzErHo2AbRJqGGwYDI8WtDktX75UkknPVz5nKUgliCcTOL3do9HxsU8cLI0YKJqYu42yKtp4FTuvKnLQf4AyrMJbGmqgOIqAyCGWEkiEEcRJjGzojBVN23OKEes9H16Tp61Z5ercfqHFkrMhazwc3xI+kXULO0CnYEjy6vjyGfl+kw6NFDo0WOD3fopJf96rqeKEcAwvV9WK9y5qer0Qd+75aXnW2hteTs03ue/gqCy2XlhvgBiG2r1POmdiGLrlEXjRwndP/beiCqWqehhNmP02Q4Eyw3v00dclnC8JYdpqUAXF6vcu2QS1vSUNb26DtSYBiKzPbthdRsg0sQ8vGV9uVYWi89ZVH+LVPn+VKvcdI3qSUMzGEYL7lMlq0SEgys1UhBPtqOWbqPZ6Yla7ytiEYLeZYbLqSVynWHf7dMMLUNI7uq7DW9bcNtB4gsds6F1Y6A93GIJI+b8cnijw13+L0fAtDE+SUGrOcMzh1VX5X2ErwIoTAj2Iajo8baJRskyPjRdZ6MlPTCUKpaDVl3mXHC3l6oc2J6Sq3HahxaqbB+ZVuphzdyoZrq9igdMQ633TRNUG1YGVj6oIlkwyW2h5jRYultsuXL67ihkmWrTm71sPUNV52ZIwHL2wdFv6Vi/XM9Pp6axeE7dZuPce6MLaft7353bTtIqcnj77Qu/P1lSKgxgl86w3j/JNvOZx1OU7PNWW3YgcE5mtV0dLo+TFfvdQgQfpPpduU409pKyE7eXLkmIY493dSNlpuCMgMM5Mk4eBokbbbHLoPGxdp29SxVf7jME7XsEpdtMM4GRAkJPRlT7IOJJ0gxg1inFAap6ZqP5nnKDtbXhDhhfGWxo9dT3JqViKPKB7cv7TrpmvgRhEgI4PkgiNNOdOR51zDGYwj6qvDY0VuP1jjiZn1EOkr9R6Nns9qR4LevKkrVaCsVBH29EKLqw2Hq/Ue5bwM6m65QTYOTMGBEHLMlLrxy30zuOPgyJbAs58wfnisQMuV4M7xI/wwppozMysMQ1vPBJUu+DqaJqj3fAkIN1QauxUqHpAm5Ii564e4QYwOFHMGk2WbyUo+s5M4OVbkUr2bxQRJxaLNwdGC9Am7jpFU3pRxUFdWe4Bc3O8+NMp33zrFH335SkaGbznyfBqGRk4JW1puiB8lWIZOmIQD1iV5U8fQNerdgBv3lLYNtO4nsU9W7My3K/UkS8nx0yN5ZhsOQRhz24EaI0WLkmXwyNU1dKWILVqGDELvBaBUhpiCF++rMFIwefjKGm4o0wHargSyliGTB5qONLs9PF6g3vHpBREv2luh4cgxcn8qwciGsW3R1rmw3MnG2bFSh44ULBZbXmaBIUt2n1uuzAO9uuaw2PYYKVjkbMkjnW+45C2dfbUcD5xdkaNapK1HEMaYhkbZNjg4WmCmIePBxkrajq877IKw3dqt66rvO/15los1Hjx0GwBfPnjrC7xH35gyFDAIwpgvnl/hW46tmzZOlG2EhgzEfg7E+f4KYrmNdLzTD4gsXcNSEvQ0qiYaYluxERzpQgIpOXJL6PkRzyy0tt3PftGCJDlLa4WNY7P0tbomn+yzOCSJJoiHON4OjN0SaYVQsnXCSO5b0wk4PFZgopxjpePRckJ6kYz6OThS4F9/181DR0ZFW8cJIkxdI4gGOz7p+6WRUBoJTUeOptJOkRDSb6sXRFls0TCSdkpkXmx5cuSXKNsHS0bz3DxZZr7p8v5Pn+Wek3v5k69c4cJylzhJMIBuFNFpygDyggK4OVOnp/ygpH2FIKdrWIbkxe2r5bd0HN9EGEemDyy1PQRSAdpwAzRgvGQprzD5fuWc7EoFUcJa18sI+hsBrCYEZVvHU1YIXT+iaOlMlGwmqzKsvGTrnF/ucmyiyGLLxTZ17jq4HhOULsgdL8INox3lCPaDyzsPjGQWFGs9n57KJPUCOQ57dqElgaQCfKnhra5JIF+wpVpX0yCMJGdvT8kmiOW9kMYSDesWpffBy4+MMrPmcGG5ix/GGfes568LBjqetN+wDJ2SbVDOmbTdgJYTUlTWKF4Yc2K6BsATsy0aPemdZuhSAdlypAqy7YboGuSMFLikY/mAZxfbBLEcc1ZyBtXMaFYCpzQUPYFsbPtHD13m/HI342vV8ib1js/BscKABUZahiboRTErbQ/L0NhTtnFVdJOuCfaN5DE0wRMzTVw/wjMinl1s0XLC7DpU8gYHRwqULAM/kkkR1nU4Ye+CsN3arZ1UkvATX/qfvOsL/4OmXeS7f+TXma1uL1n+21SakvAnCcyuObzn/tM8eGGVt9x1gP21Arau40TRlmyHYfyaYRVFMZYuMDSNOIxIFCiTU0W5qNiGTpJIbtiwPMuNP7JVziDIBdULYy7Xnc3HKAZVnyk3qedHquumEcfRFu+ZDIA6kSQEite11TlIF/o4hsPjRUaLNrNrPS6u9LANnbGizXQ1z5V6j6W2y8Gixc9+zy2c3F/b+gQmqABsOUJLeXFJkgx08XRNAkcviAkin9GilRmr2obOSsfjvR87zbnFDk0nQNMEx8aL/PArD3Pr/pp0IX94hr88vUDLlUav1byZkcZT/6lf+9RZVjsehi4o2iahHtNNRQFAkMQUTIMkSZiu5ljp+rL7aMhwPi+SXcutgCcMJ4zfsrdKFDXoBRFFSxDE8t4Nopi8aXBkvMjZpY56vUAXSZb7md4H6X5oyjA2iBNqOYO3vuoIn312ma4XcnisSME2cPyI88tdRosWP/wth/nQo7PS9mBPiXJufYSa8rhuna4SJwmPX21sma24lRqxVpDdpnNLHb54bpUginnk8hpdPxxQYibq/XQh1DhWApkwkiC3YOm4ylw2jOKhsUTDiOYjBWldMd9yhwoGVjseQSjBjKnAUxCuK4UTUMaqCWMlm1v2VnhipkHTDWk5AbYKOg+VuCNNskhhmKEJOmocbBvrZqppFmfLDbF0jUbPZ6HlSm6cLlhsucw2nAG+1sXVDgtqrJsGqg+mBSSSq+kGTJZzvOzICG0vykQo5ZyM/pprOnS9kKv1HkEcYxmSRpAAqx2PVk8mQuQsnfmGmwljdlK7IGy3dusaZYUBv/SJ9/Pmpz4LwP+87TuYq4y/wHv1jS0nkGqyvKUzVrRwgoivXVpjruHynSemmKrmuLLa3To4W+yMFxYlYGuaiqaJCUgyblXaadKFXFxStWKqcxCKxNOvAehXpkVxogjvw987VTxpIhnYhqvUilE0/BjkorL+foYuKOelW3yj6xMMeeoVG/7e0ATlnMkNkxX8MOHIeJGZtR5zTQcvjLF1jVoBPvL4HLquDQUkXS+iaBmsdH2EpmGpxXVjcHqq0gxVVydSnRDb0DA1jWrB4EOPzKpuS6QcyyV37auX6/zzb7+J7z25j+Ubx3nwwgp7K3kmq/bA4iWEoJzTOTXrkFOEeqla9AmT9TFsFCVEhgSs9Z5PyTYye4G2G+wIeG4kjAOMFC1u3V/jwkpHxQZJEn0lZ3HTVJlawWSx7WaLruwQSuJ8kqT3grwuiWqHxnHCWNnm2188xatumMjAyVLb2xRPI5Rj/rAcQUMTrHZ93vPnp7fNVhwGLrP7R5HNF5o9VtoejV6ArkkwknajfWXVYFkaCTFdTwXPI7lYLSeU6k55eMw1XV5z456sw72VJ9hcw6GWN7jz4AjzDWeTYMDQBWEcU81Lgj1IX7S00wQoY1Wh7DMS9tbyJA2HXiA7wTEJ1ZzFjXtKXFztDoCj1DcujhP8KGasaGUxXyemq1xckQ8OXT9irRdwx4Eaq12PuYa7ia91Ym+FpZbHs4ttbj9QHZoWID/TGjfsKQ0VVeUtPfOxazoBpqHR8wPlxSePs+cFjJVsfv57X8yHH5vlkXPzPLblHT1YuyBst3ZrmxrpNfmdD/8iL505TSg0/u23/z/8ye3f+ULv1vNSuiY9jqJYElOnKjb1rs8Xz62yt5Kj5QSsdv0BoKIpLtmwvL6tSnrymMoXSfJrsq5RAkEQSdAj1snTlqH1+UzF2SgzQT6FC0N2fa61G2Gc0M/YyJk6bhDtCEBqAiq2jNRp9gIKto5t6nQVMu3fRNplQ/037VI5fsRo0eKuQyNcrvcoWgYvmiowocYg23kelXMGxZyRjW68UEa46Lp8A8MQKrdSqEzEhEA5fnuhXMxSRWG9K8egniJbF23ZDap3fN73F8/wqacXuVp3mFlzKdoBbU+ayabWCQBeEBNFMbm8KUOgvVAqIROU4lN2JgumhqcsIZwgouOF2bjvWsAzPe5+wnj/+O+O/TUu1eUino6SagW5mK93TgJpIaIJdKHhBtLPStO0TIkrXdrh+EQ561ptFYUD6xYTGzMLp2t5Ftsucxs6MsOu6zBw2V95S6e1EtL2QzSxbhWyfj9KVWze1Lljf42ZhoNtajwz38ZTVia66nATSz5Z6hO3pSdYXwTRdC2PPlpgqeWhC428qbHc8ZhvOBRtg7ylZfd52Tao5A1WOx5CCIqWwZnFNm03IlSj9gMjef7pq44wVc3x3x+6zOWVruR0CZFdp4Kl0/VC8paMWrO1dc80gNGiRS1f49Jqj7Wuxz+++wB3HKrx3vufHg5mNY2bp8o8NddiruEOTQu4/UCNetfHDaUR7MZR41Qln3XBIyDwo+zcxonspEsAGlPOm7z7u2/hrx7P8+dDr+rm2gVhu7VbW9Sx1av8wX3v4VBjgZZd5P9+40/zxcO3v9C79bxVGMNqV36JCgTnlrscHC2y2HKI4lhF04gsXsjQJDhyr8MpP6Vj7B8pYBkuTiBb/wkoP6Y4jWrri7aR2Y8a6w+q/YAniBMCfziKysK0+34WD/z+2lFJGpKoPVo06PoJCJT/WMzhsSJNZ1BRmVa6QOmaUMKBhPPLbQB+54HztF0JKuaajjKjtAYy+DY55o8VOTZe5MxiGzFkr5M4wbQMOe7VNaI4oWTLM9D1YvKmzkjRoudFrPV8vCjOlG8guyylnMFKx+NL51Y5ub9C0dIzMnRqJpsCMV/ZyGti3ZlfCCmDjOkDoUKjktfoeiFxHGPpGi/eV+HgaOGawDM97uN7Snz5ghzNtd1IJQUkRLE0oy3lTIp2TL3r4QQRxybKVPMmxyZKPLPQQtc04kSOmFJPuyRWWaCA68vfndy/fs63isJJa2NmYdHW+R8PXWG24WybrZhe151E6gQqPmq0aOGGEX6YZB0Y29TIGZIn+JLDo3C5zuMzTZk9mchxoK/AxGTFppQzePxqk+89uW9HXTjpsn+Qhy7WeexKY0PXVioZT800ODZRlqkGlRxLLY8wjkniAATYhg5C+noBfPjRWX7idTfw1lce4f2fPpvtwy37KpxblAkJmiYYL+Wo5KTdyEhhfdxb7/pcXJYjxrxlcP+peb5wboV6x9/SyX+qmme163N4XH5WN6YFvO7mPbzrTx/jgTMrGLrkpBmqq1fv+iy1PE7ur3LFCymYOnESE0Sojp2gYGloQstisf77Q5c5fXlxy/tmY+2CsN3arS3qnzx8P4caC1ypTvIjb/k5zo8feKF36XmvUPlO2Iag6QScXWqRNw08FcicdqYS9drIv868SE2QNzWKls7R8RKNXqBUiQmWIbktbS9cN29Vfye5XHLhvBZRH9YFBBs9wvpfKyDrYm1XRUvHNjVu2ltFKKl+vesz13Ayj68UMW7khSVI4GnqglMzDZbbHpW8SRAljBRMojhhqeXRdAJu31/F0KXVwuMzDS6sdDi+pzxw7l51wxj3PzGPH8bYpuTWRcpnK43fGS/lODxW4OJqV5lsJggNbtlX4VXHx/nDL17C8aNM+ZaWVMBF2f8uWAbVwiAZ+tJKh5HCCCDHMzlDxwskKPKjhERZCWRqTSEVrroGXT9EJHBgrMCR8SJCCEq6NgBQbp4sc2Wtt6n7dPuBGvc/PkfPCymqEOu2GxBEkpt0ZLzARCmHH8pO24yyFrBNjXtu3ctLj4zyF0/Mc3G1S8nSeXKuhR9Lo1ydBE3XKNg6X7lY5xXHxrfsym2sfqB2YbnDueXtgU2/OnFopE7ftZhvOiqEW/pjlXIGQbQekSSNiWOcIOLAWIHD49I6wko0ZeMiw8UPjRbYP5Kn40XZ+6dduFxFyxSXKQeq36l/qprnTXdMc2ahzWjBYqqaZ7xk4QYx55fbm871q28c54nZZuYTFiesZ1wWzOw6v/ueFw10Er0gZnokz52HRnnl8TFuP1Cj44X8xmfOZUDNDSNOzTTpugEl2+DkdBXb1DPe11jJZnpkMxBLu88/9fob0ITYdG/F8XrfOh3f9l8HkFxDL4opWgZ5y9p0HRw/ouWF/I8vX0ETgrHc1lYrG2sXhO3Wbm1Rv/Daf0qo6fzmK/43Vou1F3p3/kYriGLcQJorgo8u5EKadqm0ZNDDa6dl6RpRAn4UkTMNpms5en6YmbT6UZjlNNYKlootSZ/+18d6OoqYzuZ9kCoskRl3suE16VJn6uKaxrCQuuBLwvNYSXaBagULAfzQtxzifX/xNPNNT3pJ6VoWSJ2OAhMhndZBKk331/J89fIaTSdQX+YxHQ8+++wyJdtA0+Ti+mufOsuPv+ZYBghOzTT4vb++mHUDvSBBiAhDl9cmSmQ37PBYgdGSzUjRouUGXFzucsu+Kv/+zbdyZa0nVbBRQtGWXLwgSrtKklOnKxfeMEpUmHYfGdoJWGx5tN2AfTWpGnz4SoOO5xPH66T39LSmJG1XdTxH8iaTlRxrXR9DtUXDKKGcM3jkyhr/6kOnWG57A1yqN98xzWNXGxkIaTiBuifA0MEydda6AUfGipzcX+PcUodDYwV+4OWHpJhALbYHRgv82qfP8vjVBoYmKBVNglBmPxZtnVuna6xew0tru9rJeLHfy6pfiXp2sU0lb8nrGEPL8Rkr2bzpjmmeXWzR9UJMXXlcqc0nSULXCynlDG6cLNH1IvbXCoyVLOk0r9Sa6Q2Tvv8zCy25v17A1y7VcYJ4YPx2ZLyEpUBV0db5H1++gqfsKNLjDKKYw+NFFhoORyZK/MDLD1LNm8RJws999CkOj5UGMi5TgNkPRDd2EocJGFKgdnaxzdnFDr0gYl8tz9GJdbPWlPf1zEKLvVUbTVsnHKRg9uT+GkfHS0Ov6aXVLms9n5P7q9KDrs9yZLyUU3YdgcoflYHf/dcBEtwgJIqkZcptB2r4u9mRu7Vb118iiXnzk5/lwy/+NmJNxzdMfv71b3uhd+tvvLLvKSHjfOIECqagaBvSN0nxewTghRFpBN9OAJkXRExWczy70JFGnnFCGMcUbIP9Ncm9OLvURlP8oZRYjhADSkTDEJmvWTEnxwdtJ8AN40w1uF2HzNQFuqaBUnxut+9dP8TQJbBLuwZBlGQGk+WcSb0b4EcxUTjID9OFdOVHJFi6xoHRIg1FiE9Acbc0gkCex64fUstbWIbGxdUu7//0WX7idTcA8O8//gwzaw6jBSuz1fCVorVoG5lZpB9JQOX4EUstjwOjBX7klYcxDC0baZ5f7tD1QtwwVtuQQNePE3KGhmVI5Vs5Z3JiupoR4CUZ2uPOg6O8+c5p4iThbf/ta7h+mClPBakfGAgEqx1f+XcJcqbG2cUOXig90YDM0b/rRzR7PiemawNcqjOLbVbaHj0/lrmNBZNmTyo6SaTidqXj0fZCyjmTvdU8S22Pat4cGCeemK7yljuneezKGm4YZ1mTpq5h6Dpcw3n9WrWT8eJGdWIaqfM7nz/P+ZU1lUwg2FfNc8/JvXzHi6f4+JPzPHBmpY9QLpQVi3xgufvQKEfHS1xa7WKbGoamUSpsfv+FpsNMo8fvf+ESrh9xcbmrYr8k8T0dv3W9BtW8ycuPSvFR2ola6wVcVBFGKWjLmxrJcic7149fbeCHCftqNvoQwDMMiO5k5PvXZ5f51U+dZaRgMlXJDRDo+3lfT821ODJeGhBKjBYt3njHvi3BXgqeD48Xma7lN1mORAk0egFjRQnGmk4wMLLs+aFKS4Cpam5TF/RatQvCdmu3gFzg8qv3/0e+68yXuGn5Ev+f1/7oC71LL0jJBVQCnihKDVzliKlkGwSR9JcyVEagqcsok512xGLkGGtvNc/R8SJX1xxajuSBtN2Q/SM56R2lQMRWvmR+mKBrCbomHeJNTQIGvydjcvy+8WA/ICrnjGwsGYRbjyL7/y5OZBbh2YU2bS8iiqWL/P6RAo9dbbDY8siZOqYmcBQoBfmgXMkZRDFcXOnSdiPGSxaLbReFy5TP1Xq2YapkPDhW4MTeCueWu3zw4RlA8mFSzy053pK+UC0nZKRocmy8xBNzTdZ6Mg5qo6IP5KL3w688zBfPr7Dc9tB1ee4QsvuGOlbb0DPl20jR4q7CCAstl7VewD97/Q186w0TaJrgghq/5UydRs/Puo95BVCDWHouTVZsVjo+XV9u2wkioihFypJDFoQxTTdgueNlwOD4nhKPXVnjSr0nx6N5GZukiVB2IxI5Bu35IX4QQc7c0j0dUF5lCTlTJ6drmIaWxek8Odvkln2VoV5aO6mdjBdP7q8NGNI+OdvkY6fmKVgGdxyoYQhBqPIY05zPt736GEstjwsrXdWZlqUJwc1TJX7s1UfRNLHt+9c7HqcUX2yqbHNmqYNlSMBY7wUgpKVF3tRZ68pkhTfesY+ut+5TdlqFZ/cDEBlbFPD4VRkY/lyA6LVK0wS1goWla0yUBwFYWv28r4bjZ0KJk/tr3Hagyocfnd2U95iqVTfuc3nDKNHxQqp5k+OTJZ6Zb2W8xLRbNlqQ3nR6EDPRZ2K809oFYbv1974mOnX+ywffy20LZ/F0g6eeo/v9TrtB38wluV7yKAxdYBk6jZ5UMGpCY7Rg0fZkmG/K/9GFjDwKt873Xt++UhMdGiuAIv+X8xamLjloi20PXROZC/1WHa10Z70wZqntYeqaDMUWgnLekE+zqjOUMwWjBelkPlayCaKYx2eauIGXHfOw85CWAJwgZLkrKJg6QZJQMHWSJOZ/fvUqQRRTsg2cRCYApBUBa07aIUpwwogHL9RlRmLeUtE7kfIqIrNOSJKYgqnTVg75X7lUJ2dqTKluxLrhpBz3FCydlhPSdkNu2FPmx771CLWCtaU/1Yv3VblpSoYVx3FCiLQDsU0dESrl6UZuDLJjcOfBkQyAoX5m6hovPTxKL4hYbXsyaDmQ42VNE5Rsg+laPhMzrHY8or7sRieQx29q0HZCHr+6RlWRp4+Ml6gWTIJlGZben7WZeqSl2ZZeFNNyAlpOQJTIEWN/xXHCF86uECUJtZyJZaz/vpLTaLmBUgXmrgskpNU/XhxmXbExCWFAoThRpONHBGFM0dCZLNucW+5m/Kl3f88t3PfwVZ6YbeH4ciSWxor1A+yh7++FPHq1AcAdB2qgeFG1gkUll7DS9ZRKOUbXJNCpFUxKCoRbhuDc4noIdwruTF2QN3UaYcAXzq3w/bdPPycgupPaCbgbxvvqeiG//plzQ/MeUzHILXsrO9rnN96xj99Q29o/YqALQaQAs21o0u4liCnpu475u7VbO66bly7y+/f9PNPtZer5Cm978//L1/a/eMd/v64Au778xG/GStWH6XFEcaK6DmRKtLy17kAexTFdL8TK6ZTzFldWu2zTXMpKF5qKlUkyg8csQsQJd6S2zJlaNs6SwDFW/lgapq5x58EaT822SIBXHhulWrAHgpELlkbX09GjcKiyMXsfQyoNe36kvMygkpcjEcvQmG00AFjr+dLnbNhG1PkzNU2CkzBmT0W6ja8G3ib3/wR4drHN1TUHIVT3wNC56+Cg4aQfxbSVK34YJTzmNTg2XmSkaHFinxwhfuKpBSDhxslyxom5tNolTuBlR0a5uubQdqQQwjIEdlGn44WsOQELLZeJcm5LEAF9i2MQU1aj2UPjxYw3FEQJTcfHCWL21/I8Od+SNiFiPWpqXcQglGGudLBPFZnTtRxCSEuMck4CUEtZkpiGRhRJQ9ILSx2cIKLrx5RzOn/04GXe8pIDGUi5tNrNcgI7njQhTT/BQnWCVjsed24Tn3St2sq6YmNHMt2fc0sdCpbOw1fWWOsGyohXMFI0r5s/tdX7x4kccd48VWO0ZEsQrN5H6Bp7ypKXedNUhVrBpGDqXFqV4ohbp6vsqeQ4NdPMrD/WK8EJIsaLNkstLxvh9gPBcm4QrPTfQ1slNgyrnYK7ft5XHCe892Ont7Xh+NAjs9xyT2VH4Hnjue0GUXZt33jHPj6cGvja1zfG3gVhu/X3tr7t/Ff5jY/+B0q+w/nR/fzIW36WKyN7r2sbCXLs9ByzW7+pqj+QG8hAji4kWbjZCwjjOOtCBMrB9BVHxxktWnyk46mA5OG1ToiX5o5JgopckYYGURxnvmGaWOcXDeuEpfuW/i5WXSRLyCd7N4x40b4KJLDcCTB0I/tinWv0iOKEA6N5xgoWj15tZPyg/jKE/PKfb7mUbIPDowWanhQRnFvqZu78kXJr3wqEp1wpXROISCYDNHoBmpCdoliFLtuqM+OFsotkhNLzSioPI56YbXJ0okTXC1nueDh+OAB6/TDm/EqHd/3/HmO6lufscoeOGquVcgYvOTTK2159lCCKafQCJis2t0xV6HqhDOk2pc3Aas/n1NUGa72ArhdtCSJg+OIohKCSNzNX/elagYWmQ9uT5P5QkQhTAJZew0TFB8XI/6ZZl5frPTn+1gSNnk/RNinZJn7oq5G1VM0utDxpVIrADQR/8cQ8zyy0eff33MKJ6ark/oQxN+4pc3q+tYnb0/VCNE3wyuNjQ93thwGGYT/fKWBqu6GyQHBpe+HATd7xQxq9gD2V3I75U2ltfP/ZhsMffuEiU9UcICkE/RE+hiYtaYqWDEPvuGE2MtQ0wauOj/OZZ5boeiFFWwxwoXKGzvE9pYGszH6e27nlTh/PLccPvuIQJ6arQ536hxnapnW9XUYYYoabJAN8r72V3ADI3Ql43u7aan0GvmPmDsYCqnZB2G79vaya08oA2JcOnuT/etPP0Mpd3xNMWjv/uH3j6xsxAr3WNlIFYjeI6AYqukhIvth4yeJ1t0xybKLEly6s0nA6W24nzV8s2iYly6DtyXDfpbanomOSbBSaeYRtsW9bAZ7UbbvnRbzu5j3cfWSU3/zsOZ5daAKCibKUy8eJ9Cor5QyiJOErF+ubwruFJji/IsnLlq5xbrkrw6bzFrqQZN2NYHCr0hSZupwzCSNpKyAE6JqGqaZiukhUcoEgZ0iuXccLFc8kYa7hMrPWQxeCrhtu6rpZhlQ0nlvucmmlS8nWKVjSzqHjhnz+2SUurnTYU8pxda3H5dWuPN+J9HvLmdKzbKqS44bJEj/2rUe3HWumxzVscex5IZdWuxRtg7sPj/CRx3qs9aTVRRhJa4jUzDWNy4oTmQAgtwt+FOP5Eb1Q5WWGMehCgiXVuQoimSQgXQaUl5wmQbofxTw51+L3HrjAr/6j27OunW3qmdggVcIlyLisWsHk5P5BELAVYLj9QI3Hrja2BBLXAkxFW2ep5So3/DTQXd77YSyBevq6661+wFbOGeQUYJGcJ2OgoxoqbpN8MNo8Mrz9QI0jY8XM4LQ/rPzIeBFT1wayMlOeW97UuePAyIDi82On5gH42Kl56l2fqUqOyJZ5mV+9WGem3uMnX3/jUCB2PV1GGFSrrnX97HqnooJSTpeWOH3gcSfgeSsw3L9/uz5hu7Vb16hGvsK//K6f5DUXH+Hffvv/TaDv3Nflm6m+EQ24a20jjRJKgU86MrMMOUL82Kl53vna40xVbM4udrbcXhzLkGFTFzx8pU69K5VGUSyh1lZ/p4lB0LUV4DF1qcZLvzM//sQCH350lrmGi68W/jhJeOmRMa7We+QtnSRJmG04MjqpLyw85WhJ1aD8iQwV13D9iG4Q0tvCAmPjvssXSIBZyZvcsKfEgxdWiZRXmKaUjk4QZ+cVpAFqOadxdKIkM+q6AXNNl5yhbQJgGjJkO4qlL0aYSBNbT0XXCEX6f3qhzWLBpWDqLLc9yXGWvyRnynHcUsvjNTdODHC/tquNi+OFZZ81x8/OyydPL7LW9el6EeWKBEJeIH2piAcBt6ssMlY7PmGcZIDt+ESJlbZHxwsxdDgyXqBoGyy1HM4sdlWGooyfSZ3lpVN7xJfOr3BhpcPR8dJ6125PibsOjjCz5nC53qPrSS4ZAv7oocu85a4DWcdmWLTPly+scv/jc0yUbWlWuo0z/lYVJwldpZI1dJHtdwIIkWRu7Kkq+HrGd/01rFvZnyYQxQnjJRuRSCXkxq7S4bEitx+s8cRMk8mKTRit218kyL9JQdtGJ/6OymG0LY09ZTkC/J3PX6Cg4tHOLLX7gJEMZk9B87Bj2ylQgvVR+UJTBpK7G0QFqx0fTQgWmi63KQvInXYbs2u44ZrcsrfCLffcwhOXRvhf79zZNnZB2G79vami12OqvZqZrn785lfx8Ztf9QLv1WA9186WBsP5SN+gkp5M8ouunDOxdY0gjjE0yd35wy9d4vRcK9uPoccg4HU37eFLF1bpeSGJECpKBrxos5oxPa6dliYkUV2ahsY8PtPANiUJfsQw8cKYhabLf/3SJSbKNo6fY63ns9jyQAhsUxCEcRbgHcUJeUtXNhoJli4Io5h6zyMeYhq7xSEDEhDpmuDQaIGCJReOlY4rO3eKD6drEW4gBQ+RkN2pmybL0g9J8dhazuB1FpD5t/kbcjO9MCFnyDFenICnxqZeEGPkpHO8JshGUx0vxDauT16fVro4fvL0An/wxUsIDY6MFsmr8Ov5pkMYSxFFztTxhLTGiPqUtQLZAdOFNL9MkCrLvGVwaKzI/pEC55fbLLQ8Lq/2uGGyxEQ5zzMLsvsaI8+BdPGX90ISyaSHZxbaHN9THujaFSydC8vSe0oA1YLJsYkyT862mGuc5Z2vPc6HHp3dxCkq2jqh8oQKo4SSLe0ttnLG36rOLXWzLNIwShBC3mdRvB4W74Uxn31mGT9MdjS+2wqobexW9qcJJOpea7jB0K5S/98vtrys29nxNo8CLyx31Lk1ePRqY1MEUCVnMtd0OD5R5MkhasuOK0n+nzy9wHecGE4NGQaUhh334bEixydKfOyJeaI4plawSD+Rhgq414TgoQurvOGWyev2hdtupHpkfOdAbheE7dbfi9rXWuL37/t5RpwWb/zB/8jCN2kAt8ZzG28+nwAs3b5QKr6OF+IoALXa9ZkeyXN6TnJsdF1g65oKF96Qp5jATNNhomzTswzmmi4o/o+upWo5OZIJVVdKiJ2LHrwwyTpB6WhxJG+SU5EpeUsjZ2ostTyWOx4Fs8NKV3YCcqbsoGhCEPmRBCe6hqFJPzInjogSVFzOzoFypLqIuiaYLOfYV8txfrnLy46MkiQJX71cp5YzEZoERKfn2+hCen1NlG32KwfwthfiBDGVvEHVNrlQ76EhQUsKDqJkffEG2YXLFpa+n/eU/9po0cIJwiwKxw9jJko5DowWqff8TV5ZO+nEPHSxThQnnNhXHSBCH52QdiQ9P8INoux36XVNwchk2SZKpB1HpCKFxkvrAc4vKYxmVhk/9q1H+cK5FT53ZhkhFGBXuyOBjOyqhTEst1ygr2v38Ax/eXqBlhtSsnVp6qqyMVMu2we+dInFlrvJAb/thrTckErepOWGmT8ZDHfG37rUWMw06PoRPX89KULXZQ5oECfc9/BVPvvsEmGUbJtHeS2e1bBR3j237uXlR8eYqua27SrtdBTYdkPqHdkJ9cN4UwTQWtfH9SMWW95QtWU1b7LckWPLN9wytSNgtN1xv/zoKB99fE5xWBM1GpV8NtvUOTZe4txy57p94bbqkKbX5K0vndzxtnZB2G79na+T82f4Lx98L3u6aywXa4w5zW9aEHYtAKapp3ySJOvYpPWN4IdtV7FaIExlERBEknfT9UJ6vlQZ2nqak0gWcQTr3bGn59u85NAodk3QckPypkaYJDQVLyZVziVJQhirRXrDKHK76ieqGxro+iCfRuYYmoqknbDW9dX7yX0MlNLONjQZ8BzG5C2dkmbI471++yjyplzkD40VOb/cZbRoce9d+zm/3OEzzy5xte5gaBqGLjs5QRQzWrA4Ol7KPJH8QHbJ9lZz7K3aXFrrKfuOVN3Hpovfb5bZP+xNEsnRKVg6RVuXStcoxgliju8pMVK0ubTSHfDK2mqhe9Md05Rsg7Yb0uj5nFvcHNuz1vU5PdfGUpwj29SxDQ0vkIDM0uV4tWDqaJrsXqUk/SSBPZU+A0whmCjn6HoRlbzJ2cWOPAOJ5PClpSFTAOJQnoeJSi773YnpKjlT49Rsk2PjOpW8OeDqngKp88rMdF+tMHBeg0g6zOdt2Q3a6De3nU9Zf904WaaUk51CTY1SU5K8pklj45yhsdr1aTkh33bjBN1AGtqahsbxiWJmYxEnSWafsB1Q2+kob1jt5O+Lts6aI4FWrWANAKxKzmS14xMlkutYzm1UW8qHlpypMdd0dwSMrgWGvuvEFFOVnFQSu4GM8BJQyZncOFmiWrA23evXqp2En3/08fkdb28XhO3W3+n6jme/xH+6/1fIhx5PTxzmR9/y75ir7Hmhd+s5l1QBJpg6GAmZW73guXXDNvKtrv369S9NQxP4Ucxc06Vk6+hCEauVk/2wfQqjmPmmww2TJSxDQ9c1dEAI+SUokONOxw/p+lEWgK1pgsOjBa6s9QjCmJ1khtu6TLn0gijLeEPZICTAyQM1Vns+kSMJ9qbyRRN9xPFQkellB81V25DXIFVkpvs9rGOnCyjYOrWCRULCrdNVXn50lLOLbe57ZEbGFKnxW78wwTZlNErqfD/XcrENjb3VPPuqNgVLp+vJzEZtAGz1vbcmVDcy6eO2pZmcMkooi2ABrESGeG801NyOF/XppxcZK9pqDBwx33S5bbq27uWUJFxY6eCG0qi20Qso5wz8MCHUEuIkomjqvGiqzGrPV1mXsbpOMhuzYA4C6XT/Wk5A2wsw1TgvivrPhci8zko5g5unygPb6HoRuhDsreW3dHaPFU9pozdVqi6UEU+S0D5s/67lNXZ0vMRLDo3y2WeXcPwQy9AlNzGRoBtkPFaaLvCVIRFDU5UcZxfbfOBLl65txaDGo9ebBNBf6d+nXdEnZptDwVjaxe4vIdJxs7SXGdnENZAdqpGClXl9bVc7AUNfOLfCSNHMMl+DKCRO5PtcXO0ypR4orscXbifh5+eX13a8vV0Qtlt/NytJ+PGvfJCf/twHAPjs0bt45/f9azp2Yfu/+1tQAmmMmiANLoMd8pOG1TA3+i1fiwQlsVogEDJ2p+kE3LK3zErbo6HMRLeqOIHltssNe0p9Ci0DyxC4gfQkk8G/Ui7f80KcMGasaLOvlmep7aOLkMC7Ngrz45jltq+I6XJRL+dM6fivC+44UGN2zcEJIq7Ue5npalPFHyVRnPG4irZBo+er7p0OSUIvWFdGri/k62BH12TX8EV7K3z/7dMULYMHL6zw3x+6nOXgTVVsbpoqZ+o/QxdcXOkC0o4hHfvcfWiU1XGPuYYLIsfJ6Rpfu7xGEMtFOSHtkq5be/T6bDf6/bjiRNpgOEFEwdQp5Qy8MGasaFGydc4vd7ckWoMcOa12fVY6Hl03RBcadx8eYbnjc2G5y6mZBrcfHGGkKI19W05IwZLJAbYhlYkCQdPxeWquhSZgtGRn/mJ+GHF2qUOz52MZ2gDI6VfvVfImutCYquSYbbrSeHbDvSeAE/sqsqvYVzsx/6zmTSYqNldWewPeVOWcQSVnMNdw2FfLZ8kCG/fvWl5jmiZ426uPcmG5w7MLbaI4JooAZcdRzZkcHC3wzGKbricBSSVvDoz3um5IwZZK4wMjxR0Fh29VOyX+bzf+i+KEkYKFSPyh8T4FU88+Y2u9gHLO3GR5sbeaI1HnebvaCRhaanlYhsYjlxsYuoxe6z9/qQjlenzhdpIR6u/kKVHVLgjbrb+T9YOPfiwDYB+483t47+t+jEi7fqn3N2MJsR6S/Fz8yfpJ/NdDLk/fO1UOkkBAgi4S7jggw4/XrjS23U6cSAK4H0Z9Cq2QvKFLtaEGXS+UHQEkJyYBmm7A4zMNGTljGXQ8/5r7HkZgagm6LohjubC6ioR9bKLMm26f5pnFNk/MNLnjQI2Lq11aTrje7UtgrGSxt5rDCWLGSjY9X5lfDlEMpN0xIMtJtA2N1Y7P//raValaVJ01BJRtg7VewFOzLU5MVxlVkSfHJjTWeh7/dIPz/en5Fu//9FnOLXWYLNscGStwud7FC+UIN2/qHBzNkwDnl7oDgKQ//kkIqOVMmm5Axwvp+RG1gslkJZ+NSzcSrQezA6WqNYwTbEM6zfcCGU00Vckx13C4sNzhrsIIQag6N0Ly2saKVsYDquQMFloucw2XlbaLEDkqOQOEiSYEX75YlyHVbogbRAPB1m++c5qCpWObGuNlm4W2R5Lam/RdkwRwg5jT860BsvlOzT9Tl/SNAdu6JhfbNCj+Wp5VW9WJ6SrvfO1x3vPnp3HUw420f5BWKroG7kxEQkIlb2Rdy5Q/Ve/6+FFMzsiRt9a/3xJljhqoBwnXj7btLO3Ut+ta479775xmtGgxVrQ2hWGPFW0mKzZxkmDrOk/MNfGCCCch+/3hsQKrXX9HIHangekILTsn/bXx3zutFMD3vFB+R0XxQFC540dY5s4lRbsgbLf+TtaHXvxa/rdTn+S+W1/Pf73re1/o3fmGVpIgFWBcv0u/QH6BeztAbxqwt2rR9mK8UHoxBX1/J5AkVzeM+MMvXaLtbu8+byvvqziGy/UeN01WODRW4NJKh6YjDSLzavTkhDFaGLOnkuP4RJEwTphvODTdkDje2s6iv9KRUQpAEtbtNr7r1kksS89UX6tdn5v2lAkTqdCaa7oEkezAXVrtYZsarzg6zo+/usIffukSV1Z7FCyRWQxs7MBEsRz3jRVtXry3zGfPrADwD26aYK0XEMdQzOnkLZ2mE3BxpctIwQQh1OKRUCtY3Haglm0zJUf/8iee4bNnlvHCiCSW3LdaweLeO/fzrtffyL/44OMsND3lQyYJ/x0vwlOLvKFLHl7O1NE0qVL0wpiOF3Db/tpAFE660PVnB1q6pkLQZXKCH4astj3KOZMjEyWabsh8y2Wh5ZIzdRJkHmbeNjg8vg541noBPcWpemK2RWGlS61gsq+ap+dHHBjJ0/FDHp1pDBh+3n14RAkkEo6NF/mLJxckt1ATEsj0gU1dkwkBv/apMwP+Uzs1/9wuYPuHX3mYlY6/I8+q7eoNt0zx4IVVvnZpjb3VHJahZwt6o+ep8aOmkiXWK430EkKORNOuXr3rDwRtJyRYhrRq6L+f0toIrHIVjZWOz0PnVzmz0OZff9fNnNxfy7qiqx2PyWpOfSckWcbnuaUOD12oc2yiyJOzLe48UMuimExDo2TpnFNd1jfdsY/3f+Yc802HkbxJKWdiCMF8y90xiN1JN1OOHiNO7q9uAoXjpRyTFXuoCGW7OjxWZKRg8tCFusp7JRsPHxkrstr1ufE6Rr67IGy3/s7UeHeNlUINhKBrF3jTD/4Kof7NcYunnCEYHA1db2mKgH294CstQxc77p6NFE16QZI96UljT7kgrBttSgJ914uuSZoPoljZEAjKtsFXLtXpeiFCQNE2uGmqzP9x90H+6ukFnplvc2SiOKCemqzkODXTUKrKa9d40WKl62fjOoEELIau8eCFOt92U3OT6ivtArzmxj288Y59Gem8vxuVV3wtXZlrdrzNcgoJzKTKb67pZV5PHS/a4FiuUbDkeCZV2W3HKTq/3OH0fAuQY5+coREn0HICPvjIDGMli7WetBpYaDkZx0rGT0lBRRjFxIZGzjTIW9DzAnzlot90gmxfQS50aXZgOk4K1e91TcoC/DBmoe1xaLzIaNHi5P5q5rhv6ZEMZI8STuytMFowabsBKx2PC8sdul7ERNnG0ARNN2BuzaXe8bl1uoahC2xT5/BYEUMI1pyAK/Uuv/35C3zk0TlGSzJz1FNqz1jIxTXrVinbCE3AfNPdZBuRXvvtMhm3C9h+/GqTd7z2+KZ75HqtDjRN8Ja7DjDXcBUQkga7jhdyaaWHberkDY2WGyorE5Ep/PKWTi1vsa+WZ77pMBZaG6wfJNiNooT7HplleqSwydKif9y81gt4drGlAFzMbMPh33zwCf79vbdStA0eu9Kg0fOZbbgD3LQj4yX2VvOcW+7wAy87xFzD5dxyV9phFCyZMtHXZT0xXeUn+z53qx3/ukHsTrqZ+6qyM1tUiRd+nGBpAsuUAfVRwnUT80/Pt1hqe/jqAS/N2FxpS4+9m6fKfN9te3nfDrf3zbFC7dZufZ31kpmn+N0P/SK/87I38zsvewvANw0AA5TiTsiQa5HsiFg+rFK+z3NRQuoCjo4XccOYq/XetmBQvocgimTWoaEJpVzSEULGtXh9BxEnCUGUbLtfKfjTkoQLK11CRaS29PXcvj/6ymV6XsTxPeVNT7dCCI5NlGn0AhoE1zzejhdQK0jOSaxGHjlTo+1IGX26KN+yt0LuZQc5s9hhY85if6ULVhglvPamCTq+PDdfvrBC0x0EYiLbh5CnFWhCKUpHi4MZkIYmcOKEIIy35RSFYczvfP48jh8xVckhxPrII7Xe+JMvX2WsbHFkvMS+moy8ubLapb0QoGkqciZKsxk94kR2RsM4YaXj8amnF/na5Tr//NtvygKZLV1jRuVY9pRYIowTRCR9x3KmjuPLAPFK3iRn6AOO+wtNl/sevsrVtR7PLrZx/IiG4xNEMokgTqQ7vi40dAuIY67Uu4yV7Ixwvdb1WWi6mYeWH8VUcybnlztESGVlCobDSC7CQpPnXwD7atqWvCiRakzF4Oh9K+I3wGRF2lh85NE53n3PiwbulediqrqVBcQt+6rkTMmPTEF1Cn7GihaTlTwJCd97ch/3PXyVR682CKOYat4kSqDlhhQtgxfvq7Da9TcB0X5e1Vov4MnZZh+A0zGDiKtrPX7pE8/wsiOjXFzpYuhik/VE12tyy74KXhAzVc1lx3J2sc2l1RBdkxSAf/Ith3YUAbST2kk389b9Vb52ZY1L9R4CMQAaEQLHC6+LmN//HfCyI6MZhSFSD1Ty3shx81RlR9uDXRC2W38H6vuf+iz/4eO/hh2FfNezX+T3X/LGbyoABqmSUGbcfT02Euv07+uvKIGZNUdm3vWp+oZtKyV6V/ImHdXWz5sGofJfStVPQoHC1GSyn3u0VcXIxWGiZFO0jcwotKfy8rww5thEcVPWW9mW+Y/93JftquPH6FpMtbxuTxBEMYauMVWVuXGfPL3IQxdXt+XCpIvq6fkWX71Yp1aQ56RsGzRjP1NxpoedjgCTOCFKZLh3ydYxDdlB2+hYbukampDAYphjefr+n392iatrjhpVDXJOUuuN5a5HwR6MqOkoUrehrEU0NaZNA8m9UIY5V/MmQkC94/PLn3iGRtfn2cUOX7m4SqBuGE2s53q6geSEVfJS7RhEgyAyddy/7QC4YcSv/NWzNHpBdo9Yqrta73qMFi1qBRmh0+z5zKw5jJXsLPMvVVjWChZBJDtRCdI5/+paDz+MFJiUyk9T12RUVAJBKDs6EyV7k+3GAL9JLeBPzDaZbTjce+f+axK/NwK7681E7K9hoOTgSIFf/PjTGW8xdaA3dW1ARPGGW6Qv1VPzLeJE8tT6o4VGihaWoW/a33TcnKtoPLvY2uTdlTN1/DBmte3x0cfmiJKEsjnITUszPmVOqPQbOzpRIkkSPvDFS3S8LnGcsNRy+fCjs2hCDIyFvx615nb+ZbcdqHL/qXmpnI0TRgpG1p3uek1OKGC6E/5ZWv2gtZQzGFXik/Q7SiSw2vX40vmVHR/DN9dKtVu7dT2VJPzUF/+Yn/rinwDwiRtfwT+7559/0wEwkOajQpMS7eQ5Eurh6/cB6/oRet960r+9jQBPU4u2LuRoLWdqMhYGCBPpsRVHCVofHtgJ11WOBQVuGFPKyS6aH8aqyyKBwQNnlshZcnHfKMnPmboMTd/B8bbckFIuJGcapBL4saLNRMnmqfkWf/DFi0Tx1iaYAB98ZIbHrjS4vNql6YaYGhRtk7GSlNJHMQNeY0mSyBhpTaApc9coBlsI6a4OjBYtTkxXubjcYaHlkrcMwijZNI7pX9Rn13r0VGdH12QGYqI6kHEaTRTFjBRM5psOx+0SbTfECSJypkwSEMjImSCUUdcpOdkyNCxDI7XwmG24vPdjT2ejXJAcQckDVNexT6ShaZIvuBWIfOxqg4mSzYnpKvWOzzMLLWl6G8rcIieIKNpycS/aOm0vZKklVbT9CktIx42yA5OmDnS7QbZPOWV9kgBxFJO3NMIoZs3xsxzGndgb3H9qfkfE7xTYXYu0vpMoo2GgJO32nFfjvZoa720UUUxVc+yvFRgrWcTxerRQyoMY5l+W8qpWOn52jvsBZxgnGLpGtWDy7EKH/z977x0n2X1WeX9/N1Wu6jidJs8oeDSa0Ui2JVvGMhgDRhhH3mUXFhazttnALgtLNngddknLu6xJiwGvAbPvAg4ECQzGxtmSLVnSaDQKk0PnVLlu/r1//G7dru7pUD3TcdTn87Eldai6Vbf6Puc+z3nOKSQNGl4Qf1bUez7Xyb57byf7uzOcGi7xm5Fv2Z7O9BzBXcV70S6WI6+zNZcTezp4ZqQcj3Nz0XbmE1eKHN9daHuJAhZZBhAiNuoFmKo6nBmv8tv/VG77+LdetdrBDtpAwnf5lb/7n7zp9OcB+F/3vpVfeeAHkaL9rZSNRIj6Y9OEIGnpCJRNgL3QcXUDsBQBXEjINKBie6pouyHTNRdL1+KC3Sz8rZl3zd9d6lXpgsizSxmh1pyAYt3FiyJ1miRuouphaB49WXVnrbLelObizqECuo5a518BEpiquHRmVKcmZRoc6MnQcANm666yMBgqLFqEf/8L56m7PsPFBtM1D8lcCHnd9QkqkjBy9m/+D+a83JrETAJdGZPBjjRnJ6rztuyyCZ07Iw3SXXs65o1jFhZ1IeFKZKnhh5KsZeAESu8lpYw2XiVHh/Kcm6xzdqJKytTxQ0naMnDq6jVYuspubGq/hCAmOJWGR7Ghfq7V+iKMCKalqUQEP1TdMykl5YZHJmHgBcGimp5m92CwIx1ptATGhEbV8TE1AUKLOmkSUxfIaGxUcfy4yxBEzwfEovzzk1UCKSkkTWYCJzb3dYKwhRwK8kmL2gKX3XbsDUZKDQTX+oQ10arda4fUtRNltBjadatvEipD08imlz/eJpq6qkfOTROEIca8DfK5m5ZcQnUphzpTDM/a19hP1BwfTRPcf7gbYN3ei6WwkLy2bvVmk8a8wPamt56hizgjtF0stwwwU3M5ebVE3Qvo6Gw/i3iHhO1g20HIkD/681/kviun8DSdn/+2f8efH/82DME1LvJbCcpYW9KVUSHWoyX/hlzub+R3V4IEJqoOmlDiaEtvrv+rbSPbDzE1tWXpBnKelma5Y7JavB2CMGSm5igtWUTmgpZWmh+qUV7CSKDijNQr9oIQ09AJoiihleAEIdNVl5SlM9hhomtwYboGqCLULBKta/1qcWCarrQVjTNCOlKmKvJeoDY0mwI95pu2NtH8mibgh191kI6MteiW3Q/ev4c33jU075gXK+oZSyeTMKg0PDxCZuquMguNDMIarupQnJmo8Ybjgzx5pcjJqyVcP8QyNAYKaixbc5VhpZTKakHXNBKGThiGFBtuvHUHiojrmkBEo1U3kBiaxNQEfhiiC8GhXVl+4BX76MkmyKdM0pHRabPALuwe5BIG6YROsaGMVhHqvQ9DidRCGq4fOeqHOK5PIhKjK+JHlM6gtlOa48m0pTo0XiAJQnBkSMpUo2vbV35oHWmLWqQba8feQAP6C8m4q7iUjcX+7kxbpK69KKPF0Y5+ql3bjdbRW1NX9cJYheFiA9MLSEbEvenbdaAngxN52KWt+YSmuWmYT6px8l17Otb9vYCVdXcLz29nxuKedGdM6jVNMF116S8kl3qKRbHUeyyl5MJklZrtMdiRoi+3Q8J2cBNDCo2HXvJqXjJxgR9588/x1X3HARVbYqEKxVZGse7SEblCI66NH2oX6/0q/RCEkBhBSFcmQSjDWExd9wIcz59HNFZ62zWhHPN1TaMRWV40IaPuURNNgun4IaMlm1zSpCerhMjlhkvS0JDhnGHqYmg+RnMzteEGPDda4dxkjXzSIG0ZpKPNpsXW+ksNj46UFY8xNE2Nd7wgxA/B9kM6UjrllmVNTRMxgWl2krIJg2N7Cvzu587HW3Y6UHHVmO3Pv36FAz0Zju3uiB9nsUImNMGRgTyPX5zBiYivqQsVXO0pndBdezoo1j2eulLi51//Ei7O1Pif/3iGC9M1jg7kEUJQtj2+cbnIRNlWnVlT3RTU3SC22mhu4CHmOkoyUN02L/L9CkLIpw2+69ggp0bKS+qgrukeCMG+rkyUH6g0ekKozvBUTeUnmppaYvjGlSJ3DBTIJnWmq260/ahc5TMJAykVKevKWNFnUkXiNK1TvFCStnT2diXJJIy4C9SOvUHS0vmuYwN8/BvDy9pYaJpo27NqNVt4C7GSfqpd242F3aejQwV++vW38zMfP8mV2YZaxNG1WE/WkTY5M15hsJCiYvv07Upyz945QmPogvGyExO8p4dL6/petKO7W/T8towOq/bqBPlNLPUeT1Ycxso22YTSwyHc9h9zVUewgx1sIoxg7o/2oye+k295x+/FBAyIYkYEYrFf3kKwfaVnyaXMJU39Fr6G9X5NSz2flFD3QmquHwdy+6HE9nzcACxdbTcut2VpaJAyNaxIjGb74YoWG7pGrF1rdsg6UgaZhE4gJd2ZBNmoW7HUa5DR4zTtNGSUoGhoSsNSaniMlZQtwKnhEjM15dDevDAHoWSsbGN7QTwKS5g6XWmLhC4IwpCqM+eaL1CfwSD6H0KRpP5Cko9+9XLc1bIMncvFBpemG0xVHZ4eLvEzH3+ap68W42OPi/qCJYR93RmODBYwNPX63CjqKJc0uHtfJ/sjq4AzExUuz9Y5vCvHux44xGAhxdnJGlUnIJMwObwrg64ropWMupNuoIixEHMeWyq/sSnKV68xmzDIp0wShsadQwW+dmGap6+W6EhZ7O/J0JGyePqqGqWeGi7F3YPRUiN+rKHOFP35JJomcCO/qXJUlDtTJglTozeXQNe0SGxOHLA+WEhG+aSSsu2RMHVu6cuRMHTqrq/yTXWNrrRFT8ZCF3B+skZX2oq7QIsdU/y5ibpGt+zK8boj/fyH197CnbsLFBsuF6dqFBtKzN2qa2ot+ouh3SijG0VzdLnS8S7Esd0d/Mpbj3Fsd4HeXIKXDOQ4vruAqWucnajSnU3wrgcO0pWxODtRpeqoDUrL0BkvO/MI3nq+F80R/XKfN2j//K7GKb+Jxd7j2bpDyjI4truDzoy1qsfb6YTtYFvge5/8FG9/7K/5nu/7FUoplQM3nemIv9+ccjXv5NdzVHcjUGmG6jg9L0DXNDQRxvohmBN4t2KtX8vC96e1Y9Q8hnk/G3Ue6q6PH1kT6AK60ibphAohnqq5hKFUG5PR1lTdVeaqgVSRNaHnL3kMrZCIuDPmRGaij10qkk3oZBImtw/kMaJR1kTVi19DKxRpUN1G1T1Rz+iHIYOFJFWnxrOjJTrT5oKtMEWiEoZGGCqtkheEWEaLIznqsZvaL/UY6jgVYYi8z/py1N2Ac1M19nSmV7QB+NnXv2Tx7lELenMJ8kmLUIbs687QmbaUZYW2uAB7KU3RKw728PxYmVqUW9l8LZpQujEhVDZoGCpySfT5MDSoOz7dWYtswmCkZC+v/Xkwv2j3YF93Rjnva4KUqeOFklxCjRVTphp7daQMTo2WOdid4fV3DvDohWlODZdxgxA8Ymf5zrQ57xMgxJydihuELPx0rKZrtF6jwPXC9Vo/3Lm7g599/Uviz0nTpLhVe3aoN7uiNm293ovV6u6upyvYLha+x8W6yx988QIJc/WpLDskbAdbGkKG/PTnPsKPfO0TAPyLpz7F7973Pdf8nB85h2cTunJujzbWDF3gbiGhWJNcaahNRUMXcfdO14XStFxnnMZqcA1hgShQO+pWuUpv1bxGedFKXD5pcHW2EeUACixT2SWkExq7NMFE2cGXEkOqDoupmxQbXvyEzZeWNNTG2lKnJmhplTXJYSiVKaymadRsL9IfGWSSNpdnGvHWHiiCaBnaXMiyrqvHCCWOH/L8eI09nSnOT9UYKdrkU2b8Ouuu8lZqrt4TWWh0aIK6G1JquHihJGVoGFEXUEr13gwU0hi6GvH151XM0ZXZGkEQ4gUBz46Wo5BiM7aZaNoAtHqXLVfIDF3psbozCY4M5K9JSl6s07BUYX5mpMRHvnyRc1M1fD/g/LQKSO9ImQhN+XN5QBDIuEvWcAO6skn+5X37+MKZyba0P0sRwQdu7aXi+Hzj8iwa6vPfaqsAcKA7y2zD5bb+HN9+Rz/np6r8xj+e4eJUjTsG82iaCvN2fUlXxqLY8NCEwI5ucpp+Wq3O6GE0pvyOo/186ewUE2Wb8bJc0jB0vUaB64XrtX5YicC1Q/DW671Yrdas3YWG60XrexyGks+9MBn/va4GOyRsB1sWKdfmfzz863zHC18F4P991ffxu5ER62LwQzXrD0NAqJgcEOgiWLS7tB5o1zohPp5QGWc2fbaaouh2adhadfxCFAHxQhETHpjrkEnUhcaTc5uQuqYpYXWEpGlQSIfM1FSuY8NTgvC9XWl25ZJ4QcipkRLSC9E00KRABCtHEGna3EgMAfmk2tTaXUip8cikTsrQGSs7cdcqkzSUU3wgSRp6zFOaOio/DKk4igyVIh1YxfbneSsBPH21iOMHBKFkpNSIOkbqcbxQkk4YFFIWVcfDDSRVx+PE3k5ENMYbLTXoziR4drTM1WKDqqOyKVXci0nC0GMbgKZ3WbOILFXIxks2HWmTlKXF56eJ5ToNixXmO3d38Gvfczwuql+7MM2HvnCeUkOR3EJKkWg/UOPJwY4kL9vfzQ++ch9SwqdPj7et/VmqgD91tch7/uoZ+nIJEpY+z1Zh4eNomuDwrhw/8sAhPviZM7Ftg+MHkYO5pDttcbA3S8rS40y/UM45o1+jKTI0+nJJXnVLD8cXbKiuButd9FeD6zGMbaIdwrkSwVuP9+J6dHc3agjbLhYSz26znSqgsEPCdrAlsasyzR984v0cGzuLoxv85Hf+GH995DUr/l4QWQIo4bDEC8O4yxRugGC/7T+9iNnIEExTdcNcPyTij5gabbnqJwxwg9XFGKmNt7nH12n6W4FAxtqvps5JHa7aYHQD1SFrEjMp5zdicgmDYt0jbWncva+DREsOXqmhxpWhlPgBWIaOoauMxYXH33x8TTR9t9Qxd6TU2C+fspipu/zoaw+jCSWMziR0Qin5zc+c5bmxitq81MQckZRKP5UwdbIJg9m6S18+SVdWhUpbunaNt9KhXVmeHVWRNkGgSLKGij5qXseHOlNcnpbUXJ/pmkup4WFoGqOlBoYmqDo+fijVUoJQ59rxQrzApSttYftB7F12cboeF5EjA3nefGKQP3/sKmcnKsqvKWVwfE8nx/cUePjk6Jp0GlqL6vE9HezKJ/m9z59jpGTjR4sYgx1J3nh8kAePDcZF7PxkdUVx+8KO3GIFvJAyKaRNkpbR9uMsLPLFukeIpDNpcVt/7hpdTtMZfaxkxyOtVi+vSzN1KqfGuKUvd0MFeqOK/nK4EcPYtcRavxftLFMspjW7UUPYdtH6mTx9abzt39shYTvYcjg8dZk//vNfZLAyxXQqzzvf8m4e331kxd8TzJGRph1Ek4BtwISvLbTqrszIc0qFTIuY9CRNjYShUWr4y3aJBJBPWQwWUpwaKV8TIg1EGh8xz3QzRDndm7oyYk2a+lz4duvGIooMKoNM5evU8AIVCYMyoB0pNehIWaQt1dGp2B6ZhMr7K9a9eTl44yU7Fner16u8n1KmjuMF8WhSAGlLj53BpVQbpClTI5s0qTkBugY1R/mMLQwlftcDh3j/Q6cZLdkYmsDzgzj7splbaegCux5yoDtDby7B08Ml+vIJPD+kgk8uYSBRMT29uYTKt7QMnh+vkLUMdF3D1FTe4XTV5Y6hPOcmq0yUHS5N1+nOWtw5VGC65jJSbHBiTwdPXikyU3fRiHzSgpCpmkN3xlLeZVHBzCUNTg2X+NAXzvHYpVnV3ZXqc7Erq8KP7xgskDQ0Hjo5ymipEVmJrE3X5Y13DfHg0QG+fG6KyYpDby7B/Yd6MIz5SyRrpf2Z9zhW5prQ56Uep7XIlxoeH/3qJS7N1OlIz7cHaB7LnUMFvnp+at39qzaq6C+GtTCMXUus5XuxlXR3S6H5mXz6Yid//qPt/c4OCdvBlsNMuoCv6Zzt2s3b3/YeLncOrPg7EVdQ3aWWrxuaGl/VHDVqcvz1H0q2apgWomluqGI/5JyOqYUleoEEwhUJmBBq/Dq4LxmZito4fkDzJTYvUU3H+TsGlUi86gS84kAXZycqWKbBRNlWuXuLMNVQCjrSJkMdKS7P1NGF6jLqUVemZPvM1l3qroYRbdN90y09/OtvOsgnnxieN4rY35Oh6vhMVl0qtoftz22zCgG6BBmJwtMJnUpDEcdQqvctlzDjDMggZMkNq6NDBd5+/37e+9Bp6k6A44fYfkDC0CmkTDRNUKx7JAyNNxwfxPYDPvPcOM+PVzCjEWvK0klbOp0ZiyDU2d2ZJpSSyzMNRcCi2JZm+Lapa7ykL09HyubtrzrA7f05Qil579+cjg0j79rTwaMXVGh5IBQR1YTgYE+WjrTJ2Ykqx3Z3UHV8/tvDz/LcWAVNqE4RqBzExy/P8nOffJoDPRlm6x62GyCBXfkEbzg2yOuO9C1LINodUxmGxgO37VrmE9ie9udNJwZXfL7m4zw7Wuazz0+qhYyofakJwcHezJKdvdYib+oaH/zMmSWP5b6DXXz00cvr6l+1mVhPw9itgK2mu1vuOA/0tP/52SFhO9hymEkX+IH/533MpAuUk+19mONw4jCklWd5oXJ9V8V8+YDptdJXiWWuAUHspC7jPL6FaOrDWo8L5kaEWkTwmhYCF6bq9OdTXC3asV4JIg8pSRwrdGaihhX5QX3m+QlcX5JLKlF4ytJJGho1N4gdyb1IryWAS9O1OCBZCBH5Okk6kgYzdU/ZOOiClKkuKZoQ/MKDR+YV4FLD45f+9jk60hbPjJSpO34c+q0J6MgojZQWeVkhlE4tbenkEiaWoVG2PboyFuWGy/E9nUve9b7uSD8PnRzhy+emSUeGna4fMlt3SZk6lq5x38FuBjqS/NZnz5JNGOhCUPcCPF/SqLmE0uI7jnbxpTPTyrxTMC94WwgRh2+7XsBM3ePY7g6+445+NE3w1JXiPA1LVzbBvQe6ePJq9HVTiwj3XNzPm08M8vFvXOV8FJTcmuPXZWhMVR2eH68yXnZ4+f4uBgqpuAh9/BtXGepMLdnpWI8x1UrZfU0i3tbztf45iCW+fp3H8pa7hwhCue5eXpuJjTBJ3WwcHSrw77/lMB/5ykWVmBBCIWVsiu5urbBDwnaw6dDDgF/8zIc41XeIvzj2bQBc7Bpa4bfmIwjlouM4mG/eqou5MG1Q/94c1a0UPm1G24srwdS1azpucxonRZzcYM5fShPEHZ8mJKq7t3C5vtlhE1HHaLAjxZGBPJdm6lGmIHiRMM0PFcEJouf1A2XPEEq17RZERKvmqrDfQsoknzLxApXlaHsqFHm27hFKNTpMmhqWoWN7IQ3Pp+7OHc+uXJK9XRlGijYf/MyZa0Yf5yereEHISMkmaWrkEgmCUD1Xww+o2D62HrK3K0UgQ7IoghhKGflIKa2VoQm6s4ll73pPj5aZrLqEoSLou3JJ/CBUo65Qcmtfhn/9TQf4xBPDzEQhvkDsmG/ogvGSzaXpBgljTofSGrydtoxIryYZKdsMFlLzjmkxDUtXNsFdezq5MFVlpubiBiENL4yLSNrSeXq4TCjlNTl+QGQXEUa+Z4qIt9PpWM8x1WLan5rjx9mBKz1fs4Pjh5Jvvq130ZDqdjs4y+mQrkfDtp2wEYaxm41TwyU++cQwk2WHMFSf/75ckjefGNyWBAx2SNgONhlZp85v/dWv8JoLj+PoBl/cfzdj+Z5VP067HSyVLTf30xI1EgtRW4q6VB2zpvi8SXo0AboQeG08kyZUBl7TH6t5fJaukTBUJ2ohBJGHWAsRjAz15z1jk6g1lxLv3N3Br7zlTv7h2XF+7e+fp2q7lKMNUVNXZDMIJUJTJFUTgmxSpyttMlp21JhWCGSk50pkE5F7esiuXCKO8jF0jUzCwPYCak5AEAS4kQ1IV9okkHDrrizduSRSykUJwd7ONI4fULM9duUTCKHheAFVNwCU+WnaEhzqzXF+qkrV8ckl1XZe3QtI6Cp658TezmXveuOiHkjuPdDFhela5IQP6cjHpy+fJGFqnLxaIh1p4nJJI7aqUO+xxni5QV8uyaWZOocT2bng7akq5YZH1QnIpwxetq+LN0ck6qkrxThEeDENS1fGoiOlQoUP9GT5j996mIM92bh71jS5NBYQDi8i0U2Nn9fiybFcp2MjxlQL1/Xf//Dptp+vtYOjaRr51Hzt2Wo7OEvpkLaDpuhGcL3C9e2ChTcSAx2peKniNz97dsP1bmuF7Xk2dnBTYKg0wR9+7L3cPnWJhpHgx97wE0sSsGZXaDVYbLy48L9bBfxCUw7wfgiEikgJMacjW2mc2XxOL4g8twxo+IFa7xeQSxmEQTgv3keyIO4n2r4TQvlBOUsYafkh5A3BD75yH4ahcWtfNrJSgJ5sgtm6hx/OGXA2Nx4NXWmrNE2nI2UyXXMjiwS1ndlwA9wgJGno9OWTPDtWJmXpSKDc8JCyuRmo43vK+kO5sBtYEcFZihBcnq2TMNRmYtn2SZk6ZVsdp5BSvWeaBkI5eJ+dqLKvO82/uHcvVduPLRNW2rBqLerZpEFXxoojVkxDQ0i4PFPnl/72Oc6MV7AMLery6fTnk3RnE+SSRtQ5kLzqlh4qp8bixyykTG7dlePidI193QZvv/8Agx1JPvGNYZ4eVgG+aVMFc9+1t2NJDctgR4p3PXCQw7ty8bE3n1edYznPAkRtls652Td1aU0s1enY6DHVap9vozo420VTdL24mUnmzax32yFhO9gUHB95nj/4xPvprRWZyHTyw2/9RZ4euGXJn78eOb2mqa6SlCt3yiTEpMXSNSxLxw9CBCIeU7bTbdOFGgkGocQJwlijJYHZqtvWY4SAIaD5m62asFakLJMj/flrXkfS1OlKC2brLr6vumtNFFJm7OqcsgwynsoLdDw14qq7PvmUxb6uNElTw/ZC+vMJpmouXiBJWboacbZsMnqB+t2sFV1OpOrYTNdcnhsrx6SpYvuYutLoXJypMVN1aXiByi+0DLIJ5e3l+SEiqYr1RMWhM21xz76uNt45hWuKektmHMBU1eHCVI3urKWInxDUHJ/pqstI0SaXNOjOWvTnUyRMjeN7OrilL3eN1ujlB7p5y91qbP6Bh09zfrI2T1R+eabOs2Nl/vnL9/LklWJbfkn7uzPcOZTnykxdnYsWTZjQVOh504B0YUdjqU7HRo+pVvt8G9nB2UpeXmuNtSKZvh+uuBm70biZ9W47JGwHG47XP/cl/sfD/y9J3+XZ3v28/W3vYTTfu+bPI6XSQul6+1uRoVR7iWlTpyojgbyMRpJyaWPRJtEKgbQuaEQdLEMHDTU+WlWJiywkhFDO8kE459uVNHXSCZ2a6/Plc1M8cNsuak5AZ9pCSOVTlbYMOtOmIkiAFm1itl6/glCSNA0O78pwarhE1VF+XXXH59kxpUvSNehIW8zW1Qag54do2lykUHPMqglB1fXxA8n5pt7JD/nDL13k6xdneevdu+NimzB17tnbyZXZOs+MlMkmongZP0SiunJw/eTgmqIu5byw4bPjFQIpua0vyzMjFUYj6wzLUDYWjh8yXXWYKDs8cGtvTCIX0xoB/NifPclzoxV0DTIJM96ArTkez41W+OyzE/z69xzn8mx9xa1ETRO87Z49PDda4bmxCsW6SyYKGa86yqzU1DX2d2fa7nQsS3KkZLJi4wYhxbrycbuRTkIYSop1pXWbrNj055MrOvpvdAdnK3h5rRdulGT+1ZPD8zziDF1ldb7rgUO88a7V6XTXEjez3m2HhO1gw3HL9BWSvstnD76UH/3un6KWSK/L80gJCDkvzqYd+IGk7vlkTJ1GNOITkiUfp3np1iImZvvEsShBSCyGXw20aGGgK2VSsn2cIERGBdLQBZauYXs+kxUHgExCJ2XqmPkExYayLggiJ3YpJYWkSdlRG4IklOlo3fXpzjQ9vhTps1rueHUhsEyN6ZqLQBXzYt3FdcO4MykgJlFTVYerMw0ano+USnc1kE/GYux//y2H54rtriyFlIUmlF2EH2U0WobGmYkqB3uysY/acLGxqkK5vzvDod4Mj12cJZswGCvbNFxFMEOpLtQ9WZW/2IRazBAYGvhBiKFpLWd27pwsvMs+O1HhsUszCKHIavN3TF3QkbaYqbl8/dIMF2dq88aOy+HoUIF3f9eR2Ces1FDZmNmk2gJzvIDpSNSvR+HmFdtfstOxFMmZrbmcm6wwVnZImzq//8XzfO6FSd569+7rIinN7csz4xVGiw3OTVbpzyc41DtnnroYqdqMMWE7/lU34jq/Ho/TLq6XZP7Vk8N84KHTNNxABbSn1ILR5ek6H3joNMCmEbEVu6WOf13Xiq2AHRK2gw3HB1/5vVwp9PHXRx4g0FYfeNouNK1JnFbHgMJI59Rwg4jIqS6JJlQUz0I0Bfyapjpv3RmTuhtSc1Xcy2ptL4zo2iElTNVclSUZPUgYKmd221O+V725BKeGS3zs8SuMlBqUGz6ZyOOqv5DE0DTOTSoReWfaRIaSmYhUpSydXbkkT14pYWiCVx7swTT0eZtpTw+XmK17NDy1sbZwO1QCs3UvCnJuUHOV0B9N5UNWXZ9DPWnOTdX5yydGeMuJobjYpkwN2wuw/TDOeswnTWZqLrO1GQIpSZo6//tLF0haett2CqdHy8zUPK7M1qk6QWyAm7EMHE9p8rwgZLjYwPFDujIWDc/H9aXaPESZ4O7vTs/LG1wML4xXqNp+5OW18KIvyCaUNccL45W2SRioQvob/+wE56eqvDBeBSS39uU42JPlb06O8HufP8fZyeq8bsW/fMW+Rd+bxUiO7QU8fbVI1fHJJk3u3F0gaeg8fbXEsyNlduWTzNbdtq0sFoqmj+0xOHm1xGjRptLwuXN3B0lTX5JUbbUx4VrZeWyWe/1qTVJ9P+T3Pn+OhhvESzMAKUsjaWpMlB0+9PnzPHh0YFNGk8t1S2eqDk9cKWLoYtXXiuvBWpPqHRK2g3VH3q7yn770p/zqq3+QhqXGE588+i3r/rxBqDRaq+1Cxb8v50aAmhDctSfP1y7MqmDr6GckinxZusANVDclnTBouE4shm8XrduYSBlFGUWu/9qcNi0IJQGSpKl8q5rF73BvjrOTFWw3oNgIcf2QQ7uUEaihq0zEquPjRq7tKVNnsqo6aXfuztOdS15zTId6c1yZrVO2VTZi8/1oHm9zsaASRfNoQlDzlcN7qe6hjVdJWzoHezKcmaiQSRiq2D5+lb8/PRYbsQqhArBTlk7DkUxWXXRdcHSgQH+0BdWOnUIrGchYapsT1AjM9kJySYNCNHa8PFMnCENySZNMQlfWHF6ALyV3DuXJJMw4b3D5s9bu2V0dmjmJreTt1HCJh0+OkjJ1TuzpjPSHUG64PHxylENRcPFCzCM541VemKjQ8AIGO1Mc6FFbnwDdvsWjF2a4MFXj5fu7SBWMFd/7xUTTWZQ57YXJKmNlm5PDJW7dlV2WVB0dKnB7X27T9UhrZeex1rYg69lR+/K5KUZKKsi+ScCaEEIjnzIZLjVi+cNGY6lu6VipwcmrJQBu7++gv5Bc14SA9SDVOyRsB+uKfbMjfPhj7+XQzDAFu8qPf9dPbOjzNwnT9fAwU4esZVB1Avwg5OJ0Q8Xo+KGyjxCKhkipthWb3aWZqkvVUd5bso2A6iYiE318VKRR000e1BinNQ2g6S/2J1+9zEzN5VBPmvGqS3faYgYPPwwp2T5nJ6t8+5F+ju0p8IUXJnl2tELS1Kk5HrP1kJSpiMpoySZjmddk7qUsnSAMMcRch66ZbymY76vWFOhLCQlTj01lq47P6dEyg50pKrbP8T0dJE2Nk8MlDvVkkcBE2aZs+1Rtj5obYOiQsXTyabNtL6xWMtCXT3B1tkE2YVJueFEkk2S27mHpSldVdTyEmEswMDSoSxmJ3lU80kqC8Fv7smQjXyxT167RM9Ucn2zS4Na+GxcLt76+W/py856rL59YcUOsOab64plJ/sc/vkBnOkFfPhE/jpSSC9O1OBNTivZ8yJYSTXdlLDrTnYyXHWbrDv/6mw7wTbf0LkkcFitwzfHoRnXC1moLb623+da7ozZZcfADSSK1OOFVRslz8oeNHrHC4t3Sq8U6lqFxYk8HXdkEsH4bk+vltbdDwnawbnjZlVN86BP/lU67wnCulw+9/C3r/pyagERkLeGFEhkqnVG9nTTsBfADqLoBgZToQjBbcyPLAA0vDJVRZ0SMdKAjbZJPGgyXbAIpr/H4WglSznXfMpaB44d0pk0qtoffEqptaJBLqiDr06Nl0qbO35+eoO4GsY1G0tQZKiTJpkxefqCTP/rKJc5P1XCDkLrjR4770cKBJpiuuthuiaNDhXlErOEGkT+VKqrFhkcQjSSFiPInNSWqbzrsZy0tvuhpAnRTvf/jJZuUpS7yNSdAF4KBjhS6JtgdEbRi3eX5sQpJ08TxJV7LQsVKW1CtZMD1A2quTy16ra1wA4kXqK3Q7oxFzfHIJAzqbkDC1NkfRY60Iwg/2JPlpfs6+cILU5RtD0vX4g6hG23HvmxfFwdXEWOyFFa7IbZUoexIW1i6HmVizj1OxfbVODthYHth2+/9cqJpIQS9uQQ1x6cjbS1LwLZC5uFabeGt1bmCjXlvenOJyBInjP9GW+FGSy1N+cNmBYS36t2eGyvzh1+6yEA+SS41Py90rTcm19MiY4eE7WBd8KZn/olf+bv/SSLweXLgFt7xll9kMtu5rs+pCzB1HaGBQJAwZFRwVTHRVV4QQRvMqJlFqQlBgHKXD0NJ0lSjq4bnR/oi9WCDHSn2dqWZqDiqawXz7CnagUSRmqSh05G2GC/bmLpGylJFUXl+Kdf6piv/bM3lYkMJ25VuTUUVNTxlYjjQkeT/+9oVnhurYOiCIAgVSTM0vFBStT2Spk7CVK/pwlSNzrQJQsQi6sFCkuHZOoFU70PsntHy2pqj0vmmGnPf1AV4oWSk2ODWvjyZhE4gJaPFBvmUGRulekEUZi4EugbmglHUwi2o1uI1XKzHZCCQIXV3joAttPmQKAF+PmUyVg4o1j26swkO78pi6VocI7SSIFzTBO989SEuTNY4O1mlFCpiLoQasx7uzfKOVx9ckzvx1WyILVcolxI5e0FIEHmT6ZpY8b1v4kYtJloL3KHeDFUnoFh3MXWNQ72ZeY75wLp2YNZqC2+tztWRgfyG+GPdf6iHwUKSy9N1kqY2byQpZUi54bGvO0MhbW46WW7q3Sq20p+mE4t/rq5nY3IpMryeFhk7JGwHawsp+U9f+lP+41f+LwB/e+sr+fHv+nFs81q90Zo/NeCFgcrpEQJdCDQNXAkpU8NtjhFX6FA1a49EFdJQqrgiLbKNsL2AfNKEpKRiB3RmLF6+r4NzU3X6C0nOT1bRBAhNEKwwjtSiYp229MghXaBpguN7CnzxjMtMzUXTBFbU3ZMSnMhUNWOpLEUvlKTNuVFYa/dptNigavtoQhGviu2jaZoifBq4qPzCtKU6h9M1h2JDxQM1RdRvvnuIp4dLzNTcOD1A09SxhKHECWSUY6leqSJSekzM/CCMNG2CqYrLqeESf/H1y1yYqlKzfdIJg56MxcFdOUxdQ9fUCLM3cuyfqTqYhkYuYcwr6AuLVxCRRlVE5rZZ4/FaRBJ1TY2PQwk/eN8+EpbOl85OMVG2KdU9bDNYtSA8kzTIWHqcUKBrgoQuyKyhO3m7ZGes1ODj3xheslD+aOuWaovIufW935VLkku050N2oxYTzQKXtgyeuFxkpu7G72FX2qI/KnCfPj3GIxdm1rUDs1aeZe2fKzsmWYudq7fevXuu+KNycJumw7mEsWbdHsPQeNcDh/jAQ6eZKDvkUyqr1fUVAUtZOu949QH+6smRLWOYutb+csuR4fXMHd1UEvaFL3yBX/u1X+Pxxx9ndHSUT37yk7zpTW+Kvy+l5D3veQ+///u/T7FY5P777+d3f/d3ueWWpU09d7C56KkX+RdPfgqA37nvbfzaq38AKTZGWCvndT1UTI8MVBF+3Uv6+fSzY4tuN4Iiac3vNUeMzeuIqWt4QUCI8tByA0nV8dA1jXzSYE+n2v7ryli88mA3Xzk7FZnEqqq/GOlLmgLHk/HP1SMLBU0T3NaX5V+9cj9PXikyW/PRpCRq70UvVI25kpZBreaqCKOoAyalnOskCWVAW3N9cgmT2bq6gCOibc6IqAZS0l9IUncDxss2l2bqdGesmIjc3pfjV5PPMV11r33PmXPiV7NUZXMRhDI+lkTUufNDZQb7s584ydmJKl5EWJy6R6nhMVl1uHOog1CqiB7bDXj8UjEuyLmkjqlr3Hewh4rt8aufep6Zmkt/IUV/txLkXpmpc/Jqid5ci/2EnBvlgspfbHY6Z22Xf3vfLbzprqHr6rA0uzjlhgoWn6l78fF2ppUeba0KUztk586hAo+cn1m2UH7yiRHe3LKl2hQ5C4g+Q7C/Oz3P32s5MnWjFhMV22em6jJRsak4yt6k2U6sOj6zdZdc0uTDX75IEMp17cCslWdZu+fqq+enlj1XD50cxfFCHCPg+fFyFL+lPl/5lMG+rgyOtzb+WE37iaZPWNn2MXTBvu4M73zgIHcOFfj4N4a3jGHqWvrLrTTyfevdQ+tmKLypJKxWq3H8+HHe/va385a3XKsX+tVf/VU++MEP8kd/9EccOHCAX/iFX+Dbv/3bOX36NMnk+ndWdrB6TGU6ecdbf4Fbpi7zF8det6HP3bx2x/8RwTI0jgzl+PSzY0v+rg3TjlsAAH+1SURBVPLdCufHCEmwvWDeSMvQNUxTdcOCUNLwQyq2x4m9nRzfU+AfnhlT24stvxPp9+cTMSnQhYxIjOoq6RqkLZ2MZTBWcuhIWZTTPjXXx2/NCdQEHUkDy9CV+D8iN810ABGRLEOIOGewZHuxwWrztQVSEiIRArIJRSbzKZMfftV+bu/Pzws+7khZlNKKLIUSwkDGz2Pqao29IZWje0/GIkTExp+6UMLfvV1p/vHZCZ4drcTnBanMUQMJxYbP08NFjg118PRIiemqQyZhxGPUkVmXdMKgM2Pws594mquzKlx7tu6RT6lw7RN7Onj0wgyjJSd+/1s/H83Oo4gIaspUl8DVrvQ3cXG6xpOXi0zXvCj70ojNWmfqiqg/cXl2TQpTO2TnvoPdfPTRSyt2TrLNLdUFlhCvONjNeMVmuuZiGXrbZKodi4mlRj2ZhM5ExaZY99AEmMZcF9Xz1ai46vikLI07hzrWtQOzVp5l7Z2rLj766OVlSc1IqUHD9bk8XcOPQt3jz1fNpVz3GOhIrVke5BvvGuLBowOLbqg+daW4pQxT1+pctaP3euT8DId6M5waLq+5ofCmkrDXv/71vP71r1/0e1JKfuM3foN3v/vdvPGNbwTgj//4j+nr6+Mv//Iv+d7v/d6NPNQdLIPDU5cZKk/y+YP3APDk4G08OXjbJh/VHCxD46NfvYS9jGt+xbn2whEyv4uVSxrctbeThKE26SqOz5WZBr25BG843s/vfu48I8UGui4IfRl3iaSc/7impqwlyg0v6lipzpWlCzozJmXb46GTo5i6xj17O1XETzPjURN0ZSz2dWW4NFNDQ+CEC/IooyeWSBKGGj26fogm5o6nVSOlC8gndcbKNvu70wwUUvPfmyhu6PaBPOcnq0xXXcLo95KmRso0qLkBuztTTFUdpqruvHHGTDTO+O4Tg3zwM2eR0DI+FRi6RhCGNLww8u0y6UibzNYUMWtq4dKWjmlo/J9Hr6hw74RB0tTjglRz1GLBsd0dPDtaou6qzo7e7Ppp6rlAYnsqH/P+w93qXLex7bXYz5QaHiPFBoGU8yKGTF2QT6pzOVJsxIarN7pVthLZaY5N2umcHN/Tsaip5+nR8nX5dS1nErrcqCeha/FSSdIy5ixQBFimTt3xcXxJbza5IR2YtfIsa/dcLUdqhJQ03ECNiFv8u9Tny2Ci7OD6IXs7187w2jC0RW0otmJA+Fqcq3b0Xmcnq3z/vfsYKdprbii8ZTVhFy5cYGxsjG/91m+Nv1YoFLj33nv56le/uiQJcxwHx3Hi/y6Xy+t+rC9mvOrCE/zOX/4Shgz4nu/7VZ7pO7TZh3QNPD9kzLGvIUOtkBJMA9wFXKz1VzRN0J9PUGwo64dyw8f1Q752YYbzk1UsQ2N/d5qzE1WWUoIJQGgart/UT0l0U6Mna8XdIEMESKk8tRKmzt17Ohkr29heEIdM19yA3myCKzP1JRcNQpRbfyZhYPthFOMUjZxaX5cQPD9exQ/VePCX/va5eUVyrGRztVhXbvtSWUf4UmJoGqauxpn5lMFPfvtt2JHp42LjjJmag+MHaoNwwcVO1zQShiKLX780ix+qEWdP1oqXGxw/YLbmIZGkDJ2kqccTs4Su0XB9Lk5VOba7g4aboSdrRUan6rH0yIHfjcj4S/d1cbg319a211I/c6A7jROEpKM8zrrr4/ghGqqIWrpG3QsoN7w12ypbjuycn6ziBSEnrxbb6pws1gG8kVifxR5vpVHPPXs7AOJYLEPXrtETNuOkFsN6dGDWKtpoOe+z85PVFUmNFIKUpZNJmpRtn7RloEdpGnVXGe1ahsbl2fq6jwC3akD4jZ6rdpco+gvJdTEU3rIkbGxMjY76+vrmfb2vry/+3mL4pV/6Jd773veu67HtQOGfP/kp3v8Pv4MhQ762+wgjuZ41fw5TUxqe4Dp/X0A87loOEghWeBLfDxku2lyYquH4AWnLIGVqzNQ8Rks22aRJznIIwnDRrcjmaFJKScMLAEHSiHIlQ9WxK6RMinWX6ZrLoV1Zzk1W8PyQqZZO2HDGwjQ0bu/P44fLW294oXL/10TLBuOC8WggJVUnoCdrsbszHd/hNd3TJRI/UNuhhZRJIKHmKPH+gZ4MVcfnZfu7eN2RfjRN8Poj/XzyyWGGiw2GOlK8+a4hLEvndz53FiQLdyfnvT+hhGJddc5aO0ugCnzZtiMiK6i7Qex0L6NcT3u2QS5pkrJ0/vU3HeQ3P/MCZyaruEEI/tz49HBvlp/8jts4PVpecdsLWPJnnhkpowlB2faYqDj4LX4YoqZGzIWUxVTV4U8fvbzuW2V7O9M4fvudk6U6c9c7nl2IdkY9j16YUX5kCQPbD+Lz2dQTGrqm4rL8xf9A16sDsxbRRst5nx0ZyK9IagYLKcbLNkOdaS5N1+Z1NrszFnu7M5Tq3oaMADcjXmo1x3a9n9fVdPgO9mbXPHd0y5Kw68XP/uzP8uM//uPxf5fLZfbs2bOJR3TzQQsDfuZzH+GdX/8kAJ+445v5me/4D7iGucJvrh6WoVNzr5eCRaHabXpErETUqm7AxakKjj83evIC5Z+jCQ3H8zk1VmGpqaeguW2piI9lRHf8oWzRawkShk7dC9jTmeTzL0xSdfyYNAmg2PDIJQxe0p9rKxfTDyVWlDfptgjmLV3D0AR11ycf5RK2FslDVoZ/en4SAZzYU+DUSIWKo+7G8ymTYt3jwlSN43s6eOs9u+fGTo9f5enhEnUvIG3qPDdW4a337ObIQA49Eujr+rV6LUUy1X8v1i2LLTCk2mCdqbkxqRJCadAcP+S5sTKvvb2PwY4kB3flmKl7FBtKE5c2de4/3MO7HjjEkYE873/49LIE4eOPXwVY8mdODZfwgpCqM/cZbRJw9ZpUd+zhp8coN7x1N+5MWzoJo73OSd0N1t3vqZ1Rz0ixTtJUcVndGUttrjZzUjVFypOGju0H8We3ic3swKzU2WzH32slUvNdxwb46KOXSBo6d+/tpGL7caxYLmlQcwJsM9iwEeBWi5daC6y2w7dWNyhNbFkS1t/fD8D4+DgDAwPx18fHx7nrrruW/L1EIkEikVjvw3vRIuXa/MZD/51vP/MIAL/+qu/jN1/5vfM2qdYSjRsgYE20ycHawmzNpTunNFOuH1C2PXJJk7rj03DDuBOy6HNGYnBlnaFIg4iKrh+EeFHRcYMQSxN87vlJarYfk69Wq4Wa4/ONy8W2CaYfSqQM0KJgavX/aoFAAv35a/U2VSeIyaFp6BwdKnBhqjrvblzXBW+NLr6nhkt84OHTnJ+sqd+LDvzyTJ1nx8r87OtvZ6gjyeXpBq4XXCPADkIV+q1GTwEpS6eVqkU2b3FGJ1xL5IRQHnHFuscHP3uW2ZrLPXs78aXyRJtteLE2sB2CcHK4hIBYJ1duePOK4L7OFM+NzUkeRMs/m6fG9UOeGZ7l5ft71t248/VH+zF1jWO7C8t2Tp66UuTvTo211Zm7ER1bO6MeXdO4rT/H01dLMXE0ow3bsq283l66rwvL1LZMB2al8/Dvv+Uwn3xieEU7h3c/+JJlSc2RgTyPXJiOQ+/zLaakm0VA12pUu1Ww2R2+LUvCDhw4QH9/P5/5zGdi0lUul3n00Uf5N//m32zuwb2I8S+feJhvP/MIjm7yk9/5Y/z1kQfW9flW73N/LRYbDV4v3FDiByEzNR/HDxAIdOFTdVSxax37LUTTvFXTBSlTiZEdT40uZ6oOaCqmyDJ0DA2eH6/GAnhl/qlFUUaShi8ZLtbbPm4pwZeQ0NVoShm6hnEu5ULHaSA2uUUqXV1XNkFneu5uXNcEUxWH/kKKMJR86AvneW60gq5BooVgOX7Ac6MVPvyli/yH197C+/7mNFXbx/WDua6RVMsKP3T/fv726TFGIzG71aIPcvwAUxfKDy5YJHhbKr+uowN5zkxW6MpYHB0sxAWwI20xJGVcAN9wfGBFgtBwAxBg+4sL3bOWQRjOjZoXksImyrbKpFzqedbKuPNLZ6ewDLFs56Rh+HzpzPLWCM3OXKtI/3q6Ze2Oer7/3n38b/8C56dq1FuEmZoQ3N6vRsfAlujAtDNi/aOvXGKibLdl57ASqdmKI8C17gZtNpodvo89foWnh8s0XHUTeGyowFvvWd8kgE0lYdVqlbNnz8b/feHCBZ588km6urrYu3cvP/ZjP8YHPvABbrnlltiiYnBwcJ6X2A42Fn/4sjdx29Ql/vT46/nG7pds9uG0hbUkYWGg7BbCyKE+YartwyCUbXWlJEA0iizbftzhCiXIQBICbuDHY8smqVPeWcoE1dQ1LD3EicK923ltzS1IJXZWI520peP6KuNyMSc3U4++Kuac64UQ8d141fZJWjq5pMH5qSqPXZpRthcB1Jw5Y1cr2tD8+qUZfvS1h/kv330H/+vz5xiebcQ6t92dKd71wCHecGyQkZJNqeExXXNUJyQaTaVMjc6MRRBKqlHHJGVZOF4YRQ5p3LW7A00TVG2fQz2ZZQtgudGzIkFQBc/n5NXStRYUNZexkh2/tyIS/jc7gLoQGJoy+pUSqrZHR9pa9HlWbdy5xOuaKDvsyivn86U6J/u6M20RhE+fHlvW9LUdHVu7o57XHeljqDO1YhFspwOz3rmG7XRQz01WCEMY6Egt+hgLlwmWIzU34whwq0Ig4kSQjaK1m0rCHnvsMb75m785/u+mlusHf/AH+chHPsJP/dRPUavVeOc730mxWORVr3oVn/rUp3Y8wjYYL7tyiicGb8fXDQJN5yce/PGVf2kLYS3HkZ1pg5Ljo2ngBOE1theaEPPF2VxLAgMJrq/Ih6Wr+CBlwwCer4hY0HwMqQhY81kaXoDnR+aokTaqnVhMU1PHkE8aKoQcNU5NmxaBlFyaqXM0NV8In03oaEJdlLLW/G7RwlHIp54ZpVRXo7qgSURQCxVeGKJHmq0XxivLehEB3LWng4eeGsEPJLmEHr9/thfi+iHffXyQv3tmjIYXIDy19diXT7C/J0tXxuLqjOoQZpNm6wFTcXw8P0TTBI6nIotWNNQczPO1izPUbG9RoftIyY67YJY+n8pqoulfK0kndGYbHkNLaJpWY9y50hbXqw738Cl7bMnOyf2Hu/m/X7sSjXsXf5yxUsBDJ0dv2B19NaOedsZcK3VgNiLXsJ0RaxCqDvNa2TncbCPArYZrxsvN5aThEsPF9Y1j2lQS9prXvCbO2VsMQgje97738b73vW8Dj2oHMaTk7Y/9Ne/+7B/w58dex898x4+um/ZrPWBEo7vryO5eFElDI5UwmWn4sf9Uc1TWfApdE5EpqOqKSCnjMWTK1LBMHdcP6clZ9OfynBop4/j+POuI1nd4sUP3Jfi+RBdqdCn9YMllAABDQCZhxlmYXhQz1JNNsrcrzUipQSZhLFokD/ZkQMDZydqyBTSU0RZqPJIVLaNGGRHNMO4WLuVFFIaSJ68UySYNvEDFQrX6hGWTBqGE171kF49fKjJQSGIZqhunYp0ks3WXbNLAiD6rszWX8y1aNonqRI6VbO470M3pkTKnhkvs786QjqKRmq/vFYd6eOpqiYylM1v3sAzl/i9QhLiQNCjh4/shXhCSNOcKc9MOw9QF9x/sxg7kDRt3ClixsN+1p4Nb+3JLdk7Sls4nnxhe9nFCYLTU3jhtpbHUajo5NzLm2qgQ8HZGrIWUQV8uyaWZ+prZOdxsI8CtgvUM524HW1YTtoPNhR4GvOcfP8QPPPEwAKEQaDIkFIvf/W0FNKNopFQjMFODhtd+H0xjeQ3a3XvzPHGljEBgaFIFVS+IJnL8MB7jCeY2M4WYE5YnTA1T08ilTPXvhokfSLUFCfNMVZeDqQsylhpPxlYNi/ycrguSps7x3QVMQ5vnoF51AroyFt9/7z4euTC9aJGElbU4KVOLRfzNzlDz35sHFUpJylw+wqrpQF93Q3QNult8wlw/oO6GPHmlyI88cIjRkhMVXEXMGo7PaKnBQCHJwd4sI8UG3UHIqWhT0zI0EoZQuqhQ8t/+9ll6sgncIGS27jJTd+lMWXRlrXmGmq4fkjB1KjU3PkemptGbS3BrX47zU1UmyjZ1N6ThBZhaU7emXvjh3izves3hZd/Hdow7NaC/kGS01FixsGuaWLJzEoaybWuE5bplq/HmWu9OzkYW0nZHrG8+MchvfvbsltJy7eBarGc4dzvYIWE7uAZZp85v/dWv8JoLjxMi+G/f/EP8wcvevOW7YCHEBd/xQ1yisGnRnk3Fcq/O0AQXpm3V2TAUiQpC4i4NSGw/6vQIiRcRoubzm5pGw5doYcBQR5J0wmAs0j6Focq5bHbMFnbDloJl6HRlLWbrTWIQ4PghkacqAkiaOkMdSSxD6amW0+S87kjfkkVypQLa8MJ4/BaCyruM0CS2mmDJ7M4mWh3oC6n5x5sy9diBflc+sWx3BeB/fuYMX7s4Q931EULEruyGJkgaGrM1F0PTeNn+ThpuwIWZGhnL4Pvv3Rt7nv39qVHGyjZSSnqyVrTJGeIGIX6oHP4HO1J878v28H++dpnhoq1MRQUkDZ2X7uviJ7/jthU1Te0YdyYtne86NsDHvzHcVmFfqnPSzoiwaY2wlu7o69nJ2chC2u6IdUfLtT3Qrlnrenmx7ZCwHczDUGmCP/zYe7l96hJ1M8GPfdd/5h9ufcVmH9Z1oWlZ0K4oTNmnLvXjktmaCrD2g5AgVB2F2D4i2mxsXv7V19SDNWOJ0pbqQqVMnYG8xWefm8KNnOxl/CyRDcMKx2pqSjfWX0ihCRs/MCjbHpavmFzK1DA1wT37u/mBV+zlt//pXFuFe6kCtVIB1YTaiPSCMArvniOCAqVhM3WNlW78yw0vdqBfrJi2OtA/cNuuZcnhy/d38sUXJglC0IQiy0ldwwklNTegM23R8ALqXkAuZXJ0sBCZh87yuiP9hKHkkfMzsc+W6nAKLEMnLSVl2+O5sTIP3jnAD7/qID/0ygN86dwkp0fLpEyD+w93c7g315amqX0Bez9Dnel1j9SZZ42whdzRl8JGF9J2CdaOlmvrY7PjmHZI2A5i6GHAn/zZuzk4O8J4tosffusvcqr/8GYfFnqLXmq1CCMSFKw024uw1E/5oQqnNnSBH8hrYomCQG0qWrpgVy5J3fEJpCRpKnH7nBDexDJ0xssujh8sOXJc7MsCSBgqKsiJNEj3HujiictFpqsOQ51pdA2CEMoNl+5sgh+6f3/bBeNGtspu7ctRSJtUbB8hJU7Q4npuCCSCXNLg1r7cso+TT5kkDG1RnzBQ/mEJQ4+3/pYiNWEoOXm1hKGp6CNQ3mwSyWTZIRSChqcilLxIULewYwJwdrLK7f05zk/WKDW8eduRQSiRAu472B27zL/mtj5ec1vfNcezEtZawN4OtqM1wlLYjELa7nnY0XJtbWx2HNMOCdtBjEDTee+3vouf+OKf8M43v5ux/NIxRGtp+7ASduUsRsvuDTzC2hypmjReq7uKBeiAoWv05RJ09ee5OKPMMhcK4cfKDa7O2iRNHWcJUf1iR2waAl3TlO4NRRpeMpDjm27pjQlWzVEE6/iezmvuyJfKsIMb3yo72JPlpfu6+MILk+i6IJuc7xMWhPCyfV0c7Fm+GBVSJoOF1KI+YW4QYmoaA4UkhUV8zVpxcbrGaMkmaelomhbr9BxPmf+amsD1Qyxdi+034NqOieOF7O/JkLaMWNzfCJvnM4FlaPQX1mZbe6ME7K24WawRNquQ7hCs7Y8ds9YdbC6kZLAyyUhebap9/uA9fOHACaRYaSC2MkxN4LVr6b4MHF/GonaYG3O188hhkx2tERaLNmrNYlTbkQLL0LhlV5ZSwwMJhbRJPmlSdQK8QFJzlBO+MmCVS4rqW+H7kkD48fZlLqlTSFlt3ZEvFif0uecnees9u4GlsxHb3SrTNME7X32QiYrN+cmaymqMTpShadzSl+Edrz644oVsf3eGu/Z2LOkTls8kOLG3c8ViWrF9NCHoSKt4JUXaVLdKRCfMDyXphEEuMXcZXNgxaXZXOjMW96Q7Y5sL09AQEoq2tyndlY3CVjuepbDZhXQH2xubecOxQ8JexDADj1/61G/x2rNf400/8Otc6hwEaIuAtTvcW44srbSN2ETV8UkZGnUvnKediiRXKx7LGjlUqMeSauToBXOkKZRK81RIGHihRCD52sUZJVSP/ILyKYMD3Rmmay4DhSTnJiogBKnI0kAQYPvzX8nC9yfemIysMXqzibgjtNwd+bJxQqNlduUTa7JVdnSowLsfPMLHHrvCY5dmqbkBGUvnpfs6edtL97R1IdM0Mc8nrCM1N/6rOQEV2+P4nsKKx9IcTw0WUthuOG+UqPIyAwxdY19XOl44WaxjsrC7kou8x2TkvP9i6K5steNZCtupc7eDrYfNuuHYIWEvUhQaFX7vk/+V+66cIhAad408H5OwtUIsMBfzO0hNctEuOXIDiRs9QNNBHiAM229yNTtpi9k/rKZR1gyMTphKrB1EcTkpUydl6dh1j5Lt4/ohQkA26rJMVRwmyg639+d4zW29fPncNEhl0trcjlwYd7TYcRlR5JHnSwxNY29netnjXRgnlEmYLaTG45nRMucmNe490A1cm414PVtlQihLjBC1nblQYL/S8T55pUhvLoEfqOxANc7VGOq0MDTBU1dKvOHY4LIXx9bx1B2DeS5EOYqNUGLqAl3XyCR0CimTIJRLdkx2uivbC9ulc7eDrYnNuOHYIWEvQuyfGebDH3svB2dHqFgp/v0bf4bPH7xnzZ/Hb21bteBGOlOhBE2qPxZdY547/XJIR8VTizohoGwsmqSnKWhfCaau4YcSK3ocQ9MJQ4kXhJQbHhIlnr/3QFdc+Oc261RA9dGhAllL2S3UHaVRWuypReQ/1vyeREUONQjIJy0sQ+PybH3Zi0YzTkgIpbfyAvW6NSEopEwmK248+nt+vMxszcX11fivkDK4pS+H47W3VbYWrtNNq4FDvTkyCX3R7MN2SGHreGq65nLbrty8EO9swmBXLsFs3WOi4izZMZnXXRmvcmnaQ9MEh3oz/KtX7t/prmxBbJfO3WZgvSOddrB67JCwFxnuvfw0/+uT/41Ou8LVfC9vf9t7eKF3/2Yf1qoQoi4mq8Fduws8M1qhakeu6XK+jUIuaVJueMv6iZkadGcspqounh9iNEXjRMacEpKWTmfKxNA1TuzuYLziYHsBSVMnmzCYqbtUbZ/eXIKK4yOFXHJDstm1a5LY5qVSBUZL3GCOHC11cX1hXL3mlKkzXfMiSwy1tRibl7qSp4dLuJHjffM9KDU8xss2+7ozK+qe1soss9VqoDWnsonVWA0sHE81Fw5evr87tmFopyAdHSoQSslHvnKRiuMRhJLxss0nnhhGCLHmRGytCuXNWHDX4jXdjO9LO9iISKcdrB47JOxFhPsun+SP/+wXsUKfJwdu5R1v+QUms52bfVgbgnsPdvPygz385ZPDTJZtFaNDSNLQSZp6FI4953y/EALQdY0DPRlsP6Bq+7h+0KJ5kySiSKJnxytIqXy8dE2gCZVvmEloCCEYK9n4YTN2aL7WrVVD54eqG2ZocykAzWgeN1DxPJmEvuzFFdTYtGSrBYGmnxlCbQo6kf1HzQli5//myDeUYPuSyzMNKra37Pu7VmaZa201sNJ4qvVYwlByfrJ6zc+dGi7xW589y0zNZU9nZq7Ddx1xOCsRgLUqlJtZcNeL5KzFa9oKRGQzSOBGRTrtYPXYIWEvIjwxcBun+g8xkuvlJx78TzhmYrMPacPw1XPTVJ2AbMKgY1eO7qzJqeEyZdvH8QNsL1x2HKlE9pIrM3UEilQ1/cIkkXt9JkHZ9tCFoOR4sTVFR8pESsnV2QZhCL/zuXPM1FyEEHhSokckq1Wr1tTNNXMp9ZYxqhfO/eCZ8SqffGKYmZpLfz5JkJBUbZ+vX5jh6kydN50YjDzKlKO9DCPhmVC5mi054cpYVhNz2jSpdGpeEPBHX7nEf/+ejiWLxaJmmYuEZq/UwVoPqwFNE+zvzsSF7+J0bUXyYxmCXfkk9x/q5svnppmuOtzSl7uhxYWVCMBaFcrNLLjrRXJW85qWIjlbgYhsBgnc7GzEHSyPHRJ2kyPhu7i6gRQajpngB/6f91OzkmtiQbGdcH6yihtIaq4SejfJjhDNsOnFZ4JNt3eB0p9NVR060hYJw2S27uH46rHCUJGpjGUwWrYJAtXd8nzJVMVBi4iWrqtg79i3yvWjbhmxOL9pd9GElMrmAREtA0hJ0jLoTFk8/PQoMzWX7ozFCxOVWIOmazBRcSI9mqDuNo1rZfy6gpbFBlNTu6wSkKEiaYauoWlKh3Z6tBSTl8UK3MIO1nKh2cf3LH2e1sNqYLXkxzYDzo5XOHm1xD+eHkdK6MlazNY9OiND2qZOrT+fbKvDtxIB+Pffcjgm0zdSKDez4K4XyVnNazo9Wl70XL/5xNCavL83gs0igZudjbiD5bFDwm5idNeK/P4n3s9X9h3nv7/6BwCoJpbfprtZUbZ9Akmc0diElCrnUNPnm2kYWjSWQyOQKo9RE9CbS1B1Aiq2j0SSNDTcqOM1U3PxAhk7sDdji5SGTRGfzoRJwwvQNEjrOg0vIGFoFJImgYSG61N11LE2L5eJKPTa9QJCCZmkwW19eRpewGjJJmMZnBop4/jBPEf3qu3xtfMzOC0tvuaWqiZlnKkpUf9MJ3TVkYs0Y83uXyAkXiB56kqRP3nk0qJk5shAPu5gdfkmT10t4XghaUsnldApNTz8QPKxx68w1JlattispdXAcoXv6myDt9w9xMMnRxkpNrhjME+x4XM6ei870ialuopRqtg+T1yeJWlquL6MR825pIGla8t2+NohEX/0lUtMlO22C+VS3Z7NKrjrSf7afU2fPj0eH8PCc/3CWIW6G7C7M70pRGQzyfFmZyMuhxerPq8VOyTsJsUtk5f48Mffx57SOAdnhvnIPW9gKvPi0H8tBj+ygVhMBB8CcoELaxhCKNR3m6RNCLilL8e5iSpBKMmnDMJQMlFxCKUkZRlUKg4wt23Z+qhCQMNTcTxpy6Bie2rDM5BomkbS0EhbGiHqa36gSFdX2qDhS2wXUobGS/cWKDYCBgtJRooNRop16q4S3zdfn6lrJE2dYsNTerKoAxfbeghlq2EaGsW619LNm/MAUQsHIbomMDXBx75xFccLl7yLf+vduzk9UuaLZ6bU70XRQEJAPmlyYk8H0zW3rWJzPVYDCy/oe6OMxcUKX7dv8cSVIk9dKdJwfRJReoHjq2ikfNJECEEmIWn4LhJJsa42I3uzCdKWjh9KpqtOpPNrcOdQ4bqJ0bnJCmEIAx2pRV9ba6FcrrMXhHJTCu56kr92ScTfnBxZkuQ8daXITN3jll2LP/d6E5HN7EZtdjbiUtgK+rytgB0SdhPimy58g9/+y18m79a52DHA29/2nhc1AQO1vSgifrEYEVv4pTD6okBlV6ouGpyfrFFxfPIpE1PX8FB2D6FUhCX+fbnAST/adGx4AaahTELPT1WpOz5eGNJwPfxQx/UDCkmTPV0pnh+vUGl4jJTcWEzvBQFfPjfD4d4sDx4b4Dc+c4arxQZSQs1ViwKmrpFP6pTtIH5tEkiZhup6hSF+i0jfMgRBILEjgqjE/+D56vdTkdeX44XL3sW/+cQgthfgh4pUzis1cvXFZjVWA4td0HtzCS5M1q7pfszWXJ4ZKeMFYTzqTRoa42WHhhdQSJmxF13S1NGASmQlIqL/F0Jg6s3FCcHDT4/y1fPTnJusXRcxapr6rlQox0r2kt2e4dkGb717aFMK7np2W9ohEaGUjJZsBpcgOf2FFKNlm8mqQ3/hWqK73kRkM7tRm52NuBi2gj5vq+DFJQx6EeD7nvhb/vdf/Bfybp1Hd9/Bm//lf+d89+7NPqxNh4SYLLULgSqyestfyZXZOqWGR7GuArhNXWBGXSYZyph4xEa1zcdpef4glAx1pNjXncHQNUIJ0zWPqapDEMKuXAIvkAx2pLAMXYnyddWN0oRaCLhabHBmosJMzcXxQ4IwxA9CPD+k5vqMlRyqjh8TTj+Q1D2fIAzRdQ1DU10qTSjR+sFdWXRdYHsBjhfgBQEIgWXo7O1KkzT1Ze/iXxgv85EvX8T1QwpJ5cHVnU3Qm0syWEgSIrkwVSNlam37jrWL5gX96aslOlIW+3sydKQsnh0pc2G6FudFNk/M+akqdjRuVOdEUmz40euWzNZcpipOlOupQtibZFqdPxWeXmp4pEyDoc4UXz47zWMXZ+c9/9NX1XGNlRoxiVgMDTegkDI41JNhtNRALrhLaBbKw71Zvnp+Ku72ZJMGuiYUGd6VZabm8sj5GQ71Lv84t+zKrXnBbSVKS73G6yU5+7szHOrNcGGqylTFVn580WtrvqbBQhINotD3a9GTtUjoisRu5PvSxHq+PyuhqbPsylicnajGNj1V2+fsRHXDTYcXjmYX+xx/4hvDq7Yh2q7YIWE3EX7q8x/hv/7D72DIkI8f/Rb+5T/7ALPpF8fdRDsIlzLkWgLNotu8bjYvUUIIbD9kquIwU3WiKCMNNwgVGYt+LpBzJC5EkS8N0IVguNjg0lQNAXRlTHqzJilTxw9DLs3UGSgkqTk+AtjXmWKgkGJXLkl/IcWezhSuF/DhL13EjMzEglCRPC3672ZPztDU8+stBrWOHxKGEiPSNN1/uJdf/57jfNuRPvIpRUx0odGVNnnt7bv4wVfux9S1JQtcytIpNXzOTdXoL6QwdB0tcs1Xthoaacug1PCYrDprWmyWu6Af6M0QhpIzE9W4/VlxfMoNn7RlEEQWIG4Q0nB9hIi2UqXqWM7UXMq2Rz5lkknoJHQNGX3P9UO6MwnuGMpTtj0cP6S/kFSEru4SSsmh3kzbxOjWvjz/6v79yxbK+w52cW6ytiwZPjtZ5RUHeza84Da7LetB/k6PlpmpeYyWbL56foZHL0zz+KXZeHmjK2Px4LEBktECx2KwvZDBjhRd2c0hIuv5/rSDps7yzt0Fig2Xi1M1ig2XY7s7NrzrtJrRLMxZxzx1pcj5yepNR852xpE3EZ7r3U+I4Ne/6fv57Vf8P3P5PjsAWFUXbDE0o4+UUap6MNsPESiT1qSpU3WCeMTXtJ1oNUAFaHg+z46VqTkqZJpoK9EyVJZkwtBwfEUC8ikToWmYAC0cKBMZv5q6Ml31glCZZSx4jX4IGUuPSKAav5maIJ3QcaLC9Ja7hwDozSY50JOh1PAwNI0jA3l+6P79ZBIGn3xiWI2DEvq8EOtcwqDhBopohpKerEU+Zahjj3RVoEZ29SBkrGTzikM9a1Zslrug55OmMtetORGZsvAiQ1pdKEIWNEVykSfa3PsmCULVKdzblebMeAUB9OYtbunNYJk6uYRBxfEp1j0MXXB2ohpZncg4L7Q/r4jR99+7j5GivezG50oLCa1jTSnlNWkCzZFWfyG54RmK6xWg3Tq2umMwz0ipQbGuCNlMzeVVh3t4x6sPcmQgzyMXZpYduZ3Y28mbTwzyiSeGNzxbcisEjG+VSKfVjGZfDLqxHRK23SFlTLb++shreLb3AGd6923yQd2cMHWNUM4RsCYkYLtqjNeXS1B2fHShMh5Ltq9MUpvWEELEIy9T1zANQSYxt9FYdxXBeW6siudLEunFm9XK6kKNMTrTFmXbU1osVGenNe4okzAwDY2K7eF4IU6k9drfneGnX387QFzoBgtpDvWq4nB5ps5vfvYsP/othzm8K8uj56fxgpCKHbRsB+qYusZLBgpMlG1sL+RAT5aaU6Jsq9BsXRPKGDYI6cqubbFZ7oIuhOBwX47ZCzOcn6xxeJeGpgkkklLDA6GCvP1QxskJzTOr7DzUeYumkYQSbt2VpSs756/nekFMpiu2Ny+bc6bmUnV8OlNW28RouUJ5frIa68LGyo0WO5I5wtfsMh7sza5YcNd6M22tA7QX2ygc6khRcXxcL2CkbNOVseIlj3ZIztGhAncMLr5Asd7YqIDx5c7rVoh0andRYCX9482iG9shYdsYd4yf4/3/8Du8680/z2S2C2CHgK0j/CjuaCGaHbKmGP9bbtvFoxdmFDEKlE+XoekkDIEbSFKmxlTVJQxDcsmECvAGTF3lORbrLrYdIjQ1PkxZ1xKxIJAxaUhbOoauSIDtqW3OOR2aeoyEqdOVsbDdgGLD4/CuLB9401HuGCzw/odPL7s6/8knRji2u8BDT43QcAPyKRPDUCPZ4VmXTMLgHa/u5uTVkupE7MpydKjAhdgnTI1A93am+alvv420pfPUleKaFMCVLuhJQ+dAT4aDPRkmqk5kxKphewFhGOJFHh169IY1R5QJQ1M5nW7IbM3jFQe7GS/bTNdcLEOPC/xIyY793wopK37/TF2QT6pzOYtKNji8K9dWJ2KpQrm/O0Nn2uQLL0xFQe7qvHtByGTFYbxk85rbdsVdxuUK7np1GJYjkaslfYt2OYUglzQhaZIwDc5OVuMlj3ZJzmYSkfXuRm2HzlE7iwJ3DhXm6R9vZoPZHRK2TfGtZx7lg3/zq6Q9h5/7pw/zn97wnzf7kG56tIaFG5qysUCApevoGthewGTVZX9Pmumay1NXimQTKhLJDQIantJmJQ1FqnwJkxUn7r5YukYhZZIwdOpuQFfaYrbmkjSVrqoJKUNqjk82acRbmQlDJ5HVKDU8vKqrOjvRNmggZdytkUg6Mxb/9jWHuHN3B+cnqyvrM8YrFBtu5JHmq+zMaBPUjLo+n3tukn/9TQfiTkQuabCnI0U1rTRYXRmLt710N3/55MiaFoi9nWl2ZROcHi1zsDdDPmnOWWxEF/S79nTwz+/dw9mJGkQJB7/8t88yWXWjKCcAFQelCXWOTF0jawkafsg/f/levuele+YZgTYL/K39OcbL9pzR7rz379qt28UIwOrIifq654fR6FOR7jB6/mJ9+XgpWP1mmu+HfPncFJMVh95cgvsP9WAYS8uJF3uN10MOrmejcKuM3JbDepHA7bJx2E7X8r6DXXz00csvCoPZHRK23SAlP/zYX/Hzn/1DNCRf2H+CX/y2f7PZR3VTo9lRap1CNj3ADAAhcXxJIFWH6q+fGmVvVxpdF9S9IBbBpy0lUK/aXvxYTTIjUYW17vqkLIOMpfO2e3bz0UcuMVF2yKdMLEPD9UPKDY90wuAHXrmPv3jsKjNVl66shR8qsiWjFpkulMWCpauYpYM9GaqOz8v2d/G6I/1Ae4Xu0rRHxfHoySaZrZUxNEHSNNQ4VVMjvS+dneI77+znwWMD/N7nz3F2soofSAxdMFhI8srD3fzd02NrWiCahf38VI3Rks3VYoPujMUtu3IkTZ3RUgNDF0zXHN7/0LPzrCvSCYOuUDJWdghD0DSJrmmYUTqCF4RoQiOTMLm1P4emiUULfKnh8fxYhWLNpdTw5pnl1l2ftKnTkbZUNmeEVtI1VmrwyPkZzk6uTE4uTteYrbsc7Mnw/HgF11d5p80lCCHg1EiJT58e49uPDiz6nq3WNPSvnhzm9z5/jpGSPe98vuuBQ7zxrqG2z9P1kIPr9bfaCiO3jcZ2iyZajf5xMWymwexaY4eEbSMYgc9/+cff4/uf/DsA/vSu7+A93/oj+PrOaVwvJAyNUIZ4C5aumnzMl+B780MnDU0wU3Vw3ABT1yhkrLkCL6DaEoYdSkXwoqVGAgl112ewkOQNxwfZ35OJi2DZ9jF0wb7uDO984CBvvGuIvV0Zfv0fnme25uIGkjBULv7KF02QSZhKm9bwOD9V4/juAm+9R1mWnJ+sMlxsEEpJw/HJpsxrXn/DDdA0QRCEXJiqMtvwEIDrgxBqtJexdMq2z58+epmEoZEydU7s6YwNa0t1hz/7+hWyCYNjuzvWpEC0FvbdnWl6cgnOjleYrrl8/dIMB7oz7O1KM162GSna84r/syNlxssOdwzkqXshDTdQixG6poLLQ5UQkDYV4Si0vC8LC/z5SbVZ152xGCvblBs+jUin1Z1J0JdPICEmCq0doZmqy1jZRtcEt/fn2N+TWZacVGwf2w2oOD4pS42XZeT3Zupq3DdZdXn45CivO9K/6Hu5ms20p4dLfOCh0/EIOpHScPyQy9N1PvDQaYAVidiNkIOt6G+1VbEdo4na0T9uNYPZ9cD2fwUvEuScGr/9l7/Mqy8+QYjgv37z2/nDl71pZwNyHdDUUzWNTRECIZTovdnBahVxL0TV9ujflUUCfhiSarp6ojosfouuTIueTEbKcENEbv1SsrczzcHeLA8eHVhyHPTGu4Y40JPhNz97hq+em0E3BClLI2GoO0jHD6k6ikgZuuBt96jgxvc/fFpt87kBI6UGl2fqnNjTMU903ix0h3ozPDNSYrxsK+8wTSCiLEzHC3B9Fb303FiFXbkER4cK8wpBytI4O1lDFwsMXLm+ArFYYc9i0J1RCwoXJmsc6MmQS+oMF+U1xf9Ab4bhYoPhYoNduYRKPIiIl5TNQHaNjozFib2dyxb5VqJw954Oqm4Qb45mLZ2zk7WYKLQSx/58MvasCkLJ+ckaacugM2MtSU5ySYMQmK27pC0jzh9tIpCSpKkxUrK5OF1jb2f6ms9NuyO+Ys3l9z5/joYbsCufiMfhKUsjaWpMlB0+9PnzPHh0YNnR5I2Qg0XHVqbGZNVhrGTTlbV484nBVXd2bsaonK0cTbQcltM/biUCvp6fmR0Stk0gpKS/Mk3dTPAf3/CTfPqW+zb7kG46NImVLqIoI6ksHixDkE3odGctKg2PmZq3JAFLGRqBhCuzNglDw/ZCJqsO2YRB0tSpOepi2UQg1R+hrmvoQuAHAUJXpqyXZ+sc7M1iGBoP3LZryeM+truDf/uaw4yXnqEvlyBhKfsEILaT0DTBdNWl5vrXjIZSlsHJq0UevTDDsd0F+gupefqMH7hvHz/2Z0/ih5K0pUW2GopXmgIaXoihSxquT2c6d02x9QOJoWnUXZ+K45NLmvMsFnRNqA5PmwViqcIuhBLHH96lcXmmjoRFHdTnrCtcjg8VqDsBth+QTaiwz5oTkDB1DvZkVtzknEcUIg+vQtqi4QacnazFW3nAPOJYsX0qtk82aWLqglLD48JUjc60iUARrm9cnuWLZyb5plt60TRlqjtQSPL8WIV8cuGRqPFnZ9pCE4KHTo7yqVOj14wR33yiPUf9MxNVRkq2skgR80mWEBr5lMlwqcGXz00t+9m8UXLQOrZ68nKRkVJDLZpEsVyfeGIYIUTbo+ztIFy/HmzVaKLrxVaw9GhivT8z2+OM7IByMsvb3/aLFOwqz/Qf3uzDuWkhUCPGJiTg+iFpU+P2vjwAXzozSXURU0hTF3TnEmhCUG54uKEyb3X8ENtX0UNBOL8LJogCvlVuDQlTxzR0Eqa+qrvWQsqkkDZJWsa8i3AuqUZpVdvHMjT+7tQoV2caHOjNkEmoOKKhTtVheOLyLM+NVZiquqQtnTuH1OgybSmiZmhqu9OKxqpSEm9/IpXz/GIFoGnF4fkq3Hym5rZsTkokEsvQGCs1OL6nY8XX2k5hr3sByMUd1FutK6ZrLgd7M7H/lO2FJAyNVxzs5h2vPtjWRbadrbyFCxBeoPzEjKgV2jSzvTrbYLxiU6p71NyA//GPL/C5FybjC/4bjg3y1XPTzNY9cklznv4saegMFJKMV2z+95cv4PnhNWPE3/v8Oe4YKigH/mU6DEKoc5tILd7lsgyNsu0zGWWlLoW1IAdHhwqEUvLCWIWutEV/IUVP1sL2wlVpCreLcP16sNU6R+1iuQ7TRll6LIeN+MzskLAtjAef/SLd9SJ/fM8bALja0c/VTT6mmx0LO1zNS1nV8ZXhZ9LENDSEG8z7ecGcK30QKoG9ROmyerJKuzNVcwFIGALHV5t4ySh02wtCTE2QMHVySZNCyljVXetKF+Fzk0rIPVl10IXGbN0jnzI40JOlK2OBEKQtnem6h+urDMmm93/F9skmDPrzSSaqTmz6KoQ63qylM9vwSFs6+iLj8VzSIG3qTLmqE3dhqo7jB5GIHWbrHkEg+dg3hhnqTK94UWunsKdNXWV1tmld0ZVO0JGyGCwkefDYwJKaqqWw0lbeQuJo6hp6RKCUhYmg4gc8P14hlBJL18gkdDrTiXkX/Ncd6ePhp0d55Pw0jhfQkMT6s/3daaZrDpMVB9cL6CskFx0jXplpcLA3s2yHYbrqYOhiSYsU1w8xdEFvLnHN91qxFuQgDCWffGIYxw85vqdFU6hrbWsKt5twfbXYSp2jdtFOh2kzt1036jOzQ8K2IqTk3331z/nJL/4JIYJTfYf5xu6XbPZR3VTQI4uJVhLVSsAEqrPVkTaxvYCqE/DMcIm+aA6UNNXoyonaZmlTxw8lFVsRCikVwQok1JwA0xBoUSJ4yJy3mIyE+YauuhWZpEHK1Li1L7+qu9blLsLnJitMVtRIVBcahZRBIGGm5lJzSuztSnN5RhEjU9M40J0haRmcGi4zUjzDW+/eTcLU2N+TiRcHEoaGqWuIyKQ0Zeoc211grGyTTRrXjABTlk4hMDg9WsaPOjRSSsp2QMYyuGMwz3SUGbfSRa1dnyGJ5NRweVkH9Z97/e1cnq2vyQV+ua28hcQxlzTmJQv4oeqYAnSmTcq2T3fGoi+vxP3xBf/BPO989UEaniqunSmTbNLEEILRsh3FbEkKaWvJMeJM3eVf3bKPC9P1JTsMvh8yWEhyebq+qEVKueGxrzvD/Yd6VnxPbpQcrIXofDsK11eLrdA5aher6TBt1rbrRn1mdkjYFoPle/zS3/8mbz31WQA+/NLv5snBWzf5qNYHGnOu7teLhCEir6zlM4mShuo6+M0nlKhQbF3DMpReyY0IlS4gZRl0pJVnl6UHuL5DxfGRZZtCysQPQhqe6liA8hDTIm2THxGrIJSYuoogqjmSQKrxkyE09u9KMTzbwA1CNKHGe5omSJs6uzvT13XXuuhFOBJN9+YSHOjJ8PilIoFUnZh80qRsezw7VkYXkLYMvECSsPR5d3uPnJ/mcG+Wp4dLHB3Mc2G6RrnhY3shmlBbhfcd7OaHv+kAv/XZs4sW23zSJJMweOpqiTCU1D0HQxN0ZS3uGMrTlUlgGXpbF7V2CntzA3SkeGbZ4m8Y2oZc4Bcjjq3JAq4fIqUkZapN04Sps79njjy2XvCPDhX4jy3nebrqxsW2kDR4Ybwan/eFaI4R05bBLzx4ZMkOg2FovOuBQ3zgodOLWqSkLJ13PnBwWVF+EzdKDtZCdL5dheurxXbwSdsuXcmN+szskLAthI5Gmd/7xH/l3qvP4AuN97zuR/jTE9+52Ye1btCahqfLQKC6To0WMbupi1hPlUuadGctzkzU5umt5j2PANPQ0UNJEI0RO9IWR4fyDORTCAHPjJY5NVzC0ATdWYu0ZdAcRiZMnc6MxUTZxgtCGl6AZeiEUh1L0tSpuz6OHzmwA7qmyF0+ZaELqDk+03UXkFiGElnv787wwniFiu3jBxKE5O59nfzQ/Qeu+6514UW4WHf5/S+epzOdIJvQ4+5LIaVyHS1do9xw6c6aNLyA7kwiFvW3hkJ//717GS42mK653LYrhy8lVdtjtuExWEjF+qnFiu1QR4rxik214ZM0NIIwxAskfiiZrro8O1rmyECBfMps+6LWbmHfKp2BxYhjIWVyqDfLc2NlQL3fgZR0Zyz2N8fEERZe8Jcqtl88M9n2GHGlDkPTfmI5i5R2cSPkYC10ZRspXN/s7cut7pO2XbqSG/WZ2SFhWwQHp6/yhx9/LwdmRylbaf7dm36GLx64e7MPa91gaKob44dhbAmxGB9rOr+bmtokFKjRn6ELMpbKRHT8kJSp7tIX5joC8Taf+vfoAZHkkiYiujh2RqTE1DVS5hwBA2VdoFzpNQY7UwzkU+RTJl4QcjHqCiUMHV1ZrxOESu/VnU3Ej5NLmZFdhI8bidnzKYv7WmwVjgwW+JW33NlWd2EhlrrwP3WliOtLJVAXgoM9WepOKTYWBUkoJXXHJ5e0ONCTmWd7MhcKnZpHaJoajpfv7142+zCT0PnTRy4zHBmpnp+qRRYQOkRB6BMVhyAocmhXdlUXtXYK+1bqDCxFHB+8c4ADPRk+8cRVOtNq/LiwOC12wV+s2N5/qGdNxohNvPGuoWUtUlaD6yUHa6Er2yjh+s26fbmW2C5dyY36zOyQsC2CV156igOzo1zN7+KH3vaebZEBqYv5LvKrgYiE4I6vYleWexjXD9E0jayhIaUkaen4vvoj9cMQ2w8Z6khSrPv4tkdrQ6xpghqGyo9J1wWGpuH4klLkt9RwA2quT8rUCYKQiPrh+EEUeh3gBsoEVYaSq8UGR1LKl6orY1GxfVw/YLRkc0tfNhJNN8Xr8SsmmzSoOc2fbUQh0YKJssOerjQ/dP/+ZYvbUkRruQv/wru5zoyltvWi7cSGq6hvLqm+3tnSfYH5xb+dUGiYX2zPT1Y5O1llIJ/k+YmKilKK3heBwNKiWCXX5/mxCt9558CqtXArFfat1BlYihQCXJiu8fTVEn35+WL31Vzw13KM2PqYy9lQrDfWQle2EcL1m3n7ci2xXew0NmrZYYeEbRF89MR3YgU+f33k1UxlOjf7cFaEoalRoB+E1JxgWW3XUmRtoJBSBGYFJheEYOmqc1Z1fHADpFRbiH4g8ULJ5ekGaUunK21SbHix9kuFWcso4kXQkbbY3ZFirGLT8EIuTtWiEVUn33z7Lj7y5YtMlB2SlvL0UqHdygU/nTAYLTu4fshE2aY3l4gjcmbrHoMdKV59Sy8vjFWZbbiUbdVt0jVBEEUKmZGb/fNjVc5O1MgmDV62r2tFO4SliNZdezp4+OTokhf+H/2Ww9fczXVmLO5Jd1K2Pc5P1vCCkELKpCM93zF/seK/WkLTvOv1E5Jyw6cjpTp/nh9i6JpaVAgVwfRDyX0Hu7aUfmU9sNR7uFYX/LUcI24VrIXofD2F69tF57QVsJ3sNDZi2WGHhG0ShAz5ocf+ho/d+VrKySwIwYdf9sbNPqwVYQiURQNg6QLfVxonIUS83dXsRGmAXEDABIrAyVAyWrKxDB0v8JfshDX/PNOWTjWyfQhCGecxokm8UI0ybT/q9qQtZutuTMSkBF0X9OWT3N6fY7rm8u1H+vm++/ZSc4J5HZ3dneko+7CGH4RRTqIe+TlBd8aiEnXbZloick7s7eQtdw8pIpi16M4mGCs3Yi+sUMrIU0sjk9A40p9HIplteMrTahksdYd98kqRzzw7vmwc0CefGOHNJ4YWLe7jUQfu9Xf287HHrvLUleI8D6a1uNtr3vVWbY8glOSSBoauNipdXxJEKeidmYSywSikrut5tiJWqw1aywv+Wo4RtwrWYrS8XuPp7aJz2grYbnYa6y1p2CFhm4CE5/DrD/8Pvuv5L/HN577OD/yz9yHF9rg46pGXlRfpr3RdxzIFpiYoNry46+P4IZFESm0LooiSaHGjV6RNqs1A1BBQEyIW2GsaJHVNWT84PmEoMXVdjRWFIIweu2kv4YcwWVFbd7omkEglntcEL9vfSUfKYrRsx9tzh3flrnl9b7xriJcM5PhPf/YUpiYopE2GZ+sUG36UISjIpwSOF3DbQI7JssPB3iw/9/rbMQyNMJTxXd6JPR1UHRXrc2aiGhmcSrozCYY6UyAEQ1Iue5e83B12XyHJmYnqinFA2YSxZHE/vqfAk1eK1N2AmbrLaNkmoWsMdqRiYnkjd3vNu96vX5xBE2qLNGHoJLJqRFaxlcv7kYEcZcff9BHEWuF6tUFrecHf7DHiemAtRsvrMZ7eLjqnrYLtZKcB6ytpuDmueNsIPbVZfv/jH+DE6PO4msFf3vHN24aAgbKCsEJJTzZBzfVxvICaG87bqDN0gRtEWq+oxdXsdMkmaRKoTlNkWhmGaj2/kDJxAyVgVx0sDU1TVhQVR2nAQinxZTRqXFCbpFSbiRKJjMicEJFRqhBt/ZE33JCMZbC/J0Pd9ak64bxtSV1TthhJQ+fwrhwTFTuOGGq9yzsXxdgY0Rg1CCUZy5gnfl/pLnm5O+zF4oBa0XrhP76n45riXnN8fvOzZ+MQ7Ft2ZeNcvnRC580nBm/4Yth8P67ONpgoO1Rsj460SRBCwwvIJA1u7csyXnG2zAjiRnGj2qCtpGHbQXvYLjqnrYSttDSzmdg+1f8mwK2TF/nLP/4JTow+TzGZ5V/+s/fz8Ttfu9mHtWpICQMdyXgs6AeSYt3DDyUNz0dKGROV1jGj6lAp8qR245RTfFIX6LogEemlDE1jb1eal+3rZKgjxbfd0cd733SUlKlH1gbqdw1dWSy0PocE3CCIxPzE8Tp9uSTff+9e3v3gS1blyO75rfEyCs3tR8cPaXg+xbpHqeHF32/e5d25u0Cx4XJpuo7rh/RkE4uK31OWjuMtfpcc32EvEr8TxwEFKg5oIRZe+JvF/fgeRXY+8cRw3GHLJg10XaO/kOL4ng4cL+STT4wQLmH7sRo0fa3uO9iNJgSTFTfOOTzUk2W65m65EcT1YmHnMptUmsBs0uDwriwzkSHtWryvO9g6aHZ8R0sNpJx/bps6p1t25W6Km4y1ROs1qXkT+2LDDi3fILz6/OP89l/9Mjm3wfnOQX74be/hQtf2E8gmTV2RJV9SdwPCMESP7CN0AV7U4TD05oBRQROKNARSAoqkSanGhUf3diIlVF3/GgdwtTV4gNv7cvx69gVlZGkIDE2PDVGb48imy33zCU1NZfRpmmCq6vDxNmNxWoWjffnEvHgZKSXlhgsInh8r4/qSEMlHv3oJU9cWtWp4bqzCh790gYF8kmzKvOb5lrtLXu4OuzUOyNDnX7xWErhutIbl6FCB3/hnd/Hp0+P8zckRRks2ItqKHCyk+K5jAxwZyN/w82w2bkZt0Gb7Xm0HbDed0w62DnZI2AbADDze/+nfJec2eHTPUd715p+jmNo6BWfOEWt5GBp0ZS0cL2SiYiOEGv0JAaEfIoGEoWF7IZ6v3NSbN/zNXMWUqZNLGmgCSnUP09D4yW+7DcvUF3UAbw1AzicMkoamtGhCIoWYZ0chgVBKNKEIWBBKDF1T/l6FZNyFWGlDqfWCOl52SJoaFdsjkzAoNzxsPyRp6FiGhhf4dCYtLs3U+eBnziwat7G/O8PXL86obaAFkT4rkaXlNolAddE6pcV42UETWtsX/s3QsGia4NuP9vO6I318+vQYD50cZbRkM162+eijl3jkwvS291O62bRBO75X7WO76Zx2sDWwQ8I2AJ5u8s63vJvvf+Jved9r34GnX9sN2SgszEg0dRWVU7EX31Cc9/MSkBKJpOEFsd2AH6rOlmVo+IGMCddLBnJR8LVPEEjSlk4yylisR75cAx0pOjLWih5UFdvHMnSO7e7g6eFSZDmhjk8TqssQShm3xEIJCbNpvAqWqTNQMNruQrReUJ+8XKTY8JituQghSBqKSNbdgJRpcFt/jo60uaTA/kbuklf63d2daR48NsCTV4qruvCvqGFxfEIpGS421rz7cXq0zMe/MTynmbJuHj+lm0kbtON7tXrs6Jx2sFps/SvBNkXabXB89AW+uu84AM/37ucXvu3fbsqxNP/8NW0uNBqUxUQmYaALgRU5zjeDpcMo/xCaHSb1z6rjU0hZ1F2ftKWjazBdc9E0jaShgSFIWWpk+V+++w4eOjnKo+en8YKQih1QsX10TdCVtjB0wYm9nW15UGUSOoFUm3Un9nRwdbZOxQmQUmL7IUEYkjYMhICspfRNhiYo214cxRNIVtWFaL2gPnmlyN+dGuXrF2bRhNJhdWdUHmNT47XcqOlG7pKXyoTc153mVYd7uHOowINHB1YVRL1ch22m6vDElSKGLvjfX7pA0tLXrPtxs/spbScPpOVws5+n9YSmqViyJhG7OF3bIWKbjK08Ut8hYeuA/vIUf/jx93F4+jLf973/lcd237Gpx5NJGGQTqgPVm00wUrLxg5CjQ3lyCRM/DHnqagkvkHSmTepeQMMN4u1DgdpO9KO8v95cgiszAbYX4AYhXRmLgz1Z0paOqSu7hJLt0Zm24i6O2sBThC+Qkortt62TODVc4uOPX2W0pHy3sgmdfNLkJV0Z0pZOzfZ46moJkGhCizcmy7ZH0tDjbcSG4193F+JQb5Y33jXEWMmmP5ckYelqI3SRiJ+lSN6N3CUvJIRfOjvFeNnm//vaFT7xxHBMko7v6Wjr9SzVYRsrNTh5tQTA7f0d9BeSa9r9uBk1U624WbRBN/t5Wk/sjHC3Frb6+dghYWuMo2Nn+YOPv4/+6gyT6Q58bePf4tYRoqELOlIGlqFGjns6UzFvMHVNCd1Njbv3dvLYpRn8UNKVtnAsRSa8IEAgSJkGZlJw5+4OtYknVFesv5DkQEvYsIx8r5p3+5om5nVxal6wKp1E60jkcG+WcxNV6l7AVNWh6vr055JcLTbQdYEuBFU3oBoRnN5cMu5UXU8XYuEfbyAl0zWXzrRFTzJ5zc+3M2q6EfsBTRPU3YBPnRpbk1HeYh22q8U6lqFxYk8HXVkVn7OW3Y/N0Ext9F3wzaANutm0bRuFnRHu1sJ2OB87JGwN8W0vfJXfeOi/k/Ycnu/Zyw+/7T1cLfSt2eMndGVC6gQy3ixshQZYhhZv83lBiAwlxYZPRwokkpGyze7OND/6LYfJJIy4MO3tTPPjf/EUj5yfxvVV7mEhZZKyEvTlElTdgJft6+Lnv/MlXJ6t8+SVIh9//Cq2F2DpGkEol7zbb6cDtFihBK4ZiaQtg/NTVUp1j9max0zVJZ8yOb67g/58kvNTahvRCyV9uQT5lEnV9hktNehMm9x7oIunh0vLFuMwlHz69Dgf/vIFao7P/u4M6YJB3fG5MlPn5NUSKVOPSQpszKhpPUZE87c4y/zhly4ykE+SW7DFuVbdj43WTG3WXfB21wbdTNq2jcLOCHdrYbucj52/oLWAlPzrr3+Sn/un/42G5PMH7ubfv/GnqSTaK8YLxfJLfd8LJYW0xX1DBe7Z18EXnp/k0kydquOTNHVsL8QPlK5LoO5WhZS4fsB0NSSXMtjfleENxwe5Y7BwzQfvna8+SMNTRGqhVcRgIcVb79mNYWgc7M1ysDfLrX25tu/2l+sALVUo7zvQfc1IpDX38InLRcoNj5fu66CQVoTolr4c3RmLJ64UOTtVpeEFJC2doY4UEvjoo5eWLcbN0effnx6LR59uEMbdvhN7Onj0wgxPXiny8v1dpBLGho2a1mtE1Dw3FdtHFyojczGsRfdjIzVTm30XvJ1NV28WbdtGYmeEu7WwXc7HDglbA7zu7KO8+58+DMCfnPhO/su3vgvN0ElqAttf2ZRR12ARr010MecKn46sHW7vz+H6AZ9/fopSw4stE9zoAYJQ4oUCSxd0pMzIHNMhZen0ZJNMVJwl7QCapprLWUW0YuHdfiahRhc1J+D8ZLWtO//lCuXpkTJVx2dgYZ6gEIDSllmGTrDgvevKJrh3fxejZZsfetUBdAEf+8YwsysU4+axjJQauH5IZ9pECMFMzaXmlDg6VKArm+DY7g7OTlYYLdtoQmzYqGm9R0Qb0f3YKM3UdrkL3qrYLG3bVhZQr4SdEe7WwnY5HzskbA3wj4dfzl+95AGeGriVD7/0u1X+oUSFJC4CreVbpkY8FmwNutaEuhASqrFjKFUe41TV5UBPFtsPuDRTn7NlQLF7JaRXmY41N4hzGLsyFod6sytqiFY7Rmne7Z8aLvGnj15e1dhnpUJ5arjEbN2l4fjzTU6lpNRwabgBpi7mjEqlypj0fGXQqgnBQCHJXz81wuwKxfj2qKs3U3MZzCcZLzlqyUAI8kmTsu1xcapKZ7ozEqv7/NCrDjDUkdqwYrHeJGlvZ5reXIJnR8oc6M2QT5rx+7WW3Y+N0Extl7vgrYyN1rZtdQH1StgZ4W4tbJfzsfNpuE4MlSaYShdwzARSaPzHN/zneFMuBJCgCbnoqLFJwARRzqEEQ9cIom6WYM5Kovm7bqCia+4YzCOE4PnxMkEYMlBIMlKykUB3RmXyFRuuGktKQcMLMHWNg72Z+IO4UjdgtWOUk1eL/MrfPcdMzaW/kKK/O4nthSuOfVYqlPu7M8zUXS7M1Dg6WEAIwWzN5fxUlemqQ83xMQ2NMxNVerIJpqoO5YbKaJRILEPj6aultorxl89NxT8nI0f/pkt+U4tWavhUbB9NCJKWzu39uQ0t4Os5ImoWwAuTNUbLNsPFBt0Zi8N9OZKGvubdj/XWTG2Xu+Ctjo3Stm326HgtsDPC3VrYLudjh4RdB+6++iwf+uQHeGTvMX70u39SBXAvTJJGFXm5jNpLNcvmvp/QBW4w9xtN9/cwciDd15VBCMFoyVajQkND0zQ60wlm6y4VJ8CPgrOFlEhdQxMahq5xeqTC0SEt9rRaq27A01eL/MzHT3J1tkHC0Jite+RTBgd6shzetfzYZ6VCmU4YdKYsMpbB2YkqaUuPtyORkqSpo2uC8bLN5ek6SUtZV+gCSg0PP5A8dHKEmhtcO9KM0CzGkxUnPhZdQD5lMFNzKaRMQC1EBKHS183WvU35412vEVFrAdzdmaY3m+CFiQpTNZfZCzMc6MlwYm/nmnc/1lMztV3ugrcD1lvbdrOMjm8We5K1wmaPlrfL+di5Aq0S33368/za3/4GicBj/+wIOadOObn4BaqdU+v6kp6MGh0KZBw43YqUOUdSvnJuitmaS90LMYTKcswmTVKRE70fytiLK23pGJqgM21Stn0uTNXoTJsxYbzRbsCp4RK//HfPcWm6TipywxeCeRqq5YheO4WyK2vx/ffu5ZHzM0osbyuxfCFl0pVJcHmmxnTNxQtCrFD1HStOQCphcHQgz3CxsfhIs+U5EqZGby4x71gO9mSpOyVKDY+0ZSCjpIDRks1gR2rN/nhXe6Fa6xHRYgUwmzR4RValIZyfrHGwN8PPvf52DEO70Ze7Ydgud8E7uLlGxzeDPclaYKuMlrfD+dghYe1CSn70K/+Xn/jSnwLw6cP38h/e8JM0rGv9oppwg6W7YK1IGDpSSvzIpV7F8ACRKD+bMCjbHievFgmZI2kh4Esf2w8jl3pBLpkglJIgkNzWl+OF8Sp+SDRO86g4PrmkIiM30g0IQ8mHvnCeZ0fL2F6AF0iqtk/C0MgmDRw/4OKU8gtzliB67RbK1x3p59CuLCeHSxzq0cmnTHJRBqOhC2Zrs+i6RsMLsdyA7ozF/mib0dS1a0aaiz3H/Yd6+NwLk/GxdGYslVkZ2WHU3IB8yuBl+7t46z1rcyG53gvVWo6IliyAQpBPWRzepTFRcbg8W9/yBbAV2+UueAebNzper07NdrcnuVFstdHyVj8fOySsDVi+xy9/6oO85Zl/AuBDL3szv/yaf0WoLX7RWC1GSzamLpCBEuELwIiyGN0gZKbmEoaSgEhHJiCI9GJBCEEYxnE9SUOLiZalC5KmRtXxVWxPKJXRKjfeDfj06XE+/8IEDTdAAn6oHtcLQ5wgpCNlUmr4TEUblosRvWahvDpT59Rwic60RTapXPXHyva8QllzAnQhGOhIxdmUoLZG05ZOwtSoOQG39eXY05WOCcXCkeZSxdgwtGuKdj5lctuuHBdmauy3DN5+/35ed6R/RX+zdv64b/RCtVYjoptZO7Ud7oJ3sDmj4/Xu1Gxne5IbwVYZLS92Xd6q52OHhLWBD/7Nr/IdL3wVX2j84rf9G/7PXa9f08e3F/hT6BromsAN5TXdNBn9r3XDEsD2QoLAo+Yq4biU8NTVMqGUKl7ID7EMFekzVmowVrLpylq88fjAqklEGEo++uglqk6ALlC6taZ+TUpcXxVtUxc8M1xkT1eGS1M19nam45FWGErOT1X58tkpijWXibLNpelaPA572b4u3vHqg/EFcakLtWkozZuUajTbkbbmdXTmjTQvzCxbjJcq2i/f371o0b7eC3nzQjVddegrJHH8gFBKckljRR3dWuNm105t9bvgHazv6HixYnx6tLylOjU3E7bCaHmrjELbxfa8sm4w/uBlb+Keq8/yn77rJ/jSgRNt/c5KBqzLwQ/nOkuLYaFTfhNeKPFCiaFBLmmStpROLAhD6m6ArgmeuFLE8UMSukYoJT/7yadJGCrzsd0P6/mpKs+PlRGApWtIwPFDZJOIhZKaG8Q/P1VzeddHH6cnl+CHXnmAlx3o5IOfOcM3Ls1SsX1CCQlTozNt0Z9P4IVSie9bsNSFOpcwyCV1Ros2g52peWRh4UjzdUf6VyzG7RbtG+lkXZyu8eTlIsW6y3DRJgjVNmZzoWEjNTAvBu3Ui7UrsRWxVOd4vRZOFhbjQ70ZZmrepndqblZsdmd9q41C28EOCVsCWadONZEG4LHdd/Dqd/3BsvqvhbheAnYjMAT4UpG42bqDriXQNRVjZOoauoDOlMlARxpDwNPDJaqOTyZpcmx3gaSht/VhfWG8QsMNSJoafqBsHBKGhheE+KGc16GzNDU6dQPJSNHml/7uWSL7s1jbpgvwg5DpqkMQSk7s6WC65s67GC53oTZ1jVS0hFBzgmUv4O0U49ai3W6cErR/IX/qSpELUzUMXVlfGJEdRnOh4chgHsfbmBHgagvgZm887WD7YqUOxVqOjpcqxo9dnGW0ZMdWP63YbksAWxGb2VnfKqPQ1WKHhC2C7zn5aX7unz7M9/6LX+L53v0AqyJgm4VAznXgXF8yVXXoSFl0ZxNUbZ+q43NwV5ZC0uTxy7P4UrIrn6Bs+1yernFib2eb47DIO8vUlTlqIDE0RcR8Z66DpQsIouNpEq/m/5rQhBqragiklMoUdbrGLbty11wMl7pQ33ewh+N7Cjx5pbim2p/VxCnF78wiF/JW4pJJ6HzxzBSBlORMA1NX41lTnzOFPTtRZagjuWEjwHYL4HZr8+9g66DdDsVajI6XK8YDhSQXp+uMlmyGOlLXWAttZw3kVsBmdta3wij0erBDwlogZMh//sKf8O8e+QtAkbEPvPYdm3xUq4MWWVxomiCUsLsrRX8+yWMXZzE01bmqOD7lhk/aMhBCm2dEmk+ZK35Yb+3Lkk0a2G5AZ9qk6ijNWbigC9ba7VoKoWzGMylrjTCUTNdcDkq5aDdouQv1G44NrlmX5rrilCK0XsgXEpdASkaLDXIJg4YXYBkaTTMTIQQpU2OibLO/O0MoJWEoN+SubaUCuB3b/DvYGlhth+JGC+RyxdgydJKmFvkqzm2KN7HdNZCbjc3cSt7sUej1YueTFiHp2fz6w/+DB5//MgD/85Xfy2+86l9s8lG1D4G6qRMqtwgrMn4dKdoYQmB7IQlTYGiCYs2l4fpIdOWsrwn8IMSLQhhX+rAe7Mny0n2dfOGFKWwvIGVqJHSB4wc4Lb/S7kg27pQh0aTKv6za/rJblcuNC9c7d3DJOKUIzQv5WMmOH6dJXEaLDcq2T8rU0ISIfcgMTVB3A4p1Bz+ES9M13vs3pze007RUAVxNEQVWdT5eTOPNF9NrbcVGdyiWK8a5pEFn2mK0ZON6AbSQsJtFA7nZmNdZH69yadpD0wSHejP8q1fuX7dr2XZdMtpaR7NJ6K3O8vufeB93jZ7B1Qx++vX/gU8e/ZbNPqy2oRFnWhOEEkMXaotSSqYqDnXHp+r6+KHOqZES5YZH2VadL6EJdCFiEtDN/A/rUoXjna8+xIXJGmcnq/ihv2LHazk045kkgKbc6WfrLi8/0L3sxfCa8ZihsSuX4FW39HB8T8d1F7nzU1VOXi2pcWv0uoVQ49KK7dORMpmo2JyfrnLnUMeiLfc7hwp89fzUNcQlnzLJJnQcPyQfXTTKDZ+yF9DwlAlJNqFzW38OQ9O2RKep3SL66dPjPHJhuu1x5YtpvLlZr7W5hfzCeBWQ3NqX42BPdkPJ30Z3KJYrxs3P60zNZaRskzCNbeMft51I/NGhAqGUfOQrF6k4HkEoGS/bfOKJYYQQ6/KZ365LRi96EjZUmuDP/s9Ps7s8yWwyx7ve8vN8bc/RzT6sVaGZVdlsPfmBxA9UbqXQ1DdNTeVIjhQb6JqyqggliFASIJFS8PxYmVCGlOoeB3tzPDda5rc+c4bz03XCUFJImRzuU4UDIJM0IkIhCSIm5bvBose4HBRhnOucNYO3l7sYLhyPOUbACxMVnrxa5DPPTXCgJ8NdezsWLXLLXcxODZf4X58/x/Oj5ZigdqRNBvJJpusu5YaPH4Y03AAhXE5eLXKoN3fNhfy+g138ySOXyCVNZmoupq5IbS5pkE+ZTFUcbC/gjqE8Ndvn+fEKoVRLDj3ZJB0plWywFQSl7RTR81MuH/7yBYJQtjWuXO/x5mYUrKWec7NGuaeGS3zoC+d47NIs1YjgZJMGL93XxTtb7F9WOv4bxUZ3KFYqxnXX51WHe+jKWJyd3B7+cdvthuXUcInf+uxZZmouezoz8fVxPT/z29Wg+UVPwsazXVzoHMIxLN7+tvdwqXNwsw/phiFb/umHko6UhRtKpio23gL7i+bPeqFkquoyVZ3BMgRjZYe/f2aUUEpSpkHa0inbHlNVm+dGy/h+yGjZJm3pSEL8IMT2Q0xN4C3lobEMmkdkaoI7h/LX/JEuFLd//PG58Vix7nF6tIztB3SkTBpeQLHhcfJK8Zo/+KevFvnIly9ybqq2KLH8wMOneXakTC0yoRWoHMrLM3UylkFnxsKUc/YYVcfn6mw9tvhoXsjPjFc4M14FAWHIPAuKAz1Zqo7PbM3lyctFHD+g1PABlYfZlTHVwoMfYhoaA/nkpgpKVyyijs9s3UWg7oBX0vys9xbTZhSspZ7zLSeG+MQTwxu+sXVquMQHHjrNc2MVNEGUgQpVx+cLL0wyUbF594NHNmTpYqM7FO0U43e8+uC28Y/bbnrMzdxS3I4GzS9aEiZkiBQavm7w7970MwgpKaVym31Ya45QwuXZBpmEQcI08JylW/5N6uQHShwPioQ0BeTFusu4H+JNqCik5p9PylRRRbannPuv1yNNA7rSFo4fzmtbNwvEmbGKCtr2QyqOz5GBHAI1PrT9IA7bFkLQcAP6BnJMlJ34D/5vTo7w6//wPLN1D1PTMHVB2faYrjlcnanjBiGnhss4XhC/DkGUTiCh5voUUga2H9KVsTjcm+HCVJ3eXIJ3PXCQzrQVm0F+7BtXqXsBuYRBJqnPs6A4OlSgP5dkpupStj00BEKo+CohBE8Pl0gYOppQo9lsUidh6JsmKF2piF6YqcU/147mZz01QtcUrLzGZNXhkXPTvDBe4We+43bu3N1xfW9Eu8/ZUiRfGK9QdwJ2d6Y3RA8Fqgh+7PErnI9sUPJJM37urujv+MJkjY8/fpUjA/llzUuvzjZ4291D9BdS101UNqND0W4x3kpbcothO9oubPaW4nYzaH7RkTAtDPiFz/4Behjyi6/7ERBiyQDumwUSdQfc9s9HDEqgBPNBKCnWXTSh/KxaCZYQyvHfr3sgVNRSIANkCIWUQSkyY10KTcKmRc77VTdAIOK7vAePDfDwyVHOTFSYqro4XkAQSgIJXzk3zeFdTrzp2aSFuiYIQjWSbf7B//0zY/z6PzzPTNVV3Sxdww8l1ajjZHsB42UHLwyVr5qmxRufTYQSJqsuhZSB44V843IJN+oIZpMGb7//AKA8xBwvpD+fYLbukbKUGW7TguLCZIXZukc+afDS/Z2UGmocaQhB2fFx/RCBoDeXwA8l01X13o+VbI7vafs0rhlWKqIZy0CGKiJqMSzU/KyXRmhhwSrWPZ4fL6sRchBytdjgpz9+kl9+6zGOrRERW6lIPnWlGH9vMazHxtbF6RpPD6u0DLUB3Vp8BJmESd31eXq4xPmp6pLH3+1bPHGlyDMjJYYKKZKWft3dsc3oUGy3YrwYNpvQXA+2wpbidjJoflGRsIxT54N/82u89tzXAfiLO7+Vpwdu2eSj2hws162aT7IEGor0BFLpzJqRSULM+X/5gUQICZqOqWk4YUjFCZYlYE2YmoocCiTUHJ8XxivctaeDqarD733+PA3PZ7Ro44cSy9AwNInthwQSzkxUySQM0lYifrymA33TxHW8HPJnj12hWPfoylqYuro4mLqgkDIpNTy8QNLwVKqAYWgqRN3QVKRQi+9GGEr8UHXF0pZBMhLWPzuiuglvvXt3fNHsySY4NVyatwFp6ZraWNU1ju0uUEgnyKcsJqOQbBlK5bcWSvxQ+a/pmkATgkfOT/O6I32bUkSWK6L3Hujko49eblvzs14aodaCVax7nBouYfsBaUuN020v4Opsg1/5u+f42e98yZoU/pWKZH8hyWjZZqrq0l+41mtwPTa2KrZPI9JmGot8VgxNgIS6F/DCeGXR45+tuTwzUsYLQkIp6MklbnhRZDNI0XYqxothKxCa1WK7biluFrTNPoB28Nu//dvs37+fZDLJvffey9e+9rVVP0ZfZYqP/elP8dpzX8c2LP7NG3/mRUvAYOVx4VIkTdMWIWnR3E5KcMMwFpiHC1Ymm+O9hddcMxrDKbKhIpAuTtfIJU2GZ+tMlB38UJIytZiUNH82lFB3VacD5oS3hZQSwTdclcs4VmpgaBqGtvAjr1zrHT9QHUA559+oa4KEoUf5mHM2IE0tmalrhBIsQ+NAb4aZmstDJ0fVRdPS6cxYHB0q0JWx4jzNIJRYhk5XxqI/8hkTQrArn1TLCaLpTB/iegFl2yNh6tzen+fsZJWL07UVztz64ehQgV948Ajv/e47+PkHX8J7v/uO/7+9e4+Lqs7/B/46c2UYYECRO4yYIJKKBIJAapu46MOfq24X12jFvFSKqVmuut8UNU031gttpmumVCKYFV221BCDirwjakkISkoKoiZXgWFm3r8/Rk6OoKIMDdL7+Xicx4NzPufynjczfN6c8zln8MrI3hgW6IaeLnYorawD3fQ7bxrz4+diL475abq82dr1W0vssOQSs0vUcqkEgiBAKZdCKZPg1+vfxmBszX8IrT2mouVOspudEkqZBGUWfq23Y28jE+PRt/Aa9UbTU51t5VIAQvP4icT8OdrKIcB0Ztnu+nebtiV/TUVRkLcjenT7fe/SvB/dWNC0pCMWNO31+e6sOnwRtn37dsyZMwcJCQnIzc1FUFAQYmJiUF5eflf7SUv9J3pf+hmX1I4YN34FdgY83E4R39+aCo1bafpMSYTfChLx8qXENAidCOKT4JuKLqlgeqK+RCLgVrs3PWRWAluFFJV1etNzxwxGNIhfPv7bQ00VUtNztgSYjnn1mg6Nht+Klu7Opv9+Syvr4KGxgUwigVwmtNgpySSmLzyXCqYzfDd2LhLhtwfgNsVoqzB1XjcWfA42pofcXqisg5FI/KPppFYgxMcJod2d8JCPIwI9HODbzRZOaoXZH1ZbhRQquRQ2MgkM1x96qydCV7UCfTw0cNPY/G5fZXQ7LXWiTZcru6gVKCqvQc31YrOmXo+i8ppmY37udv3WauqwLtU0v0QNNJ0hlcDthks4bXXHTrLRCA+NyuKv9Xa6d1Wjr6cDJIKAazr9TR0hobahEVJBQF9PDfxd7ZrFf+PDnA3XbyoRP883XQJj7et+LGja6/PdWXX4Imz16tWYOnUqnnnmGQQGBmLDhg2wtbXF5s2b72o/3a5V4CdnLcb8fTWOefRqp2g7vqazUbciFUx/dJvWNd40BowIkEpMRYNUMBVVTY+YkAgCutkrTB2TTHrDPgXYyCWQyySQCkKLzxQjmL4/UiEToJSbChGdniBAuL7vm+K83jE0naEyEFBxrRH2NnIEujtAIZWIH/iR/dzhaCuHrVzaQqcE0yUXENw0NpBKBDTojTAYCUSmAvO34s90JlBx/Xsybyz4BEGASiGFBIC7xsb8j6YgwN5GDie1AtX1evTzdERfTwezdeRSCWzkUmhUprMY7hoVwn27INjHCV2uF2wd7T/eGzVdruzrpUFFnQ4/X65FRZ0O/bwcW7x0dbfrt0ZTh1VWWQ+9wWh2Ke7GgtnZTmGxgrY1nWSwjxPmjQiw6Gu9HYlEwOMh3ujhrIbeYBrPqdMboNMb8GutDgYj4NtNjcdCvNDD2a5Z/I3X3/9SAWZnlZuoFNIO8Q/BH8H9WtC0x+e7s+qYf9Gv0+l0OHLkCBYsWCAuk0gkiI6Oxr59+1rcpqGhAQ0NDeJ8ZWUlAGC3d18s+n8voVZpCzRca9/AOygBgKNKiuoGIwgEQQAab/gHXiIAepgKMTKaCg7j9Ut0xhv20cVOAbnEiKt6HYxNzyMD0MVGARelDI5Ocgx8oCs2Zp1BVYPedFmSpKbviDQSjDqjuD+ZBGgwSCCB6XgquQIN1xpBegOqqxvhJNOj9Fo9dAbT3YxNCIBeT5BdLxqf6OuFy7U6XK5uwOUrFVDIJfDvZoe/BLkiwM0WWfYCLl6ph1TfiKsVtVApZNcH8BtxtVYHJ7US06O0eG/fWRSW16KuARDEs3YEuSBALTc9ZPXqVR3kMgk0Khl8nBRQCzo0XNOhtl4PiaERf+rhjM+OVSH/7EW4OdjARiFFvc6Asqp6OKnliPG//mT50sviOkq5BHJDHS5XNsDBRo6ejkooSQddnQ5EhHOXavGgpwZd5AZUVVW135ukDXzsBcwa5IWzv9aipl4POxsZtF1MY35aivlu12+NGD8H/PhzGc5eq4ZEL4NSLoXBSKjT6aGQS+GhVqCqsgqCvhFovIaqqrb/Hxrj54DiC5du+fv+s589ujtILP5ab8fHXsDsIV5IzilGbkkFfq0wFUxqpQwPeTthYpQXfOwF1NRUN4tfT0bo62vw6zWCjVIGD7UCurrfznrV1ustmj92ez72AiaFueLTYxdw5tJV6BqNZn/ffOzb5z3UVu3x+b5fNL2+m/8xaxF1YOfPnycA9P3335stnzt3LoWFhbW4TUJCQtNjS3niiSeeeOKJJ56sMpWUlNyxzunQZ8LuxYIFCzBnzhxxvqKiAlqtFufOnYNGo7FiZJ1XVVUVvL29UVJSAgcHB2uH0ylxjtsf57j9cY7bH+e4/d0px0SE6upqeHjc+eHvHboIc3Z2hlQqxcWLF82WX7x4EW5ubi1uo1QqoVQqmy3XaDT8hmxnDg4OnON2xjluf5zj9sc5bn+c4/Z3uxy39qRPh76gr1AoEBISgszMTHGZ0WhEZmYmIiIirBgZY4wxxljbdOgzYQAwZ84cxMXFITQ0FGFhYVi7di1qa2vxzDPPWDs0xhhjjLF71uGLsHHjxuHSpUtYtGgRysrK0L9/f+zatQuurq6t2l6pVCIhIaHFS5TMMjjH7Y9z3P44x+2Pc9z+OMftz5I5Fohacw8lY4wxxhizpA49JowxxhhjrLPiIowxxhhjzAq4CGOMMcYYswIuwhhjjDHGrKBTF2Hr1q1D9+7dYWNjg/DwcBw8eNDaId3XvvnmG4waNQoeHh4QBAGffPKJWTsRYdGiRXB3d4dKpUJ0dDQKCwutE+x9aMWKFRgwYADs7e3h4uKCMWPGoKCgwGyd+vp6xMfHo2vXrrCzs8Njjz3W7GHG7NbWr1+Pfv36iQ9ZjIiIwM6dO8V2zq/lrVy5EoIgYPbs2eIyznPbLF68GIIgmE0BAQFiO+fXMs6fP4+nn34aXbt2hUqlQt++fXH48GGx3RJ9XqctwrZv3445c+YgISEBubm5CAoKQkxMDMrLy60d2n2rtrYWQUFBWLduXYvtr7/+Ot544w1s2LABBw4cgFqtRkxMDOrr63/nSO9P2dnZiI+Px/79+5GRkYHGxkb8+c9/Rm3tb1+e/OKLL+Lzzz/Hjh07kJ2djQsXLuCvf/2rFaO+v3h5eWHlypU4cuQIDh8+jEcffRSjR4/Gjz/+CIDza2mHDh3Cf//7X/Tr189sOee57R588EGUlpaK03fffSe2cX7b7urVq4iKioJcLsfOnTtx8uRJrFq1Ck5OTuI6Funz2vol2x1VWFgYxcfHi/MGg4E8PDxoxYoVVoyq8wBA6enp4rzRaCQ3NzdKTEwUl1VUVJBSqaTU1FQrRHj/Ky8vJwCUnZ1NRKZ8yuVy2rFjh7hOfn4+AaB9+/ZZK8z7npOTE23atInza2HV1dXk5+dHGRkZNGTIEJo1axYR8fvYEhISEigoKKjFNs6vZcybN48efvjhW7Zbqs/rlGfCdDodjhw5gujoaHGZRCJBdHQ09u3bZ8XIOq/i4mKUlZWZ5Vyj0SA8PJxzfo8qKysBAF26dAEAHDlyBI2NjWY5DggIgI+PD+f4HhgMBqSlpaG2thYRERGcXwuLj4/HyJEjzfIJ8PvYUgoLC+Hh4YEePXogNjYW586dA8D5tZTPPvsMoaGheOKJJ+Di4oLg4GC8/fbbYrul+rxOWYRdvnwZBoOh2VP1XV1dUVZWZqWoOremvHLOLcNoNGL27NmIiopCnz59AJhyrFAo4OjoaLYu5/junDhxAnZ2dlAqlXj++eeRnp6OwMBAzq8FpaWlITc3FytWrGjWxnluu/DwcCQnJ2PXrl1Yv349iouLMWjQIFRXV3N+LeTMmTNYv349/Pz8sHv3bkybNg0zZ87Eu+++C8ByfV6H/9oixv6I4uPj8cMPP5iN82CW0atXL+Tl5aGyshIffvgh4uLikJ2dbe2wOo2SkhLMmjULGRkZsLGxsXY4ndKIESPEn/v164fw8HBotVp88MEHUKlUVoys8zAajQgNDcVrr70GAAgODsYPP/yADRs2IC4uzmLH6ZRnwpydnSGVSpvdDXLx4kW4ublZKarOrSmvnPO2mzFjBv73v//h66+/hpeXl7jczc0NOp0OFRUVZutzju+OQqFAz549ERISghUrViAoKAhJSUmcXws5cuQIysvL8dBDD0Emk0EmkyE7OxtvvPEGZDIZXF1dOc8W5ujoCH9/fxQVFfH72ELc3d0RGBhotqx3797iZV9L9XmdsghTKBQICQlBZmamuMxoNCIzMxMRERFWjKzz8vX1hZubm1nOq6qqcODAAc55KxERZsyYgfT0dOzduxe+vr5m7SEhIZDL5WY5LigowLlz5zjHbWA0GtHQ0MD5tZChQ4fixIkTyMvLE6fQ0FDExsaKP3OeLaumpganT5+Gu7s7v48tJCoqqtkjgk6dOgWtVgvAgn1eW+4e6MjS0tJIqVRScnIynTx5kp599llydHSksrIya4d236qurqajR4/S0aNHCQCtXr2ajh49SmfPniUiopUrV5KjoyN9+umndPz4cRo9ejT5+vpSXV2dlSO/P0ybNo00Gg1lZWVRaWmpOF27dk1c5/nnnycfHx/au3cvHT58mCIiIigiIsKKUd9f5s+fT9nZ2VRcXEzHjx+n+fPnkyAI9NVXXxER57e93Hh3JBHnua1eeuklysrKouLiYsrJyaHo6Ghydnam8vJyIuL8WsLBgwdJJpPR8uXLqbCwkFJSUsjW1pa2bt0qrmOJPq/TFmFERP/5z3/Ix8eHFAoFhYWF0f79+60d0n3t66+/JgDNpri4OCIy3bK7cOFCcnV1JaVSSUOHDqWCggLrBn0faSm3AGjLli3iOnV1dTR9+nRycnIiW1tbGjt2LJWWllov6PvMpEmTSKvVkkKhoG7dutHQoUPFAoyI89tebi7COM9tM27cOHJ3dyeFQkGenp40btw4KioqEts5v5bx+eefU58+fUipVFJAQABt3LjRrN0SfZ5ARHTP5+sYY4wxxtg96ZRjwhhjjDHGOjouwhhjjDHGrICLMMYYY4wxK+AijDHGGGPMCrgIY4wxxhizAi7CGGOMMcasgIswxhhjjDEr4CKMMcYYY8wKuAhj7HfSvXt3rF271tphWExnez0d0cSJEzFmzBhx/pFHHsHs2bOtFk97EQQBn3zyCQDg559/hiAIyMvLs2pMjP0euAhjrI1KSkowadIkeHh4QKFQQKvVYtasWbhy5Yq1Q+sQfvnlFygUCvTp08faofwuunfvDkEQIAgCVCoVunfvjieffBJ79+69630lJSUhOTnZYrE1FThNk0KhQM+ePbFs2TJ0lC9P8fb2Rmlp6R/m/cL+2LgIY6wNzpw5g9DQUBQWFiI1NRVFRUXYsGEDMjMzERERgV9//dVqsRkMBhiNRqsdv0lycjKefPJJVFVV4cCBA+1+vMbGxnY/xp0sXboUpaWlKCgowHvvvQdHR0dER0dj+fLld7UfjUYDR0dHi8e3Z88elJaWorCwEEuWLMHy5cuxefNmix/nRjqdrlXrSaVSuLm5QSaTtWs8jHUEXIQx1gbx8fFQKBT46quvMGTIEPj4+GDEiBHYs2cPzp8/j//7v/8zW7+6uhrjx4+HWq2Gp6cn1q1bJ7YRERYvXgwfHx8olUp4eHhg5syZYntDQwNefvlleHp6Qq1WIzw8HFlZWWJ7cnIyHB0d8dlnnyEwMBBKpRKbNm2CjY0NKioqzOKYNWsWHn30UXH+u+++w6BBg6BSqeDt7Y2ZM2eitrZWbC8vL8eoUaOgUqng6+uLlJSUVuWHiLBlyxb8/e9/x1NPPYV33nlHbPvnP/+J8PDwZtsEBQVh6dKl4vymTZvQu3dv2NjYICAgAG+99ZbY1nRmZ/v27RgyZAhsbGyQkpKCK1euYPz48fD09IStrS369u2L1NRUs+NUV1cjNjYWarUa7u7uWLNmTbPLfXfK+a3Y29vDzc0NPj4+GDx4MDZu3IiFCxdi0aJFKCgoAGAqkidPngxfX1+oVCr06tULSUlJZvu5+XLkjZYuXdri2aL+/ftj4cKFt42va9eucHNzg1arRWxsLKKiopCbmyu2G41GLF26FF5eXlAqlejfvz927dplto958+bB398ftra26NGjBxYuXGhWAC9evBj9+/fHpk2b4OvrCxsbGwBAYWEhBg8eDBsbGwQGBiIjI8NsvzdfjszKyoIgCMjMzERoaChsbW0RGRkp5rHJsmXL4OLiAnt7e0yZMgXz589H//79xfasrCyEhYVBrVbD0dERUVFROHv27G3zxFi7s9CXjTP2h3PlyhUSBIFee+21FtunTp1KTk5OZDQaiYhIq9WSvb09rVixggoKCuiNN94gqVRKX331FRER7dixgxwcHOjLL7+ks2fP0oEDB2jjxo3i/qZMmUKRkZH0zTffUFFRESUmJpJSqaRTp04REdGWLVtILpdTZGQk5eTk0E8//UQ1NTXk6upKmzZtEvej1+vNlhUVFZFaraY1a9bQqVOnKCcnh4KDg2nixIniNiNGjKCgoCDat28fHT58mCIjI0mlUtGaNWtum6PMzExyc3MjvV5PJ06cIHt7e6qpqSEioh9++IEAUFFRkbh+07LCwkIiItq6dSu5u7vTRx99RGfOnKGPPvqIunTpQsnJyUREVFxcTACoe/fu4joXLlygX375hRITE+no0aN0+vRpMdcHDhwwy6dWq6U9e/bQiRMnaOzYsWRvb0+zZs1qdc5botVqW8xL0/vlX//6FxER6XQ6WrRoER06dIjOnDlDW7duJVtbW9q+fbu4TVxcHI0ePVqcHzJkiBhfSUkJSSQSOnjwoNiem5tLgiDQ6dOnW4ytKV9Hjx4Vlx06dIgcHR3p3XffFZetXr2aHBwcKDU1lX766Sf6xz/+QXK53Ox1v/rqq5STk0PFxcX02Wefkaurq/jaiIgSEhJIrVbT8OHDKTc3l44dO0YGg4H69OlDQ4cOpby8PMrOzqbg4GACQOnp6S3G+PXXXxMACg8Pp6ysLPrxxx9p0KBBFBkZKR5r69atZGNjQ5s3b6aCggJasmQJOTg4UFBQEBERNTY2kkajoZdffpmKioro5MmTlJycTGfPnm0xT4z9XrgIY+we7d+/36zzuNnq1asJAF28eJGITJ3z8OHDzdYZN24cjRgxgoiIVq1aRf7+/qTT6Zrt6+zZsySVSun8+fNmy4cOHUoLFiwgIlMRBoDy8vLM1pk1axY9+uij4vzu3btJqVTS1atXiYho8uTJ9Oyzz5pt8+2335JEIqG6ujoqKCggAGadfX5+PgG4YxH21FNP0ezZs8X5oKAg2rJli9n80qVLxfkFCxZQeHi4OP/AAw/Qtm3bzPb56quvUkREBBH91mGvXbv2tnEQEY0cOZJeeuklIiKqqqoiuVxOO3bsENsrKirI1tZWLHJak/OW3KoIIyJydXWladOm3XLb+Ph4euyxx8T52xVhRKbi+Mb9vfDCC/TII4/ccv9N+VKpVKRWq0kulxOAZr9/Dw8PWr58udmyAQMG0PTp02+578TERAoJCRHnExISSC6XU3l5ubhs9+7dJJPJzHK6c+fOVhVhe/bsEbf54osvCADV1dUREVF4eDjFx8ebxRMVFSUWYVeuXCEAlJWVdcv4GbMGvhzJWBvRXQxojoiIaDafn58PAHjiiSdQV1eHHj16YOrUqUhPT4derwcAnDhxAgaDAf7+/rCzsxOn7OxsnD59WtyfQqFAv379zI4RGxuLrKwsXLhwAQCQkpKCkSNHimONjh07huTkZLP9xsTEwGg0ori4GPn5+ZDJZAgJCRH3GRAQcMexShUVFfj444/x9NNPi8uefvpps0uSsbGx2LZtGwBTHlNTUxEbGwsAqK2txenTpzF58mSz2JYtW2b2mgEgNDTUbN5gMODVV19F37590aVLF9jZ2WH37t04d+4cANNYvsbGRoSFhYnbaDQa9OrVS5xvbc7vBhFBEARxft26dQgJCUG3bt1gZ2eHjRs3ijG2xtSpU5Gamor6+nrodDps27YNkyZNuuN227dvR15eHo4dO4YPPvgAn376KebPnw8AqKqqwoULFxAVFWW2TVRUlPhebdpHVFQU3NzcYGdnh1deeaVZ7FqtFt26dRPn8/Pz4e3tDQ8PD3HZzZ+JW7nxfe3u7g7AdJkcAAoKCsx+lwDM5rt06YKJEyciJiYGo0aNQlJSEkpLS1t1XMbaE498ZOwe9ezZE4IgID8/H2PHjm3Wnp+fDycnJ7NO6Ha8vb1RUFCAPXv2ICMjA9OnT0diYiKys7NRU1MDqVSKI0eOQCqVmm1nZ2cn/qxSqcw6eQAYMGAAHnjgAaSlpWHatGlIT083u+OupqYGzz33nNn4syY+Pj44depUq+K/2bZt21BfX2827ouIYDQacerUKfj7+2P8+PGYN28ecnNzUVdXh5KSEowbN06MCwDefvvtZmPHbs6BWq02m09MTERSUhLWrl2Lvn37Qq1WY/bs2a0eHN50/NbkvLWuXLmCS5cuwdfXFwCQlpaGl19+GatWrUJERATs7e2RmJh4VzcvjBo1CkqlEunp6VAoFGhsbMTjjz9+x+28vb3Rs2dPAEDv3r1x+vRpLFy4EIsXL27Vcfft24fY2FgsWbIEMTEx0Gg0SEtLw6pVq8zWu/n30hZyuVz8uek9fjc3nmzZsgUzZ87Erl27sH37drzyyivIyMjAwIEDLRYjY3eLizDG7lHXrl0xbNgwvPXWW3jxxRehUqnEtrKyMqSkpGDChAlmRdH+/fvN9rF//3707t1bnFepVBg1ahRGjRqF+Ph4BAQE4MSJEwgODobBYEB5eTkGDRp017HGxsYiJSUFXl5ekEgkGDlypNj20EMP4eTJk2KnfLOAgADo9XocOXIEAwYMAGA683DzYP+bvfPOO3jppZcwceJEs+XTp0/H5s2bsXLlSnh5eWHIkCFISUlBXV0dhg0bBhcXFwCAq6srPDw8cObMGfHsWGvl5ORg9OjR4lm4psIvMDAQANCjRw/I5XIcOnQIPj4+AIDKykqcOnUKgwcPBoA25/xmSUlJkEgk4kD7nJwcREZGYvr06eI6d3uGTSaTIS4uDlu2bIFCocDf/vY3s/dha0mlUuj1euh0Ojg4OMDDwwM5OTkYMmSIuE5OTo54dun777+HVqs1u/GkNYPce/fujZKSEpSWlopns27+TNyLXr164dChQ5gwYYK47NChQ83WCw4ORnBwMBYsWICIiAhs27aNizBmVVyEMdYGb775JiIjIxETE4Nly5bB19cXP/74I+bOnQtPT89mjyTIycnB66+/jjFjxiAjIwM7duzAF198AcB0d6PBYEB4eDhsbW2xdetWqFQqaLVadO3aFbGxsZgwYQJWrVqF4OBgXLp0CZmZmejXr59ZUdWS2NhYLF68GMuXL8fjjz8OpVIpts2bNw8DBw7EjBkzMGXKFKjVapw8eRIZGRl488030atXLwwfPhzPPfcc1q9fD5lMhtmzZ9+2s8/Ly0Nubi5SUlIQEBBg1jZ+/HgsXboUy5Ytg0wmQ2xsLBISEqDT6bBmzRqzdZcsWYKZM2dCo9Fg+PDhaGhowOHDh3H16lXMmTPnlsf38/PDhx9+iO+//x5OTk5YvXo1Ll68KBZh9vb2iIuLw9y5c9GlSxe4uLggISEBEolELJr9/f3vOefV1dUoKytDY2MjiouLsXXrVmzatAkrVqwQi10/Pz+899572L17N3x9ffH+++/j0KFD4pmy1poyZYpYyOfk5LRqmytXrqCsrAx6vR4nTpxAUlIS/vSnP8HBwQEAMHfuXCQkJOCBBx5A//79sWXLFuTl5Yl3xfr5+eHcuXNIS0vDgAED8MUXXyA9Pf2Ox42Ojoa/vz/i4uKQmJiIqqqqZncQ34sXXngBU6dORWhoKCIjI7F9+3YcP34cPXr0AAAUFxdj48aN+Mtf/gIPDw8UFBSgsLDQrGhjzCqsOySNsfvfzz//THFxceTq6kpyuZy8vb3phRdeoMuXL5utp9VqacmSJfTEE0+Qra0tubm5UVJSktienp5O4eHh5ODgQGq1mgYOHGg2GLnpbrru3buTXC4nd3d3Gjt2LB0/fpyITAPzNRrNLeMMCwsjALR3795mbQcPHqRhw4aRnZ0dqdVq6tevn9nA7NLSUho5ciQplUry8fGh995777YD0GfMmEGBgYEttpWWlpJEIqFPP/2UiIiuXr1KSqWSbG1tqbq6utn6KSkp1L9/f1IoFOTk5ESDBw+mjz/+mIhavtuPyDQQe/To0WRnZ0cuLi70yiuv0IQJE8wGuVdVVdFTTz0l/i5Wr15NYWFhNH/+fHGdO+W8JVqtlgAQAFIoFOTj40NPPvlks7zX19fTxIkTSaPRkKOjI02bNo3mz58vDiYnuvPA/CaDBg2iBx988JYxNWnKV9MklUrJy8uLpk6dajaA3mAw0OLFi8nT05PkcjkFBQXRzp07zfY1d+5c6tq1K9nZ2dG4ceNozZo1Zu+/hIQEs9fSpKCggB5++GFSKBTk7+9Pu3btatXA/KYbSYiIjh49SgCouLhYXLZ06VJydnYmOzs7mjRpEs2cOZMGDhxIRERlZWU0ZswYcnd3J4VCQVqtlhYtWkQGg+GOOWOsPQlEHeQxyYwxZkW1tbXw9PTEqlWrMHnyZGuH02pEBD8/P0yfPv22Zwf/aIYNGwY3Nze8//771g6FsVviy5GMsT+ko0eP4qeffkJYWBgqKyvFB8SOHj3aypG13qVLl5CWloaysjI888wz1g7Haq5du4YNGzYgJiYGUqkUqamp4g0ujHVkXIQxxv6w/v3vf6OgoAAKhQIhISH49ttv4ezsbO2wWs3FxQXOzs7YuHEjnJycrB2O1QiCgC+//BLLly9HfX09evXqhY8++gjR0dHWDo2x2+LLkYwxxhhjVsAPa2WMMcYYswIuwhhjjDHGrICLMMYYY4wxK+AijDHGGGPMCrgIY4wxxhizAi7CGGOMMcasgIswxhhjjDEr4CKMMcYYY8wK/j9DC05mnxvpzwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7, 6))\n", + "\n", + "plt.scatter(observed, predicted, alpha=0.6)\n", + "\n", + "cap = np.percentile(np.concatenate([observed, predicted]), 90)\n", + "\n", + "plt.plot([0, cap], [0, cap], color=\"red\", linestyle=\"--\")\n", + "\n", + "plt.xlim(0, cap)\n", + "plt.ylim(0, cap)\n", + "\n", + "plt.xlabel(\"Observed Average Daily Boardings\")\n", + "plt.ylabel(\"Predicted Boardings\")\n", + "plt.title(\"Observed vs Predicted (Negative Binomial GLM)\")\n", + "plt.grid(False)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ecda0370-e7ba-44e0-b528-6332ea239a8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_code
0dcc58c96c33532e549faf9bd89c8542d6692026-04-30 03:00:01.083850+00:00141801220204[15X][3]fa4791e728076c1f348ea288cbb69497NonePOINT(-119.695892 34.409457)Castillo & Pershing ParkNoneNone1086
1dcc58c96c33532e549faf9bd89c8542d172026-04-30 03:00:01.083850+00:00143801230284[27][3]82381a59b4772fdc3485a5e160292802NonePOINT(-119.856187 34.410741)Embarcadero & Sabado TardeNoneNone1054
2dcc58c96c33532e549faf9bd89c8542d5772026-04-30 03:00:01.083850+00:00143801230284[27][3]ace4501aacc7cc4014049f82071c69a4NonePOINT(-119.853462 34.41089)Ocean & Sabado TardeNoneNone834
3dcc58c96c33532e549faf9bd89c8542d152026-04-30 03:00:01.083850+00:00143801230284[27][3]382b6a77ef2d0a8bd29fe88d035168cbNonePOINT(-119.857582 34.41187)Seville & Embarcadero Del MarNoneNone1052
4dcc58c96c33532e549faf9bd89c8542d182026-04-30 03:00:01.083850+00:00153841230284[27][3]76b24f95f4a726a64073f85a704a7523NonePOINT(-119.856298 34.410651)Embarcadero & Sabado TardeNoneNone1055
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id _feed_valid_from \\\n", + "0 dcc58c96c33532e549faf9bd89c8542d 669 2026-04-30 03:00:01.083850+00:00 \n", + "1 dcc58c96c33532e549faf9bd89c8542d 17 2026-04-30 03:00:01.083850+00:00 \n", + "2 dcc58c96c33532e549faf9bd89c8542d 577 2026-04-30 03:00:01.083850+00:00 \n", + "3 dcc58c96c33532e549faf9bd89c8542d 15 2026-04-30 03:00:01.083850+00:00 \n", + "4 dcc58c96c33532e549faf9bd89c8542d 18 2026-04-30 03:00:01.083850+00:00 \n", + "\n", + " n_hours_in_service daily_arrivals arrivals_early_am arrivals_am_peak \\\n", + "0 14 18 0 12 \n", + "1 14 38 0 12 \n", + "2 14 38 0 12 \n", + "3 14 38 0 12 \n", + "4 15 38 4 12 \n", + "\n", + " arrivals_midday arrivals_pm_peak arrivals_evening route_id_array \\\n", + "0 20 20 4 [15X] \n", + "1 30 28 4 [27] \n", + "2 30 28 4 [27] \n", + "3 30 28 4 [27] \n", + "4 30 28 4 [27] \n", + "\n", + " route_type_array stop_key tts_stop_name \\\n", + "0 [3] fa4791e728076c1f348ea288cbb69497 None \n", + "1 [3] 82381a59b4772fdc3485a5e160292802 None \n", + "2 [3] ace4501aacc7cc4014049f82071c69a4 None \n", + "3 [3] 382b6a77ef2d0a8bd29fe88d035168cb None \n", + "4 [3] 76b24f95f4a726a64073f85a704a7523 None \n", + "\n", + " pt_geom stop_name location_type \\\n", + "0 POINT(-119.695892 34.409457) Castillo & Pershing Park None \n", + "1 POINT(-119.856187 34.410741) Embarcadero & Sabado Tarde None \n", + "2 POINT(-119.853462 34.41089) Ocean & Sabado Tarde None \n", + "3 POINT(-119.857582 34.41187) Seville & Embarcadero Del Mar None \n", + "4 POINT(-119.856298 34.410651) Embarcadero & Sabado Tarde None \n", + "\n", + " stop_desc stop_code \n", + "0 None 1086 \n", + "1 None 1054 \n", + "2 None 834 \n", + "3 None 1052 \n", + "4 None 1055 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# SBMTD data \n", + "feed_keys = [\"dcc58c96c33532e549faf9bd89c8542d\"] \n", + "feed_keys_str = \", \".join(f\"'{k}'\" for k in feed_keys)\n", + "\n", + "# Query only those feed_keys\n", + "with db_engine.connect() as connection:\n", + " query = f\"\"\"\n", + " SELECT \n", + " feed_key, stop_id, _feed_valid_from, n_hours_in_service, daily_arrivals,\n", + " arrivals_early_am, arrivals_am_peak, arrivals_midday, \n", + " arrivals_pm_peak, arrivals_evening,\n", + " route_id_array, route_type_array, stop_key, tts_stop_name,\n", + " pt_geom, stop_name, location_type, stop_desc, stop_code\n", + " FROM cal-itp-data-infra.mart_gtfs.fct_daily_scheduled_stops\n", + " WHERE service_date = DATE('2026-05-05')\n", + " AND feed_key IN ({feed_keys_str})\n", + " AND ('28' IN UNNEST(route_id_array)\n", + " OR '24X' IN UNNEST(route_id_array)\n", + " OR '11' IN UNNEST(route_id_array)\n", + " OR '15X' IN UNNEST(route_id_array)\n", + " OR '27' IN UNNEST(route_id_array)\n", + " )\n", + " \"\"\"\n", + " df_feed = pd.read_sql(query, connection)\n", + "\n", + "df_feed.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7d7fbf2d-f2aa-4009-a4e4-14abeb56239e", + "metadata": {}, + "outputs": [], + "source": [ + "manual_coords = {\n", + "\"San Benito Housing\": (34.41949395025939, -119.85428516794293),\n", + "\"UCSB North Hall Inbound\": (34.41543823819993, -119.84793921762432),\n", + "\"UCSB North Hall Outbound\": (34.41528964133994, -119.84781297568064),\n", + "\"UCSB Elings Hall Outbound\": (34.41487045037956, -119.83962136296098),\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3676f5ed-e262-4a07-aa26-73a6fc412cd1", + "metadata": {}, + "outputs": [], + "source": [ + "def create_manual_df(manual_coords):\n", + " rows = []\n", + "\n", + " for i, (stop_name, (lat, lon)) in enumerate(manual_coords.items(), start=1):\n", + " rows.append({\n", + " \"stop_id\": i,\n", + " \"stop_name\": stop_name,\n", + " \"latitude\": lat,\n", + " \"longitude\": lon,\n", + " \"pt_geom\": Point(lon, lat)\n", + " })\n", + "\n", + " return pd.DataFrame(rows)\n", + "\n", + "df_manual = create_manual_df(manual_coords)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0a1c7b85-ce20-4b53-8f7c-142827589776", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert your stops DataFrame to GeoDataFrame\n", + "gdf_29 = gpd.GeoDataFrame(df_manual, geometry='pt_geom', crs=\"EPSG:4326\")\n", + "\n", + "# Project to meters for accurate distance buffering (UTM Zone 11N for LA area)\n", + "gdf_29 = gdf_29.to_crs(epsg=32611)\n", + "\n", + "buffer_distance = 404.672 # in meters\n", + "gdf_29['buffer'] = gdf_29.geometry.buffer(buffer_distance)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "35139b8e-ed61-4988-b1f8-3cc63a249d5e", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the stored ACS dataset from the specified GCS file path.\n", + "with fs.open(f\"{GCS_FILE_PATH}/census_tracts_data.parquet\", \"rb\") as f:\n", + " tracts_ca_acs = gpd.read_parquet(f)\n", + "\n", + "acs_gdf = tracts_ca_acs.to_crs(gdf_29.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4d6cd5c1-774b-48a4-a8b8-940af8d4371e", + "metadata": {}, + "outputs": [], + "source": [ + "geometry_intersect = gpd.overlay(acs_gdf, gdf_29.set_geometry('buffer'), how='intersection')\n", + "\n", + "geometry_intersect['area_2'] = geometry_intersect.geometry.area # area of overlap\n", + "geometry_intersect['area_ratio'] = geometry_intersect['area_2'] / geometry_intersect['area_m2'] # fraction\n", + "\n", + "# Define demographic and socioeconomic columns to be adjusted by area ratio\n", + "cols_to_weight = [\n", + " 'total_pop', 'workers_with_no_car', 'total_youth', 'total_seniors', 'inc_total_lowincome']\n", + "\n", + "for col in cols_to_weight:\n", + " geometry_intersect[f'{col}_adj'] = geometry_intersect[col] * geometry_intersect['area_ratio']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "77f1a2d7-707c-48fd-88a7-b723bfbb81d2", + "metadata": {}, + "outputs": [], + "source": [ + "agg = geometry_intersect.groupby(['stop_name']).agg({\n", + " 'total_pop_adj': 'sum',\n", + " 'workers_with_no_car_adj': 'sum',\n", + " 'total_seniors_adj': 'sum',\n", + " 'total_youth_adj': 'sum',\n", + " 'inc_total_lowincome_adj': 'sum'\n", + "})\n", + " \n", + "gdf_29 = gdf_29.merge(\n", + " agg,\n", + " on=['stop_name'],\n", + " how='left'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5fc7a5a3-bfd2-41b5-9039-d2290c854ade", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing = df_feed.copy()\n", + "\n", + "# convert string representation of list → actual list\n", + "df_existing['route_id_array_parsed'] = df_existing['route_id_array'].apply(\n", + " lambda x: ast.literal_eval(x) if isinstance(x, str) else x\n", + ")\n", + "\n", + "# compute number of unique routes\n", + "df_existing['n_routes'] = df_existing['route_id_array_parsed'].apply(\n", + " lambda x: len(set(x)) if isinstance(x, list) else 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ff5c254f-919c-40cd-bbf8-036f85f17eb3", + "metadata": {}, + "outputs": [], + "source": [ + "df_existing_filtered = df_existing[\n", + " df_existing['route_id_array'].astype(str).str.contains('28')\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "f13658d1-e01e-479c-aa68-33c4dd2481ba", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feed_keystop_id_feed_valid_fromn_hours_in_servicedaily_arrivalsarrivals_early_amarrivals_am_peakarrivals_middayarrivals_pm_peakarrivals_eveningroute_id_arrayroute_type_arraystop_keytts_stop_namept_geomstop_namelocation_typestop_descstop_coderoute_id_array_parsedn_routes
24dcc58c96c33532e549faf9bd89c8542d1612026-04-30 03:00:01.083850+00:001875430605824[28, 27][3]24d82dbb2438795d1c44dc23120ec16eNonePOINT(-119.86987 34.428296)Storke & MarketplaceNoneNone281[28, 27]2
83dcc58c96c33532e549faf9bd89c8542d5112026-04-30 03:00:01.083850+00:001870636605642[11, 28][3]62f4538be92b899ba330177a28f38224NonePOINT(-119.8533 34.416898)El Colegio & StadiumNoneNone719[11, 28]2
86dcc58c96c33532e549faf9bd89c8542d1492026-04-30 03:00:01.083850+00:0017160034646647[28, 24X, 27][3]b6ea8ac7c3faee08d0376599352d8458NonePOINT(-119.875665 34.428798)Santa Felicia & MarketplaceNoneNone27[28, 24X, 27]3
87dcc58c96c33532e549faf9bd89c8542d252026-04-30 03:00:01.083850+00:001889048808048[11, 28, 15X][3]a083c3021eeca55b8453d7eb9d4f08b7NonePOINT(-119.86543 34.417575)El Colegio & Camino CortoNoneNone1069[11, 28, 15X]3
89dcc58c96c33532e549faf9bd89c8542d2122026-04-30 03:00:01.083850+00:001989548808048[28, 15X, 11][3]6885eb64abce3700e8b30198e609c585NonePOINT(-119.8541 34.417475)El Colegio & StadiumNoneNone336[28, 15X, 11]3
99dcc58c96c33532e549faf9bd89c8542d8042026-04-30 03:00:01.083850+00:00181101048919145[28, 2650, 27, 11, 2710][3]b7c9ac0ab926043edbad1a4eb0fccacdNonePOINT(-119.869891 34.419847)Storke & Sierra MadreNoneNone371[28, 2650, 27, 11, 2710]5
100dcc58c96c33532e549faf9bd89c8542d5972026-04-30 03:00:01.083850+00:00181101048919545[28, 2650, 2710, 27, 11][3]fd8d47021b830ca14e16f772f83bc0aaNonePOINT(-119.86987 34.426371)Storke & Santa FeliciaNoneNone877[28, 2650, 2710, 27, 11]5
101dcc58c96c33532e549faf9bd89c8542d232026-04-30 03:00:01.083850+00:001898648908666[11, 24X, 28][3]2e0d78fc35be5ca73c2202a2249b7538NonePOINT(-119.85785 34.417241)El Colegio & Embarcadero Del MarNoneNone1066[11, 24X, 28]3
102dcc58c96c33532e549faf9bd89c8542d222026-04-30 03:00:01.083850+00:001898648908666[24X, 28, 11][3]c3b6173c81d32da05ccbae327760de26NonePOINT(-119.86115 34.417245)El Colegio & Los CarnerosNoneNone1065[24X, 28, 11]3
105dcc58c96c33532e549faf9bd89c8542d1642026-04-30 03:00:01.083850+00:0019109851949663[28, 90, 25, 24X, 27][3]dd9d07510c38d5a23f1eaa5ea8bf7403NonePOINT(-119.872498 34.42998)Hollister & Camino Real MarketplaceNoneNone284[28, 90, 25, 24X, 27]5
110dcc58c96c33532e549faf9bd89c8542d5962026-04-30 03:00:01.083850+00:001812906811010852[2650, 15X, 28, 27, 11, 2710][3]3257fa4a3072bbe36dd39bb1f656d4ddNonePOINT(-119.86957 34.419003)Storke & El ColegioNoneNone876[2650, 15X, 28, 27, 11, 2710]6
111dcc58c96c33532e549faf9bd89c8542d8052026-04-30 03:00:01.083850+00:001812906811010852[2710, 27, 28, 2650, 11, 15X][3]30c9d332c4c5bdd854e48ca64fa4bfc3NonePOINT(-119.869622 34.422113)Storke & WhittierNoneNone372[2710, 27, 28, 2650, 11, 15X]6
116dcc58c96c33532e549faf9bd89c8542d212026-04-30 03:00:01.083850+00:001811806311011072[24X, 28, 15X, 11][3]8da34016dfed9d1f921d73dec6beb807NonePOINT(-119.86126 34.417513)El Colegio & Los CarnerosNoneNone1064[24X, 28, 15X, 11]4
117dcc58c96c33532e549faf9bd89c8542d202026-04-30 03:00:01.083850+00:001911856311011072[15X, 28, 24X, 11][3]f984c9f6c9ac417c0dccdbed0df15d3cNonePOINT(-119.85745 34.417498)El Colegio & Embarcadero Del MarNoneNone1063[15X, 28, 24X, 11]4
118dcc58c96c33532e549faf9bd89c8542d5982026-04-30 03:00:01.083850+00:0018138106012112563[2650, 28, 24X, 2710, 27, 11][3]edf3f31d73599f1bcfbe2555d6eb24a8NonePOINT(-119.86986 34.423789)Storke & PhelpsNoneNone879[2650, 28, 24X, 2710, 27, 11]6
119dcc58c96c33532e549faf9bd89c8542d3692026-04-30 03:00:01.083850+00:0018138106012112169[28, 2650, 27, 24X, 2710, 11][3]c939b297ff66fbb07f3bddbab7f372e3NonePOINT(-119.86597 34.41728)El Colegio & Camino CortoNoneNone51[28, 2650, 27, 24X, 2710, 11]6
123dcc58c96c33532e549faf9bd89c8542d6202026-04-30 03:00:01.083850+00:001815808314013876[24X, 27, 2650, 28, 15X, 2710, 11][3]82bc4b97797f539447bfbc296ddd33feNonePOINT(-119.86801 34.417525)Santa Catalina HallNoneNone92[24X, 27, 2650, 28, 15X, 2710, 11]7
124dcc58c96c33532e549faf9bd89c8542d2822026-04-30 03:00:01.083850+00:001925157914013880[28, 91, 15X, 27, 24X, 11][3]1e31723fdd3de7ff60f2d5c2013c5d77NonePOINT(-119.848091 34.414984)UCSB North Hall OutboundNoneNone42[28, 91, 15X, 27, 24X, 11]6
\n", + "
" + ], + "text/plain": [ + " feed_key stop_id \\\n", + "24 dcc58c96c33532e549faf9bd89c8542d 161 \n", + "83 dcc58c96c33532e549faf9bd89c8542d 511 \n", + "86 dcc58c96c33532e549faf9bd89c8542d 149 \n", + "87 dcc58c96c33532e549faf9bd89c8542d 25 \n", + "89 dcc58c96c33532e549faf9bd89c8542d 212 \n", + "99 dcc58c96c33532e549faf9bd89c8542d 804 \n", + "100 dcc58c96c33532e549faf9bd89c8542d 597 \n", + "101 dcc58c96c33532e549faf9bd89c8542d 23 \n", + "102 dcc58c96c33532e549faf9bd89c8542d 22 \n", + "105 dcc58c96c33532e549faf9bd89c8542d 164 \n", + "110 dcc58c96c33532e549faf9bd89c8542d 596 \n", + "111 dcc58c96c33532e549faf9bd89c8542d 805 \n", + "116 dcc58c96c33532e549faf9bd89c8542d 21 \n", + "117 dcc58c96c33532e549faf9bd89c8542d 20 \n", + "118 dcc58c96c33532e549faf9bd89c8542d 598 \n", + "119 dcc58c96c33532e549faf9bd89c8542d 369 \n", + "123 dcc58c96c33532e549faf9bd89c8542d 620 \n", + "124 dcc58c96c33532e549faf9bd89c8542d 282 \n", + "\n", + " _feed_valid_from n_hours_in_service daily_arrivals \\\n", + "24 2026-04-30 03:00:01.083850+00:00 18 75 \n", + "83 2026-04-30 03:00:01.083850+00:00 18 70 \n", + "86 2026-04-30 03:00:01.083850+00:00 17 160 \n", + "87 2026-04-30 03:00:01.083850+00:00 18 89 \n", + "89 2026-04-30 03:00:01.083850+00:00 19 89 \n", + "99 2026-04-30 03:00:01.083850+00:00 18 110 \n", + "100 2026-04-30 03:00:01.083850+00:00 18 110 \n", + "101 2026-04-30 03:00:01.083850+00:00 18 98 \n", + "102 2026-04-30 03:00:01.083850+00:00 18 98 \n", + "105 2026-04-30 03:00:01.083850+00:00 19 109 \n", + "110 2026-04-30 03:00:01.083850+00:00 18 129 \n", + "111 2026-04-30 03:00:01.083850+00:00 18 129 \n", + "116 2026-04-30 03:00:01.083850+00:00 18 118 \n", + "117 2026-04-30 03:00:01.083850+00:00 19 118 \n", + "118 2026-04-30 03:00:01.083850+00:00 18 138 \n", + "119 2026-04-30 03:00:01.083850+00:00 18 138 \n", + "123 2026-04-30 03:00:01.083850+00:00 18 158 \n", + "124 2026-04-30 03:00:01.083850+00:00 19 251 \n", + "\n", + " arrivals_early_am arrivals_am_peak arrivals_midday arrivals_pm_peak \\\n", + "24 4 30 60 58 \n", + "83 6 36 60 56 \n", + "86 0 34 64 66 \n", + "87 0 48 80 80 \n", + "89 5 48 80 80 \n", + "99 10 48 91 91 \n", + "100 10 48 91 95 \n", + "101 6 48 90 86 \n", + "102 6 48 90 86 \n", + "105 8 51 94 96 \n", + "110 0 68 110 108 \n", + "111 0 68 110 108 \n", + "116 0 63 110 110 \n", + "117 5 63 110 110 \n", + "118 10 60 121 125 \n", + "119 10 60 121 121 \n", + "123 0 83 140 138 \n", + "124 5 79 140 138 \n", + "\n", + " arrivals_evening route_id_array route_type_array \\\n", + "24 24 [28, 27] [3] \n", + "83 42 [11, 28] [3] \n", + "86 47 [28, 24X, 27] [3] \n", + "87 48 [11, 28, 15X] [3] \n", + "89 48 [28, 15X, 11] [3] \n", + "99 45 [28, 2650, 27, 11, 2710] [3] \n", + "100 45 [28, 2650, 2710, 27, 11] [3] \n", + "101 66 [11, 24X, 28] [3] \n", + "102 66 [24X, 28, 11] [3] \n", + "105 63 [28, 90, 25, 24X, 27] [3] \n", + "110 52 [2650, 15X, 28, 27, 11, 2710] [3] \n", + "111 52 [2710, 27, 28, 2650, 11, 15X] [3] \n", + "116 72 [24X, 28, 15X, 11] [3] \n", + "117 72 [15X, 28, 24X, 11] [3] \n", + "118 63 [2650, 28, 24X, 2710, 27, 11] [3] \n", + "119 69 [28, 2650, 27, 24X, 2710, 11] [3] \n", + "123 76 [24X, 27, 2650, 28, 15X, 2710, 11] [3] \n", + "124 80 [28, 91, 15X, 27, 24X, 11] [3] \n", + "\n", + " stop_key tts_stop_name \\\n", + "24 24d82dbb2438795d1c44dc23120ec16e None \n", + "83 62f4538be92b899ba330177a28f38224 None \n", + "86 b6ea8ac7c3faee08d0376599352d8458 None \n", + "87 a083c3021eeca55b8453d7eb9d4f08b7 None \n", + "89 6885eb64abce3700e8b30198e609c585 None \n", + "99 b7c9ac0ab926043edbad1a4eb0fccacd None \n", + "100 fd8d47021b830ca14e16f772f83bc0aa None \n", + "101 2e0d78fc35be5ca73c2202a2249b7538 None \n", + "102 c3b6173c81d32da05ccbae327760de26 None \n", + "105 dd9d07510c38d5a23f1eaa5ea8bf7403 None \n", + "110 3257fa4a3072bbe36dd39bb1f656d4dd None \n", + "111 30c9d332c4c5bdd854e48ca64fa4bfc3 None \n", + "116 8da34016dfed9d1f921d73dec6beb807 None \n", + "117 f984c9f6c9ac417c0dccdbed0df15d3c None \n", + "118 edf3f31d73599f1bcfbe2555d6eb24a8 None \n", + "119 c939b297ff66fbb07f3bddbab7f372e3 None \n", + "123 82bc4b97797f539447bfbc296ddd33fe None \n", + "124 1e31723fdd3de7ff60f2d5c2013c5d77 None \n", + "\n", + " pt_geom stop_name \\\n", + "24 POINT(-119.86987 34.428296) Storke & Marketplace \n", + "83 POINT(-119.8533 34.416898) El Colegio & Stadium \n", + "86 POINT(-119.875665 34.428798) Santa Felicia & Marketplace \n", + "87 POINT(-119.86543 34.417575) El Colegio & Camino Corto \n", + "89 POINT(-119.8541 34.417475) El Colegio & Stadium \n", + "99 POINT(-119.869891 34.419847) Storke & Sierra Madre \n", + "100 POINT(-119.86987 34.426371) Storke & Santa Felicia \n", + "101 POINT(-119.85785 34.417241) El Colegio & Embarcadero Del Mar \n", + "102 POINT(-119.86115 34.417245) El Colegio & Los Carneros \n", + "105 POINT(-119.872498 34.42998) Hollister & Camino Real Marketplace \n", + "110 POINT(-119.86957 34.419003) Storke & El Colegio \n", + "111 POINT(-119.869622 34.422113) Storke & Whittier \n", + "116 POINT(-119.86126 34.417513) El Colegio & Los Carneros \n", + "117 POINT(-119.85745 34.417498) El Colegio & Embarcadero Del Mar \n", + "118 POINT(-119.86986 34.423789) Storke & Phelps \n", + "119 POINT(-119.86597 34.41728) El Colegio & Camino Corto \n", + "123 POINT(-119.86801 34.417525) Santa Catalina Hall \n", + "124 POINT(-119.848091 34.414984) UCSB North Hall Outbound \n", + "\n", + " location_type stop_desc stop_code route_id_array_parsed \\\n", + "24 None None 281 [28, 27] \n", + "83 None None 719 [11, 28] \n", + "86 None None 27 [28, 24X, 27] \n", + "87 None None 1069 [11, 28, 15X] \n", + "89 None None 336 [28, 15X, 11] \n", + "99 None None 371 [28, 2650, 27, 11, 2710] \n", + "100 None None 877 [28, 2650, 2710, 27, 11] \n", + "101 None None 1066 [11, 24X, 28] \n", + "102 None None 1065 [24X, 28, 11] \n", + "105 None None 284 [28, 90, 25, 24X, 27] \n", + "110 None None 876 [2650, 15X, 28, 27, 11, 2710] \n", + "111 None None 372 [2710, 27, 28, 2650, 11, 15X] \n", + "116 None None 1064 [24X, 28, 15X, 11] \n", + "117 None None 1063 [15X, 28, 24X, 11] \n", + "118 None None 879 [2650, 28, 24X, 2710, 27, 11] \n", + "119 None None 51 [28, 2650, 27, 24X, 2710, 11] \n", + "123 None None 92 [24X, 27, 2650, 28, 15X, 2710, 11] \n", + "124 None None 42 [28, 91, 15X, 27, 24X, 11] \n", + "\n", + " n_routes \n", + "24 2 \n", + "83 2 \n", + "86 3 \n", + "87 3 \n", + "89 3 \n", + "99 5 \n", + "100 5 \n", + "101 3 \n", + "102 3 \n", + "105 5 \n", + "110 6 \n", + "111 6 \n", + "116 4 \n", + "117 4 \n", + "118 6 \n", + "119 6 \n", + "123 7 \n", + "124 6 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_existing_filtered.head(24)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1bb00808-d6da-46ce-b04c-3f59b1f046c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['stop_id', 'stop_name', 'latitude', 'longitude', 'pt_geom', 'buffer',\n", + " 'total_pop_adj', 'workers_with_no_car_adj', 'total_seniors_adj',\n", + " 'total_youth_adj', 'inc_total_lowincome_adj'],\n", + " dtype='object')" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf_29.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "953f95be-4664-46e1-a87e-d0b2b681ce0b", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged = gdf_29.merge(\n", + " df_existing[['stop_name', 'n_routes', 'daily_arrivals']],\n", + " on='stop_name',\n", + " how='left'\n", + ")\n", + "\n", + "df_merged[['n_routes', 'daily_arrivals']] = (\n", + " df_merged[['n_routes', 'daily_arrivals']].fillna(0)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5e539e68-8b2f-419c-9a5b-dd041773186f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stop_idstop_namelatitudelongitudept_geombuffertotal_pop_adjworkers_with_no_car_adjtotal_seniors_adjtotal_youth_adjinc_total_lowincome_adjn_routesdaily_arrivals
01San Benito Housing34.419494-119.854285POINT (237676.247 3812365.404)POLYGON ((238080.919 3812365.404, 238078.970 3...1902.74055632.5762096.8024401702.7975621539.6955600.00.0
12UCSB North Hall Inbound34.415438-119.847939POINT (238246.997 3811899.058)POLYGON ((238651.669 3811899.058, 238649.720 3...1537.6986890.0000007.5620651357.8633271260.5017383.062.0
23UCSB North Hall Outbound34.415290-119.847813POINT (238258.139 3811882.247)POLYGON ((238662.811 3811882.247, 238660.863 3...1543.6674980.0000007.5914181363.1340771265.3945656.0251.0
34UCSB Elings Hall Outbound34.414870-119.839621POINT (239009.950 3811814.601)POLYGON ((239414.622 3811814.601, 239412.673 3...560.6123120.0000002.756968495.048155459.5521854.083.0
\n", + "
" + ], + "text/plain": [ + " stop_id stop_name latitude longitude \\\n", + "0 1 San Benito Housing 34.419494 -119.854285 \n", + "1 2 UCSB North Hall Inbound 34.415438 -119.847939 \n", + "2 3 UCSB North Hall Outbound 34.415290 -119.847813 \n", + "3 4 UCSB Elings Hall Outbound 34.414870 -119.839621 \n", + "\n", + " pt_geom \\\n", + "0 POINT (237676.247 3812365.404) \n", + "1 POINT (238246.997 3811899.058) \n", + "2 POINT (238258.139 3811882.247) \n", + "3 POINT (239009.950 3811814.601) \n", + "\n", + " buffer total_pop_adj \\\n", + "0 POLYGON ((238080.919 3812365.404, 238078.970 3... 1902.740556 \n", + "1 POLYGON ((238651.669 3811899.058, 238649.720 3... 1537.698689 \n", + "2 POLYGON ((238662.811 3811882.247, 238660.863 3... 1543.667498 \n", + "3 POLYGON ((239414.622 3811814.601, 239412.673 3... 560.612312 \n", + "\n", + " workers_with_no_car_adj total_seniors_adj total_youth_adj \\\n", + "0 32.576209 6.802440 1702.797562 \n", + "1 0.000000 7.562065 1357.863327 \n", + "2 0.000000 7.591418 1363.134077 \n", + "3 0.000000 2.756968 495.048155 \n", + "\n", + " inc_total_lowincome_adj n_routes daily_arrivals \n", + "0 1539.695560 0.0 0.0 \n", + "1 1260.501738 3.0 62.0 \n", + "2 1265.394565 6.0 251.0 \n", + "3 459.552185 4.0 83.0 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_merged" + ] + }, + { + "cell_type": "markdown", + "id": "a438599a-3fe1-4d9d-a45e-7912f97f12fd", + "metadata": {}, + "source": [ + "### Fall / Winter / Spring" + ] + }, + { + "cell_type": "markdown", + "id": "e7554a2c-acca-4af2-bf15-fba4e43fe810", + "metadata": {}, + "source": [ + "Day: 12 × 4 = 48 arrivals\n", + "Evening: 4 × 2 = 8 arrivals" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "676ff0d9-c1a8-4596-b9e6-25c251142ce5", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_fsw = df_merged.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ae7b763f-9404-4575-9b20-6790aa74aadc", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_fsw[\"n_routes_scn\"] = df_merged_fsw[\"n_routes\"] + 1\n", + "df_merged_fsw[\"daily_arrivals_scn\"] = df_merged_fsw[\"daily_arrivals\"] + 56" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "fbabd8fc-8937-4ee0-bdbf-9729c3f886f2", + "metadata": {}, + "outputs": [], + "source": [ + "X_base_fsw= df_merged_fsw[[\n", + " 'n_routes',\n", + " 'daily_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].fillna(0)\n", + "\n", + "X_base_fsw = X_base_fsw.rename(columns={\n", + " 'n_routes': 'n_routes',\n", + " 'daily_arrivals': 'n_arrivals'\n", + "})\n", + "\n", + "X_base_fsw[\"log_arrivals\"] = np.log(X_base_fsw[\"n_arrivals\"] + 1)\n", + "\n", + "X_base_fsw= sm.add_constant(X_base_fsw)\n", + "X_base_fsw= X_base_fsw[nb_model_extended_final.model.exog_names]\n", + "df_merged_fsw['pred_baseline'] = nb_model_extended_final.predict(X_base_fsw)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "8565382d-37dd-489a-b30f-e4ec17a7726f", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn_fsw = df_merged_fsw[[\n", + " 'n_routes_scn',\n", + " 'daily_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn_fsw = X_scn_fsw.rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'daily_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn_fsw[\"log_arrivals\"] = np.log(X_scn_fsw[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn_fsw = sm.add_constant(X_scn_fsw)\n", + "X_scn_fsw = X_scn_fsw[nb_model_extended_final.model.exog_names]\n", + "df_merged_fsw['pred_scenario'] = nb_model_extended_final.predict(X_scn_fsw)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "8907b88f-a7f1-4b31-88b6-d790144cb716", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_fsw['ridership_change'] = (\n", + " df_merged_fsw['pred_scenario'] - df_merged_fsw['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9f407e44-a573-4c15-be59-657507ce688d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "341.67539178867486\n" + ] + } + ], + "source": [ + "ridership_change_fsw= df_merged_fsw[\"ridership_change\"].sum()\n", + "print(ridership_change_fsw)" + ] + }, + { + "cell_type": "markdown", + "id": "06c534e3-8bdf-4902-8fd8-b55839610e2b", + "metadata": {}, + "source": [ + "### Summer" + ] + }, + { + "cell_type": "markdown", + "id": "cbb07b2f-048a-40db-8a0f-d913edef3594", + "metadata": {}, + "source": [ + "16 × 2 = 32 arrivals per day" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "e9d926e9-a077-482e-94e4-dfda391d62f8", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_sum = df_merged.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "944fba4b-f88f-4afc-a74e-800097732bfc", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_sum[\"n_routes_scn\"] = df_merged_sum[\"n_routes\"] + 1\n", + "df_merged_sum[\"daily_arrivals_scn\"] = df_merged_sum[\"daily_arrivals\"] + 32" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "48dbe88c-a7da-4cd5-8ba5-b30e4fd594f6", + "metadata": {}, + "outputs": [], + "source": [ + "X_base_sum= df_merged_sum[[\n", + " 'n_routes',\n", + " 'daily_arrivals',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].fillna(0)\n", + "\n", + "X_base_sum= X_base_sum.rename(columns={\n", + " 'n_routes': 'n_routes',\n", + " 'daily_arrivals': 'n_arrivals'\n", + "})\n", + "\n", + "X_base_sum[\"log_arrivals\"] = np.log(X_base_sum[\"n_arrivals\"] + 1)\n", + "\n", + "X_base_sum= sm.add_constant(X_base_sum)\n", + "X_base_sum= X_base_sum[nb_model_extended_final.model.exog_names]\n", + "df_merged_sum['pred_baseline'] = nb_model_extended_final.predict(X_base_sum)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "611110b9-128d-4786-aecb-2c975694c515", + "metadata": {}, + "outputs": [], + "source": [ + "X_scn_sum = df_merged_sum[[\n", + " 'n_routes_scn',\n", + " 'daily_arrivals_scn',\n", + " 'total_pop_adj',\n", + " 'workers_with_no_car_adj',\n", + " 'total_youth_adj',\n", + " 'total_seniors_adj',\n", + " 'inc_total_lowincome_adj',\n", + "]].copy()\n", + "\n", + "\n", + "\n", + "X_scn_sum = X_scn_sum .rename(columns={\n", + " 'n_routes_scn': 'n_routes',\n", + " 'daily_arrivals_scn': 'n_arrivals'\n", + " \n", + "})\n", + "X_scn_sum[\"log_arrivals\"] = np.log(X_scn_sum[\"n_arrivals\"] + 1)\n", + "\n", + "X_scn_sum = sm.add_constant(X_scn_sum)\n", + "X_scn_sum = X_scn_sum[nb_model_extended_final.model.exog_names]\n", + "df_merged_sum['pred_scenario'] = nb_model_extended_final.predict(X_scn_sum)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "3266086c-cbc8-4de8-9578-9f9a439f5a1b", + "metadata": {}, + "outputs": [], + "source": [ + "df_merged_sum['ridership_change'] = (\n", + " df_merged_sum['pred_scenario'] - df_merged_sum['pred_baseline']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "353d4272-1726-4bba-951c-d841fc3a1eb4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "148.34520757542504\n" + ] + } + ], + "source": [ + "ridership_change_sum= df_merged_sum[\"ridership_change\"].sum()\n", + "print(ridership_change_sum)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "31629603-bab4-47b1-aecb-15ccec4f5b82", + "metadata": {}, + "outputs": [], + "source": [ + "## Querying NTD Ridership Data for SMBTD" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "626d10e4-cb01-483d-8de0-14d941d9fe2f", + "metadata": {}, + "outputs": [], + "source": [ + "with db_engine.connect() as connection:\n", + " query = \"\"\"\n", + " SELECT\n", + " agency, ntd_id, reporter_type, report_year, primary_uza_name,\n", + " unlinked_passenger_trips_upt, agency_voms\n", + " FROM \n", + " cal-itp-data-infra.mart_ntd.dim_annual_service_agencies\n", + " WHERE \n", + " state = 'CA'\n", + " AND report_year = 2024\n", + " AND agency IN (\n", + " 'Santa Barbara Metropolitan Transit District'\n", + " )\n", + " \"\"\"\n", + " ridership_data = pd.read_sql(query, connection)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "584b4bff-2f6e-4942-b3e8-63ed5f5a7dc0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agencyntd_idreporter_typereport_yearprimary_uza_nameunlinked_passenger_trips_uptagency_voms
0Santa Barbara Metropolitan Transit District90020Full Reporter2024Santa Barbara, CA4684415.071.0
\n", + "
" + ], + "text/plain": [ + " agency ntd_id reporter_type \\\n", + "0 Santa Barbara Metropolitan Transit District 90020 Full Reporter \n", + "\n", + " report_year primary_uza_name unlinked_passenger_trips_upt agency_voms \n", + "0 2024 Santa Barbara, CA 4684415.0 71.0 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c3b3410-d75e-4c7f-8b12-801cc3b67d56", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Pyproject Local (use-venv)", + "language": "python", + "name": "pyproject_local_kernel_use_venv" + }, + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 0734159e39161fd505635b5a2f18d67a46520218 Mon Sep 17 00:00:00 2001 From: Shweta Adhikari Date: Mon, 11 May 2026 22:51:23 +0000 Subject: [PATCH 21/21] UCSB and Burbank Ridership Estimation --- .../03_Stops_Ridership_Data_weekday.ipynb | 20 - .../03_Stops_Ridership_Data_weekend.ipynb | 2000 +++++++++++++++++ .../07_Model_exploration.ipynb | 19 - .../Saturday.ipynb | 46 +- .../Sunday.ipynb | 46 +- .../Weekday.ipynb | 2 +- .../UCSB_Ridership_Exploration/Saturday.ipynb | 2 +- .../UCSB_Ridership_Exploration/Sunday.ipynb | 2 +- .../UCSB_Ridership_Exploration/Weekday.ipynb | 2 +- 9 files changed, 2006 insertions(+), 133 deletions(-) create mode 100644 ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekend.ipynb diff --git a/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb index a6b5b964d..4bd5f89d7 100644 --- a/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekday.ipynb @@ -23,26 +23,6 @@ "- Combine results: All matched data is concatenated into a final dataset linking weekday ridership with stops and routes." ] }, - { - "cell_type": "code", - "execution_count": 1, - "id": "31d211db-9c1f-4619-9629-fd9496fd6d80", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", - "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "pip install shared_utils" - ] - }, { "cell_type": "code", "execution_count": 2, diff --git a/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekend.ipynb b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekend.ipynb new file mode 100644 index 000000000..3e32df1e2 --- /dev/null +++ b/ahsc_grant/ahsc_grant_cycle2/03_Stops_Ridership_Data_weekend.ipynb @@ -0,0 +1,2000 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "be979b05-8272-4269-b01e-10e06524ae1d", + "metadata": {}, + "source": [ + "# Weekend- Saturday and Sunday Ridership and Stop Data Cleaning, Standardization, and Integration Pipeline" + ] + }, + { + "cell_type": "markdown", + "id": "c2edd251-6ad0-4c4f-b0f9-61bfd7a9e8c5", + "metadata": {}, + "source": [ + "This script prepares and integrates transit ridership data with stop-level data by cleaning inconsistencies, applying agency-specific fixes, and merging datasets using appropriate matching strategies.\n", + "\n", + "**Summary**\n", + "- Load & filter data: Ridership data is standardized and filtered to weekend; stop data is aligned with consistent agency names.\n", + "- Clean data: Fixes inconsistencies in route_id, stop_id, and stop_code across agencies to improve matching.\n", + "- Split by strategy: Agencies are grouped based on how they can be matched (stop_id, stop_code, or stop_name).\n", + "- Merge datasets: Each group is merged with stop data, keeping only successful matches.\n", + "- Combine results: All matched data is concatenated into a final dataset linking weekend ridership with stops and routes." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "30b8121b-0a3c-48ca-8b13-097ff9bbde4f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: Could not find a version that satisfies the requirement shared_utils (from versions: none)\u001b[0m\u001b[31m\n", + "\u001b[0m\u001b[31mERROR: No matching distribution found for shared_utils\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install shared_utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8c5d1801-7a94-4b4d-a6eb-283679c550c5", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing necessary package \n", + "import pandas as pd \n", + "import geopandas as gpd\n", + "import numpy as np\n", + "import google.auth\n", + "import os\n", + "import gcsfs\n", + "from calitp_data_analysis.sql import get_engine\n", + "from calitp_data_analysis import utils\n", + "db_engine = get_engine()\n", + "credentials, project = google.auth.default()\n", + "from pandas.tseries.holiday import USFederalHolidayCalendar\n", + "fs = gcsfs.GCSFileSystem()\n", + "from rapidfuzz import process, fuzz\n", + "\n", + "pd.set_option('display.max_columns', None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bd64654b-8554-477e-a3d3-3063b0cc8d85", + "metadata": {}, + "outputs": [], + "source": [ + "# Read in ridership data \n", + "GCS_FILE_PATH = 'gs://calitp-analytics-data/data-analyses/ahsc_grant/ahsc_riderships/AHSC_2026'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "abf11dea-bea0-46d2-bd45-b42c9aa3209f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 13051 entries, 0 to 13050\n", + "Data columns (total 10 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 13051 non-null object \n", + " 1 stop_id 13021 non-null object \n", + " 2 stop_name 9357 non-null object \n", + " 3 stop_lat 3613 non-null float64\n", + " 4 stop_lon 3613 non-null float64\n", + " 5 day_type 13051 non-null object \n", + " 6 average_daily_boardings 13051 non-null float64\n", + " 7 average_daily_alightings 10963 non-null float64\n", + " 8 start_date 13051 non-null object \n", + " 9 end_date 13051 non-null object \n", + "dtypes: float64(4), object(6)\n", + "memory usage: 1019.7+ KB\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namestop_idstop_namestop_latstop_londay_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
0Samtrans3450171000 El Camino Real-Menlo College37.457839-122.190513Saturday9.416.22025-08-012025-08-31
1Golden Gate Transit404691011 Andersen DrNaNNaNSaturday3.50.02025-09-012025-09-30
\n", + "
" + ], + "text/plain": [ + " organization_name stop_id stop_name stop_lat \\\n", + "0 Samtrans 345017 1000 El Camino Real-Menlo College 37.457839 \n", + "1 Golden Gate Transit 40469 1011 Andersen Dr NaN \n", + "\n", + " stop_lon day_type average_daily_boardings average_daily_alightings \\\n", + "0 -122.190513 Saturday 9.4 16.2 \n", + "1 NaN Saturday 3.5 0.0 \n", + "\n", + " start_date end_date \n", + "0 2025-08-01 2025-08-31 \n", + "1 2025-09-01 2025-09-30 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data_saturday = (\n", + " pd.read_csv(f\"{GCS_FILE_PATH}/ridership_all.csv\")\n", + " .sort_values(by='stop_name')\n", + " .loc[lambda df: df['day_type'] == \"Saturday\"]\n", + " .reset_index(drop=True)\n", + ")\n", + "\n", + "ridership_data_saturday.info()\n", + "ridership_data_saturday.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a4922137-6a9c-434a-8e31-27efa2237f65", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 12526 entries, 0 to 12525\n", + "Data columns (total 10 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 organization_name 12526 non-null object \n", + " 1 stop_id 12496 non-null object \n", + " 2 stop_name 8879 non-null object \n", + " 3 stop_lat 3528 non-null float64\n", + " 4 stop_lon 3528 non-null float64\n", + " 5 day_type 12526 non-null object \n", + " 6 average_daily_boardings 12526 non-null float64\n", + " 7 average_daily_alightings 10443 non-null float64\n", + " 8 start_date 12526 non-null object \n", + " 9 end_date 12526 non-null object \n", + "dtypes: float64(4), object(6)\n", + "memory usage: 978.7+ KB\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namestop_idstop_namestop_latstop_londay_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
0Samtrans3450171000 El Camino Real-Menlo College37.457839-122.190513Sunday8.815.62025-08-012025-08-31
1Golden Gate Transit404691011 Andersen DrNaNNaNSunday1.50.02025-09-012025-09-30
\n", + "
" + ], + "text/plain": [ + " organization_name stop_id stop_name stop_lat \\\n", + "0 Samtrans 345017 1000 El Camino Real-Menlo College 37.457839 \n", + "1 Golden Gate Transit 40469 1011 Andersen Dr NaN \n", + "\n", + " stop_lon day_type average_daily_boardings average_daily_alightings \\\n", + "0 -122.190513 Sunday 8.8 15.6 \n", + "1 NaN Sunday 1.5 0.0 \n", + "\n", + " start_date end_date \n", + "0 2025-08-01 2025-08-31 \n", + "1 2025-09-01 2025-09-30 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data_sunday = (\n", + " pd.read_csv(f\"{GCS_FILE_PATH}/ridership_all.csv\")\n", + " .sort_values(by='stop_name')\n", + " .loc[lambda df: df['day_type'] == \"Sunday\"]\n", + " .reset_index(drop=True)\n", + ")\n", + "\n", + "ridership_data_sunday.info()\n", + "ridership_data_sunday.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8efb19c6-0558-4065-8838-387193202235", + "metadata": {}, + "outputs": [], + "source": [ + "agency_mapping = {\n", + " 'Gold Coast Schedule': 'Gold Coast Transit',\n", + " 'Burbank Schedule': 'City of Burbank',\n", + " 'SamTrans Schedule': 'Samtrans',\n", + " 'Big Blue Bus Schedule': 'Big Blue Bus',\n", + " 'Foothill Schedule': 'Foothill Transit',\n", + " 'San Diego Schedule': 'SDMTS',\n", + " 'Golden Gate Park Shuttle Schedule': 'Golden Gate Park Shuttle',\n", + " 'Fresno Schedule': 'Fresno County',\n", + " 'OmniTrans Schedule': 'Omnitrans',\n", + " 'Sacramento Schedule': 'SacRT Bus',\n", + " 'BART Schedule': 'San Francisco Bay Area Rapid Transit District',\n", + " 'Riverside Schedule': 'Riverside Transit',\n", + " 'OCTA Schedule': 'Orange County Transportation Authority',\n", + " 'Santa Cruz Schedule': 'Santa Cruz Metro',\n", + " 'Long Beach Schedule': 'Long Beach Transit',\n", + " 'Caltrain Schedule': 'Caltrain',\n", + " 'SBMTD Schedule': 'SBMTD',\n", + " 'Culver City Schedule': 'Culver City Bus',\n", + " 'Golden Gate Transit Schedule': 'Golden Gate Transit'\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ac519099-d597-4cd4-81cd-dfa6ca61bcef", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 23157 entries, 0 to 23156\n", + "Data columns (total 9 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 feed_key 23157 non-null object\n", + " 1 stop_id 23157 non-null object\n", + " 2 stop_name 23157 non-null object\n", + " 3 n_arrivals 23157 non-null int64 \n", + " 4 n_routes 23157 non-null int64 \n", + " 5 stop_code 20417 non-null object\n", + " 6 pt_geom 23157 non-null object\n", + " 7 name 23157 non-null object\n", + " 8 organization_name 23157 non-null object\n", + "dtypes: int64(2), object(7)\n", + "memory usage: 1.6+ MB\n" + ] + } + ], + "source": [ + "stops_aggregated_saturday = (\n", + " pd.read_csv(f\"{GCS_FILE_PATH}/stops_aggregated_saturday.csv\")\n", + " .assign(organization_name=lambda df: df['name'].map(agency_mapping))\n", + ")\n", + "\n", + "stops_aggregated_sunday = (\n", + " pd.read_csv(f\"{GCS_FILE_PATH}/stops_aggregated_sunday.csv\")\n", + " .assign(organization_name=lambda df: df['name'].map(agency_mapping))\n", + ")\n", + "\n", + "stops_aggregated_saturday.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e74568f7-cd5d-4559-831a-bee5a5213c85", + "metadata": {}, + "outputs": [], + "source": [ + "# Upon checking, found that Some stops are unmatched because Big Blue Bus ridership uses negative stop_codes.\n", + "# These correspond to valid stop_codes in the stop data (same route and stop_name).\n", + "# The mapping below replaces negative ridership stop_codes with the correct stop_codes\n", + "# so they can match during the merge.\n", + "\n", + "for ridership_df, stops_df in [\n", + " (ridership_data_saturday, stops_aggregated_saturday),\n", + " (ridership_data_sunday, stops_aggregated_sunday),\n", + "]:\n", + "\n", + " # --- Big Blue Bus stop_id mapping ---\n", + " mask_bb = ridership_df['organization_name'] == 'Big Blue Bus'\n", + "\n", + " ridership_df.loc[mask_bb, 'stop_id'] = (\n", + " ridership_df.loc[mask_bb, 'stop_id']\n", + " .astype(int)\n", + " .replace({\n", + " -4: 'MNSWSMNF',\n", + " -5: '014MCHNN',\n", + " -6: '014PCONF',\n", + " -7: '014PCOSF',\n", + " -8: '017PRLNN',\n", + " -9: '017PRLSF',\n", + " -13: 'PRL014EF',\n", + " -14: 'PRL014WN',\n", + " -18: 'SMCBUNPL'\n", + " })\n", + " .astype(str)\n", + " )\n", + "\n", + " # clean stop_code\n", + " stops_df.loc[\n", + " stops_df['organization_name'] == 'Big Blue Bus',\n", + " 'stop_code'\n", + " ] = (\n", + " stops_df.loc[\n", + " stops_df['organization_name'] == 'Big Blue Bus',\n", + " 'stop_code'\n", + " ]\n", + " .astype(str)\n", + " .str.strip()\n", + " )\n", + "\n", + "# Upon checking, found that Gold Coast Schedule stop_ids have some issues:\n", + "# 1. Some stop_ids contain ':' which prevents correct merge with ridership data\n", + "# 2. Two specific stop_ids ('GCTDMAIN1' and 'SAClMAI1') do not match the ridership data stop_ids ('GCTDMAIN' and 'SACLMAI1')\n", + "# So we remove colons and update these two stop_ids before merging\n", + "for df in [stops_aggregated_saturday, stops_aggregated_sunday]:\n", + " mask = df['name'] == \"Gold Coast Schedule\"\n", + " \n", + " df.loc[mask, 'stop_id'] = (\n", + " df.loc[mask, 'stop_id']\n", + " .str.replace(':', '', regex=False)\n", + " .replace({\n", + " 'GCTDMAIN1': 'GCTDMAIN',\n", + " 'SAClMAI1': 'SACLMAI1'\n", + " })\n", + " )\n", + "\n", + "\n", + "# Upon checking found that Long Beach transit stop_id has leading zeros like 0110, 0220 and so on\n", + "agencies = [\n", + " 'Long Beach Transit', 'Orange County Transportation Authority'\n", + "]\n", + "\n", + "for df in [stops_aggregated_saturday, stops_aggregated_sunday]:\n", + " for agency in agencies:\n", + " mask = df['organization_name'] == agency\n", + "\n", + " df.loc[mask, 'stop_id'] = (\n", + " df.loc[mask, 'stop_id']\n", + " .astype(str)\n", + " .str.replace(r'^0+', '', regex=True)\n", + " )\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1ec4daba-75b7-4cd3-a564-93e046e0f661", + "metadata": {}, + "outputs": [], + "source": [ + "master_cols = [\n", + " \"organization_name\",\n", + " \"feed_key\",\n", + " \"stop_id\",\n", + " \"stop_name\",\n", + " \"stop_code\",\n", + " \"n_arrivals\",\n", + " \"n_routes\",\n", + " \"pt_geom\",\n", + " \"day_type\",\n", + " \"average_daily_boardings\",\n", + " \"average_daily_alightings\",\n", + " \"start_date\",\n", + " \"end_date\"\n", + "]\n", + "\n", + "def standardize_columns(df, master_cols):\n", + " \n", + " # add missing columns\n", + " for col in master_cols:\n", + " if col not in df.columns:\n", + " df[col] = None\n", + "\n", + " # keep only master columns and order them\n", + " return df[master_cols]" + ] + }, + { + "cell_type": "markdown", + "id": "fb81a833-7587-4d2a-a229-55487ba0f905", + "metadata": {}, + "source": [ + "### Agencies with Saturday and Sunday Data, Categorized by Match Type: route*stop_id, stop_code, or stop_name" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f9fc3b52-3032-47ff-aead-95ed20f81b6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Samtrans', 'Golden Gate Transit', 'Long Beach Transit', 'SDMTS',\n", + " 'Golden Gate Park Shuttle', 'Fresno County',\n", + " 'San Francisco Bay Area Rapid Transit District', 'Big Blue Bus',\n", + " 'Caltrain', 'Culver City Bus', 'Foothill Transit',\n", + " 'Riverside Transit'], dtype=object)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ridership_data_sunday.organization_name.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "88622faa-c479-4513-8dcd-21da66c6f5a8", + "metadata": {}, + "outputs": [], + "source": [ + "agencies__with_stop_id_match = [\n", + " 'Foothill Transit',\n", + " # 'Gold Coast Transit',\n", + " 'Golden Gate Transit',\n", + " 'Long Beach Transit',\n", + " # 'Orange County Transportation Authority',\n", + " # 'Omnitrans', \n", + " # 'SacRT Bus',\n", + " 'Samtrans',\n", + " 'SDMTS',\n", + " 'San Francisco Bay Area Rapid Transit District', \n", + " 'Fresno County',\n", + " # 'SBMTD'\n", + "]\n", + "\n", + "agencies_with_stop_code_match = [\n", + " 'Culver City Bus',\n", + " 'Big Blue Bus',\n", + " 'Riverside Transit',\n", + " # 'Santa Cruz Metro',\n", + " 'Golden Gate Park Shuttle',\n", + "]\n", + "\n", + "\n", + "\n", + "agencies_with_stop_name_match = [\n", + " 'Caltrain',\n", + " # 'City of Burbank',\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "04e2f962-e27a-4064-9fa3-9236f86f2c68", + "metadata": {}, + "outputs": [], + "source": [ + "# Split Ridership by categories\n", + "\n", + "def split_ridership_by_agency(ridership_df, agency_groups):\n", + " subsets = {}\n", + " for name, agencies in agency_groups.items():\n", + " subsets[name] = ridership_df[ridership_df['organization_name'].isin(agencies)]\n", + " return subsets\n", + "\n", + "agency_groups = {\n", + " 'with_stop_id_match': agencies__with_stop_id_match,\n", + " 'with_stop_code_match': agencies_with_stop_code_match,\n", + " 'with_stop_name_match': agencies_with_stop_name_match\n", + "}\n", + "\n", + "ridership_subsets_saturday = split_ridership_by_agency(ridership_data_saturday, agency_groups)\n", + "ridership_subsets_sunday = split_ridership_by_agency(ridership_data_sunday, agency_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "acfbeb33-8e8f-4137-9b09-a969637ffcc8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 9867\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "# Merge without route_id\n", + "merge_with_stop_id_match_saturday = (\n", + " pd.merge(\n", + " ridership_subsets_saturday['with_stop_id_match'], \n", + " stops_aggregated_saturday,\n", + " on=['organization_name', 'stop_id'],\n", + " how='left',\n", + " indicator=True,\n", + " suffixes=('_x','_y')\n", + " )\n", + " .rename(columns={\n", + " 'stop_name_y': 'stop_name',\n", + " })\n", + ")\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_id_matched_saturday = merge_with_stop_id_match_saturday[merge_with_stop_id_match_saturday['_merge'] == 'both'].copy()\n", + "\n", + "merge_counts_saturday = merge_with_stop_id_matched_saturday['_merge'].value_counts()\n", + "print(merge_counts_saturday)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "40261614-ac2d-4a68-9c97-9dec29c8a44c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
2692Samtransdb97cc02836aa5f0cf647d80160b23ec341160El Camino Real & Warren Rd34116068.02.0POINT(-122.340884 37.573359)Saturday14.8888897.7777782025-08-012025-08-31
1398Long Beach Transitcddd375786d835389a7beb96323699071412Broadway & Molino NW141231.02.0POINT(-118.160887 33.765977)Saturday8.5890970.0000002024-07-012025-06-30
8206Long Beach Transitcddd375786d835389a7beb96323699071236Willow & Long Beach Blvd SE123637.03.0POINT(-118.189054 33.804312)Saturday170.58109767.0803542024-07-012025-06-30
2342SDMTS1fff52f9349da228c56eef492df5001b30675E Palomar St & Davies Dr3067544.02.0POINT(-117.02353235 32.61424315)Saturday4.7548717.0657672024-09-012025-01-25
1940Long Beach Transitcddd375786d835389a7beb96323699071432Clark & Pageantry NE143215.01.0POINT(-118.133915 33.813385)Saturday0.0000002.7952762024-07-012025-06-30
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id \\\n", + "2692 Samtrans db97cc02836aa5f0cf647d80160b23ec 341160 \n", + "1398 Long Beach Transit cddd375786d835389a7beb9632369907 1412 \n", + "8206 Long Beach Transit cddd375786d835389a7beb9632369907 1236 \n", + "2342 SDMTS 1fff52f9349da228c56eef492df5001b 30675 \n", + "1940 Long Beach Transit cddd375786d835389a7beb9632369907 1432 \n", + "\n", + " stop_name stop_code n_arrivals n_routes \\\n", + "2692 El Camino Real & Warren Rd 341160 68.0 2.0 \n", + "1398 Broadway & Molino NW 1412 31.0 2.0 \n", + "8206 Willow & Long Beach Blvd SE 1236 37.0 3.0 \n", + "2342 E Palomar St & Davies Dr 30675 44.0 2.0 \n", + "1940 Clark & Pageantry NE 1432 15.0 1.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "2692 POINT(-122.340884 37.573359) Saturday 14.888889 \n", + "1398 POINT(-118.160887 33.765977) Saturday 8.589097 \n", + "8206 POINT(-118.189054 33.804312) Saturday 170.581097 \n", + "2342 POINT(-117.02353235 32.61424315) Saturday 4.754871 \n", + "1940 POINT(-118.133915 33.813385) Saturday 0.000000 \n", + "\n", + " average_daily_alightings start_date end_date \n", + "2692 7.777778 2025-08-01 2025-08-31 \n", + "1398 0.000000 2024-07-01 2025-06-30 \n", + "8206 67.080354 2024-07-01 2025-06-30 \n", + "2342 7.065767 2024-09-01 2025-01-25 \n", + "1940 2.795276 2024-07-01 2025-06-30 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_id_matched_saturday = standardize_columns(merge_with_stop_id_matched_saturday, master_cols)\n", + "merge_with_stop_id_matched_saturday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e49d872d-a977-451a-acfc-42ec43cac3a5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 9360\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "# Merge without route_id\n", + "merge_with_stop_id_match_sunday = (\n", + " pd.merge(\n", + " ridership_subsets_sunday['with_stop_id_match'], \n", + " stops_aggregated_sunday,\n", + " on=['organization_name', 'stop_id'],\n", + " how='left',\n", + " indicator=True,\n", + " suffixes=('_x','_y')\n", + " )\n", + " .rename(columns={\n", + " 'stop_name_y': 'stop_name',\n", + " })\n", + ")\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_id_matched_sunday = merge_with_stop_id_match_sunday[merge_with_stop_id_match_sunday['_merge'] == 'both'].copy()\n", + "\n", + "merge_counts_sunday = merge_with_stop_id_matched_sunday['_merge'].value_counts()\n", + "print(merge_counts_sunday)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "47977bdf-bbda-4410-b13d-f03d9f2a9a2a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
2616Fresno County23d1893801eefadf7544a670a3bcd31265FRESNO YOSEMITE INTL - WB6546.02.0POINT(-119.719794 36.76923)Sunday6.6610815.6997532024-09-012025-08-31
8513Foothill Transit661ef844bdaa253e8b950740f76061b11577Golden Springs Dr and Racquet Club Dr S157770.01.0POINT(-117.818375 34.008648)Sunday6.1346151.7500002024-07-012025-06-30
4302Fresno County23d1893801eefadf7544a670a3bcd3122347NE BRAWLEY - CLINTON234724.01.0POINT(-119.862145 36.772174)Sunday4.57960010.9894602024-09-012025-08-31
9174Foothill Transit661ef844bdaa253e8b950740f76061b12950Cogswell Rd and Lambert Ave W295026.01.0POINT(-118.010985 34.079321)Sunday3.1707320.2195122024-07-012025-06-30
6861Long Beach Transitcddd375786d835389a7beb963236990787Santa Fe & 23rd NE008749.02.0POINT(-118.215315 33.799215)Sunday48.67591635.1794412024-07-012025-06-30
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id \\\n", + "2616 Fresno County 23d1893801eefadf7544a670a3bcd312 65 \n", + "8513 Foothill Transit 661ef844bdaa253e8b950740f76061b1 1577 \n", + "4302 Fresno County 23d1893801eefadf7544a670a3bcd312 2347 \n", + "9174 Foothill Transit 661ef844bdaa253e8b950740f76061b1 2950 \n", + "6861 Long Beach Transit cddd375786d835389a7beb9632369907 87 \n", + "\n", + " stop_name stop_code n_arrivals n_routes \\\n", + "2616 FRESNO YOSEMITE INTL - WB 65 46.0 2.0 \n", + "8513 Golden Springs Dr and Racquet Club Dr S 1577 70.0 1.0 \n", + "4302 NE BRAWLEY - CLINTON 2347 24.0 1.0 \n", + "9174 Cogswell Rd and Lambert Ave W 2950 26.0 1.0 \n", + "6861 Santa Fe & 23rd NE 0087 49.0 2.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "2616 POINT(-119.719794 36.76923) Sunday 6.661081 \n", + "8513 POINT(-117.818375 34.008648) Sunday 6.134615 \n", + "4302 POINT(-119.862145 36.772174) Sunday 4.579600 \n", + "9174 POINT(-118.010985 34.079321) Sunday 3.170732 \n", + "6861 POINT(-118.215315 33.799215) Sunday 48.675916 \n", + "\n", + " average_daily_alightings start_date end_date \n", + "2616 5.699753 2024-09-01 2025-08-31 \n", + "8513 1.750000 2024-07-01 2025-06-30 \n", + "4302 10.989460 2024-09-01 2025-08-31 \n", + "9174 0.219512 2024-07-01 2025-06-30 \n", + "6861 35.179441 2024-07-01 2025-06-30 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_id_matched_sunday = standardize_columns(merge_with_stop_id_matched_sunday, master_cols)\n", + "merge_with_stop_id_matched_sunday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "f35ae6ee-5206-4455-b5fe-f0a843c6d381", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 2933\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "merge_with_stop_code_match_saturday = (\n", + " pd.merge(\n", + " ridership_subsets_saturday['with_stop_code_match'], \n", + " stops_aggregated_saturday,\n", + " left_on=['organization_name', 'stop_id'], # ridership stop_id\n", + " right_on=['organization_name', 'stop_code'], # stops table stop_code\n", + " how='left',\n", + " indicator=True\n", + " )\n", + " .rename(columns={\n", + " 'stop_id_y': 'stop_id',\n", + " 'stop_name_y': 'stop_name',\n", + " })\n", + ")\n", + "\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_code_matched_saturday = merge_with_stop_code_match_saturday[merge_with_stop_code_match_saturday['_merge'] == 'both'].copy()\n", + "\n", + "# Check merge results\n", + "merge_counts_saturday = merge_with_stop_code_matched_saturday['_merge'].value_counts()\n", + "print(merge_counts_saturday)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "37304651-48b6-4fcb-b542-966c8b949575", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
2231Riverside Transit6eb2b575bee157dace7a2c7155d3cb251346Alta Murrieta + Brownestone249020.01.0POINT(-117.169753 33.564895)Saturday1.571429NaN2025-01-012025-10-31
262Culver City Busf6774d861953d4f4cdcffec95e2652c7712Kinross Ave/Veteran Ave90966.01.0POINT(-118.447925 34.059517)Saturday54.5000002.72025-07-142025-08-25
254Culver City Busf6774d861953d4f4cdcffec95e2652c7469Jefferson Blvd/Ballona Ln44045.02.0POINT(-118.395673 33.998464)Saturday1.0000002.72025-07-142025-08-25
2751Riverside Transit6eb2b575bee157dace7a2c7155d3cb252352San Jacinto + Esplanade336716.01.0POINT(-116.958691 33.773419)Saturday4.424242NaN2025-01-012025-10-31
2030Riverside Transit6eb2b575bee157dace7a2c7155d3cb251063Limonite + Baldwin222223.02.0POINT(-117.467472 33.975816)Saturday2.615385NaN2025-01-012025-10-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id \\\n", + "2231 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1346 \n", + "262 Culver City Bus f6774d861953d4f4cdcffec95e2652c7 712 \n", + "254 Culver City Bus f6774d861953d4f4cdcffec95e2652c7 469 \n", + "2751 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 2352 \n", + "2030 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1063 \n", + "\n", + " stop_name stop_code n_arrivals n_routes \\\n", + "2231 Alta Murrieta + Brownestone 2490 20.0 1.0 \n", + "262 Kinross Ave/Veteran Ave 909 66.0 1.0 \n", + "254 Jefferson Blvd/Ballona Ln 440 45.0 2.0 \n", + "2751 San Jacinto + Esplanade 3367 16.0 1.0 \n", + "2030 Limonite + Baldwin 2222 23.0 2.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "2231 POINT(-117.169753 33.564895) Saturday 1.571429 \n", + "262 POINT(-118.447925 34.059517) Saturday 54.500000 \n", + "254 POINT(-118.395673 33.998464) Saturday 1.000000 \n", + "2751 POINT(-116.958691 33.773419) Saturday 4.424242 \n", + "2030 POINT(-117.467472 33.975816) Saturday 2.615385 \n", + "\n", + " average_daily_alightings start_date end_date \n", + "2231 NaN 2025-01-01 2025-10-31 \n", + "262 2.7 2025-07-14 2025-08-25 \n", + "254 2.7 2025-07-14 2025-08-25 \n", + "2751 NaN 2025-01-01 2025-10-31 \n", + "2030 NaN 2025-01-01 2025-10-31 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_code_matched_saturday = standardize_columns(merge_with_stop_code_matched_saturday, master_cols)\n", + "merge_with_stop_code_matched_saturday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a4bcbbfc-be6b-44b1-8c0e-80218d263b7b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 2931\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "merge_with_stop_code_match_sunday = (\n", + " pd.merge(\n", + " ridership_subsets_sunday['with_stop_code_match'], \n", + " stops_aggregated_sunday,\n", + " left_on=['organization_name', 'stop_id'], # ridership stop_id\n", + " right_on=['organization_name', 'stop_code'], # stops table stop_code\n", + " how='left',\n", + " indicator=True\n", + " )\n", + " .rename(columns={\n", + " 'stop_id_y': 'stop_id',\n", + " 'stop_name_y': 'stop_name',\n", + " })\n", + ")\n", + "\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_code_matched_sunday = merge_with_stop_code_match_sunday[merge_with_stop_code_match_sunday['_merge'] == 'both'].copy()\n", + "\n", + "# Check merge results\n", + "merge_counts_sunday = merge_with_stop_code_matched_sunday['_merge'].value_counts()\n", + "print(merge_counts_sunday)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "270678cf-5306-462e-8312-6b7febdad048", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
2019Riverside Transit6eb2b575bee157dace7a2c7155d3cb251057Van Buren + Central221610.01.0POINT(-117.457745 33.956212)Sunday1.000000NaN2025-01-012025-10-31
2880Riverside Transit6eb2b575bee157dace7a2c7155d3cb251157Tustin + Chestnut36239.01.0POINT(-117.835954 33.813054)Sunday10.611111NaN2025-01-012025-10-31
2569Riverside Transit6eb2b575bee157dace7a2c7155d3cb251833Gilman Springs + Soboba293211.01.0POINT(-116.973719 33.819547)Sunday1.000000NaN2025-01-012025-10-31
870Big Blue Bus7a3f513c343b16a30c135ed7d332b6d6539WILSHIRE BLVD & BROCKTON AVE217230.01.0POINT(-118.465271 34.045761)Sunday9.12282315.5017512024-08-012025-11-30
1719Riverside Transit6eb2b575bee157dace7a2c7155d3cb25661La Sierra + Norwood185617.01.0POINT(-117.491593 33.923631)Sunday5.333333NaN2025-01-012025-10-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id \\\n", + "2019 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1057 \n", + "2880 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1157 \n", + "2569 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 1833 \n", + "870 Big Blue Bus 7a3f513c343b16a30c135ed7d332b6d6 539 \n", + "1719 Riverside Transit 6eb2b575bee157dace7a2c7155d3cb25 661 \n", + "\n", + " stop_name stop_code n_arrivals n_routes \\\n", + "2019 Van Buren + Central 2216 10.0 1.0 \n", + "2880 Tustin + Chestnut 3623 9.0 1.0 \n", + "2569 Gilman Springs + Soboba 2932 11.0 1.0 \n", + "870 WILSHIRE BLVD & BROCKTON AVE 2172 30.0 1.0 \n", + "1719 La Sierra + Norwood 1856 17.0 1.0 \n", + "\n", + " pt_geom day_type average_daily_boardings \\\n", + "2019 POINT(-117.457745 33.956212) Sunday 1.000000 \n", + "2880 POINT(-117.835954 33.813054) Sunday 10.611111 \n", + "2569 POINT(-116.973719 33.819547) Sunday 1.000000 \n", + "870 POINT(-118.465271 34.045761) Sunday 9.122823 \n", + "1719 POINT(-117.491593 33.923631) Sunday 5.333333 \n", + "\n", + " average_daily_alightings start_date end_date \n", + "2019 NaN 2025-01-01 2025-10-31 \n", + "2880 NaN 2025-01-01 2025-10-31 \n", + "2569 NaN 2025-01-01 2025-10-31 \n", + "870 15.501751 2024-08-01 2025-11-30 \n", + "1719 NaN 2025-01-01 2025-10-31 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_code_matched_sunday = standardize_columns(merge_with_stop_code_matched_sunday, master_cols)\n", + "merge_with_stop_code_matched_sunday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d22aa571-c4a7-4243-b123-3fad9e0abac3", + "metadata": {}, + "outputs": [], + "source": [ + "cols_to_keep = [\n", + " 'feed_key', 'stop_id',\n", + " 'n_arrivals', 'n_routes', 'pt_geom'\n", + "]\n", + "\n", + "def fuzzy_match_subset(left_df, right_df, threshold=80):\n", + " results = []\n", + "\n", + " for org in left_df['organization_name'].unique():\n", + " left_group = left_df[left_df['organization_name'] == org]\n", + " right_group = right_df[right_df['organization_name'] == org]\n", + "\n", + " if right_group.empty:\n", + " continue\n", + "\n", + " choices = right_group['stop_name'].tolist()\n", + "\n", + " for idx, row in left_group.iterrows():\n", + " match, score, match_idx = process.extractOne(\n", + " row['stop_name'],\n", + " choices,\n", + " scorer=fuzz.token_set_ratio\n", + " )\n", + "\n", + " if score >= threshold:\n", + " matched_row = right_group.iloc[match_idx]\n", + " subset = matched_row[cols_to_keep].to_dict()\n", + " matched_name = matched_row['stop_name']\n", + " else:\n", + " subset = {col: None for col in cols_to_keep}\n", + " matched_name = None\n", + "\n", + " subset.update({\n", + " 'left_index': idx,\n", + " 'original_stop_name': row['stop_name'],\n", + " 'matched_stop_name': matched_name,\n", + " 'score': score\n", + " })\n", + "\n", + " results.append(subset)\n", + "\n", + " return pd.DataFrame(results)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "de85a96d-5126-495e-94e8-56a6ffa0e87c", + "metadata": {}, + "outputs": [], + "source": [ + "matches_df_saturday = fuzzy_match_subset(\n", + " ridership_subsets_saturday['with_stop_name_match'], \n", + " stops_aggregated_saturday,\n", + " threshold=80\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "d26f1fd5-236b-4e67-a72a-64a3cf052e7a", + "metadata": {}, + "outputs": [], + "source": [ + "matches_df_sunday = fuzzy_match_subset(\n", + " ridership_subsets_sunday['with_stop_name_match'], \n", + " stops_aggregated_sunday,\n", + " threshold=80\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "48845e8d-e460-485b-a886-065a6849e1c8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 30\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "merge_with_stop_name_match_saturday = (\n", + " ridership_subsets_saturday['with_stop_name_match']\n", + " .merge(\n", + " matches_df_saturday,\n", + " left_index=True,\n", + " right_on='left_index',\n", + " how='left',\n", + " indicator=True\n", + " )\n", + " .rename(columns={\n", + " 'stop_id_y': 'stop_id',\n", + " })\n", + ")\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_name_matched_saturday = merge_with_stop_name_match_saturday[merge_with_stop_name_match_saturday['_merge'] == 'both'].copy()\n", + "\n", + "merge_counts_saturday = merge_with_stop_name_matched_saturday['_merge'].value_counts()\n", + "print(merge_counts_saturday)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9c3d48ca-060d-4e1a-9b14-0067885cb543", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
18Caltrainf189d5677d4a106b98585f3c5d4fd42c70141Redwood CityNone33.01.0POINT(-122.231936 37.486159)Saturday799.444990NaN2023-11-012025-07-31
29Caltrainf189d5677d4a106b98585f3c5d4fd42c70271TamienNone17.01.0POINT(-121.883721 37.31174)Saturday58.297552NaN2023-11-012025-07-31
11Caltrainf189d5677d4a106b98585f3c5d4fd42c70111HillsdaleNone33.01.0POINT(-122.301496637 37.542607659)Saturday486.553577NaN2023-11-012025-07-31
17Caltrainf189d5677d4a106b98585f3c5d4fd42c70171Palo AltoNone33.01.0POINT(-122.164614 37.443475)Saturday1220.752048NaN2023-11-012025-07-31
3CaltrainNoneNoneBlossom HillNoneNaNNaNNoneSaturday0.199045NaN2023-11-012025-07-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id stop_name \\\n", + "18 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70141 Redwood City \n", + "29 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70271 Tamien \n", + "11 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70111 Hillsdale \n", + "17 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70171 Palo Alto \n", + "3 Caltrain None None Blossom Hill \n", + "\n", + " stop_code n_arrivals n_routes pt_geom \\\n", + "18 None 33.0 1.0 POINT(-122.231936 37.486159) \n", + "29 None 17.0 1.0 POINT(-121.883721 37.31174) \n", + "11 None 33.0 1.0 POINT(-122.301496637 37.542607659) \n", + "17 None 33.0 1.0 POINT(-122.164614 37.443475) \n", + "3 None NaN NaN None \n", + "\n", + " day_type average_daily_boardings average_daily_alightings start_date \\\n", + "18 Saturday 799.444990 NaN 2023-11-01 \n", + "29 Saturday 58.297552 NaN 2023-11-01 \n", + "11 Saturday 486.553577 NaN 2023-11-01 \n", + "17 Saturday 1220.752048 NaN 2023-11-01 \n", + "3 Saturday 0.199045 NaN 2023-11-01 \n", + "\n", + " end_date \n", + "18 2025-07-31 \n", + "29 2025-07-31 \n", + "11 2025-07-31 \n", + "17 2025-07-31 \n", + "3 2025-07-31 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_name_matched_saturday = standardize_columns(merge_with_stop_name_matched_saturday, master_cols)\n", + "merge_with_stop_name_matched_saturday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "29ab380e-b0ab-4060-8864-b348afb2b60d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_merge\n", + "both 30\n", + "left_only 0\n", + "right_only 0\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "merge_with_stop_name_match_sunday = (\n", + " ridership_subsets_sunday['with_stop_name_match']\n", + " .merge(\n", + " matches_df_sunday,\n", + " left_index=True,\n", + " right_on='left_index',\n", + " how='left',\n", + " indicator=True\n", + " )\n", + " .rename(columns={\n", + " 'stop_id_y': 'stop_id',\n", + " })\n", + ")\n", + "\n", + "# Keep only rows where the merge matched in both DataFrames\n", + "merge_with_stop_name_matched_sunday = merge_with_stop_name_match_sunday[merge_with_stop_name_match_sunday['_merge'] == 'both'].copy()\n", + "\n", + "merge_counts_sunday = merge_with_stop_name_matched_sunday['_merge'].value_counts()\n", + "print(merge_counts_sunday)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "454b7feb-1e5d-42c9-8ea8-1488c07ac847", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
organization_namefeed_keystop_idstop_namestop_coden_arrivalsn_routespt_geomday_typeaverage_daily_boardingsaverage_daily_alightingsstart_dateend_date
16Caltrainf189d5677d4a106b98585f3c5d4fd42c70211Mountain ViewNone33.01.0POINT(-122.075956 37.394459)Sunday784.332601NaN2023-11-012025-07-31
7CaltrainNoneNoneCapitolNoneNaNNaNNoneSunday0.000000NaN2023-11-012025-07-31
25Caltrainf189d5677d4a106b98585f3c5d4fd42c70091San MateoNone33.01.0POINT(-122.323851 37.568087)Sunday478.543508NaN2023-11-012025-07-31
4Caltrainf189d5677d4a106b98585f3c5d4fd42c70071BroadwayNone33.01.0POINT(-122.36265 37.58764)Sunday66.493661NaN2023-11-012025-07-31
24CaltrainNoneNoneSan MartinNoneNaNNaNNoneSunday0.000000NaN2023-11-012025-07-31
\n", + "
" + ], + "text/plain": [ + " organization_name feed_key stop_id stop_name \\\n", + "16 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70211 Mountain View \n", + "7 Caltrain None None Capitol \n", + "25 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70091 San Mateo \n", + "4 Caltrain f189d5677d4a106b98585f3c5d4fd42c 70071 Broadway \n", + "24 Caltrain None None San Martin \n", + "\n", + " stop_code n_arrivals n_routes pt_geom day_type \\\n", + "16 None 33.0 1.0 POINT(-122.075956 37.394459) Sunday \n", + "7 None NaN NaN None Sunday \n", + "25 None 33.0 1.0 POINT(-122.323851 37.568087) Sunday \n", + "4 None 33.0 1.0 POINT(-122.36265 37.58764) Sunday \n", + "24 None NaN NaN None Sunday \n", + "\n", + " average_daily_boardings average_daily_alightings start_date end_date \n", + "16 784.332601 NaN 2023-11-01 2025-07-31 \n", + "7 0.000000 NaN 2023-11-01 2025-07-31 \n", + "25 478.543508 NaN 2023-11-01 2025-07-31 \n", + "4 66.493661 NaN 2023-11-01 2025-07-31 \n", + "24 0.000000 NaN 2023-11-01 2025-07-31 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merge_with_stop_name_matched_sunday = standardize_columns(merge_with_stop_name_matched_sunday, master_cols)\n", + "merge_with_stop_name_matched_sunday.sample(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "e7214415-e9cf-461b-9a31-1b3685b627b4", + "metadata": {}, + "outputs": [], + "source": [ + "all_ridership_stop_trips_saturday_data = pd.concat([\n", + " merge_with_stop_id_matched_saturday,\n", + " merge_with_stop_code_matched_saturday,\n", + " merge_with_stop_name_matched_saturday \n", + "], ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "771a6534-c6be-411f-8aeb-150fe409abdf", + "metadata": {}, + "outputs": [], + "source": [ + "all_ridership_stop_trips_sunday_data = pd.concat([\n", + " merge_with_stop_id_matched_sunday,\n", + " merge_with_stop_code_matched_sunday,\n", + " merge_with_stop_name_matched_sunday \n", + "], ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "04f9dfaa-36f2-4a22-9529-241fa55e4f19", + "metadata": {}, + "outputs": [], + "source": [ + "all_ridership_stop_trips_saturday_data.to_csv(f\"{GCS_FILE_PATH}/ridership_trips_routes_saturday.csv\", index=False)\n", + "all_ridership_stop_trips_sunday_data.to_csv(f\"{GCS_FILE_PATH}/ridership_trips_routes_saturday.csv\", index=False)" + ] + } + ], + "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.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb b/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb index a01eda157..8d4480107 100644 --- a/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/07_Model_exploration.ipynb @@ -8,25 +8,6 @@ "Ridership ≈ Service × Demand × Accessibility" ] }, - { - "cell_type": "code", - "execution_count": 1, - "id": "1a78891f-6527-4e6b-a9a0-a0987c17ec23", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/jovyan/data-analyses/.venv/bin/python: No module named pip\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "pip install shared_utils" - ] - }, { "cell_type": "code", "execution_count": 2, diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb index dd2a890dd..9f6b7c639 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Saturday.ipynb @@ -5,51 +5,7 @@ "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", "metadata": {}, "source": [ - "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" - ] - }, - { - "cell_type": "markdown", - "id": "e5b6b27c-db78-4a8f-90cf-f89bccd474e2", - "metadata": {}, - "source": [ - "1. Load Stop-Level Data\n", - "2. Prepare Data for Negative Binomial Regression\n", - "- Create a log-transformed variable for arrivals: log_arrivals = log(n_arrivals + 1)\n", - "- Select explanatory variables: number of routes, arrivals, population-adjusted measures.\n", - "3. Get Stop-Level Data for Existing Operators\n", - "- Query GTFS scheduled stop data across Burbank, Metro, and Metrolink\n", - "- Load new stop lists for Orange and Blue route changes.\n", - "4. Assign Missing Coordinates for New Stops\n", - "5. Spatial Buffering and ACS Demographic Overlays\n", - "- Convert new stops to UTM projection, buffer, overlay census tract and compute proportional demographic counts using area ratios\n", - "6. Match New Stops to Nearest Existing Stops\n", - "- Inherit baseline n_routes and daily_arrivals where applicable.\n", - "7. Construct Baseline and Scenario Service Variables\n", - "- New stops assigned 1 route in scenario, 0 in baseline.\n", - "- Scenario arrivals set to baseline arrivals + 51 additional trips.\n", - "8. Generate Prediction Inputs\n", - "- Create scenario (X_scn) and baseline (X_base) covariate matrices.\n", - "9. Predict Ridership Effects\n", - "- Apply fitted NB model to scenario and baseline inputs.\n", - "- Compute predicted ridership change as: pred_scenario - pred_baseline\n", - "- Sum stop-level changes to obtain systemwide change\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n" + "# BurbankBus Ridership Modeling Saturday: Analytical Summary and Interpretation" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb index 83742e658..550a24f2f 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Sunday.ipynb @@ -5,51 +5,7 @@ "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", "metadata": {}, "source": [ - "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" - ] - }, - { - "cell_type": "markdown", - "id": "e5b6b27c-db78-4a8f-90cf-f89bccd474e2", - "metadata": {}, - "source": [ - "1. Load Stop-Level Data\n", - "2. Prepare Data for Negative Binomial Regression\n", - "- Create a log-transformed variable for arrivals: log_arrivals = log(n_arrivals + 1)\n", - "- Select explanatory variables: number of routes, arrivals, population-adjusted measures.\n", - "3. Get Stop-Level Data for Existing Operators\n", - "- Query GTFS scheduled stop data across Burbank, Metro, and Metrolink\n", - "- Load new stop lists for Orange and Blue route changes.\n", - "4. Assign Missing Coordinates for New Stops\n", - "5. Spatial Buffering and ACS Demographic Overlays\n", - "- Convert new stops to UTM projection, buffer, overlay census tract and compute proportional demographic counts using area ratios\n", - "6. Match New Stops to Nearest Existing Stops\n", - "- Inherit baseline n_routes and daily_arrivals where applicable.\n", - "7. Construct Baseline and Scenario Service Variables\n", - "- New stops assigned 1 route in scenario, 0 in baseline.\n", - "- Scenario arrivals set to baseline arrivals + 51 additional trips.\n", - "8. Generate Prediction Inputs\n", - "- Create scenario (X_scn) and baseline (X_base) covariate matrices.\n", - "9. Predict Ridership Effects\n", - "- Apply fitted NB model to scenario and baseline inputs.\n", - "- Compute predicted ridership change as: pred_scenario - pred_baseline\n", - "- Sum stop-level changes to obtain systemwide change\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " \n", - "\n", - "\n", - "\n", - "\n" + "# BurbankBus Ridership Modeling Sunday: Analytical Summary and Interpretation" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb index c87366cf7..7b97dc833 100644 --- a/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/Burbank_Ridership_Exploration/Weekday.ipynb @@ -5,7 +5,7 @@ "id": "bea06387-a0e0-4766-8a17-ac0de2b240e1", "metadata": {}, "source": [ - "# BurbankBus Ridership Modeling: Analytical Summary and Interpretation" + "# BurbankBus Ridership Modeling Weekday: Analytical Summary and Interpretation" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb index e627444c1..a9ac85227 100644 --- a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Saturday.ipynb @@ -5,7 +5,7 @@ "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", "metadata": {}, "source": [ - "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + "# UCSB Ridership Modeling Saturday: Analytical Summary and Interpretation" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb index a04995e3a..d2b4dd336 100644 --- a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Sunday.ipynb @@ -5,7 +5,7 @@ "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", "metadata": {}, "source": [ - "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + "# UCSB Ridership Modeling Sunday: Analytical Summary and Interpretation" ] }, { diff --git a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb index 663ee1621..fb7b7617b 100644 --- a/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb +++ b/ahsc_grant/ahsc_grant_cycle2/UCSB_Ridership_Exploration/Weekday.ipynb @@ -5,7 +5,7 @@ "id": "8f2fa784-6182-4039-b267-3ad12c5640f5", "metadata": {}, "source": [ - "# UCSB Ridership Modeling: Analytical Summary and Interpretation" + "# UCSB Ridership Modeling Weekday: Analytical Summary and Interpretation" ] }, {