private static void ParseInDirectory_WithoutKAndRFiles(string dir, string file_csv, string tab2File, int NZones, string kadrDefault = "")
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords, NZones);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File, "B");

            Regex           regex   = new Regex(@"id\d{3}");
            MatchCollection matches = regex.Matches(Path.GetFileName(file_csv));

            if (matches.Count > 1 || matches.Count == 0)
            {
                MessageBox.Show("В имени файла " + file_csv + " найдено неверное кол-во id (0 или более 1)"); return;
            }
            string FileId = matches[0].Value.Replace("id", "");


            FZoneTab           fZoneTab  = new FZoneTab();
            List <TobiiRecord> FZoneList = fZoneTab.Calculate(FiltredTobiiList, tabOfKeys);

            FZoneList = tobiiCsvReader.ClearFromGarbageZone(FZoneList, -1, FixationAddition);
            FZoneList = tobiiCsvReader.CompactTobiiRecords(FZoneList, "FZones");

            fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"), FZoneList);
        }
        public static void ParseInDirectory(string dir, string file_csv, string tab2File, int NZones)
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords, NZones);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File, "T");
            FZoneTab           fZoneTab         = new FZoneTab();

            List <TobiiRecord> FZoneList = fZoneTab.Calculate(FiltredTobiiList, tabOfKeys);

            FZoneList = tobiiCsvReader.ClearFromGarbageZone(FZoneList, -1, 500);
            FZoneList = tobiiCsvReader.CompactTobiiRecords(FZoneList, "FZones");

            fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"), FZoneList);
        }
Beispiel #3
0
        public List <TobiiRecord> Calculate(List <TobiiRecord> tobiiRecords, TabOfKeys tabOfKeys)
        {
            foreach (var TR in tobiiRecords)
            {
                foreach (var zone in TR.zones)
                {
                    TR.fzones.Add(tabOfKeys.GetFuncZone(zone, "ПИЛ"));
                }

                TR.fzones = TR.fzones.Distinct().ToList();

                if (TR.fzones.Count() > 1)
                {
                    if (TR.zones.Contains(4))
                    {
                        TR.fzones.Remove(4);
                    }
                }
                if (TR.fzones.Count() > 1)
                {
                    if (TR.zones.Contains(5))
                    {
                        TR.fzones.Remove(5);
                    }
                }
                if (TR.fzones.Count() > 1)
                {
                    if (TR.zones.Contains(6))
                    {
                        TR.fzones.Remove(6);
                    }
                }

                if (TR.fzones.Count() > 0)
                {
                    TR.CurFZone = TR.fzones.Last();
                }
                if (TR.fzones.Count() == 0)
                {
                    TR.CurFZone = -1;
                }
            }
            return(tobiiRecords);
        }
        public static TabOfKeys ReadTabOfKeys(string FileName)
        {
            //считываем данные из Excel файла в двумерный массив
            Excel.Application xlApp = new Excel.Application(); //Excel
            Excel.Workbook    xlWB;                            //рабочая книга
            Excel.Worksheet   xlSht;                           //лист Excel
            xlWB  = xlApp.Workbooks.Open(FileName);            //название файла Excel
            xlSht = xlWB.Worksheets[1];                        //название листа или 1-й лист в книге xlSht = xlWB.Worksheets[1];



            int iLastRow = xlSht.Cells[xlSht.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row; //последняя заполненная строка в столбце А
            var arrData  = (object[, ])xlSht.Range["A1:L" + iLastRow].Value;                   //берём данные с листа Excel

            //xlApp.Visible = true; //отображаем Excel
            xlWB.Close(false); //закрываем книгу, изменения не сохраняем
            xlApp.Quit();      //закрываем Excel


            Dictionary <int, Dictionary <string, int> > Tab = new Dictionary <int, Dictionary <string, int> >();

            int i, j;

            for (i = 2; i <= arrData.GetUpperBound(0); i++)
            {
                int KeyTobiiKadr             = (int)((double)arrData[i, 1]);
                Dictionary <string, int> row = new Dictionary <string, int>();
                for (j = 2; j <= arrData.GetUpperBound(1); j++)
                {
                    string KeyKadr     = (string)arrData[1, j];
                    int    ValFuncZone = (int)((double)arrData[i, j]);
                    row.Add(KeyKadr, ValFuncZone);
                }
                Tab.Add(KeyTobiiKadr, row);
            }

            TabOfKeys tabOfKeys = new TabOfKeys {
                Tab = Tab
            };

            return(tabOfKeys);
        }
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(@"C:\_\1\1.csv", tobiiRecords);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(@"C:\_\Tab2new.xlsx");
            List <KadrInTime>  kadrInTimes      = ExcelReader.ReadKadrSets(@"C:\_\1\1_k.xls");
            FZoneTab           fZoneTab         = new FZoneTab();

            fZoneTab.Calculate(FiltredTobiiList, kadrInTimes, tabOfKeys);
            fZoneTab.FZoneList = tobiiCsvReader.ClearFromGarbageZone(fZoneTab.FZoneList, -1, 500);
            fZoneTab.WriteResult(@"C:\tmp\1\1.txt");

            List <Interval> intervals       = ExcelReader.SeparatorIntervalsReadFromExcel(@"C:\_\1\1_reg.xls");
            ResultSeparator resultSeparator = new ResultSeparator(@"C:\_\1\reg\", intervals, fZoneTab.FZoneList, "1");

            resultSeparator.Separate();
        }
        public static void ParseInDirectory(string dir, string file_csv, string file_k, string file_reg, string tab2File)
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File);
            List <KadrInTime>  kadrInTimes      = ExcelReader.ReadKadrSets(file_k);
            FZoneTab           fZoneTab         = new FZoneTab();

            fZoneTab.Calculate(FiltredTobiiList, kadrInTimes, tabOfKeys);
            fZoneTab.FZoneList = tobiiCsvReader.ClearFromGarbageZone(fZoneTab.FZoneList, -1, 500);
            fZoneTab.FZoneList = tobiiCsvReader.CompactTobiiRecords(fZoneTab.FZoneList);

            fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"));

            List <Interval> intervals       = ExcelReader.SeparatorIntervalsReadFromExcel(file_reg);
            ResultSeparator resultSeparator = new ResultSeparator(dir + @"\reg\", intervals, fZoneTab.FZoneList, Path.GetFileName(file_csv).Replace(".csv", "_"));

            resultSeparator.Separate();
        }
        private static void ParseInDirectory_OneRegFile(string dir, string file_csv, string file_k, string file_r, string tab2File, int NZones, string kadrDefault = "", string tab2FileLastColumn = "T")
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords, NZones);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File, tab2FileLastColumn);

            Regex           regex   = new Regex(@"id\d{3}");
            MatchCollection matches = regex.Matches(Path.GetFileName(file_csv));

            if (matches.Count > 1 || matches.Count == 0)
            {
                MessageBox.Show("В имени файла " + file_csv + " найдено неверное кол-во id (0 или более 1)"); return;
            }
            string FileId = matches[0].Value.Replace("id", "");

            KadrIntervals kadrIntervals;

            kadrIntervals = SpecialFor9_41_SCENARY2.GetKadrIntervalsInXmlKFile(file_k, FileId);


            FZoneTab           fZoneTab  = new FZoneTab();
            List <TobiiRecord> FZoneList = fZoneTab.Calculate(FiltredTobiiList, kadrIntervals, tabOfKeys);

            FZoneList = tobiiCsvReader.ClearFromGarbageZone(FZoneList, -1, FixationAddition);
            FZoneList = tobiiCsvReader.CompactTobiiRecords(FZoneList, "FZones");

            fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"), FZoneList);

            SeparatorIntervals separatorIntervals = SpecialFor9_41_SCENARY2.GetSeparatorIntervalsInXmlKFile(file_r, FileId);

            ResultSeparator resultSeparator = new ResultSeparator(dir + @"\reg\", separatorIntervals.Intervals, FZoneList, Path.GetFileName(file_csv).Replace(".csv", "_"));

            resultSeparator.Separate();
        }
Beispiel #8
0
 private void ButtonTab2ReadClick(object sender, RoutedEventArgs e)
 {
     TabOfKeys tabOfKeys = ExcelReader.ReadTabOfKeys(@"C:\_\Tab2new2.xlsx", "T");
 }
Beispiel #9
0
        //public List<TobiiRecord> FZoneList;

        public List <TobiiRecord> Calculate(List <TobiiRecord> tobiiRecords, List <KadrInTime> kadrInTimes, TabOfKeys tabOfKeys)
        {
            // FZoneList = new List<TobiiRecord>();
            foreach (var TR in tobiiRecords)
            {
                foreach (var zone in TR.zones)
                {
                    TR.fzones.Add(tabOfKeys.GetFuncZone(zone, "ПИЛ"));
                }

                TR.fzones = TR.fzones.Distinct().ToList();

                if (TR.fzones.Count() > 1)
                {
                    if (TR.fzones.Contains(13))
                    {
                        TR.fzones.Remove(13);
                    }
                }
                if (TR.fzones.Count() > 0)
                {
                    TR.CurFZone = TR.fzones.First();
                }
                if (TR.fzones.Count() == 0)
                {
                    TR.CurFZone = -1;
                }
                // string kadr = KadrInTime.GetKadr(kadrInTimes, TR.time_ms, TR.zone);
                // if (kadr == "") continue;
                //string kadr = KadrInTime.GetKadr(kadrInTimes, TR.time_ms);

                //int FZone = tabOfKeys.GetFuncZone(TR.zone, kadr);
                //FZoneList.Add(new TobiiRecord() { time_ms = TR.time_ms, zone = FZone });
            }
            return(tobiiRecords);
        }
Beispiel #10
0
        /// <summary>
        /// По моему это бесполезно комментировать....
        /// Короче тут происходит самое основное - вроде как смотрится каждая строка, потом выясняется в каком она кадре
        /// Потом .... вобщем ей назначается одна только зона в результате....
        /// </summary>
        /// <param name="tobiiRecords"></param>
        /// <param name="kadrIntervals"></param>
        /// <param name="tabOfKeys"></param>
        /// <returns></returns>
        public List <TobiiRecord> Calculate(List <TobiiRecord> tobiiRecords, KadrIntervals kadrIntervals, TabOfKeys tabOfKeys)
        {
            // FZoneList = new List<TobiiRecord>();
            foreach (var TR in tobiiRecords)//проходим по всем записям
            {
                foreach (var zone in TR.zones)
                {
                    int    MFINumber;
                    string kadr;
                    int    Fzone;
                    MFINumber = SpecialFor9_41_SCENARY2.GetMFINumber(zone);
                    kadr      = kadrIntervals.GetKadr(TR.time_ms, MFINumber);
                    if (kadr == "")
                    {
                        throw new Exception("Не могу найти подходящий кадр для интервала id = " + kadrIntervals.Id + " при времени" + TR.time_ms);
                    }
                    Fzone = tabOfKeys.GetFuncZone(zone, kadr);
                    TR.fzones.Add(Fzone);
                }

                TR.fzones = TR.fzones.Distinct().ToList();

                //Убираем нулевые зоны
                if (TR.fzones.Count() > 1)
                {
                    if (TR.fzones.Contains(0))
                    {
                        TR.fzones.Remove(0);
                    }
                }

                //убираем низкоприоритетные зоны - тут например убрали зоны "кадр БР целиком"
                for (int i = 0; i < 5; i++)
                {
                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(18))
                        {
                            TR.fzones.Remove(18);
                        }
                    }

                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(19))
                        {
                            TR.fzones.Remove(19);
                        }
                    }

                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(20))
                        {
                            TR.fzones.Remove(20);
                        }
                    }
                }
                if (TR.fzones.Count() > 0)
                {
                    TR.CurFZone = TR.fzones.First();
                }

                if (TR.fzones.Count() == 0)
                {
                    TR.CurFZone = -1;
                }
            }
            return(tobiiRecords);
        }
Beispiel #11
0
 public void Calculate(List <TobiiRecord> tobiiRecords, List <KadrInTime> kadrInTimes, TabOfKeys tabOfKeys)
 {
     FZoneList = new List <TobiiRecord>();
     foreach (var TR in tobiiRecords)
     {
         string kadr = KadrInTime.GetKadr(kadrInTimes, TR.time_ms, TR.zone);
         if (kadr == "")
         {
             continue;
         }
         int FZone = tabOfKeys.GetFuncZone(TR.zone, kadr);
         FZoneList.Add(new TobiiRecord()
         {
             time_ms = TR.time_ms, zone = FZone
         });
     }
 }