Spaces:
Sleeping
Sleeping
import streamlit as st | |
from PIL import Image | |
import os | |
import pandas as pd | |
import tomli | |
pd.options.mode.chained_assignment = None | |
st.set_page_config(layout="wide") | |
st.markdown( | |
"<div style='background-color: lightblue; text-align: center; padding: 10px;'><h1 style='font-size: 70px;'>Our History in Data</h1></div>", | |
unsafe_allow_html=True, | |
) | |
def load_data(): | |
df_ind = pd.read_csv("data/df_individuals_score.csv", index_col=[0]) | |
df_ind["productive_year"] = df_ind["productive_year"].astype(int) | |
df_ind["individual_wikidata_id"] = "https://www.wikidata.org/wiki/" + df_ind[ | |
"individual_wikidata_id" | |
].astype(str) | |
df_ind = df_ind[df_ind["productive_year"] <= 1800] | |
return df_ind | |
df_ind = load_data() | |
def load_region_descriptions(): | |
with open("regions.toml", "rb") as toml_file: | |
data = tomli.load(toml_file) | |
return data | |
# Function to get description based on selected region | |
def get_region_description(region_data, selected_region): | |
return region_data[selected_region]["description"] | |
region_data = load_region_descriptions() | |
# page = st.sidebar.selectbox("Navigate to:", ["Home", "Methodology", "Team"]) | |
page = st.sidebar.radio( | |
"Menu", | |
["Home", "Methodology", "Team", "About"], | |
key="navigation_radio", | |
) | |
st.sidebar.success( | |
"This project is led by Charles de Dampierre, Folgert Karsdorp, Mike Kestemont, Valentin Thouzeau and Nicolas Baumard" | |
) | |
# Test change | |
if page == "Home": | |
# Set the global index path | |
global_index_path = "data/immaterial_index/figures_trends_R/results" | |
global_index_path_per_capita = ( | |
"data/immaterial_index/figures_trends_R/results_capita" | |
) | |
unseen_index_path = "data/immaterial_index/figures_trends_R/results_unseen" | |
unseen_capita_index_path = ( | |
"data/immaterial_index/figures_trends_R/results_unseen_capita" | |
) | |
complexity_index_path = "data/immaterial_index/figures_trends_R/results_complexity" | |
occupations_index_path = ( | |
"data/immaterial_index/figures_trends_R/results_occupations" | |
) | |
population_path = "data/population" | |
gdp_per_capita_path = "data/gdp_per_capita" | |
maps_path = "data/map_figures" | |
from region_list import region_list | |
region_filtered = list(region_list.keys()) | |
index_paths = {} | |
for region_key in region_list: | |
# Create the index paths for the current region | |
index_paths[region_key] = { | |
"map": f"{maps_path}/map_{region_key}.png", | |
"global_index": f"{global_index_path}/{region_key}.png", | |
"global_index_per_capita": f"{global_index_path_per_capita}/{region_key}.png", | |
"unseen_index": f"{unseen_index_path}/{region_key}.png", | |
"unseen_index_capita": f"{unseen_capita_index_path}/{region_key}.png", | |
"complexity_index": f"{complexity_index_path}/{region_key}.png", | |
"occupations_index": f"{occupations_index_path}/{region_key}.png", | |
"gdp_per_capita_index": f"{gdp_per_capita_path}/{region_key}.png", | |
"population_index": f"{population_path}/{region_key}.png", | |
} | |
# Get the region names (keys) from the index_paths dictionary | |
regions = list(index_paths.keys()) | |
# Allow the user to select a region | |
selected_region = st.sidebar.selectbox( | |
"Region:", regions, index=regions.index("Japan") | |
) | |
# Display the selected region's images vertically | |
if selected_region in index_paths: | |
st.markdown( | |
f"<h1 style='text-align: left; font-size: 50px;'>{selected_region}</h1>", | |
unsafe_allow_html=True, | |
) | |
try: | |
st.image( | |
f"image/{selected_region}.jpeg", | |
caption="Japan", | |
use_column_width=False, | |
width=1000, | |
) | |
except: | |
pass | |
col1, col2, col3 = st.columns([8, 1, 8]) | |
# Display the data in the left column | |
with col1: | |
for key, path in index_paths[selected_region].items(): | |
if os.path.exists(path): | |
if key == "global_index": | |
st.subheader("Cultural Index") | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
elif key == "global_index_per_capita": | |
st.subheader("Cultural Index per capita") | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
elif key == "unseen_index": | |
st.subheader( | |
"Cultural Index corrected by the unseen-species model" | |
) | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
elif key == "unseen_index_capita": | |
st.subheader( | |
"Cultural Index per capita corrected by the unseen-species model" | |
) | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
# elif key == "complexity_index": | |
# st.subheader("Complexity Index") | |
# st.image( | |
# Image.open(path), | |
# caption=key.capitalize(), | |
# use_column_width=True, | |
# ) | |
elif key == "occupations_index": | |
st.subheader("Occupation Index") | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
elif key == "gdp_per_capita_index": | |
st.subheader("GDP per capita") | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
else: | |
st.write(f"File for {key.capitalize()} does not exist.") | |
with col3: | |
try: | |
st.image( | |
Image.open(f"data/map_figures/map_{selected_region}.png"), | |
use_column_width=True, | |
width=1000, | |
) | |
except: | |
pass | |
st.subheader("Analysis") | |
try: | |
region_description = get_region_description( | |
region_data, selected_region | |
) | |
st.write(f"{region_description}") | |
except: | |
st.write("Analysis not ready yet") | |
st.subheader("Cultural Producers in Wikidata") | |
df = df_ind[df_ind["region_name"] == selected_region] | |
df = df.drop(["region_name", "decade"], axis=1) | |
df = df[ | |
[ | |
"individual_name", | |
"productive_year", | |
"score", | |
"individual_wikidata_id" "", | |
] | |
] | |
df = df.sort_values("score", ascending=False) | |
df = df.rename(columns={"score": "Number of Catalogs"}) | |
min_date = region_list[selected_region]["time_range"][0] | |
max_date = region_list[selected_region]["time_range"][1] | |
df = df[df["productive_year"] >= min_date] | |
df = df[df["productive_year"] <= max_date] | |
# df["productive_year"] = df["productive_year"] * 1000 | |
df["productive_year"] = round(df["productive_year"], 0).astype(str) | |
# df["productive_year"] = round(df["productive_year"], 0).astype(int) | |
df = df.reset_index(drop=True) | |
st.dataframe(df) | |
st.write(f"Number of Cultural producers active before 1800: {len(df)}") | |
try: | |
st.subheader("Population") | |
st.image( | |
Image.open(path), | |
caption=key.capitalize(), | |
use_column_width=True, | |
) | |
except: | |
pass | |
elif page == "Methodology": | |
# Read the content of the file methodolog.md | |
with open("docs/methodology.md", "r") as file: | |
methodology_content = file.read() | |
# Display the content in the Streamlit app | |
st.write(methodology_content) | |