public void ConcatenateIndexFilesTestConfigFileChanges() { var indexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml"); var dateString = "20160726"; // get the default config file var defaultConfigFile = PathHelper.ResolveConfigFile("SpectrogramFalseColourConfig.yml"); var config = Yaml.Deserialize <LdSpectrogramConfig>(defaultConfigFile); // make changes to config file as required for test config.ColorMap1 = "BGN-ENT-PMN"; config.ColorMap2 = "ACI-RNG-EVN"; // write new config var testConfig = this.TestOutputDirectory.CombineFile("SpectrogramFalseColourConfig.yml"); Yaml.Serialize(testConfig, config); var arguments = new ConcatenateIndexFiles.Arguments { InputDataDirectories = new[] { indonesiaIndicesDirectory }, OutputDirectory = this.TestOutputDirectory, DirectoryFilter = "*.wav", FileStemName = "Test2_Indonesia", StartDate = new DateTimeOffset(2016, 07, 26, 0, 0, 0, TimeSpan.Zero), EndDate = new DateTimeOffset(2016, 07, 27, 0, 0, 0, TimeSpan.Zero), IndexPropertiesConfig = indexPropertiesConfig.FullName, FalseColourSpectrogramConfig = testConfig.FullName, ConcatenateEverythingYouCanLayYourHandsOn = false, // 24 hour blocks only TimeSpanOffsetHint = TimeSpan.FromHours(8), DrawImages = true, // following two lines can be used to add in a recognizer score track EventDataDirectories = null, EventFilePattern = null, }; ConcatenateIndexFiles.Execute(arguments); // Make sure files that match our config file are actually created! var outputDataDir = this.TestOutputDirectory.Combine(arguments.FileStemName, dateString); var prefix = arguments.FileStemName + "_" + dateString + "__"; Assert.That.FileExists(outputDataDir.CombineFile(prefix + "Towsey.Acoustic.Indices.csv")); Assert.That.FileNotExists(outputDataDir.CombineFile(prefix + "SummaryIndex.csv")); var imageFileInfo1 = outputDataDir.CombineFile(prefix + "BGN-ENT-PMN.png"); Assert.IsTrue(imageFileInfo1.Exists); var imageFileInfo2 = outputDataDir.CombineFile(prefix + "ACI-RNG-EVN.png"); Assert.IsTrue(imageFileInfo2.Exists); }
public void ConcatenateEverythingYouCanLayYourHandsOn() { // top level directory var indexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml"); var dateString = "20160725"; // get the default config file var testConfig = PathHelper.ResolveConfigFile("SpectrogramFalseColourConfig.yml"); var arguments = new ConcatenateIndexFiles.Arguments { InputDataDirectories = new[] { indonesiaIndicesDirectory }, OutputDirectory = this.TestOutputDirectory, DirectoryFilter = "*.wav", FileStemName = "Test1_Indonesia", StartDate = new DateTimeOffset(2016, 07, 25, 0, 0, 0, TimeSpan.Zero), EndDate = new DateTimeOffset(2016, 07, 25, 0, 0, 0, TimeSpan.Zero), IndexPropertiesConfig = indexPropertiesConfig.FullName, FalseColourSpectrogramConfig = testConfig.FullName, ColorMap1 = LDSpectrogramRGB.DefaultColorMap1, ColorMap2 = "BGN-PMN-EVN", ConcatenateEverythingYouCanLayYourHandsOn = true, // join everything found TimeSpanOffsetHint = TimeSpan.FromHours(8), DrawImages = true, // following two lines can be used to add in a recognizer score track EventDataDirectories = null, EventFilePattern = null, }; ConcatenateIndexFiles.Execute(arguments); // Do TESTS on the 2Maps image // Compare image files - check that image dimensions are correct var outputDataDir = this.TestOutputDirectory.Combine(arguments.FileStemName, dateString); var prefix = arguments.FileStemName + "__"; var imageFileInfo = outputDataDir.CombineFile(prefix + "2Maps.png"); Assert.IsTrue(imageFileInfo.Exists); Assert.That.FileExists(outputDataDir.CombineFile(prefix + "Towsey.Acoustic.Indices.csv")); Assert.That.FileNotExists(outputDataDir.CombineFile(prefix + "SummaryIndex.csv")); var actualImage = Image.Load <Rgb24>(imageFileInfo.FullName); Assert.That.ImageIsSize(722, 632, actualImage); Assert.That.PixelIsColor(new Point(100, 100), Color.FromRgb(211, 211, 211), actualImage); Assert.That.PixelIsColor(new Point(200, 125), Color.FromRgb(60, 44, 203), actualImage); Assert.That.PixelIsColor(new Point(675, 600), Color.FromRgb(255, 105, 180), actualImage); }
public void ConcatenateIndexFilesTest24Hour() { // top level directory var indexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml"); var dateString = "20160726"; // get the default config file var testConfig = PathHelper.ResolveConfigFile("SpectrogramFalseColourConfig.yml"); var arguments = new ConcatenateIndexFiles.Arguments { InputDataDirectories = new[] { indonesiaIndicesDirectory }, OutputDirectory = this.outputDirectory, DirectoryFilter = "*.wav", FileStemName = "Test2_Indonesia", StartDate = new DateTimeOffset(2016, 07, 26, 0, 0, 0, TimeSpan.Zero), EndDate = new DateTimeOffset(2016, 07, 27, 0, 0, 0, TimeSpan.Zero), IndexPropertiesConfig = indexPropertiesConfig.FullName, FalseColourSpectrogramConfig = testConfig.FullName, ColorMap1 = LDSpectrogramRGB.DefaultColorMap1, ColorMap2 = "BGN-PMN-EVN", ConcatenateEverythingYouCanLayYourHandsOn = false, // 24 hour blocks only TimeSpanOffsetHint = TimeSpan.FromHours(8), DrawImages = true, // following two lines can be used to add in a recognizer score track EventDataDirectories = null, EventFilePattern = null, }; ConcatenateIndexFiles.Execute(arguments); // Do TESTS on the 2Maps image // Compare image files - check that image dimensions are correct var outputDataDir = this.outputDirectory.Combine(arguments.FileStemName, dateString); var prefix = arguments.FileStemName + "_" + dateString + "__"; var imageFileInfo = outputDataDir.CombineFile(prefix + "2Maps.png"); Assert.IsTrue(imageFileInfo.Exists); Assert.That.FileExists(outputDataDir.CombineFile(prefix + "Towsey.Acoustic.Indices.csv")); Assert.That.FileNotExists(outputDataDir.CombineFile(prefix + "SummaryIndex.csv")); var actualImage = ImageTools.ReadImage2Bitmap(imageFileInfo.FullName); // we expect only the second half (past midnight) of the image to be rendered Assert.That.ImageIsSize(512, 632, actualImage); Assert.That.PixelIsColor(new Point(105, 154), Color.FromArgb(34, 30, 126), actualImage); Assert.That.PixelIsColor(new Point(100, 160), Color.FromArgb(8, 28, 64), actualImage); }
public void SampledDataConcatModeTests(ConcatMode gapRendering, int[] expectedWidths) { const string ark01 = "Ark01"; var arguments = new ConcatenateIndexFiles.Arguments { InputDataDirectories = new[] { newZealandArk01IndicesDirectory }, OutputDirectory = this.TestOutputDirectory, DirectoryFilter = "*.wav", FileStemName = ark01, StartDate = null, EndDate = null, IndexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml").FullName, FalseColourSpectrogramConfig = PathHelper.ResolveConfigFile("SpectrogramFalseColourConfig.yml").FullName, ColorMap1 = null, ColorMap2 = null, ConcatenateEverythingYouCanLayYourHandsOn = false, GapRendering = gapRendering, TimeSpanOffsetHint = TimeSpan.FromHours(12), DrawImages = true, }; ConcatenateIndexFiles.Execute(arguments); var dateStrings = new[] { "20161209", "20161210", "20161211" }.Zip(expectedWidths, ValueTuple.Create); foreach (var(dateString, expectedWidth) in dateStrings) { var prefix = Path.Combine(this.TestOutputDirectory.FullName, ark01, dateString, ark01 + "_" + dateString + "__"); Assert.That.PathExists(prefix + "Towsey.Acoustic.Indices.csv"); Assert.That.PathNotExists(prefix + "SummaryIndex.csv"); var imagePath = prefix + "2Maps.png"; Assert.That.FileExists(imagePath); var actualImage = Image.Load <Rgb24>(imagePath); Assert.That.ImageIsSize(expectedWidth, 632, actualImage); // target region for each image: 40, 254, 20,20 switch (gapRendering) { case ConcatMode.TimedGaps: // for timed gap, first column has content, other 19 don't and should be gray (missing data) Assert.That.ImageRegionIsColor( new Rectangle(40 + 1, 254, 20 - 1, 20), Color.LightGray, actualImage, 0.001); break; case ConcatMode.NoGaps: // There should basically be no pattern here var histogram = ImageTools.GetColorHistogramNormalized( actualImage, new Rectangle(40, 254, 20, 20)); // should not have empty space var hasGray = histogram.TryGetValue(Color.LightGray, out var grayPercentage); Assert.IsTrue(!hasGray || grayPercentage < 0.01); // the rest of the values should be well distributed (not a perfect test) Assert.That.ImageColorsWellDistributed( actualImage, allowedError: 0.1, colorHistogram: histogram); break; case ConcatMode.EchoGaps: // The first column should be repeated 19 times Assert.That.ImageRegionIsRepeatedHorizontally( new Rectangle(40, 254, 1, 20), 19, 1, actualImage); break; default: throw new ArgumentOutOfRangeException(nameof(gapRendering), gapRendering, null); } } }
public void ConcatenateIndexFilesTest24HourWithoutDateRange() { var indexPropertiesConfig = PathHelper.ResolveConfigFile("IndexPropertiesConfig.yml"); // get the default config file var testConfig = PathHelper.ResolveConfigFile("SpectrogramFalseColourConfig.yml"); var arguments = new ConcatenateIndexFiles.Arguments { InputDataDirectories = new[] { indonesiaIndicesDirectory }, OutputDirectory = this.TestOutputDirectory, DirectoryFilter = "*.wav", FileStemName = "Test3_Indonesia", StartDate = null, EndDate = null, IndexPropertiesConfig = indexPropertiesConfig.FullName, FalseColourSpectrogramConfig = testConfig.FullName, ColorMap1 = LDSpectrogramRGB.DefaultColorMap1, ColorMap2 = "BGN-PMN-EVN", ConcatenateEverythingYouCanLayYourHandsOn = false, // 24 hour blocks only TimeSpanOffsetHint = TimeSpan.FromHours(8), DrawImages = true, // following two lines can be used to add in a recognizer score track EventDataDirectories = null, EventFilePattern = null, }; ConcatenateIndexFiles.Execute(arguments); // There should be two sets of output images one for each partial day. // IMAGE 1: Compare image files - check that image exists and dimensions are correct var dateString1 = "20160725"; var outputDataDir1 = this.TestOutputDirectory.Combine(arguments.FileStemName, dateString1); var prefix1 = arguments.FileStemName + "_" + dateString1 + "__"; var image1FileInfo = outputDataDir1.CombineFile(prefix1 + "2Maps.png"); Assert.IsTrue(image1FileInfo.Exists); Assert.That.FileExists(outputDataDir1.CombineFile(prefix1 + "Towsey.Acoustic.Indices.csv")); Assert.That.FileNotExists(outputDataDir1.CombineFile(prefix1 + "SummaryIndex.csv")); var actualImage1 = Image.Load <Rgb24>(image1FileInfo.FullName); Assert.That.ImageIsSize(210, 632, actualImage1); Assert.That.PixelIsColor(new Point(100, 100), Color.FromRgb(211, 211, 211), actualImage1); Assert.That.PixelIsColor(new Point(50, 50), Color.FromRgb(86, 27, 8), actualImage1); // IMAGE 2: Compare image files - check that image exists and dimensions are correct var dateString2 = "20160726"; var outputDataDir2 = this.TestOutputDirectory.Combine(arguments.FileStemName, dateString2); var prefix2 = arguments.FileStemName + "_" + dateString2 + "__"; var image2FileInfo = outputDataDir2.CombineFile(prefix2 + "2Maps.png"); Assert.IsTrue(image2FileInfo.Exists); Assert.That.FileExists(outputDataDir2.CombineFile(prefix2 + "Towsey.Acoustic.Indices.csv")); Assert.That.FileNotExists(outputDataDir2.CombineFile(prefix2 + "SummaryIndex.csv")); var actualImage2 = Image.Load <Rgb24>(image2FileInfo.FullName); Assert.That.ImageIsSize(512, 632, actualImage2); Assert.That.PixelIsColor(new Point(50, 124), Color.FromRgb(70, 37, 255), actualImage2); Assert.That.PixelIsColor(new Point(460, 600), Color.FromRgb(255, 105, 180), actualImage2); }