/// <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)
        }
Пример #2
0
        /// <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));
        }