Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle
, '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

Dev accessibilities - #614

Merged
jpn-- merged 138 commits into
developfrom
unknown repository
Jan 28, 2023
Merged

Dev accessibilities#614
jpn-- merged 138 commits into
developfrom
unknown repository

Conversation

@ghost

@ghostghost commented Oct 4, 2022

Copy link
Copy Markdown

Draft pull request for disaggregate accessibilities. Works with 1 and 2 zone models. Tested but some issues remain:

  • Optional sampling and soft-merge methods using kmeans/naive bayes require sklearn package not part of testing suite. Disabled these imports for now. However, the pre-sampling method could/should be improved to use the weighted sampling method used in activitysim.
  • difficulty testing multiprocess, it appears vehicle model does not pass mp test. Unsure if related or isolated issue.

@dhensle
dhensle marked this pull request as ready for review October 31, 2022 17:41

# Assign persons to households
rep = (
pd.DataFrame(util.named_product(hhid=households[hhid], index=persons.index))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the proto population does not allow households to have different household sizes nor different household member composition. Is that intended?

hinccat1: [1, 2, 3, 4] # Income categories
hworkers: 1 # Household workers
veh: [0, 1, 2] # Household vehicles
persons: 2 # Two persons household

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can household size vary in the proto population? e.g. persons: [1, 2, 3]. And can households have different composition? e.g. type 1 household has one working adult and one school child, type 2 household has one working adult and one retiree. In applications, household size and composition could have impact on mode chocie logsum.

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're correct, this was created as specified in the 'Disaggregate Accessibilities Implementation Plan' (https://github.com/ActivitySim/activitysim/wiki/Project-Meeting-2022.03.22).

You can change the household size, but you can't have multiple household sizes. E.g., you can't have a 2 person household and a 3 person household because persons must then be mapped to the households and this greatly complicates the generation procedure.

I agree that users may want this functionality, but is a bit out of scope. However, I think a simple solution for complicated cases would be to just let users to optionally create their own person/household/tour templates tables manually in a csv that gets read in. I just added this to the latest commit.

grade: 0 # Not attending
timeFactorWork: 1 # mean
timeFactorNonWork: 1 # mean
mapped_fields:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think users would benefit from more detailed documentation on these settings in case they want to change them. E.g. when does it require users to define mappings for all vs some attributes; what is the minimum required attributes to create/map (seems like at least the ones used in the mode choice and location choice uec specs). I could be wrong but it seems there are some underlying rules like no need to define two workers in the proto pop.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are person attributes specified in the plan document. However, the timeFactorNonWork and timeFactorWork are not necessary to ActivitySim and have been removed. But will mention in documentation that the proto tables must include all fields necessary to run your models.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Where can I find the plan document?

Comment threadactivitysim/abm/tables/disaggregate_accessibility.py
sample_idx = sorted(sample_idx)
elif method and method.lower() == "kmeans":
# Performs a simple k-means clustering using centroid XY coordinates
centroids_df = pipeline.get_table("maz_centroids")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems kmeans will not work with one-zone system. Can we add assert before this?

@ghostghostDec 7, 2022

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added assertion for 2-zone systems. 1-zone could be implemented in future but may not be needed if aggressive sampling isn't typically requires for one-zone systems. This will require more work to ensure variable zoned centroid tables are loaded properly in tables/disaggregate_accessibility.py.

@jpn--jpn-- added this to the Phase 7 milestone Dec 13, 2022
@i-am-sijia

Copy link
Copy Markdown
Member

@nick-fournier-rsg Thank you for addressing my comments. One new question - Should at least one 2-zone example model be updated to include disagg accessibility? Right now disagg accessibility is only tested within the 1-zone MTC extended model.

@i-am-sijia

Copy link
Copy Markdown
Member

Confirmed sandag 2-zone example ran on my end, thanks for adding it.

@jpn--
jpn-- merged commit f800b95 into ActivitySim:developJan 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@i-am-sijia@jpn--@nick-fournier@dhensle