Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diff between old NW and NW used by MTC #1

Draft
wants to merge 421 commits into
base: transit_2050_tm1518
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
421 commits
Select commit Hold shift + click to select a range
f1b8e51
Cobmined two project phases into one.
shimonisrael Dec 5, 2020
265b1a9
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
shimonisrael Dec 5, 2020
8975571
Added 'FBP_SM_035_Peninsula_101_OnOffRamps'
shimonisrael Dec 5, 2020
51482ec
Add 'FBP_SM_042_Hwy1_ManorDrive'
shimonisrael Dec 5, 2020
7baad30
Add 'FBP_CC_038_SR242_Clayton_OnOffRamps'
shimonisrael Dec 7, 2020
e3453f2
Added I-280 Mainline Improvements from County line to Sunnyvale project
Dec 7, 2020
cdefc78
Missing comma
Dec 8, 2020
d2f2fc2
Added 'FBP_SL_042_Jepson_2B_2C' and 'FBP_SL_042_Jepson_2A'
shimonisrael Dec 8, 2020
4e32450
Add 'FBP_CC_045_SanPabloDam_Interchange_Phase2'
shimonisrael Dec 9, 2020
6e27cc7
adding 'MAJ_Bay_Area_Forward_all' to all years after 2025 (to update …
FlaviaTsang Dec 10, 2020
4770aaa
Add 'FBP_SC_047_I280_Winchester_OffRamp'
shimonisrael Dec 10, 2020
b55cced
Add 'FBP_SC_076_US101_Taylor_Interchange'
shimonisrael Dec 10, 2020
00b242e
Added Brentwood Intermodal Transit Center
Dec 11, 2020
878cc11
Added 'FBP_CC_030_OakleyAmtrak'
shimonisrael Dec 11, 2020
3205f0b
Bay Area Forward kwargs
Dec 12, 2020
da0206d
Moved Oakland/Alameda Access Project before BAF
Dec 12, 2020
8b39cd6
Added the Marin/Sonoma Narrows project
Dec 14, 2020
0971da5
Add 'FBP_SC_101_BrokawBridgeWide'
shimonisrael Dec 14, 2020
34dc1ae
Move RRSP_Alameda_Point_Transit_Improvements to 2025
lmz Dec 15, 2020
09ffefa
Move MAJ_WETA_Service_Frequency_Increase to 2025
lmz Dec 15, 2020
a623ea1
Add SR-262 Mission Boulevard | Phase 1 project
Dec 15, 2020
347f7d5
Move MAJ_MTC050027_Berkeley_Ferry to 2025
lmz Dec 16, 2020
9b0d626
Moved ALA150004_EastBay_BRT to COMMITTED_PROJECTS 2020 trn
lmz Dec 16, 2020
8cd7c3f
Moved FBP_SL_026_SolExpressBus 2020 to COMMITTED_PROJECTS
lmz Dec 16, 2020
904dcc3
Remove EXP_uncommitted_all 2020
lmz Dec 16, 2020
f95e367
Add comment about toll setting
lmz Dec 16, 2020
e2eb789
Removed EXP_Blueprint 2020 since they're the same as EXP_Blueprint_No…
lmz Dec 16, 2020
d7fa1ed
Added I-680/Stoneridge Drive Overcrossing Widening
Dec 16, 2020
2af1261
Add 'FBP_CC_019_CCCTA_Freq_Increase'
shimonisrael Dec 16, 2020
ec2d785
Add 'FBP_CC_024_Oakley_PNR_Tri_Delta'
shimonisrael Dec 16, 2020
de33d82
Changed order of 2045 projects
Dec 17, 2020
0a48e23
Add 'FBP_SM_020_Regional_Express_Buses'
shimonisrael Dec 18, 2020
ad042fc
Added 'STIP_ProduceAve'
shimonisrael Dec 18, 2020
429c944
Added Treasure Island ferry
Dec 18, 2020
9223c74
Added Seaplane Lagoon Ferry
Dec 18, 2020
fa8afed
Add 'FBP_SC_083_US101_Zanker_Skyport_Interchange'
shimonisrael Dec 18, 2020
4c38f51
Added Hercules Train Station
Dec 18, 2020
6d4c25e
Added 'FBP_SC_041_Envision_Highway_Minor'
shimonisrael Dec 18, 2020
4dd9330
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
shimonisrael Dec 18, 2020
e745d90
Added 'FBP_SM_033_US101_Holly_Interchange'
shimonisrael Dec 19, 2020
2ec0fb6
Added 'FBP_SL_019_BeniciaRoad_Diet'
shimonisrael Dec 19, 2020
a157a3b
Add 'FBP_SL_023_WestTexasRoad_Diet'
shimonisrael Dec 19, 2020
9024444
Added 'FBP_SL_022_SonomaBlvd_Diet'
shimonisrael Dec 19, 2020
91664c0
Added 'FBP_SL_020_MilitaryWest_Diet'
shimonisrael Dec 19, 2020
b7c6eee
Added 'FBP_SC_052_I280_HOV_SanMateo_Magdalena'
shimonisrael Dec 19, 2020
bf74b86
Add 'FBP_SM_034_Route92_ElCamino_Interchange'
shimonisrael Dec 19, 2020
490efd8
Added 'FBP_SC_081_US101_SR237'
shimonisrael Dec 19, 2020
494a89c
Update ID from SC-052 to SC-108
shimonisrael Dec 21, 2020
d0182da
Added Napa Airport Junction project
Dec 21, 2020
21b1b2c
Add 'MAJ_Sonoma_Frequency_Increase' and move some road diet projects …
shimonisrael Dec 21, 2020
2bc65f4
Added 'FBP_SN_012_PetalumaBlvd_Diet'
shimonisrael Dec 22, 2020
5d02db4
Added SR 29 Gateway Improvements | Phase 2
Dec 22, 2020
b3eca2a
Added SR-29/Imola Ave Park and Ride project
Dec 22, 2020
542f2f0
Added Newell Drive project
Dec 22, 2020
f6d729c
Added Trower Avenue Extension project
Dec 22, 2020
a74fae3
Added 'STIP_ITS_SM'
shimonisrael Dec 22, 2020
4e68c33
Removed 'FBP_SC_108_I280_HOV_SanMateo_Magdalena' as it's duplicative …
shimonisrael Dec 22, 2020
cf1f24c
Added 'FBP_SC_072_US101_Trimble_Interchange'
shimonisrael Dec 22, 2020
6c3f266
Added Balboa Park Station Area 2 project
Dec 22, 2020
ba85350
Missing comma
Dec 23, 2020
ea00a3c
Added 'FBP_SC_042_I280_Downtown_Access_Improvements'
shimonisrael Dec 23, 2020
781fd09
Added 'FBP_SM_032_US101_Willow_Interchange'
shimonisrael Dec 23, 2020
a54e02d
Added transit element to Trower Ave Ext. project
Dec 24, 2020
6446e92
updated to apply sea level rise effects to the Baseline for the EIR
FlaviaTsang Dec 24, 2020
97fb134
Added 'FBP_SM_027_US101_92'
shimonisrael Dec 24, 2020
f425533
Added Mission Bay Ferry
Jan 4, 2021
cd89ec5
Added 'FBP_SM_007_ElCamino_CompleteStreets'
shimonisrael Jan 8, 2021
409638b
Check format on commit
shimonisrael Jan 8, 2021
2158bef
Add 'FBP_SM_007_ElCamino_CompleteStreets'
shimonisrael Jan 8, 2021
1330485
adding kwargs for sea level rise inundation
FlaviaTsang Jan 14, 2021
35b568d
Added Envision Expressway (Tier 1 Expressway Plan) Major and Minor Pr…
Jan 20, 2021
8d1926f
Imola PNR is committed. Moved from BP to Committed
Jan 21, 2021
35c5bb1
Opening date updated from 2028 to 2036
Jan 21, 2021
77c3eb2
VTA Eastridge extension is not a committed project
Jan 22, 2021
091ac19
Revert "VTA Eastridge extension is not a committed project"
Jan 22, 2021
86bb239
This project opened in 2020
Jan 22, 2021
d357a0b
Project EXP_680F opens in 2025
Jan 23, 2021
b5ca777
New project opens links on 680 as HOV2+.
Jan 28, 2021
03e0fcf
Deleting net_spec_PBA50.py since the correct file is net_spec_bluepri…
lmz Jan 29, 2021
6015cb8
Update so we can use this for FBP (e.g. for transit service cuts)
lmz Feb 12, 2021
1dddf3d
Add optional second kwarg to build_network_mtc_add_project.py
lmz Feb 16, 2021
90459a9
Simplify build_network_mtc_blueprint.py
lmz Feb 23, 2021
13ee904
Renaming variables from BP to NET to be more clear
lmz Feb 23, 2021
f96f744
Enable building of EIR Alt1 and Alt2 networks via variants_[exclude,i…
lmz Feb 23, 2021
3ccc8af
remove NetworkProjects for EIR Alt1 (initial draft)
FlaviaTsang Feb 24, 2021
9ee61a1
Update for EIR Alt1 - highway projects
Feb 24, 2021
d70fc82
Revert "Update for EIR Alt1 - highway projects"
Feb 24, 2021
40c507d
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
Feb 24, 2021
58d612a
Update for EIR Alt1 - Changes to EL and projects removed from BP
Feb 24, 2021
08f9df0
Revert "Update for EIR Alt1 - Changes to EL and projects removed from…
Feb 24, 2021
588df5e
Update for EIR Alt1 - Changes to EL and projects removed from BP
Feb 24, 2021
c01762c
Added transit project to EIR Alt1
Mar 2, 2021
bb2ed86
Updates to strategy T11: Expand and Modernize Regional Rail
Mar 5, 2021
95881c9
Added Increase bus headways in HRAs project
Mar 8, 2021
b67e12b
Added Increase bus headways in connected community PDAs for EIR Alt2
Mar 9, 2021
fc77404
Add PPA Transbay bus project
Mar 9, 2021
201cb67
Remove Blueprint Transbay bus project from alternative 2
Mar 9, 2021
2e5e41d
Added VTA Orange Line Light Rail frequency boost for EIR Alt2
Mar 10, 2021
d59a755
Missing comma
Mar 10, 2021
6265378
New project for I-580 Express Bus to replace Valley Link
Mar 12, 2021
aa4544e
NOP - just update spacing, dict keys for readability
lmz Mar 12, 2021
f6689f6
Added revert of Valley Link bus lines in 2040
Mar 15, 2021
4184308
Added project Changes to ReX Green (EIR Alt 2 only)
Mar 17, 2021
4568a18
Revert "Added project Changes to ReX Green (EIR Alt 2 only)"
Mar 17, 2021
447de08
Added Changes to ReX Green (EIR Alt 2 only_
Mar 17, 2021
93bca9d
Added Changes to ReX Blue (EIR Alt 2 only)
Mar 18, 2021
58c3b82
Change in order of EIR1 Freq Boosts project
Apr 19, 2021
c2bab37
Reorder some projects to make EIR Alt1 work
Apr 20, 2021
23c5c5e
Change in order of projects to fix BP netwroks
Apr 20, 2021
e38113e
Change in project order to build BP networks
Apr 21, 2021
4f4fbf0
Reorder the projects to get right frequencies for Alt1
May 4, 2021
224f081
Change in order of EIR1 boosts in 2035
May 5, 2021
392ba3e
Added project that fixes Alt2
May 18, 2021
4f15f50
Split the EIR Alt2 fix project by model year
May 20, 2021
1f7ed6f
move "RRSP_E14_Mission_Corridor" to after 'FBP_MU_029_ACRapid_2025'
yuqiww Jun 4, 2021
2643c47
apply different frequency settings for project "EIR2_HRA_Freq_Incr" i…
yuqiww Jun 4, 2021
137cfc7
add SMART North Petaluma station project
yuqiww Jul 12, 2021
a8ae736
Change I680 Bus on Shoulder project opening year to 2025
Jul 15, 2021
ffea8e3
Added project to destroy SR-37 links on EIR Alt1
Aug 18, 2021
18a3933
added set_capclass override (needed for changing speed limits)
FlaviaTsang Oct 22, 2021
10e5034
clean up git ignore
FlaviaTsang Oct 22, 2021
48e170f
create net_spec_STIP2021.py and build_network_mtc_stip2021.py
yuqiww Nov 3, 2021
69b860c
fix bugs
yuqiww Nov 3, 2021
b0a697f
STIP network building updates
lmz Nov 3, 2021
0b42791
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
lmz Nov 3, 2021
d9eccaf
add RRSP_Alameda_Point_Transit_Improvements 'built' part to STIP comm…
yuqiww Nov 5, 2021
6354cff
add STIP2021 project "MAJ_BRT030001_BART_to_SanJose"
yuqiww Nov 8, 2021
1d57fed
add STIP2021 project "STIP_ITS_SM"
yuqiww Nov 8, 2021
263c01d
it should be "STIP2022" instead of "STIP2021"
yuqiww Nov 8, 2021
8ec5c75
add STIP2022 project 'STIP2022_SM190009_US101SM_EXP'
yuqiww Nov 9, 2021
7cf8452
add STIP2022 project 'STIP2022_CC170017_I680NB_EXP_P1'
yuqiww Nov 10, 2021
712a382
add STIP2022 project 'FBP_AL_045_Oak_Ala_Access_Pr'
yuqiww Nov 10, 2021
5f628ac
add STIP2022 project 'STIP2022_SCL110001_US101SV_EXP_P5'
yuqiww Nov 10, 2021
3bec1eb
Update net_spec_STIP2022.py
yuqiww Nov 10, 2021
2609be9
add STIP2022 project 'FBP_CC_051_SR4_Operation_Improvements_WB'
yuqiww Nov 10, 2021
2abccc5
add STIP2022 project 'STIP2022_SM090014_SR92_US101_Direct_Conn'
yuqiww Nov 13, 2021
bb8b7cf
add STIP2022 project 'STIP2022_CC170017_I680_ITS_TOS'
yuqiww Nov 16, 2021
230df6a
remove 'STIP2022_SM090014_SR92_US101_Direct_Conn' from STIP2022
yuqiww Nov 18, 2021
f4eca2e
create net_spec for sensitivity test network creation
yuqiww Nov 18, 2021
341deea
delete because not needed
yuqiww Nov 19, 2021
9a16a6c
set up NextGenFwy networks: all Blueprint networks minus all lane tol…
yuqiww Dec 9, 2021
ae55a82
Use PBA50 for RRSP_Alameda_Point_Transit_Improvements since there wer…
lmz Dec 9, 2021
c200fe1
script to tag Network Project repos based on project version / networ…
yuqiww Feb 8, 2022
17ddffb
Correct tag from PBA50 to PBA50_Blueprint
natchison-mtc May 2, 2022
9b2b3e8
initial draft net spec for TIP 2023
FlaviaTsang May 3, 2022
7440376
adding projects already coded for PBA50
FlaviaTsang May 4, 2022
05f751d
Removing SF_070027_Yerba_Buena_Ramp_Imp from 2020
FlaviaTsang May 9, 2022
b9f367f
Add CC_170061_Bus_On_Shoulder_680BRT to 2030
natchison-mtc May 9, 2022
77c1859
Added FBP_CC_064_CaminoTassajaraWide to 2030 of TIP net_spec
natchison-mtc May 9, 2022
f0b9231
Added ALA090020_I880_Industrial_Parkway_AuxLanes to 2030 TIP netspec
natchison-mtc May 10, 2022
656d39a
Added FBP_CC_040_041_042_I680_SR4_Int_Phases_1_2_4_5 to 2030
natchison-mtc May 10, 2022
ad55ff0
Added SR-4 Operational Improvements to netspec
natchison-mtc May 10, 2022
dfb52c4
Added CC_070035_I80_SPDamRd_Int_Phase1 to 2030 netspec
natchison-mtc May 10, 2022
a99180b
Added FBP_CC_054_CrowCanyonWide to netspec
natchison-mtc May 11, 2022
84dc9b4
Add FBP_CC_063_BrentwoodWide to netspec
natchison-mtc May 11, 2022
e84b66c
PBA50_Blueprint tag added to FBP_CC_063_BrentwoodWide
natchison-mtc May 11, 2022
5dd69f6
Updated MAJ_Geary_BRT_Phase2 to year 2030 from 2025
shimonisrael May 11, 2022
fd34090
TIP 2023 project change 2025 to 2040
shimonisrael May 12, 2022
2d0e620
Added 'FBP_SC_103_MontagueWide' to TIP netspec
shimonisrael May 12, 2022
cf2817f
Move projects to TIP section of script
shimonisrael May 12, 2022
a5acbd0
restart from the project list in the blueprint - still need to drop c…
FlaviaTsang May 13, 2022
d4351e6
Move TIP projects to correct year
natchison-mtc May 13, 2022
799302d
Add TIP2023 as a Blueprint variant
FlaviaTsang May 14, 2022
5ad505d
Add PBA50 tag to Bay Area Forward in Every Milestone Year
shimonisrael May 16, 2022
a39aeb8
Remove Bay Area Forward for 2025
shimonisrael May 16, 2022
ab81a5b
Added PBA50 tag and removed project from TIP 2025
shimonisrael May 16, 2022
b195598
SR37 project changes to netspec
shimonisrael May 16, 2022
af80660
Added SF_Park_Presidio_HOV_Pilot to TIP Netspec
natchison-mtc May 16, 2022
0c7d871
Added 'SF_Lombard_HOV_Pilot' to TIP Netspec
natchison-mtc May 17, 2022
38e6ffc
Added ALA_I80_Powell_Transit_Access to netspec and relocated HOV pilo…
natchison-mtc May 17, 2022
f5363a0
Moved Yerba Buena Ramp project up the 2030 hwy and trn lists
natchison-mtc May 17, 2022
0026f4c
Remove duplicate CC_170061_Bus_On_Shoulder_680BRT
natchison-mtc May 17, 2022
79d142d
added the 'PBA50_Blueprint' tag to the NetworkProject 'EXP_uncommitte…
FlaviaTsang May 17, 2022
58a38b1
Remove space in CC_170061_Bus_On_Shoulder_680BRT name
natchison-mtc May 17, 2022
a2b73fd
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
natchison-mtc May 17, 2022
a470839
remove the extra space character
FlaviaTsang May 18, 2022
4ac0648
Move 'BP_Tolls_On_Congested_Freeways_2030' down so it's after its pre…
FlaviaTsang May 18, 2022
ebfe54f
Move SON090002_SMART_to_Windsor and SON090002_SMART_NorthPetaluma to …
FlaviaTsang May 18, 2022
9f404e4
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
natchison-mtc May 18, 2022
1580fce
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
natchison-mtc May 18, 2022
9c7cfd6
Added TIP ID number to I80/Powell Project and reordered BP_Tolls_On_C…
natchison-mtc May 18, 2022
02ab105
Added ALA110002_I880_Industrial_Interchange to Netspec
natchison-mtc May 18, 2022
a3253bb
Split FBP_SM_020_Regional_Express_Buses into 2 phases: 4 routes and 2…
FlaviaTsang May 19, 2022
cf0508f
Add ALA210028_I80_HOV_Bus_Lane_Ext to netspec
natchison-mtc May 19, 2022
f30716a
Add SCL210026_Julian_James_Conversion to Netspec
natchison-mtc May 19, 2022
57adddf
Moved EXP_uncommitted_all so the SR 85 Express Lanes project would re…
natchison-mtc May 24, 2022
a5c1fde
Update the netspec level tag to TIP_2023
natchison-mtc Jun 2, 2022
86b78fe
Update netspec level tag to PBA50_Blueprint and drop project level tags
natchison-mtc Jun 2, 2022
01e8a0f
Add NGF_NoProject_tollscsv to netspec to fix missing tolls.csv values
natchison-mtc Aug 15, 2022
75ec8ea
Remove EXP_uncommitted_noAllLaneTolling from net_spec_blueprint.py
natchison-mtc Sep 6, 2022
4c97e21
Add EXP_uncommitted_noAllLaneTolling back to Blueprint Projects
natchison-mtc Sep 8, 2022
af0973d
Relocate EXP_uncommitted_noAllLaneTolling to be immediately after EXP…
natchison-mtc Sep 9, 2022
e0655fc
Adding notes about the different "netspec level tags" we have
FlaviaTsang Oct 11, 2022
94659f1
Create setup.py and update __init__.py so this module can be installe…
lmz Oct 25, 2022
aa3c6b7
Fix for python3
lmz Oct 25, 2022
7821cda
Create copy of blueprint files for transit_recovery modeling
lmz Oct 25, 2022
f52a708
Updates for python3 and accommodate false errors returned from runtpp
lmz Oct 27, 2022
891f851
Simplify (remove blueprint stuff) from transit recovery network building
lmz Oct 27, 2022
e5dc561
Search for node number using getNum()
lmz Oct 28, 2022
63719bf
A few other fixes to make projects work in python3
lmz Oct 31, 2022
43c3cf0
Update for python3 and TransitRecovery
lmz Nov 2, 2022
dd7cc3c
fix moveBusesToHovAndExpressLanes - treat no truck lanes that are par…
FlaviaTsang Nov 10, 2022
a67b720
write out debug file
yuqiww Nov 11, 2022
dc905e3
Additional updates for python3
lmz Nov 18, 2022
8ade211
More python3-updates related to str/bytes
lmz Nov 18, 2022
c82d704
add NGF config to build_network_mtc.py
yuqiww Nov 21, 2022
c27eef6
Create net_spec_NGF.py
yuqiww Nov 21, 2022
9022d60
fix bugs in scripts for NGF network building
yuqiww Nov 21, 2022
00890e9
add documentation on NetworkWrangler installation
yuqiww Nov 21, 2022
94aa57a
Update README.md
yuqiww Nov 21, 2022
2dc1710
Use build_network_mtc.py rather than build_network_mtc_transit_recove…
lmz Nov 21, 2022
815452f
Python3 updates for TransitAssignmentData
lmz Nov 22, 2022
dc489b3
Exclude the SF congestion pricing cordon from the NoProject network
LufengLIN Nov 30, 2022
1b63017
Add options to --continue_on_warning and --skip_precheck_requirements
lmz Dec 1, 2022
965c67a
Exclude MAJ_SF_Congestion_Pricing
LufengLIN Dec 6, 2022
03a4d12
Committing untested for ReX_link development
lmz Dec 7, 2022
5d95181
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
lmz Dec 7, 2022
84e8d5c
Move ReX_link to NGF_PROJECTS
lmz Dec 8, 2022
2694d72
Add back --skip_precheck_requirements
lmz Dec 8, 2022
da17844
Log when checkValidityOfLinks() runs
lmz Dec 14, 2022
fb06770
Change the NGF base network from NGF_Networks_NoProject_03 to NGF_Net…
LufengLIN Dec 19, 2022
5e1cc4e
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
LufengLIN Dec 19, 2022
562591a
added my best guesses of the three pricing variants
FlaviaTsang Dec 21, 2022
7833dcc
For NGF, updated the PIVOT_DIR to use the NoProjectNoSFCordon netvariant
FlaviaTsang Jan 11, 2023
8851be2
Update the Blueprint with NGF_NoProject tag
LufengLIN Jan 11, 2023
0282739
Update with the latest project list
LufengLIN Jan 11, 2023
089f543
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
LufengLIN Jan 11, 2023
3be52bb
adding back the name for pricing strategy 2 for NGF
FlaviaTsang Jan 11, 2023
f3a6ea2
Test the 3 cordons
LufengLIN Jan 12, 2023
b081477
NGF_Networks_NoProject_06
LufengLIN Jan 12, 2023
f712dfb
drop 'variants_include' for 'NGF_NoProject_farefiles', as this proj w…
FlaviaTsang Jan 13, 2023
2aa048f
Simplify NGF building in the following ways:
lmz Jan 14, 2023
cc6b252
Add modeltype arg to setFreqs()
lmz Jan 14, 2023
c768f23
Remove NGF_IncreaseTrnFreqXferRoutes2BartCaltrainFerry from hwy
lmz Jan 14, 2023
b80252e
Add NGF_IncreaseTrnFreqXferRoutes2BartCaltrainFerry to net_spec_NGF
LufengLIN Jan 19, 2023
06014a6
Add NGF_TrunklineTrnFreqBoosts to net_spec_NGF
LufengLIN Jan 20, 2023
fb53010
Add NGF_TrunklineTrnFreqBoosts
LufengLIN Jan 23, 2023
5b67bfb
Fix TransitNetwork.line('all') so only TransitLines are returned
lmz Jan 23, 2023
6dfc02b
Consolidate kwargs to include_rail for NGF_TrunklineTrnFreqBoosts
lmz Jan 23, 2023
0ac1cef
Add projects into P1_AllLaneTolling for testing
lmz Jan 25, 2023
26734cd
Split P1,P2 pathways into P1a, P1b P2a, P2b for NGF network building
lmz Jan 31, 2023
b08571a
Update TRR net spec to only build 2015/2020 network
lmz Jan 31, 2023
be2aa13
Add Xfare_FareCoordination for transit favorable network
lmz Feb 2, 2023
3e2f9b3
Use the assignment that includes ReX links/express
lmz Feb 2, 2023
617fdb0
Update NGF_IncreaseTrnFreqXferRoutes2BartCaltrainFerry min_headway as…
lmz Feb 8, 2023
168cf24
NGF_Networks_NoProjectNoSFCordon_07
LufengLIN Feb 8, 2023
72193d8
use TAG = PBA50_Blueprint by default and handle alternative TAG with …
FlaviaTsang Feb 9, 2023
18b72c9
Fix the spacing before 'variants_exclude‘
LufengLIN Feb 9, 2023
e95e5a3
Merge branch 'master' of https://github.com/BayAreaMetro/NetworkWrangler
LufengLIN Feb 9, 2023
e6e87bc
Running with TM1518 for transit_2050 project
dhensle Nov 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 223 additions & 0 deletions .gitignore

Large diffs are not rendered by default.

39 changes: 33 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
Current Branch Changes:
=======================
This branch's purpose is to be used for TM1.5.1.10 model runs.
It was created from the 9 Feb 2023 commit e95e5a3.

please contact [email protected] with questions


NetworkWrangler
===============

Expand All @@ -8,23 +16,42 @@ set of projects to that base network.

The base network and resulting network are in the Citilabs Cube format (http://www.citilabs.com/software/cube/)

See also: [next generation Network Wrangler](https://github.com/wsp-sag/network_wrangler)

Contributors
=======
NetworkWrangler is the brainchild of Billy Charlton, who was the Deputy Director for Technology Services at SFCTA through 2011.
Contributors include:
* Elizabeth Sall, 2010-2014
* Lisa Zorn, 2010-2014
* Lisa Zorn, 2010-2014, 2018-Present (MTC fork)
* Dan Tischler, 2011-Present
* Drew Cooper, 2013-Present
* Bhargava Sana, 2015-Present

Usage
Install
=======
NetworkWrangler recently was updated to Python3. Recommand using conda to install and manage NetworkWrangler environment. For example, run the following commands in Anaconda Prompt:
```
conda env create -f M:\Software\Anaconda\NetworkWrangler_py3.yml
conda activate NetworkWrangler-py3
cd \NetworkWrangler
pip install -e .
```

Build a network by running the `build_network.py` script in the `/scripts` folder.

python build_network.py [-c configword] [-m test] network_specification.py
Usage
=======
If needed, set the PATHs before calling the build_network.py script, for example:
```
set PATH=%PATH%;C:\Users\mtcpb\.conda\envs\NetworkWrangler-py3;C:\Users\mtcpb\.conda\envs\NetworkWrangler-py3\Scripts
set PATH=%PATH%;C:\Program Files\Citilabs\CubeVoyager;
set PYTHONPATH=%PYTHONPATH%;C:\Users\mtcpb\Documents\GitHub\NetworkWrangler
set PYTHONPATH=%PYTHONPATH%;C:\Users\mtcpb\Documents\GitHub\NetworkWrangler\_static
```

With PATHs set, build a network by running the `build_network.py` script in the `/scripts` folder.
```
python build_network.py [-c configword] [-m test] network_specification.py
```

This will build a network using the specifications in `network_specification.py`, which should define the variables listed below (in this script)

Expand All @@ -34,4 +61,4 @@ If test mode is specified (with -m test), then the following happen:
* TAG is not used for TEST_PROJECTS

The [-c configword] is if you want an optional word for your network_specification.py
(e.g. to have multiple scenarios in one file). Access it via CONFIG_WORD.
(e.g. to have multiple scenarios in one file). Access it via CONFIG_WORD.
30 changes: 27 additions & 3 deletions Wrangler/HighwayNetwork.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,19 @@ def applyBasenetwork(self, parentdir, networkdir, gitdir, tierNetworkName):
# done
self.applyingBasenetwork = False

def saveNetworkFiles(self, suffix, to_suffix):
"""
Since roadway networks are not stored in memory but in files, this is useful
for when the network builder is doing something tricky.
"""
for filename in ["FREEFLOW.BLD", "turnsam.pen", "turnspm.pen", "turnsop.pen", "tolls.csv"]:
if to_suffix:
shutil.copy2(src=filename, dst="{}{}".format(filename, suffix))
WranglerLogger.debug("Copying {:20} to {}{}".format(filename, filename, suffix))
else:
shutil.copy2(src="{}{}".format(filename, suffix), dst=filename)
WranglerLogger.debug("Copying {:20} to {}".format(filename+suffix, filename))

def applyProject(self, parentdir, networkdir, gitdir, projectsubdir=None, **kwargs):
"""
Applies a roadway project by calling ``runtpp`` on the ``apply.s`` script.
Expand Down Expand Up @@ -145,6 +158,7 @@ def applyProject(self, parentdir, networkdir, gitdir, projectsubdir=None, **kwar

nodemerge = re.compile("NODEMERGE: \d+")
linkmerge = re.compile("LINKMERGE: \d+-\d+")
cube_success = re.compile("\s*(VOYAGER)\s+(ReturnCode)\s*=\s*([01])\s+")
license_error = False
for line in cubeStdout:
line = line.rstrip()
Expand All @@ -165,9 +179,18 @@ def applyProject(self, parentdir, networkdir, gitdir, projectsubdir=None, **kwar
time.sleep(1)
continue

if cuberet != 0 and cuberet != 1 and len(cubeStdout) > 1:

# cuberet may be wrong -- check last stdout
WranglerLogger.debug("checking cubeStdout[-1]: {}".format(cubeStdout[-1]))
# WranglerLogger.debug("match: {}".format(re.match(cube_success,cubeStdout[-1])))
if re.match(cube_success,cubeStdout[-1]):
WranglerLogger.debug("Overriding cuberet {} with 0 due to last cubeStdout line".format(cuberet))
cuberet = 0

if cuberet != 0 and cuberet != 1:
WranglerLogger.fatal("FAIL! Project: "+applyScript)
WranglerLogger.debug("cubeStdout: {}".format(cubeStdout))
WranglerLogger.fatal("FAIL! Project: {} cuberet={}".format(applyScript, cuberet))
raise NetworkException("HighwayNetwork applyProject failed; see log file")

else:
Expand Down Expand Up @@ -212,7 +235,7 @@ def mergeTolls(self, tollsfile, newtollsfile):
"""
Merge the given tolls file with the existing.
"""
WranglerLogger.debug("TODO: merging tolls")
WranglerLogger.debug("mergeTolls({},{}) called".format(tollsfile, newtollsfile))

# read the original file -- fac_index is the key
tolls_config = collections.OrderedDict()
Expand All @@ -222,6 +245,7 @@ def mergeTolls(self, tollsfile, newtollsfile):
# not using csv.DictReader because in python2, it doesn't read an ordered dict :(
for row in tolls_reader:
row_dict = collections.OrderedDict(zip(fieldnames, row))
WranglerLogger.debug("row_dict: {}".format(row_dict))
tolls_config[row_dict["fac_index"]] = row_dict
tolls.close()

Expand All @@ -245,7 +269,7 @@ def mergeTolls(self, tollsfile, newtollsfile):
newtolls.close()

# write it out
tolls = open(tollsfile, mode='wb')
tolls = open(tollsfile, mode='w', newline='') # newline arg passed because of https://docs.python.org/3/library/csv.html#id3
tolls_writer = csv.writer(tolls)
tolls_writer.writerow(fieldnames)
for fac_index, row in tolls_config.items():
Expand Down
48 changes: 31 additions & 17 deletions Wrangler/Network.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,31 @@ def _runAndLog(self, cmd, run_dir=".", logStdoutAndStderr=False, env=None):
if env:
myenv = copy.deepcopy(os.environ)
myenv.update(env)
# ranglerLogger.debug("Using environment {}".format(myenv))

proc = subprocess.Popen( cmd, cwd = run_dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, env=myenv )
retStdout = []
for line in proc.stdout:
line = line.strip(b'\r\n')
if logStdoutAndStderr: WranglerLogger.debug("stdout: " + line)
retStdout.append(line)

retStderr = []
for line in proc.stderr:
line = line.strip(b'\r\n')
if logStdoutAndStderr: WranglerLogger.debug("stderr: " + line)
retStderr.append(line)
retcode = proc.wait()
WranglerLogger.debug("Received %d from [%s] run in [%s]" % (retcode, cmd, run_dir))
# WranglerLogger.debug("Using environment {}".format(myenv))

try:
proc = subprocess.Popen( cmd, cwd = run_dir, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, env=myenv )
retStdout = []
for line in proc.stdout:
if type(line)==bytes: line = line.decode() # convert to string, not byetes
line = line.strip('\r\n')
if logStdoutAndStderr: WranglerLogger.debug("stdout: " + line)
retStdout.append(line)

retStderr = []
for line in proc.stderr:
if type(line)==bytes: line = line.decode() # convert to string, not byetes
line = line.strip('\r\n')
if logStdoutAndStderr: WranglerLogger.debug("stderr: " + line)
retStderr.append(line)
retcode = proc.wait()
WranglerLogger.debug("Received {} from [{}] run in [{}]".format(retcode, cmd, run_dir))

except Exception as inst:
WranglerLogger.error('Exception caught')
WranglerLogger.error(type(inst)) # the exception instance
WranglerLogger.error(inst.args) # arguments stored in .args
WranglerLogger.error(inst) # __str__ allows args to be printed directly,
return (retcode, retStdout, retStderr)

def getReqs(self, networkdir, projectsubdir=None, tag=None, projtype=None, tempdir=None):
Expand Down Expand Up @@ -419,12 +428,17 @@ def getCommit(self, gitdir):
Figures out the SHA1 hash commit string for the given gitdir (so gitdir is a git dir).
(e.g. a 40-character hex string)
"""
# WranglerLogger.debug("getCommit({}) called".format(gitdir))
# SET_CAPCLASS is special and setup by NetworkWrangler
if gitdir.endswith("set_capclass"):
return "set_capclass_N/A"

cmd = r"git log -1"
(retcode, retstdout, retstderr) = self._runAndLog(cmd, gitdir)
if len(retstdout)<3:
raise NetworkException("Git log failed; see log file")

m = re.match(git_commit_pattern, retstdout[0].decode("utf-8"))
m = re.match(git_commit_pattern, retstdout[0])
if not m:
raise NetworkException("Didn't understand git log output: [" + retstdout[0] + "]")

Expand Down
14 changes: 14 additions & 0 deletions Wrangler/Node.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os,sys
from .Logger import WranglerLogger

__all__ = ['Node']

Expand Down Expand Up @@ -46,6 +47,19 @@ def getNum(self):
"""
return abs(int(self.num))

def __eq__(self, other):
"""
For finding nodes in a list of Node objects
"""
if isinstance(other, int):
return int(self.num) == other
elif isinstance(other, Node):
return int(self.num) == int(other.num)
elif isinstance(other, str):
return int(self.num) == int(other)
else:
WranglerLogger.error("Node.__eq__ called with other type {}".format(type(other)))

def replaceNum(self, num):
"""
Replace the node number with the given num,
Expand Down
2 changes: 1 addition & 1 deletion Wrangler/Supplink.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Supplink(dict):
def __init__(self):
dict.__init__(self)

MODES_INV = dict((v,k) for k,v in Supplink.MODES.iteritems())
MODES_INV = dict((v,k) for k,v in Supplink.MODES.items())

self.id='' # string, e.g. "1-7719"
self.comment=None
Expand Down
31 changes: 15 additions & 16 deletions Wrangler/TransitAssignmentData.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,10 +173,9 @@ def initializeFields(self, headerRow=None):
"OWNER",
"AB_VOL","AB_BRDA","AB_XITA","AB_BRDB","AB_XITB",
"BA_VOL","BA_BRDA","BA_XITA","BA_BRDB","BA_XITB"]
# print("csvColnames = {}".format(self.csvColnames))

self.colnameToCsvIndex = dict((self.csvColnames[idx],idx) for idx in range(len(self.csvColnames)))

self.colnameToCsvIndex = dict((self.csvColnames[idx],idx) for idx in range(len(self.csvColnames)))

# copy these directly
self.trnAsgnFields = {"A": 'u4',
"B": 'u4',
Expand All @@ -189,7 +188,7 @@ def initializeFields(self, headerRow=None):
"NAME": 'a13',
"OWNER": 'a10',
}
self.trnAsgnCopyFields = self.trnAsgnFields.keys()
self.trnAsgnCopyFields = list(self.trnAsgnFields.keys())
# these are in the dbf not the csv (grrrr)
self.trnAsgnFields["FREQ"] = 'f4'
self.trnAsgnFields["SEQ"] = 'u1'
Expand Down Expand Up @@ -233,7 +232,6 @@ def initializeFields(self, headerRow=None):
for field in self.trnAsgnAdditiveFields:
self.aggregateFields[field]='f4'


def readTransitAssignmentCsvs(self):
"""
Read the transit assignment dbfs, the direct output of Cube's transit assignment.
Expand Down Expand Up @@ -264,7 +262,7 @@ def readTransitAssignmentCsvs(self):
numrecs = 0
totalrows = 0

filereader = csv.reader(open(filename, 'rb'), delimiter=',', quoting=csv.QUOTE_NONE)
filereader = csv.reader(open(filename, 'r'), delimiter=',', quoting=csv.QUOTE_NONE)
for row in filereader:

# header row?
Expand Down Expand Up @@ -294,16 +292,15 @@ def readTransitAssignmentCsvs(self):

self.trnAsgnTable = DataTable(numRecords=numrecs,
fieldNames=self.trnAsgnFields.keys(),
numpyFieldTypes=self.trnAsgnFields.values())
numpyFieldTypes=list(self.trnAsgnFields.values()))
ABNameSeqSet = set()
WranglerLogger.debug("Created dataTable")

# Go through the records
newrownum = 0 # row number in the trnAsgnTable,ABNameSeq_List -- rows we're keeping
oldrownum = 0 # row number in the csv,dbf -- all input rows

filereader = csv.reader(open(filename, 'rb'), delimiter=',', quoting=csv.QUOTE_NONE)

filereader = csv.reader(open(filename, 'r'), delimiter=',', quoting=csv.QUOTE_NONE)
# for the first csv only, also read the dbf for the freq and seq fields
if mode == self.MODES[0]:
if self.modelType == Network.MODEL_TYPE_CHAMP:
Expand Down Expand Up @@ -343,7 +340,6 @@ def readTransitAssignmentCsvs(self):
for field in self.trnAsgnCopyFields:

try:

# integer fields
if self.trnAsgnFields[field][0] in ['u','b']:
if row[self.colnameToCsvIndex[field]]=="":
Expand Down Expand Up @@ -403,6 +399,7 @@ def readTransitAssignmentCsvs(self):
ABNameSeq = tryABNameSeq
self.trnAsgnTable[newrownum]["ABNAMESEQ"] = ABNameSeq
ABNameSeqSet.add(ABNameSeq)
# WranglerLogger.debug("AABNAMESEQ={} type={}".format(ABNameSeq, type(ABNameSeq)))

ABNameSeq_List.append((int(row[self.colnameToCsvIndex["A"]]),
int(row[self.colnameToCsvIndex["B"]]),
Expand All @@ -425,12 +422,12 @@ def readTransitAssignmentCsvs(self):
self.trnAsgnTable[newrownum]["PERIODCAP"] = 0

# if we still don't have a system, warn
if self.trnAsgnTable[newrownum]["SYSTEM"] == "" and not warnline.has_key(linename):
if self.trnAsgnTable[newrownum]["SYSTEM"] == "" and linename not in warnline:
WranglerLogger.warning("No default system: " + linename)
warnline[linename] =1

#---------add in any grouping that may want to use
if self.lineToGroup.has_key(linename):
if linename in self.lineToGroup:
self.trnAsgnTable[newrownum]["GROUP"] = self.lineToGroup[linename]
else:
self.trnAsgnTable[newrownum]["GROUP"] = ""
Expand All @@ -446,7 +443,7 @@ def readTransitAssignmentCsvs(self):

# Add in the subsequent assignment files
else:

# print oldrownum, newrownum, ABNameSeq_List[newrownum]
# print row[self.colnameToCsvIndex["NAME"]], ABNameSeq_List[oldrownum][2]
if ((int(row[self.colnameToCsvIndex["A"]]) != ABNameSeq_List[newrownum][0]) or
Expand All @@ -462,7 +459,9 @@ def readTransitAssignmentCsvs(self):
row[self.colnameToCsvIndex["B"]] + " " + \
row[self.colnameToCsvIndex["NAME"]].rstrip()
if ABNameSeq_List[newrownum][3]>0:
ABNameSeq += " " + str(ABNameSeq_List[newrownum][3])
ABNameSeq += " " + str(ABNameSeq_List[newrownum][3])
# convert to bytes - the index in the dataTable is a byte string
ABNameSeq = ABNameSeq.encode('utf-8')
for field in self.trnAsgnAdditiveFields:
if row[self.colnameToCsvIndex[field]] !="":
self.trnAsgnTable[ABNameSeq][field] += float(row[self.colnameToCsvIndex[field]])
Expand Down Expand Up @@ -512,8 +511,8 @@ def buildAggregateTable(self):
ABSet.add(row["AB"])

self.aggregateTable = DataTable(numRecords=len(ABSet),
fieldNames=self.aggregateFields.keys(),
numpyFieldTypes=self.aggregateFields.values())
fieldNames=list(self.aggregateFields.keys()),
numpyFieldTypes=list(self.aggregateFields.values()))
ABtoRowIndex = {}
rowsUsed = 0
for row in self.trnAsgnTable:
Expand Down
4 changes: 2 additions & 2 deletions Wrangler/TransitCapacity.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ def getSystemAndVehicleType(self, linename, timeperiod):
Convenience function. Returns tuple: best guess of (system, vehicletype)
"""
linenameU = linename.upper()
if self.linenameToAttributes.has_key(linenameU):
if linenameU in self.linenameToAttributes:
return (self.linenameToAttributes[linenameU][TransitCapacity.ATTR_SYSTEM],
self.linenameToAttributes[linenameU][TransitCapacity.TIMEPERIOD_TO_VEHTYPIDX[timeperiod]])

Expand Down Expand Up @@ -183,7 +183,7 @@ def getFullname(self, linename, timeperiod):
Returns best guess of fullname, or empty string if unknown
"""
linenameU = linename.upper()
if self.linenameToAttributes.has_key(linenameU):
if linenameU in self.linenameToAttributes:
return self.linenameToAttributes[linenameU][TransitCapacity.ATTR_FULLNAME]
else:
return ""
Expand Down
Loading