diff --git a/scripts/plotly_streamlit.py b/scripts/plotly_streamlit.py index 68e6fec..8d8e584 100755 --- a/scripts/plotly_streamlit.py +++ b/scripts/plotly_streamlit.py @@ -190,8 +190,6 @@ def sunrise_sunset_scatter(date_range): current_date = start_date for current_date in date_range: - # current_date = datetime.fromisocalendar(2022, week + 1, 5) - # time_zone = datetime.now() sun_rise = sun.get_local_sunrise_time(current_date) sun_dusk = sun.get_local_sunset_time(current_date) @@ -218,7 +216,6 @@ def sunrise_sunset_scatter(date_range): def hms_to_dec(t): - # (h, m, s) = t.split(':') h = t.hour m = t.minute / 60 s = t.second / 3600 @@ -227,11 +224,8 @@ def hms_to_dec(t): def hms_to_str(t): - # (h, m, s) = t.split(':') h = t.hour m = t.minute - # s = t.second / 3600 - # result = h + m + s return "%02d:%02d" % (h, m) @@ -244,7 +238,6 @@ if daily is False: species, index=0) - # filt = df2['Com_Name'] == specie if specie == 'All': df_counts = int(hourly[hourly.index == specie]['All'].iloc[0]) fig = make_subplots( @@ -255,10 +248,6 @@ if daily is False: subplot_titles=('Top ' + str(top_N) + ' Species in Date Range ' + str(start_date) + ' to ' + str( end_date) + '
for ' + str(resample_sel) + ' sampling interval.' + '
', 'Total Detect:' + str('{:,}'.format(df_counts)) - # + ' Confidence Max:' + str( - # '{:.2f}%'.format(max(df2[df2['Com_Name'] == specie]['Confidence']) * 100)) + - # ' ' + ' Median:' + str( - # '{:.2f}%'.format(np.median(df2[df2['Com_Name'] == specie]['Confidence']) * 100)) ) ) fig.layout.annotations[1].update(x=0.7, y=0.25, font_size=15) @@ -380,29 +369,6 @@ if daily is False: st.audio(userDir + '/BirdSongs/Extracted/By_Date/' + date_dir + '/' + specie_dir + '/' + recording) except Exception: st.title('RECORDING NOT AVAILABLE :(') - # try: - # con = sqlite3.connect(userDir + '/BirdNET-Pi/scripts/birds.db') - # cur = con.cursor() - cola, colb, colc, cold = st.columns((3, 1, 1, 1)) - with colb: - seen = st.checkbox('Reviewed') - if seen: - with colc: - verified = st.radio("Verification", ['True Positive', 'False Positive']) - - if verified == "False Positive": - df_names = pd.read_csv(userDir + '/BirdNET-Pi/model/labels.txt', delimiter='_', names=['Sci_Name', 'Com_Name']) - df_unknown = pd.DataFrame({"Sci_Name": ["UNKNOWN"], "Com_Name": ["UNKNOWN"]}) - df_names = pd.concat([df_unknown, df_names], ignore_index=True) - with cold: - corrected = st.selectbox('What species?', df_names['Com_Name']) - # cur.execute("UPDATE detections SET Seen = seen WHERE File_Name = recording") - # con.commit() - # con.close() - - # except BaseException: - # print("Database busy") - # time.sleep(2) else: @@ -411,22 +377,10 @@ if daily is False: species[1:], index=0) - # filt = df2[df2['Com_Name'] == specie] - df_counts = int(hourly[hourly.index == specie]['All']) fig = st.container() fig = make_subplots(rows=1, cols=1) - # specs= [[{"type":"xy","rowspan":1},{"type":"heatmap","rowspan":1}]], - # subplot_titles=('Daily Top '+ str(top_N) + ' Species in Date Range '+ str(start_date) +' to '+ str(end_date) +'', - # 'Daily ' + specie+ ' Detections on 15 minute intervals '), - # # 'Total Detect:'+str('{:,}'.format(df_counts))+ - # # ' Confidence Max:'+str('{:.2f}%'.format(max(df2[df2['Com_Name']==specie]['Confidence'])*100))+ - # # ' '+' Median:'+str('{:.2f}%'.format(np.median(df2[df2['Com_Name']==specie]['Confidence'])*100)) - # # ) - # ) - -# fig.add_trace(go.Bar(y=top_N_species.index, x=top_N_species, orientation='h'), row=1,col=1) df4 = df2['Com_Name'][df2['Com_Name'] == specie].resample('15min').count() df4.index = [df4.index.date, df4.index.time] day_hour_freq = df4.unstack().fillna(0) @@ -437,21 +391,15 @@ if daily is False: fig_y = [h.strftime('%H:%M') for h in day_hour_freq.columns.tolist()] day_hour_freq.columns = fig_dec_y fig_z = day_hour_freq.values.transpose() -# fig_heatmap = go.Figure(data=go.Heatmap(x=fig_x,y=fig_y,z=fig_z)) - # fig.update_layout( - # margin=dict(l=0, r=0, t=50, b=0), - # yaxis={'categoryorder':'total ascending'}) color_pals = px.colors.named_colorscales() selected_pal = st.sidebar.selectbox('Select Color Pallet for Daily Detections', color_pals) heatmap = go.Heatmap( - # x=fig_x, y=fig_y, x=fig_x, y=day_hour_freq.columns, z=fig_z, # heat.values, showscale=False, - # text=labels, texttemplate="%{text}", autocolorscale=False, colorscale=selected_pal ) daysback_range, sunrise_list, sunrise_text_list = sunrise_sunset_scatter(day_hour_freq.index.tolist()) @@ -490,17 +438,9 @@ else: plt_topN_today = (df6['Com_Name'].value_counts()[:readings]) freq_order = pd.value_counts(df6['Com_Name']).iloc[:readings].index - # confmax = df6.groupby('Com_Name')['Confidence'].max() - # reorder confmax to detection frequency order - # confmax = confmax.reindex(freq_order) - # norm = plt.Normalize(confmax.values.min(), confmax.values.max()) - # - # colors = plt.cm.Greens(norm(confmax)) fig.add_trace(go.Bar(y=plt_topN_today.index, x=plt_topN_today, marker_color='seagreen', orientation='h'), row=1, col=1) - # plot=sns.countplot(y='Com_Name', data = df_plt_topN_today, palette = colors, order=freq_order, ax=axs[0]) - df6['Hour of Day'] = [r.hour for r in df6.index.time] heat = pd.crosstab(df6['Com_Name'], df6['Hour of Day']) # Order heatmap Birds by frequency of occurrance @@ -525,15 +465,8 @@ else: showgrid=True) fig.update_layout(xaxis_ticks="inside", margin=dict(l=0, r=0, t=50, b=0)) -# container=st.container() -# config={'displayModelBar': False} st.plotly_chart(fig, use_container_width=True) # , config=config) -# cols3,cols4=st.columns((1,1)) -# extract_date=Date_Slider -# audio_file = open('/home/*/BirdSongs/Extracted/By_Date/2022-03-22/Yellow-streaked_Greenbul/Yellow-streaked_Greenbul-77-2022-03-22-birdnet-15:04:28.mp3', 'rb') -# audio_bytes = audio_file.read() -# cols4.audio(audio_bytes, format='audio/mp3') if profile: profiler.stop() profiler.print()