Comments (2)
Currently the code is hard-wired to know that there are two levels of geography below seed, and there are two dedicated processors for balancing those sub_levels.
We can make geographies flexible by specifying them in settings:
geographies: [REGION, PUMA, TRACT, TAZ]
seed_geography: PUMA
Automating the process of iterating down through the tree of sub-geographies should not be difficult, but it might be nice to retain the current feature that each level of sub-geography is handled as a separate step, with data pipeline checkpointing and restartability.
You could imagine moving the _MODELS list to the settings file (which might make sense architecturally for asim generally) and/or introducing a notion of sub-steps to be iterated through either inside or outside the checkpointing.
Interestingly, orca has a similar, but inverted, concept of step iteration built in, but which doesn't play well with out pipelining architecture. In orca, the entire list of steps is iterated over each iter_var.
We want it the other way round. Something like:
models:
- input_pre_processor
- setup_data_structures
- initial_seed_balancing
- meta_control_factoring
- final_seed_balancing
- integerize_final_seed_weights
- {step_name: sub_balancing, iter_vars: [TRACT, TAZ]}
- sub_balancing.TAZ
- expand_population
- summarize
- write_results
(Though we might want to use anchors in the settings file to avoid redundancy.)
from populationsim.
We decided to add to the pipeliner the ability to read an optional dictionary of arguments for each step. This has lots of uses and means the pipeline acts somewhat like DOS or Bash as well. So, for the example above, the model list will look something like:
models:
- input_pre_processor
- setup_data_structures
- initial_seed_balancing
- meta_control_factoring
- final_seed_balancing
- integerize_final_seed_weights
- sub_balancing, GEOG=TRACT
- sub_balancing, GEOG=TAZ
- expand_population
- summarize
- write_results
from populationsim.
Related Issues (20)
- repop-pop-pop feature - pipeline file is not updated HOT 2
- Convert distribution system to conda-forge HOT 1
- add to documentation based on Zephyr review
- Different outputs when using MultiProcessing HOT 9
- Installation process issues HOT 3
- example_calm_repop not running HOT 8
- Repop mode not populating the second level geography (example_calm_repop)
- Allow specification of non-boolean expressions HOT 1
- Running Error: ValueError("Lengths must match to compare")
- Running Error: Lengths must match to compare on "integerize_final_seed_weights'" HOT 9
- Adjust a third party synthetic population HOT 8
- WGTP and PWGTP Calculations HOT 6
- NumPy deprecation HOT 1
- ValueError: Buffer dtype mismatch, expected 'const int64_t' but got 'int' in setup_data_structures.py HOT 1
- ValueError exception running sub_balancing.geography=TRACT model: Length of values (2) does not match length of index (37) HOT 8
- Repop Error HOT 1
- Multiprocessing Start_time Error
- Randomness of PopulationSim outputs related to API calls HOT 2
- Installation outdated and not functional HOT 1
- example_calm NOT Running due to issues with activitysim
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from populationsim.