From 72aab48d1488622e535d147de521512691102a5a Mon Sep 17 00:00:00 2001 From: Anthony Truskinger Date: Tue, 13 Feb 2018 01:52:38 +1000 Subject: [PATCH] [WIP] Removing dynamic yaml This commit is the bulk of the work required to remove DynamicYaml configuration and replace it with an extendable generic config file, which can also be used for static typing. Note, build fails, tests fail. More work needed. Note, nuget also needed to a package reinstall. It looks like the stylecop analyzers might be broken. By Adding a `Parse` method to the `IAnalyser2` interface we can allow for analyzers to parse their own config files to static classes :grinning:. However, this means the way we resolve Analyses by identifiers has changed and is now dependent on either an explicit argument, or the first two sections (separated by a period) of a config file name. This work was done for https://github.com/QutEcoacoustics/audio-analysis/issues/119 --- NuGet.Config | 1 + src/AED/AED.fsproj | 8 +- src/AED/packages.config | 22 +- .../Acoustics.Shared.FSharp.fsproj | 66 +-- src/Acoustics.Shared.FSharp/packages.config | 34 +- src/Acoustics.Shared/Acoustics.Shared.csproj | 40 +- src/Acoustics.Shared/AppConfigHelper.cs | 41 +- src/Acoustics.Shared/ConfigFile/Config.cs | 396 ++++++++++++++++++ .../ConfigFile/ConfigFile.Profiles.cs | 77 ++++ src/Acoustics.Shared/ConfigFile/ConfigFile.cs | 167 ++++---- src/Acoustics.Shared/ConfigFile/IProfile.cs | 13 + .../Extensions/ReflectionExtensions.cs | 13 +- src/Acoustics.Shared/Logging/LoggedConsole.cs | 8 +- .../Properties/AssemblyInfo.cs | 2 + src/Acoustics.Shared/Yaml.cs | 95 ++--- src/Acoustics.Unsafe/Acoustics.Unsafe.csproj | 6 +- src/Acoustics.Unsafe/packages.config | 6 +- src/AnalysisBase/AbstractStrongAnalyser.cs | 8 + src/AnalysisBase/AnalysisBase.csproj | 5 + src/AnalysisBase/AnalysisCoordinator.cs | 7 +- src/AnalysisBase/AnalysisSettings.cs | 3 +- src/AnalysisBase/AnalyzerConfig.cs | 68 +++ src/AnalysisBase/IAnalyser2.cs | 11 +- .../Ecosounds.StandardizedFeatures.yml | 4 +- .../Italy.Acoustic.Parallel.yml | 4 +- src/AnalysisConfigFiles/Mangalam.Sonogram.yml | 4 +- .../Ecosounds.MultiRecognizer.yml | 4 +- .../EcosoundsFW.MultiRecognizer.yml | 4 +- .../Stark.CriniaTinnula.yml | 4 +- .../Stark.LitoriaFreycineti.yml | 4 +- .../Stark.LitoriaOlong.yml | 4 +- .../Towsey.ArdeaInsignis.yml | 4 +- .../Towsey.CriniaRemota.yml | 4 +- .../Towsey.CycloranaNovaehollandiae.yml | 4 +- .../Towsey.Frogs.OBSOLETE.yml | 4 +- .../Towsey.IctalurusFurcatus.yml | 4 +- .../Towsey.LewiniaPectoralis.yml | 4 +- .../Towsey.LitoriaBicolor.yml | 4 +- .../Towsey.LitoriaCaerulea.yml | 4 +- .../Towsey.LitoriaFallax.yml | 4 +- .../Towsey.LitoriaInermis.yml | 4 +- .../Towsey.LitoriaMicrobelos.yml | 4 +- .../Towsey.LitoriaNasuta.yml | 4 +- .../Towsey.LitoriaNasutaOLD.yml | 4 +- .../Towsey.LitoriaPallida.yml | 4 +- .../Towsey.LitoriaRothii.yml | 4 +- .../Towsey.LitoriaRubella.yml | 4 +- .../Towsey.LitoriaWatjulumOLD.yml | 4 +- .../Towsey.LitoriaWatjulumensis.yml | 4 +- .../Towsey.RheobatrachusSilus.yml | 4 +- .../Towsey.RhinellaMarina.yml | 4 +- .../Towsey.UperoleiaMimula.yml | 4 +- .../Truskinger.ExempliGratia.yml | 4 +- .../Towsey.Acoustic.Zooming.yml | 4 +- src/AnalysisConfigFiles/Towsey.Acoustic.yml | 4 +- .../Towsey.AcousticMarine.yml | 4 +- .../Towsey.ChannelIntegrity.yml | 4 +- src/AnalysisConfigFiles/Towsey.Crow.yml | 4 +- src/AnalysisConfigFiles/Towsey.Default.yml | 4 +- src/AnalysisConfigFiles/Towsey.Grids.yml | 4 +- src/AnalysisConfigFiles/Towsey.Human.yml | 4 +- src/AnalysisConfigFiles/Towsey.LSKiwi2.yml | 2 +- src/AnalysisConfigFiles/Towsey.LSKiwi3.yml | 2 +- src/AnalysisConfigFiles/Towsey.Machine.yml | 4 +- src/AnalysisConfigFiles/Towsey.Rain.yml | 4 +- src/AnalysisConfigFiles/Towsey.Sonogram.yml | 4 +- .../Towsey.SonogramMarine.yml | 4 +- src/AnalysisPrograms/AED.cs | 42 +- src/AnalysisPrograms/AcousticIndices.cs | 234 ++++------- .../AnalyseLongRecording.cs | 197 +++++---- .../AnalyseLongRecordings.Arguments.cs | 3 + src/AnalysisPrograms/AnalysesAvailable.cs | 5 +- src/AnalysisPrograms/AnalysisPrograms.csproj | 51 ++- src/AnalysisPrograms/App.config | 10 +- src/AnalysisPrograms/Audio2InputForConvCNN.cs | 23 +- src/AnalysisPrograms/Audio2Sonogram.cs | 42 +- src/AnalysisPrograms/Create4Sonograms.cs | 30 +- src/AnalysisPrograms/DifferenceSpectrogram.cs | 10 +- .../EventStatisticsAnalysis.cs | 6 + .../EventStatistics/EventStatisticsEntry.cs | 8 +- .../GroundParrotRecogniser.cs | 15 +- src/AnalysisPrograms/KoalaMale.cs | 2 +- src/AnalysisPrograms/OscillationsGeneric.cs | 15 +- .../SourceConfigOutputDirArguments.cs | 6 +- src/AnalysisPrograms/Production/Exceptions.cs | 9 +- .../Recognizers/ArdeaInsignis.cs | 22 +- .../Recognizers/Base/IEventRecognizer.cs | 59 +-- .../Recognizers/Base/MultiRecognizer.cs | 33 +- .../Recognizers/Base/RecognizerBase.cs | 109 ++--- .../Recognizers/Base/RecognizerEntry.cs | 25 +- .../Recognizers/CriniaRemota.cs | 44 +- .../Recognizers/CriniaTinnula_OBSOLETE.cs | 2 +- .../Recognizers/CycloranaNovaehollandiae.cs | 29 +- .../Recognizers/ExempliGratia.cs | 36 +- .../Recognizers/IctalurusFurcatus.cs | 8 +- .../Recognizers/LewiniaPectoralis.cs | 37 +- .../Recognizers/LimnodynastesConvex.cs | 22 +- .../Recognizers/LitoriaBicolor.cs | 33 +- .../Recognizers/LitoriaCaerulea.cs | 47 ++- .../Recognizers/LitoriaFallax.cs | 25 +- .../Recognizers/LitoriaFreycineti.cs | 21 +- .../Recognizers/LitoriaNasuta.cs | 42 +- .../Recognizers/LitoriaNasutaOLD.cs | 19 +- .../Recognizers/LitoriaOlong.cs | 27 +- .../Recognizers/LitoriaPallida.cs | 27 +- .../Recognizers/LitoriaRothii.cs | 28 +- .../Recognizers/LitoriaRubella.cs | 28 +- .../Recognizers/LitoriaWatjulumensis.cs | 46 +- .../Recognizers/PlatyplectrumOrnatum.cs | 24 +- .../Recognizers/RhinellaMarina.cs | 23 +- .../Recognizers/Tinnula_TRY.cs | 18 +- .../Recognizers/UperoleiaInundata.cs | 21 +- .../Recognizers/UperoleiaLithomoda.cs | 25 +- .../Recognizers/UperoleiaMimula.cs | 21 +- src/AnalysisPrograms/SURFAnalysis.cs | 24 +- src/AnalysisPrograms/SnrAnalysis.cs | 35 +- .../StandardizedFeatureExtraction.cs | 32 +- .../StandardizedFeatureExtractionConfig.cs | 37 +- src/AnalysisPrograms/packages.config | 30 +- src/AudioAnalysisTools/AnalysisKeys.cs | 1 + .../AudioAnalysisTools.csproj | 10 +- src/AudioAnalysisTools/DSP/FrequencyScale.cs | 15 +- src/AudioAnalysisTools/DSP/SNR.cs | 6 +- .../EventStatisticsConfiguration.cs | 4 +- .../Indices/IndexCalculate.cs | 9 +- .../Indices/IndexCalculateConfig.cs | 175 ++++---- .../Indices/IndexProperties.cs | 48 ++- .../LDSpectrogram3D.cs | 13 +- .../LDSpectrogramConfig.cs | 2 +- .../LDSpectrogramConfigOfJie.cs | 216 ---------- .../LDSpectrogramDifference.cs | 27 +- .../LDSpectrogramDistance.cs | 29 +- .../LDSpectrogramTStatistic.cs | 44 +- .../Zooming/SpectrogramZoomingConfig.cs | 25 +- .../Zooming/ZoomFocusedSpectrograms.cs | 20 +- .../Zooming/ZoomParameters.cs | 13 +- .../Zooming/ZoomTiledSpectrograms.cs | 2 +- src/AudioAnalysisTools/Oscillations2014.cs | 14 +- src/TowseyLibrary/TowseyLibrary.csproj | 25 +- tests/AED.Test/AED.Test.fsproj | 28 +- tests/Acoustics.Test/Acoustics.Test.csproj | 84 ++-- .../TestAnalyzeLongRecording.cs | 10 +- tests/Acoustics.Test/App.config | 12 +- .../Indices/IndexCalculateTest.cs | 23 +- .../Acoustics.Test/Shared/ConfigFileTests.cs | 32 +- tests/Acoustics.Test/Shared/ConfigTests.cs | 152 +++++++ tests/Acoustics.Test/Shared/YamlTests.cs | 76 +--- 147 files changed, 2322 insertions(+), 1829 deletions(-) create mode 100644 src/Acoustics.Shared/ConfigFile/Config.cs create mode 100644 src/Acoustics.Shared/ConfigFile/ConfigFile.Profiles.cs create mode 100644 src/Acoustics.Shared/ConfigFile/IProfile.cs create mode 100644 src/AnalysisBase/AnalyzerConfig.cs delete mode 100644 src/AudioAnalysisTools/LongDurationSpectrograms/LDSpectrogramConfigOfJie.cs create mode 100644 tests/Acoustics.Test/Shared/ConfigTests.cs diff --git a/NuGet.Config b/NuGet.Config index edbeaf8bb..9b9e43665 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -3,5 +3,6 @@ + \ No newline at end of file diff --git a/src/AED/AED.fsproj b/src/AED/AED.fsproj index ae2bf1341..4456cbc89 100644 --- a/src/AED/AED.fsproj +++ b/src/AED/AED.fsproj @@ -58,8 +58,8 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + @@ -90,13 +90,13 @@ ..\..\packages\FSPowerPack.Core.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.dll - ..\..\packages\FSPowerPack.Linq.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Linq.dll + ..\..\packages\FSPowerPack.Linq.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Linq.dll - ..\..\packages\FSPowerPack.Metadata.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Metadata.dll + ..\..\packages\FSPowerPack.Metadata.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Metadata.dll - ..\..\packages\FSPowerPack.Parallel.Seq.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Parallel.Seq.dll + ..\..\packages\FSPowerPack.Parallel.Seq.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Parallel.Seq.dll ..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/src/AED/packages.config b/src/AED/packages.config index a1f21ded5..a4f95f4cc 100644 --- a/src/AED/packages.config +++ b/src/AED/packages.config @@ -1,15 +1,15 @@  - - - - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/src/Acoustics.Shared.FSharp/Acoustics.Shared.FSharp.fsproj b/src/Acoustics.Shared.FSharp/Acoustics.Shared.FSharp.fsproj index bc182de71..1fcbccc40 100644 --- a/src/Acoustics.Shared.FSharp/Acoustics.Shared.FSharp.fsproj +++ b/src/Acoustics.Shared.FSharp/Acoustics.Shared.FSharp.fsproj @@ -72,60 +72,42 @@ - + - - - - - - ..\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll - True - ..\..\packages\Accord.2.12.0.0\lib\Accord.dll - True ..\..\packages\Accord.Math.2.12.0.0\lib\Accord.Math.dll - True ..\..\packages\Accord.Statistics.2.12.0.0\lib\Accord.Statistics.dll - True ..\..\packages\AForge.2.2.5\lib\AForge.dll - True ..\..\packages\AForge.Math.2.2.5\lib\AForge.Math.dll - True ..\..\packages\FSharp.Core.4.2.3\lib\net45\FSharp.Core.dll - ..\..\packages\FSPowerPack.Core.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.dll - True + ..\..\packages\FSPowerPack.Core.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.dll - ..\..\packages\FSPowerPack.Linq.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Linq.dll - True + ..\..\packages\FSPowerPack.Linq.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Linq.dll - ..\..\packages\FSPowerPack.Metadata.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Metadata.dll - True + ..\..\packages\FSPowerPack.Metadata.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Metadata.dll - ..\..\packages\FSPowerPack.Parallel.Seq.Community.3.0.0.0\Lib\Net40\FSharp.PowerPack.Parallel.Seq.dll - True + ..\..\packages\FSPowerPack.Parallel.Seq.Community.3.0.0.0\lib\Net40\FSharp.PowerPack.Parallel.Seq.dll - ..\..\packages\log4net.2.0.8\lib\net40-full\log4net.dll + ..\..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - ..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -138,51 +120,31 @@ ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.dll - True ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Data.dll - True ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Graphviz.dll - True ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Serialization.dll - True - - - ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.dll - True - - - ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Data.dll - True - - - ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Graphviz.dll - True - - ..\..\packages\QuickGraph.3.6.61119.7\lib\net4\QuickGraph.Serialization.dll + + + + + ..\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll True + + - - ..\..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll - - - ..\..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll - - - ..\..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll - @@ -190,7 +152,9 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + +