vancauwe commited on
Commit
a4eb606
Β·
1 Parent(s): 41c5156

feat: functional sliders and date input

Browse files
src/dataset/download.py CHANGED
@@ -59,7 +59,7 @@ def try_download_dataset(dataset_id:str, data_files:str) -> dict:
59
 
60
  msg = f"Downloaded dataset: (after {elap:.2f}s). "
61
  m_logger.info(msg)
62
- st.write(msg)
63
  return metadata
64
 
65
  def get_dataset():
 
59
 
60
  msg = f"Downloaded dataset: (after {elap:.2f}s). "
61
  m_logger.info(msg)
62
+ #st.write(msg)
63
  return metadata
64
 
65
  def get_dataset():
src/dataset/requests.py CHANGED
@@ -4,32 +4,27 @@ from dataset.cleaner import clean_lat_long, clean_date
4
  from dataset.download import get_dataset
5
  from dataset.fake_data import generate_fake_data
6
 
7
- def default_data_view():
 
8
  df = get_dataset()
9
- df = generate_fake_data(df, 100)
10
  df = clean_lat_long(df)
11
  df = clean_date(df)
12
  return df
13
 
14
  def filter_data(df):
15
- if st.session_state.date_range:
16
- df_filtered = df[
17
- (df['date'] >= pd.to_datetime(st.session_state.date_range[0])) & \
18
- (df['date'] <= pd.to_datetime(st.session_state.date_range[1]))
19
- ]
20
- if st.session_state.lon_range:
21
- df_filtered = df[
22
- (df['lon'] >= st.session_state.lon_range[0]) & \
23
- (df['lon'] <= st.session_state.lon_range[1])
24
- ]
25
- if st.session_state.lat_range:
26
- df_filtered = df[
27
- (df['lat'] >= st.session_state.lat_range[0]) & \
28
- (df['lat'] <= st.session_state.lat_range[1])
29
- ]
30
  return df_filtered
31
 
32
  def show_specie_author(df):
 
33
  df = df.groupby(['species', 'author_email']).size().reset_index(name='counts')
34
  for specie in df["species"].unique():
35
  st.subheader(f"Species: {specie}")
 
4
  from dataset.download import get_dataset
5
  from dataset.fake_data import generate_fake_data
6
 
7
+ def data_prep():
8
+ "Doing data prep"
9
  df = get_dataset()
10
+ # df = generate_fake_data(df, 100)
11
  df = clean_lat_long(df)
12
  df = clean_date(df)
13
  return df
14
 
15
  def filter_data(df):
16
+ df_filtered = df[
17
+ (df['date'] >= pd.to_datetime(st.session_state.date_range[0])) &
18
+ (df['date'] <= pd.to_datetime(st.session_state.date_range[1])) &
19
+ (df['lon'] >= st.session_state.lon_range[0]) &
20
+ (df['lon'] <= st.session_state.lon_range[1]) &
21
+ (df['lat'] >= st.session_state.lat_range[0]) &
22
+ (df['lat'] <= st.session_state.lat_range[1])
23
+ ]
 
 
 
 
 
 
 
24
  return df_filtered
25
 
26
  def show_specie_author(df):
27
+ print(df)
28
  df = df.groupby(['species', 'author_email']).size().reset_index(name='counts')
29
  for specie in df["species"].unique():
30
  st.subheader(f"Species: {specie}")
src/pages/5_🀝_requests.py CHANGED
@@ -5,16 +5,15 @@ st.set_page_config(
5
  page_icon="🀝",
6
  )
7
 
8
- from utils.st_logs import parse_log_buffer, init_logging_session_states
9
- from dataset.requests import default_data_view, show_new_data_view
10
- from datasets import disable_caching
11
- disable_caching()
12
 
13
- st.title("Requests")
 
 
 
14
 
15
  # Initialize the default data view
16
- df = default_data_view()
17
- print(df)
18
 
19
  if 'checkbox_states' not in st.session_state:
20
  st.session_state.checkbox_states = {}
@@ -29,36 +28,42 @@ if 'date_range' not in st.session_state:
29
  st.session_state.date_range = (df['date'].min(), df['date'].max())
30
 
31
  # Request button at the bottom
32
- if st.button("Request (Bottom)"):
 
 
33
  selected = [k for k, v in st.session_state.checkbox_states.items() if v]
34
  if selected:
35
- st.success(f"Request submitted for: {', '.join(selected)}")
36
  else:
37
  st.warning("No selections made.")
38
 
39
  # Latitude range filter
40
  lat_min, lat_max = float(df['lat'].min()), float(df['lat'].max())
41
- lat_range = st.sidebar.slider("Latitude range",
42
- min_value=lat_min,
43
- max_value=lat_max,
44
- value=(lat_min, lat_max),
45
- key='lat_range')
 
 
46
 
47
  # Longitude range filter
48
  lon_min, lon_max = float(df['lon'].min()), float(df['lon'].max())
49
- lon_range = st.sidebar.slider("Longitude range",
50
- min_value=lon_min,
51
- max_value=lon_max,
52
- value=(lon_min, lon_max),
53
- key='lon_range')
54
-
 
55
  # Date range filter
56
- date_min, date_max = df['date'].min(), df['date'].max()
57
- date_range = st.sidebar.date_input("Date range",
58
- value=(date_min, date_max),
59
- min_value=date_min,
60
- max_value=date_max,
61
- key='date_range')
 
62
 
63
  # Show authors per specie
64
  show_new_data_view(df)
 
5
  page_icon="🀝",
6
  )
7
 
8
+ from dataset.requests import data_prep, show_new_data_view
 
 
 
9
 
10
+ st.title("Data Requests")
11
+ st.write("This page is ensure findability of data across the community.")
12
+ st.write("You can filter the metadata by longitude, latitude and date. You can select data from multiple actors, for multiple species and make a grouped request. " \
13
+ "The request for the relevant data will be adressed individually to each owner. ")
14
 
15
  # Initialize the default data view
16
+ df = data_prep()
 
17
 
18
  if 'checkbox_states' not in st.session_state:
19
  st.session_state.checkbox_states = {}
 
28
  st.session_state.date_range = (df['date'].min(), df['date'].max())
29
 
30
  # Request button at the bottom
31
+ if st.button("REQUEST DATA",
32
+ type="primary",
33
+ icon="🐚"):
34
  selected = [k for k, v in st.session_state.checkbox_states.items() if v]
35
  if selected:
36
+ st.success(f"Request submitted for: the specie {', '.join(selected)}")
37
  else:
38
  st.warning("No selections made.")
39
 
40
  # Latitude range filter
41
  lat_min, lat_max = float(df['lat'].min()), float(df['lat'].max())
42
+ lat_range = st.sidebar.slider(
43
+ "Latitude range",
44
+ min_value=float(df['lat'].min()),
45
+ max_value=float(df['lat'].max()),
46
+ value=st.session_state.get("lat_range", (df['lat'].min(), df['lat'].max()))
47
+ )
48
+ st.session_state.lat_range = lat_range
49
 
50
  # Longitude range filter
51
  lon_min, lon_max = float(df['lon'].min()), float(df['lon'].max())
52
+ lon_range = st.sidebar.slider(
53
+ "Longitude range",
54
+ min_value=float(df['lon'].min()),
55
+ max_value=float(df['lon'].max()),
56
+ value=st.session_state.get("lon_range", (df['lon'].min(), df['lon'].max()))
57
+ )
58
+ st.session_state.lon_range = lon_range
59
  # Date range filter
60
+ date_range = st.sidebar.date_input(
61
+ "Date range",
62
+ value=st.session_state.get("date_range", (df['date'].min(), df['date'].max())),
63
+ min_value=df['date'].min(),
64
+ max_value=df['date'].max()
65
+ )
66
+ st.session_state.date_range = date_range
67
 
68
  # Show authors per specie
69
  show_new_data_view(df)