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); }
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(); }
private void ButtonTab2ReadClick(object sender, RoutedEventArgs e) { TabOfKeys tabOfKeys = ExcelReader.ReadTabOfKeys(@"C:\_\Tab2new2.xlsx", "T"); }
//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); }
/// <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); }
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 }); } }