use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--
, '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

use all TAZs when using sharrow - #1027

Merged
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022
May 28, 2026
Merged

use all TAZs when using sharrow#1027
jpn-- merged 20 commits into
ActivitySim:mainfrom
driftlesslabs:patch-1022

Conversation

@jpn--

Copy link
Copy Markdown
Member

This pull request updates the trip destination model to improve compatibility with the "sharrow" mode by ensuring that all TAZs (Traffic Analysis Zones) are represented in aggregated data structures, even if some TAZs have no associated MAZs (Micro Analysis Zones). This change helps align the model's alternatives with TAZ-based skim matrices, which is particularly important when using the sharrow framework.

Sharrow compatibility and TAZ completeness:

  • Updated aggregate_size_term_matrix to accept an optional all_tazs parameter, ensuring that the resulting TAZ size term matrix includes all TAZs, filling in zeros for any TAZs without MAZs.
  • Modified destination_presample to pass the complete set of TAZs to aggregate_size_term_matrix when sharrow is enabled, guaranteeing all TAZs are present in the matrix.
  • Ensured that the alternatives DataFrame in destination_presample is reindexed to include all TAZs with zero fill when sharrow is active, so that the alternatives vector aligns with the TAZ skim structure.

Closes#1022.

@jpn--

Copy link
Copy Markdown
MemberAuthor

In writing a unit tests for this PR, I discovered a second problem: for two zone systems, thedtype for imported MAZ-to-MAZ data was not being controlled to match the dtype of the similarly named TAZ-to-TAZ skim, e.g. the MAZ data could be stored as float64 while the TAZ data is stored as float32. This has minor impacts on runtime, but can cause subtle bugs in handling 2-zone skim data with sharrow with the "fastmath" option turned on. This is not the first time that "fastmath" has tripped us up (there is already a note in the documentation about turning it off when finding these exact kinds of errors. It is super hard to diagnose these problems when they do occur so I decided the best course is to change the default on "fastmath" to False. Users can easily turn it back on for individual components when the performance gains are useful.

@jpn--
jpn-- requested a review from stefancoeDecember 24, 2025 01:04
@jpn--
jpn-- merged commit 279e4f9 into ActivitySim:mainMay 28, 2026
16 of 17 checks passed
@jpn--
jpn-- deleted the patch-1022 branch May 29, 2026 00:23
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.

'utility not aligned' error when running sharrow in test mode using uv, but not in conda using same version of Activitysim.

1 participant

@jpn--