Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes on generic_metric and mode_specific_metrics in relation to Mo… #91

Merged
Merged
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
34eae86
Changes on generic_metric and mode_specific_metrics in relation to Mo…
iantei Sep 7, 2023
176655a
Address Review comments.
iantei Sep 11, 2023
f04e596
Update generate_plots.py & scaffolding.py
iantei Sep 12, 2023
3182a0b
Fix merge conflict.
iantei Sep 12, 2023
43d974b
Fix scaffolding, updated mode_specific_metrics.ipynb.
iantei Sep 12, 2023
7343606
Revert version changes to 3.7.12.
iantei Sep 12, 2023
080f4f4
Update initialization of dynamic_labels from { } to json object refer…
iantei Sep 12, 2023
7d8b2d6
Default initialize dynamic_labels to { }.
iantei Sep 14, 2023
1b037c2
Merge with main. Resolve merge conflict.
iantei Sep 14, 2023
fea6365
Add an environment variable in Docker Compose to pass dynamic config.
iantei Sep 17, 2023
b04096b
Chang in docker-compose for STUDY_CONFIG to dev-emulator-study. Rever…
iantei Sep 18, 2023
5a70ecb
Change back docker-compose.dev.yml: STUDY_CONFIG to stage-program.
iantei Sep 19, 2023
6e80c7f
Replace Mode_confirm with Replaced_mode for barplot_mode() in mode_sp…
iantei Sep 22, 2023
30c1dd4
1. Remove extraneous whitespace from generate_plots.py. 2. Revert ref…
iantei Sep 25, 2023
86f8133
Remove extraneous whitespace from line 96 in generate_plots.py
iantei Sep 25, 2023
845dd47
Introduce defaultdic for dic_translations with Other in analogy to di…
iantei Sep 26, 2023
40519ec
Merge branch 'main' into ananta_support_customLabel_from_dynamic_config
iantei Sep 27, 2023
af9d3fc
Handle initialization of mode_count_interest. Introduce try-except bl…
iantei Sep 28, 2023
a868e4c
Move quality_text code into the if block in the above cell.
iantei Sep 28, 2023
54e213b
Update log messages for dynamic_labels_url and label_options unavaila…
iantei Sep 29, 2023
81407fc
Update scaffolding to introduce compute_CO2_impact_kg() computation w…
iantei Oct 5, 2023
d4fb9bc
1. Change the plots.py X-axis to showcase CO2 Impact in kg. 2. In sca…
iantei Oct 5, 2023
42990a2
Move the compute_CO2_impact_kg() call to scaffolding, such that energ…
iantei Oct 5, 2023
2dd360f
Changes to understand difference between default mapping and dynamic …
iantei Oct 6, 2023
0aeb70c
Update scaffolding to create different dictionary mappings for MODE, …
iantei Oct 7, 2023
aae0d2a
Update Trip_purpose to To Work instead of Work whenever dynamic label…
iantei Oct 7, 2023
f2f0a45
Update scaffolding.py CO2_footprint_lb() to utilize the distance whil…
iantei Oct 9, 2023
fecec39
Update changes for generic_timeseries. 1. Inside scaffolding.py intro…
iantei Oct 10, 2023
5cf84bc
Create new metrics_study and metrics_program options html files witho…
iantei Oct 12, 2023
5a8c9d6
Update index.html to use different metrics_ options html when dynamic…
iantei Oct 12, 2023
8fefdea
Remove redundant check for dynamic_labels_urls. Update the message to…
iantei Oct 12, 2023
a2c1910
Remove print statements used to evaluate the difference in energy cal…
iantei Oct 12, 2023
a42b308
Update the mode mapping in accordance to MODE for Daily Mode Share in…
iantei Oct 13, 2023
6f13c03
Refactor the code to load the config and corresponding metrics.html p…
iantei Oct 19, 2023
32864c6
Reinstate the comment for energy_calculations.ipynb. Removed extranne…
iantei Oct 19, 2023
b3a92a1
Update data.label_options to dynamic_labels to make it coherent acros…
iantei Oct 19, 2023
1628f5a
Created a new function inside scaffolding.py, mapping_labels(dynamic_…
iantei Oct 19, 2023
f3edc61
Moving the mapping_labels() call inside the conditional check for eac…
iantei Oct 19, 2023
e7c17a1
Update the purpose mapping for Work to select from scaffolding.mappin…
iantei Oct 19, 2023
c114d38
Update the Timeseries of emissions per miles TO Timeseries of emissio…
iantei Oct 24, 2023
b26207d
Update plots.py CO2_impact to take x and y Labels from the notebook. …
iantei Oct 27, 2023
14a3666
Update generic_timeseries to show the CO2 emissions in Imperial syste…
iantei Oct 27, 2023
4c177d7
Added print statements to understand the difference in CO2 emissions …
iantei Oct 27, 2023
a8f3697
Renamed 1. compute_CO2_impact_kg to compute_CO2_impact_dynamic 2. com…
iantei Oct 27, 2023
e7f804e
Removed the unnecessary file unde frontend/Dockerfile.dev.
iantei Oct 27, 2023
23e5773
Showing Timeseries of emissions per mile for default mapping.
iantei Oct 27, 2023
6c469a5
Remove extranneous whitespaces from energy_calculations and generic_t…
iantei Oct 27, 2023
a18c549
Remove whitespace from generic_timeseries.ipynb
iantei Oct 27, 2023
88b899b
Fixing the scaffolding calculation for computation of conversion to k…
iantei Oct 30, 2023
9134465
Add new function in scaffolding.py to print the computation of CO2 em…
iantei Oct 30, 2023
5229d7e
Added is_debug_mode flag, which by default is set to False. When it i…
iantei Oct 30, 2023
efbd31f
Removed energy_impact computation for Dynamic config case.
iantei Oct 31, 2023
3c8823e
Update distace_miles column in the selected_columns in scaffolding.py…
iantei Oct 31, 2023
adb5258
Setting the default is_debug_mode flag to False. This will disable ca…
iantei Oct 31, 2023
b858b53
Removed redundant if/else case for different label_type inside mappin…
iantei Nov 2, 2023
3ee1bbb
Energy_calculations.ipynb added justification for computation of tota…
iantei Nov 2, 2023
5cbce25
Refactor both energy_calculations and generic_timeseries notebook to …
iantei Nov 7, 2023
dd64513
Stored the returned expanded_ct from compute_CO2_footprint_dynamic().
iantei Nov 7, 2023
a72ac99
Fixed try-catch block to handle case where emissions is not defined. …
iantei Nov 7, 2023
ae3117a
Fixed issue with default mapping - calling the right function. Update…
iantei Nov 7, 2023
8832e79
Remove conversion_kilometer_to_mile and vice versa in scaffolding.py …
iantei Nov 13, 2023
78e4777
Removed f{'distance_unit'} with distance_unit for compute_daily_metri…
iantei Nov 13, 2023
932af13
Update sense keyword in the phrase for dropdown menu for Trip miles b…
iantei Nov 21, 2023
a23ad9f
Updated the comment to explain this is specically used to test with e…
iantei Nov 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 40 additions & 15 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -374,8 +374,22 @@
const STUDY_CONFIG = _getStudyName(window.location);
$.getJSON('https://raw.githubusercontent.com/e-mission/nrel-openpath-deploy-configs/main/configs/' + STUDY_CONFIG + '.nrel-op.json', function(data) {
// Load list of plots corresponding to study/program
if (data.intro.program_or_study=='program') {
$.get("metrics_program.html", function(response) {
dynamic_labels = data.label_options
if (data.intro.program_or_study=='program')
{
// Note: We're disabling energy metrics on public dashboard when dynamic labels are available.
// TODO: Remove the if (data.label_options) in future when energy computation is handled properly.
if (dynamic_labels)
{
load_file = "metrics_program_withoutEnergyMetrics.html"
console.log("Dynamic Labels are available for: " + STUDY_CONFIG)
}
else
{
load_file = "metrics_program_withoutEnergyMetrics.html"
console.log("Dynamic Labels are unavailable for: " + STUDY_CONFIG)
}
$.get(load_file, function(response) {
const configuredResponse = response.replaceAll("${data.intro.mode_studied}", data.intro.mode_studied);
$('#metric').append(configuredResponse);
addPreconfiguredMetrics([
Expand All @@ -387,19 +401,30 @@
`ntrips_${data.intro.mode_studied}_per_weekday`,
`sketch_CO2impact_${data.intro.mode_studied}`
]);
});
} else {
$('#metric').load('metrics_study.html');
addPreconfiguredMetrics([
"ntrips_mode_confirm",
"miles_mode_confirm",
"ntrips_sensed_mode",
"miles_sensed_mode",
"ntrips_purpose",
"ntrips_sensed_per_weekday",
"ts_emissions_user"
]);
};
});
}
else // CASE: STUDY
{
if (dynamic_labels)
{
console.log("Dynamic Labels are available for: " + STUDY_CONFIG)
$('#metric').load('metrics_study_withoutEnergyMetrics.html');
}
else
{
console.log("Dynamic Labels are unavailable for: " + STUDY_CONFIG)
$('#metric').load('metrics_study.html');
};
addPreconfiguredMetrics([
"ntrips_mode_confirm",
"miles_mode_confirm",
"ntrips_sensed_mode",
"miles_sensed_mode",
"ntrips_purpose",
"ntrips_sensed_per_weekday",
"ts_emissions_user"
]);
shankari marked this conversation as resolved.
Show resolved Hide resolved
}
// Figure out all months since start date to present
var date_options = "<option value=''>All data</option>";
const dates = getMonthList(
Expand Down
36 changes: 36 additions & 0 deletions frontend/metrics_program_withoutEnergyMetrics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<!-- Replica of metrics_program.html without energy options-->
<!-- Generic -->
<option value="ntrips_mode_confirm" data-sizex="4" data-sizey="4">Number of trips</option>
<option value="ntrips_commute_mode_confirm" data-sizex="4" data-sizey="4">Number of commute trips</option>
<option value="ntrips_sensed_mode" data-sizex="4" data-sizey="4">Number of trips (sensed)</option>
<option value="ntrips_purpose" data-sizex="4" data-sizey="4">Trip count by purpose</option>
<option value="ntrips_under10miles_mode_confirm" data-sizex="4" data-sizey="4">Trip count under 10 miles</option>
<option value="ntrips_under10miles_sensed_mode" data-sizex="4" data-sizey="4">Trip count under 10 miles (sensed)</option>
<option value="miles_mode_confirm" data-sizex="4" data-sizey="4">Trip miles by mode</option>
<option value="miles_sensed_mode" data-sizex="4" data-sizey="4">Trip miles by mode</option>
<option value="miles_sensed_mode_land" data-sizex="4" data-sizey="4">Trip miles by land mode (sensed)</option>
<option value="average_miles_mode_confirm" data-sizex="6" data-sizey="4">Average trip length</option>
<option value="average_miles_sensed_mode" data-sizex="6" data-sizey="4">Average trip length (sensed)</option>
<option value="average_miles_mode_confirm2" data-sizex="6" data-sizey="4">Average trip length (selected by users)</option>
<option value="ntrips_per_day" data-sizex="6" data-sizey="4">Trip frequency</option>
<option value="ntrips_sensed_per_day" data-sizex="6" data-sizey="4">Trip frequency (sensed)</option>
<option value="ntrips_per_weekday" data-sizex="6" data-sizey="4">Trip frequency (weekday)</option>
<option value="ntrips_sensed_per_weekday" data-sizex="6" data-sizey="4">Trip frequency (weekday, sensed)</option>
<option value="ts_emissions_user" data-sizex="8" data-sizey="2">Timeseries of emissions</option>
<option value="ts_emissions_vmt" data-sizex="8" data-sizey="2">Timeseries of emissions per kilometer</option>
<option value="ts_users" data-sizex="8" data-sizey="2">Timeseries of active users</option>
<option value="ts_all_modes" data-sizex="8" data-sizey="2">Timeseries of all mode shares</option>
<!-- Mode Specific -->
<option value="ntrips_${data.intro.mode_studied}_purpose" data-sizex="4" data-sizey="4">`${data.intro.mode_studied}` specific trip count by purpose</option>
<option value="miles_${data.intro.mode_studied}_replaced_mode" data-sizex="4" data-sizey="4">`${data.intro.mode_studied}` specific trip miles by replaced mode</option>
<option value="average_miles_replaced_mode" data-sizex="4" data-sizey="4">Average Miles for each replaced mode (w/Other)</option>
<option value="ntrips_${data.intro.mode_studied}_per_day" data-sizex="6" data-sizey="4">`${data.intro.mode_studied}` specific Trip frequency</option>
<option value="ntrips_${data.intro.mode_studied}_per_weekday" data-sizex="6" data-sizey="4">`${data.intro.mode_studied}` specific Trips per weekday</option>
<option value="sketch_CO2impact_${data.intro.mode_studied}" data-sizex="6" data-sizey="4">Sketch of `${data.intro.mode_studied}` specific emission impact</option>
<option value="ts_${data.intro.mode_studied}_share" data-sizex="8" data-sizey="2">Timeseries of `${data.intro.mode_studied}` specific trips</option>
<option value="ts_${data.intro.mode_studied}_miles" data-sizex="8" data-sizey="2">Timeseries of `${data.intro.mode_studied}` specific milage</option>
<option value="ts_${data.intro.mode_studied}_miles_user" data-sizex="8" data-sizey="2">Timeseries of `${data.intro.mode_studied}` specific milage per user</option>
<option value="ts_${data.intro.mode_studied}_miles_proportion" data-sizex="8" data-sizey="2">Timeseries of proportion of `${data.intro.mode_studied}` specific miles</option>
<option value="ts_${data.intro.mode_studied}_trips_proportion" data-sizex="8" data-sizey="2">Timeseries of mileage per user</option>
<option value="ts_${data.intro.mode_studied}_trip_individual_variation" data-sizex="8" data-sizey="2">`${data.intro.mode_studied}` specific trip variation over time</option>
<option value="ts_${data.intro.mode_studied}_mile_individual_variation" data-sizex="8" data-sizey="2">`${data.intro.mode_studied}` specific mileage variation over time</option>
22 changes: 22 additions & 0 deletions frontend/metrics_study_withoutEnergyMetrics.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- Replica of metrics_study.html without energy option-->
<!-- Generic -->
<option value="ntrips_mode_confirm" data-sizex="4" data-sizey="4">Number of trips</option>
<option value="ntrips_commute_mode_confirm" data-sizex="4" data-sizey="4">Number of commute trips</option>
<option value="ntrips_sensed_mode" data-sizex="4" data-sizey="4">Number of trips (sensed)</option>
<option value="ntrips_purpose" data-sizex="4" data-sizey="4">Trip count by purpose</option>
<option value="ntrips_under10miles_mode_confirm" data-sizex="4" data-sizey="4">Trip count under 10 miles</option>
<option value="ntrips_under10miles_sensed_mode" data-sizex="4" data-sizey="4">Trip count under 10 miles (sensed)</option>
<option value="miles_mode_confirm" data-sizex="4" data-sizey="4">Trip miles by mode</option>
<option value="miles_sensed_mode" data-sizex="4" data-sizey="4">Trip miles by mode (sensed)</option>
<option value="miles_sensed_mode_land" data-sizex="4" data-sizey="4">Trip miles by land mode (sensed)</option>
<option value="average_miles_mode_confirm" data-sizex="6" data-sizey="4">Average trip length</option>
<option value="average_miles_sensed_mode" data-sizex="6" data-sizey="4">Average trip length (sensed)</option>
<option value="average_miles_mode_confirm2" data-sizex="6" data-sizey="4">Average trip length (selected by users)</option>
<option value="ntrips_per_day" data-sizex="6" data-sizey="4">Trip frequency</option>
<option value="ntrips_sensed_per_day" data-sizex="6" data-sizey="4">Trip frequency (sensed)</option>
<option value="ntrips_per_weekday" data-sizex="6" data-sizey="4">Trip frequency (weekday)</option>
<option value="ntrips_sensed_per_weekday" data-sizex="6" data-sizey="4">Trip frequency (weekday, sensed)</option>
<option value="ts_emissions_user" data-sizex="8" data-sizey="2">Timeseries of emissions</option>
<option value="ts_emissions_vmt" data-sizex="8" data-sizey="2">Timeseries of emissions per kilometer</option>
<option value="ts_users" data-sizex="8" data-sizey="2">Timeseries of active users</option>
<option value="ts_all_modes" data-sizex="8" data-sizey="2">Timeseries of all mode shares</option>
21 changes: 20 additions & 1 deletion viz_scripts/bin/generate_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,31 @@
dynamic_config = json.loads(r.text)
print(f"Successfully downloaded config with version {dynamic_config['version']} "\
f"for {dynamic_config['intro']['translated_text']['en']['deployment_name']} "\
f"and data collection URL {dynamic_config['server']['connectUrl']}")
f"and data collection URL {dynamic_config['server']['connectUrl'] if 'server' in dynamic_config else 'default'}")

if dynamic_config['intro']['program_or_study'] == 'program':
mode_studied = dynamic_config['intro']['mode_studied']
else:
mode_studied = None

# dynamic_labels can be referenced from
# https://github.com/e-mission/nrel-openpath-deploy-configs/blob/main/label_options/example-study-label-options.json
dynamic_labels = { }

# Check if the dynamic config contains dynamic labels 'label_options'
# Parse through the dynamic_labels_url:
if 'label_options' in dynamic_config:
dynamic_labels_url = dynamic_config['label_options']

req = requests.get(dynamic_labels_url)
if req.status_code != 200:
print(f"Unable to download dynamic_labels_url, status code: {req.status_code} for {STUDY_CONFIG}")
else:
dynamic_labels = json.loads(req.text)
print(f"Dynamic labels download was successful for nrel-openpath-deploy-configs: {STUDY_CONFIG}" )
else:
print(f"label_options is unavailable for the dynamic_config in {STUDY_CONFIG}")

if args.date is None:
start_date = arrow.get(int(dynamic_config['intro']['start_year']),
int(dynamic_config['intro']['start_month']), 1)
Expand Down Expand Up @@ -70,6 +88,7 @@ def compute_for_date(month, year):
study_type=dynamic_config['intro']['program_or_study'],
mode_of_interest=mode_studied,
include_test_users=dynamic_config.get('metrics', {}).get('include_test_users', False),
dynamic_labels = dynamic_labels,
sensed_algo_prefix=dynamic_config.get('metrics', {}).get('sensed_algo_prefix', "cleaned"))

print(f"Running at {arrow.get()} with params {params}")
Expand Down
89 changes: 69 additions & 20 deletions viz_scripts/energy_calculations.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@
"program = \"default\"\n",
"study_type = \"program\"\n",
"mode_of_interest = \"e-bike\"\n",
"include_test_users = False"
"include_test_users = False\n",
"is_debug_mode = False\n",
"dynamic_labels = {}"
]
},
{
Expand Down Expand Up @@ -107,11 +109,12 @@
" month,\n",
" program,\n",
" study_type,\n",
" dynamic_labels,\n",
" dic_re,\n",
" dic_pur=dic_pur,\n",
" include_test_users=include_test_users)\n",
"# CASE 1 of https://github.com/e-mission/em-public-dashboard/issues/69#issuecomment-1256835867 \n",
iantei marked this conversation as resolved.
Show resolved Hide resolved
"expanded_ct = scaffolding.add_energy_impact(expanded_ct, df_ei, dic_fuel) if len(expanded_ct) > 0 else expanded_ct"
"expanded_ct = scaffolding.add_energy_impact(expanded_ct, df_ei, dic_fuel, dynamic_labels) if len(expanded_ct) > 0 else expanded_ct"
]
},
{
Expand Down Expand Up @@ -212,27 +215,73 @@
"metadata": {},
"outputs": [],
"source": [
"plot_title_no_quality=f\"Sketch of Total Pounds of CO2 Emissions of {mode_of_interest} trips\"\n",
"file_name =f'sketch_CO2impact_{mode_of_interest}%s' % file_suffix\n",
"# Case: label_options is present on the config file\n",
"if len(dynamic_labels) > 0:\n",
" plot_title_no_quality=f\"Sketch of Total Kilograms of CO2 Emissions of {mode_of_interest} trips\"\n",
" file_name =f'sketch_CO2impact_{mode_of_interest}%s' % file_suffix\n",
"\n",
"try:\n",
" ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
" ebco2.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
" ebco2 = ebco2.reset_index()\n",
" ebco2 = ebco2.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
" ebco2['boolean'] = ebco2['total_lb_CO2_emissions'] > 0\n",
" net_CO2_emissions = round(sum(ebco2['total_lb_CO2_emissions']), 2)\n",
" try:\n",
" ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(kg)': ['sum', 'mean']},)\n",
" ebco2.columns = ['total_kg_CO2_emissions', 'average_kg_CO2_emission']\n",
" ebco2 = ebco2.reset_index()\n",
" ebco2 = ebco2.sort_values(by=['total_kg_CO2_emissions'], ascending=False)\n",
" ebco2['boolean'] = ebco2['total_kg_CO2_emissions'] > 0\n",
" net_CO2_emissions = round(sum(ebco2['total_kg_CO2_emissions']), 2)\n",
"\n",
" x = ebco2['total_lb_CO2_emissions']\n",
" y = ebco2['Replaced_mode']\n",
" color = ebco2['boolean']\n",
" x = ebco2['total_kg_CO2_emissions']\n",
" y = ebco2['Replaced_mode']\n",
" xLabel = 'CO2 Emissions (kg)'\n",
" yLabel = 'Replaced Mode'\n",
" color = ebco2['boolean']\n",
"\n",
" plot_title= plot_title_no_quality+f\"\\n Contribution by replaced mode towards a total of {net_CO2_emissions}(lb CO2 Emissions )\\n\"+quality_text\n",
" CO2_impact(x,y,color,plot_title,file_name)\n",
" alt_text = store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title)\n",
"except:\n",
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",
" alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)"
" plot_title= plot_title_no_quality+f\"\\n Contribution by replaced mode towards a total of {net_CO2_emissions}(kg CO2 Emissions )\\n\"+quality_text\n",
" CO2_impact(x,y,color,plot_title, xLabel,yLabel,file_name)\n",
" alt_text = store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title)\n",
" \n",
" if (is_debug_mode == True):\n",
" ebco2_lb=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
" ebco2_lb.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
shankari marked this conversation as resolved.
Show resolved Hide resolved
" ebco2_lb = ebco2_lb.reset_index()\n",
" ebco2_lb = ebco2_lb.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
" \n",
" scaffolding.print_CO2_emission_calculations(data_eb, ebco2_lb, ebco2, dynamic_labels)\n",
" \n",
" except:\n",
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",
" alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)\n",
"# case: when label_options is absent from the config file\n",
"else: \n",
shankari marked this conversation as resolved.
Show resolved Hide resolved
" plot_title_no_quality=f\"Sketch of Total pounds of CO2 Emissions of {mode_of_interest} trips\"\n",
" file_name =f'sketch_CO2impact_{mode_of_interest}%s' % file_suffix\n",
"\n",
" try:\n",
" ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
" ebco2.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
" ebco2 = ebco2.reset_index()\n",
" ebco2 = ebco2.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
" ebco2['boolean'] = ebco2['total_lb_CO2_emissions'] > 0\n",
" net_CO2_emissions = round(sum(ebco2['total_lb_CO2_emissions']), 2)\n",
"\n",
" x = ebco2['total_lb_CO2_emissions']\n",
" y = ebco2['Replaced_mode']\n",
" xLabel = 'CO2 Emissions (lb)'\n",
" yLabel = 'Replaced Mode'\n",
" color = ebco2['boolean']\n",
"\n",
" plot_title= plot_title_no_quality+f\"\\n Contribution by replaced mode towards a total of {net_CO2_emissions}(lb CO2 Emissions )\\n\"+quality_text\n",
" CO2_impact(x,y,color,plot_title,xLabel,yLabel,file_name)\n",
" alt_text = store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title)\n",
"\n",
" if (is_debug_mode == True):\n",
shankari marked this conversation as resolved.
Show resolved Hide resolved
" ebco2_kg=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(kg)': ['sum', 'mean']},)\n",
" ebco2_kg.columns = ['total_kg_CO2_emissions', 'average_kg_CO2_emission']\n",
" ebco2_kg = ebco2_kg.reset_index()\n",
" ebco2_kg = ebco2_kg.sort_values(by=['total_kg_CO2_emissions'], ascending=False)\n",
" \n",
" scaffolding.print_CO2_emission_calculations(data_eb, ebco2, ebco2_kg, dynamic_labels)\n",
" except:\n",
" generate_missing_plot(plot_title_no_quality,debug_df,file_name)\n",
" alt_text = store_alt_text_missing(debug_df, file_name, plot_title_no_quality)"
]
}
],
Expand Down
Loading