示例#1
0
        /*
         * public static eyetrackerDataEyeX loadEyetrackerDataFromJson(string path)
         * {
         *  eyetrackerDataEyeX eyetrackerDataL;
         *  eyetrackerDataL.targetTraceL = null;
         *  string file = @"\eyetrackerData.json";
         *
         *  if (File.Exists(path + file))
         *  {
         *      string json = File.ReadAllText(path + file);
         *      eyetrackerDataL = JsonConvert.DeserializeObject<eyetrackerDataEyeX>(json);
         *  }
         *  return eyetrackerDataL;
         * }
         *
         * public static TestData1 loadTestDataFromJson(string path)
         * {
         *  TestData1 testData = null;
         *  string file = @"\testData.json";
         *
         *  if (File.Exists(path + file))
         *  {
         *      string json = File.ReadAllText(path + file);
         *      testData = JsonConvert.DeserializeObject<TestData1>(json);
         *  }
         *  return testData;
         * }*/

        public static TestData1 loadTestDataFromJson(string json)
        {
            TestData1 testData = null;

            testData = JsonConvert.DeserializeObject <TestData1>(json);
            return(testData);
        }
示例#2
0
        private void Init(bool showLastTest, bool newTestAvailable, string inputData, string eyetrackerDataJson, OutputTestData2 testData)
        {
            labelVersion.Text = "Version: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
            closeApp          = true;

            if (showLastTest)
            {
                inputData = DataBaseWorker.LoadLastPursuitData(out date, out user_id, out eyetrackerDataJson, out testData);
            }

            this.date_loc = testData.date_loc;
            this.user_id  = testData.user_id;
            date          = testData.date;

            buttonNewTest.Enabled = newTestAvailable;

            //Console.WriteLine("selectedPath: " + selectedPath);

            toolStripStatusLabelFileName.Text = string.Format("{0}-us{1}", date_loc, user_id);

            eyetrackerDataL     = ReviewClass.loadEyetrackerDataFromJson(eyetrackerDataJson);
            _testData           = DataConverter.TestData2ToTestData1(testData);
            stimuloPersuitSetup = ReviewClass.loadPersuitDataFromJson(inputData);

            everythingOk = ReviewClass.eyetrackerDataFound(eyetrackerDataL) & ReviewClass.testDataFound(_testData) & ReviewClass.persuitDataFound(stimuloPersuitSetup);

            if (everythingOk)
            {
                plotGazeData2Control();
            }
        }
示例#3
0
        public static bool loadImage2Control(bool testDataFound, TestData1 testData, PictureBox pictureBoxStimulus)
        {
            /*
             * leer testdata.imagen
             * en funcion de lo que se lee se carga en el picture box
             */

            if (testDataFound)
            {
                if (Varios.ImageDictionary.Image2ReadDictionary.ContainsKey(testData.image2read))
                {
                    pictureBoxStimulus.Image = Varios.ImageDictionary.Image2ReadDictionary[testData.image2read].imagen;
                    Console.WriteLine("testData.imagen2read:" + testData.image2read + " encontrada");
                    return(true);
                }
                else
                {
                    Console.WriteLine("testData.imagen2read:" + testData.image2read + " NO encontrada");
                    return(false);
                }
            }
            else
            {
                Console.WriteLine("testDataFound: false");
                return(false);
            }
        }
示例#4
0
    static int Main(string[] args)
    {
        var method = typeof(TestData0).GetMethod(nameof(TestData0.MyMethod));
        var func   = (Func <TestData0, int, int, int, int, int, int, int, int, object>)Delegate.CreateDelegate(typeof(Func <TestData0, int, int, int, int, int, int, int, int, object>), null, method);

        TestData0 data  = new TestData0();
        TestData0 data1 = new TestData1();

        int nullRefCount = 0;

        const int LoopCount = 10;

        for (int j = 0; j < LoopCount; j++)
        {
            for (int i = 0; i < 50; i++)
            {
                func(data, 1, 2, 3, 4, 5, 6, 7, 8);
                func(data1, 1, 2, 3, 4, 5, 6, 7, 8);
            }

            try
            {
                func(null, 1, 2, 3, 4, 5, 6, 7, 8);
            }
            catch (NullReferenceException e)
            {
                nullRefCount++;
                Console.WriteLine(e);
            }
        }

        return((nullRefCount == LoopCount) ? 100 : 101);
    }
示例#5
0
        public virtual IDictionary <TestData1, Result> ValidateWithResults(TestData1 first, TestData2 second)
        {
            IDictionary <TestData1, Result> results = new Dictionary <TestData1, Result>();

            this.Validate(first, second, results);
            return(results);
        }
示例#6
0
        public void Serialize()
        {
            StreamWriter streamWriter = new StreamWriter(File.Open(path, FileMode.Truncate));
            var          serialize    = new Serializer();
            TestData1    test         = new TestData1();

            serialize.Serialize(streamWriter, test);
            streamWriter.Close();
        }
示例#7
0
        public void Deserializer()
        {
            StreamReader streamReader = new StreamReader(File.Open(path, FileMode.Open));
            var          deserializer = new Deserializer();
            TestData1    testData1    = deserializer.Deserialize <TestData1>(streamReader);

            streamReader.Close();
            Console.WriteLine("a:" + testData1.A);
        }
示例#8
0
 public static bool testDataFound(TestData1 testData)
 {
     if (testData == null)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
示例#9
0
        public void TestPass1()
        {
            Assert.DoesNotThrow(() =>
            {
                TestData1 data1 = new TestData1();
                data1.F         = new object[]
                {
                    "Sadasdasd",
                    new TestData2 {
                        Str = "Str",
                    }
                };

                ProtobufSerializer2.Serialize(data1);
            });
        }
示例#10
0
        /// TestData
        #region TestData

        /// <summary>
        ///
        /// </summary>
        /// <param name="data2"></param>
        /// <returns></returns>
        public static TestData1 TestData2ToTestData1(OutputTestData2 data2)
        {
            if (data2 == null)
            {
                return(null);
            }

            TestData1 data1 = new TestData1();

            data1.calibration_error_left_px  = data2.calibration_error_left_px;
            data1.calibration_error_right_px = data2.calibration_error_right_px;
            data1.date          = data2.date;
            data1.eyetracker    = data2.eyetracker;
            data1.filter_type   = data2.filter_type;
            data1.image2read    = data2.image2read;
            data1.screen_Height = data2.screen_Height;
            data1.screen_Width  = data2.screen_Width;

            return(data1);
        }
        public SampleTextFullScreen(TestData1 testData, Size stimulusSize, Point stimulusLocation, fixationData fixData, eyetrackerDataEyeX eyetrackerDataL, CheckBox checkBoxGaze, CheckBox checkBoxFixations, CheckBox checkBoxL, CheckBox checkBoxR)
        {
            InitializeComponent();

            this.testData         = testData;
            this.fixData          = fixData;
            this.stimulusSize     = stimulusSize;
            this.stimulusLocation = stimulusLocation;
            this.eyetrackerDataL  = eyetrackerDataL;
            class4Graphic.loadImage2Control(true, testData, pictureBoxStimulus);


            pictureBoxStimulus.Size     = stimulusSize;
            pictureBoxStimulus.Location = stimulusLocation;

            this.checkBoxGaze      = checkBoxGaze;
            this.checkBoxFixations = checkBoxFixations;
            this.checkBoxL         = checkBoxL;
            this.checkBoxR         = checkBoxR;
        }
示例#12
0
        public Resumen(bool showLastTest, bool newTestAvailable, string fixDataJson, string eyetrackerDataJson, OutputTestData2 testData)
        {
            InitializeComponent();
            labelVersion.Text = "Version: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

            closeApp = true;

            if (showLastTest)
            {
                fixDataJson = DataBaseWorker.LoadLastReadingData(out date, out user_id, out eyetrackerDataJson, out testData);
            }

            this.dateloc = testData.date_loc;
            this.user_id = testData.user_id;
            date         = testData.date;

            buttonNewTest.Enabled = newTestAvailable;

            //Console.WriteLine("selectedPath: " + selectedPath);

            _testData = DataConverter.TestData2ToTestData1(testData);

            if (string.IsNullOrWhiteSpace(fixDataJson))
            {
                fixDataJson = processFixData(eyetrackerDataJson, _testData, testData.date, user_id);//procesa los datos de los ojos y genera un archivo fixData.json
            }
            toolStripStatusLabelFileName.Text = string.Format("{0}-us{1}", dateloc, user_id);
            fixDataFound    = loadFixationDataFromJson(fixDataJson); //carga el archivo fixData.json
            eyetrackerDataL = ReviewClass.loadEyetrackerDataFromJson(eyetrackerDataJson);
            getStimulusFeactures(ReviewClass.eyetrackerDataFound(eyetrackerDataL));
            imageFound = class4Graphic.loadImage2Control(ReviewClass.testDataFound(_testData), _testData, pictureBoxStimulus);

            everythingOk = fixDataFound & ReviewClass.eyetrackerDataFound(eyetrackerDataL) & ReviewClass.testDataFound(_testData) & imageFound;

            if (everythingOk)
            {
                processMetrics();
            }
        }
示例#13
0
        public FixDetector(string eyetrackerData, TestData1 testData, string date, string user_id)
        {
            //FixDataFound = false;
            this.eyetrackerData = eyetrackerData;
            this._testData      = testData;
            this.date           = date;
            this.user_id        = user_id;

            fixData = new fixationData();

            fixationDetector = new FixDetectorClass();
            fixationDetector.FixationStart += fixationDetector_FixationStart;
            fixationDetector.FixationEnd   += fixationDetector_FixationEnd;
            //fixationDetector.FixationUpdate += fixationDetector_FixationUpdate;


            //fixationDetector.Analyzer = EFDAnalyzer.fdaFixationSize;
            //fixationDetector.FixationRadius = 60;
            //fixationDetector.NoiseFilter = 1;
            //fixationDetector.Filter = EFDFilter.fdfAveraging;
            //fixationDetector.MinFixDuration = 100;
            //fixationDetector.FilterBufferSize = 20;
            //fixationDetector.UpdateInterval = 100;


            //Analyzer
            fixationDetector.Analyzer = EFDAnalyzer.fdaFixationSize;
            //fixationDetector.Analyzer = EFDAnalyzer.fdaDispersion;
            //fixationDetector.Analyzer = EFDAnalyzer.fdaSpeed;

            //Filter
            //fixationDetector.Filter = EFDFilter.fdfNone;//confirmado no
            fixationDetector.Filter = EFDFilter.fdfAveraging;
            //fixationDetector.Filter = EFDFilter.fdfWeightedAvg;

            fixationDetector.MinFixDuration   = 30;   //0-300
            fixationDetector.FilterBufferSize = 5;    //2-1000
            fixationDetector.FilterWeight     = 0.5f; //se usa con el filtro EFDFilter.fdfWeightedAvg
            fixationDetector.UpdateInterval   = 1000; //100-1000

            //EFDAnalyzer.fdaFixationSize
            fixationDetector.FixationRadius = 40; //15-70
            fixationDetector.NoiseFilter    = 1;  //confirmado si

            //EFDAnalyzer.fdaSpeed
            fixationDetector.SpeedThreshold        = 100;  //100-1000
            fixationDetector.AccelerationThreshold = 2000; //1000-10000
            fixationDetector.SpeedBufferSize       = 10;   //3-10

            //EFDAnalyzer.fdaDispersion
            fixationDetector.MaxDispersion = 20; //15-100
            fixationDetector.WindowSize    = 5;  //2-50

            //if (file2String())
            {
                string2Json();
                processData();
                saveData2File();

                fixData.clearAllList();
            }
        }
示例#14
0
        public static List <Point> getGazeData2List(eyetrackerDataEyeX eyetrackerDataL, TestData1 testData, Eye fromEye)
        {
            List <Point> gazeDataDoubleList = new List <Point>();

            if (fromEye == Eye.left)
            {
                for (var indiceSample = 0; indiceSample < eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL.Count; indiceSample++)
                {
                    int gazeX = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.X * (double)testData.screen_Width);
                    int gazeY = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.Y * (double)testData.screen_Height);

                    if (
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.X) &&
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.Y)
                        )
                    {
                        gazeDataDoubleList.Add(new Point(gazeX, gazeY));
                    }
                }
            }

            if (fromEye == Eye.right)
            {
                for (var indiceSample = 0; indiceSample < eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL.Count; indiceSample++)
                {
                    int gazeX = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.X * (double)testData.screen_Width);
                    int gazeY = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.Y * (double)testData.screen_Height);

                    if (
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.X) &&
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.Y)
                        )
                    {
                        gazeDataDoubleList.Add(new Point(gazeX, gazeY)); //plotGaze(gazeX, gazeY, Color.Blue);
                    }
                }
            }



            return(gazeDataDoubleList);
        }
示例#15
0
        public static List <GazePositionAndTimeClass> getGazePositionAndTimeList(eyetrackerDataEyeX eyetrackerDataL, TestData1 testData, Eye fromEye)
        {
            List <GazePositionAndTimeClass> gazePositionAndTime = new List <GazePositionAndTimeClass>();
            double timeSegundosInicial = 0;
            double timeSegundos        = 0;

            if (fromEye == Eye.left)
            {
                for (var indiceSample = 0; indiceSample < eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL.Count; indiceSample++)
                {
                    int gazeX = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.X * (double)testData.screen_Width);
                    int gazeY = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.Y * (double)testData.screen_Height);

                    if (indiceSample == 0)
                    {
                        timeSegundos        = 0;
                        timeSegundosInicial = (double)eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Timestamp / (double)1000000.0;
                    }
                    else
                    {
                        timeSegundos = ((double)eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Timestamp / (double)1000000.0) - timeSegundosInicial;
                    }

                    if (
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.X) &&
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Left.GazePointOnDisplayNormalized.Y)
                        )
                    {
                        gazePositionAndTime.Add(new GazePositionAndTimeClass(new Point(gazeX, gazeY), timeSegundos));
                    }
                }
            }

            if (fromEye == Eye.right)
            {
                for (var indiceSample = 0; indiceSample < eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL.Count; indiceSample++)
                {
                    int gazeX = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.X * (double)testData.screen_Width);
                    int gazeY = (int)(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.Y * (double)testData.screen_Height);

                    if (indiceSample == 0)
                    {
                        timeSegundos        = 0;
                        timeSegundosInicial = (double)eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Timestamp / (double)1000000.0;
                    }
                    else
                    {
                        timeSegundos = ((double)eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Timestamp / (double)1000000.0) - timeSegundosInicial;
                    }

                    if (
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.X) &&
                        !double.IsNaN(eyetrackerDataL.targetTraceL[settings.indiceTrial].gazeDataItemL[indiceSample].Right.GazePointOnDisplayNormalized.Y)
                        )
                    {
                        gazePositionAndTime.Add(new GazePositionAndTimeClass(new Point(gazeX, gazeY), timeSegundos));
                    }
                }
            }

            return(gazePositionAndTime);
        }
示例#16
0
 private string processFixData(string eyetrackerData, TestData1 testData, string date, string user_id)
 {
     FixDetector.FixDetector detectorFijaciones = new FixDetector.FixDetector(eyetrackerData, testData, date, user_id);
     return(detectorFijaciones.FixDataJson);
 }
示例#17
0
 public virtual Boolean IsValid(TestData1 first, TestData2 second)
 {
     return(this.ValidateWithResults(first, second).ContainsKey(first));
 }
示例#18
0
        public void LHI_Insert()
        {
            // TEST DATA:
            // --------------------
            // "keep it as simple as possible\r\n (head: 0, len:31)
            // \n                                 (head:32, len: 1)
            // but\n                              (head:33, len: 4)
            // \r                                 (head:37, len: 1)
            // not simpler."\r                    (head:38, len:14)
            // \r                                 (head:52, len: 1)
            //  - Albert Einstein                 (head:53, len:18)
            // --------------------
            const string                TestData1 = "\"keep ot simpler.\"\r\r - Albert Einstein";
            const string                TestData2 = "it as simple as possible\r\n\nbt\n\rn";
            TextBuffer                  text      = new TextBuffer(1, 1);
            SplitArray <int>            lhi       = new SplitArray <int>(1, 1);
            SplitArray <LineDirtyState> lds       = new SplitArray <LineDirtyState>(1, 1);

            lhi.Add(0); lds.Add(LineDirtyState.Clean);

            TextUtil.LHI_Insert(lhi, lds, text, TestData1, 0);
            text.Add(TestData1.ToCharArray());
            Assert.AreEqual("0 19 20", lhi.ToString());
            Assert.AreEqual("DDD", MakeLdsText(lds));

            for (int i = 0; i < lds.Count; i++)
            {
                lds[i] = LineDirtyState.Clean;
            }
            TextUtil.LHI_Insert(lhi, lds, text, TestData2, 6);
            text.Insert(6, TestData2.ToCharArray());
            Assert.AreEqual("0 32 33 36 37 51 52", lhi.ToString());
            Assert.AreEqual("DDDDDCC", MakeLdsText(lds));

            for (int i = 0; i < lds.Count; i++)
            {
                lds[i] = LineDirtyState.Clean;
            }
            TextUtil.LHI_Insert(lhi, lds, text, "u", 34);
            text.Insert(34, "u".ToCharArray());
            Assert.AreEqual("0 32 33 37 38 52 53", lhi.ToString());
            Assert.AreEqual("CCDCCCC", MakeLdsText(lds));

            //--- special care about CR+LF ---
            // (1) insertion divides a CR+LF
            // (2) inserting text begins with LF creates a new CR+LF at left side of the insertion point
            // (3) inserting text ends with CR creates a new CR+LF at right side of the insertion point
            //--------------------------------
            // (1)+(2)
            {
                text.Clear(); lhi.Clear(); lhi.Add(0); lds.Clear(); lds.Add(LineDirtyState.Clean);
                TextUtil.LHI_Insert(lhi, lds, text, "foo\r\nbar", 0);
                text.Add("foo\r\nbar".ToCharArray());
                for (int i = 0; i < lds.Count; i++)
                {
                    lds[i] = LineDirtyState.Clean;
                }

                TextUtil.LHI_Insert(lhi, lds, text, "\nx", 4);
                text.Insert(4, "\nx".ToCharArray());
                Assert.AreEqual("0 5 7", lhi.ToString());
                Assert.AreEqual("DDC", MakeLdsText(lds));
            }

            // (1)+(3)
            {
                text.Clear(); lhi.Clear(); lhi.Add(0); lds.Clear(); lds.Add(LineDirtyState.Clean);
                TextUtil.LHI_Insert(lhi, lds, text, "foo\r\nbar", 0);
                text.Add("foo\r\nbar".ToCharArray());
                for (int i = 0; i < lds.Count; i++)
                {
                    lds[i] = LineDirtyState.Clean;
                }

                TextUtil.LHI_Insert(lhi, lds, text, "x\r", 4);
                text.Insert(4, "x\r".ToCharArray());
                Assert.AreEqual("0 4 7", lhi.ToString());
                Assert.AreEqual("DDC", MakeLdsText(lds));
            }

            // (1)+(2)+(3)
            {
                text.Clear(); lhi.Clear(); lhi.Add(0); lds.Clear(); lds.Add(LineDirtyState.Clean);
                TextUtil.LHI_Insert(lhi, lds, text, "foo\r\nbar", 0);
                text.Add("foo\r\nbar".ToCharArray());
                for (int i = 0; i < lds.Count; i++)
                {
                    lds[i] = LineDirtyState.Clean;
                }

                TextUtil.LHI_Insert(lhi, lds, text, "\n\r", 4);
                text.Insert(4, "\n\r".ToCharArray());
                Assert.AreEqual("0 5 7", lhi.ToString());
                Assert.AreEqual("DDC", MakeLdsText(lds));
            }

            // (2)
            {
                text.Clear(); lhi.Clear(); lhi.Add(0); lds.Clear(); lds.Add(LineDirtyState.Clean);
                TextUtil.LHI_Insert(lhi, lds, text, "foo\rbar", 0);
                text.Add("foo\rbar".ToCharArray());
                for (int i = 0; i < lds.Count; i++)
                {
                    lds[i] = LineDirtyState.Clean;
                }

                TextUtil.LHI_Insert(lhi, lds, text, "\nx", 4);
                text.Insert(4, "\nx".ToCharArray());
                Assert.AreEqual("0 5", lhi.ToString());
                Assert.AreEqual("DD", MakeLdsText(lds));
            }

            // (3)
            {
                text.Clear(); lhi.Clear(); lhi.Add(0); lds.Clear(); lds.Add(LineDirtyState.Clean);
                TextUtil.LHI_Insert(lhi, lds, text, "foo\nbar", 0);
                text.Add("foo\nbar".ToCharArray());
                for (int i = 0; i < lds.Count; i++)
                {
                    lds[i] = LineDirtyState.Clean;
                }

                TextUtil.LHI_Insert(lhi, lds, text, "x\r", 3);
                text.Insert(3, "x\r".ToCharArray());
                Assert.AreEqual("0 6", lhi.ToString());
                Assert.AreEqual("DC", MakeLdsText(lds));
            }
        }
示例#19
0
 public abstract void Validate(TestData1 first, TestData3 third, IDictionary <TestData1, Result> results);