} // HiRes1() /// <summary> /// HERVE GLOTIN: This is used to analyse the BIRD50 data set. /// Draws HIres spectrogram images AFTER indices have been calculated. /// This method does NOT produce acoustic indices. /// That is, only call this method if hires1() has already been used to produce the indices. /// </summary> public static void HiRes2() { string histoDir = @"C:\SensorNetworks\Output\BIRD50"; string histoPath = Path.Combine(histoDir, "TrainingRecordingDurations.png"); //string histoPath = Path.Combine(histoDir, "TestingRecordingDurations.png"); // set up histogram of recording durations int histogramWidth = 600; // equivalent to ten minutes at 0.1 second resolution int[] recordingDurations = new int[histogramWidth]; // set up IP and OP directories string inputDir = @"C:\SensorNetworks\Output\BIRD50\Training"; string imageOutputDir = @"C:\SensorNetworks\Output\BIRD50\TrainingImages"; //string imageOutputDir = @"C:\SensorNetworks\Output\BIRD50\TestingRidgeImages"; string indexPropertiesConfig = @"C:\Work\GitHub\audio-analysis\AudioAnalysis\AnalysisConfigFiles\IndexPropertiesConfigHiRes.yml"; // comment next two lines when debugging a single recording file var inputDirInfo = new DirectoryInfo(inputDir); //string match = @"*.wav"; //DirectoryInfo[] directories = inputDirInfo.GetDirectories(match, SearchOption.AllDirectories); DirectoryInfo[] directories = inputDirInfo.GetDirectories(); int count = directories.Length; //count = 3; //string fileStem = "ID0003"; //\ID0001\Towsey.Acoustic\ string fileStemFormatString = "ID{0:d4}"; // for training files //string fileStemFormatString = "ID1{0:d3}"; // for testing files for (int i = 0; i < count; i++) { string fileStem = string.Format(fileStemFormatString, i + 1); string dataDir = directories[i].FullName + @"\Towsey.Acoustic\"; var ldfcSpectrogramArguments = new DrawLongDurationSpectrograms.Arguments { // use the default set of index properties in the AnalysisConfig directory. InputDataDirectory = dataDir, OutputDirectory = imageOutputDir, IndexPropertiesConfig = indexPropertiesConfig, }; // there are two possible tasks // 1: draw the aggregated grey scale spectrograms int secDuration = DrawLongDurationSpectrograms.DrawAggregatedSpectrograms(ldfcSpectrogramArguments, fileStem); // 2: draw the coloured ridge spectrograms DrawLongDurationSpectrograms.DrawRidgeSpectrograms(ldfcSpectrogramArguments, fileStem); if (secDuration >= recordingDurations.Length) { secDuration = recordingDurations.Length - 1; } recordingDurations[secDuration]++; } string title = "Recording Duration: Width = " + histogramWidth + "secs"; Image histoImage = GraphsAndCharts.DrawHistogram(title, recordingDurations, 95, null, histogramWidth, 50); histoImage.Save(histoPath); } // HiRes2() produces spectrogram images