normalise common names

This commit is contained in:
frederik
2025-10-04 11:04:00 +02:00
parent 998fe999cd
commit 5bd94698ef
+17 -9
View File
@@ -67,14 +67,22 @@ def get_connection(path: str):
def get_data(_conn: Connection): def get_data(_conn: Connection):
print_now('** get_data **') print_now('** get_data **')
df1 = pd.read_sql("SELECT * FROM detections", con=conn) df1 = pd.read_sql("SELECT Date, Time, Sci_Name, Com_Name, Confidence, File_Name FROM detections", con=_conn)
return df1 return df1
@st.cache_data(max_entries=1)
def normalise_com_name(df):
print_now('** normalise_com_name **')
latest_com_names = df.groupby('Sci_Name').tail(1)
df.rename(columns={'Com_Name': 'Directory'}, inplace=True)
df['DateTime'] = pd.to_datetime(df['Date'] + " " + df['Time'])
return df.merge(latest_com_names[['Sci_Name', 'Com_Name']].set_index('Sci_Name'), how='left', on='Sci_Name').set_index('DateTime')
conn = get_connection(URI_SQLITE_DB) conn = get_connection(URI_SQLITE_DB)
df2 = get_data(conn) df2 = get_data(conn)
df2['DateTime'] = pd.to_datetime(df2['Date'] + " " + df2['Time']) df2 = normalise_com_name(df2)
df2 = df2.set_index('DateTime')
if len(df2) == 0: if len(df2) == 0:
st.info('No data yet. Please come back later.') st.info('No data yet. Please come back later.')
@@ -127,7 +135,7 @@ if start_date == end_date:
resample_times = {'Raw': 'Raw', resample_times = {'Raw': 'Raw',
'1 minute': '1min', '1 minute': '1min',
'15 minutes': '15min', '15 minutes': '15min',
'Hourly': '1H' 'Hourly': '1h'
} }
resample_time = resample_times[resample_sel] resample_time = resample_times[resample_sel]
@@ -139,7 +147,7 @@ else:
resample_times = {'Raw': 'Raw', resample_times = {'Raw': 'Raw',
'1 minute': '1min', '1 minute': '1min',
'15 minutes': '15min', '15 minutes': '15min',
'Hourly': '1H', 'Hourly': '1h',
'DAILY': '1D' 'DAILY': '1D'
} }
resample_time = resample_times[resample_sel] resample_time = resample_times[resample_sel]
@@ -373,14 +381,14 @@ if daily is False:
with col2: with col2:
try: try:
recording = st.selectbox('Available recordings', recordings.sort_index(ascending=False)) recording = st.selectbox('Recordings', recordings.sort_index(ascending=False))
date_specie = df2.loc[df2['File_Name'] == recording, ['Date', 'Com_Name']] date_specie = df2.loc[df2['File_Name'] == recording, ['Date', 'Com_Name', 'Directory']]
date_dir = date_specie['Date'].values[0] date_dir = date_specie['Date'].values[0]
specie_dir = date_specie['Com_Name'].values[0].replace(" ", "_").replace("'", "") specie_dir = date_specie['Directory'].values[0].replace(" ", "_").replace("'", "")
st.image(userDir + '/BirdSongs/Extracted/By_Date/' + date_dir + '/' + specie_dir + '/' + recording + '.png') st.image(userDir + '/BirdSongs/Extracted/By_Date/' + date_dir + '/' + specie_dir + '/' + recording + '.png')
st.audio(userDir + '/BirdSongs/Extracted/By_Date/' + date_dir + '/' + specie_dir + '/' + recording) st.audio(userDir + '/BirdSongs/Extracted/By_Date/' + date_dir + '/' + specie_dir + '/' + recording)
except Exception: except Exception:
st.title('RECORDING NOT AVAILABLE :(') st.info('Recording not available')
else: else: