From bbbbde9259749f8d0fe1d86425fd6e08d583044f Mon Sep 17 00:00:00 2001 From: David Hensle Date: Thu, 2 Nov 2023 22:44:54 +0000 Subject: [PATCH 1/6] tm151 running on VM --- model-files/RunModel.bat | 22 +- model-files/RunPPANetworkQAQC.bat | 299 ++++++++++++++++ model-files/SetUpModel.bat | 53 +-- model-files/runtime/SetPath.bat | 24 +- .../assign/TransitAssign_NetworkQAQC.job | 326 ++++++++++++++++++ .../preprocess/RuntimeConfiguration.py | 4 +- tm151-python27.yml | Bin 0 -> 2124 bytes utilities/gawk/bin/gawk.exe | Bin 0 -> 352768 bytes 8 files changed, 688 insertions(+), 40 deletions(-) create mode 100644 model-files/RunPPANetworkQAQC.bat create mode 100644 model-files/scripts/assign/TransitAssign_NetworkQAQC.job create mode 100644 tm151-python27.yml create mode 100644 utilities/gawk/bin/gawk.exe diff --git a/model-files/RunModel.bat b/model-files/RunModel.bat index 703a2db6b..61c81be58 100644 --- a/model-files/RunModel.bat +++ b/model-files/RunModel.bat @@ -23,6 +23,7 @@ call CTRAMP\runtime\SetPath.bat Cluster "%COMMPATH%\CTRAMP" 1-48 Starthide Exit :: Set the IP address of the host machine which sends tasks to the client machines +set HOST_IP_ADDRESS=10.6.0.4 if %computername%==MODEL2-A set HOST_IP_ADDRESS=192.168.1.206 if %computername%==MODEL2-B set HOST_IP_ADDRESS=192.168.1.207 if %computername%==MODEL2-C set HOST_IP_ADDRESS=192.168.1.208 @@ -205,7 +206,7 @@ runtpp CTRAMP\scripts\skims\NonMotorizedSkims.job if ERRORLEVEL 2 goto done :: Step 4.5: Build initial transit files -set PYTHONPATH=%USERPROFILE%\Documents\GitHub\NetworkWrangler;%USERPROFILE%\Documents\GitHub\NetworkWrangler\_static +::set PYTHONPATH=%USERPROFILE%\Documents\GitHub\NetworkWrangler;%USERPROFILE%\Documents\GitHub\NetworkWrangler\_static python CTRAMP\scripts\skims\transitDwellAccess.py NORMAL NoExtraDelay Simple complexDwell %COMPLEXMODES_DWELL% complexAccess %COMPLEXMODES_ACCESS% if ERRORLEVEL 2 goto done @@ -216,7 +217,7 @@ if ERRORLEVEL 2 goto done :: :: ------------------------------------------------------------------------------------------------------ -: iter0 +:iter0 :: Set the iteration parameters set ITER=0 @@ -234,13 +235,16 @@ set PREV_WGT=0.00 call CTRAMP\RunIteration.bat if ERRORLEVEL 2 goto done +:: called again due to python2 not getting activated in conda env... +call CTRAMP\runtime\SetPath.bat + :: ------------------------------------------------------------------------------------------------------ :: :: Step 7: Prepare for iteration 1 and execute RunIteration batch file :: :: ------------------------------------------------------------------------------------------------------ -: iter1 +:iter1 :: Set the iteration parameters set ITER=1 @@ -258,13 +262,16 @@ if ERRORLEVEL 1 goto done call CTRAMP\RunIteration.bat if ERRORLEVEL 2 goto done +:: called again due to python2 not getting activated in conda env... +call CTRAMP\runtime\SetPath.bat + :: ------------------------------------------------------------------------------------------------------ :: :: Step 8: Prepare for iteration 2 and execute RunIteration batch file :: :: ------------------------------------------------------------------------------------------------------ -: iter2 +:iter2 :: Set the iteration parameters set ITER=2 @@ -282,6 +289,8 @@ if ERRORLEVEL 1 goto done call CTRAMP\RunIteration.bat if ERRORLEVEL 2 goto done +:: called again due to python2 not getting activated in conda env... +call CTRAMP\runtime\SetPath.bat :: ------------------------------------------------------------------------------------------------------ :: @@ -307,6 +316,9 @@ if ERRORLEVEL 1 goto done call CTRAMP\RunIteration.bat if ERRORLEVEL 2 goto done +:: called again due to python2 not getting activated in conda env... +call CTRAMP\runtime\SetPath.bat + :: Shut down java C:\Windows\SysWOW64\taskkill /f /im "java.exe" @@ -374,7 +386,7 @@ if ERRORLEVEL 2 goto done :: Extract key files call extractkeyfiles -c:\windows\system32\Robocopy.exe /E extractor "%M_DIR%\OUTPUT" +@REM c:\windows\system32\Robocopy.exe /E extractor "%M_DIR%\OUTPUT" : cleanup diff --git a/model-files/RunPPANetworkQAQC.bat b/model-files/RunPPANetworkQAQC.bat new file mode 100644 index 000000000..ace9d8c58 --- /dev/null +++ b/model-files/RunPPANetworkQAQC.bat @@ -0,0 +1,299 @@ +::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:: RunPPANetworkQAQC.bat +:: +:: MS-DOS batch file to run a dummy assignment for testing projects for PPA. +:: +::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +:: Set the path +call CTRAMP\runtime\SetPath.bat +:: Which conda am I running? +C:\Windows\System32\where python + +:: Start the cube cluster +Cluster "%COMMPATH%\CTRAMP" 1-48 Starthide Exit + +:: Set the IP address of the host machine which sends tasks to the client machines +set HOST_IP_ADDRESS=10.6.0.4 + +:: for AWS, this will be "WIN-" +SET computer_prefix=%computername:~0,4% +set INSTANCE=%COMPUTERNAME% +set MAXITERATIONS=1 + +:: --------TrnAssignment Setup -- Fast Configuration +:: NOTE the blank ones should have a space +set TRNCONFIG=FAST +set COMPLEXMODES_DWELL= +set COMPLEXMODES_ACCESS= + +:: 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% + +:: MODEL YEAR ------------------------- make sure it's numeric -------------------------------- +set /a MODEL_YEAR_NUM=%MODEL_YEAR% 2>nul +if %MODEL_YEAR_NUM%==%MODEL_YEAR% ( + echo Numeric model year [%MODEL_YEAR%] +) else ( + echo Couldn't determine numeric model year from project dir [%PROJECT_DIR%] + echo Guessed [%MODEL_YEAR%] + exit /b 2 +) +:: MODEL YEAR ------------------------- make sure it's in [2000,3000] ------------------------- +if %MODEL_YEAR% LSS 2000 ( + echo Model year [%MODEL_YEAR%] is less than 2000 + exit /b 2 +) +if %MODEL_YEAR% GTR 3000 ( + echo Model year [%MODEL_YEAR%] is greater than 3000 + exit /b 2 +) + +set PROJECT=%myfolder:~11,3% +set FUTURE_ABBR=%myfolder:~15,2% +set FUTURE=X + +:: FUTURE ------------------------- make sure FUTURE_ABBR is one of the five [RT,CG,BF] ------------------------- +:: The long names are: BaseYear ie 2015, Blueprint aka PBA50, CleanAndGreen, BackToTheFuture, or RisingTidesFallingFortunes + +if %PROJECT%==PPA ( + if %FUTURE_ABBR%==RT (set FUTURE=RisingTidesFallingFortunes) + if %FUTURE_ABBR%==CG (set FUTURE=CleanAndGreen) + if %FUTURE_ABBR%==BF (set FUTURE=BackToTheFuture) +) + +echo on +echo FUTURE = %FUTURE% + +echo off +if %FUTURE%==X ( + echo on + echo Couldn't determine FUTURE name. + echo Make sure the name of the project folder conform to the naming convention. + exit /b 2 +) + +echo on +echo turn echo back on + + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Step 2: Create the directory structure +:: +:: ------------------------------------------------------------------------------------------------------ + +:: Create the working directories +mkdir hwy +mkdir trn +mkdir skims +mkdir landuse +mkdir popsyn +mkdir nonres +mkdir main +mkdir logs +mkdir database +mkdir logsums + +:: Stamp the feedback report with the date and time of the model start +echo STARTED MODEL RUN %DATE% %TIME% >> logs\feedback.rpt + +:: Move the input files, which are not accessed by the model, to the working directories +copy INPUT\hwy\ hwy\ +copy INPUT\trn\ trn\ +copy INPUT\landuse\ landuse\ +copy INPUT\popsyn\ popsyn\ +copy INPUT\nonres\ nonres\ +copy INPUT\warmstart\main\ main\ +copy INPUT\warmstart\nonres\ nonres\ +copy INPUT\logsums logsums\ +copy INPUT\telecommute_constants.csv main\telecommute_constants.csv +copy INPUT\telecommute_constants.csv main\telecommute_constants_00.csv + + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Preprocessing +:: +:: ------------------------------------------------------------------------------------------------------ + + +:: Runtime configuration: set project directory, auto operating cost, +:: and synthesized household/population files in the appropriate places +python CTRAMP\scripts\preprocess\RuntimeConfiguration.py +if ERRORLEVEL 1 goto done + +:: 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 + +:: Set the prices in the roadway network +runtpp CTRAMP\scripts\preprocess\SetTolls.job +if ERRORLEVEL 2 goto done + +:: Set a penalty to dummy links connecting HOV/HOT lanes and general purpose lanes +runtpp CTRAMP\scripts\preprocess\SetHovXferPenalties.job +if ERRORLEVEL 2 goto done + +:: Create time-of-day-specific +runtpp CTRAMP\scripts\preprocess\CreateFiveHighwayNetworks.job +if ERRORLEVEL 2 goto done + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Non-Motorized Skims +:: +:: ------------------------------------------------------------------------------------------------------ + +:: Translate the roadway network into a non-motorized network +runtpp CTRAMP\scripts\skims\CreateNonMotorizedNetwork.job +if ERRORLEVEL 2 goto done + +:: Build the skim tables +runtpp CTRAMP\scripts\skims\NonMotorizedSkims.job +if ERRORLEVEL 2 goto done + +:: Step 4.5: Build initial transit files +python CTRAMP\scripts\skims\transitDwellAccess.py NORMAL NoExtraDelay Simple complexDwell %COMPLEXMODES_DWELL% complexAccess %COMPLEXMODES_ACCESS% +if ERRORLEVEL 2 goto done + +set ITER=0 +set PREV_ITER=0 +set WGT=1.0 +set PREV_WGT=0.00 + +:: ------------------------------------------------------------------------------------------------------ +:: +:: Subset taken from trnAssign.bat +:: +:: ------------------------------------------------------------------------------------------------------ +:trnAssign + +set ALLTIMEPERIODS=AM MD PM EV EA +set TRNASSIGNITER=0 +set PREVTRNASSIGNITER=NEG1 +set PHTDIFFCOND=0.0001 +set VOLDIFFCOND=0.005 +set TRNASSIGNMODE=NORMAL +set TOTMAXTRNITERS=30 +set MAXPATHTIME=240 +set PCT=%% +set TRN_ERRORLEVEL=0 + +:: AverageNetworkVolumes.job uses PREV_ITER=1 for ITER=1 +set PREV_TRN_ITER=%PREV_ITER% +IF %ITER% EQU 1 SET PREV_TRN_ITER=0 + +set ALLTRIPMODES=wlk_com_wlk drv_com_wlk wlk_com_drv wlk_hvy_wlk drv_hvy_wlk wlk_hvy_drv wlk_lrf_wlk drv_lrf_wlk wlk_lrf_drv wlk_exp_wlk drv_exp_wlk wlk_exp_drv wlk_loc_wlk drv_loc_wlk wlk_loc_drv +set ALLTOURMODES=wlk_trn_wlk drv_trn_wlk wlk_trn_drv +IF NOT DEFINED TRNFASTERTHANFREEFLOW (set TRNFASTERTHANFREEFLOW=0) + + +mkdir trn\TransitAssignment.iter%ITER% +cd trn\TransitAssignment.iter%ITER% + +:copyTransitLin +:: bring in the latest transit files -- original if postprocessing +IF %ITER% EQU POSTPROC ( + FOR %%H in (%ALLTIMEPERIODS%) DO copy /y ..\transitOriginal%%H.lin transit%%H_0.lin +) +IF NOT %ITER% EQU POSTPROC ( + IF %ITER% EQU 0 ( + FOR %%H in (%ALLTIMEPERIODS%) DO copy /y ..\transitOriginal%%H.lin transit%%H_0.lin + ) + :: otherwise go from where the previous iteration left off + IF %ITER% GTR 0 ( + FOR %%H in (%ALLTIMEPERIODS%) DO copy /y ..\TransitAssignment.iter%PREV_TRN_ITER%\transit%%H.lin transit%%H_0.lin + ) +) +FOR %%H in (%ALLTIMEPERIODS%) DO ( + copy /y transit%%H_0.lin transit%%H.lin + set LASTITER_%%H=0 + set LASTSUBDIR_%%H=Subdir0 +) + +:: for fast config, only do 1 +:: for standard config, keep it short for initial assign +if "%TRNCONFIG%"=="FAST" (set MAXTRNITERS=0) +if "%TRNCONFIG%"=="STANDARD" ( + set MAXTRNITERS=%TOTMAXTRNITERS% + IF %ITER% EQU 0 (set MAXTRNITERS=4) +) +IF %ITER% EQU POSTPROC (set TRNASSIGNMODE=POSTPROC) +IF %ITER% EQU %MAXITERATIONS% (set PHTDIFFCOND=0) + +echo START TRNASSIGN BuildTransitNetworks %DATE% %TIME% >> ..\..\logs\feedback.rpt + +:: Prepare the highway network for use by the transit network +runtpp ..\..\CTRAMP\scripts\skims\PrepHwyNet.job +if ERRORLEVEL 2 ( + set TRN_ERRORLEVEL=2 + goto donedone +) + +:: Create the transit networks +runtpp ..\..\CTRAMP\scripts\skims\BuildTransitNetworks.job +if ERRORLEVEL 2 ( + set TRN_ERRORLEVEL=2 + goto donedone +) + + +:transitSubAssign + +:: Assign the transit trips to the transit network +runtpp ..\..\CTRAMP\scripts\assign\TransitAssign_NetworkQAQC.job +if ERRORLEVEL 2 ( + set TRN_ERRORLEVEL=2 + echo ERRORLEVEL is %ERRORLEVEL% + goto donedone +) +:: And skim +runtpp ..\..\CTRAMP\scripts\skims\TransitSkims.job +if ERRORLEVEL 2 ( + set TRN_ERRORLEVEL=2 + echo ERRORLEVEL is %ERRORLEVEL% + goto donedone +) + +:: Copy skims to skim folder and rename +FOR %%A in (%ALLTRIPMODES% %ALLTOURMODES%) DO ( + copy /y trnskmea_%%A.avg.iter%LASTITER_EA%.tpp ..\..\skims\trnskmea_%%A.tpp + copy /y trnskmam_%%A.avg.iter%LASTITER_AM%.tpp ..\..\skims\trnskmam_%%A.tpp + copy /y trnskmmd_%%A.avg.iter%LASTITER_MD%.tpp ..\..\skims\trnskmmd_%%A.tpp + copy /y trnskmpm_%%A.avg.iter%LASTITER_PM%.tpp ..\..\skims\trnskmpm_%%A.tpp + copy /y trnskmev_%%A.avg.iter%LASTITER_EV%.tpp ..\..\skims\trnskmev_%%A.tpp +) + +cd .. +cd .. + +:: Create the automobile level-of-service matrices +runtpp CTRAMP\scripts\skims\HwySkims.job +if ERRORLEVEL 2 goto done + +:: Create accessibility measures for use by the automobile ownership sub-model +runtpp CTRAMP\scripts\skims\Accessibility.job +if ERRORLEVEL 2 goto done + + +:: Close the cube cluster +Cluster "%COMMPATH%\CTRAMP" 1-48 Close Exit + +:success +ECHO FINISHED SUCCESSFULLY! + +goto donedone + +:: this is the done for errors +:done +ECHO ERRORED OUT!!. + +:donedone \ No newline at end of file diff --git a/model-files/SetUpModel.bat b/model-files/SetUpModel.bat index 32cb8e271..77278a6bc 100644 --- a/model-files/SetUpModel.bat +++ b/model-files/SetUpModel.bat @@ -8,7 +8,7 @@ SET computer_prefix=%computername:~0,4% :: copy over CTRAMP -set GITHUB_DIR=\\mainmodel\MainModelShare\travel-model-one-1.5.1.8 +set GITHUB_DIR=E:\code\TM151\travel-model-one mkdir CTRAMP\model mkdir CTRAMP\runtime mkdir CTRAMP\scripts @@ -21,6 +21,7 @@ copy /Y "%GITHUB_DIR%\model-files\RunModel.bat" . copy /Y "%GITHUB_DIR%\model-files\RunIteration.bat" CTRAMP copy /Y "%GITHUB_DIR%\model-files\RunLogsums.bat" . copy /Y "%GITHUB_DIR%\model-files\RunCoreSummaries.bat" . +copy /Y "%GITHUB_DIR%\model-files\RunPPANetworkQAQC.bat" . copy /Y "%GITHUB_DIR%\utilities\PBA40\RunMetrics.bat" . copy /Y "%GITHUB_DIR%\utilities\PBA40\RunScenarioMetrics.bat" . copy /Y "%GITHUB_DIR%\utilities\PBA40\ExtractKeyFiles.bat" . @@ -29,7 +30,7 @@ if "%COMPUTER_PREFIX%" == "WIN-" (copy "%GITHUB_DIR%\utilities\monitoring\not if "%COMPUTER_PREFIX%" == "WIN-" set HOST_IP_ADDRESS=10.0.0.33 :: copy over INPUTs from baseline -set MODEL_SETUP_BASE_DIR=M:\Application\Model One\RTP2021\ProjectPerformanceAssessment\Projects\2050_TM151_PPA_CG_11 +set MODEL_SETUP_BASE_DIR=Z:\RTP2025_PPA\Projects\2050_TM151_PPA_CG_17 c:\windows\system32\Robocopy.exe /E "%MODEL_SETUP_BASE_DIR%\INPUT\landuse" INPUT\landuse c:\windows\system32\Robocopy.exe /E "%MODEL_SETUP_BASE_DIR%\INPUT\logsums" INPUT\logsums c:\windows\system32\Robocopy.exe /E "%MODEL_SETUP_BASE_DIR%\INPUT\metrics" INPUT\metrics @@ -43,44 +44,44 @@ copy /Y "%MODEL_SETUP_BASE_DIR%\INPUT\params.properties" copy /Y "%MODEL_SETUP_BASE_DIR%\OUTPUT\main\ShadowPricing_7.csv" INPUT\logsums :: copy over project specific inputs -set MODEL_SETUP_DIR=M:\Application\Model One\RTP2021\ProjectPerformanceAssessment\Projects\2202_BART_DMU_Brentwood\2050_TM151_PPA_CG_11_666_Project +set MODEL_SETUP_DIR=Z:\RTP2025_PPA\Projects\2050_TM151_PPA_CG_17\INPUT c:\windows\system32\Robocopy.exe /E "%MODEL_SETUP_DIR%\hwy" INPUT\hwy c:\windows\system32\Robocopy.exe /E "%MODEL_SETUP_DIR%\trn" INPUT\trn :: set the location of the output folder; this is where the extractor directory will be copied to -set M_DIR=%MODEL_SETUP_DIR% +@REM set M_DIR=%MODEL_SETUP_DIR% :: copy this batch file itself to M -copy SetUpModel.bat "%M_DIR%\SetUpModel.bat" +@REM copy SetUpModel.bat "%M_DIR%\SetUpModel.bat" ::----------------------------------------------------------------------- :: 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 +@REM set MODEL_DIR=%CD% +@REM set PROJECT_DIR=%~p0 +@REM set PROJECT_DIR2=%PROJECT_DIR:~0,-1% +@REM :: get the base dir only +@REM for %%f in (%PROJECT_DIR2%) do set myfolder=%%~nxf -title %myfolder% +@REM title %myfolder% -::----------------------------------------------------------------------- -:: create a shortcut of the project directory using a temporary VBScript -::----------------------------------------------------------------------- +@REM ::----------------------------------------------------------------------- +@REM :: create a shortcut of the project directory using a temporary VBScript +@REM ::----------------------------------------------------------------------- -set TEMP_SCRIPT="%CD%\temp_script_to_create_shortcut.vbs" -set PROJECT_DIR=%~p0 -set ALPHABET=%computername:~7,1% +@REM set TEMP_SCRIPT="%CD%\temp_script_to_create_shortcut.vbs" +@REM set PROJECT_DIR=%~p0 +@REM 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% +@REM echo Set oWS = WScript.CreateObject("WScript.Shell") >> %TEMP_SCRIPT% +@REM echo sLinkFile = "%M_DIR%/model_run_on_%computername%.lnk" >> %TEMP_SCRIPT% +@REM echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %TEMP_SCRIPT% +@REM echo oLink.TargetPath = "M:" >> %TEMP_SCRIPT% +@REM echo oLink.TargetPath = "\\%computername%\%PROJECT_DIR%" >> %TEMP_SCRIPT% -echo oLink.Save >> %TEMP_SCRIPT% +@REM echo oLink.Save >> %TEMP_SCRIPT% -::C:\Windows\SysWOW64\cscript.exe /nologo %TEMP_SCRIPT% -C:\Windows\SysWOW64\cscript.exe %TEMP_SCRIPT% -del %TEMP_SCRIPT% \ No newline at end of file +@REM ::C:\Windows\SysWOW64\cscript.exe /nologo %TEMP_SCRIPT% +@REM C:\Windows\SysWOW64\cscript.exe %TEMP_SCRIPT% +@REM del %TEMP_SCRIPT% \ No newline at end of file diff --git a/model-files/runtime/SetPath.bat b/model-files/runtime/SetPath.bat index ce7d64274..76a7a6531 100644 --- a/model-files/runtime/SetPath.bat +++ b/model-files/runtime/SetPath.bat @@ -2,7 +2,7 @@ :: Utility to set the path. Used in RunModel as well as RunMain and RunNodeX. :: The commpath -SET COMMPATH=X:\COMMPATH +SET COMMPATH=%CD% if "%COMPUTER_PREFIX%" == "WIN-" ( SET COMMPATH=D:\COMMPATH ) @@ -11,30 +11,40 @@ if "%COMPUTER_PREFIX%" == "WIN-" ( set JAVA_PATH=C:\Program Files\Java\jdk1.8.0_181 :: The location of the GAWK binary executable files -set GAWK_PATH=X:\UTIL\Gawk +set GAWK_PATH=E:\code\TM151\travel-model-one\utilities\gawk if "%COMPUTER_PREFIX%" == "WIN-" ( set GAWK_PATH=C:\Software\Gawk ) :: The location of R and R libraries -set R_HOME=C:\Program Files\R\R-3.5.2 -set R_LIB=C:/Users/mtcpb/Documents/R/win-library/3.5 +set R_HOME=C:\Program Files\R\R-4.3.1 +set R_LIB=C:\Users\david.hensle\AppData\Local\R\win-library\4.3 if "%COMPUTER_PREFIX%" == "WIN-" ( set R_LIB=C:/Users/Administrator/Documents/R/win-library/3.5 ) :: The location of the RUNTPP executable from Citilabs -set TPP_PATH=C:\Program Files\Citilabs\CubeVoyager;C:\Program Files\Citilabs\VoyagerFileAPI +set TPP_PATH=C:\Program Files\Citilabs\CubeVoyager;C:\Program Files\Citilabs\VoyagerAPI\Dlls\x64 :: The location of python -set PYTHON_PATH=C:\Python27 +::set PYTHON_PATH=C:\Python27 :: The location of the MTC.JAR file set RUNTIME=CTRAMP/runtime +:: The location of Anaconda; this run will use the conda environment tm15-python310 +set CONDA_PATH=C:\ProgramData\Anaconda3;C:\ProgramData\Anaconda3\Library\mingw-w64\bin;C:\ProgramData\Anaconda3\Library\usr\bin;C:\ProgramData\Anaconda3\Library\bin;C:\ProgramData\Anaconda3\Scripts;C:\ProgramData\Anaconda3\bin;C:\ProgramData\Anaconda3\condabin +set ENV_NAME=tm151-python27 + :: Add these variables to the PATH environment variable, moving the current path to the back -set PATH=%RUNTIME%;%JAVA_PATH%/bin;%TPP_PATH%;%GAWK_PATH%/bin;%PYTHON_PATH% +set PATH=%RUNTIME%;%JAVA_PATH%/bin;%TPP_PATH%;%GAWK_PATH%/bin;%CONDA_PATH% :: Set the Java classpath (locations where Java needs to find configuration and JAR files) set CLASSPATH=%RUNTIME%/config;%RUNTIME%;%RUNTIME%/config/jppf-2.4/jppf-2.4-admin-ui/lib/*;%RUNTIME%/mtc.jar +:: Activate the correct conda environment -- this will update the PATH +call activate %ENV_NAME% + +:: Deactivating and re-activating seems necessary for the python 2 env to work correctly.. +call conda deactivate +call activate %ENV_NAME% \ No newline at end of file diff --git a/model-files/scripts/assign/TransitAssign_NetworkQAQC.job b/model-files/scripts/assign/TransitAssign_NetworkQAQC.job new file mode 100644 index 000000000..d9e381227 --- /dev/null +++ b/model-files/scripts/assign/TransitAssign_NetworkQAQC.job @@ -0,0 +1,326 @@ +; ---------------------------------------------------------------------------------------------------------------- +; +; TransitAssign_NetworkQAQC.job +; +; TP+ script to perform a transit assignment. This script differs from TransitAssign.job by just assigning a +; demand matrix of 0.1 for all zones. Used to QAQC network projects for PPA runs. +; +; version: Travel Model One +; authors: david.hensle@rsginc.com (Oct2023) +; +; ---------------------------------------------------------------------------------------------------------------- + +token_model_dir = '%MODEL_DIR%' + +; time period loop +loop period = 1, 5 + + ; initialize counter to so that no more than 18 tasks are created + counter = 0 + + ; set a list of origins to trace (comma-separated) + token_debug_origin_list = '240' + + ; set a list of destinations to trace (comma-separated) + token_debug_destination_list = '22' + + if (period = 1) + token_period = 'ea' + + elseif (period = 2) + token_period = 'am' + + elseif (period = 3) + token_period = 'md' + + elseif (period = 4) + token_period = 'pm' + + elseif (period = 5) + token_period = 'ev' + + endif + + ; access/egress loop (walk/walk, auto/walk, walk/auto) + loop accegg = 1,3 + + if (accegg = 1) + token_access = 'wlk' + token_egress = 'wlk' + token_boardpen = 'factor boardpen = 0, 20, 45, 50, 60' + elseif (accegg = 2) + token_access = 'drv' + token_egress = 'wlk' + token_boardpen = 'factor boardpen = 0, 30, 45, 50, 60' + elseif (accegg = 3) + token_access = 'wlk' + token_egress = 'drv' + token_boardpen = 'factor boardpen = 0, 30, 45, 50, 60' + endif + + ; line haul loop + loop path = 1, 5 + + ; commuter rail or long-haul premium + if (path = 1) + + ; drive access/egress links to this mode (';' means no) + ; allow higher-class PNRs to be read in case of shared lots + token_drivelinks_express_bus = ';' + token_drivelinks_light_rail = ';' + token_drivelinks_ferry = ';' + token_drivelinks_heavy_rail = ';' + token_drivelinks_commuter_rail = ' ' + + ; no KNR access links to local bus + token_bus_acclinks_KNR = ';' + + ; no transit modes are excluded from this path + token_skipmodes = '; do not skip any modes for this path' + + ; mode-specific perceived time factors + ; support loc bus exp bus ferry lt rail hvy rail com rail + token_modefac = 'modefac = 9*2.0, 70*1.5, 20*1.2, 10*1.1, 10*1.1, 10*1.1, 10*1.0' + + ; three-letter path name + token_path = 'com' + + ; heavy rail or medium-haul premium + elseif (path = 2) + + ; drive access/egress links to this mode (';' means no) + ; allow higher-class PNRs to be read in case of shared lots + token_drivelinks_express_bus = ';' + token_drivelinks_light_rail = ';' + token_drivelinks_ferry = ';' + token_drivelinks_heavy_rail = ' ' + token_drivelinks_commuter_rail = ' ' + + ; no KNR access links to local bus + token_bus_acclinks_KNR = ';' + + ; commuter rail excluded from this path + token_skipmodes = 'skipmodes = 130-139' + + ; mode-specific perceived time factors + ; support loc bus exp bus ferry lt rail hvy rail com rail + token_modefac = 'modefac = 9*2.0, 70*1.5, 20*1.2, 10*1.1, 10*1.1, 10*1.0, 10*1.5' + + ; three-letter path name + token_path = 'hvy' + + ; express bus or medium-haul basic + elseif (path = 3) + + ; drive access/egress links to this mode (';' means no) + ; allow higher-class PNRs to be read in case of shared lots + token_drivelinks_express_bus = ' ' + token_drivelinks_light_rail = ';' + token_drivelinks_ferry = ';' + token_drivelinks_heavy_rail = ' ' + token_drivelinks_commuter_rail = ' ' + + ; KNR access links to local bus + token_bus_acclinks_KNR = ';' + + ; commuter rail and heavy rail excluded from this path + token_skipmodes = 'skipmodes = 130-139,120-139' + + ; mode-specific perceived time factors + ; support loc bus exp bus ferry lt rail hvy rail com rail + token_modefac = 'modefac = 9*2.0, 70*1.5, 20*1.0, 10*1.5, 10*1.5, 10*1.5, 10*1.5' + + ; three-letter path name + token_path = 'exp' + + + ; light rail (or ferry) or short-haul premium + elseif (path = 4) + + ; drive access/egress links to this mode (';' means no) + ; allow higher-class PNRs to be read in case of shared lots + token_drivelinks_express_bus = ' ' + token_drivelinks_light_rail = ' ' + token_drivelinks_ferry = ' ' + token_drivelinks_heavy_rail = ' ' + token_drivelinks_commuter_rail = ' ' + + ; no KNR access links to local bus + token_bus_acclinks_KNR = ';' + + ; commuter rail, heavy rail, and express bus excluded from this path + token_skipmodes = 'skipmodes = 130-139,120-139,80-99' + + ; mode-specific perceived time factors + ; support loc bus exp bus ferry lt rail hvy rail com rail + token_modefac = 'modefac = 9*2.0, 70*1.5, 20*1.5, 10*1.0, 10*1.0, 10*1.5, 10*1.5' + + ; three-letter path name + token_path = 'lrf' + + ; local bus or short-haul basic + elseif (path = 5) + + ; drive access/egress links to this mode (';' means no) + ; allow higher-class PNRs to be read in case of shared lots + token_drivelinks_express_bus = ' ' + token_drivelinks_light_rail = ' ' + token_drivelinks_ferry = ' ' + token_drivelinks_heavy_rail = ' ' + token_drivelinks_commuter_rail = ' ' + + ; KNR access links to local bus + token_bus_acclinks_KNR = ' ' + + ; commuter rail, heavy rail, express bus, light rail, and ferry excluded from this path + token_skipmodes = 'skipmodes = 130-139,120-139,80-99,100-119' + + ; mode-specific perceived time factors + ; support loc bus exp bus ferry lt rail hvy rail com rail + token_modefac = 'modefac = 9*2.0, 70*1.0, 20*1.5, 10*1.5, 10*1.5, 10*1.5, 10*1.5' + + ; three-letter path name + token_path = 'loc' + + + endif + + ; increment the counter used to identify the process number + counter = counter + 1 + + run pgm = matrix + FILEO MATO[1] = dummy_assign_matrix.tpp, MO=1 + PAR ZONES=1454 + MW[1] = 0.1 + endrun + + ; distribute the tasks + DistributeMultistep processid = "ctramp", processnum = @counter@, commpath = '%COMMPATH%' + + run pgm = trnbuild + + ; use the highway network with the computed bus times + filei neti = @token_period@_transit_background.net + + ; read in the 23-table matrix created by prepAssign.job (see header for content details) + ; Not reading for network QAQC + ; filei mati = "@token_model_dir@\main\trips@token_period@.tpp" + filei mati = "dummy_assign_matrix.tpp" + + ; path parameter: do not list (write out) all of the subsequent input + parameters listinput = no + + ; read in the fare matrices + read file = "@token_model_dir@\trn\transit_faremat.block" + read file = "@token_model_dir@\trn\farelinks.far" + read file = "@token_model_dir@\trn\xfare.far" + + ; output the link volumes + fileo linko = trnlink@token_period@_@token_access@_@token_path@_@token_egress@.dbf + fileo linkvolo = trnlink@token_period@_@token_access@_@token_path@_@token_egress@.csv, format = csv + + ; output the line volumes + fileo linevolo = trnline@token_period@_@token_access@_@token_path@_@token_egress@.csv, + id = @token_period@_@token_access@_@token_path@_@token_egress@, format = csv + + ; the bus times are based on those computed in the highway network + hwytime = BUS_TIME + + + ; read the transit line and link files + read file = "@token_model_dir@\trn\transitLines.link" + read file = transit@token_period@.lin + + ; read in the generated support links + read file = @token_period@_transit_suplinks_walk.dat + + ; read in the generated drive access/egress links for this mode + @token_drivelinks_express_bus@ read file = @token_period@_transit_suplinks_express_bus.dat + @token_drivelinks_light_rail@ read file = @token_period@_transit_suplinks_light_rail.dat + @token_drivelinks_ferry@ read file = @token_period@_transit_suplinks_ferry.dat + @token_drivelinks_heavy_rail@ read file = @token_period@_transit_suplinks_heavy_rail.dat + @token_drivelinks_commuter_rail@ read file = @token_period@_transit_suplinks_commuter_rail.dat + + ; read in the generated KNR links for local bus + @token_bus_acclinks_KNR@ READ FILE = @token_period@_bus_acclinks_KNR.DAT + + ; set the service headways + freqperiod = @period@ + + ; we do not need access links built + zoneaccess generate = no + + ; path parameter: 0 - best path by mode; 1 - single best path + parameters pathstyle = 0 + + ; path parameter: we want to build paths + parameters buildpaths = t + + ; path parameter: assumed walking speed is 3.0 miles per hour + parameters walkspeed = 3.0 + + + ; path parameter: we do not use the route time coded in the line files; bus times are a function of highway times + parameters useruntime = n + + ; path parameter: the maximum path time for a single route is 3 hours or 180 minutes + parameters maxruntime = 180 + + ; path parameter: the maximum perceived path time for a single route is 5 hours or 300 minutes + parameters maxpathtime = 300 + + ; perceived time factors: first boarding is free; second, third, and fourth boarding adds fiftenn perceived minutes; + ; discourage more than four transfers with a 60 minute penalty + @token_boardpen@ + + ; perceived time factors: initial wait time is equivalent to 2.8 minutes of ride time for modes 10 through 255 + factor iwaitfac = 9*0, 130*2.8 + + ; perceived time factors: transfer wait time is equivalent to 2.8 minutes of ride time for modes 1 through 255 + factor xwaitfac = 139*2.8 + + ; use token_skipmodes to remove modes from the network per the hierarchy + @token_skipmodes@ + + ; perceived time factors: slow down non-key modes by 50 percent; walk and drive by 100 percent; use token_modefac + @token_modefac@ + + ; combine paths if runtimes differ by less than 5 minutes + read file = "@token_model_dir@\ctramp\scripts\block\transit_combined_headways.block" + + ; read in the transfer prohibitors file + read file = "@token_model_dir@\ctramp\scripts\block\transferprohibitors_@token_access@_trn_@token_egress@.block" + + ; assigning a "ones" matrix for transit assignment testing + ; mw[1] = .1 + trips matrix = mi.1.1, assign = true + + ; specify which paths to trace + trace = (i = @token_debug_origin_list@ && j = @token_debug_destination_list@) + + endrun + + enddistributemultistep + + endloop ; line haul loop + + endloop ; access/egress mode loop + + wait4files files = ctramp1.script.end, + ctramp2.script.end, + ctramp3.script.end, + ctramp4.script.end, + ctramp5.script.end, + ctramp6.script.end, + ctramp7.script.end, + ctramp8.script.end, + ctramp9.script.end, + ctramp10.script.end, + ctramp11.script.end, + ctramp12.script.end, + ctramp13.script.end, + ctramp14.script.end, + ctramp15.script.end, + printfiles = save, DelDistribFiles = t, CheckReturnCode = t + +endloop ; time of day diff --git a/model-files/scripts/preprocess/RuntimeConfiguration.py b/model-files/scripts/preprocess/RuntimeConfiguration.py index 390d14f2a..4a17cf03a 100644 --- a/model-files/scripts/preprocess/RuntimeConfiguration.py +++ b/model-files/scripts/preprocess/RuntimeConfiguration.py @@ -545,7 +545,7 @@ def config_distribution(replacements): shutil.copy2(os.path.join("CTRAMP","scripts","block","HwyIntraStep_64.block"), os.path.join("CTRAMP","scripts","block","HwyIntraStep.block")) - elif hostname in ['MODEL2-A','MODEL2-B','MODEL2-C','MODEL2-D','PORMDLPPW01','PORMDLPPW02'] or hostname.startswith("WIN-"): + elif hostname in ['MODEL2-A','MODEL2-B','MODEL2-C','MODEL2-D','PORMDLPPW01','PORMDLPPW02'] or hostname.startswith("WIN-") or hostname.startswith("azmdl"): # accessibilities: 48 logical processors filepath = os.path.join("CTRAMP","runtime","accessibilities.properties") replacements[filepath]["(\nnum.acc.threads[ \t]*=[ \t]*)(\S*)"] = r"\g<1>48" @@ -589,7 +589,7 @@ def config_distribution(replacements): shutil.copy2(os.path.join("CTRAMP","scripts","block","HwyIntraStep_64.block"), os.path.join("CTRAMP","scripts","block","HwyIntraStep.block")) - elif hostname in ['MODEL2-A','MODEL2-B','MODEL2-C','MODEL2-D','PORMDLPPW01','PORMDLPPW02'] or hostname.startswith("WIN-"): + elif hostname in ['MODEL2-A','MODEL2-B','MODEL2-C','MODEL2-D','PORMDLPPW01','PORMDLPPW02'] or hostname.startswith("WIN-") or hostname.startswith("azmdl"): # accessibilities: 48 logical processors filepath = os.path.join("CTRAMP","runtime","accessibilities.properties") replacements[filepath]["(\nnum.acc.threads[ \t]*=[ \t]*)(\S*)"] = r"\g<1>48" diff --git a/tm151-python27.yml b/tm151-python27.yml new file mode 100644 index 0000000000000000000000000000000000000000..3a502733be558947aa9178eef1dbfa7e24214148 GIT binary patch literal 2124 zcma)->#mwm5QXP=lfJ`w0gQr|V-udm0BSWoqV;YczU{a6NCDBDh9I){%-U<#T=?_5 zw9GcPuy6KeNB#|L#2wkrZoIE-Yo*0Dv9I>U3f?o`OYA@FfR9$+xFYU3t4sDz>>b(F zp4N8UW%yTuu;%U2Gsh!iHRa@<^?7dW2Ww6A0*eU$h3!FKbJCi(jQ_$*;n?R+g8w_e zF;^P+W;P|J5qq)Cuxg_=@hX%){^NilE>dCz|Ador80KKicx&Q_OTntRRVXnCRXi*3 z`Zk0~9N5fww*AWx$p9GnI2ya1u_F;;P>Q^%f!9la6|4c2l&KWsH^jOm(hGZ+Fd^STu3^psDLm z)QB|JBo%@pRE#=%f~8iR!DH{XaW9;_;8L#K-*f+e*}A|$GuCI?A?UsjjJ$4}9kc{r zU8tGe?ZIov*3~Y==34GyX6q{;l`mYY!UO5qpZOSEdMN!vG(^gilp}rMvACuu~Qa5c?p_)?SF-O5= zuy>s`tv>V7T-o0zlk*a{;Zr|lW6vpKq>gy4ku0ljSGPH`SUuNN_8#%~(4Ag&)x>=k OgL~*J=UludWce3vBN?m! literal 0 HcmV?d00001 diff --git a/utilities/gawk/bin/gawk.exe b/utilities/gawk/bin/gawk.exe new file mode 100644 index 0000000000000000000000000000000000000000..bdedce5814cf4b4a8b9c33184d2dabec1ec5ca6a GIT binary patch literal 352768 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⁣~ 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

3LrS|p#Jj>pW5wE$i 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 Date: Fri, 3 Nov 2023 21:37:30 +0000 Subject: [PATCH 2/6] network qaqc fixes -- no multiprocessing in matrix creation for trn assign and inclusion of hwy assign --- model-files/RunPPANetworkQAQC.bat | 73 ++++++++++++++----- .../assign/TransitAssign_NetworkQAQC.job | 12 +-- 2 files changed, 61 insertions(+), 24 deletions(-) diff --git a/model-files/RunPPANetworkQAQC.bat b/model-files/RunPPANetworkQAQC.bat index ace9d8c58..7c196c0c9 100644 --- a/model-files/RunPPANetworkQAQC.bat +++ b/model-files/RunPPANetworkQAQC.bat @@ -169,6 +169,10 @@ set PREV_ITER=0 set WGT=1.0 set PREV_WGT=0.00 +:: Assign the demand matrices to the highway network +runtpp CTRAMP\scripts\assign\HwyAssign.job +if ERRORLEVEL 2 goto done + :: ------------------------------------------------------------------------------------------------------ :: :: Subset taken from trnAssign.bat @@ -233,35 +237,21 @@ echo START TRNASSIGN BuildTransitNetworks %DATE% %TIME% >> ..\..\logs\feedback.r :: Prepare the highway network for use by the transit network runtpp ..\..\CTRAMP\scripts\skims\PrepHwyNet.job -if ERRORLEVEL 2 ( - set TRN_ERRORLEVEL=2 - goto donedone -) +if ERRORLEVEL 2 goto done :: Create the transit networks runtpp ..\..\CTRAMP\scripts\skims\BuildTransitNetworks.job -if ERRORLEVEL 2 ( - set TRN_ERRORLEVEL=2 - goto donedone -) +if ERRORLEVEL 2 goto done :transitSubAssign :: Assign the transit trips to the transit network runtpp ..\..\CTRAMP\scripts\assign\TransitAssign_NetworkQAQC.job -if ERRORLEVEL 2 ( - set TRN_ERRORLEVEL=2 - echo ERRORLEVEL is %ERRORLEVEL% - goto donedone -) +if ERRORLEVEL 2 goto done :: And skim runtpp ..\..\CTRAMP\scripts\skims\TransitSkims.job -if ERRORLEVEL 2 ( - set TRN_ERRORLEVEL=2 - echo ERRORLEVEL is %ERRORLEVEL% - goto donedone -) +if ERRORLEVEL 2 goto done :: Copy skims to skim folder and rename FOR %%A in (%ALLTRIPMODES% %ALLTOURMODES%) DO ( @@ -275,6 +265,53 @@ FOR %%A in (%ALLTRIPMODES% %ALLTOURMODES%) DO ( cd .. cd .. + +:: Move assigned networks to a iteration-specific directory +mkdir hwy\iter%ITER% + +move hwy\LOADEA.net hwy\iter%ITER%\LOADEA.net +move hwy\LOADAM.net hwy\iter%ITER%\LOADAM.net +move hwy\LOADMD.net hwy\iter%ITER%\LOADMD.net +move hwy\LOADPM.net hwy\iter%ITER%\LOADPM.net +move hwy\LOADEV.net hwy\iter%ITER%\LOADEV.net + +:: Give the default TP+ variables more intuitive names +runtpp CTRAMP\scripts\feedback\RenameAssignmentVariables.job +if ERRORLEVEL 2 goto done + +:: Average the demand for this and the previous iteration and compute a speed estimate for each link +IF %ITER% GTR 1 ( + runtpp CTRAMP\scripts\feedback\AverageNetworkVolumes.job + if ERRORLEVEL 2 goto done + runtpp CTRAMP\scripts\feedback\CalculateSpeeds.job + if ERRORLEVEL 2 goto done +) ELSE ( + copy hwy\iter%ITER%\LOADEA_renamed.net hwy\iter%ITER%\avgLOADEA.net /Y + copy hwy\iter%ITER%\LOADAM_renamed.net hwy\iter%ITER%\avgLOADAM.net /Y + copy hwy\iter%ITER%\LOADMD_renamed.net hwy\iter%ITER%\avgLOADMD.net /Y + copy hwy\iter%ITER%\LOADPM_renamed.net hwy\iter%ITER%\avgLOADPM.net /Y + copy hwy\iter%ITER%\LOADEV_renamed.net hwy\iter%ITER%\avgLOADEV.net /Y +) + +:: Compute network statistics to measure convergence +runtpp CTRAMP\scripts\feedback\TestNetworkConvergence.job +if ERRORLEVEL 2 goto done + +:: Combine the time-of-day-specific networks into a single network +runtpp CTRAMP\scripts\feedback\MergeNetworks.job +if ERRORLEVEL 2 goto done + +:: Place a copy of the loaded networks into the root \hwy directory for access by the next iteration +copy hwy\iter%ITER%\avgLOADEA.net hwy\avgLOADEA.net /Y +copy hwy\iter%ITER%\avgLOADAM.net hwy\avgLOADAM.net /Y +copy hwy\iter%ITER%\avgLOADMD.net hwy\avgLOADMD.net /Y +copy hwy\iter%ITER%\avgLOADPM.net hwy\avgLOADPM.net /Y +copy hwy\iter%ITER%\avgLOADEV.net hwy\avgLOADEV.net /Y + +:: Delete temporary files +del hwy\iter%ITER%\x*.net + + :: Create the automobile level-of-service matrices runtpp CTRAMP\scripts\skims\HwySkims.job if ERRORLEVEL 2 goto done diff --git a/model-files/scripts/assign/TransitAssign_NetworkQAQC.job b/model-files/scripts/assign/TransitAssign_NetworkQAQC.job index d9e381227..aa2140672 100644 --- a/model-files/scripts/assign/TransitAssign_NetworkQAQC.job +++ b/model-files/scripts/assign/TransitAssign_NetworkQAQC.job @@ -12,6 +12,12 @@ token_model_dir = '%MODEL_DIR%' +run pgm = matrix + FILEO MATO[1] = dummy_assign_matrix.tpp, MO=1 + PAR ZONES=1454 + MW[1] = 0.1 +endrun + ; time period loop loop period = 1, 5 @@ -187,12 +193,6 @@ loop period = 1, 5 ; increment the counter used to identify the process number counter = counter + 1 - - run pgm = matrix - FILEO MATO[1] = dummy_assign_matrix.tpp, MO=1 - PAR ZONES=1454 - MW[1] = 0.1 - endrun ; distribute the tasks DistributeMultistep processid = "ctramp", processnum = @counter@, commpath = '%COMMPATH%' From c288fb9d41c988df41eb4fc45e9856eff18f9259 Mon Sep 17 00:00:00 2001 From: David Hensle Date: Fri, 3 Nov 2023 22:58:59 +0000 Subject: [PATCH 3/6] changing folder name from extractor to OUTPUT --- utilities/PBA40/ExtractKeyFiles.bat | 162 ++++++++++++++-------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/utilities/PBA40/ExtractKeyFiles.bat b/utilities/PBA40/ExtractKeyFiles.bat index d4f6fb718..0a23840b6 100644 --- a/utilities/PBA40/ExtractKeyFiles.bat +++ b/utilities/PBA40/ExtractKeyFiles.bat @@ -6,121 +6,121 @@ :: :: lmz - Create version for PBAU (Plan Bay Area Update) :: -:: This just pulls output into extractor\ +:: This just pulls output into OUTPUT\ :: :: See also CopyFilesToM.bat, which is meant to run afterwards ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -echo STARTED EXTRACTOR RUN %DATE% %TIME% >> logs\feedback.rpt +echo STARTED OUTPUT RUN %DATE% %TIME% >> logs\feedback.rpt :: Create the needed directories -mkdir extractor +mkdir OUTPUT :: Assume this is set already :: set ITER=3 :: Highway assignment results -copy hwy\iter%ITER%\avgload5period.net extractor\avgload5period.net -copy hwy\iter%ITER%\avgload5period.csv extractor\avgload5period.csv -copy hwy\iter%ITER%\avgload5period_vehclasses.csv extractor\avgload5period_vehclasses.csv +copy hwy\iter%ITER%\avgload5period.net OUTPUT\avgload5period.net +copy hwy\iter%ITER%\avgload5period.csv OUTPUT\avgload5period.csv +copy hwy\iter%ITER%\avgload5period_vehclasses.csv OUTPUT\avgload5period_vehclasses.csv :: Transit assignment results -mkdir extractor\trn -copy trn\TransitAssignment.iter3\trnline*.csv extractor\trn -copy trn\trnlink*.dbf extractor\trn -copy trn\trnlink.csv extractor\trn -copy trn\trnline.csv extractor\trn -copy trn\quickboards.xls extractor\trn +mkdir OUTPUT\trn +copy trn\TransitAssignment.iter3\trnline*.csv OUTPUT\trn +copy trn\trnlink*.dbf OUTPUT\trn +copy trn\trnlink.csv OUTPUT\trn +copy trn\trnline.csv OUTPUT\trn +copy trn\quickboards.xls OUTPUT\trn :: Demand results -copy main\householdData_%ITER%.csv extractor\main\householdData_%ITER%.csv -copy main\personData_%ITER%.csv extractor\main\personData_%ITER%.csv -copy main\indivTripData_%ITER%.csv extractor\main\indivTripData_%ITER%.csv -copy main\indivTourData_%ITER%.csv extractor\main\indivTourData_%ITER%.csv -copy main\jointTripData_%ITER%.csv extractor\main\jointTripData_%ITER%.csv -copy main\jointTourData_%ITER%.csv extractor\main\jointTourData_%ITER%.csv -copy main\wsLocResults_%ITER%.csv extractor\main\wsLocResults_%ITER%.csv +copy main\householdData_%ITER%.csv OUTPUT\main\householdData_%ITER%.csv +copy main\personData_%ITER%.csv OUTPUT\main\personData_%ITER%.csv +copy main\indivTripData_%ITER%.csv OUTPUT\main\indivTripData_%ITER%.csv +copy main\indivTourData_%ITER%.csv OUTPUT\main\indivTourData_%ITER%.csv +copy main\jointTripData_%ITER%.csv OUTPUT\main\jointTripData_%ITER%.csv +copy main\jointTourData_%ITER%.csv OUTPUT\main\jointTourData_%ITER%.csv +copy main\wsLocResults_%ITER%.csv OUTPUT\main\wsLocResults_%ITER%.csv :: Report results -copy logs\HwySkims.debug extractor\HwySkims.debug -copy logs\feedback.rpt extractor\feedback.rpt -copy logs\SpeedErrors.log extractor\SpeedErrors.log +copy logs\HwySkims.debug OUTPUT\HwySkims.debug +copy logs\feedback.rpt OUTPUT\feedback.rpt +copy logs\SpeedErrors.log OUTPUT\SpeedErrors.log :: Skim databases -:: mkdir extractor\skimDB -:: copy database\*.csv extractor\skimDB\*.csv +:: mkdir OUTPUT\skimDB +:: copy database\*.csv OUTPUT\skimDB\*.csv :: Trip tables -mkdir extractor\main -copy main\tripsEA.tpp extractor\main -copy main\tripsAM.tpp extractor\main -copy main\tripsMD.tpp extractor\main -copy main\tripsPM.tpp extractor\main -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 skims\hwyskmEA.tpp extractor\emfac\hwyskmEA.tpp -:: copy skims\hwyskmAM.tpp extractor\emfac\hwyskmAM.tpp -:: copy skims\hwyskmMD.tpp extractor\emfac\hwyskmMD.tpp -:: copy skims\hwyskmPM.tpp extractor\emfac\hwyskmPM.tpp -:: copy skims\hwyskmEV.tpp extractor\emfac\hwyskmEV.tpp - -:: copy skims\com_hwyskimEA.tpp extractor\emfac\com_hwyskimEA.tpp -:: copy skims\com_hwyskimAM.tpp extractor\emfac\com_hwyskimAM.tpp -:: copy skims\com_hwyskimMD.tpp extractor\emfac\com_hwyskimMD.tpp -:: copy skims\com_hwyskimPM.tpp extractor\emfac\com_hwyskimPM.tpp -:: copy skims\com_hwyskimEV.tpp extractor\emfac\com_hwyskimEV.tpp - -:: copy nonres\tripsTrkEA.tpp extractor\emfac\tripsTrkEA.tpp -:: copy nonres\tripsTrkAM.tpp extractor\emfac\tripsTrkAM.tpp -:: copy nonres\tripsTrkMD.tpp extractor\emfac\tripsTrkMD.tpp -:: copy nonres\tripsTrkPM.tpp extractor\emfac\tripsTrkPM.tpp -:: copy nonres\tripsTrkEV.tpp extractor\emfac\tripsTrkEV.tpp +mkdir OUTPUT\main +copy main\tripsEA.tpp OUTPUT\main +copy main\tripsAM.tpp OUTPUT\main +copy main\tripsMD.tpp OUTPUT\main +copy main\tripsPM.tpp OUTPUT\main +copy main\tripsEV.tpp OUTPUT\main +copy main\ShadowPricing_7.csv OUTPUT\main + +mkdir OUTPUT\nonres +copy nonres\ixDaily2015.tpp OUTPUT\nonres +copy nonres\ixDailyx4.tpp OUTPUT\nonres + +:: copy skims\hwyskmEA.tpp OUTPUT\emfac\hwyskmEA.tpp +:: copy skims\hwyskmAM.tpp OUTPUT\emfac\hwyskmAM.tpp +:: copy skims\hwyskmMD.tpp OUTPUT\emfac\hwyskmMD.tpp +:: copy skims\hwyskmPM.tpp OUTPUT\emfac\hwyskmPM.tpp +:: copy skims\hwyskmEV.tpp OUTPUT\emfac\hwyskmEV.tpp + +:: copy skims\com_hwyskimEA.tpp OUTPUT\emfac\com_hwyskimEA.tpp +:: copy skims\com_hwyskimAM.tpp OUTPUT\emfac\com_hwyskimAM.tpp +:: copy skims\com_hwyskimMD.tpp OUTPUT\emfac\com_hwyskimMD.tpp +:: copy skims\com_hwyskimPM.tpp OUTPUT\emfac\com_hwyskimPM.tpp +:: copy skims\com_hwyskimEV.tpp OUTPUT\emfac\com_hwyskimEV.tpp + +:: copy nonres\tripsTrkEA.tpp OUTPUT\emfac\tripsTrkEA.tpp +:: copy nonres\tripsTrkAM.tpp OUTPUT\emfac\tripsTrkAM.tpp +:: copy nonres\tripsTrkMD.tpp OUTPUT\emfac\tripsTrkMD.tpp +:: copy nonres\tripsTrkPM.tpp OUTPUT\emfac\tripsTrkPM.tpp +:: copy nonres\tripsTrkEV.tpp OUTPUT\emfac\tripsTrkEV.tpp :: Save the control file -copy CTRAMP\runtime\mtcTourBased.properties extractor\mtcTourBased.properties -copy CTRAMP\runtime\mtcTourBased.properties extractor\logsums.properties +copy CTRAMP\runtime\mtcTourBased.properties OUTPUT\mtcTourBased.properties +copy CTRAMP\runtime\mtcTourBased.properties OUTPUT\logsums.properties :: Accessibility files -mkdir extractor\accessibilities -copy accessibilities\nonMandatoryAccessibilities.csv extractor\accessibilities -copy accessibilities\mandatoryAccessibilities.csv extractor\accessibilities -copy skims\accessibility.csv extractor\accessibilities +mkdir OUTPUT\accessibilities +copy accessibilities\nonMandatoryAccessibilities.csv OUTPUT\accessibilities +copy accessibilities\mandatoryAccessibilities.csv OUTPUT\accessibilities +copy skims\accessibility.csv OUTPUT\accessibilities :: Accessibility files - model results -mkdir extractor\logsums -copy logsums\householdData_%ITER%.csv extractor\logsums -copy logsums\personData_%ITER%.csv extractor\logsums -copy logsums\indivTripData_%ITER%.csv extractor\logsums -copy logsums\indivTourData_%ITER%.csv extractor\logsums -copy logsums\wsLocResults_%ITER%.csv extractor\logsums +mkdir OUTPUT\logsums +copy logsums\householdData_%ITER%.csv OUTPUT\logsums +copy logsums\personData_%ITER%.csv OUTPUT\logsums +copy logsums\indivTripData_%ITER%.csv OUTPUT\logsums +copy logsums\indivTourData_%ITER%.csv OUTPUT\logsums +copy logsums\wsLocResults_%ITER%.csv OUTPUT\logsums :: summaries from logsumJoiner -copy logsums\shopDCLogsum.csv extractor\logsums -copy logsums\tour_shopDCLogsum.csv extractor\logsums -copy logsums\workDCLogsum.csv extractor\logsums -copy logsums\person_workDCLogsum.csv extractor\logsums -copy logsums\mandatoryAccessibilities.csv extractor\logsums -copy logsums\nonMandatoryAccessibilities.csv extractor\logsums +copy logsums\shopDCLogsum.csv OUTPUT\logsums +copy logsums\tour_shopDCLogsum.csv OUTPUT\logsums +copy logsums\workDCLogsum.csv OUTPUT\logsums +copy logsums\person_workDCLogsum.csv OUTPUT\logsums +copy logsums\mandatoryAccessibilities.csv OUTPUT\logsums +copy logsums\nonMandatoryAccessibilities.csv OUTPUT\logsums :: Core summaries -mkdir extractor\core_summaries -copy core_summaries\*.* extractor\core_summaries -mkdir extractor\updated_output -copy updated_output\*.* extractor\updated_output +mkdir OUTPUT\core_summaries +copy core_summaries\*.* OUTPUT\core_summaries +mkdir OUTPUT\updated_output +copy updated_output\*.* OUTPUT\updated_output :: metrics -mkdir extractor\metrics -copy metrics extractor\metrics +mkdir OUTPUT\metrics +copy metrics OUTPUT\metrics if exist metrics\ITHIM ( - mkdir extractor\metrics\ITHIM - copy metrics\ITHIM\*.* extractor\metrics\ITHIM + mkdir OUTPUT\metrics\ITHIM + copy metrics\ITHIM\*.* OUTPUT\metrics\ITHIM ) :success -echo ExtractKeyFiles into extractor for PBAU Complete -echo ENDED EXTRACTOR RUN %DATE% %TIME% >> logs\feedback.rpt +echo ExtractKeyFiles into OUTPUT for PBAU Complete +echo ENDED OUTPUT RUN %DATE% %TIME% >> logs\feedback.rpt :done \ No newline at end of file From de8d7e18dfc6848f710ccee7a31b7b3b8ab15853 Mon Sep 17 00:00:00 2001 From: David Hensle Date: Tue, 7 Nov 2023 21:07:56 +0000 Subject: [PATCH 4/6] add cap class 61 and up from latest travel-model-one --- model-files/scripts/block/SpeedCapacity_1hour.block | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/model-files/scripts/block/SpeedCapacity_1hour.block b/model-files/scripts/block/SpeedCapacity_1hour.block index fe4dfda66..b8efcb502 100644 --- a/model-files/scripts/block/SpeedCapacity_1hour.block +++ b/model-files/scripts/block/SpeedCapacity_1hour.block @@ -4,6 +4,7 @@ SPDCAP CAPACITY[21] = 1950, 2100, 1600, 700, 1550, 0, 1000, 2200, 2200, 1700 SPDCAP CAPACITY[31] = 1950, 2100, 1600, 700, 1550, 0, 1000, 2200, 1950, 1000 SPDCAP CAPACITY[41] = 2000, 2150, 1650, 900, 1550, 0, 1050, 2250, 2000, 1050 SPDCAP CAPACITY[51] = 2000, 2150, 1650, 950, 1550, 0, 1050, 2250, 2050, 1100 +SPDCAP CAPACITY[61] = 2000, 2150 SPDCAP SPEED[01] = 40, 55, 40, 10, 30, 18, 20, 55, 55, 40 SPDCAP SPEED[11] = 40, 55, 40, 15, 30, 18, 25, 55, 60, 45 @@ -11,6 +12,6 @@ SPDCAP SPEED[21] = 45, 60, 45, 20, 35, 18, 30, 60, 65, 55 SPDCAP SPEED[31] = 45, 60, 45, 25, 35, 18, 30, 60, 50, 25 SPDCAP SPEED[41] = 50, 65, 50, 30, 40, 18, 35, 65, 45, 30 SPDCAP SPEED[51] = 50, 65, 55, 35, 40, 18, 40, 65, 50, 40 -SPDCAP SPEED[61] = 0, 0, 0 +SPDCAP SPEED[61] = 50, 75 -REPORT SPEED = YES CAPACITY = YES ;report speed/capacity tables in network +REPORT SPEED = YES CAPACITY = YES ;report speed/capacity tables in network \ No newline at end of file From a87bde8687801336551cc44e6ca1aa47081cefde Mon Sep 17 00:00:00 2001 From: David Hensle Date: Thu, 9 Nov 2023 18:03:45 +0000 Subject: [PATCH 5/6] BCA output analysis --- model-files/RunCoreSummaries.bat | 48 +++++++------- tm151-python27.yml | Bin 2124 -> 2104 bytes utilities/PBA40/RunMetrics.bat | 15 ++++- utilities/PBA40/metrics/RunResults.py | 71 +++++++++++++-------- utilities/PBA40/metrics/transitcrowding.py | 15 +++-- 5 files changed, 90 insertions(+), 59 deletions(-) diff --git a/model-files/RunCoreSummaries.bat b/model-files/RunCoreSummaries.bat index 2474d6c69..cfe573b20 100644 --- a/model-files/RunCoreSummaries.bat +++ b/model-files/RunCoreSummaries.bat @@ -50,22 +50,22 @@ if %NEED_SUMMARY% GTR 0 ( echo. :: convert the summaries to tde for just this dir -for %%X in ("%TARGET_DIR%\core_summaries\*.rdata") DO ( - if not exist "%TARGET_DIR%\core_summaries\%%~nX.tde" ( - python "%CODE_DIR%\RdataToTableauExtract.py" "%TARGET_DIR%\core_summaries" "%TARGET_DIR%\core_summaries" %%~nxX - if %ERRORLEVEL% GTR 0 goto done +@REM for %%X in ("%TARGET_DIR%\core_summaries\*.rdata") DO ( +@REM if not exist "%TARGET_DIR%\core_summaries\%%~nX.tde" ( +@REM python "%CODE_DIR%\RdataToTableauExtract.py" "%TARGET_DIR%\core_summaries" "%TARGET_DIR%\core_summaries" %%~nxX +@REM if %ERRORLEVEL% GTR 0 goto done - echo. - ) -) +@REM echo. +@REM ) +@REM ) :: convert the avgload5period.csv -if not exist "%TARGET_DIR%\core_summaries\avgload5period.tde" ( - python "%CODE_DIR%\csvToTableauExtract.py" "%TARGET_DIR%\hwy\iter%ITER%" "%TARGET_DIR%\core_summaries" avgload5period.csv - if %ERRORLEVEL% GTR 0 goto done +@REM if not exist "%TARGET_DIR%\core_summaries\avgload5period.tde" ( +@REM python "%CODE_DIR%\csvToTableauExtract.py" "%TARGET_DIR%\hwy\iter%ITER%" "%TARGET_DIR%\core_summaries" avgload5period.csv +@REM if %ERRORLEVEL% GTR 0 goto done - echo. -) +@REM echo. +@REM ) :: create trn\trnline.csv if not exist "%TARGET_DIR%\trn\trnline.csv" ( @@ -74,18 +74,18 @@ if not exist "%TARGET_DIR%\trn\trnline.csv" ( ) :: convert the transit files -if not exist "%TARGET_DIR%\core_summaries\trnline.tde" ( - FOR %%H in (EA AM MD PM EV) DO ( - FOR %%J in (loc lrf exp hvy com) DO ( - rem walk -> transit -> walk - python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_wlk_%%J_wlk.csv - rem drive -> transit -> walk - python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_drv_%%J_wlk.csv - rem walk -> transit -> drive - python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_wlk_%%J_drv.csv - ) - ) -) +@REM if not exist "%TARGET_DIR%\core_summaries\trnline.tde" ( +@REM FOR %%H in (EA AM MD PM EV) DO ( +@REM FOR %%J in (loc lrf exp hvy com) DO ( +@REM rem walk -> transit -> walk +@REM python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_wlk_%%J_wlk.csv +@REM rem drive -> transit -> walk +@REM python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_drv_%%J_wlk.csv +@REM rem walk -> transit -> drive +@REM python "%CODE_DIR%\csvToTableauExtract.py" --header "name,mode,owner,frequency,line time,line dist,total boardings,passenger miles,passenger hours,path id" --output trnline.tde --join "%CODE_DIR%\reference-transit-modes.csv" --append "%TARGET_DIR%\trn\TransitAssignment.iter%ITER%" "%TARGET_DIR%\core_summaries" trnline%%H_wlk_%%J_drv.csv +@REM ) +@REM ) +@REM ) endlocal diff --git a/tm151-python27.yml b/tm151-python27.yml index 3a502733be558947aa9178eef1dbfa7e24214148..99f29b7ddfc30048f74fa2af832d1f01fa5a792e 100644 GIT binary patch delta 33 lcmX>jutQ*j1l#5~ws(w^r?HDnmSGd(v1Kq~&|@$FV*sqo2fF|O delta 34 ocmdlXa7JK*1lwdW4lzz+20aD?AU2$=$S67a04v{S3AT5P0FTxPCjbBd diff --git a/utilities/PBA40/RunMetrics.bat b/utilities/PBA40/RunMetrics.bat index 21571ca8d..25eb74a1b 100644 --- a/utilities/PBA40/RunMetrics.bat +++ b/utilities/PBA40/RunMetrics.bat @@ -171,10 +171,21 @@ if not exist metrics\transit_boards_miles.csv ( rem Input: trn\quickboards.xls rem Output: metrics\transit_board_miles.csv call python "%CODE_DIR%\transit.py" trn\quickboards.xls + IF ERRORLEVEL 2 goto error +) + +if not exist metrics\transit_crowding.csv ( + rem Summarize quickboards output to pull daily boardings and passenger miles + rem Input: trn\quickboards.xls + rem Output: metrics\transit_board_miles.csv + call python "%CODE_DIR%\transitcrowding.py" "%CD%" + IF ERRORLEVEL 2 goto error ) -if not exist "%ALL_PROJECT_METRICS_DIR%" (mkdir "%ALL_PROJECT_METRICS_DIR%") -python "%CODE_DIR%\RunResults.py" metrics "%ALL_PROJECT_METRICS_DIR%" +:: if not exist "%ALL_PROJECT_METRICS_DIR%" (mkdir "%ALL_PROJECT_METRICS_DIR%") +:: all project metrics dir set as default value in RunResults.py, can optionally pass with --all_projects_dir +python "%CODE_DIR%\RunResults.py" "%CD%" +IF ERRORLEVEL 2 goto error :cleanup move *.PRN logs diff --git a/utilities/PBA40/metrics/RunResults.py b/utilities/PBA40/metrics/RunResults.py index 79030f1b1..4d4ec01da 100644 --- a/utilities/PBA40/metrics/RunResults.py +++ b/utilities/PBA40/metrics/RunResults.py @@ -46,7 +46,7 @@ class RunResults: REQUIRED_KEYS = [ 'Project ID' , # String identifier for the project 'Project Name', # Descriptive name for the project - 'County' , # County where the project is located + # 'County' , # County where the project is located 'Project Type', # Categorization of the project 'Project Mode', # Road or transit submode. Used for Out-of-vehicle Transit Travel Time adjustments 'Future' , # Future scenario to run the project @@ -138,13 +138,16 @@ def __init__(self, rundir, overwrite_config=None): Read configuration and input data. """ - self.ppa_master_input = "L:\\RTP2021_PPA\\Projects\\PPAMasterInput.xlsx" + self.ppa_master_input = "Z:\\RTP2025_PPA\\Projects\\PPAMasterInput.xlsx" # read the configs - self.rundir = os.path.join(os.path.abspath(rundir), 'OUTPUT', 'metrics') + # self.rundir = os.path.join(os.path.abspath(rundir), 'OUTPUT', 'metrics') + self.rundir = os.path.abspath('metrics') # if this is a baseline run, then read from configs_base sheet of master input file # else this is a project run, then read from configs_projects sheet of master input file #if 'CaltrainMod_00' not in rundir: #for RTFF + print("rundir:", rundir) + print("self.rundir:", self.rundir) if len(rundir) > 22: configs_df = pd.read_excel(self.ppa_master_input, sheet_name='configs_projects', header=0) configs_df = configs_df.drop(['Base Model', 'Base ID', 'Future Run', 'Iteration', 'Full Name'], axis=1) @@ -217,44 +220,44 @@ def __init__(self, rundir, overwrite_config=None): print("") # read the csvs self.auto_times = \ - pd.read_table(os.path.join(self.rundir, "auto_times.csv"), + pd.read_csv(os.path.join(self.rundir, "auto_times.csv"), sep=",", index_col=[0,1]) # print self.auto_times self.autos_owned = \ - pd.read_table(os.path.join(self.rundir, "autos_owned.csv"), + pd.read_csv(os.path.join(self.rundir, "autos_owned.csv"), sep=",") self.autos_owned['total autos'] = self.autos_owned['households']*self.autos_owned['autos'] self.autos_owned.set_index(['incQ','autos'],inplace=True) # print self.autos_owned self.parking_costs = \ - pd.read_table(os.path.join(self.rundir, "parking_costs.csv"), + pd.read_csv(os.path.join(self.rundir, "parking_costs.csv"), sep=",") # print self.parking_costs.head() self.vmt_vht_metrics = \ - pd.read_table(os.path.join(self.rundir, "vmt_vht_metrics.csv"), + pd.read_csv(os.path.join(self.rundir, "vmt_vht_metrics.csv"), sep=",", index_col=[0,1]) # print self.vmt_vht_metrics self.nonmot_times = \ - pd.read_table(os.path.join(self.rundir, "nonmot_times.csv"), + pd.read_csv(os.path.join(self.rundir, "nonmot_times.csv"), sep=",", index_col=[0,1,2]) # print self.nonmot_times self.transit_boards_miles = \ - pd.read_table(os.path.join(self.rundir, "transit_boards_miles.csv"), + pd.read_csv(os.path.join(self.rundir, "transit_boards_miles.csv"), sep=",", index_col=0) # print self.transit_boards_miles self.transit_times_by_acc_mode_egr = \ - pd.read_table(os.path.join(self.rundir, "transit_times_by_acc_mode_egr.csv"), + pd.read_csv(os.path.join(self.rundir, "transit_times_by_acc_mode_egr.csv"), sep=",", index_col=[0,1,2,3]) # print self.transit_times_by_acc_mode_egr self.transit_times_by_mode_income = \ - pd.read_table(os.path.join(self.rundir, "transit_times_by_mode_income.csv"), + pd.read_csv(os.path.join(self.rundir, "transit_times_by_mode_income.csv"), sep=",", index_col=[0,1]) # print self.transit_times_by_mode_income @@ -317,15 +320,15 @@ def __init__(self, rundir, overwrite_config=None): # on M roadway_netfile = os.path.abspath(os.path.join(self.rundir, "..", "avgload5period_vehclasses.csv")) if os.path.exists(roadway_netfile): - self.roadways_df = pd.read_table(roadway_netfile, sep=",") + self.roadways_df = pd.read_csv(roadway_netfile, sep=",") #print "Read roadways from %s" % roadway_netfile roadway_read = True # on model machine for reading baseline if not roadway_read: - roadway_netfile = os.path.abspath(os.path.join(self.rundir, "..", "extractor", "avgload5period_vehclasses.csv")) + roadway_netfile = os.path.abspath(os.path.join(self.rundir, "..", "OUTPUT", "avgload5period_vehclasses.csv")) if os.path.exists(roadway_netfile): - self.roadways_df = pd.read_table(roadway_netfile, sep=",") + self.roadways_df = pd.read_csv(roadway_netfile, sep=",") print "Read roadways from %s" % roadway_netfile roadway_read = True @@ -337,7 +340,7 @@ def __init__(self, rundir, overwrite_config=None): sys.exit(2) roadway_netfile = os.path.abspath(os.path.join(self.rundir, "..", "hwy", "iter%s" % os.environ['ITER'], "avgload5period_vehclasses.csv")) - self.roadways_df = pd.read_table(roadway_netfile, sep=",") + self.roadways_df = pd.read_csv(roadway_netfile, sep=",") print "Read roadways from %s" % roadway_netfile roadway_read = True @@ -355,7 +358,7 @@ def __init__(self, rundir, overwrite_config=None): for filename in ['mandatoryAccessibilities', 'nonMandatoryAccessibilities']: accessibilities = \ - pd.read_table(os.path.join(self.rundir, "..", "logsums", "%s.csv" % filename), + pd.read_csv(os.path.join(self.rundir, "..", "logsums", "%s.csv" % filename), sep=",") accessibilities.drop('destChoiceAlt', axis=1, inplace=True) accessibilities.set_index(['taz','subzone'], inplace=True) @@ -383,7 +386,7 @@ def __init__(self, rundir, overwrite_config=None): self.nonmandatoryAccessibilities = accessibilities self.accessibilityMarkets = \ - pd.read_table(os.path.join(self.rundir, "..", "core_summaries", "AccessibilityMarkets.csv"), + pd.read_csv(os.path.join(self.rundir, "..", "core_summaries", "AccessibilityMarkets.csv"), sep=",") self.accessibilityMarkets.rename(columns={'num_persons':'%s_num_persons' % col_prefix, @@ -1557,11 +1560,14 @@ def calculateBenefitCosts(self, project_dir, all_projects_dir): ################################################# self.bc_metrics.name = 'values' - all_proj_filename = os.path.join(os.getcwd(), all_projects_dir, csv_name) + all_proj_filename = os.path.join(all_projects_dir, csv_name) self.bc_metrics.to_csv(all_proj_filename, header=True, float_format='%.5f') - print("Wrote the bc metrics csv %s" % csv_name) + print("Wrote the bc metrics csv %s" % all_proj_filename) + self.bc_metrics.to_csv(os.path.join(os.getcwd(), "metrics", csv_name), header=True, float_format='%.5f') + print("Wrote the bc metrics csv %s" % os.path.join(os.getcwd(), "metrics", csv_name)) - copyfile(BC_detail_workbook, os.path.join(project_folder_name,"..","..","all_projects_bc_workbooks", workbook_name)) + # copyfile(BC_detail_workbook, os.path.join(project_folder_name,"..","..","all_projects_bc_workbooks", workbook_name)) + copyfile(BC_detail_workbook, os.path.join(all_projects_dir, workbook_name)) print("Copied BC workbook into all_projects_bc_workbooks directory") @@ -2576,11 +2582,15 @@ def writeCostsWorksheet(self, workbook, bc_metrics, scen_minus_baseline=True): parser = argparse.ArgumentParser(usage=USAGE) parser.add_argument('project_dir', help="The directory with the run results csvs.") - parser.add_argument('all_projects_dir', - help="The directory in which to write the Benefit/Cost summary Series") + parser.add_argument('--all_projects_dir', + help="The directory in which to write the Benefit/Cost summary Series", + default="Z:\\RTP2025_PPA\\Projects\\all_project_metrics") args = parser.parse_args(sys.argv[1:]) - rr = RunResults(args.project_dir) + project_dir = os.path.basename(args.project_dir) + + # rr = RunResults(args.project_dir) + rr = RunResults(project_dir) rr.createBaseRunResults() rr.calculateDailyMetrics() @@ -2589,13 +2599,18 @@ def writeCostsWorksheet(self, workbook, bc_metrics, scen_minus_baseline=True): rr.base_results.calculateDailyMetrics() rr.updateDailyMetrics() - # save the quick summary + # save the quick summary locally and to all_project_dir + assert os.path.exists(args.all_projects_dir), "Cannot find output directory %s" % args.all_projects_dir if rr.base_dir: - quicksummary_csv = os.path.join(os.getcwd(),args.all_projects_dir, "quicksummary_%s_base%s.csv" % (rr.config.loc['Project ID'], rr.config.loc['base_dir'])) + quicksummary_csv = os.path.join(args.all_projects_dir, "quicksummary_%s_base%s.csv" % (rr.config.loc['Project ID'], rr.config.loc['base_dir'])) + rr.quick_summary.to_csv(quicksummary_csv, float_format='%.5f', header=False) + quicksummary_csv = os.path.join(os.getcwd(), "metrics", "quicksummary_%s_base%s.csv" % (rr.config.loc['Project ID'], rr.config.loc['base_dir'])) + rr.quick_summary.to_csv(quicksummary_csv, float_format='%.5f', header=False) else: - quicksummary_csv = os.path.join(os.getcwd(),args.all_projects_dir, "quicksummary_base%s.csv" % rr.config.loc['Project ID']) + quicksummary_csv = os.path.join(args.all_projects_dir, "quicksummary_base%s.csv" % rr.config.loc['Project ID']) + rr.quick_summary.to_csv(quicksummary_csv, float_format='%.5f', header=False) + quicksummary_csv = os.path.join(os.getcwd(), "metrics", "quicksummary_base%s.csv" % rr.config.loc['Project ID']) + rr.quick_summary.to_csv(quicksummary_csv, float_format='%.5f', header=False) - rr.quick_summary.to_csv(quicksummary_csv, float_format='%.5f') - #print rr.quick_summary rr.calculateBenefitCosts(args.project_dir, args.all_projects_dir) diff --git a/utilities/PBA40/metrics/transitcrowding.py b/utilities/PBA40/metrics/transitcrowding.py index 3f9e30d35..bfd8031b8 100644 --- a/utilities/PBA40/metrics/transitcrowding.py +++ b/utilities/PBA40/metrics/transitcrowding.py @@ -236,7 +236,8 @@ def move_pseudo_line_ridership(trn_link_df, pseudo_lines): ch.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')) logger.addHandler(ch) # file handler - fh = logging.FileHandler(os.path.join(my_args.project_dir, "OUTPUT", "metrics", LOG_FILE), mode='w') + # fh = logging.FileHandler(os.path.join(my_args.project_dir, "OUTPUT", "metrics", LOG_FILE), mode='w') + fh = logging.FileHandler(os.path.join(my_args.project_dir, "metrics", LOG_FILE), mode='w') fh.setLevel(logging.DEBUG) fh.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')) logger.addHandler(fh) @@ -244,7 +245,8 @@ def move_pseudo_line_ridership(trn_link_df, pseudo_lines): logging.info("Args: {}".format(my_args)) # import seat capacities from lookup file - seatcap_file = "\\\\mainmodel\\MainModelShare\\travel-model-one-master\\utilities\\PBA40\\metrics\\transitSeatCap.csv" + # seatcap_file = "\\\\mainmodel\\MainModelShare\\travel-model-one-master\\utilities\\PBA40\\metrics\\transitSeatCap.csv" + seatcap_file = os.path.join(os.getcwd(), "CTRAMP", "scripts", "metrics", "transitSeatCap.csv") transit_seatcap_df = pd.read_csv(seatcap_file) transit_seatcap_df.columns=transit_seatcap_df.columns.str.replace('%','pct') transit_seatcap_df.rename(columns={"VEHTYPE":"veh_type_updated", "100pctCapacity":"standcap"},inplace=True) @@ -253,7 +255,8 @@ def move_pseudo_line_ridership(trn_link_df, pseudo_lines): # read the transit files all_trn_df = pd.DataFrame() for timeperiod in ['AM','EA','EV','MD','PM']: - trn_file = os.path.join(my_args.project_dir, 'OUTPUT', 'trn', 'trnlink{}_ALLMSA.dbf'.format(timeperiod)) + # trn_file = os.path.join(my_args.project_dir, 'OUTPUT', 'trn', 'trnlink{}_ALLMSA.dbf'.format(timeperiod)) + trn_file = os.path.join(my_args.project_dir, 'trn', 'trnlink{}_ALLMSA.dbf'.format(timeperiod)) dbf = simpledbf.Dbf5(trn_file) trn_df = dbf.to_dataframe() trn_df["period"] = timeperiod @@ -360,12 +363,14 @@ def move_pseudo_line_ridership(trn_link_df, pseudo_lines): all_trn_df.sort_values(by=["MODE","NAME","period","SEQ"], inplace=True) # writing file with all columns into output\metrics folder of the project - transit_crowding_filename = os.path.join(my_args.project_dir, 'OUTPUT', 'metrics', "transit_crowding_complete.csv") + # transit_crowding_filename = os.path.join(my_args.project_dir, 'OUTPUT', 'metrics', "transit_crowding_complete.csv") + transit_crowding_filename = os.path.join(my_args.project_dir, 'metrics', "transit_crowding_complete.csv") all_trn_df.to_csv(transit_crowding_filename, header=True, index=False) logging.info("Wrote {} lines to {}".format(len(all_trn_df), transit_crowding_filename)) # writing essential columns into output\metrics folder of the project - transit_crowding_filename = os.path.join(my_args.project_dir, 'OUTPUT', 'metrics', "transit_crowding.csv") + # transit_crowding_filename = os.path.join(my_args.project_dir, 'OUTPUT', 'metrics', "transit_crowding.csv") + transit_crowding_filename = os.path.join(my_args.project_dir, 'metrics', "transit_crowding.csv") all_trn_df[['NAME', 'SYSTEM','SEQ','A','B','AB_BRDA','period','ivtt_hours',\ 'effective_ivtt_ukdft','effective_ivtt_metrolinx', 'effective_ivtt_metrolinx_max2pt5',\ 'crowding_penalty_hrs_ukdft', 'crowding_penalty_hrs_metrolinx', 'crowding_penalty_hrs_metrolinx_max2pt5' From 25c62bc786a8b382028aecfd9afc0238fbd8b046 Mon Sep 17 00:00:00 2001 From: David Hensle Date: Thu, 9 Nov 2023 21:06:10 +0000 Subject: [PATCH 6/6] BCA project paths --- utilities/PBA40/metrics/RunResults.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/utilities/PBA40/metrics/RunResults.py b/utilities/PBA40/metrics/RunResults.py index 4d4ec01da..ba7489276 100644 --- a/utilities/PBA40/metrics/RunResults.py +++ b/utilities/PBA40/metrics/RunResults.py @@ -126,7 +126,7 @@ class RunResults: - def __init__(self, rundir, overwrite_config=None): + def __init__(self, rundir, overwrite_config=None, find_base_in_Z_drive=False): """ Parameters ---------- @@ -147,18 +147,24 @@ def __init__(self, rundir, overwrite_config=None): # else this is a project run, then read from configs_projects sheet of master input file #if 'CaltrainMod_00' not in rundir: #for RTFF print("rundir:", rundir) - print("self.rundir:", self.rundir) if len(rundir) > 22: configs_df = pd.read_excel(self.ppa_master_input, sheet_name='configs_projects', header=0) configs_df = configs_df.drop(['Base Model', 'Base ID', 'Future Run', 'Iteration', 'Full Name'], axis=1) configs_df.insert(0,'Folder','') - configs_df['Folder'] = configs_df[['Foldername - Project', 'Foldername - Future']].apply(lambda x: '\\'.join(x), axis=1) + # configs_df['Folder'] = configs_df[['Foldername - Project', 'Foldername - Future']].apply(lambda x: '\\'.join(x), axis=1) + configs_df['Folder'] = configs_df['Foldername - Future'] configs_df.drop(['Foldername - Project', 'Foldername - Future'], axis=1) else: configs_df = pd.read_excel(self.ppa_master_input, sheet_name='configs_base', header=0) + if find_base_in_Z_drive: + self.rundir = os.path.join('Z:\\RTP2025_PPA\\Projects', rundir, 'OUTPUT', 'metrics') + + print("self.rundir:", self.rundir) + configs_df = configs_df.T configs_df.columns = configs_df.iloc[0] configs_df = configs_df[1:] + # print("cols:", configs_df.columns) self.config = configs_df[[rundir]].iloc[:,0] self.config['Project Run Dir'] = self.rundir @@ -419,7 +425,8 @@ def createBaseRunResults(self): print self.base_dir #print base_overwrite_config self.base_results = RunResults(rundir = self.base_dir, - overwrite_config=base_overwrite_config) + overwrite_config=base_overwrite_config, + find_base_in_Z_drive=True) def updateDailyMetrics(self): """ @@ -685,7 +692,7 @@ def calculateConsumerSurplus(config, daily_results, # copy Tableau template into the project folder for mapping cs_tableau_filename = os.path.join(debug_dir, "consumer_surplus_{}.twb".format(config['Foldername - Future'])) - cs_tableau_template="\\\\mainmodel\\MainModelShare\\travel-model-one-master\\utilities\\PBA40\\metrics\\consumer_surplus.twb" + cs_tableau_template="Z:\\RTP2025_PPA\\code\\TM151\\travel-model-one\\utilities\\PBA40\\metrics\\consumer_surplus.twb" copyfile(cs_tableau_template, cs_tableau_filename) print("Copied file to {}".format(cs_tableau_filename))