diff --git a/model-files/RunModel.bat b/model-files/RunModel.bat
index 78e32fb77..e2033167e 100644
--- a/model-files/RunModel.bat
+++ b/model-files/RunModel.bat
@@ -10,6 +10,7 @@
::
::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
:: ------------------------------------------------------------------------------------------------------
::
:: Step 1: Set the necessary path variables
@@ -158,12 +159,6 @@ copy INPUT\logsums logsums\
python CTRAMP\scripts\preprocess\RuntimeConfiguration.py
if ERRORLEVEL 1 goto done
-:: For the "Per-Mile Tolling on Congested Freeways" in the Draft Blueprint
-if NOT %PROJECT%==DBP (set UseTollDist=No)
-if %PROJECT%==DBP (
- if %UseTollDist%==Yes (python CTRAMP\scripts\preprocess\updateUECsToUseTollDist.py)
-)
-
:: Set the prices in the roadway network (convert csv to dbf first)
python CTRAMP\scripts\preprocess\csvToDbf.py hwy\tolls.csv hwy\tolls.dbf
IF ERRORLEVEL 1 goto done
@@ -385,6 +380,9 @@ del *.prn
del *.script.*
del *.script
+:: run QA/QC for PBA50
+call Run_QAQC
+
:: Success target and message
:success
ECHO FINISHED SUCCESSFULLY!
diff --git a/model-files/SetUpModel_PBA50.bat b/model-files/SetUpModel_PBA50.bat
new file mode 100644
index 000000000..c546f5178
--- /dev/null
+++ b/model-files/SetUpModel_PBA50.bat
@@ -0,0 +1,243 @@
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 1: Specify file locations
+::
+:: ------------------------------------------------------------------------------------------------------
+
+:: set the location of the model run folder on M; this is where the input and output directories will be copied to
+set M_DIR=M:\Application\Model One\RTP2021\Blueprint\2050_TM152_DBP_PlusCrossing_07
+
+:: Should strategies be included? AddStrategies=Yes for Project runs; AddStrategies=No for NoProject runs.
+set AddStrategies=Yes
+
+:: set the location of the Travel Model Release
+set GITHUB_DIR=\\tsclient\X\travel-model-one-1.5.2.1
+
+:: set the location of the networks (make sure the network version, year and variant are correct)
+set INPUT_NETWORK=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT\Networks\BlueprintNetworks_15\net_2050_Blueprint Plus Crossing
+
+:: set the location of the populationsim and land use inputs (make sure the land use version and year are correct)
+set INPUT_POPLU=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT\PopSyn_n_LandUse\POPLU_v170_01\2050
+set UrbanSimScenario=s23
+
+:: set the location of the "input development" directory where other inputs are stored
+set INPUT_DEVELOPMENT_DIR=M:\Application\Model One\RTP2021\Blueprint\INPUT_DEVELOPMENT
+
+:: set the location of the previous run (where warmstart inputs will be copied)
+:: the INPUT folder of the previous run will also be used as the base for the compareinputs log
+set PREV_RUN_DIR=M:\Application\Model One\RTP2021\Blueprint\2050_TM152_DBP_PlusCrossing_06
+
+:: set the name and location of the properties file
+:: often the properties file is on master during the active application phase
+set PARAMS=\\tsclient\X\travel-model-one-master\config\params_PBA50_Blueprint2050.properties
+
+:: set the location of the overrides directory (for Blueprint strategies)
+set BP_OVERRIDE_DIR=\\tsclient\M\Application\Model One\RTP2021\Blueprint\travel-model-overrides
+
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 2: Set up folder structure and copy CTRAMP
+::
+:: ------------------------------------------------------------------------------------------------------
+
+SET computer_prefix=%computername:~0,4%
+
+:: copy over CTRAMP
+mkdir CTRAMP\model
+mkdir CTRAMP\runtime
+mkdir CTRAMP\scripts
+mkdir CTRAMP\scripts\metrics
+c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\model" CTRAMP\model
+c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\runtime" CTRAMP\runtime
+c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\model-files\scripts" CTRAMP\scripts
+c:\windows\system32\Robocopy.exe /E "%GITHUB_DIR%\utilities\RTP\metrics" CTRAMP\scripts\metrics
+copy /Y "%GITHUB_DIR%\utilities\monitoring\notify_slack.py" CTRAMP\scripts
+copy /Y "%GITHUB_DIR%\model-files\RunIteration.bat" CTRAMP
+copy /Y "%GITHUB_DIR%\model-files\RunModel.bat" .
+copy /Y "%GITHUB_DIR%\model-files\RunLogsums.bat" .
+copy /Y "%GITHUB_DIR%\model-files\RunCoreSummaries.bat" .
+copy /Y "%GITHUB_DIR%\utilities\RTP\RunMetrics.bat" .
+copy /Y "%GITHUB_DIR%\utilities\RTP\RunScenarioMetrics.bat" .
+copy /Y "%GITHUB_DIR%\utilities\RTP\ExtractKeyFiles.bat" .
+::copy /Y "%GITHUB_DIR%\utilities\check-setupmodel\Check_SetupModelLog.py" .
+
+if "%COMPUTER_PREFIX%" == "WIN-" (copy "%GITHUB_DIR%\utilities\monitoring\notify_slack.py" "CTRAMP\scripts\notify_slack.py")
+if "%COMPUTER_PREFIX%" == "WIN-" set HOST_IP_ADDRESS=10.0.0.59
+
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 3: copy over input from INPUT_DEVELOPMENT or the previous run
+:: (or sometimes a special location for the properties file)
+::
+:: ------------------------------------------------------------------------------------------------------
+
+:: networks
+c:\windows\system32\Robocopy.exe /E "%INPUT_NETWORK%\hwy" INPUT\hwy
+c:\windows\system32\Robocopy.exe /E "%INPUT_NETWORK%\trn" INPUT\trn
+
+:: popsyn and land use
+c:\windows\system32\Robocopy.exe /E "%INPUT_POPLU%\popsyn" INPUT\popsyn
+c:\windows\system32\Robocopy.exe /E "%INPUT_POPLU%\landuse" INPUT\landuse
+
+:: nonres
+c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\nonres\nonres_00" INPUT\nonres
+
+:: logsums and metrics
+c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\logsums_dummies" INPUT\logsums
+c:\windows\system32\Robocopy.exe /E "%INPUT_DEVELOPMENT_DIR%\metrics" INPUT\metrics
+
+:: warmstart (copy from the previous run)
+mkdir INPUT\warmstart\main
+mkdir INPUT\warmstart\nonres
+copy /Y "%PREV_RUN_DIR%\OUTPUT\main\*.tpp" INPUT\warmstart\main
+copy /Y "%PREV_RUN_DIR%\OUTPUT\nonres\*.tpp" INPUT\warmstart\nonres
+del INPUT\warmstart\nonres\ixDaily2015.tpp
+del INPUT\warmstart\nonres\ixDailyx4.tpp
+
+:: the properties file
+copy /Y "%PARAMS%" INPUT\params.properties
+
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 4: Overrides for Blueprint Strategies
+::
+:: ------------------------------------------------------------------------------------------------------
+if %AddStrategies%==No goto DoneAddingStrategies
+:: ------
+:: Blueprint Regional Transit Fare Policy
+:: ------
+:: Same as PPA project 6100_TransitFare_Integration
+copy /Y "%BP_OVERRIDE_DIR%\Regional_Transit_Fare_Policy\TransitSkims.job" CTRAMP\scripts\skims
+
+:: means-based fare discount -- 50% off for Q1 -- are config in the parmas.properties file (see step 1)
+
+:: ------
+:: Blueprint Vision Zero
+:: ------
+:: Start year (freeways): 2030
+:: Start year (local streets): 2025
+
+:: Figure out the model year
+set MODEL_DIR=%CD%
+set PROJECT_DIR=%~p0
+set PROJECT_DIR2=%PROJECT_DIR:~0,-1%
+:: get the base dir only
+for %%f in (%PROJECT_DIR2%) do set myfolder=%%~nxf
+:: the first four characters are model year
+set MODEL_YEAR=%myfolder:~0,4%
+
+set /a MODEL_YEAR_NUM=%MODEL_YEAR% 2>nul
+
+if %MODEL_YEAR_NUM%==2025 (copy /Y "%BP_OVERRIDE_DIR%\Vision_Zero\SpeedCapacity_1hour_2025.block" "CTRAMP\scripts\block\SpeedCapacity_1hour.block")
+if %MODEL_YEAR_NUM% GEQ 2030 (copy /Y "%BP_OVERRIDE_DIR%\Vision_Zero\SpeedCapacity_1hour_2030to2050.block" "CTRAMP\scripts\block\SpeedCapacity_1hour.block")
+
+:: ------
+:: Blueprint Per-Mile Tolling on Congested Freeways
+:: ------
+:: no override needed, as we confirmed that all ODs have free paths
+:: see asana task: https://app.asana.com/0/572982923864207/1174201042245385
+
+:: toll rate discount -- 50% discount for Q1 and Q2 -- are specified in the properties file (see step 1)
+
+:: ------
+:: Complete Streets
+:: ------
+:: https://app.asana.com/0/403262763383022/1160600926245407
+:: implemented as an UEC override for now; pass the bike constant via params when there is time
+copy /Y "%BP_OVERRIDE_DIR%\Complete_Streets_Network\ModeChoice_%MODEL_YEAR_NUM%.xls" CTRAMP\model\ModeChoice.xls
+copy /Y "%BP_OVERRIDE_DIR%\Complete_Streets_Network\TripModeChoice_%MODEL_YEAR_NUM%.xls" CTRAMP\model\TripModeChoice.xls
+
+:DoneAddingStrategies
+
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 5: Patches to Travel Model Release
+::
+:: ------------------------------------------------------------------------------------------------------
+:: in case the TM release is behind, this is where we copy the most up-to-date scripts from master
+set GITHUB_MASTER=\\tsclient\X\travel-model-one-master
+
+:: runmodel is behind
+:: because I took out the lines related to UseTollDist
+copy /Y "%GITHUB_MASTER%\model-files\RunModel.bat" .
+
+:: some minor updates to trips.rdata for the tnc electrification calculator
+copy /y "%GITHUB_MASTER%\model-files\scripts\core_summaries\CoreSummaries.R" CTRAMP\scripts\core_summaries\
+
+:: some minor updates to ExtractKeyFiles
+copy /Y "%GITHUB_MASTER%\utilities\RTP\ExtractKeyFiles.bat" .
+
+:: added AV share =30% to auto_ownership UECs
+copy /y "%GITHUB_MASTER%\model-files\model\AutoOwnership.xls" CTRAMP\model\AutoOwnership.xls
+
+:: add run_qaqc.bat
+copy /Y "%GITHUB_MASTER%\utilities\RTP\QAQC\Run_QAQC.bat" .
+
+:: add a process to check setupmodel
+copy /Y "%GITHUB_MASTER%\utilities\check-setupmodel\Check_SetupModelLog.py" .
+
+:: ------------------------------------------------------------------------------------------------------
+::
+:: Step 6: copy information back to the M drive for run management
+::
+:: ------------------------------------------------------------------------------------------------------
+
+:: copy the INPUT folder back to M for record keeping
+
+echo %date%
+SET mm=%date:~4,2%
+SET dd=%date:~7,2%
+SET yy=%date:~12,2%
+echo %time%
+SET hh=%time:~0,2%
+SET min=%time:~3,2%
+SET ss=%time:~6,2%
+
+if exist "%M_DIR%\INPUT" (
+ :: do not overwrite existing INPUT folders on M
+ c:\windows\system32\Robocopy.exe /E "INPUT" "%M_DIR%\INPUT_%mm%%dd%%yy%_%hh%%min%%ss%"
+) else (
+ c:\windows\system32\Robocopy.exe /E "INPUT" "%M_DIR%\INPUT"
+)
+
+Set dir1="%M_DIR%\INPUT"
+Set dir2="%PREV_RUN_DIR%\INPUT"
+robocopy.exe %dir1% %dir2% /e /l /ns /njs /ndl /fp /log:"%M_DIR%\CompareInputs.txt"
+
+::----------------------------------------------
+:: add folder name to the command prompt window
+::----------------------------------------------
+set MODEL_DIR=%CD%
+set PROJECT_DIR=%~p0
+set PROJECT_DIR2=%PROJECT_DIR:~0,-1%
+:: get the base dir only
+for %%f in (%PROJECT_DIR2%) do set myfolder=%%~nxf
+
+title %myfolder%
+
+
+:: copy this batch file itself to M
+set CopyOfSetupModel="SetUpModel_" %myfolder%".txt"
+copy SetUpModel.bat "%M_DIR%\%CopyOfSetupModel%"
+
+::-----------------------------------------------------------------------
+:: create a shortcut of the project directory using a temporary VBScript
+::-----------------------------------------------------------------------
+
+set TEMP_SCRIPT="%CD%\temp_script_to_create_shortcut.vbs"
+set PROJECT_DIR=%~p0
+set ALPHABET=%computername:~7,1%
+
+echo Set oWS = WScript.CreateObject("WScript.Shell") >> %TEMP_SCRIPT%
+echo sLinkFile = "%M_DIR%/model_run_on_%computername%.lnk" >> %TEMP_SCRIPT%
+echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %TEMP_SCRIPT%
+echo oLink.TargetPath = "M:" >> %TEMP_SCRIPT%
+echo oLink.TargetPath = "\\%computername%\%PROJECT_DIR%" >> %TEMP_SCRIPT%
+
+echo oLink.Save >> %TEMP_SCRIPT%
+
+::C:\Windows\SysWOW64\cscript.exe /nologo %TEMP_SCRIPT%
+C:\Windows\SysWOW64\cscript.exe %TEMP_SCRIPT%
+del %TEMP_SCRIPT%
+
+:end
\ No newline at end of file
diff --git a/model-files/model/AutoOwnership.xls b/model-files/model/AutoOwnership.xls
index dd0ef8214..30298bca0 100644
Binary files a/model-files/model/AutoOwnership.xls and b/model-files/model/AutoOwnership.xls differ
diff --git a/model-files/scripts/core_summaries/CoreSummaries.R b/model-files/scripts/core_summaries/CoreSummaries.R
index d31af8adc..4cc95a3e1 100644
--- a/model-files/scripts/core_summaries/CoreSummaries.R
+++ b/model-files/scripts/core_summaries/CoreSummaries.R
@@ -410,7 +410,7 @@ add_distance <- function(this_timeperiod, input_trips_or_tours) {
(distance_mode == 6) * s3Toll +
(distance_mode == 7) * walk +
(distance_mode == 8) * bike +
- (distance_mode >= 9) * da )
+ (distance_mode >= 9) * pmin(da, daToll))
relevant <- relevant %>%
@@ -595,7 +595,7 @@ add_active <- function(this_timeperiod, input_trips_or_tours) {
indiv_trips <- read.table(file=file.path(MAIN_DIR, paste0("indivTripData_",ITER,".csv")), header=TRUE, sep=",")
indiv_trips <- select(indiv_trips, hh_id, person_id, tour_id, orig_taz, dest_taz,
- trip_mode, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category) %>%
+ trip_mode, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category, avAvailable, sampleRate) %>%
mutate(tour_id = paste0("i",substr(tour_category,1,2),tour_id))
## Data Reads: Joint Trips and recode a few variables
@@ -604,7 +604,7 @@ indiv_trips <- select(indiv_trips, hh_id, person_id, tour_id, orig_taz, dest
joint_trips <- tbl_df(read.table(file=file.path(MAIN_DIR, paste0("jointTripData_",ITER,".csv")),
header=TRUE, sep=","))
joint_trips <- select(joint_trips, hh_id, tour_id, orig_taz, dest_taz, trip_mode,
- num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category) %>%
+ num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, tour_category, avAvailable, sampleRate) %>%
mutate(tour_id = paste0("j",substr(tour_category,1,2),tour_id))
print(paste("Read",prettyNum(nrow(joint_trips),big.mark=","),
@@ -715,7 +715,7 @@ if (JUST_MES=="1") {
joint_person_trips <- inner_join(joint_trips, joint_tour_persons, by=c("hh_id", "tour_id"))
# select out person_num and the person table columns
joint_person_trips <- select(joint_person_trips, hh_id, person_id, tour_id, orig_taz, dest_taz, trip_mode,
- num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id)
+ num_participants, tour_purpose, orig_purpose, dest_purpose, depart_hour, stop_id, avAvailable, sampleRate)
# cleanup
remove(joint_tours,joint_trips,joint_tour_persons)
diff --git a/utilities/RTP/ExtractKeyFiles.bat b/utilities/RTP/ExtractKeyFiles.bat
index d4f6fb718..affd69b39 100644
--- a/utilities/RTP/ExtractKeyFiles.bat
+++ b/utilities/RTP/ExtractKeyFiles.bat
@@ -59,8 +59,10 @@ copy main\tripsEV.tpp extractor\main
copy main\ShadowPricing_7.csv extractor\main
mkdir extractor\nonres
-copy nonres\ixDaily2015.tpp extractor\nonres
-copy nonres\ixDailyx4.tpp extractor\nonres
+copy nonres\ixDaily2015.tpp extractor\nonres
+copy nonres\ixDailyx4.tpp extractor\nonres
+copy nonres\tripsIX*.tpp extractor\nonres
+copy nonres\tripsTrk*.tpp extractor\nonres
:: copy skims\hwyskmEA.tpp extractor\emfac\hwyskmEA.tpp
:: copy skims\hwyskmAM.tpp extractor\emfac\hwyskmAM.tpp
@@ -105,6 +107,11 @@ copy logsums\person_workDCLogsum.csv extractor\logsums
copy logsums\mandatoryAccessibilities.csv extractor\logsums
copy logsums\nonMandatoryAccessibilities.csv extractor\logsums
+mkdir extractor\logsums\ForUrbanSim
+copy logsums\mandatoryAccessibilities.csv extractor\logsums\ForUrbanSim\mandatoryAccessibilities_%model_year%_%UrbanSimScenario%.csv
+copy logsums\nonMandatoryAccessibilities.csv extractor\logsums\ForUrbanSim\nonMandatoryAccessibilities_%model_year%_%UrbanSimScenario%.csv
+copy core_summaries\AccessibilityMarkets.csv extractor\logsums\ForUrbanSim\AccessibilityMarkets_%model_year%_%UrbanSimScenario%.csv
+
:: Core summaries
mkdir extractor\core_summaries
copy core_summaries\*.* extractor\core_summaries
@@ -123,4 +130,4 @@ if exist metrics\ITHIM (
echo ExtractKeyFiles into extractor for PBAU Complete
echo ENDED EXTRACTOR RUN %DATE% %TIME% >> logs\feedback.rpt
-:done
\ No newline at end of file
+:done
diff --git a/utilities/RTP/QAQC/Car_ownership_AVHV.r b/utilities/RTP/QAQC/Car_ownership_AVHV.r
new file mode 100644
index 000000000..cacda5ba6
--- /dev/null
+++ b/utilities/RTP/QAQC/Car_ownership_AVHV.r
@@ -0,0 +1,42 @@
+########################################################################################
+# AVs vs HVs ownership summary
+########################################################################################
+library(dplyr)
+
+# Remove all files from the workspace
+rm(list = ls())
+
+# Read the household data file
+Hhld_df <-read.csv(file="householdData_3.csv", header=TRUE, sep=",")
+
+M_DIR <- Sys.getenv("M_DIR")
+M_DIR <- gsub("\\\\","/",M_DIR) # switch slashes around
+
+
+Out_file <-file.path(M_DIR, "OUTPUT", "QAQC", "carown_summary.csv")
+
+Hhld_df$carown <- paste(Hhld_df$humanVehicles, "HV-", Hhld_df$autonomousVehicles, "AV", sep="")
+
+
+Hhld_df <- Hhld_df %>%
+ mutate(carown_labels = recode(carown,
+ "0HV-0AV" = "Alt01 0 car",
+ "1HV-0AV" = "Alt02 1 car - 1HV",
+ "0HV-1AV" = "Alt03 1 car - 1AV",
+ "2HV-0AV" = "Alt04 2 cars - 2HVs",
+ "0HV-2AV" = "Alt05 2 cars - 2AVs",
+ "1HV-1AV" = "Alt06 2 cars - 1HV1AV",
+ "3HV-0AV" = "Alt07 3 cars - 3HVs",
+ "0HV-3AV" = "Alt08 3 cars - 3AVs",
+ "2HV-1AV" = "Alt09 3 cars - 2HVs1AV",
+ "1HV-2AV" = "Alt10 3 cars - 1HV2AVs",
+ "4HV-0AV" = "Alt11 4 cars - 4HVs"))
+
+
+carown_summary <- Hhld_df %>%
+ group_by(carown_labels) %>%
+ summarise(nhhld = n())
+
+
+# write out the results
+write.table(carown_summary, file=(Out_file), sep = ",", row.names=FALSE, col.names=TRUE)
diff --git a/utilities/RTP/QAQC/Car_ownership_summary.xlsx b/utilities/RTP/QAQC/Car_ownership_summary.xlsx
new file mode 100644
index 000000000..dde8a1bbf
Binary files /dev/null and b/utilities/RTP/QAQC/Car_ownership_summary.xlsx differ
diff --git a/utilities/RTP/QAQC/MaxSpeeds.py b/utilities/RTP/QAQC/MaxSpeeds.py
new file mode 100644
index 000000000..46c64d3da
--- /dev/null
+++ b/utilities/RTP/QAQC/MaxSpeeds.py
@@ -0,0 +1,55 @@
+# Script that calculates maximum congested speeds from avgload5period.csv
+
+import os
+#from dbfread import DBF
+import csv
+#import copy
+import pandas as pd
+
+import os.path
+from os import path
+
+
+# Reads avgload5period.csv
+# To do: Check the location of the file and verify it can read it
+Cspd_df = pd.read_csv("../extractor/avgload5period.csv", sep=",")
+
+# Strip whitespace from column headers
+Cspd_df.columns = Cspd_df.columns.str.strip()
+
+# select only columns of interest
+Cspd_df = Cspd_df[['cspdEA','cspdAM','cspdMD','cspdPM','cspdEV']]
+AMspd_df = Cspd_df[['cspdAM']]
+
+print(Cspd_df)
+print (AMspd_df)
+
+# Calculate maximum congested speeds for each time period
+MaxCSpd = Cspd_df.max()
+MaxAMSpd = AMspd_df['cspdAM'].max()
+
+# Take this out on final version
+print MaxCSpd
+print MaxAMSpd
+
+# Output: File with the congested speeds by time period
+# To Do: Take out dtype line. Also check the location where to write the file
+s = open("Max Speeds.txt","w+")
+s.write("\nMaximum Congested speeds for run :\n\n%s" %MaxCSpd)
+s.close()
+
+# -----------------------
+# output AM maximum speed to the QAQC file
+# -----------------------
+# constructing DataFrame from a dictionary
+MaxSpeed_df = pd.DataFrame({"Max_AM_Speed":[MaxAMSpd]})
+
+output_filename = "PBA50_QAQC.csv"
+print output_filename
+#Test the else
+if path.exists(output_filename):
+ QAQC_df = pd.read_csv(os.path.join(os.getcwd(), "PBA50_QAQC.csv"), index_col=False, sep=",")
+ QAQC_df = pd.merge(QAQC_df, MaxSpeed_df, left_index=True, right_index=True)
+ QAQC_df.to_csv(output_filename, header=True, index=False)
+else:
+ MaxSpeed_df.to_csv(output_filename, header=True, index=False)
\ No newline at end of file
diff --git a/utilities/RTP/QAQC/Mode_share.twb b/utilities/RTP/QAQC/Mode_share.twb
new file mode 100644
index 000000000..e9a672995
--- /dev/null
+++ b/utilities/RTP/QAQC/Mode_share.twb
@@ -0,0 +1,1383 @@
+
+
+
+
+
+ <_.fcp.MarkAnimation.true...MarkAnimation />
+ <_.fcp.ObjectModelEncapsulateLegacy.true...ObjectModelEncapsulateLegacy />
+ <_.fcp.ObjectModelTableType.true...ObjectModelTableType />
+ <_.fcp.SchemaViewerObjectModel.true...SchemaViewerObjectModel />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='textscan.1qniclh0aso8ni1h40ogb19fvwsi' name='PerTripTravelTime.csv' table='[PerTripTravelTime#csv]' type='table'>
+
+
+
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='textscan.1qniclh0aso8ni1h40ogb19fvwsi' name='PerTripTravelTime.csv' table='[PerTripTravelTime#csv]' type='table'>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ [PerTripTravelTime.csv]
+
+ Count
+ true
+
+ "UTF-8"
+ "en_US"
+ ","
+ "true"
+ "en_US"
+ ""
+
+
+
+ incQ
+ 20
+ [incQ]
+ [PerTripTravelTime.csv]
+ incQ
+ 0
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ incQ_label
+ 129
+ [incQ_label]
+ [PerTripTravelTime.csv]
+ incQ_label
+ 1
+ string
+ Count
+ 1
+ 1073741823
+ true
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ trip_mode
+ 20
+ [trip_mode]
+ [PerTripTravelTime.csv]
+ trip_mode
+ 2
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ tour_purpose
+ 129
+ [tour_purpose]
+ [PerTripTravelTime.csv]
+ tour_purpose
+ 3
+ string
+ Count
+ 1
+ 1073741823
+ true
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ freq
+ 20
+ [freq]
+ [PerTripTravelTime.csv]
+ freq
+ 4
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ num_participants
+ 20
+ [num_participants]
+ [PerTripTravelTime.csv]
+ num_participants
+ 5
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ trvlTime
+ 5
+ [trvlTime]
+ [PerTripTravelTime.csv]
+ trvlTime
+ 6
+ real
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+ time_fail
+ 20
+ [time_fail]
+ [PerTripTravelTime.csv]
+ time_fail
+ 7
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelTableType.true...column caption='PerTripTravelTime.csv' datatype='table' name='[__tableau_internal_object_id__].[PerTripTravelTime.csv_673FDF9405A44F238B33E88B5852365F]' role='measure' type='quantitative' />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ([federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] / [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ([federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok] / [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk]
+ [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:Calculation_1803691713120124928:nk]
+ [federated.0hbp4c10i24vuj1am41z11wndbsr].[none:trip_mode:ok]
+
+
+
+
+
+
+
+
+ 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
+
+
+
diff --git a/utilities/RTP/QAQC/Report_TelecommuteLevel.py b/utilities/RTP/QAQC/Report_TelecommuteLevel.py
new file mode 100644
index 000000000..5fc2cfe10
--- /dev/null
+++ b/utilities/RTP/QAQC/Report_TelecommuteLevel.py
@@ -0,0 +1,65 @@
+
+# This script reads cdapResults, filters person type 1, does 1- M/(1-0.142). Output a single value.
+
+
+import pandas as pd
+
+import os.path
+from os import path
+
+# -----------------------
+# read inputs
+# -----------------------
+# read in cdap results
+cdapResults_df = pd.read_csv(os.path.join(os.getcwd(), "main", "cdapResults.csv"), index_col=False, sep=",")
+
+# -----------------------
+# data processing
+# -----------------------
+# select full-time workers
+ftworkers_df = cdapResults_df.loc[cdapResults_df['PersonType'] == 1]
+# count number of rows
+total_ftworkers = len(ftworkers_df.index)
+# print "total ft workers = " + str(total_ftworkers)
+
+# select full time workers with the Mandatory pattern
+ftworkersM_df = ftworkers_df.loc[ftworkers_df['ActivityString'] == 'M']
+# count number of rows
+total_ftworkersM = len(ftworkersM_df.index)
+# print "total ft workers with the Mandatory pattern = " + str(total_ftworkersM)
+
+# calculate the percentage of full-time workers making a mandatory tour, P(going to work)
+P_GoingToWork = float(total_ftworkersM) / float(total_ftworkers)
+print "percent of ft workers making a mandatory tour = " + str(P_GoingToWork)
+
+# calculate telecommute level
+# see discussion on Asana:
+# https://app.asana.com/0/403262763383022/1168279114282314
+# P(going to work) = P(not taking personal time or sick time) x P(not teleworking)
+# From 2015 ACS 5-year, P(telecommuting) = 5.8% (see M:\Development\Travel Model One\Calibration\Version 1.5.0\04 Coordinated Daily Activity Pattern\WorkedFromHome.xlsx)
+# From the IPA run 2015_TM152_IPA_16, P(going to work) =80.8%
+# Solving Ffor P(taking personal time or sick time):
+# 80.8% = (1-P(taking personal time or sick time) x (1-5.8%)
+# P(taking personal time or sick time) = 1 - (80.8% / (1-5.8%)) = 14.2%
+
+# Assume P(taking personal time or sick time) remains constant over time
+# Solving for P(telecommuting) for the model run
+# P(telecommuting) = 1 - (P(going to work) / P(not taking personal time or sick time)
+P_Telecommuting = 1 - (P_GoingToWork / (1-0.142))
+print "Telecommuting level = " + str(P_Telecommuting)
+
+# -----------------------
+# output a single number to the QAQC file
+# -----------------------
+# constructing DataFrame from a dictionary
+Telecommute_df = pd.DataFrame({"Telecommute_Level":[P_Telecommuting]})
+
+output_filename = "QAQC/PBA50_QAQC.csv"
+#if os.path.exists(os.path.join(os.getcwd(), "QAQC", "PBA50_QAQC.csv"):
+# if path.exists("B:/Projects/2035_TM152_DBP_Plus_08_TelecommuteX2/QAQC/PBA50_QAQC.csv"):
+if path.exists(output_filename):
+ QAQC_df = pd.read_csv(os.path.join(os.getcwd(), "QAQC", "PBA50_QAQC.csv"), index_col=False, sep=",")
+ QAQC_df = pd.merge(QAQC_df, Telecommute_df, left_index=True, right_index=True)
+ QAQC_df.to_csv(output_filename, header=True, index=False)
+else:
+ Telecommute_df.to_csv(output_filename, header=True, index=False)
diff --git a/utilities/RTP/QAQC/Run_QAQC.bat b/utilities/RTP/QAQC/Run_QAQC.bat
new file mode 100644
index 000000000..07bfa66d9
--- /dev/null
+++ b/utilities/RTP/QAQC/Run_QAQC.bat
@@ -0,0 +1,42 @@
+:: ---------------------------------
+::
+:: This batch script helps QAQC of
+:: - AV share
+:: - Telecommute
+:: - Bike mode share (for the Complete Street strategy)
+:: - Max congested speed (for the Vision Zero strategy)
+::
+:: ---------------------------------
+
+:: this script assumes that M_DIR is already been set in setupmodel.bat
+mkdir "%M_DIR%/OUTPUT/QAQC"
+
+:: ---------------------------------
+:: check household-owned AV share
+:: ---------------------------------
+
+set GITHUB_MASTER=\\mainmodel\MainModelShare\travel-model-one-master
+
+:: assume this script is being run from the directory with the full model run
+mkdir QAQC
+copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Car_ownership_AVHV.r" QAQC\Car_ownership_AVHV.r
+
+cd main
+call "%R_HOME%\bin\x64\Rscript.exe" ..\QAQC\Car_ownership_AVHV.R
+cd ..
+
+copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Car_ownership_summary.xlsx" "%M_DIR%\OUTPUT\QAQC\Car_ownership_summary.xlsx"
+
+:: ---------------------------------
+:: check telecommute
+:: ---------------------------------
+copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Report_TelecommuteLevel.py" QAQC\Report_TelecommuteLevel.py
+python QAQC/report_telecommutelevel.py
+cd QAQC
+copy /y "PBA50_QAQC.csv" "%M_DIR%\OUTPUT\QAQC\PBA50_QAQC.csv"
+cd ..
+
+:: ---------------------------------
+:: check bike mode share
+:: ---------------------------------
+copy /y "%GITHUB_MASTER%\utilities\RTP\QAQC\Mode_share.twb" "%M_DIR%\OUTPUT\QAQC\Mode_share.twb"
\ No newline at end of file
diff --git a/utilities/RTP/QAQC/SDflow.R b/utilities/RTP/QAQC/SDflow.R
new file mode 100644
index 000000000..36d62f428
--- /dev/null
+++ b/utilities/RTP/QAQC/SDflow.R
@@ -0,0 +1,93 @@
+library(tidyverse)
+
+# -----------
+# user inputs
+# -----------
+run_id <- "2050_TM152_DBP_NoProject_08"
+#run_id <- "2050_TM152_DBP_PlusCrossing_08"
+
+# selected_mode <- 11 # Walk to express bus
+selected_mode <- 12 # Walk to BART
+
+# -----------
+# processing the trip file
+# -----------
+# remove existing variables from the r environment
+rm(list=ls())
+
+PBA50Location <- "M:/Application/Model One/RTP2021/Blueprint/"
+trip_file <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", "trips.rdata")
+load(trip_file)
+
+taz_superdistrict_county_csv <- "//mainmodel/MainModelShare/travel-model-one-master/utilities/geographies/taz-superdistrict-county.csv"
+taz_superdistrict_county_df <- read.csv(file=taz_superdistrict_county_csv, header=TRUE, sep=",")
+
+superdistrict_county_csv <- "//mainmodel/MainModelShare/travel-model-one-master/utilities/geographies/superdistrict-county.csv"
+superdistrict_county_df <- read.csv(file=superdistrict_county_csv, header=TRUE, sep=",")
+
+
+trips <- trips %>% left_join(taz_superdistrict_county_df,
+ by=c("orig_taz"="ZONE"))
+
+trips <- trips %>% left_join(taz_superdistrict_county_df,
+ by=c("dest_taz"="ZONE"))
+
+trips <- trips %>%
+ rename(
+ SD_orig = SD.x,
+ COUNTY_orig = COUNTY.x,
+ SD_NAME_orig = SD_NAME.x,
+ COUNTY_NAME_orig = COUNTY_NAME.x,
+ SD_NUM_NAME_orig = SD_NUM_NAME.x,
+ COUNTY_NUM_NAME_orig = COUNTY_NUM_NAME.x,
+ SD_dest = SD.y,
+ COUNTY_dest = COUNTY.y,
+ SD_NAME_dest = SD_NAME.y,
+ COUNTY_NAME_dest = COUNTY_NAME.y,
+ SD_NUM_NAME_dest = SD_NUM_NAME.y,
+ COUNTY_NUM_NAME_dest = COUNTY_NUM_NAME.y
+ )
+
+
+od_SDflow_1mode_commute_df <- trips %>%
+ group_by(SD_orig, SD_dest) %>%
+ filter(trip_mode==selected_mode) %>%
+ filter(tour_purpose=="work_low" | tour_purpose=="work_med" | tour_purpose=="work_high" | tour_purpose=="work_very high" | tour_purpose=="university" | tour_purpose=="school_high" | tour_purpose=="school_grade") %>%
+ summarise(num_trips = sum(num_participants/sampleRate),
+ avg_dist = mean(distance))
+
+# make sure all SDs are listed
+od_SDflow_1mode_commute_df <- od_SDflow_1mode_commute_df %>% full_join(superdistrict_county_df,
+ by=c("SD_orig"="SD"))
+
+od_SDflow_1mode_commute_df <- od_SDflow_1mode_commute_df %>% full_join(superdistrict_county_df,
+ by=c("SD_dest"="SD"))
+
+
+# convert to matrix format
+od_SDflowMX_1mode_commute_df <- od_SDflow_1mode_commute_df %>%
+ group_by(SD_orig, SD_dest) %>%
+ summarise(var=sum(num_trips))%>%
+ spread(SD_dest, var)
+# %>%
+# kable()
+
+od_DistanceMX_1mode_commute_df <- od_SDflow_1mode_commute_df %>%
+ group_by(SD_orig, SD_dest) %>%
+ summarise(var=sum(avg_dist))%>%
+ spread(SD_dest, var)
+# %>%
+# kable()
+
+# replace na with 0
+od_SDflowMX_1mode_commute_df[is.na(od_SDflowMX_1mode_commute_df)] = 0
+
+OUTFILE1 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_SDflow_commute_mode", selected_mode, ".csv", sep = ""))
+write.csv(od_SDflow_1mode_commute_df, OUTFILE1, row.names = FALSE)
+
+OUTFILE2 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_SDflowMX_commute_mode", selected_mode, ".csv", sep = ""))
+write.csv(od_SDflowMX_1mode_commute_df, OUTFILE2, row.names = FALSE)
+
+OUTFILE3 <- file.path(PBA50Location, run_id, "OUTPUT/updated_output", paste("od_DistanceMX_commute_mode", selected_mode, ".csv", sep = ""))
+write.csv(od_DistanceMX_1mode_commute_df, OUTFILE3, row.names = FALSE)
+
diff --git a/utilities/RTP/QAQC/cdapResults.twb b/utilities/RTP/QAQC/cdapResults.twb
new file mode 100644
index 000000000..a7d92117f
--- /dev/null
+++ b/utilities/RTP/QAQC/cdapResults.twb
@@ -0,0 +1,500 @@
+
+
+
+
+
+ <_.fcp.MarkAnimation.true...MarkAnimation />
+ <_.fcp.ObjectModelEncapsulateLegacy.true...ObjectModelEncapsulateLegacy />
+ <_.fcp.ObjectModelTableType.true...ObjectModelTableType />
+ <_.fcp.SchemaViewerObjectModel.true...SchemaViewerObjectModel />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='textscan.1neehnt0zwvyyj1dr9vwh1a884ij' name='cdapResults.csv' table='[cdapResults#csv]' type='table'>
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='textscan.1neehnt0zwvyyj1dr9vwh1a884ij' name='cdapResults.csv' table='[cdapResults#csv]' type='table'>
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ [cdapResults.csv]
+
+ Count
+ true
+
+ "UTF-8"
+ "en_US"
+ ","
+ "true"
+ "en_US"
+ ""
+
+
+
+ HHID
+ 20
+ [HHID]
+ [cdapResults.csv]
+ HHID
+ 0
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data]
+
+
+ PersonID
+ 20
+ [PersonID]
+ [cdapResults.csv]
+ PersonID
+ 1
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data]
+
+
+ PersonNum
+ 20
+ [PersonNum]
+ [cdapResults.csv]
+ PersonNum
+ 2
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data]
+
+
+ PersonType
+ 20
+ [PersonType]
+ [cdapResults.csv]
+ PersonType
+ 3
+ integer
+ Sum
+ true
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data]
+
+
+ ActivityString
+ 129
+ [ActivityString]
+ [cdapResults.csv]
+ ActivityString
+ 4
+ string
+ Count
+ 1
+ 1073741823
+ true
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[Migrated Data]
+
+
+
+
+
+
+
+
+
+
+
+
+ <_.fcp.ObjectModelTableType.true...column caption='Migrated Data' datatype='table' name='[__tableau_internal_object_id__].[Migrated Data]' role='measure' type='quantitative' />
+
+
+
+
+ <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk]
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:ActivityString:nk]
+ [federated.05052ji0ijdq8k1ah1dh50u812vn].[none:PersonType:ok]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+ TkSuQmCC
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAACXBIWXMAAA7DAAAOwwHHb6hk
+ AAAFXUlEQVR4nO3VMQEAIAzAMMC/5yFjRxMF/XpnZg4AOW87AIAdBgAQZQAAUQYAEGUAAFEG
+ ABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAA
+ UQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBl
+ AABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYA
+ EGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABR
+ BgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUA
+ AFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQ
+ ZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEG
+ ABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAA
+ UQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBl
+ AABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYA
+ EGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABR
+ BgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUA
+ AFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQ
+ ZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEG
+ ABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAA
+ UQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBl
+ AABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYA
+ EGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABR
+ BgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUA
+ AFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQ
+ ZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEG
+ ABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAA
+ UQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBl
+ AABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEGABBlAABRBgAQZQAAUQYA
+ EGUAAFEGABBlAABRBgAQZQAAUQYAEGUAAFEfFxoG/IiMv0YAAAAASUVORK5CYII=
+
+
+
diff --git a/utilities/check-setupmodel/Check_SetupModelLog.py b/utilities/check-setupmodel/Check_SetupModelLog.py
new file mode 100644
index 000000000..ba2c338e7
--- /dev/null
+++ b/utilities/check-setupmodel/Check_SetupModelLog.py
@@ -0,0 +1,22 @@
+# this script checks for error messages in setupmodel.log
+# it looks for three most common errors during the model setup process:
+# (1) the system cannot find the file specified';
+# (2) the system cannot find the path specified';
+# (3) The network name cannot be found; and
+# (4) [SomeProcess] is not recognized as an internal or external command'
+
+import os
+
+ErrorInSetupModel=0
+
+with open('setupmodel.log') as f:
+ if 'The system cannot find' in f.read() or 'The network name cannot be found' in f.read() or 'not recognized as an internal or external command' in f.read():
+ ErrorInSetupModel=1
+ f.close()
+ print ("Setupmodel.log contains errors.")
+
+ # produce an assertion error if setupmodel.log cotains any of the two errors
+ assert ErrorInSetupModel==0
+
+ else:
+ print ("Setupmodel.log does not contain any obvious errors.")