Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc
, '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

Visualization Pull Request - #532

Merged
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1
Apr 12, 2022
Merged

Visualization Pull Request#532
jpn-- merged 102 commits into
ActivitySim:developfrom
wsp-sag:ft_vis_1

Conversation

@danielsclint

@danielsclintdanielsclint commented Dec 22, 2021

Copy link
Copy Markdown

#443: Visualization
#533: np.MachAr Deprecation (Hotfix)

Currently in DRAFT

Todo

Review Criteria Responses

  1. Does it contain all the required elements, including a runnable example, documentation, and tests?
    Yes. A runnable example is incorporated into example_mtc. Documentation has been updated to explain yaml and csv expression files used to configure the summarize model. New tests were created to check csv outputs from a minimal example.

  2. Does it implement good methods (i.e. is it consistent with good practices in travel modeling)?
    Yes. The summarize model produces outputs in a flexible, industry-standard format (csv) and integrates fully into the Activitysim modeling pipeline. It does not impact travel modeling results, but operates on these results.

  3. Are the runtimes reasonable and does it provide documentation justifying this claim?
    Yes. The model adds only seconds to model runtime on a standard workstation.

  4. Does it include non-Python code, such as C/C++? If so, does it compile on any OS and are compilation instructions included?
    Yes and no. The changes to the ActivitySim package are completely implemented in Python, but it does add an additional dependency to SimWrapper.

  5. Is it licensed with the ActivitySim license that allows the code to be freely distributed and modified and includes attribution so that the ‘provenance’ of the code can be tracked? Does it include an official release of ownership from the funding agency if applicable?
    This work was done under contract to AMPO Research Foundation, and, presumably, AMPO Research Foundation is providing the changes without any additional licensing beyond the existing ActivitySim licensing.

  6. Does it appropriately interact with the data pipeline (i.e. it doesn't create new ways of managing data)?
    The model ingests data from the pipeline and produces csv files in a standard "output" directory.

  7. Does it include regression tests to enable checking that consistent results will be returned when updates are made to the framework?
    The model does not impact modeling outputs. As such, no regression testing has been done.

  8. Does it include sufficient test coverage and test data for existing and proposed features?
    Yes. It includes a new test module with associated configuration files and input data.

  9. Any other comments or suggestions for improving the developer experience?
    No

Clint Danielsand others added 30 commits December 21, 2021 16:51
@jpn--
jpn-- requested a review from JoeJimFloodMarch 17, 2022 16:06
@JoeJimFlood

Copy link
Copy Markdown
Contributor

One comment I will make: I feel as though the way the aggregation maps are currently defined isn't super user-friendly. For example, the major access trip mode in the MTC example it's currently defined as follows:

map:
DRIVEALONEFREE: SOV
DRIVEALONEPAY: SOV
SHARED2FREE: HOV
SHARED2PAY: HOV
SHARED3FREE: HOV
SHARED3PAY: HOV
WALK_LOC: Walk to Transit
WALK_LRF: Walk to Transit
WALK_EXP: Walk to Transit
WALK_HVY: Walk to Transit
WALK_COM: Walk to Transit
DRIVE_LOC: Drive to Transit
DRIVE_LRF: Drive to Transit
DRIVE_EXP: Drive to Transit
DRIVE_HVY: Drive to Transit
DRIVE_COM: Drive to Transit
WALK: Non-Motorized
BIKE: Non-Motorized
TAXI: Ride Hail
TNC_SINGLE: Ride Hail
TNC_SHARED: Ride Hail

While this can be directly input into the pd.Series.map() function, the same information could be given by the following:

map:
SOV:
DRIVEALONEFREE
DRIVEALONEPAY
HOV:
SHARED2FREE
SHARED2PAY
SHARED3FREE
SHARED3PAY
Walk to Transit:
WALK_LOC
WALK_LRF
WALK_EXP
WALK_HVY
WALK_COM
Drive to Transit:
DRIVE_LOC
DRIVE_LRF
DRIVE_EXP
DRIVE_HVY
DRIVE_COM
Non-Motorized:
WALK
BIKE
Ride Hail:
TAXI
TNC_SINGLE
TNC_SHARED

This is less repetitive and more readable. Something like this would then need to be added before line 289 of summarize.py and 290 would need to be changed to use map instead of agg['map'] (I can make the change if needed):

map = {}
for value in agg['map']:
for key in agg['map'][value]:
map[key] = value

@jpn--
jpn-- marked this pull request as ready for review April 7, 2022 14:59
@jpn--
jpn-- merged commit ef05447 into ActivitySim:developApr 12, 2022
@i-am-sijia
i-am-sijia deleted the ft_vis_1 branch March 18, 2024 17:17
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.

12 participants

@danielsclint@coveralls@bhargavasana@esanchez01@chesterharvey@JoeJimFlood@e-lo@jpn--@joecastiglione@wusun2@i-am-sijia@billyc