diff --git a/src/AnalysisConfigFiles/Towsey.ContentDescription.yml b/src/AnalysisConfigFiles/Towsey.ContentDescription.yml index 545870939..03924b430 100644 --- a/src/AnalysisConfigFiles/Towsey.ContentDescription.yml +++ b/src/AnalysisConfigFiles/Towsey.ContentDescription.yml @@ -25,8 +25,8 @@ AnalysisName: ContentDescription # SAVE INTERMEDIARY FILES # Available options (case-sensitive): [false/Never | true/Always | WhenEventsDetected] SaveIntermediateWavFiles: Never -# If `true` saves a data into a seperate file every `SegmentDuration` seconds. Accepts a boolean value: [false|true] -# If `true` saves a data into a seperate file every `SegmentDuration` seconds. Accepts a boolean value: [false|true] +# If `true` saves a data into a separate file every `SegmentDuration` seconds. Accepts a boolean value: [false|true] +# If `true` saves a data into a separate file every `SegmentDuration` seconds. Accepts a boolean value: [false|true] SaveIntermediateCsvFiles: false # SAVE INTERMEDIARY ONE-MINUTE (standard scale) SPECTROGRAMS @@ -50,7 +50,7 @@ RequireDateInFilename: false TemplatesList: 'Towsey.TemplateDefinitions.json' # ############################################################################################################# -# The below parameters are used to configure drawing of the false-colour spectrograms +# The below parameters are used to configure drawing of the false-color spectrograms LdSpectrogramConfig: ColorMap1: "ACI-ENT-EVN" ColorMap2: "BGN-PMN-OSC" diff --git a/src/AnalysisPrograms/Sandpit.cs b/src/AnalysisPrograms/Sandpit.cs index 768367241..974d17452 100644 --- a/src/AnalysisPrograms/Sandpit.cs +++ b/src/AnalysisPrograms/Sandpit.cs @@ -19,7 +19,6 @@ namespace AnalysisPrograms using AnalyseLongRecordings; using AudioAnalysisTools; using AudioAnalysisTools.ContentDescriptionTools; - using AudioAnalysisTools.ContentDescriptionTools.ContentTypes; using AudioAnalysisTools.DSP; using AudioAnalysisTools.Indices; using AudioAnalysisTools.LongDurationSpectrograms; @@ -369,7 +368,7 @@ public static void Audio2CsvOverOneFile() // Test on Content Description //string recordingPath = @"C:\Ecoacoustics\WavFiles\FlyingFox\20190115_Bellingen_Feeding.wav"; - string recordingPath = @"C:\Ecoacoustics\WavFiles\LizZnidersic\TasmanIsland2015_Unit2_Mez\SM304256_0+1_20151114_131652+1000.wav"; + string recordingPath = @"D:\Ecoacoustics\WavFiles\LizZnidersic\TasmanIsland2015_Unit2_Mez\SM304256_0+1_20151114_131652+1000.wav"; //string outputPath = @"C:\Ecoacoustics\Output\Test\Test24HourRecording\TasmanIslandMez\14"; string outputPath = @"C:\Ecoacoustics\ContentDescription\Test6IndicesMez13"; //string outputPath = @"C:\Ecoacoustics\ContentDescription\FlyingFox"; diff --git a/src/AudioAnalysisTools/AudioAnalysisTools.csproj b/src/AudioAnalysisTools/AudioAnalysisTools.csproj index eb555a65f..9ca1007f2 100644 --- a/src/AudioAnalysisTools/AudioAnalysisTools.csproj +++ b/src/AudioAnalysisTools/AudioAnalysisTools.csproj @@ -243,14 +243,9 @@ - - - - - diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentSignatures.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentSignatures.cs index 098a84f88..ecd6a0d70 100644 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentSignatures.cs +++ b/src/AudioAnalysisTools/ContentDescriptionTools/ContentSignatures.cs @@ -1,4 +1,4 @@ -// +// // 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). // diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/BirdMorningChorus1.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/BirdMorningChorus1.cs deleted file mode 100644 index 476100a76..000000000 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/BirdMorningChorus1.cs +++ /dev/null @@ -1,80 +0,0 @@ -// -// 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 AudioAnalysisTools.ContentDescriptionTools.ContentTypes -{ - using System; - using System.Collections.Generic; - using System.IO; - using TowseyLibrary; - - public class BirdMorningChorus1 - { - //TEMPLATE DESCRIPTION - // Name of the template - public const string Name = "BirdChorus1"; - - // The TEMPLATE PROVENANCE - // The source file name from which the indices are extracted. - private const string BaseName = "SM304256_0+1_20151114_041652"; - private const string Location = "Mezzanine, Tasman Island"; - - //THESE ARE SPECIFIC ROW BOUNDS FOR PREPARING THIS TEMPLATE - // The freq bins will be averaged over the time period. - private const int StartRowId = 47; - private const int EndRowId = 53; - - // Full array (256 freq bins) of spectral indices is reduced by the following factor by averaging. - private const int ReductionFactor = 16; - - // Only want the interval 2-8 kHz for bird morning chorus. - // After reducing 256 freq bins to 16, each bin has width 689Hz. - // Therefore to get band 2-8 kHz, need to remove the bottom two freq bins and the top four freq bins. - // This leaves a template with 10 freq bins. - // At the present time this editing is done manually. - - private static readonly Dictionary BirdChorusTemplate = new Dictionary - { - ["ACI"] = new[] { 0.274, 0.366, 0.591, 0.820, 0.997, 0.975, 0.796, 0.846, 0.605, 0.260 }, - ["ENT"] = new[] { 0.293, 0.415, 0.804, 0.972, 0.910, 0.876, 0.923, 0.971, 0.840, 0.491 }, - ["EVN"] = new[] { 0.445, 0.691, 0.291, 0.266, 0.407, 0.417, 0.306, 0.321, 0.199, 0.091 }, - ["BGN"] = new[] { 0.140, 0.099, 0.072, 0.059, 0.055, 0.051, 0.048, 0.048, 0.045, 0.042 }, - ["PMN"] = new[] { 0.671, 0.967, 0.924, 0.998, 1.000, 1.000, 0.998, 1.000, 0.952, 0.633 }, - }; - - public static KeyValuePair GetContent(Dictionary oneMinuteOfIndices) - { - var reducedIndices = DataProcessing.ReduceIndicesByFactor(oneMinuteOfIndices, ReductionFactor); - - // remove first two freq bins and last four freq bins - int bottomBin = 2; - int topBin = 11; - reducedIndices = DataProcessing.ApplyBandPass(reducedIndices, bottomBin, topBin); - - var oneMinuteVector = DataProcessing.ConvertDictionaryToVector(reducedIndices); - var templateVector = DataProcessing.ConvertDictionaryToVector(BirdChorusTemplate); - - //Get Euclidian distance and normalize the distance - var distance = DataTools.EuclideanDistance(templateVector, oneMinuteVector); - distance /= Math.Sqrt(templateVector.Length); - - return new KeyValuePair(Name, 1 - distance); - } - - //public static Dictionary GetTemplate(DirectoryInfo dir) - //{ - // var dictionaryOfIndices = DataProcessing.ReadIndexMatrices(dir, BaseName); - // var birdIndices = DataProcessing.AverageIndicesOverMinutes(dictionaryOfIndices, StartRowId, EndRowId); - // var reducedIndices = DataProcessing.ReduceIndicesByFactor(birdIndices, ReductionFactor); - // return reducedIndices; - //} - - //public static void WriteTemplateToFile(DirectoryInfo ipDir, DirectoryInfo opDir) - //{ - // var template = GetTemplate(ipDir); - // var opPath = Path.Combine(opDir.FullName, Name + "Template.csv"); - // FileTools.WriteDictionaryToFile(template, opPath); - //} - } -} diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/RainLight1.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/RainLight1.cs deleted file mode 100644 index 7fe97f1ab..000000000 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/RainLight1.cs +++ /dev/null @@ -1,74 +0,0 @@ -// -// 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 AudioAnalysisTools.ContentDescriptionTools.ContentTypes -{ - using System; - using System.Collections.Generic; - using System.IO; - using TowseyLibrary; - - public class RainLight1 - { - //TEMPLATE DESCRIPTION - // Name of the template - public const string Name = "LightRain1"; - - // The TEMPLATE PROVENANCE - // The source file name from which the indices are extracted. - private const string BaseName = "SM304256_0+1_20151114_071652"; - - //THESE ARE SPECIFIC ROW BOUNDS FOR PREPARING THIS TEMPLATE - // The freq bins will be averaged over the time period. - private const int StartRowId = 32; - private const int EndRowId = 36; - - // Full array (256 freq bins) of spectral indices is reduced by the following factor by averaging. - private const int ReductionFactor = 16; - - private static readonly Dictionary LightRainTemplate = new Dictionary - { - ["ACI"] = new[] { 0.076, 0.046, 0.167, 0.360, 0.426, 0.443, 0.545, 0.595, 0.564, 0.612, 0.659, 0.570, 0.542, 0.520, 0.485, 0.485 }, - ["ENT"] = new[] { 0.065, 0.061, 0.176, 0.289, 0.249, 0.255, 0.296, 0.292, 0.262, 0.386, 0.462, 0.262, 0.222, 0.243, 0.217, 0.205 }, - ["EVN"] = new[] { 0.136, 0.009, 0.022, 0.051, 0.072, 0.092, 0.109, 0.150, 0.175, 0.176, 0.193, 0.155, 0.171, 0.135, 0.109, 0.133 }, - ["BGN"] = new[] { 0.366, 0.249, 0.181, 0.148, 0.122, 0.111, 0.106, 0.105, 0.104, 0.111, 0.111, 0.111, 0.105, 0.100, 0.090, 0.048 }, - ["PMN"] = new[] { 0.182, 0.076, 0.243, 0.459, 0.470, 0.501, 0.592, 0.651, 0.625, 0.699, 0.792, 0.599, 0.572, 0.550, 0.490, 0.488 }, - }; - - public static KeyValuePair GetContent(Dictionary oneMinuteOfIndices) - { - var reducedIndices = DataProcessing.ReduceIndicesByFactor(oneMinuteOfIndices, ReductionFactor); - var oneMinuteVector = DataProcessing.ConvertDictionaryToVector(reducedIndices); - var templateVector = DataProcessing.ConvertDictionaryToVector(LightRainTemplate); - - //Get Euclidian distance and normalise the distance - var distance = DataTools.EuclideanDistance(templateVector, oneMinuteVector); - distance /= Math.Sqrt(templateVector.Length); - - // get dummy data - //var rn = new RandomNumber(DateTime.Now.Second + (int)DateTime.Now.Ticks + 333); - //var distance = rn.GetDouble(); - - return new KeyValuePair(Name, 1 - distance); - } - - ///// - ///// string baseName = "SM304256_0+1_20151114_071652". - ///// - //public static Dictionary GetTemplate(DirectoryInfo dir) - //{ - // var dictionaryOfIndices = DataProcessing.ReadIndexMatrices(dir, BaseName); - // var windIndices = DataProcessing.AverageIndicesOverMinutes(dictionaryOfIndices, StartRowId, EndRowId); - // var reducedIndices = DataProcessing.ReduceIndicesByFactor(windIndices, ReductionFactor); - // return reducedIndices; - //} - - //public static void WriteTemplateToFile(DirectoryInfo ipDir, DirectoryInfo opDir) - //{ - // var template = GetTemplate(ipDir); - // var opPath = Path.Combine(opDir.FullName, Name + "Template.csv"); - // FileTools.WriteDictionaryToFile(template, opPath); - //} - } -} diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/SilverEyeMezTasmanIs.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/SilverEyeMezTasmanIs.cs deleted file mode 100644 index 42d01c67d..000000000 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/SilverEyeMezTasmanIs.cs +++ /dev/null @@ -1,89 +0,0 @@ -// -// 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 AudioAnalysisTools.ContentDescriptionTools.ContentTypes -{ - using System.Collections.Generic; - using System.IO; - using System.Linq; - using TowseyLibrary; - - public class SilverEyeMezTasmanIs - { - //TEMPLATE DESCRIPTION - // Name of the template - public const string Name = "SilverEye_TasmanIs"; - - // The TEMPLATE PROVENANCE - // The source file name from which the indices are extracted. - private const string BaseName = "SM304256_0+1_20151114_071652"; - - //THESE ARE SPECIFIC ROW BOUNDS FOR PREPARING THIS TEMPLATE - // The freq bins will be averaged over the time period. - private const int StartRowId = 6; - private const int EndRowId = 11; - - // Full array (256 freq bins) of spectral indices is reduced by the following factor by averaging. - private const int ReductionFactor = 16; - - // Bandpass filter to be applied - private const int FreqBinCount = 256 / ReductionFactor; - private const int BottomFreq = 3000; //Hertz - private const int TopFreq = 4000; //Hertz - - // Only want the interval 3-4 kHz for Silver-eye band. - // After reducing 256 freq bins to 16, each bin has width 689Hz. - // Therefore to get band 3-4 kHz, need to remove the bottom and top bins. - // This leaves a template with 2 or 3 freq bins which are then averaged, so that each index has one value. - // At the present time this editing is done manually. - - private static readonly Dictionary SilverEyeTemplate = new Dictionary - { - ["ACI"] = new[] { 0.779 }, - ["ENT"] = new[] { 0.393 }, - ["EVN"] = new[] { 0.686 }, - ["BGN"] = new[] { 0.085 }, - ["PMN"] = new[] { 0.883 }, - }; - - public static KeyValuePair GetContent(Dictionary oneMinuteOfIndices) - { - var reducedIndices = DataProcessing.ReduceIndicesByFactor(oneMinuteOfIndices, ReductionFactor); - - //var freqBinBounds = DataProcessing.GetFreqBinBounds(BottomFreq, TopFreq); - //reducedIndices = DataProcessing.ApplyBandPass(reducedIndices, freqBinBounds[0], freqBinBounds[1]); - //var oneMinuteVector = DataProcessing.ConvertDictionaryToVector(reducedIndices); - //var templateVector = DataProcessing.ConvertDictionaryToVector(SilverEyeTemplate); - - //Get Euclidian distance and normalize the distance - // Now pass the template up the full frequency spectrum to get a spectrum of scores. - var spectralScores = DataProcessing.ScanSpectrumWithTemplate(SilverEyeTemplate, reducedIndices); - - // Now check how much of spectral weight is in the correct freq band ie between 3-4 kHz. - var freqBinBounds = DataProcessing.GetFreqBinBounds(BottomFreq, TopFreq, FreqBinCount); - double callSum = DataTools.Subarray(spectralScores, freqBinBounds[0], freqBinBounds[1]).Sum(); - double totalSum = DataTools.Subarray(spectralScores, 1, spectralScores.Length - 3).Sum(); - double score = callSum / totalSum; - - return new KeyValuePair(Name, score); - } - - //public static Dictionary GetTemplate(DirectoryInfo dir) - //{ - // var dictionaryOfIndices = DataProcessing.ReadIndexMatrices(dir, BaseName); - // var birdIndices = DataProcessing.AverageIndicesOverMinutes(dictionaryOfIndices, StartRowId, EndRowId); - // var reducedIndices = DataProcessing.ReduceIndicesByFactor(birdIndices, ReductionFactor); - // var freqBinBounds = DataProcessing.GetFreqBinBounds(BottomFreq, TopFreq, FreqBinCount); - // reducedIndices = DataProcessing.ApplyBandPass(reducedIndices, freqBinBounds[0], freqBinBounds[1]); - // return reducedIndices; - //} - - //public static void WriteTemplateToFile(DirectoryInfo ipDir, DirectoryInfo opDir) - //{ - // var template = GetTemplate(ipDir); - // var opPath = Path.Combine(opDir.FullName, Name + "Template.csv"); - // FileTools.WriteDictionaryToFile(template, opPath); - //} - } -} diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindLight1.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindLight1.cs deleted file mode 100644 index 0408ed623..000000000 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindLight1.cs +++ /dev/null @@ -1,70 +0,0 @@ -// -// 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 AudioAnalysisTools.ContentDescriptionTools.ContentTypes -{ - using System; - using System.Collections.Generic; - using System.IO; - using TowseyLibrary; - - public class WindLight1 - { - //TEMPLATE DESCRIPTION - // Name of the template - public const string Name = "LightWind1"; - - // The TEMPLATE PROVENANCE - // The source file name from which the indices are extracted. - private const string BaseName = "SM304256_0+1_20151114_021652"; - - //THESE ARE SPECIFIC ROW BOUNDS FOR PREPARING THIS TEMPLATE - // The freq bins will be averaged over the time period. - private const int StartRowId = 50; - private const int EndRowId = 53; - - // Full array (256 freq bins) of spectral indices is reduced by the following factor by averaging. - private const int ReductionFactor = 16; - - private static readonly Dictionary LightWindTemplate = new Dictionary - { - ["ACI"] = new[] { 0.072, 0.035, 0.015, 0.008, 0.008, 0.009, 0.016, 0.018, 0.017, 0.015, 0.020, 0.022, 0.029, 0.026, 0.027, 0.098 }, - ["ENT"] = new[] { 0.063, 0.069, 0.071, 0.059, 0.052, 0.051, 0.050, 0.050, 0.050, 0.050, 0.050, 0.052, 0.051, 0.050, 0.051, 0.058 }, - ["EVN"] = new[] { 0.160, 0.099, 0.077, 0.023, 0.009, 0.009, 0.005, 0.004, 0.003, 0.004, 0.003, 0.006, 0.002, 0.004, 0.003, 0.015 }, - ["BGN"] = new[] { 0.387, 0.257, 0.151, 0.094, 0.069, 0.055, 0.049, 0.045, 0.042, 0.041, 0.041, 0.042, 0.043, 0.044, 0.043, 0.017 }, - ["PMN"] = new[] { 0.228, 0.199, 0.179, 0.087, 0.065, 0.048, 0.042, 0.034, 0.035, 0.035, 0.036, 0.038, 0.038, 0.037, 0.044, 0.081 }, - }; - - public static KeyValuePair GetContent(Dictionary oneMinuteOfIndices) - { - var reducedIndices = DataProcessing.ReduceIndicesByFactor(oneMinuteOfIndices, ReductionFactor); - reducedIndices.Remove("ENT"); - LightWindTemplate.Remove("ENT"); - - var oneMinuteVector = DataProcessing.ConvertDictionaryToVector(reducedIndices); - var templateVector = DataProcessing.ConvertDictionaryToVector(LightWindTemplate); - - var distance = DataTools.EuclideanDistance(templateVector, oneMinuteVector); - - //normalise the distance - distance /= Math.Sqrt(templateVector.Length); - return new KeyValuePair(Name, 1 - distance); - } - - //public static Dictionary GetTemplate(DirectoryInfo dir) - //{ - // var dictionaryOfIndices = DataProcessing.ReadIndexMatrices(dir, BaseName); - // var windIndices = DataProcessing.AverageIndicesOverMinutes(dictionaryOfIndices, StartRowId, EndRowId); - // var reducedIndices = DataProcessing.ReduceIndicesByFactor(windIndices, ReductionFactor); - // return reducedIndices; - //} - - //public static void WriteTemplateToFile(DirectoryInfo ipDir, DirectoryInfo opDir) - //{ - // var template = GetTemplate(ipDir); - // var opPath = Path.Combine(opDir.FullName, Name + "Template.csv"); - // FileTools.WriteDictionaryToFile(template, opPath); - //} - } -} diff --git a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindStrong1.cs b/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindStrong1.cs deleted file mode 100644 index 027662791..000000000 --- a/src/AudioAnalysisTools/ContentDescriptionTools/ContentTypes/WindStrong1.cs +++ /dev/null @@ -1,67 +0,0 @@ -// -// 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 AudioAnalysisTools.ContentDescriptionTools.ContentTypes -{ - using System; - using System.Collections.Generic; - using System.IO; - using TowseyLibrary; - - public class WindStrong1 - { - //TEMPLATE DESCRIPTION - // Name of the template - public const string Name = "StrongWind1"; - - // The TEMPLATE PROVENANCE - // The source file name from which the indices are extracted. - private const string BaseName = "SM304256_0+1_20151114_011652"; - - //THESE ARE SPECIFIC ROW BOUNDS FOR PREPARING THIS TEMPLATE - // The freq bins will be averaged over the time period. - private const int StartRowId = 23; - private const int EndRowId = 27; - - // Full array (256 freq bins) of spectral indices is reduced by the following factor by averaging. - private const int ReductionFactor = 16; - - private static readonly Dictionary StrongWindTemplate = new Dictionary - { - ["ACI"] = new[] { 0.086, 0.043, 0.041, 0.023, 0.032, 0.027, 0.029, 0.031, 0.032, 0.032, 0.034, 0.069, 0.033, 0.024, 0.018, 0.018 }, - ["ENT"] = new[] { 0.124, 0.112, 0.146, 0.163, 0.157, 0.157, 0.143, 0.122, 0.113, 0.095, 0.087, 0.121, 0.075, 0.060, 0.054, 0.067 }, - ["EVN"] = new[] { 0.376, 0.440, 0.590, 0.621, 0.648, 0.621, 0.565, 0.363, 0.273, 0.191, 0.164, 0.221, 0.104, 0.040, 0.017, 0.032 }, - ["BGN"] = new[] { 0.472, 0.360, 0.273, 0.199, 0.156, 0.121, 0.096, 0.085, 0.075, 0.069, 0.064, 0.061, 0.060, 0.058, 0.054, 0.026 }, - ["PMN"] = new[] { 0.468, 0.507, 0.687, 0.743, 0.757, 0.751, 0.665, 0.478, 0.391, 0.317, 0.276, 0.367, 0.187, 0.109, 0.071, 0.096 }, - }; - - public static KeyValuePair GetContent(Dictionary oneMinuteOfIndices) - { - var reducedIndices = DataProcessing.ReduceIndicesByFactor(oneMinuteOfIndices, ReductionFactor); - var oneMinuteVector = DataProcessing.ConvertDictionaryToVector(reducedIndices); - var templateVector = DataProcessing.ConvertDictionaryToVector(StrongWindTemplate); - - var distance = DataTools.EuclideanDistance(templateVector, oneMinuteVector); - - //normalise the distance - distance /= Math.Sqrt(templateVector.Length); - return new KeyValuePair(Name, 1 - distance); - } - - //public static Dictionary GetTemplate(DirectoryInfo dir) - //{ - // var dictionaryOfIndices = DataProcessing.ReadIndexMatrices(dir, BaseName); - // var windIndices = DataProcessing.AverageIndicesOverMinutes(dictionaryOfIndices, StartRowId, EndRowId); - // var reducedIndices = DataProcessing.ReduceIndicesByFactor(windIndices, ReductionFactor); - // return reducedIndices; - //} - - //public static void WriteTemplateToFile(DirectoryInfo ipDir, DirectoryInfo opDir) - //{ - // var template = GetTemplate(ipDir); - // var opPath = Path.Combine(opDir.FullName, Name + "Template.csv"); - // FileTools.WriteDictionaryToFile(template, opPath); - //} - } -}