From c8aa5bcb5443e5f48713dff7b472adecabd4b776 Mon Sep 17 00:00:00 2001 From: Brett Ford Date: Fri, 17 Jan 2025 21:06:28 +0000 Subject: [PATCH] add a bunch of cells to exploration notebook --- notebooks/annotation_data_exploration.ipynb | 6883 ++++++++----------- 1 file changed, 2978 insertions(+), 3905 deletions(-) diff --git a/notebooks/annotation_data_exploration.ipynb b/notebooks/annotation_data_exploration.ipynb index 9770d39..84bff6d 100644 --- a/notebooks/annotation_data_exploration.ipynb +++ b/notebooks/annotation_data_exploration.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "6046ca81-235e-4ed3-9bb3-0d51a88e85e1", "metadata": {}, "outputs": [], @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "001414a7", "metadata": {}, "outputs": [], @@ -107,193 +107,10 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "228c7154", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " common_name code\n", - "0 Acadian Flycatcher ACFL\n", - "1 Alder Flycatcher ALFL\n", - "2 American Avocet AMAV\n", - "3 American Bittern AMBI\n", - "4 American Coot AMCO\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
common_namecode
32Black OystercatcherBLOY
33Black TernBLTE
34Black TurnstoneBLTU
35Black-and-white WarblerBAWW
36Black-backed WoodpeckerBBWO
37Black-bellied PloverBBPL
38Black-billed CuckooBBCU
39Black-billed MagpieBBMA
40Black-capped ChickadeeBCCH
41Black-crowned Night HeronBCNH
42Black-headed GrosbeakBHGR
43Black-throated Blue WarblerBTBW
44Black-throated Gray WarblerBTGW
45Black-throated Green WarblerBTNW
46Blackburnian WarblerBLBW
47Blackpoll WarblerBLPW
59Brewer's BlackbirdBRBL
136Great Black-backed GullGBBG
170Lesser Black-backed GullLBBG
239Red-winged BlackbirdRWBL
253Rusty BlackbirdRUBL
324Yellow-headed BlackbirdYHBL
\n", - "
" - ], - "text/plain": [ - " common_name code\n", - "32 Black Oystercatcher BLOY\n", - "33 Black Tern BLTE\n", - "34 Black Turnstone BLTU\n", - "35 Black-and-white Warbler BAWW\n", - "36 Black-backed Woodpecker BBWO\n", - "37 Black-bellied Plover BBPL\n", - "38 Black-billed Cuckoo BBCU\n", - "39 Black-billed Magpie BBMA\n", - "40 Black-capped Chickadee BCCH\n", - "41 Black-crowned Night Heron BCNH\n", - "42 Black-headed Grosbeak BHGR\n", - "43 Black-throated Blue Warbler BTBW\n", - "44 Black-throated Gray Warbler BTGW\n", - "45 Black-throated Green Warbler BTNW\n", - "46 Blackburnian Warbler BLBW\n", - "47 Blackpoll Warbler BLPW\n", - "59 Brewer's Blackbird BRBL\n", - "136 Great Black-backed Gull GBBG\n", - "170 Lesser Black-backed Gull LBBG\n", - "239 Red-winged Blackbird RWBL\n", - "253 Rusty Blackbird RUBL\n", - "324 Yellow-headed Blackbird YHBL" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Pull in hawk ears classes\n", "hawk_ears_bird_classes_df = pd.read_csv(\"/Users/brettford/waterfowl_audio_id/hawk_ears_bird_classes.csv\")\n", @@ -328,22 +145,10 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "id": "bcb3cebd", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "spring species not in model:\n", - "American Black Duck\n", - "Red-breasted Merganser\n", - "Lesser Scaup\n", - "Greater Scaup\n" - ] - } - ], + "outputs": [], "source": [ "# Spring species\n", "# Dict of common name and frequency (out of ALL bird species)\n", @@ -380,19 +185,10 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "id": "6159e116", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "summer species not in model:\n", - "American Black Duck\n" - ] - } - ], + "outputs": [], "source": [ "# Spring species\n", "# Dict of common name and frequency (out of ALL bird species)\n", @@ -416,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "bbdd2f97", "metadata": {}, "outputs": [], @@ -434,35 +230,10 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "4cb8155b", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Using cache found in /Users/brettford/.cache/torch/hub/kitzeslab_bioacoustics-model-zoo_main\n" - ] - }, - { - "data": { - "text/plain": [ - "['BirdNET',\n", - " 'HawkEars',\n", - " 'MissingHawkearsDependency',\n", - " 'MissingTFDependency',\n", - " 'Perch',\n", - " 'SeparationModel',\n", - " 'YAMNet',\n", - " 'rana_sierrae_cnn']" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import torch\n", "torch.hub.list('kitzeslab/bioacoustics-model-zoo')" @@ -470,26 +241,10 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "id": "e0403964", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "canada_goose\n", - "['/Volumes/LaCie/eclipse_2024/A006_SD006/20240330_190500.WAV'\n", - " '/Volumes/LaCie/eclipse_2024/A010_SD014/20240330_190500.WAV']\n", - "canada_goose\n", - "['/Volumes/LaCie/eclipse_2024/A006_SD006/20240331_065000.WAV'\n", - " '/Volumes/LaCie/eclipse_2024/A015_SD010/20240331_065000.WAV']\n", - "mallard\n", - "['/Volumes/LaCie/eclipse_2024/A004_SD012/20240330_190700.WAV'\n", - " '/Volumes/LaCie/eclipse_2024/A010_SD014/20240330_190700.WAV']\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "import pandas as pd\n", @@ -545,21 +300,10 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "8ec90eec", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'A010_SD014'" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import os\n", "path = os.path.normpath(\"/Volumes/LaCie/eclipse_2024/A010_SD014/20240408_063500.WAV\")\n", @@ -568,294 +312,10 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "id": "18bb877a", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'Annotation']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Unnamed: 0' 'Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n" - ] - } - ], + "outputs": [], "source": [ "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", "for file in files:\n", @@ -866,157 +326,10 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "id": "9b9a3b2f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240411_055600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_055600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240404_060600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_060600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240403_054600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240403_054600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240414_064800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_064800.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_061400.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061400.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_071100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_071100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240414_070200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_070200.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240408_063700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240408_063700.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240409_064200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240409_064200.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240401_063200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240401_063200.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240402_064000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240402_064000.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240410_063200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240410_063200.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240404_061100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_061100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240403_055100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240403_055100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240401_063700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240401_063700.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_070600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_070600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_055500.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_055500.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240402_061400.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240402_061400.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240410_070500.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240410_070500.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240401_061600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240401_061600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240415_070701.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240415_070701.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240407_062000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240407_062000.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_061100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240415_065701.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240415_065701.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240402_063100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240402_063100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240414_060400.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_060400.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240414_064700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_064700.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240406_055800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240406_055800.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240402_070500.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240402_070500.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240404_055300.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_055300.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240408_061100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240408_061100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240404_070000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_070000.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240410_064500.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240410_064500.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240416_062200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240416_062200.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240402_065800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240402_065800.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240404_065500.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_065500.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_061600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240409_063400.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240409_063400.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240412_071300.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_071300.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240411_070300.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_070300.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240410_061900.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240410_061900.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240409_062600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240409_062600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240405_065000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240405_065000.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240416_063100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240416_063100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240403_065900.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240403_065900.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240411_071100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_071100.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240406_062600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240406_062600.wav\n", - "/Volumes/LaCie/eclipse_2024/A001_SD001/20240416_070700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240416_070700.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240401_055700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240401_055700.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240402_064000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240402_064000.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240402_065700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240402_065700.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240331_071200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240331_071200.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240402_055300.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240402_055300.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240401_062200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240401_062200.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240402_064200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240402_064200.wav\n", - "/Volumes/LaCie/eclipse_2024/A002_SD013/20240331_055800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A002_SD013_20240331_055800.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240401_060100.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240401_060100.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240403_065300.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240403_065300.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240404_064800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240404_064800.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240403_060700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240403_060700.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240401_065900.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240401_065900.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240404_065400.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240404_065400.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240401_062700.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240401_062700.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240404_055600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240404_055600.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240403_070900.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240403_070900.wav\n", - "/Volumes/LaCie/eclipse_2024/A003_SD005/20240404_061200.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A003_SD005_20240404_061200.wav\n", - "/Volumes/LaCie/eclipse_2024/A004_SD012/20240331_054800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A004_SD012_20240331_054800.wav\n", - "/Volumes/LaCie/eclipse_2024/A005_SD002/20240401_062800.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_062800.wav\n", - "/Volumes/LaCie/eclipse_2024/A005_SD002/20240401_065600.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_065600.wav\n", - "/Volumes/LaCie/eclipse_2024/A005_SD002/20240401_063000.wav\n", - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_063000.wav\n" - ] - } - ], + "outputs": [], "source": [ "deployment_dirs = [\n", " \"A001_SD001\",\n", @@ -1048,292 +361,10 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "id": "d29712b5", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'Delta Time (s)' 'Delta Freq (Hz)'\n", - " 'Avg Power Density (dB FS/Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n", - "['Selection' 'View' 'Channel' 'Begin Time (s)' 'End Time (s)'\n", - " 'Low Freq (Hz)' 'High Freq (Hz)' 'species']\n" - ] - } - ], + "outputs": [], "source": [ "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", "for file in files:\n", @@ -1369,80 +400,165 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "2e15f2ac", + "execution_count": null, + "id": "44ae4139", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "outputs": [], + "source": [ + "import os\n", + "#\"/Volumes/LaCie/eclipse_2024/A010_SD014/20240408_063500.WAV\"\n", + "birdnet_results_df = pd.read_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df.csv\")\n", + "birdnet_results_df.head()\n", + "all_deployments = []\n", + "for i, row in birdnet_results_df.iterrows():\n", + " path = os.path.normpath(row[\"Begin Path\"])\n", + " deployment = path.split(os.sep)[4]\n", + " all_deployments.append(deployment)\n", + "birdnet_results_df[\"deployment\"] = all_deployments\n", + "birdnet_results_df.head()\n", + "sample_size_df = birdnet_results_df.groupby([\"deployment\", \"Common Name\"]).size().to_frame('size').reset_index()\n", + "print(sample_size_df)\n", + "waterfowl_df = sample_size_df[sample_size_df[\"Common Name\"].isin([\"Canada Goose\", \"Trumpeter Swan\", \"Green-winged Teal\", \"Mallard\", \"Wood Duck\"])]\n", + "waterfowl_df.sort_values(by=[\"deployment\", \"Common Name\"], inplace=True)\n", + "print(waterfowl_df)\n", + "waterfowl_df.to_csv(\"/Users/brettford/Downloads/waterfowl_sample_size.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3495976f", + "metadata": {}, + "outputs": [], + "source": [ + "for file in df[\"file\"]:\n", + " path = os.path.normpath(file)\n", + " \n", + " shutil.copy(file, f\"/Volumes/LaCie/audio_files_to_annotate/target_samples/{path.split(os.sep)[4]}_{path.split(os.sep)[5]}.wav\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fee0d9d8", + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "from pathlib import Path\n", + "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", + "all_dfs = []\n", + "for file in files:\n", + " #print(os.path.exists(file))\n", + " wav_file = file.replace(\".Table.1.selections.txt\", \".wav\")\n", + " if not os.path.exists(wav_file):\n", + " print(wav_file)\n", + " #df.to_csv(file, sep=\"\\t\")\n", + " # all_dfs.append(df)\n", + " # file_stem = Path(file).stem.replace(\".Table.1.selections\", \"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "518dbe2d", + "metadata": {}, + "outputs": [], + "source": [ + "# This cell contains code to concatenate annotation labels and summarize number of annotations per deployment\n", + "import glob\n", + "import pandas as pd\n", + "\n", + "# all_files = []\n", + "all_dfs = []\n", + "\n", + "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", + "for file in files:\n", + " path = os.path.normpath(file)\n", + " file_stem = deployment = path.split(os.sep)[5]\n", + " deployment = file_stem[:10]\n", + " df = pd.read_csv(file, sep=\"\\t\")\n", + " df[\"deployment\"] = deployment\n", + " df[\"file_stem\"] = file_stem\n", + " all_dfs.append(df)\n", + "concatenated_annotations_df = pd.concat(all_dfs)\n", + "spectrogram_df = concatenated_annotations_df[(concatenated_annotations_df[\"View\"]==\"Spectrogram 1\") & (concatenated_annotations_df[\"species\"].isin([\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]))]\n", + "spectrogram_df.groupby([\"species\", \"deployment\"]).size().to_frame('size').reset_index()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f56b706", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "# Let's pull some files for annotating \n", + "deployments = [\"A009_SD009\",\n", + "\"A013_SD016\"\n", + "\"A014_SD021\"\n", + "\"A015_SD010\"]\n", + "\n", + "concat_df = pd.read_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df.csv\")\n", + "# /Volumes/LaCie/eclipse_2024/A015_SD010/20240405_065100.WAV\n", + "\n", + "deployments = []\n", + "for i, row in concat_df.iterrows():\n", + " path = os.path.normpath(row[\"Begin Path\"])\n", + " deployment = path.split(os.sep)[4]\n", + " deployments.append(deployment)\n", + "concat_df[\"deployment\"] = deployments\n", + "concat_df.sort_values(['Common Name','deployment', 'Confidence'], inplace=True)\n", + "print(concat_df.head())\n", + "paths_to_copy = []\n", + "for common_name in [\"Canada Goose\", \"Trumpeter Swan\", \"Green-winged Teal\", \"Mallard\", \"Wood Duck\"]:\n", + " for deployment in [\"A009_SD009\", \"A010_SD014\", \"A013_SD016\", \"A014_SD021\", \"A015_SD010\"]:\n", + " df = concat_df[(concat_df[\"Common Name\"] == common_name) & (concat_df[\"deployment\"] == deployment)]\n", + " #print(df.head())\n", + " if not df.empty:\n", + " print(df.sort_values(by=\"Confidence\", ascending=False).reset_index())\n", + " high_confidence_path = df.sort_values(by=\"Confidence\", ascending=False).reset_index()[\"Begin Path\"][0]\n", + " print(high_confidence_path)\n", + " paths_to_copy.append(high_confidence_path)\n", + "with open(\"/Users/brettford/Downloads/paths_to_target_annotating.csv\", \"w\") as f:\n", + " for elem in paths_to_copy:\n", + " f.write(f\"{elem}\\n\")\n", + "# Now just loop through, sort by Common Name, Deployment, and Confidence and Store first row\n", + "\n", + "\n", + "concat_df.head()\n", + "\n", + "concat_df.to_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df_sorted.csv\", index=False)\n", + "# for deployment in deployments:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e628b9f3", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "for file in paths_to_copy:\n", + " path = os.path.normpath(file)\n", + " shutil.copy(file, f\"/Volumes/LaCie/audio_files_to_annotate/target_samples/{path.split(os.sep)[4]}_{path.split(os.sep)[5]}\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "2e15f2ac", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", "\n", "\n", @@ -1487,571 +603,2320 @@ "\n", "\n", "\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "
SelectionViewChannelBegin Time (s)End Time (s)Low Freq (Hz)High Freq (Hz)Delta Time (s)Delta Freq (Hz)Avg Power Density (dB FS/Hz)speciesdeployment
01Waveform 110.0459870.9082361958.1593815.9000.86221857.741NaNamphibian_chorus_more_in_fileA010_SD014
11Spectrogram 110.0459870.9082361958.1593815.9000.86221857.741-31.20amphibian_chorus_more_in_fileA010_SD014
01Waveform 110.0574830.2874164117.1557933.0540.22993815.900NaNemptyA001_SD001
11Spectrogram 110.0574830.2874164117.1557933.0540.22993815.900-74.96emptyA001_SD001
01Waveform 110.0000000.8392561857.7413163.1800.83931305.439NaNamphibian- more in fileA001_SD001
.......................................
137Spectrogram 1152.10270652.568321444.4002833.300NaNNaNNaNbranta_canadensisA010_SD014
148
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
SelectionViewChannelBegin Time (s)End Time (s)Low Freq (Hz)High Freq (Hz)Delta Time (s)Delta Freq (Hz)Avg Power Density (dB FS/Hz)speciesdeployment
01Waveform 110.0287420.0977225964.5498520.7850.0692556.235NaNemptyA001_SD001
11Spectrogram 110.0287420.0977225964.5498520.7850.0692556.235-78.44emptyA001_SD001
01Waveform 1152.67753952.953459277.8002555.6008.4735798.9449420.0008444.400NaNNaNNaNbranta_canadensisaix_sponsaA010_SD014
15811Spectrogram 1152.67753952.953459277.8002555.6008.4735798.9449420.0008444.400NaNNaNNaNbranta_canadensisaix_sponsaA010_SD014
16922Waveform 1153.13165753.557033333.3002833.3009.0714059.5082780.0007666.700NaNNaNNaNbranta_canadensisaix_sponsaA010_SD014
179.......................................
2513Spectrogram 1153.13165753.557033333.3002833.30026.27558827.0228710.0007888.900NaNNaNNaNbranta_canadensisA010_SD014aix_sponsaA006_SD006
2614Waveform 1128.27600628.8048520.0006777.800NaNNaNNaNaix_sponsaA006_SD006
2714Spectrogram 1128.27600628.8048520.0006777.800NaNNaNNaNaix_sponsaA006_SD006
2815Waveform 1114.78766815.3739980.0006494.100NaNNaNNaNaix_sponsaA006_SD006
2915Spectrogram 1114.78766815.3739980.0006494.100NaNNaNNaNaix_sponsaA006_SD006
\n", - "

1894 rows × 12 columns

\n", + "

3612 rows × 12 columns

\n", "
" ], "text/plain": [ - " Selection View Channel Begin Time (s) End Time (s) \\\n", - "0 1 Waveform 1 1 0.045987 0.908236 \n", - "1 1 Spectrogram 1 1 0.045987 0.908236 \n", - "0 1 Waveform 1 1 0.057483 0.287416 \n", - "1 1 Spectrogram 1 1 0.057483 0.287416 \n", - "0 1 Waveform 1 1 0.000000 0.839256 \n", - ".. ... ... ... ... ... \n", - "13 7 Spectrogram 1 1 52.102706 52.568321 \n", - "14 8 Waveform 1 1 52.677539 52.953459 \n", - "15 8 Spectrogram 1 1 52.677539 52.953459 \n", - "16 9 Waveform 1 1 53.131657 53.557033 \n", - "17 9 Spectrogram 1 1 53.131657 53.557033 \n", - "\n", - " Low Freq (Hz) High Freq (Hz) Delta Time (s) Delta Freq (Hz) \\\n", - "0 1958.159 3815.900 0.8622 1857.741 \n", - "1 1958.159 3815.900 0.8622 1857.741 \n", - "0 4117.155 7933.054 0.2299 3815.900 \n", - "1 4117.155 7933.054 0.2299 3815.900 \n", - "0 1857.741 3163.180 0.8393 1305.439 \n", - ".. ... ... ... ... \n", - "13 444.400 2833.300 NaN NaN \n", - "14 277.800 2555.600 NaN NaN \n", - "15 277.800 2555.600 NaN NaN \n", - "16 333.300 2833.300 NaN NaN \n", - "17 333.300 2833.300 NaN NaN \n", - "\n", - " Avg Power Density (dB FS/Hz) species deployment \n", - "0 NaN amphibian_chorus_more_in_file A010_SD014 \n", - "1 -31.20 amphibian_chorus_more_in_file A010_SD014 \n", - "0 NaN empty A001_SD001 \n", - "1 -74.96 empty A001_SD001 \n", - "0 NaN amphibian- more in file A001_SD001 \n", - ".. ... ... ... \n", - "13 NaN branta_canadensis A010_SD014 \n", - "14 NaN branta_canadensis A010_SD014 \n", - "15 NaN branta_canadensis A010_SD014 \n", - "16 NaN branta_canadensis A010_SD014 \n", - "17 NaN branta_canadensis A010_SD014 \n", - "\n", - "[1894 rows x 12 columns]" + " Selection View Channel Begin Time (s) End Time (s) \\\n", + "0 1 Waveform 1 1 0.028742 0.097722 \n", + "1 1 Spectrogram 1 1 0.028742 0.097722 \n", + "0 1 Waveform 1 1 8.473579 8.944942 \n", + "1 1 Spectrogram 1 1 8.473579 8.944942 \n", + "2 2 Waveform 1 1 9.071405 9.508278 \n", + ".. ... ... ... ... ... \n", + "25 13 Spectrogram 1 1 26.275588 27.022871 \n", + "26 14 Waveform 1 1 28.276006 28.804852 \n", + "27 14 Spectrogram 1 1 28.276006 28.804852 \n", + "28 15 Waveform 1 1 14.787668 15.373998 \n", + "29 15 Spectrogram 1 1 14.787668 15.373998 \n", + "\n", + " Low Freq (Hz) High Freq (Hz) Delta Time (s) Delta Freq (Hz) \\\n", + "0 5964.549 8520.785 0.069 2556.235 \n", + "1 5964.549 8520.785 0.069 2556.235 \n", + "0 0.000 8444.400 NaN NaN \n", + "1 0.000 8444.400 NaN NaN \n", + "2 0.000 7666.700 NaN NaN \n", + ".. ... ... ... ... \n", + "25 0.000 7888.900 NaN NaN \n", + "26 0.000 6777.800 NaN NaN \n", + "27 0.000 6777.800 NaN NaN \n", + "28 0.000 6494.100 NaN NaN \n", + "29 0.000 6494.100 NaN NaN \n", + "\n", + " Avg Power Density (dB FS/Hz) species deployment \n", + "0 NaN empty A001_SD001 \n", + "1 -78.44 empty A001_SD001 \n", + "0 NaN aix_sponsa A010_SD014 \n", + "1 NaN aix_sponsa A010_SD014 \n", + "2 NaN aix_sponsa A010_SD014 \n", + ".. ... ... ... \n", + "25 NaN aix_sponsa A006_SD006 \n", + "26 NaN aix_sponsa A006_SD006 \n", + "27 NaN aix_sponsa A006_SD006 \n", + "28 NaN aix_sponsa A006_SD006 \n", + "29 NaN aix_sponsa A006_SD006 \n", + "\n", + "[3612 rows x 12 columns]" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "data_directory = \"/mnt/class_data/group1_bioacoustics/brett\"\n", + "\n", + "import glob\n", + "from pathlib import Path\n", + "files = glob.glob(f\"{data_directory}/*selections.txt\")\n", + "all_dfs = []\n", + "for file in files:\n", + " df = pd.read_csv(file, sep=\"\\t\")\n", + " file_stem = Path(file).stem.replace(\".Table.1.selections\", \"\")\n", + " df[\"deployment\"] = file_stem[:10]\n", + " all_dfs.append(df)\n", + " print()\n", + "final_df = pd.concat(all_dfs)\n", + "final_df" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "e1934717", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
speciesdeploymentsize
0aix_sponsaA001_SD00127
1aix_sponsaA005_SD0022
2aix_sponsaA006_SD00653
3aix_sponsaA007_SD01722
4aix_sponsaA008_SD00754
5aix_sponsaA009_SD0095
6aix_sponsaA010_SD01456
7anas_carolinensisA006_SD0061
8anas_carolinensisA007_SD01726
9anas_carolinensisA008_SD0071
10anas_carolinensisA010_SD01465
11anas_platyrhynchosA005_SD00210
12anas_platyrhynchosA006_SD00643
13anas_platyrhynchosA007_SD01723
14anas_platyrhynchosA008_SD00747
15anas_platyrhynchosA009_SD0092
16anas_platyrhynchosA010_SD01491
17branta_canadensisA005_SD0025
18branta_canadensisA006_SD006181
19branta_canadensisA007_SD01746
20branta_canadensisA008_SD00746
21branta_canadensisA009_SD00967
22branta_canadensisA010_SD01445
23cygnus_buccinatorA005_SD0025
24cygnus_buccinatorA006_SD006148
25cygnus_buccinatorA007_SD01744
26cygnus_buccinatorA009_SD00932
27cygnus_buccinatorA010_SD01446
\n", + "
" + ], + "text/plain": [ + " species deployment size\n", + "0 aix_sponsa A001_SD001 27\n", + "1 aix_sponsa A005_SD002 2\n", + "2 aix_sponsa A006_SD006 53\n", + "3 aix_sponsa A007_SD017 22\n", + "4 aix_sponsa A008_SD007 54\n", + "5 aix_sponsa A009_SD009 5\n", + "6 aix_sponsa A010_SD014 56\n", + "7 anas_carolinensis A006_SD006 1\n", + "8 anas_carolinensis A007_SD017 26\n", + "9 anas_carolinensis A008_SD007 1\n", + "10 anas_carolinensis A010_SD014 65\n", + "11 anas_platyrhynchos A005_SD002 10\n", + "12 anas_platyrhynchos A006_SD006 43\n", + "13 anas_platyrhynchos A007_SD017 23\n", + "14 anas_platyrhynchos A008_SD007 47\n", + "15 anas_platyrhynchos A009_SD009 2\n", + "16 anas_platyrhynchos A010_SD014 91\n", + "17 branta_canadensis A005_SD002 5\n", + "18 branta_canadensis A006_SD006 181\n", + "19 branta_canadensis A007_SD017 46\n", + "20 branta_canadensis A008_SD007 46\n", + "21 branta_canadensis A009_SD009 67\n", + "22 branta_canadensis A010_SD014 45\n", + "23 cygnus_buccinator A005_SD002 5\n", + "24 cygnus_buccinator A006_SD006 148\n", + "25 cygnus_buccinator A007_SD017 44\n", + "26 cygnus_buccinator A009_SD009 32\n", + "27 cygnus_buccinator A010_SD014 46" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import seaborn as sns\n", + "spectrogram_df = final_df[(final_df[\"View\"]==\"Spectrogram 1\") & (final_df[\"species\"].isin([\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]))]\n", + "spectrogram_df.groupby([\"species\", \"deployment\"]).size().to_frame('size').reset_index()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f0068070", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "156\n", + "Preview of testing files list:\n", + "['/mnt/class_data/group1_bioacoustics/brett/A006_SD006_20240330_162000.WAV.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A006_SD006_20240331_065000.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A006_SD006_20240331_191300.WAV.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A006_SD006_20240401_060600.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A006_SD006_20240401_164800.Table.1.selections.txt']\n", + "Preview of training/validation/extra test files list:\n", + "['/mnt/class_data/group1_bioacoustics/brett/A001_SD001_20240406_055800.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240331_061000.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240402_060800.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240415_070100.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_190700.Table.1.selections.txt']\n", + "130\n", + "130\n", + "Going to sample 13 additional test files\n", + "Old sample size of train_validation files: 130\n", + "New sample size of train_validation files: 117\n" + ] + } + ], + "source": [ + "import glob\n", + "\n", + "data_directory = \"/mnt/class_data/group1_bioacoustics/brett\"\n", + "# data_directory = \"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108\"\n", + "\n", + "import random\n", + "\n", + "# This cell contains code that will be used to systematically go split data\n", + "all_deployment_names = [\"A010_SD014\",\n", + "\"A005_SD002\",\n", + "\"A008_SD007\",\n", + "\"A016_SD022\",\n", + "\"A003_SD005\",\n", + "\"A017_SD024\",\n", + "\"A007_SD017\",\n", + "\"A009_SD009\",\n", + "\"A002_SD013\",\n", + "\"A002_SD013\",\n", + "\"A001_SD001\",\n", + "\"A014_SD021\",\n", + "\"A004_SD012\",\n", + "\"A011_SD018\",\n", + "\"A013_SD016\",\n", + "\"A006_SD006\",\n", + "\"A015_SD010\",\n", + "\"A018_SD011\",\n", + "\"A019_SD008\",\n", + "\"A021_SD023\",\n", + "\"A022_SD019\"]\n", + "deployment_names_for_testing = [\"A005_SD002\", \"A006_SD006\"]\n", + "\n", + "files = glob.glob(f\"{data_directory}/*selections.txt\")\n", + "print(len(files))\n", + "testing_files = []\n", + "train_validation_files = []\n", + "for file in files:\n", + " if \"A005_SD002\" in file or \"A006_SD006\" in file:\n", + " # print(file)\n", + " # print(deployment_name)\n", + " testing_files.append(file)\n", + " else:\n", + " train_validation_files.append(file)\n", + "\n", + "print(\"Preview of testing files list:\")\n", + "print(testing_files[:5])\n", + "\n", + "print(\"Preview of training/validation/extra test files list:\")\n", + "print(train_validation_files[:5])\n", + "print(len(set(train_validation_files)))\n", + "print(len(train_validation_files))\n", + "\n", + "# Let's reserve a small proportion for additional testing files\n", + "number_of_additional_test_files_to_sample = round(0.1*len(train_validation_files))\n", + "print(f\"Going to sample {number_of_additional_test_files_to_sample} additional test files\")\n", + "additional_test_files = random.sample(train_validation_files, number_of_additional_test_files_to_sample)\n", + "\n", + "print(f\"Old sample size of train_validation files: {len(train_validation_files)}\")\n", + "train_validation_files = [file for file in train_validation_files if file not in additional_test_files]\n", + "print(f\"New sample size of train_validation files: {len(train_validation_files)}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9f38428b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/mnt/class_data/group1_bioacoustics/brett/A001_SD001_20240406_055800.wav', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240331_061000.wav', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240402_060800.wav', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240415_070100.wav', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_190700.wav']\n", + "['/mnt/class_data/group1_bioacoustics/brett/A001_SD001_20240406_055800.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240331_061000.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240402_060800.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240415_070100.Table.1.selections.txt', '/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_190700.Table.1.selections.txt']\n" + ] + } + ], + "source": [ + "import os\n", + "import random\n", + "\n", + "import numpy as np\n", + "from opensoundscape import BoxedAnnotations\n", + "from opensoundscape.utils import set_seed\n", + "\n", + "#np.random.seed = 11\n", + "set_seed(11, verbose=False)\n", + "# Let's first try to split randomly and see how many samples we have for each deployment site\n", + "# The file list I have is for the annotations because I globbed *selections.txt\n", + "# So, I have to create a list for the sound files\n", + "audio_file_paths = []\n", + "raven_file_paths = []\n", + "for file in train_validation_files:\n", + " raven_file_paths.append(file)\n", + " audio_file = file.replace(\".Table.1.selections.txt\", \".wav\")\n", + " audio_file_paths.append(audio_file)\n", + "print(audio_file_paths[:5])\n", + "print(raven_file_paths[:5])\n", + "for raven_file in raven_file_paths:\n", + " if not os.path.exists(raven_file):\n", + " print(f\"WARNING!!! raven file {raven_file} doesn't exist\")\n", + "for audio_file in audio_file_paths:\n", + " if not os.path.exists(audio_file):\n", + " print(f\"WARNING!!! audio file {audio_file} doesn't exist\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ac18e2dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1684\n", + "422\n", + " deployment label sample_size\n", + "0 A001_SD001 aix_sponsa 18\n", + "1 A007_SD017 aix_sponsa 4\n", + "2 A007_SD017 anas_carolinensis 6\n", + "3 A007_SD017 anas_platyrhynchos 6\n", + "4 A007_SD017 branta_canadensis 22\n", + "5 A007_SD017 cygnus_buccinator 6\n", + "6 A008_SD007 aix_sponsa 16\n", + "7 A008_SD007 anas_platyrhynchos 6\n", + "8 A008_SD007 branta_canadensis 14\n", + "9 A009_SD009 aix_sponsa 1\n", + "10 A009_SD009 anas_platyrhynchos 1\n", + "11 A009_SD009 branta_canadensis 16\n", + "12 A009_SD009 cygnus_buccinator 7\n", + "13 A010_SD014 aix_sponsa 18\n", + "14 A010_SD014 anas_carolinensis 16\n", + "15 A010_SD014 anas_platyrhynchos 13\n", + "16 A010_SD014 branta_canadensis 12\n", + "17 A010_SD014 cygnus_buccinator 35\n", + "206\n", + "1478\n", + " deployment label sample_size\n", + "0 A001_SD001 aix_sponsa 7\n", + "1 A001_SD001 empty_class 143\n", + "2 A002_SD013 empty_class 27\n", + "3 A003_SD005 empty_class 33\n", + "4 A004_SD012 empty_class 3\n", + "5 A007_SD017 aix_sponsa 1\n", + "6 A007_SD017 branta_canadensis 4\n", + "7 A007_SD017 cygnus_buccinator 2\n", + "8 A007_SD017 empty_class 26\n", + "9 A008_SD007 aix_sponsa 10\n", + "10 A008_SD007 anas_platyrhynchos 4\n", + "11 A008_SD007 branta_canadensis 3\n", + "12 A008_SD007 empty_class 23\n", + "13 A009_SD009 aix_sponsa 1\n", + "14 A009_SD009 branta_canadensis 7\n", + "15 A009_SD009 cygnus_buccinator 2\n", + "16 A009_SD009 empty_class 4\n", + "17 A010_SD014 aix_sponsa 7\n", + "18 A010_SD014 anas_carolinensis 2\n", + "19 A010_SD014 anas_platyrhynchos 4\n", + "20 A010_SD014 branta_canadensis 4\n", + "21 A010_SD014 cygnus_buccinator 3\n", + "22 A010_SD014 empty_class 104\n" + ] + }, + { + "data": { + "image/png": "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i9G8eXNoa2tXZ2xEREREteatJpPU1NSEm5tbdcVCREREVGdUOkkaNGhQpSuNjIysUjBEREREdUWlkyRdXd13GQcRERFRnVLpJCk0NPRdxkFERERUp7zVmKTMzExcv34dEokEDg4OMDIyqq64iIiIiGpVleZJys7OxogRI2Bubg4PDw+4u7vD3Nwcw4cPR1ZWVnXHSERERFTjqpQkjR07FjExMTh06BCePn2KrKwsHDp0CLGxsfD396/uGImIiIhqXJUut/366684fPgwOnfuLC7z9vbG1q1b0bNnz2oLjoiIiKi2VKknydDQUOHdbrq6utDX13/roIiIiIhqW5WSpG+++QbTp09HRkaGuOzBgweYNWsW5s+fX23BEREREdWWKl1u27RpE27dugUrKytYWloCANLS0qCuro6HDx/ihx9+EMvGx8dXT6RERERENahKSdLAgQOrOQwiIiKiuqVKSdLChQurOw4iIiKiOuWtJpMEgJycHBQXF8st09HRedtqiYiIiGpVlQZup6amok+fPtDS0hLvaNPX14eenh7vbiMiIqIGoUo9ScOGDQMAbN++HcbGxpBIJNUaFBEREVFtq1KSdPnyZcTFxcHR0bG64yEiIiKqE6p0ua1NmzZIT0+v7liIiIiI6owq9ST9+OOP+OKLL3Dv3j20aNECqqqqcutbtmxZLcERERER1ZYqJUkPHz5ESkoKRo0aJS6TSCQQBAESiQRFRUXVFiARERFRbahSkjR69Gi4urpiz549HLhNREREDVKVkqQ7d+7g4MGDsLOzq+54iIiIiOqEKg3c/uijj3Dp0qXqjoWIiIiozqhST1K/fv0wbdo0JCUlwdnZudTA7f79+1dLcERERES1pUpJ0hdffAEAWLx4cal1HLhNREREDUGVkqR/P6uNiIiIqKGp0pgkIiIiooauSj1JAJCbm4uoqCikpaUhPz9fbt3kyZPfOjAiIiKi2lSlJCkhIQG9e/fG8+fPkZubCwMDAzx69AiampowMjJikkRERET1XpUut02bNg39+vXDP//8A6lUivPnz+POnTto3bo1Vq1aVd0xEhEREdW4KiVJiYmJmDFjBpSVlaGsrIy8vDxYWFhg5cqV+Prrr6s7Rty7dw/Dhw+HoaEhNDU14eLigri4OHG9IAgIDAyEmZkZpFIpPD09cfXq1WqPg4iIiN4fVUqSVFVVxUeRGBsbIy0tDQCgq6sr/lxdnjx5gk6dOkFVVRW///47rl27htWrV0NPT08ss3LlSqxZswYbNmzAxYsXYWJigu7du+PZs2fVGgsRERG9P6o0JsnV1RWxsbFwcHBA165dsWDBAjx69Ajh4eFwdnau1gBXrFgBCwsLhIaGisusra3FnwVBwLp16zBv3jwMGjQIALBjxw4YGxsjIiIC48ePr9Z4iIiI6P1QpZ6koKAgmJqaAgCWLFkCQ0NDfPnll3j48CF++OGHag3w4MGDcHNzw2effQYjIyO4urpi69at4vrU1FQ8ePAAPXr0EJepq6vDw8MD0dHRCuvMy8tDdna23IuIiIjodVXqSXJycoIgCACAxo0bY+PGjdi/fz+aN28OFxeX6owPf//9NzZt2oTp06fj66+/xoULFzB58mSoq6vD19cXDx48APDqst/rjI2NcefOHYV1Llu2DIsWLarWOImIiKhhqVJP0oABA7Bz504AwNOnT9G+fXusWbMGAwcOxKZNm6o1wOLiYnz44YcICgqCq6srxo8fD39//1L7KRkjVUIQhFLLSsydOxdZWVniKz09vVpjJiIiovqvSklSfHw8unTpAgDYt2+f2Guzc+dOBAcHV2uApqamaN68udyyZs2aiQPETUxMAEDsUSqRmZlZqnephLq6OnR0dOReRERERK+rUpL0/PlzyGQyAMCRI0cwaNAgKCkpoX379mVe4qqqTp064fr163LLbty4ASsrKwCAjY0NTExMcPToUXF9fn4+oqKi0LFjx2qNhYiIiN4fVUqS7OzscODAAaSnp+Pw4cPioOnMzMxq75WZNm0azp8/j6CgINy6dQsRERHYsmULJk6cCODVZbapU6ciKCgI+/fvx5UrV+Dn5wdNTU34+PhUayxERET0/qjSwO0FCxbAx8cH06ZNQ7du3dChQwcAr3qVXF1dqzXANm3aYP/+/Zg7dy4WL14MGxsbrFu3DsOGDRPLzJ49Gy9evMCECRPw5MkTtGvXDkeOHBF7u4iIiIjelEQouU3tDT148AAZGRlo1aoVlJRedUhduHABOjo6aNq0abUG+a5lZ2dDV1cXWVlZVeoJS1tc/txQlguSqhoaERHRO1dfv8fe9vu7IlXqSQJeDZguGTRdom3btm8dEBEREVFdUKUxSUREREQNHZMkIiIiIgWYJBEREREpwCSJiIiISAEmSUREREQKMEkiIiIiUoBJEhEREZECTJKIiIiIFGCSRERERKQAkyQiIiIiBZgkERERESnAJImIiIhIASZJRERERAowSSIiIiJSgEkSERERkQJMkoiIiIgUYJJEREREpACTJCIiIiIFmCQRERERKcAkiYiIiEgBJklERERECjBJIiIiIlKASRIRERGRAkySiIiIiBRgkkRERESkAJMkIiIiIgWYJBEREREpwCSJiIiISAEmSUREREQKMEkiIiIiUoBJEhEREZECTJKIiIiIFGCSRERERKQAkyQiIiIiBZgkERERESnAJImIiIhIASZJRERERAowSSIiIiJSoF4lScuWLYNEIsHUqVPFZYIgIDAwEGZmZpBKpfD09MTVq1drL0giIiJqEOpNknTx4kVs2bIFLVu2lFu+cuVKrFmzBhs2bMDFixdhYmKC7t2749mzZ7UUKRERETUE9SJJysnJwbBhw7B161bo6+uLywVBwLp16zBv3jwMGjQILVq0wI4dO/D8+XNERESUWV9eXh6ys7PlXkRERESvqxdJ0sSJE9GnTx94eXnJLU9NTcWDBw/Qo0cPcZm6ujo8PDwQHR1dZn3Lli2Drq6u+LKwsHhnsRMREVH9VOeTpL179yI+Ph7Lli0rte7BgwcAAGNjY7nlxsbG4jpF5s6di6ysLPGVnp5evUETERFRvadS2wGUJz09HVOmTMGRI0egoaFRZjmJRCL3XhCEUstep66uDnV19WqLk4iIiBqeOt2TFBcXh8zMTLRu3RoqKipQUVFBVFQUgoODoaKiIvYg/bvXKDMzs1TvEhEREdGbqNNJUrdu3ZCUlITExETx5ebmhmHDhiExMRG2trYwMTHB0aNHxW3y8/MRFRWFjh071mLkREREVN/V6cttMpkMLVq0kFumpaUFQ0NDcfnUqVMRFBQEe3t72NvbIygoCJqamvDx8amNkImIiKiBqNNJUmXMnj0bL168wIQJE/DkyRO0a9cOR44cgUwmq+3QiIiIqB6rd0nSyZMn5d5LJBIEBgYiMDCwVuIhIiKihqlOj0kiIiIiqi1MkoiIiIgUYJJEREREpACTJCIiIiIFmCQRERERKcAkiYiIiEgBJklERERECjBJIiIiIlKASRIRERGRAvVuxm2i2pa22Lnc9ZYLkmooEiIiepfYk0RERESkAJMkIiIiIgWYJBEREREpwCSJiIiISAEmSUREREQKMEkiIiIiUoBJEhEREZECTJKIiIiIFGCSRERERKQAkyQiIiIiBZgkERERESnAJImIiIhIASZJRERERAowSSIiIiJSQKW2A6D6K22xc7nrLRck1VAkRERE1Y89SUREREQKMEkiIiIiUoCX24iIysHLykTvL/YkERERESnAJImIiIhIASZJRERERAowSSIiIiJSgEkSERERkQJMkoiIiIgU4BQARERUCqc+IGJPEhEREZFCTJKIiIiIFGCSRERERKRAnU+Sli1bhjZt2kAmk8HIyAgDBw7E9evX5coIgoDAwECYmZlBKpXC09MTV69eraWIiYiIqCGo80lSVFQUJk6ciPPnz+Po0aMoLCxEjx49kJubK5ZZuXIl1qxZgw0bNuDixYswMTFB9+7d8ezZs1qMnIiIiOqzOn932x9//CH3PjQ0FEZGRoiLi4O7uzsEQcC6deswb948DBo0CACwY8cOGBsbIyIiAuPHjy9VZ15eHvLy8sT32dnZ77YRREREVO/U+Z6kf8vKygIAGBgYAABSU1Px4MED9OjRQyyjrq4ODw8PREdHK6xj2bJl0NXVFV8WFhbvPnAiIiKqV+pVkiQIAqZPn47OnTujRYsWAIAHDx4AAIyNjeXKGhsbi+v+be7cucjKyhJf6enp7zZwIiIiqnfq/OW21wUEBODy5cs4c+ZMqXUSiUTuvSAIpZaVUFdXh7q6+juJkYiIiBqGetOTNGnSJBw8eBAnTpxAkyZNxOUmJiYAUKrXKDMzs1TvEhEREVFl1fkkSRAEBAQEIDIyEsePH4eNjY3cehsbG5iYmODo0aPisvz8fERFRaFjx441HS4RERE1EHX+ctvEiRMRERGB//u//4NMJhN7jHR1dSGVSiGRSDB16lQEBQXB3t4e9vb2CAoKgqamJnx8fGo5eiIiIqqv6nyStGnTJgCAp6en3PLQ0FD4+fkBAGbPno0XL15gwoQJePLkCdq1a4cjR45AJpPVcLRERETUUNT5JEkQhArLSCQSBAYGIjAw8N0HRERERO+FOj8miYiIiKg2MEkiIiIiUoBJEhEREZECTJKIiIiIFGCSRERERKQAkyQiIiIiBZgkERERESnAJImIiIhIASZJRERERAowSSIiIiJSgEkSERERkQJMkoiIiIgUYJJEREREpACTJCIiIiIFmCQRERER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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "import seaborn as sns\n", + "\n", + "\n", + "working_directory = \"/home/Brett\"\n", + "# working_directory = \"/Users/brettford/Downloads\"\n", + "\n", + "#np.random.seed = 11\n", + "#random.seed = 11\n", + "\n", + "# Let's define annotations class and split classes\n", + "all_annotations = BoxedAnnotations.from_raven_files(raven_files=raven_file_paths,audio_files=audio_file_paths, annotation_column=\"species\")\n", + "#print(all_annotations.df)\n", + "\n", + "# Let's split audio clips\n", + "class_list = [\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]\n", + "labels = all_annotations.clip_labels(\n", + " clip_duration=3,\n", + " clip_overlap=0,\n", + " min_label_overlap=0.25,\n", + " class_subset=class_list\n", + ")\n", + "train_df, validation_df = train_test_split(labels, test_size=0.2)\n", + "validation_df[\"empty_class\"] = ~validation_df.any(axis=1)\n", + "print(len(train_df))\n", + "print(len(validation_df))\n", + "# Let's check how many annotations we have for each species at each site\n", + "\n", + "label_sample_size_dict = {}\n", + "species_by_deployment_dfs = []\n", + "for label in train_df.columns.values:\n", + " label_df = train_df[train_df[label]]\n", + " deployment_list = []\n", + " for i, row in label_df.reset_index().iterrows():\n", + " path = os.path.normpath(row[\"file\"])\n", + " deployment = path.split(os.sep)[5][:10]\n", + " deployment_list.append(deployment)\n", + " label_deployment_df = pd.DataFrame({\"deployment\":deployment_list})\n", + " label_deployment_df[\"label\"] = label\n", + " species_by_deployment_dfs.append(label_deployment_df)\n", + " # Group by deployment and species list and \n", + "concatenated_species_by_deployment_sample_size_df = pd.concat(species_by_deployment_dfs)\n", + "species_by_deployment_sample_size_df = concatenated_species_by_deployment_sample_size_df.groupby([\"deployment\", \"label\"]).size().rename('sample_size').reset_index()\n", + "print(species_by_deployment_sample_size_df)\n", + "ax = sns.barplot(data=species_by_deployment_sample_size_df, x=\"deployment\", y=\"sample_size\", hue=\"label\")\n", + "plt.savefig(\n", + " f\"{working_directory}/train_dataset_deployment_label_sample_sizes.png\", bbox_inches=\"tight\", dpi=800\n", + ")\n", + "plt.close()\n", + "\n", + "# Let's filter training dataframe to reduce the number of empty clips; otherwise model\n", + "# may be incentivized to predict empty class \n", + "training_clips_w_pos_id_df = train_df[train_df.any(axis=1)]\n", + "training_clips_wo_pos_id_df = train_df[~train_df.any(axis=1)]\n", + "training_clips_w_pos_id_df\n", + "print(len(training_clips_w_pos_id_df))\n", + "print(len(training_clips_wo_pos_id_df))\n", + "number_of_files_to_sample = len(training_clips_w_pos_id_df) * 2\n", + "\n", + "training_clips_wo_pos_id_to_keep_df = training_clips_wo_pos_id_df.sample(number_of_files_to_sample)\n", + "train_df = pd.concat([training_clips_wo_pos_id_to_keep_df, training_clips_w_pos_id_df])\n", + "train_df\n", + "train_df[\"empty_class\"] = ~train_df.any(axis=1)\n", + "train_df.sort_values([\"file\", \"start_time\", \"end_time\"], inplace=True)\n", + "\n", + "\n", + "label_sample_size_dict = {}\n", + "species_by_deployment_dfs = []\n", + "for label in validation_df.columns.values:\n", + " label_df = validation_df[validation_df[label]]\n", + " deployment_list = []\n", + " for i, row in label_df.reset_index().iterrows():\n", + " path = os.path.normpath(row[\"file\"])\n", + " deployment = path.split(os.sep)[5][:10]\n", + " deployment_list.append(deployment)\n", + " label_deployment_df = pd.DataFrame({\"deployment\":deployment_list})\n", + " label_deployment_df[\"label\"] = label\n", + " species_by_deployment_dfs.append(label_deployment_df)\n", + " # Group by deployment and species list and \n", + "concatenated_species_by_deployment_sample_size_df = pd.concat(species_by_deployment_dfs)\n", + "species_by_deployment_sample_size_df = concatenated_species_by_deployment_sample_size_df.groupby([\"deployment\", \"label\"]).size().rename('sample_size').reset_index()\n", + "print(species_by_deployment_sample_size_df)\n", + "ax = sns.barplot(data=species_by_deployment_sample_size_df, x=\"deployment\", y=\"sample_size\", hue=\"label\")\n", + "plt.savefig(\n", + " f\"{working_directory}/validation_dataset_deployment_label_sample_sizes.png\", bbox_inches=\"tight\", dpi=800\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0825c37e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " branta_canadensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 False \n", + " 18.0 21.0 False \n", + " 24.0 27.0 False \n", + " 27.0 30.0 False \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 False \n", + "\n", + " cygnus_buccinator \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 False \n", + " 18.0 21.0 False \n", + " 24.0 27.0 False \n", + " 27.0 30.0 False \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 False \n", + "\n", + " anas_carolinensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 False \n", + " 18.0 21.0 False \n", + " 24.0 27.0 False \n", + " 27.0 30.0 False \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 False \n", + "\n", + " anas_platyrhynchos \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 False \n", + " 18.0 21.0 False \n", + " 24.0 27.0 False \n", + " 27.0 30.0 False \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 False \n", + "\n", + " aix_sponsa \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 False \n", + " 18.0 21.0 False \n", + " 24.0 27.0 False \n", + " 27.0 30.0 False \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 False \n", + "\n", + " empty_class \n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 True \n", + " 18.0 21.0 True \n", + " 24.0 27.0 True \n", + " 27.0 30.0 True \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 True \n", + " deployment label sample_size\n", + "0 A001_SD001 aix_sponsa 18\n", + "1 A007_SD017 aix_sponsa 4\n", + "2 A007_SD017 anas_carolinensis 6\n", + "3 A007_SD017 anas_platyrhynchos 6\n", + "4 A007_SD017 branta_canadensis 22\n", + "5 A007_SD017 cygnus_buccinator 6\n", + "6 A008_SD007 aix_sponsa 16\n", + "7 A008_SD007 anas_platyrhynchos 6\n", + "8 A008_SD007 branta_canadensis 14\n", + "9 A009_SD009 aix_sponsa 1\n", + "10 A009_SD009 anas_platyrhynchos 1\n", + "11 A009_SD009 branta_canadensis 16\n", + "12 A009_SD009 cygnus_buccinator 7\n", + "13 A010_SD014 aix_sponsa 18\n", + "14 A010_SD014 anas_carolinensis 16\n", + "15 A010_SD014 anas_platyrhynchos 13\n", + "16 A010_SD014 branta_canadensis 12\n", + "17 A010_SD014 cygnus_buccinator 35\n" + ] + } + ], + "source": [ + "train_copy_df = train_df.copy()\n", + "print(train_copy_df.head())\n", + "train_copy_df[\"empty_class\"] = ~train_copy_df.any(axis=1)\n", + "train_copy_df.head()\n", + "\n", + "label_sample_size_dict = {}\n", + "species_by_deployment_dfs = []\n", + "for label in train_copy_df.columns.values:\n", + " label_df = train_copy_df[train_copy_df[label]]\n", + " deployment_list = []\n", + " for i, row in label_df.reset_index().iterrows():\n", + " path = os.path.normpath(row[\"file\"])\n", + " deployment = path.split(os.sep)[5][:10]\n", + " deployment_list.append(deployment)\n", + " label_deployment_df = pd.DataFrame({\"deployment\":deployment_list})\n", + " label_deployment_df[\"label\"] = label\n", + " species_by_deployment_dfs.append(label_deployment_df)\n", + " # Group by deployment and species list and \n", + "concatenated_species_by_deployment_sample_size_df = pd.concat(species_by_deployment_dfs)\n", + "species_by_deployment_sample_size_df = concatenated_species_by_deployment_sample_size_df.groupby([\"deployment\", \"label\"]).size().rename('sample_size').reset_index()\n", + "print(species_by_deployment_sample_size_df)\n", + "ax = sns.barplot(data=species_by_deployment_sample_size_df, x=\"deployment\", y=\"sample_size\", hue=\"label\")\n", + "plt.savefig(\n", + " f\"{working_directory}/train_dataset_deployment_label_sample_sizes_w_empty_class_filtered.png\", bbox_inches=\"tight\", dpi=800\n", + ")\n", + "plt.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7def5bc4", + "metadata": {}, + "outputs": [], + "source": [ + "# This cell contains code to plot histogram of box lengths\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "spectrogram_df.head()\n", + "spectrogram_df.columns.values\n", + "spectrogram_df[\"box_length\"] = spectrogram_df[\"End Time (s)\"] - spectrogram_df[\"Begin Time (s)\"]\n", + "ax = sns.histplot(data=spectrogram_df, x=spectrogram_df[\"box_length\"])\n", + "\n", + "print(spectrogram_df.sort_values(by=\"box_length\", ascending=False))\n", + "plt.savefig(\n", + " f\"{working_directory}/raven_waterfowl_box_lengths.png\", bbox_inches=\"tight\", dpi=800\n", + ")\n", + "\n", + "plt.close()\n", + "\n", + "print(spectrogram_df[\"box_length\"].mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "730f5707", + "metadata": {}, + "outputs": [], + "source": [ + "# This cell contains code to plot histogram of box widths so that we \n", + "# have a better idea of how to filter based on b\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "spectrogram_df.head()\n", + "spectrogram_df.columns.values\n", + "spectrogram_df[\"box_width\"] = spectrogram_df[\"High Freq (Hz)\"] - spectrogram_df[\"Low Freq (Hz)\"]\n", + "ax = sns.histplot(data=spectrogram_df, x=spectrogram_df[\"box_width\"])\n", + "\n", + "print(spectrogram_df.sort_values(by=\"box_width\", ascending=False))\n", + "plt.savefig(\n", + " f\"{working_directory}/raven_waterfowl_box_widths.png\", bbox_inches=\"tight\", dpi=800\n", + ")\n", + "\n", + "plt.close()\n", + "\n", + "print(spectrogram_df[\"box_width\"].mean())" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "13fe2a09", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "ea2c4d9d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['branta_canadensis', 'cygnus_buccinator', 'anas_carolinensis', 'anas_platyrhynchos', 'aix_sponsa', 'empty_class']\n" + ] + } + ], + "source": [ + "from opensoundscape import SpectrogramPreprocessor\n", + "from opensoundscape import CNN\n", + "\n", + "\n", + "# preprocessing happens when you initiate the model and call model.preprocessor\n", + "# An alternative way to preprocess is to specifically define the preprocessor class\n", + "class_list = ['branta_canadensis',\n", + " 'cygnus_buccinator',\n", + " 'anas_carolinensis',\n", + " 'anas_platyrhynchos',\n", + " 'aix_sponsa']\n", + "class_list = class_list + [\"empty_class\"]\n", + "print(class_list)\n", + "pre = SpectrogramPreprocessor(sample_duration=3, overlay_df=train_df)\n", + "model = CNN(architecture='resnet18', sample_duration=3, classes=class_list)\n", + "model.preprocessor = pre\n", + "model.preprocessor.pipeline.bandpass.set(min_f=1000, max_f=9000)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a4e8183", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize spectrograms and augmentation\n", + "from opensoundscape.preprocess.utils import show_tensor_grid\n", + "from opensoundscape import AudioFileDataset\n", + "\n", + "dataset = AudioFileDataset(labels,model.preprocessor)\n", + "\n", + "# This is just going to visualize random tensors\n", + "tensors = [dataset[i].data for i in range(36, 45)]\n", + "sample_labels = [list(dataset[i].labels[dataset[i].labels>0].index) for i in range(36, 45)]\n", + "\n", + "_ = show_tensor_grid(tensors,3,labels=sample_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd1b6707", + "metadata": {}, + "outputs": [], + "source": [ + "#generate random samples without augmentation\n", + "dataset.bypass_augmentations = True\n", + "\n", + "tensors = [dataset[i].data for i in range(36, 45)]\n", + "sample_labels = [list(dataset[i].labels[dataset[i].labels>0].index) for i in range(36, 45)]\n", + "\n", + "_ = show_tensor_grid(tensors,3,labels=sample_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b9f08ba", + "metadata": {}, + "outputs": [], + "source": [ + "# Let's view positives samples, we need to collect the indices of clips with non null labels\n", + "positive_tensor_indices = []\n", + "for i in range(len(dataset)):\n", + " print(i)\n", + " print(dataset[i].labels[dataset[i].labels>0].index)\n", + " positive_labels = (dataset[i].labels[dataset[i].labels>0].index)\n", + " print(positive_labels)\n", + " if len(positive_labels) > 0:\n", + " positive_tensor_indices.append(i)\n", + "#print(positive_tensor_indices)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9d70a90b", + "metadata": {}, + "outputs": [], + "source": [ + "# Let's view some positives samples\n", + "tensors = []\n", + "sample_labels = []\n", + "# Change indices in square bracket here to look at different range of positives samples\n", + "for i in positive_tensor_indices[:9]:\n", + " tensors.append(dataset[i].data)\n", + " sample_labels.append(list(dataset[i].labels[dataset[i].labels>0].index))\n", + "\n", + "_ = show_tensor_grid(tensors,3,labels=sample_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5a488ee", + "metadata": {}, + "outputs": [], + "source": [ + "dataset.bypass_augmentations = True\n", + "\n", + "# Let's view some positives samples wo augmentation\n", + "tensors = []\n", + "sample_labels = []\n", + "# Change indices in square bracket here to look at different range of positives samples\n", + "for i in positive_tensor_indices[:9]:\n", + " tensors.append(dataset[i].data)\n", + " sample_labels.append(list(dataset[i].labels[dataset[i].labels>0].index))\n", + "\n", + "_ = show_tensor_grid(tensors,3,labels=sample_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "b144bc3a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mbrett-michael-ford\u001b[0m (\u001b[33mbrett-michael-ford-st-lawrence-university\u001b[0m). Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + }, + { + "data": { + "text/plain": [ + "True" ] }, - "execution_count": 8, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import glob\n", - "from pathlib import Path\n", - "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", - "all_dfs = []\n", - "for file in files:\n", - " df = pd.read_csv(file, sep=\"\\t\")\n", - " df[\"deployment\"] = file_stem[:10]\n", - " #df.to_csv(file, sep=\"\\t\")\n", - " all_dfs.append(df)\n", - " file_stem = Path(file).stem.replace(\".Table.1.selections\", \"\")\n", - " print()\n", - "final_df = pd.concat(all_dfs)\n", - "final_df" + "import wandb\n", + "#Run once\n", + "wandb.login()" ] }, { "cell_type": "code", - "execution_count": 54, - "id": "e1934717", + "execution_count": 48, + "id": "1358bb70", "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
speciesdeploymentsize
0aix_sponsaA001_SD00127
1aix_sponsaA010_SD01456
2anas_carolinensisA010_SD01465
3anas_platyrhynchosA006_SD00619
4anas_platyrhynchosA010_SD01472
5branta_canadensisA005_SD00245
6branta_canadensisA006_SD00625
7branta_canadensisA010_SD01420
8cygnus_buccinatorA005_SD0023
9cygnus_buccinatorA010_SD01446
\n", - "
" - ], - "text/plain": [ - " species deployment size\n", - "0 aix_sponsa A001_SD001 27\n", - "1 aix_sponsa A010_SD014 56\n", - "2 anas_carolinensis A010_SD014 65\n", - "3 anas_platyrhynchos A006_SD006 19\n", - "4 anas_platyrhynchos A010_SD014 72\n", - "5 branta_canadensis A005_SD002 45\n", - "6 branta_canadensis A006_SD006 25\n", - "7 branta_canadensis A010_SD014 20\n", - "8 cygnus_buccinator A005_SD002 3\n", - "9 cygnus_buccinator A010_SD014 46" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" + "name": "stderr", + "output_type": "stream", + "text": [ + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3247, in run_cell_async\n", + " self.events.trigger('pre_run_cell', info)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 439, in _resume_backend\n", + " logger.info(\"resuming backend\") # type: ignore\n", + "Message: 'resuming backend'\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 1281, in init\n", + " wi.setup(\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 348, in setup\n", + " self._log_setup(settings)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 490, in _log_setup\n", + " filesystem.mkdir_exists_ok(os.path.dirname(settings.log_user))\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/lib/filesystem.py\", line 30, in mkdir_exists_ok\n", + " os.makedirs(dir_name, exist_ok=True)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/os.py\", line 215, in makedirs\n", + " makedirs(head, exist_ok=exist_ok)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/os.py\", line 225, in makedirs\n", + " mkdir(name, mode)\n", + "OSError: [Errno 28] No space left on device: '/home/Brett/waterfowl_audio_id/notebooks/wandb/run-20250117_011445-ltsilxht'\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3334, in run_cell_async\n", + " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3517, in run_ast_nodes\n", + " if await self.run_code(code, result, async_=asy):\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3577, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/tmp/ipykernel_131984/2923966621.py\", line 1, in \n", + " wandb_session = wandb.init(\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 1299, in init\n", + " logger.exception(\"error in wandb.init()\", exc_info=e)\n", + "Message: 'error in wandb.init()'\n", + "Arguments: ()\n" + ] + }, + { + "ename": "OSError", + "evalue": "[Errno 28] No space left on device: '/home/Brett/waterfowl_audio_id/notebooks/wandb/run-20250117_011445-ltsilxht'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[48], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m wandb_session \u001b[38;5;241m=\u001b[39m \u001b[43mwandb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mproject\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mnocowild_cv4e_classifier\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py:1303\u001b[0m, in \u001b[0;36minit\u001b[0;34m(entity, project, dir, id, name, notes, tags, config, config_exclude_keys, config_include_keys, allow_val_change, group, job_type, mode, force, anonymous, reinit, resume, resume_from, fork_from, save_code, tensorboard, sync_tensorboard, monitor_gym, settings)\u001b[0m\n\u001b[1;32m 1299\u001b[0m logger\u001b[38;5;241m.\u001b[39mexception(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124merror in wandb.init()\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39me)\n\u001b[1;32m 1301\u001b[0m \u001b[38;5;66;03m# Need to build delay into this sentry capture because our exit hooks\u001b[39;00m\n\u001b[1;32m 1302\u001b[0m \u001b[38;5;66;03m# mess with sentry's ability to send out errors before the program ends.\u001b[39;00m\n\u001b[0;32m-> 1303\u001b[0m \u001b[43mwandb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sentry\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreraise\u001b[49m\u001b[43m(\u001b[49m\u001b[43me\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1304\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAssertionError\u001b[39;00m()\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/analytics/sentry.py:156\u001b[0m, in \u001b[0;36mSentry.reraise\u001b[0;34m(self, exc)\u001b[0m\n\u001b[1;32m 153\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexception(exc)\n\u001b[1;32m 154\u001b[0m \u001b[38;5;66;03m# this will messily add this \"reraise\" function to the stack trace,\u001b[39;00m\n\u001b[1;32m 155\u001b[0m \u001b[38;5;66;03m# but hopefully it's not too bad\u001b[39;00m\n\u001b[0;32m--> 156\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\u001b[38;5;241m.\u001b[39mwith_traceback(sys\u001b[38;5;241m.\u001b[39mexc_info()[\u001b[38;5;241m2\u001b[39m])\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py:1281\u001b[0m, in \u001b[0;36minit\u001b[0;34m(entity, project, dir, id, name, notes, tags, config, config_exclude_keys, config_include_keys, allow_val_change, group, job_type, mode, force, anonymous, reinit, resume, resume_from, fork_from, save_code, tensorboard, sync_tensorboard, monitor_gym, settings)\u001b[0m\n\u001b[1;32m 1279\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1280\u001b[0m wi \u001b[38;5;241m=\u001b[39m _WandbInit()\n\u001b[0;32m-> 1281\u001b[0m \u001b[43mwi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1282\u001b[0m \u001b[43m \u001b[49m\u001b[43minit_settings\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minit_settings\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1283\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1284\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig_exclude_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig_exclude_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1285\u001b[0m \u001b[43m \u001b[49m\u001b[43mconfig_include_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig_include_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1286\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_val_change\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mallow_val_change\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1287\u001b[0m \u001b[43m \u001b[49m\u001b[43mmonitor_gym\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmonitor_gym\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1288\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1289\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m wi\u001b[38;5;241m.\u001b[39minit()\n\u001b[1;32m 1291\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py:348\u001b[0m, in \u001b[0;36m_WandbInit.setup\u001b[0;34m(self, init_settings, config, config_exclude_keys, config_include_keys, allow_val_change, monitor_gym)\u001b[0m\n\u001b[1;32m 345\u001b[0m settings\u001b[38;5;241m.\u001b[39mx_start_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m settings\u001b[38;5;241m.\u001b[39m_noop:\n\u001b[0;32m--> 348\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_log_setup\u001b[49m\u001b[43m(\u001b[49m\u001b[43msettings\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 350\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m settings\u001b[38;5;241m.\u001b[39m_jupyter:\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_jupyter_setup(settings)\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py:490\u001b[0m, in \u001b[0;36m_WandbInit._log_setup\u001b[0;34m(self, settings)\u001b[0m\n\u001b[1;32m 488\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_log_setup\u001b[39m(\u001b[38;5;28mself\u001b[39m, settings: Settings) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 489\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Set up logging from settings.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 490\u001b[0m \u001b[43mfilesystem\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmkdir_exists_ok\u001b[49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpath\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdirname\u001b[49m\u001b[43m(\u001b[49m\u001b[43msettings\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlog_user\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 491\u001b[0m filesystem\u001b[38;5;241m.\u001b[39mmkdir_exists_ok(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mdirname(settings\u001b[38;5;241m.\u001b[39mlog_internal))\n\u001b[1;32m 492\u001b[0m filesystem\u001b[38;5;241m.\u001b[39mmkdir_exists_ok(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mdirname(settings\u001b[38;5;241m.\u001b[39msync_file))\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/lib/filesystem.py:30\u001b[0m, in \u001b[0;36mmkdir_exists_ok\u001b[0;34m(dir_name)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Create `dir_name` and any parent directories if they don't exist.\u001b[39;00m\n\u001b[1;32m 24\u001b[0m \n\u001b[1;32m 25\u001b[0m \u001b[38;5;124;03mRaises:\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;124;03m FileExistsError: if `dir_name` exists and is not a directory.\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;124;03m PermissionError: if `dir_name` is not writable.\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 30\u001b[0m \u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmakedirs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdir_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexist_ok\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mFileExistsError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileExistsError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdir_name\u001b[38;5;132;01m!s}\u001b[39;00m\u001b[38;5;124m exists and is not a directory\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/os.py:215\u001b[0m, in \u001b[0;36mmakedirs\u001b[0;34m(name, mode, exist_ok)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m head \u001b[38;5;129;01mand\u001b[39;00m tail \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m path\u001b[38;5;241m.\u001b[39mexists(head):\n\u001b[1;32m 214\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 215\u001b[0m \u001b[43mmakedirs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhead\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexist_ok\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexist_ok\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mFileExistsError\u001b[39;00m:\n\u001b[1;32m 217\u001b[0m \u001b[38;5;66;03m# Defeats race condition when another thread created the path\u001b[39;00m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/os.py:225\u001b[0m, in \u001b[0;36mmakedirs\u001b[0;34m(name, mode, exist_ok)\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 224\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 225\u001b[0m \u001b[43mmkdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 226\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m:\n\u001b[1;32m 227\u001b[0m \u001b[38;5;66;03m# Cannot rely on checking for EEXIST, since the operating system\u001b[39;00m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;66;03m# could give priority to other errors like EACCES or EROFS\u001b[39;00m\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m exist_ok \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m path\u001b[38;5;241m.\u001b[39misdir(name):\n", + "\u001b[0;31mOSError\u001b[0m: [Errno 28] No space left on device: '/home/Brett/waterfowl_audio_id/notebooks/wandb/run-20250117_011445-ltsilxht'" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3081, in run_cell\n", + " self.events.trigger('post_run_cell', result)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 429, in _pause_backend\n", + " if self.notebook.save_ipynb(): # type: ignore\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/jupyter.py\", line 386, in save_ipynb\n", + " logger.info(\"not saving jupyter notebook\")\n", + "Message: 'not saving jupyter notebook'\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3081, in run_cell\n", + " self.events.trigger('post_run_cell', result)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 434, in _pause_backend\n", + " logger.info(\"pausing backend\") # type: ignore\n", + "Message: 'pausing backend'\n", + "Arguments: ()\n" + ] } ], "source": [ - "import seaborn as sns\n", - "spectrogram_df = final_df[(final_df[\"View\"]==\"Spectrogram 1\") & (final_df[\"species\"].isin([\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]))]\n", - "spectrogram_df.groupby([\"species\", \"deployment\"]).size().to_frame('size').reset_index()\n", - "\n", - "#df = sns.barplot(penguins, x=\"island\", y=\"body_mass_g\")" + "wandb_session = wandb.init(\n", + " project='nocowild_cv4e_classifier',\n", + ")" ] }, { "cell_type": "code", - "execution_count": 33, - "id": "cbc7d9fd", + "execution_count": 49, + "id": "b1a3e950", "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " deployment Common Name size\n", - "0 A001_SD001 American Bittern 4\n", - "1 A001_SD001 American Golden-Plover 1\n", - "2 A001_SD001 American Robin 50\n", - "3 A001_SD001 Bald Eagle 3\n", - "4 A001_SD001 Belted Kingfisher 10\n", - ".. ... ... ...\n", - "672 A015_SD010 Winter Wren 5\n", - "673 A015_SD010 Wood Duck 57\n", - "674 A015_SD010 Yellow-bellied Flycatcher 2\n", - "675 A015_SD010 Yellow-billed Cuckoo 1\n", - "676 A015_SD010 nocall 2110\n", - "\n", - "[677 rows x 3 columns]\n", - " deployment Common Name size\n", - "20 A001_SD001 Wood Duck 400\n", - "47 A003_SD005 Trumpeter Swan 5\n", - "49 A003_SD005 Wood Duck 2\n", - "67 A004_SD012 Canada Goose 57\n", - "83 A004_SD012 Green-winged Teal 12\n", - "87 A004_SD012 Mallard 166\n", - "112 A004_SD012 Wood Duck 392\n", - "123 A005_SD002 Canada Goose 86\n", - "134 A005_SD002 Green-winged Teal 4\n", - "138 A005_SD002 Mallard 2\n", - "149 A005_SD002 Trumpeter Swan 2\n", - "156 A005_SD002 Wood Duck 9\n", - "178 A006_SD006 Canada Goose 1597\n", - "194 A006_SD006 Green-winged Teal 12\n", - "197 A006_SD006 Mallard 51\n", - "220 A006_SD006 Trumpeter Swan 525\n", - "228 A006_SD006 Wood Duck 45\n", - "250 A007_SD017 Canada Goose 2013\n", - "266 A007_SD017 Green-winged Teal 8\n", - "270 A007_SD017 Mallard 7\n", - "294 A007_SD017 Trumpeter Swan 27\n", - "302 A007_SD017 Wood Duck 28\n", - "322 A008_SD007 Canada Goose 62\n", - "335 A008_SD007 Green-winged Teal 1\n", - "339 A008_SD007 Mallard 10\n", - "362 A008_SD007 Wood Duck 214\n", - "386 A009_SD009 Canada Goose 913\n", - "397 A009_SD009 Green-winged Teal 5\n", - "399 A009_SD009 Mallard 50\n", - "417 A009_SD009 Trumpeter Swan 23\n", - "425 A009_SD009 Wood Duck 54\n", - "444 A010_SD014 Canada Goose 1268\n", - "456 A010_SD014 Green-winged Teal 41\n", - "458 A010_SD014 Mallard 168\n", - "476 A010_SD014 Trumpeter Swan 471\n", - "485 A010_SD014 Wood Duck 83\n", - "547 A013_SD016 Green-winged Teal 1\n", - "550 A013_SD016 Mallard 2\n", - "564 A013_SD016 Trumpeter Swan 5\n", - "567 A013_SD016 Wood Duck 3\n", - "580 A014_SD021 Canada Goose 43\n", - "588 A014_SD021 Mallard 3\n", - "602 A014_SD021 Trumpeter Swan 1\n", - "607 A014_SD021 Wood Duck 7\n", - "630 A015_SD010 Canada Goose 4197\n", - "643 A015_SD010 Green-winged Teal 9\n", - "648 A015_SD010 Mallard 147\n", - "666 A015_SD010 Trumpeter Swan 505\n", - "673 A015_SD010 Wood Duck 57\n" + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3247, in run_cell_async\n", + " self.events.trigger('pre_run_cell', info)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 439, in _resume_backend\n", + " logger.info(\"resuming backend\") # type: ignore\n", + "Message: 'resuming backend'\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3334, in run_cell_async\n", + " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3517, in run_ast_nodes\n", + " if await self.run_code(code, result, async_=asy):\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3577, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/tmp/ipykernel_131984/2101241438.py\", line 4, in \n", + " model.train(train_df, validation_df, epochs=10, num_workers=8, batch_size=128, save_path=\"../nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch/\", wandb_session=wandb_session)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/ml/cnn.py\", line 1530, in train\n", + " wandb_session.config.update(self._generate_wandb_config())\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_config.py\", line 189, in update\n", + " self._callback(data=sanitized)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 394, in wrapper_fn\n", + " return func(self, *args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 1283, in _config_callback\n", + " logger.info(f\"config_cb {key} {val} {data}\")\n", + "Message: \"config_cb None None {'architecture': 'torchvision.models.resnet.ResNet', 'sample_duration': 3, 'cuda_device_count': 1, 'mps_available': False, 'classes': ['branta_canadensis', 'cygnus_buccinator', 'anas_carolinensis', 'anas_platyrhynchos', 'aix_sponsa', 'empty_class'], 'single_target': False, 'opensoundscape_version': '0.11.0', 'l2_regularization': 'n/a', 'learning_rate': 'n/a', 'sample_shape': [224, 224, 1]}\"\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3334, in run_cell_async\n", + " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3517, in run_ast_nodes\n", + " if await self.run_code(code, result, async_=asy):\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3577, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/tmp/ipykernel_131984/2101241438.py\", line 4, in \n", + " model.train(train_df, validation_df, epochs=10, num_workers=8, batch_size=128, save_path=\"../nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch/\", wandb_session=wandb_session)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/ml/cnn.py\", line 1533, in train\n", + " wandb_session.config.update(\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_config.py\", line 189, in update\n", + " self._callback(data=sanitized)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 394, in wrapper_fn\n", + " return func(self, *args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 1283, in _config_callback\n", + " logger.info(f\"config_cb {key} {val} {data}\")\n", + "Message: \"config_cb None None {'epochs': 10, 'batch_size': 128, 'num_workers': 8, 'lr_sheculer_params': {'class': 'torch.optim.lr_scheduler.StepLR', 'kwargs': {'step_size': 10, 'gamma': 0.7}}, 'optimizer_params': {'class': 'torch.optim.sgd.SGD', 'kwargs': {'lr': 0.01, 'momentum': 0.9, 'weight_decay': 0.0005}, 'classifier_lr': None}, 'model_save_path': '/home/Brett/waterfowl_audio_id/nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch'}\"\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3075, in run_cell\n", + " result = self._run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3130, in _run_cell\n", + " result = runner(coro)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 128, in _pseudo_sync_runner\n", + " coro.send(None)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3334, in run_cell_async\n", + " has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3517, in run_ast_nodes\n", + " if await self.run_code(code, result, async_=asy):\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3577, in run_code\n", + " exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \"/tmp/ipykernel_131984/2101241438.py\", line 4, in \n", + " model.train(train_df, validation_df, epochs=10, num_workers=8, batch_size=128, save_path=\"../nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch/\", wandb_session=wandb_session)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/ml/cnn.py\", line 1548, in train\n", + " wandb_session.watch(\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 384, in wrapper\n", + " return func(self, *args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py\", line 2873, in watch\n", + " wandb.sdk._watch(self, models, criterion, log, log_freq, idx, log_graph)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_watch.py\", line 71, in _watch\n", + " logger.info(\"Watching\")\n", + "Message: 'Watching'\n", + "Arguments: ()\n" + ] + }, + { + "ename": "OSError", + "evalue": "[Errno 28] No space left on device: '/tmp/tmpp9raxylr'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[49], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Train model\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m# Need to update save_path to save model to correct path give Bjorn's talk\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain_df\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalidation_df\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_workers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m8\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m128\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msave_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m../nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwandb_session\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mwandb_session\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/ml/cnn.py:1556\u001b[0m, in \u001b[0;36mSpectrogramClassifier.train\u001b[0;34m(self, train_df, validation_df, epochs, batch_size, num_workers, save_path, save_interval, log_interval, validation_interval, reset_optimizer, restart_scheduler, invalid_samples_log, raise_errors, wandb_session, progress_bar)\u001b[0m\n\u001b[1;32m 1548\u001b[0m wandb_session\u001b[38;5;241m.\u001b[39mwatch(\n\u001b[1;32m 1549\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnetwork,\n\u001b[1;32m 1550\u001b[0m log\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mall\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1551\u001b[0m log_freq\u001b[38;5;241m=\u001b[39mlog_freq,\n\u001b[1;32m 1552\u001b[0m log_graph\u001b[38;5;241m=\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwandb_logging[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlog_graph\u001b[39m\u001b[38;5;124m\"\u001b[39m]),\n\u001b[1;32m 1553\u001b[0m )\n\u001b[1;32m 1555\u001b[0m \u001b[38;5;66;03m# log tables of preprocessed samples\u001b[39;00m\n\u001b[0;32m-> 1556\u001b[0m \u001b[43mwandb_session\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlog\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1557\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 1558\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtraining_samples\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mwandb_table\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1559\u001b[0m \u001b[43m \u001b[49m\u001b[43mAudioFileDataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1560\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_df\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpreprocessor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbypass_augmentations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\n\u001b[1;32m 1561\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1562\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwandb_logging\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mn_preview_samples\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1563\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1564\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtraining_samples_no_aug\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mwandb_table\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1565\u001b[0m \u001b[43m \u001b[49m\u001b[43mAudioFileDataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1566\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_df\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpreprocessor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbypass_augmentations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\n\u001b[1;32m 1567\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1568\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwandb_logging\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mn_preview_samples\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1569\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1570\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalidation_samples\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mwandb_table\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1571\u001b[0m \u001b[43m \u001b[49m\u001b[43mAudioFileDataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1572\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalidation_df\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1573\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpreprocessor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1574\u001b[0m \u001b[43m \u001b[49m\u001b[43mbypass_augmentations\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 1575\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1576\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwandb_logging\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mn_preview_samples\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1577\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1578\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 1579\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1581\u001b[0m \u001b[38;5;66;03m# Move network to device\u001b[39;00m\n\u001b[1;32m 1582\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnetwork\u001b[38;5;241m.\u001b[39mto(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdevice)\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:442\u001b[0m, in \u001b[0;36m_run_decorator._noop..wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 439\u001b[0m wandb\u001b[38;5;241m.\u001b[39mtermwarn(message, repeat\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 440\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mDummy()\n\u001b[0;32m--> 442\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:394\u001b[0m, in \u001b[0;36m_run_decorator._noop_on_finish..decorator_fn..wrapper_fn\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 391\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 392\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mwrapper_fn\u001b[39m(\u001b[38;5;28mself\u001b[39m: \u001b[38;5;28mtype\u001b[39m[Run], \u001b[38;5;241m*\u001b[39margs: Any, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 393\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_is_finished\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m--> 394\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 396\u001b[0m default_message \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 397\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRun (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mid\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) is finished. The call to `\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` will be ignored. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 398\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPlease make sure that you are using an active run.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 399\u001b[0m )\n\u001b[1;32m 400\u001b[0m resolved_message \u001b[38;5;241m=\u001b[39m message \u001b[38;5;129;01mor\u001b[39;00m default_message\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:384\u001b[0m, in \u001b[0;36m_run_decorator._attach..wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[1;32m 383\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m_is_attaching \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 384\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:1901\u001b[0m, in \u001b[0;36mRun.log\u001b[0;34m(self, data, step, commit, sync)\u001b[0m\n\u001b[1;32m 1894\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_settings\u001b[38;5;241m.\u001b[39m_shared \u001b[38;5;129;01mand\u001b[39;00m step \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1895\u001b[0m wandb\u001b[38;5;241m.\u001b[39mtermwarn(\n\u001b[1;32m 1896\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIn shared mode, the use of `wandb.log` with the step argument is not supported \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1897\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mand will be ignored. Please refer to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00murl_registry\u001b[38;5;241m.\u001b[39murl(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdefine-metric\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1898\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon how to customize your x-axis.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1899\u001b[0m repeat\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 1900\u001b[0m )\n\u001b[0;32m-> 1901\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_log\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcommit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcommit\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:1614\u001b[0m, in \u001b[0;36mRun._log\u001b[0;34m(self, data, step, commit)\u001b[0m\n\u001b[1;32m 1611\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(key, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m data\u001b[38;5;241m.\u001b[39mkeys()):\n\u001b[1;32m 1612\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mKey values passed to `wandb.log` must be strings.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m-> 1614\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_partial_history_callback\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcommit\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1616\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m step \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1617\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m os\u001b[38;5;241m.\u001b[39mgetpid() \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_init_pid \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_attached:\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_run.py:1445\u001b[0m, in \u001b[0;36mRun._partial_history_callback\u001b[0;34m(self, data, step, commit)\u001b[0m\n\u001b[1;32m 1442\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_serialize_custom_charts(data)\n\u001b[1;32m 1444\u001b[0m not_using_tensorboard \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(wandb\u001b[38;5;241m.\u001b[39mpatched[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtensorboard\u001b[39m\u001b[38;5;124m\"\u001b[39m]) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m-> 1445\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minterface\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpublish_partial_history\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1446\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1447\u001b[0m \u001b[43m \u001b[49m\u001b[43muser_step\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_step\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1448\u001b[0m \u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1449\u001b[0m \u001b[43m \u001b[49m\u001b[43mflush\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcommit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1450\u001b[0m \u001b[43m \u001b[49m\u001b[43mpublish_step\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnot_using_tensorboard\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1451\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/interface/interface.py:665\u001b[0m, in \u001b[0;36mInterfaceBase.publish_partial_history\u001b[0;34m(self, data, user_step, step, flush, publish_step, run)\u001b[0m\n\u001b[1;32m 654\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mpublish_partial_history\u001b[39m(\n\u001b[1;32m 655\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 656\u001b[0m data: \u001b[38;5;28mdict\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 661\u001b[0m run: Optional[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRun\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 662\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 663\u001b[0m run \u001b[38;5;241m=\u001b[39m run \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_run\n\u001b[0;32m--> 665\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mhistory_dict_to_json\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43muser_step\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore_copy_err\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 666\u001b[0m data\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_step\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 668\u001b[0m \u001b[38;5;66;03m# add timestamp to the history request, if not already present\u001b[39;00m\n\u001b[1;32m 669\u001b[0m \u001b[38;5;66;03m# the timestamp might come from the tensorboard log logic\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/data_types/utils.py:54\u001b[0m, in \u001b[0;36mhistory_dict_to_json\u001b[0;34m(run, payload, step, ignore_copy_err)\u001b[0m\n\u001b[1;32m 50\u001b[0m payload[key] \u001b[38;5;241m=\u001b[39m history_dict_to_json(\n\u001b[1;32m 51\u001b[0m run, val, step\u001b[38;5;241m=\u001b[39mstep, ignore_copy_err\u001b[38;5;241m=\u001b[39mignore_copy_err\n\u001b[1;32m 52\u001b[0m )\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 54\u001b[0m payload[key] \u001b[38;5;241m=\u001b[39m \u001b[43mval_to_json\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mval\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnamespace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mignore_copy_err\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mignore_copy_err\u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m payload\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/data_types/utils.py:158\u001b[0m, in \u001b[0;36mval_to_json\u001b[0;34m(run, key, val, namespace, ignore_copy_err)\u001b[0m\n\u001b[1;32m 156\u001b[0m sanitized_key \u001b[38;5;241m=\u001b[39m re\u001b[38;5;241m.\u001b[39msub(\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m[^a-zA-Z0-9_]+\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, key)\n\u001b[1;32m 157\u001b[0m art \u001b[38;5;241m=\u001b[39m wandb\u001b[38;5;241m.\u001b[39mArtifact(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrun\u001b[38;5;241m.\u001b[39mid\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00msanitized_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_table\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 158\u001b[0m \u001b[43mart\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd\u001b[49m\u001b[43m(\u001b[49m\u001b[43mval\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 159\u001b[0m run\u001b[38;5;241m.\u001b[39mlog_artifact(art)\n\u001b[1;32m 161\u001b[0m \u001b[38;5;66;03m# Partitioned tables and joined tables do not support being bound to runs.\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/artifacts/_validators.py:115\u001b[0m, in \u001b[0;36mensure_not_finalized..wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_final:\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArtifactFinalizedError(fullname\u001b[38;5;241m=\u001b[39mmethod_fullname, obj\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/artifacts/artifact.py:1428\u001b[0m, in \u001b[0;36mArtifact.add\u001b[0;34m(self, obj, name, overwrite)\u001b[0m\n\u001b[1;32m 1426\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1427\u001b[0m filemode \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m overwrite \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1428\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnew_file(name, mode\u001b[38;5;241m=\u001b[39mfilemode, encoding\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[1;32m 1429\u001b[0m json\u001b[38;5;241m.\u001b[39mdump(val, f, sort_keys\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 1430\u001b[0m file_path \u001b[38;5;241m=\u001b[39m f\u001b[38;5;241m.\u001b[39mname\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/contextlib.py:135\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkwds, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunc\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 135\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[1;32m 137\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgenerator didn\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt yield\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/artifacts/artifact.py:1136\u001b[0m, in \u001b[0;36mArtifact.new_file\u001b[0;34m(self, name, mode, encoding)\u001b[0m\n\u001b[1;32m 1133\u001b[0m overwrite: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode\n\u001b[1;32m 1135\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tmp_dir \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1136\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tmp_dir \u001b[38;5;241m=\u001b[39m \u001b[43mtempfile\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTemporaryDirectory\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1137\u001b[0m path \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tmp_dir\u001b[38;5;241m.\u001b[39mname, name\u001b[38;5;241m.\u001b[39mlstrip(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m 1139\u001b[0m filesystem\u001b[38;5;241m.\u001b[39mmkdir_exists_ok(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mdirname(path))\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/tempfile.py:835\u001b[0m, in \u001b[0;36mTemporaryDirectory.__init__\u001b[0;34m(self, suffix, prefix, dir, ignore_cleanup_errors)\u001b[0m\n\u001b[1;32m 833\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, suffix\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, prefix\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;28mdir\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 834\u001b[0m ignore_cleanup_errors\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m--> 835\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname \u001b[38;5;241m=\u001b[39m \u001b[43mmkdtemp\u001b[49m\u001b[43m(\u001b[49m\u001b[43msuffix\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprefix\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mdir\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 836\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ignore_cleanup_errors \u001b[38;5;241m=\u001b[39m ignore_cleanup_errors\n\u001b[1;32m 837\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_finalizer \u001b[38;5;241m=\u001b[39m _weakref\u001b[38;5;241m.\u001b[39mfinalize(\n\u001b[1;32m 838\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_cleanup, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname,\n\u001b[1;32m 839\u001b[0m warn_message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mImplicitly cleaning up \u001b[39m\u001b[38;5;132;01m{!r}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;28mself\u001b[39m),\n\u001b[1;32m 840\u001b[0m ignore_errors\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ignore_cleanup_errors)\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/tempfile.py:384\u001b[0m, in \u001b[0;36mmkdtemp\u001b[0;34m(suffix, prefix, dir)\u001b[0m\n\u001b[1;32m 382\u001b[0m _sys\u001b[38;5;241m.\u001b[39maudit(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtempfile.mkdtemp\u001b[39m\u001b[38;5;124m\"\u001b[39m, file)\n\u001b[1;32m 383\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 384\u001b[0m \u001b[43m_os\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmkdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0o700\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mFileExistsError\u001b[39;00m:\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m \u001b[38;5;66;03m# try again\u001b[39;00m\n", + "\u001b[0;31mOSError\u001b[0m: [Errno 28] No space left on device: '/tmp/tmpp9raxylr'" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/rq/1dpzt_614v53ymfm0lqclqh80000gp/T/ipykernel_1782/4129909841.py:15: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " waterfowl_df.sort_values(by=[\"deployment\", \"Common Name\"], inplace=True)\n" + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3081, in run_cell\n", + " self.events.trigger('post_run_cell', result)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 429, in _pause_backend\n", + " if self.notebook.save_ipynb(): # type: ignore\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/jupyter.py\", line 386, in save_ipynb\n", + " logger.info(\"not saving jupyter notebook\")\n", + "Message: 'not saving jupyter notebook'\n", + "Arguments: ()\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1104, in emit\n", + " self.flush()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/logging/__init__.py\", line 1084, in flush\n", + " self.stream.flush()\n", + "OSError: [Errno 28] No space left on device\n", + "Call stack:\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/runpy.py\", line 86, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel_launcher.py\", line 18, in \n", + " app.launch_new_instance()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/traitlets/config/application.py\", line 1075, in launch_instance\n", + " app.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 739, in start\n", + " self.io_loop.start()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 205, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n", + " self._run_once()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/base_events.py\", line 1909, in _run_once\n", + " handle._run()\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 545, in dispatch_queue\n", + " await self.process_one()\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 534, in process_one\n", + " await dispatch(*args)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 437, in dispatch_shell\n", + " await result\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 362, in execute_request\n", + " await super().execute_request(stream, ident, parent)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 778, in execute_request\n", + " reply_content = await reply_content\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 449, in do_execute\n", + " res = shell.run_cell(\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 549, in run_cell\n", + " return super().run_cell(*args, **kwargs)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3081, in run_cell\n", + " self.events.trigger('post_run_cell', result)\n", + " File \"/home/Brett/.local/lib/python3.10/site-packages/IPython/core/events.py\", line 82, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/wandb_init.py\", line 434, in _pause_backend\n", + " logger.info(\"pausing backend\") # type: ignore\n", + "Message: 'pausing backend'\n", + "Arguments: ()\n" ] } ], "source": [ - "import os\n", - "#\"/Volumes/LaCie/eclipse_2024/A010_SD014/20240408_063500.WAV\"\n", - "birdnet_results_df = pd.read_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df.csv\")\n", - "birdnet_results_df.head()\n", - "all_deployments = []\n", - "for i, row in birdnet_results_df.iterrows():\n", - " path = os.path.normpath(row[\"Begin Path\"])\n", - " deployment = path.split(os.sep)[4]\n", - " all_deployments.append(deployment)\n", - "birdnet_results_df[\"deployment\"] = all_deployments\n", - "birdnet_results_df.head()\n", - "sample_size_df = birdnet_results_df.groupby([\"deployment\", \"Common Name\"]).size().to_frame('size').reset_index()\n", - "print(sample_size_df)\n", - "waterfowl_df = sample_size_df[sample_size_df[\"Common Name\"].isin([\"Canada Goose\", \"Trumpeter Swan\", \"Green-winged Teal\", \"Mallard\", \"Wood Duck\"])]\n", - "waterfowl_df.sort_values(by=[\"deployment\", \"Common Name\"], inplace=True)\n", - "print(waterfowl_df)\n", - "waterfowl_df.to_csv(\"/Users/brettford/Downloads/waterfowl_sample_size.csv\", index=False)" + "# Train model\n", + "# Need to update save_path to save model to correct path give Bjorn's talk\n", + "\n", + "model.train(train_df, validation_df, epochs=10, num_workers=8, batch_size=128, save_path=\"../nocowild_multi_class_train_20250116_after_filter_empty_class_10_epoch_128_batch/\", wandb_session=wandb_session)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "b54ecc43", + "metadata": {}, + "outputs": [ + { + "ename": "Error", + "evalue": "You must call wandb.init() before wandb.unwatch()", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[52], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mwandb\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munwatch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnetwork\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m wandb\u001b[38;5;241m.\u001b[39mfinish()\n", + "File \u001b[0;32m~/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/wandb/sdk/lib/preinit.py:36\u001b[0m, in \u001b[0;36mPreInitCallable..preinit_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mpreinit_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs: Any, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m---> 36\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m wandb\u001b[38;5;241m.\u001b[39mError(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mYou must call wandb.init() before \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mError\u001b[0m: You must call wandb.init() before wandb.unwatch()" + ] + } + ], + "source": [ + "wandb.unwatch(model.network)\n", + "wandb.finish()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b68db0e7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/ml/cnn.py:2515: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " loaded_content = torch.load(path, map_location=device)\n", + "/home/Brett/miniconda3/envs/cv4ecology/lib/python3.10/site-packages/opensoundscape/preprocess/overlay.py:98: UserWarning: Overlay class's .overlay_df will be None after loading from dict and `.criterion_fn` will be always_true(). Reset these attributes and set .bypass to False to use Overlay after loading with from_dict().\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "import torch\n", + "from opensoundscape.ml.cnn import load_model #opensoundscape.torch.models.cnn in v0.7.0 or v0.8.0\n", + "\n", + "model = load_model('/home/Brett/waterfowl_audio_id/nocowild_multi_class_train_20250116_after_filter_empty_class_40_epoch/best.model')\n", + "\n", + "\n", + "#model" ] }, { "cell_type": "code", "execution_count": null, - "id": "925e77ec", + "id": "ca42c508", "metadata": {}, "outputs": [], "source": [ - "for file in df[\"file\"]:\n", - " path = os.path.normpath(file)\n", - " \n", - " shutil.copy(file, f\"/Volumes/LaCie/audio_files_to_annotate/target_samples/{path.split(os.sep)[4]}_{path.split(os.sep)[5]}.wav\"\n", - " )" + "dict_to_save = {\n", + " 'network_state_dict': model.network.state_dict(),\n", + " 'classes': model.classes,\n", + "}\n", + "torch.save(dict_to_save, '/home/Brett/waterfowl_audio_id/nocowild_multi_class_train_20250116/model_dict.pt')" ] }, { "cell_type": "code", - "execution_count": 51, - "id": "62a45806", + "execution_count": null, + "id": "7bc53bf3", "metadata": {}, "outputs": [], "source": [ - "import glob\n", - "from pathlib import Path\n", - "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", - "all_dfs = []\n", - "for file in files:\n", - " #print(os.path.exists(file))\n", - " wav_file = file.replace(\".Table.1.selections.txt\", \".wav\")\n", - " if not os.path.exists(wav_file):\n", - " print(wav_file)\n", - " #df.to_csv(file, sep=\"\\t\")\n", - " # all_dfs.append(df)\n", - " # file_stem = Path(file).stem.replace(\".Table.1.selections\", \"\")" + "import torch\n", + "from opensoundscape.ml.cnn import CNN\n", + "\n", + "model_dict = torch.load('/home/Brett/waterfowl_audio_id/multi_class_train/model_dict.pt')\n", + "classes = model_dict[\"classes\"]\n", + "\n", + "architecture = 'resnet18' #match this with the original model!\n", + "\n", + "sample_duration = 2.0 #match this with the original model!\n", + "\n", + "model = CNN('resnet18',classes,sample_duration)\n", + "model.network.load_state_dict(model_dict['network_state_dict'])\n", + "\n", + "#invert values to match the convention of OpenSoundscape 0.7.x\n", + "model.preprocessor.pipeline.to_tensor.set(invert=True)\n", + "\n", + "#save the model object so that we can simply reload it with load_model() in the future:\n", + "model.save('/home/Brett/waterfowl_audio_id/multi_class_train/saved_full_object.model')\n", + "\n", + "# Next time, we can just load the full model object directly:\n", + "from opensoundscape.ml.cnn import load_model\n", + "model = load_model('/home/Brett/waterfowl_audio_id/multi_class_train/saved_full_object.model')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36693562", + "metadata": {}, + "outputs": [], + "source": [ + "validation_df" ] }, { "cell_type": "code", - "execution_count": 45, - "id": "1db7bd1b", + "execution_count": 16, + "id": "18f40886", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A006_SD006_20240331_191300.WAV\n" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c8f88fc3bcf1415ea115b48ff7655dc6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/618 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
branta_canadensiscygnus_buccinatoranas_carolinensisanas_platyrhynchosaix_sponsaempty_class
filestart_timeend_time
/mnt/class_data/group1_bioacoustics/brett/A001_SD001_20240401_061600.wav6.09.0-3.273801-1.911736-3.116308-4.407014-2.3663411.093123
18.021.0-4.221473-2.257988-3.331537-5.832227-3.1573011.493635
24.027.0-3.462466-1.889985-2.830830-4.801231-2.6255681.120907
27.030.0-3.463791-1.449729-3.623450-6.093805-3.1406131.258899
/mnt/class_data/group1_bioacoustics/brett/A001_SD001_20240401_063200.wav0.03.0-3.080377-1.980244-4.672287-4.570731-3.5899391.040238
...........................
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240408_063500.wav30.033.0-1.476031-2.484663-3.421777-4.077421-1.077955-0.399196
51.054.0-1.745582-2.915552-1.551228-4.750040-2.024142-0.675016
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240409_061900.wav15.018.0-0.098621-2.470087-4.921504-3.444748-1.978156-0.623517
21.024.0-2.047255-3.257951-2.598697-6.127646-2.0090030.463815
36.039.0-0.821745-2.063480-2.063658-2.678055-1.382027-0.931619
\n", + "

618 rows × 6 columns

\n", + "" + ], + "text/plain": [ + " branta_canadensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 -3.273801 \n", + " 18.0 21.0 -4.221473 \n", + " 24.0 27.0 -3.462466 \n", + " 27.0 30.0 -3.463791 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 -3.080377 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -1.476031 \n", + " 51.0 54.0 -1.745582 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -0.098621 \n", + " 21.0 24.0 -2.047255 \n", + " 36.0 39.0 -0.821745 \n", + "\n", + " cygnus_buccinator \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 -1.911736 \n", + " 18.0 21.0 -2.257988 \n", + " 24.0 27.0 -1.889985 \n", + " 27.0 30.0 -1.449729 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 -1.980244 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -2.484663 \n", + " 51.0 54.0 -2.915552 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -2.470087 \n", + " 21.0 24.0 -3.257951 \n", + " 36.0 39.0 -2.063480 \n", + "\n", + " anas_carolinensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 -3.116308 \n", + " 18.0 21.0 -3.331537 \n", + " 24.0 27.0 -2.830830 \n", + " 27.0 30.0 -3.623450 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 -4.672287 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -3.421777 \n", + " 51.0 54.0 -1.551228 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -4.921504 \n", + " 21.0 24.0 -2.598697 \n", + " 36.0 39.0 -2.063658 \n", + "\n", + " anas_platyrhynchos \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 -4.407014 \n", + " 18.0 21.0 -5.832227 \n", + " 24.0 27.0 -4.801231 \n", + " 27.0 30.0 -6.093805 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 -4.570731 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -4.077421 \n", + " 51.0 54.0 -4.750040 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -3.444748 \n", + " 21.0 24.0 -6.127646 \n", + " 36.0 39.0 -2.678055 \n", + "\n", + " aix_sponsa \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 -2.366341 \n", + " 18.0 21.0 -3.157301 \n", + " 24.0 27.0 -2.625568 \n", + " 27.0 30.0 -3.140613 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 -3.589939 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -1.077955 \n", + " 51.0 54.0 -2.024142 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -1.978156 \n", + " 21.0 24.0 -2.009003 \n", + " 36.0 39.0 -1.382027 \n", + "\n", + " empty_class \n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 6.0 9.0 1.093123 \n", + " 18.0 21.0 1.493635 \n", + " 24.0 27.0 1.120907 \n", + " 27.0 30.0 1.258899 \n", + "/mnt/class_data/group1_bioacoustics/brett/A001_... 0.0 3.0 1.040238 \n", + "... ... \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 30.0 33.0 -0.399196 \n", + " 51.0 54.0 -0.675016 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 15.0 18.0 -0.623517 \n", + " 21.0 24.0 0.463815 \n", + " 36.0 39.0 -0.931619 \n", + "\n", + "[618 rows x 6 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print(wav_file)\n", - "# print(file)\n", - "# wav_file = file.replace(\".Table.1.selections.txt\", \"\")\n", - "# print(wav_file)" + "# Now that I've loaded the best model, let's predict validation samples so I can visualize scores\n", + "#validation_files = [i[0] for i in validation_df.index]\n", + "#training_files = [i[0] for i in train_df.index]\n", + "scores = model.predict(train_df)\n", + "scores" ] }, { "cell_type": "code", - "execution_count": 94, - "id": "4fcb37d6", + "execution_count": 19, + "id": "0552fae7", "metadata": {}, "outputs": [ { @@ -2075,2502 +2940,710 @@ " \n", " \n", " \n", - " species\n", - " deployment\n", - " size\n", + " \n", + " \n", + " branta_canadensis\n", + " cygnus_buccinator\n", + " anas_carolinensis\n", + " anas_platyrhynchos\n", + " aix_sponsa\n", + " empty_class\n", + " top_id\n", + " \n", + " \n", + " file\n", + " start_time\n", + " end_time\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " 0\n", - " aix_sponsa\n", - " A001_SD001\n", - " 27\n", + " /mnt/class_data/group1_bioacoustics/brett/A007_SD017_20240330_191700.wav\n", + " 36.0\n", + " 39.0\n", + " -1.328189\n", + " -0.818553\n", + " -3.226559\n", + " -2.985115\n", + " -2.654475\n", + " -0.921827\n", + " cygnus_buccinator\n", " \n", " \n", - " 1\n", - " aix_sponsa\n", - " A005_SD002\n", - " 2\n", + " /mnt/class_data/group1_bioacoustics/brett/A007_SD017_20240401_070500.wav\n", + " 21.0\n", + " 24.0\n", + " -2.250578\n", + " -0.450416\n", + " -2.004576\n", + " -3.229027\n", + " -2.740090\n", + " -0.519893\n", + " cygnus_buccinator\n", " \n", " \n", - " 2\n", - " aix_sponsa\n", - " A006_SD006\n", - " 39\n", + " /mnt/class_data/group1_bioacoustics/brett/A007_SD017_20240402_055100.wav\n", + " 12.0\n", + " 15.0\n", + " -1.384896\n", + " -1.212604\n", + " -2.427679\n", + " -2.328110\n", + " -1.346639\n", + " -1.395018\n", + " cygnus_buccinator\n", " \n", " \n", - " 3\n", - " aix_sponsa\n", - " A010_SD014\n", - " 56\n", + " /mnt/class_data/group1_bioacoustics/brett/A007_SD017_20240408_062400.wav\n", + " 12.0\n", + " 15.0\n", + " -2.025162\n", + " 0.601957\n", + " -1.917533\n", + " -2.763769\n", + " -3.091086\n", + " -0.980837\n", + " cygnus_buccinator\n", " \n", " \n", - " 4\n", - " anas_carolinensis\n", - " A006_SD006\n", - " 1\n", + " 15.0\n", + " 18.0\n", + " -2.145516\n", + " 0.606927\n", + " -3.403327\n", + " -2.794636\n", + " -2.903487\n", + " -0.704185\n", + " cygnus_buccinator\n", " \n", " \n", - " 5\n", - " anas_carolinensis\n", - " A010_SD014\n", - " 65\n", + " 18.0\n", + " 21.0\n", + " -2.352484\n", + " -0.000089\n", + " -2.818168\n", + " -2.844097\n", + " -2.357723\n", + " -0.523428\n", + " cygnus_buccinator\n", " \n", " \n", - " 6\n", - " anas_platyrhynchos\n", - " A005_SD002\n", - " 10\n", + " 21.0\n", + " 24.0\n", + " -2.404845\n", + " 0.603902\n", + " -2.485976\n", + " -2.976252\n", + " -3.035415\n", + " -0.619744\n", + " cygnus_buccinator\n", " \n", " \n", - " 7\n", - " anas_platyrhynchos\n", - " A006_SD006\n", - " 43\n", + " /mnt/class_data/group1_bioacoustics/brett/A007_SD017_20240410_060300.wav\n", + " 51.0\n", + " 54.0\n", + " -2.103028\n", + " 0.141548\n", + " -2.110906\n", + " -1.361205\n", + " -2.251144\n", + " -0.965190\n", + " cygnus_buccinator\n", " \n", " \n", - " 8\n", - " anas_platyrhynchos\n", - " A010_SD014\n", - " 91\n", + " /mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240402_060600.wav\n", + " 27.0\n", + " 30.0\n", + " -2.406799\n", + " -0.626313\n", + " -3.873074\n", + " -1.103225\n", + " -2.246933\n", + " -0.968016\n", + " cygnus_buccinator\n", " \n", " \n", - " 9\n", - " branta_canadensis\n", - " A005_SD002\n", - " 5\n", + " 33.0\n", + " 36.0\n", + " -2.123969\n", + " -0.782993\n", + " -4.199523\n", + " -1.170573\n", + " -2.576193\n", + " -1.102678\n", + " cygnus_buccinator\n", " \n", " \n", - " 10\n", - " branta_canadensis\n", - " A006_SD006\n", - " 77\n", + " /mnt/class_data/group1_bioacoustics/brett/A008_SD007_20240405_164700.wav\n", + " 6.0\n", + " 9.0\n", + " -2.170269\n", + " -0.684128\n", + " -2.811203\n", + " -4.863581\n", + " -2.571436\n", + " -0.964311\n", + " cygnus_buccinator\n", " \n", " \n", - " 11\n", - " branta_canadensis\n", - " A007_SD017\n", - " 15\n", + " /mnt/class_data/group1_bioacoustics/brett/A009_SD009_20240407_065000.wav\n", + " 39.0\n", + " 42.0\n", + " -1.562398\n", + " -1.230971\n", + " -2.332815\n", + " -3.301831\n", + " -2.291285\n", + " -1.304047\n", + " cygnus_buccinator\n", " \n", " \n", - " 12\n", - " branta_canadensis\n", - " A010_SD014\n", - " 45\n", + " /mnt/class_data/group1_bioacoustics/brett/A009_SD009_20240408_065700.wav\n", + " 9.0\n", + " 12.0\n", + " -0.611366\n", + " -0.580194\n", + " -3.567986\n", + " -2.380388\n", + " -3.333604\n", + " -0.591212\n", + " cygnus_buccinator\n", " \n", " \n", - " 13\n", + " 15.0\n", + " 18.0\n", + " -1.241258\n", + " 0.008657\n", + " -3.908598\n", + " -2.680417\n", + " -3.297959\n", + " -0.703769\n", " cygnus_buccinator\n", - " A005_SD002\n", - " 5\n", " \n", " \n", - " 14\n", + " 24.0\n", + " 27.0\n", + " -2.193347\n", + " 0.834583\n", + " -4.053989\n", + " -2.986396\n", + " -3.222729\n", + " -0.385553\n", " cygnus_buccinator\n", - " A006_SD006\n", - " 74\n", " \n", " \n", - " 15\n", + " /mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_142800.wav\n", + " 33.0\n", + " 36.0\n", + " -1.601139\n", + " -0.252180\n", + " -3.101501\n", + " -2.392858\n", + " -2.225421\n", + " -0.714830\n", " cygnus_buccinator\n", - " A007_SD017\n", - " 4\n", " \n", " \n", - " 16\n", + " /mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_143100.wav\n", + " 45.0\n", + " 48.0\n", + " -1.391090\n", + " -0.119804\n", + " -3.104215\n", + " -2.473579\n", + " -2.452408\n", + " -0.893051\n", " cygnus_buccinator\n", - " A010_SD014\n", - " 46\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " species deployment size\n", - "0 aix_sponsa A001_SD001 27\n", - "1 aix_sponsa A005_SD002 2\n", - "2 aix_sponsa A006_SD006 39\n", - "3 aix_sponsa A010_SD014 56\n", - "4 anas_carolinensis A006_SD006 1\n", - "5 anas_carolinensis A010_SD014 65\n", - "6 anas_platyrhynchos A005_SD002 10\n", - "7 anas_platyrhynchos A006_SD006 43\n", - "8 anas_platyrhynchos A010_SD014 91\n", - "9 branta_canadensis A005_SD002 5\n", - "10 branta_canadensis A006_SD006 77\n", - "11 branta_canadensis A007_SD017 15\n", - "12 branta_canadensis A010_SD014 45\n", - "13 cygnus_buccinator A005_SD002 5\n", - "14 cygnus_buccinator A006_SD006 74\n", - "15 cygnus_buccinator A007_SD017 4\n", - "16 cygnus_buccinator A010_SD014 46" - ] - }, - "execution_count": 94, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# This cell contains code to concatenate annotation labels and summarize number of annotations per deployment\n", - "import glob\n", - "import pandas as pd\n", - "\n", - "# all_files = []\n", - "all_dfs = []\n", - "\n", - "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", - "for file in files:\n", - " path = os.path.normpath(file)\n", - " file_stem = deployment = path.split(os.sep)[5]\n", - " deployment = file_stem[:10]\n", - " df = pd.read_csv(file, sep=\"\\t\")\n", - " df[\"deployment\"] = deployment\n", - " df[\"file_stem\"] = file_stem\n", - " all_dfs.append(df)\n", - "concatenated_annotations_df = pd.concat(all_dfs)\n", - "spectrogram_df = concatenated_annotations_df[(concatenated_annotations_df[\"View\"]==\"Spectrogram 1\") & (concatenated_annotations_df[\"species\"].isin([\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]))]\n", - "spectrogram_df.groupby([\"species\", \"deployment\"]).size().to_frame('size').reset_index()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "3ff33f17", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
SelectionViewChannelBegin Time (s)End Time (s)Low Freq (Hz)High Freq (Hz)Delta Time (s)Delta Freq (Hz)Avg Power Density (dB FS/Hz)speciesdeploymentfile_stem
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_153500.wav51.054.0-3.191252-0.738569-0.986924-5.240353-2.603708-0.871135cygnus_buccinator
53Spectrogram 1147.11932747.6845181480.6539339.5040.56527858.851-76.43aix_sponsaA001_SD001A001_SD001_20240414_064800.Table.1.selections.txt/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_153700.wav3.06.0-1.9392330.107784-2.749626-2.775063-2.743619-0.710778cygnus_buccinator
53Spectrogram 117.3728837.8522221907.7656776.8350.47934869.071-66.33aix_sponsaA001_SD001A001_SD001_20240414_070200.Table.1.selections.txt6.09.0-2.5719760.507221-3.611285-4.837149-3.154031-0.613258cygnus_buccinator
95Spectrogram 119.60503010.0199803075.2037374.7920.41504299.589-70.84aix_sponsaA001_SD001A001_SD001_20240414_070200.Table.1.selections.txt9.012.0-2.079885-0.658730-2.015315-3.535017-1.723232-1.706821cygnus_buccinator
116Spectrogram 1111.04304711.7083992932.8327574.1100.66544641.278-63.36aix_sponsaA001_SD001A001_SD001_20240414_070200.Table.1.selections.txt39.042.0-2.124892-0.750823-3.340519-2.785539-2.089970-0.818779cygnus_buccinator
1910Spectrogram 1120.62094221.1932872875.8846748.3610.57233872.477-60.34aix_sponsaA001_SD001A001_SD001_20240414_070200.Table.1.selections.txt45.048.0-0.762084-0.682320-3.200244-3.812429-1.284953-1.538890cygnus_buccinator
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_162500.wav0.03.0-0.673151-0.279651-3.891393-3.576270-2.770323-1.470701cygnus_buccinator
3.06.0-1.249256-0.748840-3.909262-3.165577-2.841159-1.316878cygnus_buccinator
36.039.0-1.568681-0.633143-1.951230-2.457175-1.909579-0.695121cygnus_buccinator
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240330_163800.wav0.03.0-0.8213990.548348-3.396160-4.686586-3.026577-1.926758cygnus_buccinator
9.012.0-1.8069320.355461-3.457755-4.669560-2.778592-0.367470cygnus_buccinator
/mnt/class_data/group1_bioacoustics/brett/A010_SD014_20240401_141700.wav3.06.0-1.466548-1.203940-3.454913-3.012886-2.253412-1.322668cygnus_buccinator
\n", "
" ], "text/plain": [ - " Selection View Channel Begin Time (s) End Time (s) \\\n", - "5 3 Spectrogram 1 1 47.119327 47.684518 \n", - "5 3 Spectrogram 1 1 7.372883 7.852222 \n", - "9 5 Spectrogram 1 1 9.605030 10.019980 \n", - "11 6 Spectrogram 1 1 11.043047 11.708399 \n", - "19 10 Spectrogram 1 1 20.620942 21.193287 \n", + " branta_canadensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -1.328189 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -2.250578 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -1.384896 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -2.025162 \n", + " 15.0 18.0 -2.145516 \n", + " 18.0 21.0 -2.352484 \n", + " 21.0 24.0 -2.404845 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 -2.103028 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -2.406799 \n", + " 33.0 36.0 -2.123969 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -2.170269 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -1.562398 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -0.611366 \n", + " 15.0 18.0 -1.241258 \n", + " 24.0 27.0 -2.193347 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -1.601139 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -1.391090 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -3.191252 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -1.939233 \n", + " 6.0 9.0 -2.571976 \n", + " 9.0 12.0 -2.079885 \n", + " 39.0 42.0 -2.124892 \n", + " 45.0 48.0 -0.762084 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -0.673151 \n", + " 3.0 6.0 -1.249256 \n", + " 36.0 39.0 -1.568681 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -0.821399 \n", + " 9.0 12.0 -1.806932 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -1.466548 \n", "\n", - " Low Freq (Hz) High Freq (Hz) Delta Time (s) Delta Freq (Hz) \\\n", - "5 1480.653 9339.504 0.5652 7858.851 \n", - "5 1907.765 6776.835 0.4793 4869.071 \n", - "9 3075.203 7374.792 0.4150 4299.589 \n", - "11 2932.832 7574.110 0.6654 4641.278 \n", - "19 2875.884 6748.361 0.5723 3872.477 \n", + " cygnus_buccinator \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -0.818553 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -0.450416 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -1.212604 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 0.601957 \n", + " 15.0 18.0 0.606927 \n", + " 18.0 21.0 -0.000089 \n", + " 21.0 24.0 0.603902 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 0.141548 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -0.626313 \n", + " 33.0 36.0 -0.782993 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -0.684128 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -1.230971 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -0.580194 \n", + " 15.0 18.0 0.008657 \n", + " 24.0 27.0 0.834583 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -0.252180 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -0.119804 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -0.738569 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 0.107784 \n", + " 6.0 9.0 0.507221 \n", + " 9.0 12.0 -0.658730 \n", + " 39.0 42.0 -0.750823 \n", + " 45.0 48.0 -0.682320 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -0.279651 \n", + " 3.0 6.0 -0.748840 \n", + " 36.0 39.0 -0.633143 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 0.548348 \n", + " 9.0 12.0 0.355461 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -1.203940 \n", + "\n", + " anas_carolinensis \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -3.226559 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -2.004576 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -2.427679 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -1.917533 \n", + " 15.0 18.0 -3.403327 \n", + " 18.0 21.0 -2.818168 \n", + " 21.0 24.0 -2.485976 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 -2.110906 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -3.873074 \n", + " 33.0 36.0 -4.199523 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -2.811203 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -2.332815 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -3.567986 \n", + " 15.0 18.0 -3.908598 \n", + " 24.0 27.0 -4.053989 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -3.101501 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -3.104215 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -0.986924 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -2.749626 \n", + " 6.0 9.0 -3.611285 \n", + " 9.0 12.0 -2.015315 \n", + " 39.0 42.0 -3.340519 \n", + " 45.0 48.0 -3.200244 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -3.891393 \n", + " 3.0 6.0 -3.909262 \n", + " 36.0 39.0 -1.951230 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -3.396160 \n", + " 9.0 12.0 -3.457755 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -3.454913 \n", "\n", - " Avg Power Density (dB FS/Hz) species deployment \\\n", - "5 -76.43 aix_sponsa A001_SD001 \n", - "5 -66.33 aix_sponsa A001_SD001 \n", - "9 -70.84 aix_sponsa A001_SD001 \n", - "11 -63.36 aix_sponsa A001_SD001 \n", - "19 -60.34 aix_sponsa A001_SD001 \n", + " anas_platyrhynchos \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -2.985115 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -3.229027 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -2.328110 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -2.763769 \n", + " 15.0 18.0 -2.794636 \n", + " 18.0 21.0 -2.844097 \n", + " 21.0 24.0 -2.976252 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 -1.361205 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -1.103225 \n", + " 33.0 36.0 -1.170573 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -4.863581 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -3.301831 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -2.380388 \n", + " 15.0 18.0 -2.680417 \n", + " 24.0 27.0 -2.986396 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -2.392858 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -2.473579 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -5.240353 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -2.775063 \n", + " 6.0 9.0 -4.837149 \n", + " 9.0 12.0 -3.535017 \n", + " 39.0 42.0 -2.785539 \n", + " 45.0 48.0 -3.812429 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -3.576270 \n", + " 3.0 6.0 -3.165577 \n", + " 36.0 39.0 -2.457175 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -4.686586 \n", + " 9.0 12.0 -4.669560 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -3.012886 \n", "\n", - " file_stem \n", - "5 A001_SD001_20240414_064800.Table.1.selections.txt \n", - "5 A001_SD001_20240414_070200.Table.1.selections.txt \n", - "9 A001_SD001_20240414_070200.Table.1.selections.txt \n", - "11 A001_SD001_20240414_070200.Table.1.selections.txt \n", - "19 A001_SD001_20240414_070200.Table.1.selections.txt " + " aix_sponsa \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -2.654475 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -2.740090 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -1.346639 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -3.091086 \n", + " 15.0 18.0 -2.903487 \n", + " 18.0 21.0 -2.357723 \n", + " 21.0 24.0 -3.035415 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 -2.251144 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -2.246933 \n", + " 33.0 36.0 -2.576193 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -2.571436 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -2.291285 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -3.333604 \n", + " 15.0 18.0 -3.297959 \n", + " 24.0 27.0 -3.222729 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -2.225421 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -2.452408 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -2.603708 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -2.743619 \n", + " 6.0 9.0 -3.154031 \n", + " 9.0 12.0 -1.723232 \n", + " 39.0 42.0 -2.089970 \n", + " 45.0 48.0 -1.284953 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -2.770323 \n", + " 3.0 6.0 -2.841159 \n", + " 36.0 39.0 -1.909579 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -3.026577 \n", + " 9.0 12.0 -2.778592 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -2.253412 \n", + "\n", + " empty_class \\\n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 -0.921827 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 -0.519893 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -1.395018 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 -0.980837 \n", + " 15.0 18.0 -0.704185 \n", + " 18.0 21.0 -0.523428 \n", + " 21.0 24.0 -0.619744 \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 -0.965190 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 -0.968016 \n", + " 33.0 36.0 -1.102678 \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 -0.964311 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 -1.304047 \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 -0.591212 \n", + " 15.0 18.0 -0.703769 \n", + " 24.0 27.0 -0.385553 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 -0.714830 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 -0.893051 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 -0.871135 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -0.710778 \n", + " 6.0 9.0 -0.613258 \n", + " 9.0 12.0 -1.706821 \n", + " 39.0 42.0 -0.818779 \n", + " 45.0 48.0 -1.538890 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -1.470701 \n", + " 3.0 6.0 -1.316878 \n", + " 36.0 39.0 -0.695121 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 -1.926758 \n", + " 9.0 12.0 -0.367470 \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 -1.322668 \n", + "\n", + " top_id \n", + "file start_time end_time \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 36.0 39.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 21.0 24.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 12.0 15.0 cygnus_buccinator \n", + " 15.0 18.0 cygnus_buccinator \n", + " 18.0 21.0 cygnus_buccinator \n", + " 21.0 24.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A007_... 51.0 54.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 27.0 30.0 cygnus_buccinator \n", + " 33.0 36.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A008_... 6.0 9.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 39.0 42.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A009_... 9.0 12.0 cygnus_buccinator \n", + " 15.0 18.0 cygnus_buccinator \n", + " 24.0 27.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 33.0 36.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 45.0 48.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 51.0 54.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 cygnus_buccinator \n", + " 6.0 9.0 cygnus_buccinator \n", + " 9.0 12.0 cygnus_buccinator \n", + " 39.0 42.0 cygnus_buccinator \n", + " 45.0 48.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 cygnus_buccinator \n", + " 3.0 6.0 cygnus_buccinator \n", + " 36.0 39.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 0.0 3.0 cygnus_buccinator \n", + " 9.0 12.0 cygnus_buccinator \n", + "/mnt/class_data/group1_bioacoustics/brett/A010_... 3.0 6.0 cygnus_buccinator " ] }, - "execution_count": 96, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "spectrogram_df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "f0068070", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "150\n", - "Preview of testing files list:\n", - "['/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_062800.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_065600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_063000.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A006_SD006_20240330_190500.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A005_SD002_20240401_192300.Table.1.selections.txt']\n", - "Preview of training/validation/extra test files list:\n", - "['/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_055600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_060600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240403_054600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_064800.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061400.Table.1.selections.txt']\n", - "130\n", - "130\n", - "Going to sample 13 additional test files\n", - "Old sample size of train_validation files: 130\n", - "New sample size of train_validation files: 117\n" - ] - } - ], - "source": [ - "import random\n", - "\n", - "# This cell contains code that will be used to systematically go split data\n", - "all_deployment_names = [\"A010_SD014\",\n", - "\"A005_SD002\",\n", - "\"A008_SD007\",\n", - "\"A016_SD022\",\n", - "\"A003_SD005\",\n", - "\"A017_SD024\",\n", - "\"A007_SD017\",\n", - "\"A009_SD009\",\n", - "\"A002_SD013\",\n", - "\"A002_SD013\",\n", - "\"A001_SD001\",\n", - "\"A014_SD021\",\n", - "\"A004_SD012\",\n", - "\"A011_SD018\",\n", - "\"A013_SD016\",\n", - "\"A006_SD006\",\n", - "\"A015_SD010\",\n", - "\"A018_SD011\",\n", - "\"A019_SD008\",\n", - "\"A021_SD023\",\n", - "\"A022_SD019\"]\n", - "deployment_names_for_testing = [\"A005_SD002\", \"A006_SD006\"]\n", - "\n", - "files = glob.glob(f\"/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/*selections.txt\")\n", - "print(len(files))\n", - "testing_files = []\n", - "train_validation_files = []\n", - "for file in files:\n", - " if \"A005_SD002\" in file or \"A006_SD006\" in file:\n", - " # print(file)\n", - " # print(deployment_name)\n", - " testing_files.append(file)\n", - " else:\n", - " train_validation_files.append(file)\n", - "\n", - "print(\"Preview of testing files list:\")\n", - "print(testing_files[:5])\n", - "\n", - "print(\"Preview of training/validation/extra test files list:\")\n", - "print(train_validation_files[:5])\n", - "print(len(set(train_validation_files)))\n", - "print(len(train_validation_files))\n", - "\n", - "# Let's reserve a small proportion for additional testing files\n", - "number_of_additional_test_files_to_sample = round(0.1*len(train_validation_files))\n", - "print(f\"Going to sample {number_of_additional_test_files_to_sample} additional test files\")\n", - "additional_test_files = random.sample(train_validation_files, number_of_additional_test_files_to_sample)\n", - "\n", - "print(f\"Old sample size of train_validation files: {len(train_validation_files)}\")\n", - "train_validation_files = [file for file in train_validation_files if file not in additional_test_files]\n", - "print(f\"New sample size of train_validation files: {len(train_validation_files)}\")\n" + "scores.idxmax(axis=1).value_counts()\n", + "score_copy = scores.copy()\n", + "score_copy[\"top_id\"] = scores.idxmax(axis=1)\n", + "#score_copy[score_copy[\"top_id\"] == \"cygnus_buccinator\"]\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 152, - "id": "9f38428b", + "execution_count": 31, + "id": "bda8abbe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_055600.wav', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_060600.wav', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_064800.wav', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061400.wav', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_070200.wav']\n", - "['/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240411_055600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240404_060600.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_064800.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240412_061400.Table.1.selections.txt', '/Volumes/LaCie/audio_files_to_annotate/annotated_files_20250108/A001_SD001_20240414_070200.Table.1.selections.txt']\n" + "64\n", + "17\n" ] } ], "source": [ - "import numpy as np\n", - "from opensoundscape import BoxedAnnotations\n", + "target_class = \"branta_canadensis\"\n", + "ground_truth_target_df = train_df[train_df[target_class]]\n", + "#print(ground_truth_cg_df.head())\n", + "ground_truth_target_df.index\n", + "#ground_truth_cg_df.join(score_copy)\n", "\n", - "np.random.seed = 11\n", - "random.seed = 11\n", - "# Let's first try to split randomly and see how many samples we have for each deployment site\n", - "# The file list I have is for the annotations because I globbed *selections.txt\n", - "# So, I have to create a list for the sound files\n", - "audio_file_paths = []\n", - "raven_file_paths = []\n", - "for file in train_validation_files:\n", - " raven_file_paths.append(file)\n", - " audio_file = file.replace(\".Table.1.selections.txt\", \".wav\")\n", - " audio_file_paths.append(audio_file)\n", - "print(audio_file_paths[:5])\n", - "print(raven_file_paths[:5])\n", - "for raven_file in raven_file_paths:\n", - " if not os.path.exists(raven_file):\n", - " print(f\"WARNING!!! raven file {raven_file} doesn't exist\")\n", - "for audio_file in audio_file_paths:\n", - " if not os.path.exists(audio_file):\n", - " print(f\"WARNING!!! audio file {audio_file} doesn't exist\")" + "merged_df = pd.merge(ground_truth_target_df, score_copy[[\"top_id\"]], left_index=True, right_index=True)\n", + "print(len(merged_df))\n", + "print(len(merged_df[merged_df[\"top_id\"]==target_class]))" ] }, { "cell_type": "code", - "execution_count": 159, - "id": "ac18e2dc", + "execution_count": null, + "id": "6deb305a", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import numpy as np\n", - "\n", - "np.random.seed = 11\n", - "random.seed = 11\n", - "\n", - "# Let's define annotations class and split classes\n", - "all_annotations = BoxedAnnotations.from_raven_files(raven_files=raven_file_paths,audio_files=audio_file_paths, annotation_column=\"species\")\n", - "#print(all_annotations.df)\n", - "\n", - "# Let's split audio clips\n", - "class_list = [\"branta_canadensis\", \"cygnus_buccinator\", \"anas_carolinensis\", \"anas_platyrhynchos\", \"aix_sponsa\"]\n", - "labels = all_annotations.clip_labels(\n", - " clip_duration=3,\n", - " clip_overlap=0,\n", - " min_label_overlap=0.25,\n", - " class_subset=class_list\n", - ")\n", - "train_df, validation_df = train_test_split(labels, test_size=0.1)\n", - "\n", - "# Let's check how many annotations we have for each species at each site\n", - "label_sample_size_dict = {}\n", - "species_by_deployment_dfs = []\n", - "for label in train_df.columns.values:\n", - " label_df = train_df[train_df[label]]\n", - " deployment_list = []\n", - " for i, row in label_df.reset_index().iterrows():\n", - " path = os.path.normpath(row[\"file\"])\n", - " deployment = path.split(os.sep)[5][:10]\n", - " deployment_list.append(deployment)\n", - " label_deployment_df = pd.DataFrame({\"deployment\":deployment_list})\n", - " label_deployment_df[\"label\"] = label\n", - " species_by_deployment_dfs.append(label_deployment_df)\n", - " # Group by deployment and species list and \n", - "concatenated_species_by_deployment_sample_size_df = pd.concat(species_by_deployment_dfs)\n", - "species_by_deployment_sample_size_df = concatenated_species_by_deployment_sample_size_df.groupby([\"deployment\", \"label\"]).size().rename('sample_size').reset_index()\n", - "ax = sns.barplot(data=species_by_deployment_sample_size_df, x=\"deployment\", y=\"sample_size\", hue=\"label\")\n", - "plt.savefig(\n", - " f\"/Users/brettford/Downloads/train_dataset_deployment_label_sample_sizes.png\", bbox_inches=\"tight\", dpi=800\n", - ")\n", + "from opensoundscape.preprocess.utils import show_tensor_grid\n", + "from opensoundscape.ml.datasets import AudioSplittingDataset\n", "\n", + "#generate a dataset with the samples we wish to generate and the model's preprocessor\n", + "inspection_dataset = AudioSplittingDataset(validation_files, model.preprocessor)\n", + "inspection_dataset.bypass_augmentations = True\n", "\n", - "#train_df[train_df[\"branta_canadensis\"]]" + "len(inspection_dataset)\n", + "samples = [sample.data for sample in inspection_dataset[:12]]\n", + "_ = show_tensor_grid(samples,4)" ] }, { "cell_type": "code", - "execution_count": 158, - "id": "3027f16f", + "execution_count": null, + "id": "1067d17e", "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "BoxedAnnotations.from_raven_files() missing 1 required positional argument: 'annotation_column'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[158], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodel_selection\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m train_test_split\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mopensoundscape\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BoxedAnnotations, CNN\n\u001b[0;32m----> 4\u001b[0m all_annotations \u001b[38;5;241m=\u001b[39m \u001b[43mBoxedAnnotations\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_raven_files\u001b[49m\u001b[43m(\u001b[49m\u001b[43mraven_files\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mraven_file_paths\u001b[49m\u001b[43m,\u001b[49m\u001b[43maudio_files\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maudio_file_paths\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mTypeError\u001b[0m: BoxedAnnotations.from_raven_files() missing 1 required positional argument: 'annotation_column'" - ] - } - ], + "outputs": [], "source": [ - "# from sklearn.model_selection import train_test_split\n", - "# from opensoundscape import BoxedAnnotations, CNN\n", - "\n", - "# all_annotations = BoxedAnnotations.from_raven_files(raven_files=raven_file_paths,audio_files=audio_file_paths)" + "class_list" ] }, { "cell_type": "code", - "execution_count": 160, - "id": "7def5bc4", + "execution_count": null, + "id": "00edb13d", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/rq/1dpzt_614v53ymfm0lqclqh80000gp/T/ipykernel_1782/2982371150.py:7: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " spectrogram_df[\"box_length\"] = spectrogram_df[\"End Time (s)\"] - spectrogram_df[\"Begin Time (s)\"]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.509034236631405\n" - ] - } - ], + "outputs": [], "source": [ - "# This cell contains code to plot histogram of box lengths\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "spectrogram_df.head()\n", - "spectrogram_df.columns.values\n", - "spectrogram_df[\"box_length\"] = spectrogram_df[\"End Time (s)\"] - spectrogram_df[\"Begin Time (s)\"]\n", - "ax = sns.histplot(data=spectrogram_df, x=spectrogram_df[\"box_length\"])\n", - "\n", - "plt.savefig(\n", - " f\"/Users/brettford/Downloads/raven_waterfowl_box_lengths.png\", bbox_inches=\"tight\", dpi=800\n", - ")\n", - "\n", - "plt.close()\n", - "\n", - "print(spectrogram_df[\"box_length\"].mean())" + "# I want to visualize\n", + "#import seaborn as sns\n", + "for label in class_list:\n", + "# label = \"cygnus_buccinator\"\n", + " ax = sns.histplot(x=scores[label])\n", + " plt.savefig(\n", + " f\"/home/Brett/waterfowl_audio_id/{label}_validation_scores_histogram.png\", bbox_inches=\"tight\", dpi=800\n", + " )\n", + " plt.close()\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 150, - "id": "80d093a9", + "execution_count": null, + "id": "d28856df", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "27 0 1 Spectrogram 1 1 30.0 \n", - "25 0 1 Spectrogram 1 1 15.0 \n", - "26 0 1 Spectrogram 1 1 21.0 \n", - "28 0 1 Spectrogram 1 1 48.0 \n", - "161 2 3 Spectrogram 1 1 42.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name \\\n", - "27 33.0 0 15000 American Bittern \n", - "25 18.0 0 15000 American Bittern \n", - "26 24.0 0 15000 American Bittern \n", - "28 51.0 0 15000 American Bittern \n", - "161 45.0 0 15000 American Bittern \n", - "\n", - " Species Code Confidence \\\n", - "27 amebit 0.6713 \n", - "25 amebit 0.6915 \n", - "26 amebit 0.7180 \n", - "28 amebit 0.7586 \n", - "161 amebit 0.6004 \n", - "\n", - " Begin Path File Offset (s) \\\n", - "27 /Volumes/LaCie/eclipse_2024/A001_SD001/2024041... 30.0 \n", - "25 /Volumes/LaCie/eclipse_2024/A001_SD001/2024040... 15.0 \n", - "26 /Volumes/LaCie/eclipse_2024/A001_SD001/2024041... 21.0 \n", - "28 /Volumes/LaCie/eclipse_2024/A001_SD001/2024041... 48.0 \n", - "161 /Volumes/LaCie/eclipse_2024/A003_SD005/2024041... 42.0 \n", - "\n", - " deployment \n", - "27 A001_SD001 \n", - "25 A001_SD001 \n", - "26 A001_SD001 \n", - "28 A001_SD001 \n", - "161 A003_SD005 \n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 18951 3 4 Spectrogram 1 1 42.0 \n", - "1 18953 4 5 Spectrogram 1 1 45.0 \n", - "2 18548 11 12 Spectrogram 1 1 42.0 \n", - "3 19017 4 5 Spectrogram 1 1 21.0 \n", - "4 19003 0 1 Spectrogram 1 1 0.0 \n", - ".. ... ... ... ... ... ... \n", - "908 18907 0 1 Spectrogram 1 1 21.0 \n", - "909 18950 0 1 Spectrogram 1 1 33.0 \n", - "910 18510 4 5 Spectrogram 1 1 27.0 \n", - "911 19119 1 2 Spectrogram 1 1 30.0 \n", - "912 18590 1 2 Spectrogram 1 1 21.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 45.0 0 15000 Canada Goose cangoo \n", - "1 48.0 0 15000 Canada Goose cangoo \n", - "2 45.0 0 15000 Canada Goose cangoo \n", - "3 24.0 0 15000 Canada Goose cangoo \n", - "4 3.0 0 15000 Canada Goose cangoo \n", - ".. ... ... ... ... ... \n", - "908 24.0 0 15000 Canada Goose cangoo \n", - "909 36.0 0 15000 Canada Goose cangoo \n", - "910 30.0 0 15000 Canada Goose cangoo \n", - "911 33.0 0 15000 Canada Goose cangoo \n", - "912 24.0 0 15000 Canada Goose cangoo \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9824 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "1 0.9768 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "2 0.9762 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "3 0.9747 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "4 0.9724 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - ".. ... ... \n", - "908 0.6018 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "909 0.6014 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "910 0.6011 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "911 0.6008 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "912 0.6001 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 42.0 A009_SD009 \n", - "1 45.0 A009_SD009 \n", - "2 42.0 A009_SD009 \n", - "3 21.0 A009_SD009 \n", - "4 0.0 A009_SD009 \n", - ".. ... ... \n", - "908 21.0 A009_SD009 \n", - "909 33.0 A009_SD009 \n", - "910 27.0 A009_SD009 \n", - "911 30.0 A009_SD009 \n", - "912 21.0 A009_SD009 \n", - "\n", - "[913 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A009_SD009/20240407_065000.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 20052 3 4 Spectrogram 1 1 42.0 \n", - "1 20248 4 5 Spectrogram 1 1 27.0 \n", - "2 19765 4 5 Spectrogram 1 1 36.0 \n", - "3 19767 6 7 Spectrogram 1 1 42.0 \n", - "4 20053 4 5 Spectrogram 1 1 45.0 \n", - "... ... ... ... ... ... ... \n", - "1263 20035 0 1 Spectrogram 1 1 48.0 \n", - "1264 19264 6 7 Spectrogram 1 1 45.0 \n", - "1265 19957 2 3 Spectrogram 1 1 45.0 \n", - "1266 19904 0 1 Spectrogram 1 1 51.0 \n", - "1267 20256 2 3 Spectrogram 1 1 36.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 45.0 0 15000 Canada Goose cangoo \n", - "1 30.0 0 15000 Canada Goose cangoo \n", - "2 39.0 0 15000 Canada Goose cangoo \n", - "3 45.0 0 15000 Canada Goose cangoo \n", - "4 48.0 0 15000 Canada Goose cangoo \n", - "... ... ... ... ... ... \n", - "1263 51.0 0 15000 Canada Goose cangoo \n", - "1264 48.0 0 15000 Canada Goose cangoo \n", - "1265 48.0 0 15000 Canada Goose cangoo \n", - "1266 54.0 0 15000 Canada Goose cangoo \n", - "1267 39.0 0 15000 Canada Goose cangoo \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9911 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1 0.9818 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "2 0.9817 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "3 0.9815 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "4 0.9759 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "... ... ... \n", - "1263 0.6008 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1264 0.6007 /Volumes/LaCie/eclipse_2024/A010_SD014/2024033... \n", - "1265 0.6006 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1266 0.6006 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1267 0.6005 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 42.0 A010_SD014 \n", - "1 27.0 A010_SD014 \n", - "2 36.0 A010_SD014 \n", - "3 42.0 A010_SD014 \n", - "4 45.0 A010_SD014 \n", - "... ... ... \n", - "1263 48.0 A010_SD014 \n", - "1264 45.0 A010_SD014 \n", - "1265 45.0 A010_SD014 \n", - "1266 51.0 A010_SD014 \n", - "1267 36.0 A010_SD014 \n", - "\n", - "[1268 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A010_SD014/20240408_064100.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 20438 0 1 Spectrogram 1 1 36.0 \n", - "1 20439 1 2 Spectrogram 1 1 42.0 \n", - "2 20455 2 3 Spectrogram 1 1 30.0 \n", - "3 20426 1 2 Spectrogram 1 1 12.0 \n", - "4 20442 0 1 Spectrogram 1 1 6.0 \n", - "5 20453 0 1 Spectrogram 1 1 0.0 \n", - "6 20462 0 1 Spectrogram 1 1 9.0 \n", - "7 20434 2 3 Spectrogram 1 1 33.0 \n", - "8 20466 0 1 Spectrogram 1 1 33.0 \n", - "9 20435 1 2 Spectrogram 1 1 21.0 \n", - "10 20454 3 4 Spectrogram 1 1 33.0 \n", - "11 20449 2 3 Spectrogram 1 1 6.0 \n", - "12 20465 0 1 Spectrogram 1 1 9.0 \n", - "13 20441 0 1 Spectrogram 1 1 9.0 \n", - "14 20440 2 3 Spectrogram 1 1 45.0 \n", - "15 20456 1 2 Spectrogram 1 1 24.0 \n", - "16 20427 0 1 Spectrogram 1 1 9.0 \n", - "17 20457 0 1 Spectrogram 1 1 15.0 \n", - "18 20430 1 2 Spectrogram 1 1 18.0 \n", - "19 20436 0 1 Spectrogram 1 1 3.0 \n", - "20 20461 0 1 Spectrogram 1 1 27.0 \n", - "21 20425 2 3 Spectrogram 1 1 15.0 \n", - "22 20432 1 2 Spectrogram 1 1 36.0 \n", - "23 20448 3 4 Spectrogram 1 1 15.0 \n", - "24 20443 1 2 Spectrogram 1 1 12.0 \n", - "25 20444 0 1 Spectrogram 1 1 24.0 \n", - "26 20429 0 1 Spectrogram 1 1 33.0 \n", - "27 20451 0 1 Spectrogram 1 1 0.0 \n", - "28 20452 1 2 Spectrogram 1 1 3.0 \n", - "29 20464 1 2 Spectrogram 1 1 42.0 \n", - "30 20445 0 1 Spectrogram 1 1 3.0 \n", - "31 20447 0 1 Spectrogram 1 1 9.0 \n", - "32 20467 0 1 Spectrogram 1 1 6.0 \n", - "33 20446 0 1 Spectrogram 1 1 36.0 \n", - "34 20428 0 1 Spectrogram 1 1 21.0 \n", - "35 20458 1 2 Spectrogram 1 1 36.0 \n", - "36 20437 0 1 Spectrogram 1 1 0.0 \n", - "37 20459 0 1 Spectrogram 1 1 30.0 \n", - "38 20460 0 1 Spectrogram 1 1 3.0 \n", - "39 20433 0 1 Spectrogram 1 1 33.0 \n", - "40 20431 0 1 Spectrogram 1 1 6.0 \n", - "41 20450 1 2 Spectrogram 1 1 3.0 \n", - "42 20463 0 1 Spectrogram 1 1 9.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 39.0 0 15000 Canada Goose cangoo \n", - "1 45.0 0 15000 Canada Goose cangoo \n", - "2 33.0 0 15000 Canada Goose cangoo \n", - "3 15.0 0 15000 Canada Goose cangoo \n", - "4 9.0 0 15000 Canada Goose cangoo \n", - "5 3.0 0 15000 Canada Goose cangoo \n", - "6 12.0 0 15000 Canada Goose cangoo \n", - "7 36.0 0 15000 Canada Goose cangoo \n", - "8 36.0 0 15000 Canada Goose cangoo \n", - "9 24.0 0 15000 Canada Goose cangoo \n", - "10 36.0 0 15000 Canada Goose cangoo \n", - "11 9.0 0 15000 Canada Goose cangoo \n", - "12 12.0 0 15000 Canada Goose cangoo \n", - "13 12.0 0 15000 Canada Goose cangoo \n", - "14 48.0 0 15000 Canada Goose cangoo \n", - "15 27.0 0 15000 Canada Goose cangoo \n", - "16 12.0 0 15000 Canada Goose cangoo \n", - "17 18.0 0 15000 Canada Goose cangoo \n", - "18 21.0 0 15000 Canada Goose cangoo \n", - "19 6.0 0 15000 Canada Goose cangoo \n", - "20 30.0 0 15000 Canada Goose cangoo \n", - "21 18.0 0 15000 Canada Goose cangoo \n", - "22 39.0 0 15000 Canada Goose cangoo \n", - "23 18.0 0 15000 Canada Goose cangoo \n", - "24 15.0 0 15000 Canada Goose cangoo \n", - "25 27.0 0 15000 Canada Goose cangoo \n", - "26 36.0 0 15000 Canada Goose cangoo \n", - "27 3.0 0 15000 Canada Goose cangoo \n", - "28 6.0 0 15000 Canada Goose cangoo \n", - "29 45.0 0 15000 Canada Goose cangoo \n", - "30 6.0 0 15000 Canada Goose cangoo \n", - "31 12.0 0 15000 Canada Goose cangoo \n", - "32 9.0 0 15000 Canada Goose cangoo \n", - "33 39.0 0 15000 Canada Goose cangoo \n", - "34 24.0 0 15000 Canada Goose cangoo \n", - "35 39.0 0 15000 Canada Goose cangoo \n", - "36 3.0 0 15000 Canada Goose cangoo \n", - "37 33.0 0 15000 Canada Goose cangoo \n", - "38 6.0 0 15000 Canada Goose cangoo \n", - "39 36.0 0 15000 Canada Goose cangoo \n", - "40 9.0 0 15000 Canada Goose cangoo \n", - "41 6.0 0 15000 Canada Goose cangoo \n", - "42 12.0 0 15000 Canada Goose cangoo \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9242 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "1 0.9116 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "2 0.9039 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "3 0.9007 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "4 0.8911 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "5 0.8873 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "6 0.8731 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "7 0.8588 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "8 0.8573 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "9 0.8424 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "10 0.8410 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "11 0.8340 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "12 0.8295 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "13 0.8281 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "14 0.8019 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "15 0.7956 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "16 0.7627 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "17 0.7563 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "18 0.7535 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "19 0.7488 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "20 0.7426 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "21 0.7417 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "22 0.7382 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "23 0.7379 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "24 0.7352 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "25 0.7332 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "26 0.7320 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "27 0.7240 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "28 0.7157 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "29 0.7125 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "30 0.7119 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "31 0.6810 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "32 0.6598 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "33 0.6541 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "34 0.6524 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "35 0.6503 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "36 0.6484 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "37 0.6289 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "38 0.6282 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "39 0.6131 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "40 0.6068 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "41 0.6064 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "42 0.6003 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 36.0 A014_SD021 \n", - "1 42.0 A014_SD021 \n", - "2 30.0 A014_SD021 \n", - "3 12.0 A014_SD021 \n", - "4 6.0 A014_SD021 \n", - "5 0.0 A014_SD021 \n", - "6 9.0 A014_SD021 \n", - "7 33.0 A014_SD021 \n", - "8 33.0 A014_SD021 \n", - "9 21.0 A014_SD021 \n", - "10 33.0 A014_SD021 \n", - "11 6.0 A014_SD021 \n", - "12 9.0 A014_SD021 \n", - "13 9.0 A014_SD021 \n", - "14 45.0 A014_SD021 \n", - "15 24.0 A014_SD021 \n", - "16 9.0 A014_SD021 \n", - "17 15.0 A014_SD021 \n", - "18 18.0 A014_SD021 \n", - "19 3.0 A014_SD021 \n", - "20 27.0 A014_SD021 \n", - "21 15.0 A014_SD021 \n", - "22 36.0 A014_SD021 \n", - "23 15.0 A014_SD021 \n", - "24 12.0 A014_SD021 \n", - "25 24.0 A014_SD021 \n", - "26 33.0 A014_SD021 \n", - "27 0.0 A014_SD021 \n", - "28 3.0 A014_SD021 \n", - "29 42.0 A014_SD021 \n", - "30 3.0 A014_SD021 \n", - "31 9.0 A014_SD021 \n", - "32 6.0 A014_SD021 \n", - "33 36.0 A014_SD021 \n", - "34 21.0 A014_SD021 \n", - "35 36.0 A014_SD021 \n", - "36 0.0 A014_SD021 \n", - "37 30.0 A014_SD021 \n", - "38 3.0 A014_SD021 \n", - "39 33.0 A014_SD021 \n", - "40 6.0 A014_SD021 \n", - "41 3.0 A014_SD021 \n", - "42 9.0 A014_SD021 \n", - "/Volumes/LaCie/eclipse_2024/A014_SD021/20240413_151000.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 21210 4 5 Spectrogram 1 1 21.0 \n", - "1 23594 6 7 Spectrogram 1 1 21.0 \n", - "2 24444 2 3 Spectrogram 1 1 24.0 \n", - "3 23019 3 4 Spectrogram 1 1 36.0 \n", - "4 23543 7 8 Spectrogram 1 1 21.0 \n", - "... ... ... ... ... ... ... \n", - "4192 22630 0 1 Spectrogram 1 1 0.0 \n", - "4193 23775 0 1 Spectrogram 1 1 9.0 \n", - "4194 24594 4 5 Spectrogram 1 1 39.0 \n", - "4195 23987 2 3 Spectrogram 1 1 12.0 \n", - "4196 22407 0 1 Spectrogram 1 1 27.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 24.0 0 15000 Canada Goose cangoo \n", - "1 24.0 0 15000 Canada Goose cangoo \n", - "2 27.0 0 15000 Canada Goose cangoo \n", - "3 39.0 0 15000 Canada Goose cangoo \n", - "4 24.0 0 15000 Canada Goose cangoo \n", - "... ... ... ... ... ... \n", - "4192 3.0 0 15000 Canada Goose cangoo \n", - "4193 12.0 0 15000 Canada Goose cangoo \n", - "4194 42.0 0 15000 Canada Goose cangoo \n", - "4195 15.0 0 15000 Canada Goose cangoo \n", - "4196 30.0 0 15000 Canada Goose cangoo \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9966 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "1 0.9952 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "2 0.9944 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "3 0.9941 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4 0.9926 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "... ... ... \n", - "4192 0.6003 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4193 0.6002 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4194 0.6002 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "4195 0.6001 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4196 0.6000 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 21.0 A015_SD010 \n", - "1 21.0 A015_SD010 \n", - "2 24.0 A015_SD010 \n", - "3 36.0 A015_SD010 \n", - "4 21.0 A015_SD010 \n", - "... ... ... \n", - "4192 0.0 A015_SD010 \n", - "4193 9.0 A015_SD010 \n", - "4194 39.0 A015_SD010 \n", - "4195 12.0 A015_SD010 \n", - "4196 27.0 A015_SD010 \n", - "\n", - "[4197 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A015_SD010/20240401_060400.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 103938 3 4 Spectrogram 1 1 21.0 \n", - "1 103935 0 1 Spectrogram 1 1 6.0 \n", - "2 103920 7 8 Spectrogram 1 1 27.0 \n", - "3 103923 2 3 Spectrogram 1 1 6.0 \n", - "4 103922 3 4 Spectrogram 1 1 9.0 \n", - "5 103918 5 6 Spectrogram 1 1 15.0 \n", - "6 103937 4 5 Spectrogram 1 1 24.0 \n", - "7 103925 1 2 Spectrogram 1 1 3.0 \n", - "8 103927 3 4 Spectrogram 1 1 21.0 \n", - "9 103917 4 5 Spectrogram 1 1 12.0 \n", - "10 103924 0 1 Spectrogram 1 1 0.0 \n", - "11 103932 0 1 Spectrogram 1 1 21.0 \n", - "12 103930 0 1 Spectrogram 1 1 0.0 \n", - "13 103933 0 1 Spectrogram 1 1 27.0 \n", - "14 103928 2 3 Spectrogram 1 1 18.0 \n", - "15 103929 1 2 Spectrogram 1 1 9.0 \n", - "16 103934 0 1 Spectrogram 1 1 12.0 \n", - "17 103931 2 3 Spectrogram 1 1 39.0 \n", - "18 103936 1 2 Spectrogram 1 1 9.0 \n", - "19 103939 2 3 Spectrogram 1 1 15.0 \n", - "20 103921 8 9 Spectrogram 1 1 33.0 \n", - "21 103926 2 3 Spectrogram 1 1 24.0 \n", - "22 103919 6 7 Spectrogram 1 1 24.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 24.0 0 15000 Trumpeter Swan truswa \n", - "1 9.0 0 15000 Trumpeter Swan truswa \n", - "2 30.0 0 15000 Trumpeter Swan truswa \n", - "3 9.0 0 15000 Trumpeter Swan truswa \n", - "4 12.0 0 15000 Trumpeter Swan truswa \n", - "5 18.0 0 15000 Trumpeter Swan truswa \n", - "6 27.0 0 15000 Trumpeter Swan truswa \n", - "7 6.0 0 15000 Trumpeter Swan truswa \n", - "8 24.0 0 15000 Trumpeter Swan truswa \n", - "9 15.0 0 15000 Trumpeter Swan truswa \n", - "10 3.0 0 15000 Trumpeter Swan truswa \n", - "11 24.0 0 15000 Trumpeter Swan truswa \n", - "12 3.0 0 15000 Trumpeter Swan truswa \n", - "13 30.0 0 15000 Trumpeter Swan truswa \n", - "14 21.0 0 15000 Trumpeter Swan truswa \n", - "15 12.0 0 15000 Trumpeter Swan truswa \n", - "16 15.0 0 15000 Trumpeter Swan truswa \n", - "17 42.0 0 15000 Trumpeter Swan truswa \n", - "18 12.0 0 15000 Trumpeter Swan truswa \n", - "19 18.0 0 15000 Trumpeter Swan truswa \n", - "20 36.0 0 15000 Trumpeter Swan truswa \n", - "21 27.0 0 15000 Trumpeter Swan truswa \n", - "22 27.0 0 15000 Trumpeter Swan truswa \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9981 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "1 0.9894 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "2 0.9724 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "3 0.9633 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "4 0.9625 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "5 0.9608 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "6 0.9601 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "7 0.9575 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "8 0.9521 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "9 0.9493 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "10 0.9418 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "11 0.9346 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "12 0.9314 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "13 0.9271 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "14 0.9182 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "15 0.9153 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "16 0.8315 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "17 0.7912 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "18 0.7661 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "19 0.7637 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "20 0.7057 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "21 0.6866 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "22 0.6016 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 21.0 A009_SD009 \n", - "1 6.0 A009_SD009 \n", - "2 27.0 A009_SD009 \n", - "3 6.0 A009_SD009 \n", - "4 9.0 A009_SD009 \n", - "5 15.0 A009_SD009 \n", - "6 24.0 A009_SD009 \n", - "7 3.0 A009_SD009 \n", - "8 21.0 A009_SD009 \n", - "9 12.0 A009_SD009 \n", - "10 0.0 A009_SD009 \n", - "11 21.0 A009_SD009 \n", - "12 0.0 A009_SD009 \n", - "13 27.0 A009_SD009 \n", - "14 18.0 A009_SD009 \n", - "15 9.0 A009_SD009 \n", - "16 12.0 A009_SD009 \n", - "17 39.0 A009_SD009 \n", - "18 9.0 A009_SD009 \n", - "19 15.0 A009_SD009 \n", - "20 33.0 A009_SD009 \n", - "21 24.0 A009_SD009 \n", - "22 24.0 A009_SD009 \n", - "/Volumes/LaCie/eclipse_2024/A009_SD009/20240408_065700.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 104124 0 1 Spectrogram 1 1 33.0 \n", - "1 104177 0 1 Spectrogram 1 1 21.0 \n", - "2 104220 2 3 Spectrogram 1 1 9.0 \n", - "3 104136 3 4 Spectrogram 1 1 45.0 \n", - "4 104118 0 1 Spectrogram 1 1 42.0 \n", - ".. ... ... ... ... ... ... \n", - "466 104389 1 2 Spectrogram 1 1 15.0 \n", - "467 104158 0 1 Spectrogram 1 1 36.0 \n", - "468 104180 2 3 Spectrogram 1 1 39.0 \n", - "469 104208 0 1 Spectrogram 1 1 9.0 \n", - "470 104345 0 1 Spectrogram 1 1 30.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 36.0 0 15000 Trumpeter Swan truswa \n", - "1 24.0 0 15000 Trumpeter Swan truswa \n", - "2 12.0 0 15000 Trumpeter Swan truswa \n", - "3 48.0 0 15000 Trumpeter Swan truswa \n", - "4 45.0 0 15000 Trumpeter Swan truswa \n", - ".. ... ... ... ... ... \n", - "466 18.0 0 15000 Trumpeter Swan truswa \n", - "467 39.0 0 15000 Trumpeter Swan truswa \n", - "468 42.0 0 15000 Trumpeter Swan truswa \n", - "469 12.0 0 15000 Trumpeter Swan truswa \n", - "470 33.0 0 15000 Trumpeter Swan truswa \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9994 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1 0.9990 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "2 0.9989 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "3 0.9984 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "4 0.9981 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - ".. ... ... \n", - "466 0.6037 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "467 0.6027 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "468 0.6020 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "469 0.6019 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "470 0.6016 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 33.0 A010_SD014 \n", - "1 21.0 A010_SD014 \n", - "2 9.0 A010_SD014 \n", - "3 45.0 A010_SD014 \n", - "4 42.0 A010_SD014 \n", - ".. ... ... \n", - "466 15.0 A010_SD014 \n", - "467 36.0 A010_SD014 \n", - "468 39.0 A010_SD014 \n", - "469 9.0 A010_SD014 \n", - "470 30.0 A010_SD014 \n", - "\n", - "[471 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A010_SD014/20240402_065200.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 104413 0 1 Spectrogram 1 1 24.0 \n", - "1 104414 0 1 Spectrogram 1 1 15.0 \n", - "2 104415 1 2 Spectrogram 1 1 30.0 \n", - "3 104411 0 1 Spectrogram 1 1 3.0 \n", - "4 104412 0 1 Spectrogram 1 1 3.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 27.0 0 15000 Trumpeter Swan truswa \n", - "1 18.0 0 15000 Trumpeter Swan truswa \n", - "2 33.0 0 15000 Trumpeter Swan truswa \n", - "3 6.0 0 15000 Trumpeter Swan truswa \n", - "4 6.0 0 15000 Trumpeter Swan truswa \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.8428 /Volumes/LaCie/eclipse_2024/A013_SD016/2024041... \n", - "1 0.8163 /Volumes/LaCie/eclipse_2024/A013_SD016/2024041... \n", - "2 0.7772 /Volumes/LaCie/eclipse_2024/A013_SD016/2024041... \n", - "3 0.7204 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "4 0.6674 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 24.0 A013_SD016 \n", - "1 15.0 A013_SD016 \n", - "2 30.0 A013_SD016 \n", - "3 3.0 A013_SD016 \n", - "4 3.0 A013_SD016 \n", - "/Volumes/LaCie/eclipse_2024/A013_SD016/20240415_153600.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 104416 0 1 Spectrogram 1 1 21.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 24.0 0 15000 Trumpeter Swan truswa \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.8339 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 21.0 A014_SD021 \n", - "/Volumes/LaCie/eclipse_2024/A014_SD021/20240413_152900.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 104626 3 4 Spectrogram 1 1 24.0 \n", - "1 104433 12 13 Spectrogram 1 1 45.0 \n", - "2 104421 1 2 Spectrogram 1 1 3.0 \n", - "3 104425 5 6 Spectrogram 1 1 21.0 \n", - "4 104431 11 12 Spectrogram 1 1 42.0 \n", - ".. ... ... ... ... ... ... \n", - "500 104541 1 2 Spectrogram 1 1 45.0 \n", - "501 104822 0 1 Spectrogram 1 1 21.0 \n", - "502 104770 2 3 Spectrogram 1 1 12.0 \n", - "503 104548 1 2 Spectrogram 1 1 15.0 \n", - "504 104540 1 2 Spectrogram 1 1 18.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 27.0 0 15000 Trumpeter Swan truswa \n", - "1 48.0 0 15000 Trumpeter Swan truswa \n", - "2 6.0 0 15000 Trumpeter Swan truswa \n", - "3 24.0 0 15000 Trumpeter Swan truswa \n", - "4 45.0 0 15000 Trumpeter Swan truswa \n", - ".. ... ... ... ... ... \n", - "500 48.0 0 15000 Trumpeter Swan truswa \n", - "501 24.0 0 15000 Trumpeter Swan truswa \n", - "502 15.0 0 15000 Trumpeter Swan truswa \n", - "503 18.0 0 15000 Trumpeter Swan truswa \n", - "504 21.0 0 15000 Trumpeter Swan truswa \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9996 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "1 0.9989 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "2 0.9987 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "3 0.9984 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "4 0.9979 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - ".. ... ... \n", - "500 0.6060 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "501 0.6021 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "502 0.6019 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "503 0.6005 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "504 0.6001 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 24.0 A015_SD010 \n", - "1 45.0 A015_SD010 \n", - "2 3.0 A015_SD010 \n", - "3 21.0 A015_SD010 \n", - "4 42.0 A015_SD010 \n", - ".. ... ... \n", - "500 45.0 A015_SD010 \n", - "501 21.0 A015_SD010 \n", - "502 12.0 A015_SD010 \n", - "503 15.0 A015_SD010 \n", - "504 18.0 A015_SD010 \n", - "\n", - "[505 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A015_SD010/20240405_141600.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 28463 3 4 Spectrogram 1 1 21.0 \n", - "1 28464 3 4 Spectrogram 1 1 54.0 \n", - "2 28461 0 1 Spectrogram 1 1 24.0 \n", - "3 28462 0 1 Spectrogram 1 1 18.0 \n", - "4 28465 0 1 Spectrogram 1 1 21.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name \\\n", - "0 24.0 0 15000 Green-winged Teal \n", - "1 57.0 0 15000 Green-winged Teal \n", - "2 27.0 0 15000 Green-winged Teal \n", - "3 21.0 0 15000 Green-winged Teal \n", - "4 24.0 0 15000 Green-winged Teal \n", - "\n", - " Species Code Confidence Begin Path \\\n", - "0 gnwtea 0.8555 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "1 gnwtea 0.7301 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "2 gnwtea 0.6952 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "3 gnwtea 0.6721 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "4 gnwtea 0.6087 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 21.0 A009_SD009 \n", - "1 54.0 A009_SD009 \n", - "2 24.0 A009_SD009 \n", - "3 18.0 A009_SD009 \n", - "4 21.0 A009_SD009 \n", - "/Volumes/LaCie/eclipse_2024/A009_SD009/20240404_060800.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 28504 0 1 Spectrogram 1 1 12.0 \n", - "1 28474 0 1 Spectrogram 1 1 30.0 \n", - "2 28497 0 1 Spectrogram 1 1 21.0 \n", - "3 28476 0 1 Spectrogram 1 1 48.0 \n", - "4 28506 0 1 Spectrogram 1 1 30.0 \n", - "5 28495 0 1 Spectrogram 1 1 0.0 \n", - "6 28479 0 1 Spectrogram 1 1 39.0 \n", - "7 28494 1 2 Spectrogram 1 1 15.0 \n", - "8 28489 0 1 Spectrogram 1 1 0.0 \n", - "9 28472 0 1 Spectrogram 1 1 18.0 \n", - "10 28482 1 2 Spectrogram 1 1 24.0 \n", - "11 28467 0 1 Spectrogram 1 1 0.0 \n", - "12 28503 0 1 Spectrogram 1 1 45.0 \n", - "13 28486 0 1 Spectrogram 1 1 18.0 \n", - "14 28499 1 2 Spectrogram 1 1 51.0 \n", - "15 28488 2 3 Spectrogram 1 1 51.0 \n", - "16 28466 1 2 Spectrogram 1 1 48.0 \n", - "17 28484 1 2 Spectrogram 1 1 45.0 \n", - "18 28475 3 4 Spectrogram 1 1 36.0 \n", - "19 28487 1 2 Spectrogram 1 1 42.0 \n", - "20 28469 0 1 Spectrogram 1 1 24.0 \n", - "21 28492 0 1 Spectrogram 1 1 15.0 \n", - "22 28477 0 1 Spectrogram 1 1 33.0 \n", - "23 28468 0 1 Spectrogram 1 1 3.0 \n", - "24 28470 1 2 Spectrogram 1 1 9.0 \n", - "25 28473 0 1 Spectrogram 1 1 33.0 \n", - "26 28496 0 1 Spectrogram 1 1 0.0 \n", - "27 28500 0 1 Spectrogram 1 1 27.0 \n", - "28 28471 0 1 Spectrogram 1 1 0.0 \n", - "29 28491 1 2 Spectrogram 1 1 30.0 \n", - "30 28483 2 3 Spectrogram 1 1 48.0 \n", - "31 28498 0 1 Spectrogram 1 1 54.0 \n", - "32 28478 0 1 Spectrogram 1 1 15.0 \n", - "33 28502 0 1 Spectrogram 1 1 9.0 \n", - "34 28505 1 2 Spectrogram 1 1 21.0 \n", - "35 28501 1 2 Spectrogram 1 1 12.0 \n", - "36 28481 0 1 Spectrogram 1 1 6.0 \n", - "37 28490 2 3 Spectrogram 1 1 36.0 \n", - "38 28480 0 1 Spectrogram 1 1 6.0 \n", - "39 28493 2 3 Spectrogram 1 1 45.0 \n", - "40 28485 0 1 Spectrogram 1 1 39.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name \\\n", - "0 15.0 0 15000 Green-winged Teal \n", - "1 33.0 0 15000 Green-winged Teal \n", - "2 24.0 0 15000 Green-winged Teal \n", - "3 51.0 0 15000 Green-winged Teal \n", - "4 33.0 0 15000 Green-winged Teal \n", - "5 3.0 0 15000 Green-winged Teal \n", - "6 42.0 0 15000 Green-winged Teal \n", - "7 18.0 0 15000 Green-winged Teal \n", - "8 3.0 0 15000 Green-winged Teal \n", - "9 21.0 0 15000 Green-winged Teal \n", - "10 27.0 0 15000 Green-winged Teal \n", - "11 3.0 0 15000 Green-winged Teal \n", - "12 48.0 0 15000 Green-winged Teal \n", - "13 21.0 0 15000 Green-winged Teal \n", - "14 54.0 0 15000 Green-winged Teal \n", - "15 54.0 0 15000 Green-winged Teal \n", - "16 51.0 0 15000 Green-winged Teal \n", - "17 48.0 0 15000 Green-winged Teal \n", - "18 39.0 0 15000 Green-winged Teal \n", - "19 45.0 0 15000 Green-winged Teal \n", - "20 27.0 0 15000 Green-winged Teal \n", - "21 18.0 0 15000 Green-winged Teal \n", - "22 36.0 0 15000 Green-winged Teal \n", - "23 6.0 0 15000 Green-winged Teal \n", - "24 12.0 0 15000 Green-winged Teal \n", - "25 36.0 0 15000 Green-winged Teal \n", - "26 3.0 0 15000 Green-winged Teal \n", - "27 30.0 0 15000 Green-winged Teal \n", - "28 3.0 0 15000 Green-winged Teal \n", - "29 33.0 0 15000 Green-winged Teal \n", - "30 51.0 0 15000 Green-winged Teal \n", - "31 57.0 0 15000 Green-winged Teal \n", - "32 18.0 0 15000 Green-winged Teal \n", - "33 12.0 0 15000 Green-winged Teal \n", - "34 24.0 0 15000 Green-winged Teal \n", - "35 15.0 0 15000 Green-winged Teal \n", - "36 9.0 0 15000 Green-winged Teal \n", - "37 39.0 0 15000 Green-winged Teal \n", - "38 9.0 0 15000 Green-winged Teal \n", - "39 48.0 0 15000 Green-winged Teal \n", - "40 42.0 0 15000 Green-winged Teal \n", - "\n", - " Species Code Confidence \\\n", - "0 gnwtea 0.9756 \n", - "1 gnwtea 0.9590 \n", - "2 gnwtea 0.9430 \n", - "3 gnwtea 0.9397 \n", - "4 gnwtea 0.9209 \n", - "5 gnwtea 0.9135 \n", - "6 gnwtea 0.9121 \n", - "7 gnwtea 0.9086 \n", - "8 gnwtea 0.8934 \n", - "9 gnwtea 0.8910 \n", - "10 gnwtea 0.8730 \n", - "11 gnwtea 0.8548 \n", - "12 gnwtea 0.8484 \n", - "13 gnwtea 0.8425 \n", - "14 gnwtea 0.8320 \n", - "15 gnwtea 0.8291 \n", - "16 gnwtea 0.8252 \n", - "17 gnwtea 0.8200 \n", - "18 gnwtea 0.8107 \n", - "19 gnwtea 0.7995 \n", - "20 gnwtea 0.7778 \n", - "21 gnwtea 0.7730 \n", - "22 gnwtea 0.7680 \n", - "23 gnwtea 0.7649 \n", - "24 gnwtea 0.7589 \n", - "25 gnwtea 0.7392 \n", - "26 gnwtea 0.7330 \n", - "27 gnwtea 0.7204 \n", - "28 gnwtea 0.7095 \n", - "29 gnwtea 0.7001 \n", - "30 gnwtea 0.6949 \n", - "31 gnwtea 0.6912 \n", - "32 gnwtea 0.6758 \n", - "33 gnwtea 0.6706 \n", - "34 gnwtea 0.6701 \n", - "35 gnwtea 0.6668 \n", - "36 gnwtea 0.6535 \n", - "37 gnwtea 0.6345 \n", - "38 gnwtea 0.6271 \n", - "39 gnwtea 0.6225 \n", - "40 gnwtea 0.6206 \n", - "\n", - " Begin Path File Offset (s) \\\n", - "0 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 12.0 \n", - "1 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 30.0 \n", - "2 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 21.0 \n", - "3 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 48.0 \n", - "4 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... 30.0 \n", - "5 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 0.0 \n", - "6 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 39.0 \n", - "7 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 15.0 \n", - "8 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 0.0 \n", - "9 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 18.0 \n", - "10 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 24.0 \n", - "11 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 0.0 \n", - "12 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 45.0 \n", - "13 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 18.0 \n", - "14 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 51.0 \n", - "15 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 51.0 \n", - "16 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 48.0 \n", - "17 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 45.0 \n", - "18 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 36.0 \n", - "19 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 42.0 \n", - "20 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 24.0 \n", - "21 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 15.0 \n", - "22 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 33.0 \n", - "23 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 3.0 \n", - "24 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 9.0 \n", - "25 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 33.0 \n", - "26 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 0.0 \n", - "27 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 27.0 \n", - "28 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 0.0 \n", - "29 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 30.0 \n", - "30 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 48.0 \n", - "31 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 54.0 \n", - "32 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 15.0 \n", - "33 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 9.0 \n", - "34 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 21.0 \n", - "35 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 12.0 \n", - "36 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 6.0 \n", - "37 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 36.0 \n", - "38 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 6.0 \n", - "39 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 45.0 \n", - "40 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... 39.0 \n", - "\n", - " deployment \n", - "0 A010_SD014 \n", - "1 A010_SD014 \n", - "2 A010_SD014 \n", - "3 A010_SD014 \n", - "4 A010_SD014 \n", - "5 A010_SD014 \n", - "6 A010_SD014 \n", - "7 A010_SD014 \n", - "8 A010_SD014 \n", - "9 A010_SD014 \n", - "10 A010_SD014 \n", - "11 A010_SD014 \n", - "12 A010_SD014 \n", - "13 A010_SD014 \n", - "14 A010_SD014 \n", - "15 A010_SD014 \n", - "16 A010_SD014 \n", - "17 A010_SD014 \n", - "18 A010_SD014 \n", - "19 A010_SD014 \n", - "20 A010_SD014 \n", - "21 A010_SD014 \n", - "22 A010_SD014 \n", - "23 A010_SD014 \n", - "24 A010_SD014 \n", - "25 A010_SD014 \n", - "26 A010_SD014 \n", - "27 A010_SD014 \n", - "28 A010_SD014 \n", - "29 A010_SD014 \n", - "30 A010_SD014 \n", - "31 A010_SD014 \n", - "32 A010_SD014 \n", - "33 A010_SD014 \n", - "34 A010_SD014 \n", - "35 A010_SD014 \n", - "36 A010_SD014 \n", - "37 A010_SD014 \n", - "38 A010_SD014 \n", - "39 A010_SD014 \n", - "40 A010_SD014 \n", - "/Volumes/LaCie/eclipse_2024/A010_SD014/20240408_162300.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 28507 0 1 Spectrogram 1 1 27.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name \\\n", - "0 30.0 0 15000 Green-winged Teal \n", - "\n", - " Species Code Confidence Begin Path \\\n", - "0 gnwtea 0.6614 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 27.0 A013_SD016 \n", - "/Volumes/LaCie/eclipse_2024/A013_SD016/20240405_060100.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 28516 0 1 Spectrogram 1 1 30.0 \n", - "1 28508 0 1 Spectrogram 1 1 51.0 \n", - "2 28515 0 1 Spectrogram 1 1 42.0 \n", - "3 28514 1 2 Spectrogram 1 1 6.0 \n", - "4 28511 0 1 Spectrogram 1 1 12.0 \n", - "5 28510 1 2 Spectrogram 1 1 15.0 \n", - "6 28513 1 2 Spectrogram 1 1 48.0 \n", - "7 28512 2 3 Spectrogram 1 1 30.0 \n", - "8 28509 0 1 Spectrogram 1 1 6.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name \\\n", - "0 33.0 0 15000 Green-winged Teal \n", - "1 54.0 0 15000 Green-winged Teal \n", - "2 45.0 0 15000 Green-winged Teal \n", - "3 9.0 0 15000 Green-winged Teal \n", - "4 15.0 0 15000 Green-winged Teal \n", - "5 18.0 0 15000 Green-winged Teal \n", - "6 51.0 0 15000 Green-winged Teal \n", - "7 33.0 0 15000 Green-winged Teal \n", - "8 9.0 0 15000 Green-winged Teal \n", - "\n", - " Species Code Confidence Begin Path \\\n", - "0 gnwtea 0.9383 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "1 gnwtea 0.8477 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "2 gnwtea 0.7477 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "3 gnwtea 0.7412 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4 gnwtea 0.7348 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "5 gnwtea 0.7310 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "6 gnwtea 0.6452 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "7 gnwtea 0.6241 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "8 gnwtea 0.6221 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 30.0 A015_SD010 \n", - "1 51.0 A015_SD010 \n", - "2 42.0 A015_SD010 \n", - "3 6.0 A015_SD010 \n", - "4 12.0 A015_SD010 \n", - "5 15.0 A015_SD010 \n", - "6 48.0 A015_SD010 \n", - "7 30.0 A015_SD010 \n", - "8 6.0 A015_SD010 \n", - "/Volumes/LaCie/eclipse_2024/A015_SD010/20240411_162400.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 32523 0 1 Spectrogram 1 1 27.0 \n", - "1 32522 1 2 Spectrogram 1 1 30.0 \n", - "2 32532 0 1 Spectrogram 1 1 36.0 \n", - "3 32531 2 3 Spectrogram 1 1 51.0 \n", - "4 32529 0 1 Spectrogram 1 1 0.0 \n", - "5 32524 0 1 Spectrogram 1 1 27.0 \n", - "6 32502 0 1 Spectrogram 1 1 48.0 \n", - "7 32535 0 1 Spectrogram 1 1 9.0 \n", - "8 32514 1 2 Spectrogram 1 1 6.0 \n", - "9 32512 1 2 Spectrogram 1 1 39.0 \n", - "10 32507 0 1 Spectrogram 1 1 51.0 \n", - "11 32508 0 1 Spectrogram 1 1 48.0 \n", - "12 32536 1 2 Spectrogram 1 1 42.0 \n", - "13 32521 2 3 Spectrogram 1 1 33.0 \n", - "14 32518 0 1 Spectrogram 1 1 0.0 \n", - "15 32493 1 2 Spectrogram 1 1 15.0 \n", - "16 32519 1 2 Spectrogram 1 1 3.0 \n", - "17 32527 1 2 Spectrogram 1 1 15.0 \n", - "18 32500 0 1 Spectrogram 1 1 48.0 \n", - "19 32492 2 3 Spectrogram 1 1 18.0 \n", - "20 32526 0 1 Spectrogram 1 1 12.0 \n", - "21 32534 0 1 Spectrogram 1 1 21.0 \n", - "22 32510 5 6 Spectrogram 1 1 30.0 \n", - "23 32528 2 3 Spectrogram 1 1 18.0 \n", - "24 32533 1 2 Spectrogram 1 1 39.0 \n", - "25 32516 0 1 Spectrogram 1 1 0.0 \n", - "26 32530 1 2 Spectrogram 1 1 9.0 \n", - "27 32491 3 4 Spectrogram 1 1 21.0 \n", - "28 32497 0 1 Spectrogram 1 1 0.0 \n", - "29 32490 0 1 Spectrogram 1 1 18.0 \n", - "30 32537 0 1 Spectrogram 1 1 24.0 \n", - "31 32494 0 1 Spectrogram 1 1 6.0 \n", - "32 32499 0 1 Spectrogram 1 1 27.0 \n", - "33 32520 2 3 Spectrogram 1 1 6.0 \n", - "34 32513 0 1 Spectrogram 1 1 36.0 \n", - "35 32539 0 1 Spectrogram 1 1 15.0 \n", - "36 32495 0 1 Spectrogram 1 1 3.0 \n", - "37 32503 2 3 Spectrogram 1 1 51.0 \n", - "38 32515 5 6 Spectrogram 1 1 51.0 \n", - "39 32538 0 1 Spectrogram 1 1 51.0 \n", - "40 32496 1 2 Spectrogram 1 1 33.0 \n", - "41 32505 0 1 Spectrogram 1 1 18.0 \n", - "42 32498 2 3 Spectrogram 1 1 36.0 \n", - "43 32501 1 2 Spectrogram 1 1 51.0 \n", - "44 32509 7 8 Spectrogram 1 1 36.0 \n", - "45 32525 0 1 Spectrogram 1 1 54.0 \n", - "46 32504 0 1 Spectrogram 1 1 15.0 \n", - "47 32506 0 1 Spectrogram 1 1 45.0 \n", - "48 32517 0 1 Spectrogram 1 1 51.0 \n", - "49 32511 6 7 Spectrogram 1 1 33.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 30.0 0 15000 Mallard mallar3 \n", - "1 33.0 0 15000 Mallard mallar3 \n", - "2 39.0 0 15000 Mallard mallar3 \n", - "3 54.0 0 15000 Mallard mallar3 \n", - "4 3.0 0 15000 Mallard mallar3 \n", - "5 30.0 0 15000 Mallard mallar3 \n", - "6 51.0 0 15000 Mallard mallar3 \n", - "7 12.0 0 15000 Mallard mallar3 \n", - "8 9.0 0 15000 Mallard mallar3 \n", - "9 42.0 0 15000 Mallard mallar3 \n", - "10 54.0 0 15000 Mallard mallar3 \n", - "11 51.0 0 15000 Mallard mallar3 \n", - "12 45.0 0 15000 Mallard mallar3 \n", - "13 36.0 0 15000 Mallard mallar3 \n", - "14 3.0 0 15000 Mallard mallar3 \n", - "15 18.0 0 15000 Mallard mallar3 \n", - "16 6.0 0 15000 Mallard mallar3 \n", - "17 18.0 0 15000 Mallard mallar3 \n", - "18 51.0 0 15000 Mallard mallar3 \n", - "19 21.0 0 15000 Mallard mallar3 \n", - "20 15.0 0 15000 Mallard mallar3 \n", - "21 24.0 0 15000 Mallard mallar3 \n", - "22 33.0 0 15000 Mallard mallar3 \n", - "23 21.0 0 15000 Mallard mallar3 \n", - "24 42.0 0 15000 Mallard mallar3 \n", - "25 3.0 0 15000 Mallard mallar3 \n", - "26 12.0 0 15000 Mallard mallar3 \n", - "27 24.0 0 15000 Mallard mallar3 \n", - "28 3.0 0 15000 Mallard mallar3 \n", - "29 21.0 0 15000 Mallard mallar3 \n", - "30 27.0 0 15000 Mallard mallar3 \n", - "31 9.0 0 15000 Mallard mallar3 \n", - "32 30.0 0 15000 Mallard mallar3 \n", - "33 9.0 0 15000 Mallard mallar3 \n", - "34 39.0 0 15000 Mallard mallar3 \n", - "35 18.0 0 15000 Mallard mallar3 \n", - "36 6.0 0 15000 Mallard mallar3 \n", - "37 54.0 0 15000 Mallard mallar3 \n", - "38 54.0 0 15000 Mallard mallar3 \n", - "39 54.0 0 15000 Mallard mallar3 \n", - "40 36.0 0 15000 Mallard mallar3 \n", - "41 21.0 0 15000 Mallard mallar3 \n", - "42 39.0 0 15000 Mallard mallar3 \n", - "43 54.0 0 15000 Mallard mallar3 \n", - "44 39.0 0 15000 Mallard mallar3 \n", - "45 57.0 0 15000 Mallard mallar3 \n", - "46 18.0 0 15000 Mallard mallar3 \n", - "47 48.0 0 15000 Mallard mallar3 \n", - "48 54.0 0 15000 Mallard mallar3 \n", - "49 36.0 0 15000 Mallard mallar3 \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9785 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "1 0.9550 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "2 0.9469 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "3 0.9273 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "4 0.9253 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "5 0.8888 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "6 0.8859 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "7 0.8771 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "8 0.8696 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "9 0.8545 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "10 0.8541 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "11 0.8519 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "12 0.8393 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "13 0.8380 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "14 0.8094 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "15 0.8093 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "16 0.8071 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "17 0.8054 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "18 0.7938 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "19 0.7899 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "20 0.7866 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "21 0.7709 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "22 0.7647 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "23 0.7606 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "24 0.7604 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "25 0.7582 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "26 0.7502 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "27 0.7483 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "28 0.7158 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "29 0.7043 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "30 0.7026 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "31 0.6996 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "32 0.6970 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "33 0.6958 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "34 0.6951 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "35 0.6874 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "36 0.6686 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "37 0.6635 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "38 0.6514 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "39 0.6490 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "40 0.6468 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "41 0.6449 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "42 0.6435 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "43 0.6335 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "44 0.6297 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "45 0.6258 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "46 0.6175 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "47 0.6144 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "48 0.6134 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "49 0.6079 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 27.0 A009_SD009 \n", - "1 30.0 A009_SD009 \n", - "2 36.0 A009_SD009 \n", - "3 51.0 A009_SD009 \n", - "4 0.0 A009_SD009 \n", - "5 27.0 A009_SD009 \n", - "6 48.0 A009_SD009 \n", - "7 9.0 A009_SD009 \n", - "8 6.0 A009_SD009 \n", - "9 39.0 A009_SD009 \n", - "10 51.0 A009_SD009 \n", - "11 48.0 A009_SD009 \n", - "12 42.0 A009_SD009 \n", - "13 33.0 A009_SD009 \n", - "14 0.0 A009_SD009 \n", - "15 15.0 A009_SD009 \n", - "16 3.0 A009_SD009 \n", - "17 15.0 A009_SD009 \n", - "18 48.0 A009_SD009 \n", - "19 18.0 A009_SD009 \n", - "20 12.0 A009_SD009 \n", - "21 21.0 A009_SD009 \n", - "22 30.0 A009_SD009 \n", - "23 18.0 A009_SD009 \n", - "24 39.0 A009_SD009 \n", - "25 0.0 A009_SD009 \n", - "26 9.0 A009_SD009 \n", - "27 21.0 A009_SD009 \n", - "28 0.0 A009_SD009 \n", - "29 18.0 A009_SD009 \n", - "30 24.0 A009_SD009 \n", - "31 6.0 A009_SD009 \n", - "32 27.0 A009_SD009 \n", - "33 6.0 A009_SD009 \n", - "34 36.0 A009_SD009 \n", - "35 15.0 A009_SD009 \n", - "36 3.0 A009_SD009 \n", - "37 51.0 A009_SD009 \n", - "38 51.0 A009_SD009 \n", - "39 51.0 A009_SD009 \n", - "40 33.0 A009_SD009 \n", - "41 18.0 A009_SD009 \n", - "42 36.0 A009_SD009 \n", - "43 51.0 A009_SD009 \n", - "44 36.0 A009_SD009 \n", - "45 54.0 A009_SD009 \n", - "46 15.0 A009_SD009 \n", - "47 45.0 A009_SD009 \n", - "48 51.0 A009_SD009 \n", - "49 33.0 A009_SD009 \n", - "/Volumes/LaCie/eclipse_2024/A009_SD009/20240405_155300.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 32575 1 2 Spectrogram 1 1 21.0 \n", - "1 32649 1 2 Spectrogram 1 1 9.0 \n", - "2 32650 2 3 Spectrogram 1 1 12.0 \n", - "3 32656 0 1 Spectrogram 1 1 6.0 \n", - "4 32628 1 2 Spectrogram 1 1 3.0 \n", - ".. ... ... ... ... ... ... \n", - "163 32573 0 1 Spectrogram 1 1 0.0 \n", - "164 32568 0 1 Spectrogram 1 1 39.0 \n", - "165 32635 1 2 Spectrogram 1 1 6.0 \n", - "166 32662 0 1 Spectrogram 1 1 6.0 \n", - "167 32618 0 1 Spectrogram 1 1 48.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 24.0 0 15000 Mallard mallar3 \n", - "1 12.0 0 15000 Mallard mallar3 \n", - "2 15.0 0 15000 Mallard mallar3 \n", - "3 9.0 0 15000 Mallard mallar3 \n", - "4 6.0 0 15000 Mallard mallar3 \n", - ".. ... ... ... ... ... \n", - "163 3.0 0 15000 Mallard mallar3 \n", - "164 42.0 0 15000 Mallard mallar3 \n", - "165 9.0 0 15000 Mallard mallar3 \n", - "166 9.0 0 15000 Mallard mallar3 \n", - "167 51.0 0 15000 Mallard mallar3 \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9877 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "1 0.9733 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "2 0.9664 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "3 0.9638 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "4 0.9425 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - ".. ... ... \n", - "163 0.6084 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "164 0.6015 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "165 0.6015 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "166 0.6005 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "167 0.6001 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 21.0 A010_SD014 \n", - "1 9.0 A010_SD014 \n", - "2 12.0 A010_SD014 \n", - "3 6.0 A010_SD014 \n", - "4 3.0 A010_SD014 \n", - ".. ... ... \n", - "163 0.0 A010_SD014 \n", - "164 39.0 A010_SD014 \n", - "165 6.0 A010_SD014 \n", - "166 6.0 A010_SD014 \n", - "167 48.0 A010_SD014 \n", - "\n", - "[168 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A010_SD014/20240404_060700.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 32709 0 1 Spectrogram 1 1 51.0 \n", - "1 32708 0 1 Spectrogram 1 1 45.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 54.0 0 15000 Mallard mallar3 \n", - "1 48.0 0 15000 Mallard mallar3 \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.7313 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "1 0.6827 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 51.0 A013_SD016 \n", - "1 45.0 A013_SD016 \n", - "/Volumes/LaCie/eclipse_2024/A013_SD016/20240406_153500.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 32711 1 2 Spectrogram 1 1 39.0 \n", - "1 32710 0 1 Spectrogram 1 1 36.0 \n", - "2 32712 0 1 Spectrogram 1 1 36.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 42.0 0 15000 Mallard mallar3 \n", - "1 39.0 0 15000 Mallard mallar3 \n", - "2 39.0 0 15000 Mallard mallar3 \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.7174 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "1 0.6391 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "2 0.6026 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 39.0 A014_SD021 \n", - "1 36.0 A014_SD021 \n", - "2 36.0 A014_SD021 \n", - "/Volumes/LaCie/eclipse_2024/A014_SD021/20240415_155301.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 32791 0 1 Spectrogram 1 1 39.0 \n", - "1 32713 0 1 Spectrogram 1 1 6.0 \n", - "2 32725 2 3 Spectrogram 1 1 24.0 \n", - "3 32717 5 6 Spectrogram 1 1 30.0 \n", - "4 32775 1 2 Spectrogram 1 1 45.0 \n", - ".. ... ... ... ... ... ... \n", - "142 32850 2 3 Spectrogram 1 1 27.0 \n", - "143 32762 0 1 Spectrogram 1 1 0.0 \n", - "144 32844 6 7 Spectrogram 1 1 42.0 \n", - "145 32802 2 3 Spectrogram 1 1 45.0 \n", - "146 32810 0 1 Spectrogram 1 1 12.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 42.0 0 15000 Mallard mallar3 \n", - "1 9.0 0 15000 Mallard mallar3 \n", - "2 27.0 0 15000 Mallard mallar3 \n", - "3 33.0 0 15000 Mallard mallar3 \n", - "4 48.0 0 15000 Mallard mallar3 \n", - ".. ... ... ... ... ... \n", - "142 30.0 0 15000 Mallard mallar3 \n", - "143 3.0 0 15000 Mallard mallar3 \n", - "144 45.0 0 15000 Mallard mallar3 \n", - "145 48.0 0 15000 Mallard mallar3 \n", - "146 15.0 0 15000 Mallard mallar3 \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9532 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "1 0.9478 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "2 0.9378 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "3 0.9332 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "4 0.9323 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - ".. ... ... \n", - "142 0.6077 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "143 0.6021 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "144 0.6014 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "145 0.6008 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "146 0.6005 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 39.0 A015_SD010 \n", - "1 6.0 A015_SD010 \n", - "2 24.0 A015_SD010 \n", - "3 30.0 A015_SD010 \n", - "4 45.0 A015_SD010 \n", - ".. ... ... \n", - "142 27.0 A015_SD010 \n", - "143 0.0 A015_SD010 \n", - "144 42.0 A015_SD010 \n", - "145 45.0 A015_SD010 \n", - "146 12.0 A015_SD010 \n", - "\n", - "[147 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A015_SD010/20240403_164700.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 106867 0 1 Spectrogram 1 1 27.0 \n", - "1 106896 2 3 Spectrogram 1 1 24.0 \n", - "2 106871 2 3 Spectrogram 1 1 18.0 \n", - "3 106884 3 4 Spectrogram 1 1 39.0 \n", - "4 106862 0 1 Spectrogram 1 1 12.0 \n", - "5 106874 0 1 Spectrogram 1 1 0.0 \n", - "6 106863 1 2 Spectrogram 1 1 54.0 \n", - "7 106894 4 5 Spectrogram 1 1 30.0 \n", - "8 106885 2 3 Spectrogram 1 1 36.0 \n", - "9 106882 5 6 Spectrogram 1 1 48.0 \n", - "10 106853 0 1 Spectrogram 1 1 51.0 \n", - "11 106887 2 3 Spectrogram 1 1 48.0 \n", - "12 106864 0 1 Spectrogram 1 1 51.0 \n", - "13 106883 4 5 Spectrogram 1 1 45.0 \n", - "14 106877 0 1 Spectrogram 1 1 0.0 \n", - "15 106904 1 2 Spectrogram 1 1 3.0 \n", - "16 106895 3 4 Spectrogram 1 1 27.0 \n", - "17 106861 3 4 Spectrogram 1 1 42.0 \n", - "18 106852 0 1 Spectrogram 1 1 45.0 \n", - "19 106872 2 3 Spectrogram 1 1 36.0 \n", - "20 106889 0 1 Spectrogram 1 1 15.0 \n", - "21 106897 1 2 Spectrogram 1 1 21.0 \n", - "22 106868 0 1 Spectrogram 1 1 30.0 \n", - "23 106888 1 2 Spectrogram 1 1 36.0 \n", - "24 106860 0 1 Spectrogram 1 1 33.0 \n", - "25 106898 0 1 Spectrogram 1 1 3.0 \n", - "26 106875 2 3 Spectrogram 1 1 6.0 \n", - "27 106886 1 2 Spectrogram 1 1 30.0 \n", - "28 106890 1 2 Spectrogram 1 1 18.0 \n", - "29 106902 0 1 Spectrogram 1 1 0.0 \n", - "30 106881 0 1 Spectrogram 1 1 21.0 \n", - "31 106873 1 2 Spectrogram 1 1 48.0 \n", - "32 106856 0 1 Spectrogram 1 1 18.0 \n", - "33 106854 0 1 Spectrogram 1 1 21.0 \n", - "34 106870 3 4 Spectrogram 1 1 21.0 \n", - "35 106901 0 1 Spectrogram 1 1 33.0 \n", - "36 106857 1 2 Spectrogram 1 1 51.0 \n", - "37 106880 0 1 Spectrogram 1 1 3.0 \n", - "38 106903 2 3 Spectrogram 1 1 6.0 \n", - "39 106859 1 2 Spectrogram 1 1 36.0 \n", - "40 106892 0 1 Spectrogram 1 1 42.0 \n", - "41 106878 1 2 Spectrogram 1 1 36.0 \n", - "42 106869 0 1 Spectrogram 1 1 39.0 \n", - "43 106899 1 2 Spectrogram 1 1 42.0 \n", - "44 106893 0 1 Spectrogram 1 1 12.0 \n", - "45 106866 1 2 Spectrogram 1 1 15.0 \n", - "46 106905 0 1 Spectrogram 1 1 0.0 \n", - "47 106879 1 2 Spectrogram 1 1 6.0 \n", - "48 106891 0 1 Spectrogram 1 1 9.0 \n", - "49 106865 0 1 Spectrogram 1 1 12.0 \n", - "50 106900 0 1 Spectrogram 1 1 12.0 \n", - "51 106858 2 3 Spectrogram 1 1 39.0 \n", - "52 106876 1 2 Spectrogram 1 1 3.0 \n", - "53 106855 1 2 Spectrogram 1 1 27.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 30.0 0 15000 Wood Duck wooduc \n", - "1 27.0 0 15000 Wood Duck wooduc \n", - "2 21.0 0 15000 Wood Duck wooduc \n", - "3 42.0 0 15000 Wood Duck wooduc \n", - "4 15.0 0 15000 Wood Duck wooduc \n", - "5 3.0 0 15000 Wood Duck wooduc \n", - "6 57.0 0 15000 Wood Duck wooduc \n", - "7 33.0 0 15000 Wood Duck wooduc \n", - "8 39.0 0 15000 Wood Duck wooduc \n", - "9 51.0 0 15000 Wood Duck wooduc \n", - "10 54.0 0 15000 Wood Duck wooduc \n", - "11 51.0 0 15000 Wood Duck wooduc \n", - "12 54.0 0 15000 Wood Duck wooduc \n", - "13 48.0 0 15000 Wood Duck wooduc \n", - "14 3.0 0 15000 Wood Duck wooduc \n", - "15 6.0 0 15000 Wood Duck wooduc \n", - "16 30.0 0 15000 Wood Duck wooduc \n", - "17 45.0 0 15000 Wood Duck wooduc \n", - "18 48.0 0 15000 Wood Duck wooduc \n", - "19 39.0 0 15000 Wood Duck wooduc \n", - "20 18.0 0 15000 Wood Duck wooduc \n", - "21 24.0 0 15000 Wood Duck wooduc \n", - "22 33.0 0 15000 Wood Duck wooduc \n", - "23 39.0 0 15000 Wood Duck wooduc \n", - "24 36.0 0 15000 Wood Duck wooduc \n", - "25 6.0 0 15000 Wood Duck wooduc \n", - "26 9.0 0 15000 Wood Duck wooduc \n", - "27 33.0 0 15000 Wood Duck wooduc \n", - "28 21.0 0 15000 Wood Duck wooduc \n", - "29 3.0 0 15000 Wood Duck wooduc \n", - "30 24.0 0 15000 Wood Duck wooduc \n", - "31 51.0 0 15000 Wood Duck wooduc \n", - "32 21.0 0 15000 Wood Duck wooduc \n", - "33 24.0 0 15000 Wood Duck wooduc \n", - "34 24.0 0 15000 Wood Duck wooduc \n", - "35 36.0 0 15000 Wood Duck wooduc \n", - "36 54.0 0 15000 Wood Duck wooduc \n", - "37 6.0 0 15000 Wood Duck wooduc \n", - "38 9.0 0 15000 Wood Duck wooduc \n", - "39 39.0 0 15000 Wood Duck wooduc \n", - "40 45.0 0 15000 Wood Duck wooduc \n", - "41 39.0 0 15000 Wood Duck wooduc \n", - "42 42.0 0 15000 Wood Duck wooduc \n", - "43 45.0 0 15000 Wood Duck wooduc \n", - "44 15.0 0 15000 Wood Duck wooduc \n", - "45 18.0 0 15000 Wood Duck wooduc \n", - "46 3.0 0 15000 Wood Duck wooduc \n", - "47 9.0 0 15000 Wood Duck wooduc \n", - "48 12.0 0 15000 Wood Duck wooduc \n", - "49 15.0 0 15000 Wood Duck wooduc \n", - "50 15.0 0 15000 Wood Duck wooduc \n", - "51 42.0 0 15000 Wood Duck wooduc \n", - "52 6.0 0 15000 Wood Duck wooduc \n", - "53 30.0 0 15000 Wood Duck wooduc \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9994 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "1 0.9969 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "2 0.9958 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "3 0.9939 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "4 0.9931 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "5 0.9919 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "6 0.9878 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "7 0.9870 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "8 0.9868 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "9 0.9851 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "10 0.9822 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "11 0.9771 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "12 0.9760 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "13 0.9759 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "14 0.9745 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "15 0.9654 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "16 0.9558 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "17 0.9548 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "18 0.9540 /Volumes/LaCie/eclipse_2024/A009_SD009/2024033... \n", - "19 0.9466 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "20 0.9395 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "21 0.9252 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "22 0.9233 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "23 0.9217 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "24 0.9202 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "25 0.9028 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "26 0.8904 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "27 0.8713 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "28 0.8701 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "29 0.8691 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "30 0.8677 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "31 0.8452 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "32 0.8427 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "33 0.8336 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "34 0.8228 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "35 0.8135 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "36 0.7983 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "37 0.7952 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "38 0.7868 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "39 0.7848 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "40 0.7803 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "41 0.7774 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "42 0.7766 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "43 0.7693 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "44 0.7647 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "45 0.7531 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "46 0.7382 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "47 0.7263 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "48 0.7139 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "49 0.6997 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "50 0.6996 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "51 0.6713 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "52 0.6523 /Volumes/LaCie/eclipse_2024/A009_SD009/2024041... \n", - "53 0.6338 /Volumes/LaCie/eclipse_2024/A009_SD009/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 27.0 A009_SD009 \n", - "1 24.0 A009_SD009 \n", - "2 18.0 A009_SD009 \n", - "3 39.0 A009_SD009 \n", - "4 12.0 A009_SD009 \n", - "5 0.0 A009_SD009 \n", - "6 54.0 A009_SD009 \n", - "7 30.0 A009_SD009 \n", - "8 36.0 A009_SD009 \n", - "9 48.0 A009_SD009 \n", - "10 51.0 A009_SD009 \n", - "11 48.0 A009_SD009 \n", - "12 51.0 A009_SD009 \n", - "13 45.0 A009_SD009 \n", - "14 0.0 A009_SD009 \n", - "15 3.0 A009_SD009 \n", - "16 27.0 A009_SD009 \n", - "17 42.0 A009_SD009 \n", - "18 45.0 A009_SD009 \n", - "19 36.0 A009_SD009 \n", - "20 15.0 A009_SD009 \n", - "21 21.0 A009_SD009 \n", - "22 30.0 A009_SD009 \n", - "23 36.0 A009_SD009 \n", - "24 33.0 A009_SD009 \n", - "25 3.0 A009_SD009 \n", - "26 6.0 A009_SD009 \n", - "27 30.0 A009_SD009 \n", - "28 18.0 A009_SD009 \n", - "29 0.0 A009_SD009 \n", - "30 21.0 A009_SD009 \n", - "31 48.0 A009_SD009 \n", - "32 18.0 A009_SD009 \n", - "33 21.0 A009_SD009 \n", - "34 21.0 A009_SD009 \n", - "35 33.0 A009_SD009 \n", - "36 51.0 A009_SD009 \n", - "37 3.0 A009_SD009 \n", - "38 6.0 A009_SD009 \n", - "39 36.0 A009_SD009 \n", - "40 42.0 A009_SD009 \n", - "41 36.0 A009_SD009 \n", - "42 39.0 A009_SD009 \n", - "43 42.0 A009_SD009 \n", - "44 12.0 A009_SD009 \n", - "45 15.0 A009_SD009 \n", - "46 0.0 A009_SD009 \n", - "47 6.0 A009_SD009 \n", - "48 9.0 A009_SD009 \n", - "49 12.0 A009_SD009 \n", - "50 12.0 A009_SD009 \n", - "51 39.0 A009_SD009 \n", - "52 3.0 A009_SD009 \n", - "53 27.0 A009_SD009 \n", - "/Volumes/LaCie/eclipse_2024/A009_SD009/20240404_150200.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 106914 2 3 Spectrogram 1 1 18.0 \n", - "1 106942 1 2 Spectrogram 1 1 36.0 \n", - "2 106931 2 3 Spectrogram 1 1 30.0 \n", - "3 106979 1 2 Spectrogram 1 1 18.0 \n", - "4 106952 2 3 Spectrogram 1 1 39.0 \n", - ".. ... ... ... ... ... ... \n", - "78 106940 0 1 Spectrogram 1 1 0.0 \n", - "79 106968 1 2 Spectrogram 1 1 24.0 \n", - "80 106935 2 3 Spectrogram 1 1 27.0 \n", - "81 106926 4 5 Spectrogram 1 1 54.0 \n", - "82 106959 3 4 Spectrogram 1 1 24.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 21.0 0 15000 Wood Duck wooduc \n", - "1 39.0 0 15000 Wood Duck wooduc \n", - "2 33.0 0 15000 Wood Duck wooduc \n", - "3 21.0 0 15000 Wood Duck wooduc \n", - "4 42.0 0 15000 Wood Duck wooduc \n", - ".. ... ... ... ... ... \n", - "78 3.0 0 15000 Wood Duck wooduc \n", - "79 27.0 0 15000 Wood Duck wooduc \n", - "80 30.0 0 15000 Wood Duck wooduc \n", - "81 57.0 0 15000 Wood Duck wooduc \n", - "82 27.0 0 15000 Wood Duck wooduc \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9996 /Volumes/LaCie/eclipse_2024/A010_SD014/2024033... \n", - "1 0.9995 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "2 0.9989 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "3 0.9983 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "4 0.9983 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - ".. ... ... \n", - "78 0.6551 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "79 0.6269 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "80 0.6181 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "81 0.6033 /Volumes/LaCie/eclipse_2024/A010_SD014/2024040... \n", - "82 0.6004 /Volumes/LaCie/eclipse_2024/A010_SD014/2024041... \n", - "\n", - " File Offset (s) deployment \n", - "0 18.0 A010_SD014 \n", - "1 36.0 A010_SD014 \n", - "2 30.0 A010_SD014 \n", - "3 18.0 A010_SD014 \n", - "4 39.0 A010_SD014 \n", - ".. ... ... \n", - "78 0.0 A010_SD014 \n", - "79 24.0 A010_SD014 \n", - "80 27.0 A010_SD014 \n", - "81 54.0 A010_SD014 \n", - "82 24.0 A010_SD014 \n", - "\n", - "[83 rows x 15 columns]\n", - "/Volumes/LaCie/eclipse_2024/A010_SD014/20240331_065200.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 106990 0 1 Spectrogram 1 1 15.0 \n", - "1 106991 0 1 Spectrogram 1 1 3.0 \n", - "2 106989 0 1 Spectrogram 1 1 0.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 18.0 0 15000 Wood Duck wooduc \n", - "1 6.0 0 15000 Wood Duck wooduc \n", - "2 3.0 0 15000 Wood Duck wooduc \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9118 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "1 0.8340 /Volumes/LaCie/eclipse_2024/A013_SD016/2024041... \n", - "2 0.6529 /Volumes/LaCie/eclipse_2024/A013_SD016/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 15.0 A013_SD016 \n", - "1 3.0 A013_SD016 \n", - "2 0.0 A013_SD016 \n", - "/Volumes/LaCie/eclipse_2024/A013_SD016/20240409_064800.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 106996 1 2 Spectrogram 1 1 24.0 \n", - "1 106993 0 1 Spectrogram 1 1 39.0 \n", - "2 106997 0 1 Spectrogram 1 1 39.0 \n", - "3 106994 1 2 Spectrogram 1 1 48.0 \n", - "4 106998 1 2 Spectrogram 1 1 27.0 \n", - "5 106995 0 1 Spectrogram 1 1 6.0 \n", - "6 106992 1 2 Spectrogram 1 1 45.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 27.0 0 15000 Wood Duck wooduc \n", - "1 42.0 0 15000 Wood Duck wooduc \n", - "2 42.0 0 15000 Wood Duck wooduc \n", - "3 51.0 0 15000 Wood Duck wooduc \n", - "4 30.0 0 15000 Wood Duck wooduc \n", - "5 9.0 0 15000 Wood Duck wooduc \n", - "6 48.0 0 15000 Wood Duck wooduc \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9679 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "1 0.9461 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "2 0.8907 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "3 0.7681 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "4 0.7638 /Volumes/LaCie/eclipse_2024/A014_SD021/2024041... \n", - "5 0.7585 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "6 0.7578 /Volumes/LaCie/eclipse_2024/A014_SD021/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 24.0 A014_SD021 \n", - "1 39.0 A014_SD021 \n", - "2 39.0 A014_SD021 \n", - "3 48.0 A014_SD021 \n", - "4 27.0 A014_SD021 \n", - "5 6.0 A014_SD021 \n", - "6 45.0 A014_SD021 \n", - "/Volumes/LaCie/eclipse_2024/A014_SD021/20240406_191900.WAV\n", - " index Unnamed: 0 Selection View Channel Begin Time (s) \\\n", - "0 107039 2 3 Spectrogram 1 1 6.0 \n", - "1 107026 3 4 Spectrogram 1 1 30.0 \n", - "2 107027 2 3 Spectrogram 1 1 27.0 \n", - "3 107028 1 2 Spectrogram 1 1 24.0 \n", - "4 107023 1 2 Spectrogram 1 1 3.0 \n", - "5 107024 0 1 Spectrogram 1 1 0.0 \n", - "6 107048 2 3 Spectrogram 1 1 42.0 \n", - "7 107010 4 5 Spectrogram 1 1 30.0 \n", - "8 107055 0 1 Spectrogram 1 1 18.0 \n", - "9 107008 6 7 Spectrogram 1 1 36.0 \n", - "10 107038 1 2 Spectrogram 1 1 3.0 \n", - "11 107011 0 1 Spectrogram 1 1 24.0 \n", - "12 107017 0 1 Spectrogram 1 1 0.0 \n", - "13 107034 0 1 Spectrogram 1 1 51.0 \n", - "14 106999 4 5 Spectrogram 1 1 33.0 \n", - "15 107042 3 4 Spectrogram 1 1 9.0 \n", - "16 107044 4 5 Spectrogram 1 1 12.0 \n", - "17 107047 1 2 Spectrogram 1 1 39.0 \n", - "18 107015 2 3 Spectrogram 1 1 6.0 \n", - "19 107053 5 6 Spectrogram 1 1 51.0 \n", - "20 107050 1 2 Spectrogram 1 1 45.0 \n", - "21 107043 7 8 Spectrogram 1 1 48.0 \n", - "22 107013 3 4 Spectrogram 1 1 24.0 \n", - "23 107046 0 1 Spectrogram 1 1 36.0 \n", - "24 107012 6 7 Spectrogram 1 1 48.0 \n", - "25 107041 5 6 Spectrogram 1 1 15.0 \n", - "26 107014 2 3 Spectrogram 1 1 21.0 \n", - "27 107000 3 4 Spectrogram 1 1 18.0 \n", - "28 107022 2 3 Spectrogram 1 1 6.0 \n", - "29 107006 5 6 Spectrogram 1 1 45.0 \n", - "30 107004 6 7 Spectrogram 1 1 48.0 \n", - "31 107020 7 8 Spectrogram 1 1 51.0 \n", - "32 107001 0 1 Spectrogram 1 1 0.0 \n", - "33 107018 1 2 Spectrogram 1 1 36.0 \n", - "34 107032 2 3 Spectrogram 1 1 33.0 \n", - "35 107019 0 1 Spectrogram 1 1 27.0 \n", - "36 107037 0 1 Spectrogram 1 1 0.0 \n", - "37 107049 0 1 Spectrogram 1 1 33.0 \n", - "38 107035 5 6 Spectrogram 1 1 42.0 \n", - "39 107003 0 1 Spectrogram 1 1 3.0 \n", - "40 107021 0 1 Spectrogram 1 1 0.0 \n", - "41 107051 1 2 Spectrogram 1 1 48.0 \n", - "42 107002 0 1 Spectrogram 1 1 9.0 \n", - "43 107040 6 7 Spectrogram 1 1 33.0 \n", - "44 107052 0 1 Spectrogram 1 1 45.0 \n", - "45 107054 9 10 Spectrogram 1 1 42.0 \n", - "46 107007 0 1 Spectrogram 1 1 9.0 \n", - "47 107030 0 1 Spectrogram 1 1 30.0 \n", - "48 107036 6 7 Spectrogram 1 1 45.0 \n", - "49 107031 0 1 Spectrogram 1 1 27.0 \n", - "50 107016 1 2 Spectrogram 1 1 3.0 \n", - "51 107025 2 3 Spectrogram 1 1 45.0 \n", - "52 107009 5 6 Spectrogram 1 1 33.0 \n", - "53 107033 1 2 Spectrogram 1 1 30.0 \n", - "54 107029 0 1 Spectrogram 1 1 0.0 \n", - "55 107045 0 1 Spectrogram 1 1 0.0 \n", - "56 107005 7 8 Spectrogram 1 1 51.0 \n", - "\n", - " End Time (s) Low Freq (Hz) High Freq (Hz) Common Name Species Code \\\n", - "0 9.0 0 15000 Wood Duck wooduc \n", - "1 33.0 0 15000 Wood Duck wooduc \n", - "2 30.0 0 15000 Wood Duck wooduc \n", - "3 27.0 0 15000 Wood Duck wooduc \n", - "4 6.0 0 15000 Wood Duck wooduc \n", - "5 3.0 0 15000 Wood Duck wooduc \n", - "6 45.0 0 15000 Wood Duck wooduc \n", - "7 33.0 0 15000 Wood Duck wooduc \n", - "8 21.0 0 15000 Wood Duck wooduc \n", - "9 39.0 0 15000 Wood Duck wooduc \n", - "10 6.0 0 15000 Wood Duck wooduc \n", - "11 27.0 0 15000 Wood Duck wooduc \n", - "12 3.0 0 15000 Wood Duck wooduc \n", - "13 54.0 0 15000 Wood Duck wooduc \n", - "14 36.0 0 15000 Wood Duck wooduc \n", - "15 12.0 0 15000 Wood Duck wooduc \n", - "16 15.0 0 15000 Wood Duck wooduc \n", - "17 42.0 0 15000 Wood Duck wooduc \n", - "18 9.0 0 15000 Wood Duck wooduc \n", - "19 54.0 0 15000 Wood Duck wooduc \n", - "20 48.0 0 15000 Wood Duck wooduc \n", - "21 51.0 0 15000 Wood Duck wooduc \n", - "22 27.0 0 15000 Wood Duck wooduc \n", - "23 39.0 0 15000 Wood Duck wooduc \n", - "24 51.0 0 15000 Wood Duck wooduc \n", - "25 18.0 0 15000 Wood Duck wooduc \n", - "26 24.0 0 15000 Wood Duck wooduc \n", - "27 21.0 0 15000 Wood Duck wooduc \n", - "28 9.0 0 15000 Wood Duck wooduc \n", - "29 48.0 0 15000 Wood Duck wooduc \n", - "30 51.0 0 15000 Wood Duck wooduc \n", - "31 54.0 0 15000 Wood Duck wooduc \n", - "32 3.0 0 15000 Wood Duck wooduc \n", - "33 39.0 0 15000 Wood Duck wooduc \n", - "34 36.0 0 15000 Wood Duck wooduc \n", - "35 30.0 0 15000 Wood Duck wooduc \n", - "36 3.0 0 15000 Wood Duck wooduc \n", - "37 36.0 0 15000 Wood Duck wooduc \n", - "38 45.0 0 15000 Wood Duck wooduc \n", - "39 6.0 0 15000 Wood Duck wooduc \n", - "40 3.0 0 15000 Wood Duck wooduc \n", - "41 51.0 0 15000 Wood Duck wooduc \n", - "42 12.0 0 15000 Wood Duck wooduc \n", - "43 36.0 0 15000 Wood Duck wooduc \n", - "44 48.0 0 15000 Wood Duck wooduc \n", - "45 45.0 0 15000 Wood Duck wooduc \n", - "46 12.0 0 15000 Wood Duck wooduc \n", - "47 33.0 0 15000 Wood Duck wooduc \n", - "48 48.0 0 15000 Wood Duck wooduc \n", - "49 30.0 0 15000 Wood Duck wooduc \n", - "50 6.0 0 15000 Wood Duck wooduc \n", - "51 48.0 0 15000 Wood Duck wooduc \n", - "52 36.0 0 15000 Wood Duck wooduc \n", - "53 33.0 0 15000 Wood Duck wooduc \n", - "54 3.0 0 15000 Wood Duck wooduc \n", - "55 3.0 0 15000 Wood Duck wooduc \n", - "56 54.0 0 15000 Wood Duck wooduc \n", - "\n", - " Confidence Begin Path \\\n", - "0 0.9986 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "1 0.9983 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "2 0.9980 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "3 0.9956 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "4 0.9947 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "5 0.9884 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "6 0.9867 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "7 0.9846 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "8 0.9836 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "9 0.9817 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "10 0.9798 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "11 0.9798 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "12 0.9794 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "13 0.9755 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "14 0.9735 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "15 0.9695 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "16 0.9690 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "17 0.9610 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "18 0.9584 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "19 0.9487 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "20 0.9486 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "21 0.9404 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "22 0.9381 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "23 0.9372 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "24 0.9336 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "25 0.9316 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "26 0.9235 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "27 0.9231 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "28 0.9200 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "29 0.9167 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "30 0.9110 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "31 0.8925 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "32 0.8829 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "33 0.8743 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "34 0.8688 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "35 0.8671 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "36 0.8454 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "37 0.8449 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "38 0.8440 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "39 0.8267 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "40 0.8149 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "41 0.8057 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "42 0.8023 /Volumes/LaCie/eclipse_2024/A015_SD010/2024033... \n", - "43 0.7827 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "44 0.7822 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "45 0.7670 /Volumes/LaCie/eclipse_2024/A015_SD010/2024041... \n", - "46 0.7609 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "47 0.7501 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "48 0.7312 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "49 0.7306 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "50 0.7144 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "51 0.7130 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "52 0.7012 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "53 0.6989 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "54 0.6739 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "55 0.6635 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "56 0.6102 /Volumes/LaCie/eclipse_2024/A015_SD010/2024040... \n", - "\n", - " File Offset (s) deployment \n", - "0 6.0 A015_SD010 \n", - "1 30.0 A015_SD010 \n", - "2 27.0 A015_SD010 \n", - "3 24.0 A015_SD010 \n", - "4 3.0 A015_SD010 \n", - "5 0.0 A015_SD010 \n", - "6 42.0 A015_SD010 \n", - "7 30.0 A015_SD010 \n", - "8 18.0 A015_SD010 \n", - "9 36.0 A015_SD010 \n", - "10 3.0 A015_SD010 \n", - "11 24.0 A015_SD010 \n", - "12 0.0 A015_SD010 \n", - "13 51.0 A015_SD010 \n", - "14 33.0 A015_SD010 \n", - "15 9.0 A015_SD010 \n", - "16 12.0 A015_SD010 \n", - "17 39.0 A015_SD010 \n", - "18 6.0 A015_SD010 \n", - "19 51.0 A015_SD010 \n", - "20 45.0 A015_SD010 \n", - "21 48.0 A015_SD010 \n", - "22 24.0 A015_SD010 \n", - "23 36.0 A015_SD010 \n", - "24 48.0 A015_SD010 \n", - "25 15.0 A015_SD010 \n", - "26 21.0 A015_SD010 \n", - "27 18.0 A015_SD010 \n", - "28 6.0 A015_SD010 \n", - "29 45.0 A015_SD010 \n", - "30 48.0 A015_SD010 \n", - "31 51.0 A015_SD010 \n", - "32 0.0 A015_SD010 \n", - "33 36.0 A015_SD010 \n", - "34 33.0 A015_SD010 \n", - "35 27.0 A015_SD010 \n", - "36 0.0 A015_SD010 \n", - "37 33.0 A015_SD010 \n", - "38 42.0 A015_SD010 \n", - "39 3.0 A015_SD010 \n", - "40 0.0 A015_SD010 \n", - "41 48.0 A015_SD010 \n", - "42 9.0 A015_SD010 \n", - "43 33.0 A015_SD010 \n", - "44 45.0 A015_SD010 \n", - "45 42.0 A015_SD010 \n", - "46 9.0 A015_SD010 \n", - "47 30.0 A015_SD010 \n", - "48 45.0 A015_SD010 \n", - "49 27.0 A015_SD010 \n", - "50 3.0 A015_SD010 \n", - "51 45.0 A015_SD010 \n", - "52 33.0 A015_SD010 \n", - "53 30.0 A015_SD010 \n", - "54 0.0 A015_SD010 \n", - "55 0.0 A015_SD010 \n", - "56 51.0 A015_SD010 \n", - "/Volumes/LaCie/eclipse_2024/A015_SD010/20240408_065100.WAV\n" - ] - } - ], + "outputs": [], "source": [ - "import pandas as pd\n", - "# Let's pull some files for annotating \n", - "deployments = [\"A009_SD009\",\n", - "\"A013_SD016\"\n", - "\"A014_SD021\"\n", - "\"A015_SD010\"]\n", - "\n", - "concat_df = pd.read_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df.csv\")\n", - "# /Volumes/LaCie/eclipse_2024/A015_SD010/20240405_065100.WAV\n", - "\n", - "deployments = []\n", - "for i, row in concat_df.iterrows():\n", - " path = os.path.normpath(row[\"Begin Path\"])\n", - " deployment = path.split(os.sep)[4]\n", - " deployments.append(deployment)\n", - "concat_df[\"deployment\"] = deployments\n", - "concat_df.sort_values(['Common Name','deployment', 'Confidence'], inplace=True)\n", - "print(concat_df.head())\n", - "paths_to_copy = []\n", - "for common_name in [\"Canada Goose\", \"Trumpeter Swan\", \"Green-winged Teal\", \"Mallard\", \"Wood Duck\"]:\n", - " for deployment in [\"A009_SD009\", \"A010_SD014\", \"A013_SD016\", \"A014_SD021\", \"A015_SD010\"]:\n", - " df = concat_df[(concat_df[\"Common Name\"] == common_name) & (concat_df[\"deployment\"] == deployment)]\n", - " #print(df.head())\n", - " if not df.empty:\n", - " print(df.sort_values(by=\"Confidence\", ascending=False).reset_index())\n", - " high_confidence_path = df.sort_values(by=\"Confidence\", ascending=False).reset_index()[\"Begin Path\"][0]\n", - " print(high_confidence_path)\n", - " paths_to_copy.append(high_confidence_path)\n", - "with open(\"/Users/brettford/Downloads/paths_to_target_annotating.csv\", \"w\") as f:\n", - " for elem in paths_to_copy:\n", - " f.write(f\"{elem}\\n\")\n", - "# Now just loop through, sort by Common Name, Deployment, and Confidence and Store first row\n", - "\n", - "\n", - "concat_df.head()\n", - "\n", - "concat_df.to_csv(\"/Users/brettford/Downloads/concatenated_eclipse_birdnet_results_df_sorted.csv\", index=False)\n", - "# for deployment in deployments:" + "# \n", + "# from opensoundscape.metrics import predict_multi_target_labels\n", + "# predicted_labels = predict_multi_target_labels(scores)\n", + "# predicted_labels.head()" ] }, { "cell_type": "code", - "execution_count": 149, - "id": "b58fd9f8", + "execution_count": null, + "id": "ee9409f9", "metadata": {}, "outputs": [], "source": [ - "import os\n", - "import shutil\n", - "for file in paths_to_copy:\n", - " path = os.path.normpath(file)\n", - " shutil.copy(file, f\"/Volumes/LaCie/audio_files_to_annotate/target_samples/{path.split(os.sep)[4]}_{path.split(os.sep)[5]}\"\n", - " )" + "validation_df.head()" ] }, { "cell_type": "code", "execution_count": null, - "id": "40ae03a8", + "id": "20c1e6ed", "metadata": {}, "outputs": [], "source": [] @@ -4592,7 +3665,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.0" + "version": "3.10.16" } }, "nbformat": 4,