protected override void Context()
        {
            base.Context();
            _numberOfVariations = 5;
            _pkParameter1       = new QuantityPKParameter {
                QuantityPath = "Output1", Name = "AUC"
            };
            _pkParameter1.SetNumberOfIndividuals(_numberOfVariations);
            _pkParameter1.SetValue(0, 10);
            _pkParameter1.SetValue(1, 11);
            _pkParameter1.SetValue(2, 12);
            _pkParameter1.SetValue(4, _defaultPK1Value);

            _pkParameter2 = new QuantityPKParameter {
                QuantityPath = "Output2", Name = "Cmax"
            };
            _pkParameter2.SetNumberOfIndividuals(_numberOfVariations);
            _pkParameter2.SetValue(0, 20);
            _pkParameter2.SetValue(1, 21);
            _pkParameter2.SetValue(2, 22);
            _pkParameter2.SetValue(3, 23);
            _pkParameter2.SetValue(4, _defaultPK2Value);

            _sensitivityParameter1 = A.Fake <SensitivityParameter>().WithName("SP1");
            A.CallTo(() => _sensitivityParameter1.DefaultValue).Returns(10);

            _sensitivityParameter2 = A.Fake <SensitivityParameter>().WithName("SP2");
            A.CallTo(() => _sensitivityParameter2.DefaultValue).Returns(20);

            _sensitivityParameter3 = A.Fake <SensitivityParameter>().WithName("SP3");
            A.CallTo(() => _sensitivityParameter3.DefaultValue).Returns(0);
            A.CallTo(() => _sensitivityParameter3.VariationRangeValue).Returns(0.8);

            _pkAnalyses.AddPKAnalysis(_pkParameter1);
            _pkAnalyses.AddPKAnalysis(_pkParameter2);

            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter1);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter2);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter3);

            var pv11 = new ParameterVariation {
                ParameterName = _sensitivityParameter1.Name, VariationId = 0, Variation = new[] { 15d, 200d, 300d }
            };
            var pv12 = new ParameterVariation {
                ParameterName = _sensitivityParameter1.Name, VariationId = 1, Variation = new[] { 20d, 200d, 300d }
            };
            var pv21 = new ParameterVariation {
                ParameterName = _sensitivityParameter2.Name, VariationId = 2, Variation = new[] { 100d, 21d, 300d }
            };
            var pv22 = new ParameterVariation {
                ParameterName = _sensitivityParameter2.Name, VariationId = 3, Variation = new[] { 100d, 31d, 300d }
            };

            _variationData.DefaultValues = new[] { 100d, 200d, 300d };
            _variationData.AddVariation(pv11);
            _variationData.AddVariation(pv12);
            _variationData.AddVariation(pv21);
            _variationData.AddVariation(pv22);
        }
Example #2
0
        public static void Main()
        {
            var strokeCollection = new List <KeyValuePair <String, StrokeData> >();
            var param1           = new IntParamVariation("nAreaForStrokeMap", 10, 10, 20);
            var param2           = new DoubleParamVariation("minRadiusArea", 0.01, 0.04, 0.25);
            var param3           = new DoubleParamVariation("toleranceFactorArea", 1.1, 0.4, 2.5);
            var param5           = new BoolParamVariation("useFixAreaNumber", true);
            var param6           = new BoolParamVariation("useSmallestCircle", true);
            var param7           = new BoolParamVariation("isTranslationInvariant", true);
            var param8           = new BoolParamVariation("useAdaptiveTolerance", false);
            var param9           = new DoubleParamVariation("hitProbability", 0.9);
            var param10          = new StringParamVariation("distEstName", new string[]
            {
                nameof(NaiveUniformEstimator),
                nameof(NormalEstimator)
            });

            var param11   = new BoolParamVariation("useEllipsoid", false);
            var configSet = ParameterVariation.getParameterVariations(param1, param2, param3, param5, param6, param7, param8, param9, param10, param11).Select(ps => new CHnMMParameter(ps)).ToArray();
            CHnMMClassificationSystem cs = new CHnMMClassificationSystem(configSet[0]);

            string           ConnectionString = "Server=localhost; Port=5432; User Id=touchy; Password=123456;Database = touchy_data_development";
            NpgsqlConnection connection       = new NpgsqlConnection(ConnectionString);

            try
            {
                connection.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            NpgsqlCommand command = connection.CreateCommand();

            command.CommandText = "SELECT * FROM trajectories WHERE user_id='1'  AND gesture_id='0' AND is_password='******'";
            NpgsqlDataReader reader = command.ExecuteReader();
            DataTable        dt     = new DataTable();

            dt.Load(reader);

            foreach (DataRow row in dt.Rows)
            {
                string[,] db_points = row["points"] as string[, ];
                var gestureName = row["user_id"] + "-" + row["gesture_id"] + "-" + row["stroke_seq"];
                var user        = Convert.ToInt32(row["id"]);
                var trace       = Convert.ToInt32(row["stroke_seq"]);
                var trajectory  = new StrokeData(user, trace, db_points);
                strokeCollection.Add(new KeyValuePair <String, StrokeData>(gestureName, trajectory));
            }

            var lookup = strokeCollection.ToLookup(kvp => kvp.Key, kvp => kvp.Value);
            var keys   = lookup.Select(g => g.Key).ToList();

            for (int i = 0; i < keys.Count; i++)
            {
                List <StrokeData> fingerCollection = new List <StrokeData>();
                foreach (StrokeData x in lookup[keys[i]])
                {
                    fingerCollection.Add(x);
                }
                cs.trainGesture(keys[i], fingerCollection.Cast <BaseTrajectory>());
            }

            //command.CommandText = "SELECT * FROM trajectories WHERE exec_num='1' AND user_id='1' AND gesture_id='0'";
            command.CommandText = "SELECT * FROM trajectories WHERE user_id='1' AND gesture_id='0' AND is_password='******'";
            NpgsqlDataReader read = command.ExecuteReader();
            DataTable        vg   = new DataTable();

            vg.Load(read);

            var result = new double[vg.Rows.Count];
            int c      = 0;

            foreach (DataRow row in vg.Rows)
            {
                string[,] db_points = row["points"] as string[, ];
                var gestureName = row["user_id"] + "-" + row["gesture_id"] + "-" + row["stroke_seq"];
                var user        = Convert.ToInt32(row["id"]);
                var trace       = Convert.ToInt32(row["stroke_seq"]);
                var trajectory  = new StrokeData(user, trace, db_points);
                result[c] = cs.getSimilarity(gestureName, trajectory);
                c++;
            }

            bool ok = false;

            foreach (var prob in result)
            {
                Console.WriteLine(prob);
                if (prob <= 0)
                {
                    ok = false;
                    //break;
                }
                ok = true;
            }
            NpgsqlCommand insertion = connection.CreateCommand();

            if (ok)
            {
                Console.WriteLine(" Gesture matches!");
                insertion.CommandText = "UPDATE gestures SET verified=1 WHERE user_id=1";
                insertion.ExecuteNonQuery();
            }
            else
            {
                Console.WriteLine(" Gesture does not match!");
                insertion.CommandText = "UPDATE gestures SET verified=2 WHERE user_id=1";
                insertion.ExecuteNonQuery();
            }
        }
        public static void Main()
        {
            var param1  = new IntParamVariation("nAreaForStrokeMap", 10, 5, 20);
            var param2  = new DoubleParamVariation("minRadiusArea", 0.01);
            var param3  = new DoubleParamVariation("toleranceFactorArea", 1.7, 0.2, 2.1);
            var param5  = new BoolParamVariation("useFixAreaNumber", true);
            var param6  = new BoolParamVariation("useSmallestCircle", true);
            var param7  = new BoolParamVariation("isTranslationInvariant", false);
            var param8  = new BoolParamVariation("useAdaptiveTolerance", false);
            var param9  = new DoubleParamVariation("hitProbability", 0.9);
            var param10 = new StringParamVariation("distEstName", new string[]
            {
                nameof(NaiveUniformEstimator),
                nameof(NormalEstimator)
            });

            var              param11                 = new BoolParamVariation("useEllipsoid", false);
            var              configSet               = ParameterVariation.getParameterVariations(param1, param2, param3, param5, param6, param7, param8, param9, param10, param11).Select(ps => new CHnMMParameter(ps)).ToArray();
            string           ConnectionString        = "Server=localhost; Port=5432; User Id=macbook; Database = touchy_data_development";
            string           ConnectionString_heroku = "Database=dcbpejtem8e4qu; Server=ec2-54-75-239-237.eu-west-1.compute.amazonaws.com; Port=5432; User Id=pbcgcsyjsmpeds; Password=323743a3eec80c0a49dcee493617af7b94fee458a6a89a671dc3acaad0c3f437; Sslmode=Require;Trust Server Certificate=true";
            NpgsqlConnection connection              = new NpgsqlConnection(ConnectionString);

            try
            {
                connection.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            NpgsqlCommand command = connection.CreateCommand();

            //#########################################################
            //RECOGNITION TASK//
            //#########################################################

            command.CommandText = "SELECT id FROM Tgestures";
            NpgsqlDataReader ges_read      = command.ExecuteReader();
            DataTable        gesture_table = new DataTable();

            gesture_table.Load(ges_read);
            ges_read.Close();
            var set = configSet[0];
            //foreach (var set in configSet)
            //{
            bool head      = true;
            var  file_name = "../../recognition/";

            file_name += "tol_" + set.toleranceFactorArea;
            file_name += "_dist_" + set.distEstName;
            file_name += "_nArea_" + set.nAreaForStrokeMap;
            file_name += ".csv";
            Console.WriteLine(file_name);
            System.Text.StringBuilder sb = new System.Text.StringBuilder();

            CHnMMClassificationSystem cs = new CHnMMClassificationSystem(set);

            for (int global_user = 1; global_user < 12; global_user++)
            {
                foreach (DataRow gesture in gesture_table.Rows)
                {
                    List <StrokeData> gestureStrokes = new List <StrokeData>();
                    var accumulate = new List <KeyValuePair <int, string[]> >();
                    command.CommandText = "SELECT * FROM trajectories WHERE user_id = " + global_user + " AND gesture_id=" + gesture["id"] + " AND exec_num % 2 = 1 ORDER BY exec_num, stroke_seq;";
                    NpgsqlDataReader reader = command.ExecuteReader();
                    DataTable        dt     = new DataTable();
                    dt.Load(reader);
                    reader.Close();
                    var prev_exec   = 1;
                    var prev_stroke = 0;
                    var time_lapse  = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        if (prev_exec != Convert.ToInt32(row["exec_num"]))
                        {
                            var trajectory = new StrokeData(global_user, accumulate);
                            gestureStrokes.Add(trajectory);
                            prev_exec  = Convert.ToInt32(row["exec_num"]);
                            time_lapse = 0;
                            accumulate.Clear();
                        }

                        string[,] db_points = row["points"] as string[, ];
                        int trace     = Convert.ToInt32(row["stroke_seq"]);
                        int rowLength = db_points.GetLength(0);
                        if (prev_stroke != trace)
                        {
                            time_lapse = Convert.ToInt32(accumulate.Last().Value[2]);
                        }
                        for (int i = 0; i < rowLength; i++)
                        {
                            string[] single_pt = new string[4];
                            single_pt[0] = db_points[i, 0];
                            single_pt[1] = db_points[i, 1];
                            single_pt[2] = (Convert.ToInt32(db_points[i, 2]) + time_lapse).ToString();
                            single_pt[3] = trace.ToString();
                            accumulate.Add(new KeyValuePair <int, string[]>(Convert.ToInt32(db_points[i, 2]), single_pt));
                        }
                    }
                    if (accumulate.Count > 0)
                    {
                        var last_trajectory = new StrokeData(global_user, accumulate);
                        gestureStrokes.Add(last_trajectory);
                    }
                    var gestureName = global_user + "-" + gesture["id"];
                    cs.trainGesture(gestureName, gestureStrokes.Cast <BaseTrajectory>());
                    Console.WriteLine("=============================================================================\n");
                    Console.WriteLine("=============================================================================");
                }
            }
            for (int global_user = 1; global_user < 12; global_user++)
            {
                Console.WriteLine("User=========================================================" + global_user);
                foreach (DataRow gesture in gesture_table.Rows)
                {
                    var accumulate = new List <KeyValuePair <int, string[]> >();
                    command.CommandText = "SELECT * FROM trajectories WHERE user_id = " + global_user + " AND gesture_id=" + gesture["id"] + " AND exec_num % 2 = 0 ORDER BY exec_num, stroke_seq;";
                    NpgsqlDataReader reader = command.ExecuteReader();
                    DataTable        dt     = new DataTable();
                    dt.Load(reader);
                    reader.Close();
                    var prev_exec   = 2;
                    var prev_stroke = 0;
                    var time_lapse  = 0;
                    foreach (DataRow row in dt.Rows)
                    {
                        if (prev_exec != Convert.ToInt32(row["exec_num"]))
                        {
                            var trajectory = new StrokeData(global_user, accumulate);
                            cs.recognizeGesture(trajectory);
                            prev_exec  = Convert.ToInt32(row["exec_num"]);
                            time_lapse = 0;
                            accumulate.Clear();
                        }

                        string[,] db_points = row["points"] as string[, ];
                        int trace     = Convert.ToInt32(row["stroke_seq"]);
                        int rowLength = db_points.GetLength(0);
                        if (prev_stroke != trace)
                        {
                            time_lapse = Convert.ToInt32(accumulate.Last().Value[2]);
                        }
                        for (int i = 0; i < rowLength; i++)
                        {
                            string[] single_pt = new string[4];
                            single_pt[0] = db_points[i, 0];
                            single_pt[1] = db_points[i, 1];
                            single_pt[2] = (Convert.ToInt32(db_points[i, 2]) + time_lapse).ToString();
                            single_pt[3] = trace.ToString();
                            accumulate.Add(new KeyValuePair <int, string[]>(Convert.ToInt32(db_points[i, 2]), single_pt));
                        }
                    }
                    if (accumulate.Count > 0)
                    {
                        var last_trajectory = new StrokeData(global_user, accumulate);
                        var result          = cs.recognizeGesture(last_trajectory);
                        if (result == null)
                        {
                            Console.WriteLine(gesture["id"] + ": Not Recognized");
                        }
                        else
                        {
                            Console.WriteLine(gesture["id"] + ": " + result);
                        }
                    }
                }
            }
        }
Example #4
0
 private OutputParameterSensitivity calculateOutputParameterSensitivity(QuantityValues outputValue, ParameterVariation variationData, string parameterPath)
 {
     return(new OutputParameterSensitivity(variationData.ParameterName, parameterPath, variationData.ParameterValue, outputValue.QuantityPath, outputValue.Values, outputValue.Time.Values));
 }
        protected override void Context()
        {
            base.Context();
            _pkParameter1 = new QuantityPKParameter {
                QuantityPath = "Output1", Name = "AUC"
            };
            _pkParameter1.SetValue(0, 10);
            _pkParameter1.SetValue(1, 11);
            _pkParameter1.SetValue(2, 12);
            _pkParameter1.SetValue(4, _defaultPK1Value);

            _pkParameter2 = new QuantityPKParameter {
                QuantityPath = "Output2", Name = "Cmax"
            };
            _pkParameter2.SetValue(0, 20);
            _pkParameter2.SetValue(1, 21);
            _pkParameter2.SetValue(2, 22);
            _pkParameter2.SetValue(3, 23);
            _pkParameter2.SetValue(4, _defaultPK2Value);

            _pkAnalyses.AddPKAnalysis(_pkParameter1);
            _pkAnalyses.AddPKAnalysis(_pkParameter2);

            _sensitivityParameter1 = A.Fake <SensitivityParameter>().WithName("SP1");
            A.CallTo(() => _sensitivityParameter1.DefaultValue).Returns(10);
            A.CallTo(() => _sensitivityParameter1.ParameterSelection.Path).Returns("SP1-PATH");

            _sensitivityParameter2 = A.Fake <SensitivityParameter>().WithName("SP2");
            A.CallTo(() => _sensitivityParameter2.DefaultValue).Returns(20);
            A.CallTo(() => _sensitivityParameter2.ParameterSelection.Path).Returns("SP2-PATH");

            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter1);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter2);

            var pv11 = new ParameterVariation(parameterName: _sensitivityParameter1.Name, parameterIndex: 0, variationId: 0, variation: new[] { 15d, 200d, 300d });
            var pv12 = new ParameterVariation(parameterName: _sensitivityParameter1.Name, parameterIndex: 0, variationId: 1, variation: new[] { 20d, 200d, 300d });
            var pv21 = new ParameterVariation(parameterName: _sensitivityParameter2.Name, parameterIndex: 1, variationId: 2, variation: new[] { 100d, 21d, 300d });
            var pv22 = new ParameterVariation(parameterName: _sensitivityParameter2.Name, parameterIndex: 1, variationId: 3, variation: new[] { 100d, 31d, 300d });

            _variationData.DefaultValues = new[] { 100d, 200d, 300d };
            _variationData.AddVariation(pv11);
            _variationData.AddVariation(pv12);
            _variationData.AddVariation(pv21);
            _variationData.AddVariation(pv22);

            _timeValues = new QuantityValues {
                QuantityPath = "Time", Values = new[] { 1, 2, 3, 4, 5f }
            };

            _resV11 = new IndividualResults {
                IndividualId = 0, Time = _timeValues
            };
            _resV11.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 111.1f, 211.1f, 311.1f, 411.1f, 511.1f }
            });
            _resV11.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 111.2f, 211.2f, 311.2f, 411.2f, 511.2f }
            });
            _resV11.UpdateQuantityTimeReference();

            _resV12 = new IndividualResults {
                IndividualId = 1, Time = _timeValues
            };
            _resV12.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 112.1f, 212.1f, 312.1f, 412.1f, 512.1f }
            });
            _resV12.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 112.2f, 212.2f, 312.2f, 412.2f, 512.2f }
            });
            _resV12.UpdateQuantityTimeReference();

            _resV21 = new IndividualResults {
                IndividualId = 2, Time = _timeValues
            };
            _resV21.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 121.1f, 221.1f, 321.1f, 421.1f, 521.1f }
            });
            _resV21.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 121.2f, 221.2f, 321.2f, 421.2f, 521.2f }
            });
            _resV21.UpdateQuantityTimeReference();

            _resV22 = new IndividualResults {
                IndividualId = 3, Time = _timeValues
            };
            _resV22.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 122.1f, 222.1f, 322.1f, 422.1f, 522.1f }
            });
            _resV22.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 122.2f, 222.2f, 322.2f, 422.2f, 522.2f }
            });
            _resV22.UpdateQuantityTimeReference();


            _simulationResults.Add(_resV11);
            _simulationResults.Add(_resV12);
            _simulationResults.Add(_resV21);
            _simulationResults.Add(_resV22);
        }