Proghead231/propensity_matching
0
1import streamlit as st2import pandas as pd3import geopandas as gpd4import leafmap.foliumap5m = leafmap.foliumap.Map()6m.set_center(84.376898, 28.052843, zoom=7)7 8cached_results = pd.read_csv("st_results.csv")9pa_names = {10 1: "Annapurna",11 2: "Api",12 3: "Banke",13 4: "Bardia",14 5: "Chitwan",15 6: "Dhorpatan",16 7: "Gaurusankar",17 8: "Kanchanjunga",18 9: "Khaptad",19 10: "Koshi Tappu",20 11: "Krinshnasar",21 12: "Langtang",22 13: "Makalu Barun",23 14: "Manasalu",24 15: "Parsa",25 16: "Rara",26 17: "Sagarmatha",27 18: "Shey-phoksundo",28 19: "Shivapuri-Nagarjun",29 20: "Suklaphanta"30}31pa_names_mapped = {code: pa_names.get(code) for code in cached_results.paCode.unique() if code != 0 and pa_names.get(code)}32 33pa_select = st.selectbox("Select pa", options=list(pa_names_mapped.values()), index=2)34 35selected_pa_code = next((code for code, name in pa_names_mapped.items() if name == pa_select), None)36 37if (pa_select is not None) and (cached_results is not None):38 treated_gdf = gpd.GeoDataFrame(39 cached_results[cached_results.trt == 1], 40 geometry=gpd.points_from_xy(cached_results[cached_results.trt == 1].x, cached_results[cached_results.trt == 1].y),41 crs="EPSG:4326"42 )43 control_gdf = gpd.GeoDataFrame(44 cached_results[cached_results.trt == 0], 45 geometry=gpd.points_from_xy(cached_results[cached_results.trt == 0].x, cached_results[cached_results.trt == 0].y),46 crs="EPSG:4326"47 )48 pa_treated = treated_gdf.loc[cached_results.paCode == selected_pa_code]49 pa_control = pa_treated.merge(control_gdf, left_on='matched_element', right_on='system:index', suffixes=('_pa', '_ctrl'))50 pa_control = pa_control.drop(columns=['geometry_pa', 'geometry_ctrl'])51 pa_control = gpd.GeoDataFrame(52 pa_control, 53 geometry=gpd.points_from_xy(pa_control.x_ctrl, pa_control.y_ctrl),54 crs="EPSG:4326"55 )56 57 m.add_basemap(basemap='HYBRID', show=True)58 m.add_circle_markers_from_xy(pa_treated, x="x", y="y", radius=1, color= "green")59 m.add_circle_markers_from_xy(pa_control, x="x_ctrl", y="y_ctrl", radius=1, color= "red")60 labels = ['Control Points', 'Treated Points']61 # color can be defined using either hex code or RGB (0-255, 0-255, 0-255)62 colors = ['#fc0303', '#07fc03']63 64 m.add_legend(title='Legend', labels=labels, colors=colors)65 m.to_streamlit(width=800, height=800, add_layer_control=True)66 67 with st.expander("Selected Protected Area's Treated and Matched", expanded=False):68 st.write("PA Treated")69 st.write(pa_treated)70 st.write("PA Matched")71 st.write(pa_control)