Skip to content

Commit 35e09cb

Browse files
Merge branch 'image-push' into tags-combo-approach
2 parents 308eca0 + 1d0a937 commit 35e09cb

File tree

8 files changed

+76
-25
lines changed

8 files changed

+76
-25
lines changed

frontend/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:21.5.0-alpine
1+
FROM node:21.7.2-alpine
22
VOLUME /public/plots
33

44
RUN mkdir -p /public

frontend/docker/Dockerfile.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:21.5.0-alpine
1+
FROM node:21.7.2-alpine
22

33
RUN mkdir -p /public
44
WORKDIR /public

viz_scripts/Dockerfile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# python 3
2-
# TODO: Please change once all PR changes are final, so it reads from shankari/e-mission-server
3-
# FROM shankari/e-mission-server:master_2024-02-10--19-38
42
ARG DOCKER_IMAGE_TAG
5-
FROM mukuflash03/e-mission-server:tags-combo-approach_${DOCKER_IMAGE_TAG}
3+
FROM shankari/e-mission-server:master_${DOCKER_IMAGE_TAG}
64

75
VOLUME /plots
86

viz_scripts/docker/Dockerfile.dev

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# python 3
2-
# TODO: Please change once all PR changes are final, so it reads from shankari/e-mission-server
3-
# FROM shankari/e-mission-server:master_2024-02-10--19-38
2+
43
ARG DOCKER_IMAGE_TAG
5-
FROM mukuflash03/e-mission-server:tags-combo-approach_${DOCKER_IMAGE_TAG}
4+
FROM shankari/e-mission-server:master_${DOCKER_IMAGE_TAG}
65

76
VOLUME /plots
87

viz_scripts/generic_metrics.ipynb

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,24 @@
7474
"label_units, short_label, label_units_lower, distance_col, weight_unit = scaffolding.get_units(use_imperial)"
7575
]
7676
},
77+
{
78+
"cell_type": "markdown",
79+
"id": "796f59c7",
80+
"metadata": {},
81+
"source": [
82+
"### Color Mapping for labels"
83+
]
84+
},
85+
{
86+
"cell_type": "code",
87+
"execution_count": null,
88+
"id": "14e7260c",
89+
"metadata": {},
90+
"outputs": [],
91+
"source": [
92+
"colors_mode, colors_purpose = scaffolding.mapping_color_labels(dynamic_labels, dic_re, dic_pur)"
93+
]
94+
},
7795
{
7896
"cell_type": "markdown",
7997
"id": "intellectual-columbus",
@@ -130,7 +148,7 @@
130148
" labels_mc = expanded_ct['Mode_confirm'].value_counts(dropna=True).keys().tolist()\n",
131149
" values_mc = expanded_ct['Mode_confirm'].value_counts(dropna=True).tolist() \n",
132150
" plot_title = plot_title_no_quality+\"\\n\"+quality_text\n",
133-
" pie_chart_mode(plot_title,labels_mc,values_mc,file_name)\n",
151+
" pie_chart_mode(plot_title,labels_mc,values_mc,colors_mode,file_name)\n",
134152
" alt_text = store_alt_text_pie(pd.DataFrame(values_mc, labels_mc), file_name, plot_title)\n",
135153
" print(expanded_ct['Mode_confirm'].value_counts(dropna=True))\n",
136154
"except:\n",
@@ -162,7 +180,8 @@
162180
" values_mc = expanded_ct.query(trip_purpose_query).Mode_confirm.value_counts(dropna=True).tolist()\n",
163181
" commute_quality_text = scaffolding.get_quality_text(expanded_ct, expanded_ct.query(trip_purpose_query), \"commute\", include_test_users)\n",
164182
" plot_title= plot_title_no_quality+\"\\n\"+commute_quality_text\n",
165-
" pie_chart_mode(plot_title,labels_mc,values_mc,file_name)\n",
183+
" \n",
184+
" pie_chart_mode(plot_title,labels_mc,values_mc,colors_mode,file_name)\n",
166185
" alt_text = store_alt_text_pie(pd.DataFrame(values_mc, labels_mc), file_name, plot_title)\n",
167186
"except:\n",
168187
" debug_df.loc[\"Commute_trips\"] = len(expanded_ct.query(trip_purpose_query)) if \"Trip_purpose\" in expanded_ct.columns else 0\n",
@@ -194,7 +213,7 @@
194213
" labels_tp = expanded_ct['Trip_purpose'].value_counts(dropna=True).keys().tolist()\n",
195214
" values_tp = expanded_ct['Trip_purpose'].value_counts(dropna=True).tolist()\n",
196215
" plot_title= plot_title_no_quality+\"\\n\"+quality_text\n",
197-
" pie_chart_purpose(plot_title,labels_tp,values_tp,file_name)\n",
216+
" pie_chart_purpose(plot_title,labels_tp,values_tp,colors_purpose,file_name)\n",
198217
" alt_text = store_alt_text_pie(pd.DataFrame(values_tp, labels_tp), file_name, plot_title)\n",
199218
" print(expanded_ct['Trip_purpose'].value_counts(dropna=True))\n",
200219
"except:\n",
@@ -236,7 +255,7 @@
236255
" values_d10 = expanded_ct.loc[(expanded_ct['distance'] <= cutoff)].Mode_confirm.value_counts(dropna=True).tolist()\n",
237256
" d10_quality_text = scaffolding.get_quality_text(expanded_ct, expanded_ct[expanded_ct['distance'] <= cutoff], \"< \" + dist_threshold + \" \" + label_units_lower, include_test_users)\n",
238257
" plot_title = plot_title_no_quality+\"\\n\"+d10_quality_text\n",
239-
" pie_chart_mode(plot_title,labels_d10,values_d10,file_name)\n",
258+
" pie_chart_mode(plot_title,labels_d10,values_d10,colors_mode,file_name)\n",
240259
" alt_text = store_alt_text_pie(pd.DataFrame(values_d10, labels_d10), file_name, plot_title)\n",
241260
" print(expanded_ct.loc[(expanded_ct['distance'] <= cutoff)].Mode_confirm.value_counts(dropna=True))\n",
242261
"\n",
@@ -282,7 +301,7 @@
282301
" labels_m.append(x)\n",
283302
" values_m.append(y)\n",
284303
"\n",
285-
" pie_chart_mode(plot_title,labels_m,values_m,file_name)\n",
304+
" pie_chart_mode(plot_title,labels_m,values_m,colors_mode,file_name)\n",
286305
" alt_text = store_alt_text_pie(pd.DataFrame(values_m, labels_m), file_name, plot_title)\n",
287306
"except:\n",
288307
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",

viz_scripts/mode_specific_metrics.ipynb

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,24 @@
8888
"label_units, short_label, label_units_lower, distance_col, weight_unit = scaffolding.get_units(use_imperial)"
8989
]
9090
},
91+
{
92+
"cell_type": "markdown",
93+
"id": "397709c8",
94+
"metadata": {},
95+
"source": [
96+
"### Color Mapping for labels"
97+
]
98+
},
99+
{
100+
"cell_type": "code",
101+
"execution_count": null,
102+
"id": "3caccda7",
103+
"metadata": {},
104+
"outputs": [],
105+
"source": [
106+
"colors_mode, colors_purpose = scaffolding.mapping_color_labels(dynamic_labels, dic_re, dic_pur)"
107+
]
108+
},
91109
{
92110
"cell_type": "markdown",
93111
"id": "built-occupation",
@@ -178,7 +196,7 @@
178196
" labels_tp = data_eb['Trip_purpose'].value_counts(dropna=True).keys().tolist()\n",
179197
" values_tp = data_eb['Trip_purpose'].value_counts(dropna=True).tolist()\n",
180198
" plot_title= plot_title_no_quality+\"\\n\"+quality_text\n",
181-
" pie_chart_purpose(plot_title,labels_tp,values_tp,file_name)\n",
199+
" pie_chart_purpose(plot_title,labels_tp,values_tp,colors_purpose,file_name)\n",
182200
" alt_text = store_alt_text_pie(pd.DataFrame(values_tp, labels_tp), file_name, plot_title)\n",
183201
"except:\n",
184202
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",
@@ -199,7 +217,7 @@
199217
" labels_eb = data_eb.Replaced_mode.value_counts(dropna=True).keys().tolist()\n",
200218
" values_eb = data_eb.Replaced_mode.value_counts(dropna=True).tolist()\n",
201219
" plot_title= plot_title_no_quality+\"\\n\"+quality_text\n",
202-
" pie_chart_mode(plot_title,labels_eb,values_eb,file_name)\n",
220+
" pie_chart_mode(plot_title,labels_eb,values_eb,colors_mode,file_name)\n",
203221
" alt_text = store_alt_text_pie(pd.DataFrame(values_eb, labels_eb), file_name, plot_title)\n",
204222
"except:\n",
205223
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",
@@ -240,7 +258,7 @@
240258
" values_m.append(y)\n",
241259
"\n",
242260
" plot_title= plot_title_no_quality+\"\\n\"+quality_text\n",
243-
" pie_chart_mode(plot_title,labels_m,values_m,file_name)\n",
261+
" pie_chart_mode(plot_title,labels_m,values_m,colors_mode,file_name)\n",
244262
" alt_text = store_alt_text_pie(pd.DataFrame(values_m, labels_m), file_name, plot_title)\n",
245263
" print(dg)\n",
246264
"except:\n",

viz_scripts/plots.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,13 @@ def format_pct(pct, values):
5757
return "{:.1f}%\n({:d})".format(pct, absolute) if pct > 4 else''
5858

5959

60-
def pie_chart_mode(plot_title,labels,values,file_name):
61-
62-
colours = dict(zip(labels, plt.cm.tab20.colors[:len(labels)]))
60+
def pie_chart_mode(plot_title,labels,values,colors_map,file_name):
6361
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(aspect="equal"))
64-
6562
m_labels, m_values = merge_small_entries(labels, values)
66-
63+
6764
wedges, texts, autotexts = ax.pie(m_values,
6865
labels = m_labels,
69-
colors=[colours[key] for key in labels],
66+
colors=[colors_map[key] for key in labels],
7067
pctdistance=0.75,
7168
autopct= lambda pct: format_pct(pct, values),
7269
textprops={'size': 23})
@@ -105,9 +102,8 @@ def pie_chart_sensed_mode(plot_title,labels,values,file_name):
105102
plt.savefig(SAVE_DIR+file_name+".png", bbox_inches='tight')
106103
plt.show()
107104

108-
def pie_chart_purpose(plot_title,labels,values,file_name):
105+
def pie_chart_purpose(plot_title,labels,values,colors_map,file_name):
109106

110-
colours = dict(zip(labels, plt.cm.tab20.colors[:len(labels)]))
111107
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(aspect="equal"))
112108

113109
m_labels, m_values = merge_small_entries(labels, values)
@@ -119,7 +115,7 @@ def func(pct, values):
119115

120116
wedges, texts, autotexts = ax.pie(m_values,
121117
labels = m_labels,
122-
colors=[colours[key] for key in labels],
118+
colors=[colors_map[key] for key in labels],
123119
pctdistance=0.85,
124120
autopct=lambda pct: func(pct, values),
125121
textprops={'size': 23})

viz_scripts/scaffolding.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import pandas as pd
22
import numpy as np
3+
import matplotlib.pyplot as plt
34
import sys
45
from collections import defaultdict
6+
from collections import OrderedDict
57

68
import emission.storage.timeseries.abstract_timeseries as esta
79
import emission.storage.timeseries.tcquery as esttc
@@ -192,6 +194,25 @@ def translate_labels(labels):
192194
dic_mapping = translate_labels(dynamic_labels[label_type])
193195
return dic_mapping
194196

197+
# Function: Maps "MODE", "PURPOSE", and "REPLACED_MODE" to colors.
198+
# Input: dynamic_labels, dic_re, and dic_pur
199+
# Output: Map for color with mode and purpose
200+
def mapping_color_labels(dynamic_labels, dic_re, dic_pur):
201+
if len(dynamic_labels) > 0:
202+
mode_values = list(mapping_labels(dynamic_labels, "MODE").values()) if "MODE" in dynamic_labels else []
203+
replaced_mode_values = list(mapping_labels(dynamic_labels, "REPLACED_MODE").values()) if "REPLACED_MODE" in dynamic_labels else []
204+
purpose_values = list(mapping_labels(dynamic_labels, "PURPOSE").values()) if "PURPOSE" in dynamic_labels else []
205+
combined_mode_values = mode_values + replaced_mode_values
206+
else:
207+
# Addition of 'Other' is required to the list since it's missing from auxillary_files/mode_labels.csv and auxillary_files/purpose_labels.csv
208+
combined_mode_values = (list(OrderedDict.fromkeys(dic_re.values())) + ['Other'])
209+
purpose_values = (list(OrderedDict.fromkeys(dic_pur.values())) + ['Other'])
210+
211+
colors_mode = dict(zip(combined_mode_values, plt.cm.tab20.colors[:len(combined_mode_values)]))
212+
colors_purpose = dict(zip(purpose_values, plt.cm.tab20.colors[:len(purpose_values)]))
213+
214+
return colors_mode, colors_purpose
215+
195216
def load_viz_notebook_sensor_inference_data(year, month, program, include_test_users=False, sensed_algo_prefix="cleaned"):
196217
""" Inputs:
197218
year/month/program = parameters from the visualization notebook

0 commit comments

Comments
 (0)