Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ActivitySim

Build StatusCoverage Status

The mission of the ActivitySim project is to create and maintain advanced, open-source, activity-based travel behavior modeling software based on best software development practices for distribution at no charge to the public.

The ActivitySim project is led by a consortium of Metropolitan Planning Organizations (MPOs) and other transportation planning agencies, which provides technical direction and resources to support project development. New member agencies are welcome to join the consortium. All member agencies help make decisions about development priorities and benefit from contributions of other agency partners.

Documentation

https://activitysim.github.io/activitysim

UAL FORK

UAL uses AcitivitySim as one component of an integrated transportation and land use simulation platform (PILATES). As such, most of our changes to the ActivitySim code are designed to facilitate dynamic reading and writing of data.

UAL Settings

We've augmented the canonical ActivitySim settings.yaml file with default parameters that are specific to the new submodel steps we've created. These parameters are found at the top of all of the settings.yaml files, and should look something like this:

# output
s3_output: False
# geographic settings
state_fips: 06
local_crs: EPSG:7131 # skims
create_skims_from_beam: True
beam_skims_url: https://<url of skims>
# urbansim data
create_inputs_from_usim_data: True
year: 2010
scenario: base
bucket_name: bayarea-activitysim
usim_data_store: model_data.h5

UAL runtime args

Most of the time our ActivitySim code will be executed as a Docker image, so any run-specific configs that might need to change from one run to the next had to be able to be specified at runtime. For the most part these arguments give the user the ability to override the UAL-specific settings mentioned above, which serve as defaults.

usage: simulation.py [-b BUCKET_NAME] [-y YEAR] [-s SCENARIO] [-u SKIMS_URL] [-x PATH_TO_REMOTE_DATA] [-w] [-h HOUSEHOLD_SAMPLE_SIZE]
optional arguments:
-b BUCKET_NAME, --bucket_name BUCKET_NAME
s3 bucket name
-y YEAR, --year YEAR data year
-s SCENARIO, --scenario SCENARIO
scenario
-u SKIMS_URL, --skims_url SKIMS_URL
url of skims .csv
-x PATH_TO_REMOTE_DATA, --path_to_remote_data PATH_TO_REMOTE_DATA
url of urbansim .h5 model data
-w, --write_to_s3 write output to s3?
-h HOUSEHOLD_SAMPLE_SIZE, --household_sample_size HOUSEHOLD_SAMPLE_SIZE
household sample size

If none of these are specified then ActivitySim will attempt read these settings from settings.yaml. If -x is not specified then ActivitySim will attempt to read/write data from s3 using a dynamically generate filepath like: s3://<bucket_name>/<input/output>/<scenario>/<year>/model_data.h5

UAL submodels

Activitysim expects all of the input data to be there before it starts up. Since we're creating the data dynamically, we have to run a few preprocessing steps before kicking off ActivitySim in earnest. We currently do this with a couple custom ActivitySim submodels that we call manually from the main simulation.py script. Eventually these should get pulled out of ActivitySim and moved into PILATES.

  • initialize_skims_from_beam.py: this module contains the create_skims_from_beam step which downloads the skims from a URL endpoint and transforms them into the format ActivitySim expects (skims.omx).
  • initalize_from_usim.py: this module contains the create_inputs_from_usim step which reads in UrbanSim-formatted land use and population data (usually stored as .h5) and transforms them to create the land_use.csv, households.csv, and persons.csv input files that ActivitySim expects.

There is also two submodels that get run in-sequence with the main ActivitySim submodels as specified in settings.yaml:

  • generate_beam_plans.py: this module contains the generate_beam_plans step which transforms the trips table into a person-plan based table of daily activities that can be read by BEAM.
  • write_outputs_to_s3.py: this module contains the write_outputs_to_s3 step which writes the activitysim outputs to AWS s3 so that the downstream simulation models (UrbanSim, BEAM, etc.) can use them as inputs for the next simulation iteration.

Docker

  • docker build -t <dockeruser>/activitysim .
  • docker run -w <working dir, e.g. "/activitysim/bay_area"> <dockeruser>/activitysim -b <s3 bucket> -y <input data year> -s <scenario> -u <skims url> -w

About

An Open Platform for Activity-Based Travel Modeling

Resources

Stars

2 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages