deployment_file = r'C:\Users\xavier.mouy\Documents\PhD\Projects\Dectector\datasets\UVIC_mill-bay_2019\deployment_info.csv' data_dir = r'C:\Users\xavier.mouy\Documents\PhD\Projects\Dectector\datasets\UVIC_mill-bay_2019\audio_data' # load meta data operator_name = platform.uname().node dep_info = DeploymentInfo() dep_info.read(deployment_file) #list files files = ecosound.core.tools.list_files(indir, ext, recursive=False, case_sensitive=True) for idx, file in enumerate(files): print(str(idx) + r'/' + str(len(files)) + ': ' + file) meas = Measurement() meas.from_netcdf(file) meas.insert_metadata(deployment_file) file_name = os.path.splitext(os.path.basename(file))[0] meas.insert_values( operator_name=platform.uname().node, audio_file_name=os.path.splitext(os.path.basename(file_name))[0], audio_file_dir=data_dir, audio_file_extension='.wav', audio_file_start_date=ecosound.core.tools.filename_to_datetime( file_name)[0]) meas.to_netcdf(os.path.join(outdir, file_name + '.nc'))
""" # Define input and output files annot_file = r'C:\Users\xavier.mouy\Documents\PhD\Projects\Dectector\results\dataset_annotations_only.nc' noise_file = r'C:\Users\xavier.mouy\Documents\PhD\Projects\Dectector\results\Noise_dataset' outfile=r'C:\Users\xavier.mouy\Documents\PhD\Projects\Dectector\results\dataset_FS-NN_modified_20201105145300.nc' # Load measurements meas_annot = Measurement() meas_annot.from_netcdf(annot_file) meas_noise = Measurement() meas_noise.from_netcdf(noise_file) ## Label noise measurement as 'NN' meas_noise.insert_values(label_class='NN') print(meas_noise.summary()) ## relabel annotations that are not 'FS' as 'NN' print(meas_annot.summary()) meas_annot.data['label_class'].replace(to_replace=['', 'ANT','HS','KW','UN'], value='NN', inplace=True) print(meas_annot.summary()) ## merge the 2 datasets meas_NN_FS = meas_noise + meas_annot print(meas_NN_FS.summary()) ## Save dataset to nc file meas_NN_FS.to_netcdf(outfile)
min_threshold = 0.7 noise_label = 'NN' # load names of file and start/stop times where false alarms have been manually # identified df = pd.read_excel(xls_file, header=None) for idx in range(0, len(df)): # file name to load wav_file_name = df[0][idx] tmin_sec = df[1][idx] tmax_sec = df[2][idx] print(wav_file_name, tmin_sec, tmax_sec) detec_file_path = os.path.join(in_dir, wav_file_name + '.nc') # load detection/measurement file meas = Measurement() meas.from_netcdf(detec_file_path) data_df = meas.data # Only keep fish detections above the given confidence threshold and times data_df_filt = data_df[(data_df.label_class == fish_label) & (data_df.confidence >= min_threshold) & (data_df.time_min_offset >= tmin_sec) & (data_df.time_max_offset <= tmax_sec)] data_df_filt.reset_index(inplace=True, drop=True) meas.data = data_df_filt # Change fish labels to noise labels meas.insert_values(label_class=noise_label) # Save to new nc file meas.to_netcdf(os.path.join(out_dir, wav_file_name + str(idx))) print('done')