From 7b155fcb84e138b1a825eef02da045e371908956 Mon Sep 17 00:00:00 2001 From: towsey Date: Fri, 15 May 2020 13:04:06 +1000 Subject: [PATCH] Finished work on the Aust Bittern tests Issue #319 --- .../Towsey.BotaurusPoiciloptilus.yml | 2 +- .../Recognizers/AustBitternTests.cs | 77 +++++++++++++++++++ ...e_2-2_1831_471228_20161217_232352_30_0.wav | 3 + 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 tests/Acoustics.Test/AnalysisPrograms/Recognizers/AustBitternTests.cs create mode 100644 tests/Fixtures/Recordings/medeas_cove_2-2_1831_471228_20161217_232352_30_0.wav diff --git a/src/AnalysisConfigFiles/RecognizerConfigFiles/Towsey.BotaurusPoiciloptilus.yml b/src/AnalysisConfigFiles/RecognizerConfigFiles/Towsey.BotaurusPoiciloptilus.yml index e60af468b..240d05c30 100644 --- a/src/AnalysisConfigFiles/RecognizerConfigFiles/Towsey.BotaurusPoiciloptilus.yml +++ b/src/AnalysisConfigFiles/RecognizerConfigFiles/Towsey.BotaurusPoiciloptilus.yml @@ -20,7 +20,7 @@ Profiles: # min and max of the freq band to search MinHertz: 100 MaxHertz: 200 - MinDuration: 0.2 + MinDuration: 0.3 MaxDuration: 1.0 DecibelThreshold: 3.0 diff --git a/tests/Acoustics.Test/AnalysisPrograms/Recognizers/AustBitternTests.cs b/tests/Acoustics.Test/AnalysisPrograms/Recognizers/AustBitternTests.cs new file mode 100644 index 000000000..0588577e7 --- /dev/null +++ b/tests/Acoustics.Test/AnalysisPrograms/Recognizers/AustBitternTests.cs @@ -0,0 +1,77 @@ +// +// All code in this file and all associated files are the copyright and property of the QUT Ecoacoustics Research Group (formerly MQUTeR, and formerly QUT Bioacoustics Research Group). +// + +namespace Acoustics.Test.AnalysisPrograms.Recognizers +{ + using System; + using System.IO; + using Acoustics.Test.TestHelpers; + using global::AnalysisPrograms.Recognizers; + using global::AudioAnalysisTools.Events.Types; + using global::AudioAnalysisTools.WavTools; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + /// + /// Species name = Australasian Bittern = Botaurus poiciloptilus. + /// Recognizer class = BotaurusPoiciloptilus.cs. + /// + [TestClass] + public class AustBitternTests : OutputDirectoryTest + { + /// + /// The canonical recording used for this recognizer is a 30 second recording made by Liz Znidersic at Medeas Cove, St Helens, 2016-12-17. + /// + private static readonly FileInfo TestAsset = PathHelper.ResolveAsset("Recordings", "medeas_cove_2-2_1831_471228_20161217_232352_30_0.wav"); + private static readonly FileInfo ConfigFile = PathHelper.ResolveConfigFile("RecognizerConfigFiles", "Towsey.BotaurusPoiciloptilus.yml"); + private static readonly BotaurusPoiciloptilus Recognizer = new BotaurusPoiciloptilus(); + + //NOTE: If testing recording at its original sample-rate, then use line below. + //private static readonly AudioRecording Recording = new AudioRecording(TestAsset); + + // If needing to resample, then must call AudioRecording.GetAudioRecording(TestAsset, resampleRate, opDir, opFileName); + // as in the TestRecognizer() method below. + + [TestMethod] + public void TestRecognizer() + { + var config = Recognizer.ParseConfig(ConfigFile); + int resampleRate = config.ResampleRate.Value; + string opDir = this.TestOutputDirectory.FullName; + string opFileName = "tempFile"; + var recording = AudioRecording.GetAudioRecording(TestAsset, resampleRate, opDir, opFileName); + + var results = Recognizer.Recognize( + audioRecording: recording, + config: config, + segmentStartOffset: TimeSpan.Zero, + getSpectralIndexes: null, + outputDirectory: this.TestOutputDirectory, + imageWidth: null); + + var events = results.NewEvents; + var scoreTrack = results.ScoreTrack; + var plots = results.Plots; + var sonogram = results.Sonogram; + + this.SaveTestOutput( + outputDirectory => GenericRecognizer.SaveDebugSpectrogram(results, null, outputDirectory, Recognizer.SpeciesName)); + + Assert.AreEqual(1, events.Count); + Assert.IsNull(scoreTrack); + Assert.AreEqual(1, plots.Count); + Assert.AreEqual(938, sonogram.FrameCount); + + Assert.IsInstanceOfType(events[0], typeof(CompositeEvent)); + + var onlyEvent = (CompositeEvent)events[0]; + + Assert.AreEqual(5.12, onlyEvent.EventStartSeconds, 0.05); + Assert.AreEqual(12.26, onlyEvent.EventEndSeconds, 0.05); + Assert.AreEqual(105, onlyEvent.LowFrequencyHertz); + Assert.AreEqual(180, onlyEvent.HighFrequencyHertz); + Assert.AreEqual(21.7, onlyEvent.Score, 0.05); + Assert.AreEqual(0.95, onlyEvent.ScoreNormalized, 0.05); + } + } +} \ No newline at end of file diff --git a/tests/Fixtures/Recordings/medeas_cove_2-2_1831_471228_20161217_232352_30_0.wav b/tests/Fixtures/Recordings/medeas_cove_2-2_1831_471228_20161217_232352_30_0.wav new file mode 100644 index 000000000..dd3135184 --- /dev/null +++ b/tests/Fixtures/Recordings/medeas_cove_2-2_1831_471228_20161217_232352_30_0.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04db37474bc0fb0fb15fab8489e4f3d5fa5050f3ab95fbe467ad01947f635ed2 +size 1442454