Skip to content

Commit

Permalink
workflow mods
Browse files Browse the repository at this point in the history
  • Loading branch information
jpn-- committed Mar 31, 2022
1 parent 5a74764 commit cd3add0
Show file tree
Hide file tree
Showing 10 changed files with 353 additions and 160 deletions.
39 changes: 37 additions & 2 deletions activitysim/standalone/compare.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def compare_trip_mode_choice(tablesets, title="Trip Mode Choice", grouping='prim

all_d = pd.concat(d, names=['source']).reset_index()

selection = alt.selection_point(
selection = alt.selection_multi(
fields=['trip_mode'], bind='legend',
)

Expand Down Expand Up @@ -196,7 +196,7 @@ def compare_work_district(
all_d[h] = all_d[h].map(district_names)
all_d[w] = all_d[w].map(district_names)

selection = alt.selection_point(
selection = alt.selection_multi(
fields=[w], bind='legend',
)

Expand All @@ -215,3 +215,38 @@ def compare_work_district(
)

return fig


def compare_runtime(combo_timing_log):
df = pd.read_csv(combo_timing_log, index_col='model_name')
df1 = df[['sharrow', 'legacy']].rename_axis(columns="source").unstack().rename('seconds').reset_index()
c = alt.Chart(df1, height={"step": 20}, )

result = c.mark_bar(
yOffset=-3,
size=6,
).transform_filter(
(alt.datum.source == 'legacy')
).encode(
x=alt.X('seconds:Q', stack=None),
y=alt.Y('model_name', type='nominal', sort=None),
color="source",
tooltip=['source', 'model_name', 'seconds']
) + c.mark_bar(
yOffset=4,
size=6,
).transform_filter(
(alt.datum.source == 'sharrow')
).encode(
x=alt.X('seconds:Q', stack=None),
y=alt.Y('model_name', type='nominal', sort=None),
color="source",
tooltip=['source', 'model_name', 'seconds']
) | alt.Chart(df1).mark_bar().encode(
color='source',
x='source',
y='sum(seconds)',
tooltip=['source', 'sum(seconds)']
)

return result
131 changes: 74 additions & 57 deletions activitysim/standalone/render.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,37 @@
import logging
import os
import nbformat as nbf
from nbconvert import HTMLExporter
import nbclient
import textwrap
from contextlib import contextmanager
from pathlib import Path
from xmle import Reporter

# from jupyter_contrib_nbextensions.nbconvert_support import TocExporter # problematic


@contextmanager
def chdir(path: Path):
"""
Sets the cwd within the context
Args:
path (Path): The path to the cwd
Yields:
None
"""

cwd = Path().absolute()
try:
os.chdir(path)
yield
finally:
os.chdir(cwd)



def render_notebook(nb_filename, cellcontent):
nb_filename = os.path.splitext(nb_filename)[0]
nb = nbf.v4.new_notebook()
Expand Down Expand Up @@ -36,76 +62,67 @@ def render_notebook(nb_filename, cellcontent):
f.write(body)


def render_comparison(html_filename, title, dist_skim="DIST", county_id="county_id"):
def render_comparison(html_filename, title, dist_skim="DIST", county_id="county_id", timing_log=None):

cells = [
f"[md]# {title}",
from activitysim.standalone.compare import load_final_tables, compare_trip_mode_choice, compare_trip_distance, compare_work_district, compare_runtime
from activitysim.standalone.skims import load_skims

"""
from activitysim.standalone.compare import load_final_tables, compare_trip_mode_choice, compare_trip_distance
from activitysim.standalone.skims import load_skims
""",
with chdir(os.path.dirname(html_filename)):

"""
data = load_final_tables(
{"sharrow": "output-sharrow", "legacy": "output-legacy"},
{"trips": "final_trips.csv"},
{"trips": "trip_id"},
{
"sharrow": "output-sharrow",
"legacy": "output-legacy",
},
{"trips": "final_trips.csv", "persons": "final_persons.csv", "land_use": "final_land_use.csv"},
{"trips": "trip_id", "persons": "person_id", "land_use": "zone_id"},
)
""",

f"[md]## Trip Mode Choice",
report = Reporter(title=title)

"""
compare_trip_mode_choice(data)
""",
]
if timing_log:
report << "## Model Runtime"
report << compare_runtime(timing_log)

if dist_skim:
dist_cells = [
f"[md]## Trip Distance",
report << "## Trip Mode Choice"
report << compare_trip_mode_choice(
data,
title=None,
)

f"""
if dist_skim:
skims = load_skims("../configs/network_los.yaml", "../data")
compare_trip_distance(
report << "## Trip Distance"

report << "### Trip Length Distribution <10 miles"
report << compare_trip_distance(
data,
skims,
"{dist_skim}",
dist_skim,
max_dist=10,
title="Trip Length Distribution <10 miles",
)
""",
title=None,
)

f"""
compare_trip_distance(
report << "### Trip Length Distribution Overall"
report << compare_trip_distance(
data,
skims,
"{dist_skim}",
title="Trip Length Distribution Overall",
)
""",
]
else:
dist_cells = []

if county_id:
work_county_cells = [
f"[md]## Workers by Home and Work County",

f"""
compare_work_district(
data,
district_id='{county_id}',
label='county',
hometaz_col='home_zone_id',
worktaz_col='workplace_zone_id',
data_dictionary="../configs/data_dictionary.yaml",
)"""
]
else:
work_county_cells = []

render_notebook(
html_filename,
work_county_cells + cells + dist_cells
)
dist_skim,
title=None,
)

work_district = compare_work_district(
data,
district_id=county_id,
label='county',
hometaz_col='home_zone_id',
worktaz_col='workplace_zone_id',
data_dictionary="../configs/data_dictionary.yaml",
)
if work_district is not None:
report << "## Workers by Home and Work County"
report << work_district


# save final report
report.save(os.path.basename(html_filename), overwrite=True)

0 comments on commit cd3add0

Please sign in to comment.