From 33fa9f92bc99f32b2d71693033b8cadc07eb3080 Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Tue, 24 Jan 2023 14:19:42 +0100 Subject: [PATCH 1/3] chirp body changes --- code/plot_chirp_bodylegth.py | 2 ++ poster/figs/chirps_winner_loser.pdf | Bin 11986 -> 12221 bytes 2 files changed, 2 insertions(+) diff --git a/code/plot_chirp_bodylegth.py b/code/plot_chirp_bodylegth.py index f722fee..c6d5e08 100644 --- a/code/plot_chirp_bodylegth.py +++ b/code/plot_chirp_bodylegth.py @@ -78,6 +78,7 @@ def main(datapath: str): ax.scatter(np.ones(len(chirps_winner))*scatterwinner, chirps_winner, color='r') ax.scatter(np.ones(len(chirps_loser))*scatterloser, chirps_loser, color='r') ax.set_xticklabels(['winner', 'loser']) + ax.text(0.9, 0.9, f'n = {len(chirps_winner)}', transform=ax.transAxes, color= ps.white) for w, l in zip(chirps_winner, chirps_loser): ax.plot([scatterwinner, scatterloser], [w, l], color='r', alpha=0.5, linewidth=0.5) @@ -87,6 +88,7 @@ def main(datapath: str): colors1 = ps.orange ps.set_boxplot_color(bplot2, colors1) + ax.set_ylabel('Chirpscounts [n]') plt.savefig('../poster/figs/chirps_winner_loser.pdf') plt.show() diff --git a/poster/figs/chirps_winner_loser.pdf b/poster/figs/chirps_winner_loser.pdf index 91718185eb8351d411370b1ffc558ed701c3888b..bafabda5193d792498cee0128acce971397933ec 100644 GIT binary patch delta 3041 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 K=GGmi=zjw{aWU%v From 01f74a471ebd36ac5c683f41378c725c0ba19011 Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Tue, 24 Jan 2023 15:32:52 +0100 Subject: [PATCH 2/3] adding size differences --- code/plot_chirp_bodylegth.py | 70 ++++++++++++++++++++++------ poster/figs/chirps_winner_loser.pdf | Bin 12221 -> 14087 bytes 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/code/plot_chirp_bodylegth.py b/code/plot_chirp_bodylegth.py index c6d5e08..dacbd5d 100644 --- a/code/plot_chirp_bodylegth.py +++ b/code/plot_chirp_bodylegth.py @@ -21,14 +21,19 @@ def main(datapath: str): foldernames = [ datapath + x + '/' for x in os.listdir(datapath) if os.path.isdir(datapath+x)] - path_to_csv = ( + path_order_meta = ( '/').join(foldernames[0].split('/')[:-2]) + '/order_meta.csv' - meta_id = read_csv(path_to_csv) - meta_id['recording'] = meta_id['recording'].str[1:-1] + order_meta_df = read_csv(path_order_meta) + order_meta_df['recording'] = order_meta_df['recording'].str[1:-1] + path_id_meta = ( + '/').join(foldernames[0].split('/')[:-2]) + '/id_meta.csv' + id_meta_df = read_csv(path_id_meta) chirps_winner = [] + size_diff = [] chirps_loser = [] + for foldername in foldernames: # behabvior is pandas dataframe with all the data if foldername == '../data/mount_data/2020-05-12-10_00/': @@ -43,16 +48,52 @@ def main(datapath: str): category, timestamps = correct_chasing_events(category, timestamps) folder_name = foldername.split('/')[-2] - winner_row = meta_id[meta_id['recording'] == folder_name] + winner_row = order_meta_df[order_meta_df['recording'] == folder_name] winner = winner_row['winner'].values[0].astype(int) winner_fish1 = winner_row['fish1'].values[0].astype(int) winner_fish2 = winner_row['fish2'].values[0].astype(int) + + groub = winner_row['group'].values[0].astype(int) + size_rows = id_meta_df[id_meta_df['group'] == groub] + + if winner == winner_fish1: winner_fish_id = winner_row['rec_id1'].values[0] loser_fish_id = winner_row['rec_id2'].values[0] + + size_winners = [] + for l in ['l1', 'l2', 'l3']: + size_winner = size_rows[size_rows['fish']== winner_fish1][l].values[0] + size_winners.append(size_winner) + mean_size_winner = np.nanmean(size_winners) + + + size_losers = [] + for l in ['l1', 'l2', 'l3']: + size_loser = size_rows[size_rows['fish']== winner_fish2][l].values[0] + size_losers.append(size_loser) + mean_size_loser = np.nanmean(size_losers) + + size_diff.append(mean_size_winner - mean_size_loser) + elif winner == winner_fish2: winner_fish_id = winner_row['rec_id2'].values[0] loser_fish_id = winner_row['rec_id1'].values[0] + + size_winners = [] + for l in ['l1', 'l2', 'l3']: + size_winner = size_rows[size_rows['fish']== winner_fish2][l].values[0] + size_winners.append(size_winner) + mean_size_winner = np.nanmean(size_winners) + + size_losers = [] + for l in ['l1', 'l2', 'l3']: + size_loser = size_rows[size_rows['fish']== winner_fish1][l].values[0] + size_losers.append(size_loser) + mean_size_loser = np.nanmean(size_losers) + + size_diff.append(mean_size_winner - mean_size_loser) + else: continue @@ -68,28 +109,31 @@ def main(datapath: str): print(winner_fish_id) print(all_fish_ids) - fig, ax = plt.subplots() + fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10,5)) scatterwinner = 1.15 scatterloser = 1.85 - bplot1 = ax.boxplot(chirps_winner, positions=[ + bplot1 = ax1.boxplot(chirps_winner, positions=[ 1], showfliers=False, patch_artist=True) - bplot2 = ax.boxplot(chirps_loser, positions=[ + bplot2 = ax1.boxplot(chirps_loser, positions=[ 2], showfliers=False, patch_artist=True) - ax.scatter(np.ones(len(chirps_winner))*scatterwinner, chirps_winner, color='r') - ax.scatter(np.ones(len(chirps_loser))*scatterloser, chirps_loser, color='r') - ax.set_xticklabels(['winner', 'loser']) - ax.text(0.9, 0.9, f'n = {len(chirps_winner)}', transform=ax.transAxes, color= ps.white) + ax1.scatter(np.ones(len(chirps_winner))*scatterwinner, chirps_winner, color='r') + ax1.scatter(np.ones(len(chirps_loser))*scatterloser, chirps_loser, color='r') + ax1.set_xticklabels(['winner', 'loser']) + ax1.text(0.9, 0.9, f'n = {len(chirps_winner)}', transform=ax1.transAxes, color= ps.white) for w, l in zip(chirps_winner, chirps_loser): - ax.plot([scatterwinner, scatterloser], [w, l], color='r', alpha=0.5, linewidth=0.5) + ax1.plot([scatterwinner, scatterloser], [w, l], color='r', alpha=0.5, linewidth=0.5) colors1 = ps.red ps.set_boxplot_color(bplot1, colors1) colors1 = ps.orange ps.set_boxplot_color(bplot2, colors1) + ax1.set_ylabel('Chirpscounts [n]') + ax2.scatter(size_w, chirps_winner, color='r') + ax2.scatter(size_l, chirps_loser, color='green') - ax.set_ylabel('Chirpscounts [n]') + plt.savefig('../poster/figs/chirps_winner_loser.pdf') plt.show() diff --git a/poster/figs/chirps_winner_loser.pdf b/poster/figs/chirps_winner_loser.pdf index bafabda5193d792498cee0128acce971397933ec..1c8943c344bb05a7d30a3a957ba8347ac3399233 100644 GIT binary patch delta 4608 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 Date: Tue, 24 Jan 2023 16:09:17 +0100 Subject: [PATCH 3/3] adding chirp differences --- code/plot_chirp_bodylegth.py | 28 +++++++++++++++++++++------- poster/figs/chirps_winner_loser.pdf | Bin 14087 -> 16896 bytes 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/code/plot_chirp_bodylegth.py b/code/plot_chirp_bodylegth.py index dacbd5d..6d5c782 100644 --- a/code/plot_chirp_bodylegth.py +++ b/code/plot_chirp_bodylegth.py @@ -31,7 +31,9 @@ def main(datapath: str): chirps_winner = [] size_diff = [] + chirps_diff = [] chirps_loser = [] + freq_diff = [] for foldername in foldernames: @@ -91,25 +93,32 @@ def main(datapath: str): size_loser = size_rows[size_rows['fish']== winner_fish1][l].values[0] size_losers.append(size_loser) mean_size_loser = np.nanmean(size_losers) - - size_diff.append(mean_size_winner - mean_size_loser) + size_diff.append(mean_size_winner - mean_size_loser) else: continue print(foldername) all_fish_ids = np.unique(bh.chirps_ids) - chirp_loser = len(bh.chirps[bh.chirps_ids == loser_fish_id]) chirp_winner = len(bh.chirps[bh.chirps_ids == winner_fish_id]) + chirp_loser = len(bh.chirps[bh.chirps_ids == loser_fish_id]) + + freq_winner = np.nanmedian(bh.freq[bh.ident==winner_fish_id]) + freq_loser = np.nanmedian(bh.freq[bh.ident==loser_fish_id]) + + chirps_winner.append(chirp_winner) chirps_loser.append(chirp_loser) + chirps_diff.append(chirp_winner - chirp_loser) + freq_diff.append(freq_winner - freq_loser) + fish1_id = all_fish_ids[0] fish2_id = all_fish_ids[1] print(winner_fish_id) print(all_fish_ids) - fig, (ax1, ax2) = plt.subplots(1,2, figsize=(10,5)) + fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(10,5)) scatterwinner = 1.15 scatterloser = 1.85 bplot1 = ax1.boxplot(chirps_winner, positions=[ @@ -130,10 +139,15 @@ def main(datapath: str): ps.set_boxplot_color(bplot2, colors1) ax1.set_ylabel('Chirpscounts [n]') - ax2.scatter(size_w, chirps_winner, color='r') - ax2.scatter(size_l, chirps_loser, color='green') + ax2.scatter(size_diff, chirps_diff, color='r') + ax2.set_xlabel('Size difference [mm]') + ax2.set_ylabel('Chirps difference [n]') + + ax3.scatter(freq_diff, chirps_diff, color='r') + ax3.set_xlabel('Frequency difference [Hz]') + ax3.set_yticklabels([]) + ax3.set - plt.savefig('../poster/figs/chirps_winner_loser.pdf') plt.show() diff --git a/poster/figs/chirps_winner_loser.pdf b/poster/figs/chirps_winner_loser.pdf index 1c8943c344bb05a7d30a3a957ba8347ac3399233..1eee6232a2b61320e3cbb78963cd7533fcad54cc 100644 GIT binary patch delta 6774 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 H)CT__J!PdL delta 4387 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