WayToGoHe's picture
integrated code with ecologits
8df7b73
raw
history blame
8.9 kB
import streamlit as st
import ecologits
from src.utils import (
format_energy_eq_electric_vehicle,
format_energy_eq_electricity_consumption_ireland,
format_energy_eq_electricity_production,
format_energy_eq_physical_activity,
format_gwp_eq_airplane_paris_nyc,
format_gwp_eq_streaming,
format_water_eq_bottled_waters,
format_water_eq_olympic_sized_swimming_pool,
PhysicalActivity,
EnergyProduction,
AI_COMPANY_TO_DATA_CENTER_PROVIDER,
PROVIDER_PUE,
PROVIDER_WUE_ONSITE
)
from src.electricity_mix import COUNTRY_CODES, find_electricity_mix, dataframe_electricity_mix
############################################################################################################
def get_impacts(model, active_params, total_params, mix_ghg, mix_adpe, mix_pe):
return 1
############################################################################################################
def display_impacts(impacts, provider, location):
st.divider()
col_energy, col_ghg, col_adpe, col_pe, col_water = st.columns(5)
with col_energy:
st.markdown("""
<div style="text-align: center;">
<div style="font-size: 30px;">⚡️</div>
<div style="font-size: 25px;">Energy</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {impacts.energy.magnitude:.3g} \ \large {impacts.energy.units}')
st.markdown("""
<div style="height: 10px;"></div>
<div style="text-align: center;"><i>Evaluates the electricity consumption<i>
</div>
""", unsafe_allow_html = True)
with col_ghg:
st.markdown("""
<div style="text-align: center;">
<div style="font-size: 30px;">🌍️</div>
<div style="font-size: 18px;">GHG Emissions</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {impacts.gwp.magnitude:.3g} \ \large {impacts.gwp.units}')
st.markdown("""
<div style="text-align: center;"><i>Evaluates the effect on climate change<i>
</div>
""", unsafe_allow_html = True)
with col_adpe:
st.markdown("""
<div style="text-align: center;">
<div style="font-size: 30px;">🪨</div>
<div style="font-size: 16px;">Abiotic Resources</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {impacts.adpe.magnitude:.3g} \ \large {impacts.adpe.units}')
st.markdown("""
<div style="text-align: center;"><i>Evaluates the use of metals and minerals<i>
</div>
""", unsafe_allow_html = True)
with col_pe:
st.markdown("""
<div style="text-align: center;">
<div style="font-size: 30px;">⛽️</div>
<div style="font-size: 18px;">Primary Energy</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {impacts.pe.magnitude:.3g} \ \large {impacts.pe.units}')
st.markdown("""
<div style="height: 10px;"></div>
<div style="text-align: center;"><i>Evaluates the use of energy resources<i>
</div>
""", unsafe_allow_html = True)
with col_water:
st.markdown("""
<div style="text-align: center;">
<div style="font-size: 30px;">🚰</div>
<div style="font-size: 25px;">Water</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {impacts.water.magnitude:.3g} \ \large {impacts.water.units}')
st.markdown("""
<div style="text-align: center;"><i>Evaluates the use of water<i>
</div>
""", unsafe_allow_html = True)
############################################################################################################
def display_equivalent(impacts, provider, location):
st.divider()
ev_eq = format_energy_eq_electric_vehicle(impacts.energy)
streaming_eq = format_gwp_eq_streaming(impacts.gwp)
col1, col2, col3, col4 = st.columns(4)
with col1:
physical_activity, distance = format_energy_eq_physical_activity(impacts.energy)
if physical_activity == PhysicalActivity.WALKING:
physical_activity_emoji = "🚶 "
physical_activity = physical_activity.capitalize()
if physical_activity == PhysicalActivity.RUNNING:
physical_activity_emoji = "🏃 "
physical_activity = physical_activity.capitalize()
st.markdown(f"""
<div style="text-align: center;">
<div style="font-size: 30px;">{physical_activity_emoji}</div>
<div style="font-size: 25px;">{physical_activity}</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {distance.magnitude:.3g} \ \large {distance.units}')
st.markdown(f'<p align="center"><i>Based on energy consumption<i></p>', unsafe_allow_html = True)
with col2:
ev_eq = format_energy_eq_electric_vehicle(impacts.energy)
st.markdown(f"""
<div style="text-align: center;">
<div style="font-size: 30px;">🔋</div>
<div style="font-size: 22px;">Electric Vehicle</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {ev_eq.magnitude:.3g} \ \large {ev_eq.units}')
st.markdown(f'<p align="center"><i>Based on energy consumption<i></p>', unsafe_allow_html = True)
with col3:
streaming_eq = format_gwp_eq_streaming(impacts.gwp)
st.markdown(f"""
<div style="text-align: center;">
<div style="font-size: 30px;">⏯️</div>
<div style="font-size: 25px;">Streaming</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {streaming_eq.magnitude:.3g} \ \large {streaming_eq.units}')
st.markdown(f'<p align="center"><i>Based on GHG emissions<i></p>', unsafe_allow_html = True)
with col4:
#water = water_impact(impacts, provider, location)
water_eq = format_water_eq_bottled_waters(impacts.water)
st.markdown(f"""
<div style="text-align: center;">
<div style="font-size: 30px;">🚰</div>
<div style="font-size: 25px;">Bottled Waters</div>
</div>
""", unsafe_allow_html = True)
st.latex(f'\Large {water_eq.magnitude:.3g} \ \large {"bottles"}')
st.markdown(f'<p align="center"><i>Based on water consumption, measured in 0.75 L bottles.<i></p>', unsafe_allow_html = True)
st.divider()
st.markdown('<h3 align="center">What if 1% of the planet does this request everyday for 1 year ?</h3>', unsafe_allow_html = True)
st.markdown('<p align="center">If this use case is largely deployed around the world, the equivalent impacts would be the impacts of this request x 1% of 8 billion people x 365 days in a year.</p>', unsafe_allow_html = True)
col5, col6, col7, col8 = st.columns(4)
with col5:
electricity_production, count = format_energy_eq_electricity_production(impacts.energy)
if electricity_production == EnergyProduction.NUCLEAR:
emoji = "☢️"
name = "Nuclear power plants"
if electricity_production == EnergyProduction.WIND:
emoji = "💨️ "
name = "Wind turbines"
st.markdown(f'<h4 align="center">{emoji} {count.magnitude:.0f} {name} <span style="font-size: 12px">\n (yearly ⚡️ production)</span></h2></h4>', unsafe_allow_html = True)
st.markdown(f'<p align="center"><i>Based on energy consumption<i></p>', unsafe_allow_html = True)
with col6:
ireland_count = format_energy_eq_electricity_consumption_ireland(impacts.energy)
st.markdown(f'<h4 align="center">🇮🇪 {ireland_count.magnitude:.3f} x Irelands <span style="font-size: 12px">\n (yearly ⚡️ consumption)</span></h2></h4>', unsafe_allow_html = True)
st.markdown(f'<p align="center"><i>Based on energy consumption<i></p>', unsafe_allow_html = True)
with col7:
paris_nyc_airplane = format_gwp_eq_airplane_paris_nyc(impacts.gwp)
st.markdown(f'<h4 align="center">✈️ {round(paris_nyc_airplane.magnitude):,} Paris ↔ NYC</h4>', unsafe_allow_html = True)
st.markdown(f'<p align="center"><i>Based on GHG emissions<i></p>', unsafe_allow_html = True)
with col8:
olympic_swimming_pool = format_water_eq_olympic_sized_swimming_pool(impacts.water)
st.markdown(f'<div style="text-align: center; font-size: 20px; font-weight: bold;">🏊🏼 {round(olympic_swimming_pool.magnitude):,} Olympic-sized swimming pools</h4>', unsafe_allow_html = True)
st.markdown(f'<p align="center"><i>Based on water consumption<i></p>', unsafe_allow_html = True)