cultura_space / app.py
Charles De Dampierre
fix mistakes abscent figures
ab855e2
raw
history blame
5.8 kB
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")
# Test change
@st.cache_data
def load_data():
df_ind = pd.read_csv("data/df_individuals_score.csv", index_col=[0])
df_ind = df_ind.drop("region_code", axis=1)
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()
st.sidebar.title("Our History in Data")
st.sidebar.write(
"This project is led by Charles de Dampierre, Folgert Karsdorp, Mike Kestemont, Valentin Thouzeau and Nicolas Baumard"
)
# 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_per_capita"
)
unseen_index_path = (
"data/immaterial_index/figures_trends_R/figures_unseen/results_unseen"
)
unseen_capita_index_path = (
"data/immaterial_index/figures_trends_R/figures_unseen/results_unseen/per_capita"
)
population_path = "data/population"
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",
"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:
col1, col2 = st.columns(2)
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"].astype(int)
df = df.reset_index(drop=True)
# Display the data in the left column
with col1:
st.header("Cultural Producers")
st.dataframe(df)
st.write(f"Number of Cultural producers active before 1800: {len(df)}")
for key, path in index_paths[selected_region].items():
if os.path.exists(path):
if key == "global_index":
st.subheader("Global Index")
st.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
elif key == "global_index_per_capita":
st.subheader("Index per capita")
st.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
elif key == "unseen_index":
st.subheader("Unsee-Species Index")
st.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
elif key == "unseen_index_capita":
st.subheader("Unsee-Species per capita Index")
st.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
elif key == "population_index":
st.subheader("Population Index")
st.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
elif key == "map":
st.subheader("Maps")
st.sidebar.image(
Image.open(path),
caption=key.capitalize(),
use_column_width=True,
)
else:
st.write(f"File for {key.capitalize()} does not exist.")
with col2:
try:
region_description = get_region_description(
region_data, selected_region
)
st.header("Analysis")
st.write(f"{region_description}")
except:
st.write("Analysis not ready yet")