コード例 #1
0
        public void TestGenerateTilesFailsWithInvalidScales()
        {
            PathHelper.ResolveConfigFile("IndexPropertiesConfig.Zooming.yml").CopyTo(this.outputDirectory.CombineFile("IndexPropertiesConfig.Zooming.yml").FullName);

            void SetupAndRun(params double[] scales)
            {
                SpectrogramZoomingConfig config = new SpectrogramZoomingConfig();

                config.SpectralIndexScale    = scales;
                config.IndexPropertiesConfig = ".\\IndexPropertiesConfig.Zooming.yml";

                var newConfigFile = this.outputDirectory.CombineFile("SpectrogramZoomingConfig.yml");

                Yaml.Serialize(newConfigFile, config);

                // generate the zooming spectrograms
                DrawZoomingSpectrograms.Execute(
                    new DrawZoomingSpectrograms.Arguments()
                {
                    Output                   = this.outputDirectory.FullName,
                    SourceDirectory          = ResultsDirectory.FullName,
                    SpectrogramZoomingConfig = newConfigFile.FullName,
                    ZoomAction               = DrawZoomingSpectrograms.Arguments.ZoomActionType.Tile,
                });
            }

            Assert.ThrowsException <InvalidScaleException>(() => SetupAndRun(0.125));
            Assert.ThrowsException <InvalidScaleException>(() => SetupAndRun(-3));
            Assert.ThrowsException <InvalidScaleException>(() => SetupAndRun(0));
            Assert.ThrowsException <InvalidScaleException>(() => SetupAndRun(0.01));
            Assert.ThrowsException <InvalidScaleException>(() => SetupAndRun(13.33));
        }
コード例 #2
0
        public static List <double[]> ReadFrameData(DirectoryInfo dataDir, string fileStem, TimeSpan startTime, TimeSpan maxDuration, SpectrogramZoomingConfig zoomingConfig, TimeSpan indexGenerationSegmentDuration)
        {
            TimeSpan endTime     = startTime + maxDuration;
            int      startMinute = (int)Math.Floor(startTime.TotalMinutes);
            int      endMinute   = (int)Math.Ceiling(endTime.TotalMinutes);

            int expectedDataDurationInSeconds = (int)indexGenerationSegmentDuration.TotalSeconds;
            int expectedFrameCount            = (int)Math.Round(expectedDataDurationInSeconds / zoomingConfig.SpectralFrameDuration);

            string name            = fileStem + "_" + startMinute + "min.csv";
            string csvPath         = Path.Combine(dataDir.FullName, name);
            bool   skipHeader      = true;
            bool   skipFirstColumn = true;

            List <double[]> frameData = CsvTools.ReadCSVFileOfDoubles(csvPath, skipHeader, skipFirstColumn);

            ZoomTiledSpectrograms.PadEndOfListOfFrames(frameData, expectedFrameCount);
            for (int i = startMinute + 1; i < endMinute; i++)
            {
                name    = fileStem + "_" + i + "min.csv";
                csvPath = Path.Combine(dataDir.FullName, name);

                List <double[]> data = CsvTools.ReadCSVFileOfDoubles(csvPath, skipHeader, skipFirstColumn);
                ZoomTiledSpectrograms.PadEndOfListOfFrames(data, expectedFrameCount);

                frameData.AddRange(data);
            }

            return(frameData);
        }