/// <summary> /// Reads through multiple directories to read multiple files of spectral indices. /// The spectral indices are combined day-wise into pivot-tables which are written to file. /// </summary> /// <param name="indexPropertiesConfig"></param> /// <param name="inputDirInfo"></param> /// <param name="opDir"></param> public static void ReadAllSpectralIndicesAndWriteToDataTable(FileInfo indexPropertiesConfig, DirectoryInfo inputDirInfo, DirectoryInfo opDir) { Dictionary <string, IndexProperties> dictIP = IndexProperties.GetIndexProperties(indexPropertiesConfig); dictIP = InitialiseIndexProperties.FilterIndexPropertiesForSpectralOnly(dictIP); string[] spectrogramKeys = dictIP.Keys.ToArray(); int count = 0; DirectoryInfo[] dirList = inputDirInfo.GetDirectories(); foreach (DirectoryInfo dir in dirList) { // ASSUME THAT FILE PATHS IN DIRECTORY HAVE THIS STRUCTURE // SERF_20130915_201727_000.wav\Towsey.Acoustic\SERF_20130915_201727_000.ACI.csv; SERF_20130915_201727_000.BGN.csv etc string targetFileName = dir.Name; string[] nameArray = targetFileName.Split('_'); string stem = nameArray[0]; string date = nameArray[1]; string time = nameArray[2]; int year = int.Parse(date.Substring(0, 4)); int month = int.Parse(date.Substring(4, 2)); int day = int.Parse(date.Substring(6, 2)); int hour = int.Parse(time.Substring(0, 2)); int minute = int.Parse(time.Substring(2, 2)); int second = int.Parse(time.Substring(4, 2)); DateTime thisDate = new DateTime(year, month, day, hour, minute, second); // get target file name without extention nameArray = targetFileName.Split('.'); targetFileName = nameArray[0]; string targetDirectory = dir.FullName + @"\Towsey.Acoustic"; var targetDirInfo = targetDirectory.ToDirectoryInfo(); // construct the output file name string opFileName = stem + "_" + date + ".SpectralIndices.DataTable.csv"; string opFilePath = Path.Combine(opDir.FullName, opFileName); //Logger.Info("Reading spectral-indices for file: " + targetFileName); ReadSpectralIndicesAndWriteToDataTable(spectrogramKeys, thisDate, targetDirInfo, targetFileName, opFilePath); // for DEBUG //count++; //if (count >= 20) break; } // foreach (DirectoryInfo dir in dirList) }
/// <summary> /// Uses a dictionary of index properties to draw an image of summary index tracks. /// </summary> /// <param name="csvFile"> file containing the summary indices.</param> /// <param name="indexPropertiesConfig"> indexPropertiesConfig.</param> /// <param name="title">image title.</param> /// <param name="indexCalculationDuration"> The index Calculation Duration. </param> /// <param name="recordingStartDate"> The recording Start Date. </param> public static Image <Rgb24> DrawImageOfSummaryIndexTracks( FileInfo csvFile, FileInfo indexPropertiesConfig, string title, TimeSpan indexCalculationDuration, DateTimeOffset?recordingStartDate) { Dictionary <string, IndexProperties> dictionaryOfIndexProperties = IndexProperties.GetIndexProperties(indexPropertiesConfig); dictionaryOfIndexProperties = InitialiseIndexProperties.GetDictionaryOfSummaryIndexProperties(dictionaryOfIndexProperties); return(DrawImageOfSummaryIndices( dictionaryOfIndexProperties, csvFile, title, indexCalculationDuration, recordingStartDate)); }