it tidies up the input data directories into base, build, and output. Where base holds the base data, build holds the build network data and collects the results of incremental_demand, and output collects the results of the summary steps.
it refactors the driver code into a Model class that is shared between steps. This makes the code easier to manage and removes the ActivitySim dependency.
it fixes a couple bugs in the network module that caused the output link ids to get messed up. it also removes references to TAZs in the network module which really shouldn't know/care about TAZs.
it (and this was the whole point of everything) adds a new boolean setting to taz.yaml called impact_area_only. This causes the taz and trip tables to only use TAZs within a certain network distance to be used for the model calculations. First, the build and base networks are diffed to find changed nodes/links. These nodes are used as starting points for the a network scan of all affected nodes. TAZ centroids found in this list are used to filter the TAZ list for subsequent calculations. Both the bike network coefficient and bike max distance found in skim_settings.yaml are used to determine the affected network radius.
filtering 25 zones...
creating base network ...
creating build network ...
base and build links differ by 3 nodes.
base and build nodes differ by 3 nodes.
getting nearby TAZs from the build network...
loaded 12 zones
The network diffing step currently does not consider changes in the TAZ input file. The reasoning for this is that the code currently makes no use of the TAZ file except for the taz ID/node ID mapping. All other landuse attributes are ignored. When we add functionality to incorporate the landuse data then we'll want to diff the TAZ file for changes as well.
@blakerosenthal - it runs fine for me. It looks like we need to update the ambag_bike_model.py docstrings since it is run differently than before? Thanks.
This PR does a few useful things:
base
,build
, andoutput
. Wherebase
holds the base data,build
holds the build network data and collects the results ofincremental_demand
, andoutput
collects the results of the summary steps.Model
class that is shared between steps. This makes the code easier to manage and removes the ActivitySim dependency.taz.yaml
calledimpact_area_only
. This causes the taz and trip tables to only use TAZs within a certain network distance to be used for the model calculations. First, the build and base networks are diffed to find changed nodes/links. These nodes are used as starting points for the a network scan of all affected nodes. TAZ centroids found in this list are used to filter the TAZ list for subsequent calculations. Both the bike network coefficient and bike max distance found in skim_settings.yaml are used to determine the affected network radius.The network diffing step currently does not consider changes in the TAZ input file. The reasoning for this is that the code currently makes no use of the TAZ file except for the taz ID/node ID mapping. All other landuse attributes are ignored. When we add functionality to incorporate the landuse data then we'll want to diff the TAZ file for changes as well.