Exemplo n.º 1
0
 public NumericDataModel()
 {
     _data     = new NumericDataCollection();
     _function = new RandomFunction {
         DataPoints = 1000, ValueStart = 100
     };
     _function.PropertyChanged += OnFunctionPropertyChanged;
     this.Generate();
 }
Exemplo n.º 2
0
        public async Task Cube_ShouldReturnCube(int input, int expected)
        {
            //Arrange
            var req = FakeHttpRequest.FakeHttpRequestWithObject(new { Num = input });
            var log = new FakeListLogger();
            //Act
            var response = (OkObjectResult)await RandomFunction.Cube(req, log);

            //Assert
            response.StatusCode.Should().Be((int)HttpStatusCode.OK);
            response.Value.Should().Be(expected);
            log.Logs[0].Should().Be($"{input} cube is {expected}");
        }
Exemplo n.º 3
0
        private void buttonInitializeNet_Click(object sender, EventArgs e)
        {
            if (currentProject == null)
            {
                MessageBox.Show("No network loaded.", "Invalid Operation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            DialogResult dr = MessageBox.Show("All weights will be reset - are you sure?", "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);

            if (dr == DialogResult.OK)
            {
                try
                {
                    IInitializer initFunct;
                    double       tmp;
                    double?      param1 = null;
                    double?      param2 = null;
                    if (double.TryParse(textParam1.Text, out tmp))
                    {
                        param1 = tmp;
                    }
                    if (double.TryParse(textParam2.Text, out tmp))
                    {
                        param2 = tmp;
                    }
                    switch ((InitializerFunction)comboInitializeFunction.SelectedItem)
                    {
                    case InitializerFunction.Constant: initFunct = new ConstantFunction(param1.Value); break;

                    case InitializerFunction.NguyenWidrow: initFunct = new NguyenWidrowFunction(param1.Value); break;

                    case InitializerFunction.NormRand: initFunct = new NormalizedRandomFunction(); break;

                    case InitializerFunction.Random: initFunct = new RandomFunction(param1.Value, param2.Value); break;

                    case InitializerFunction.Zero: initFunct = new ZeroFunction(); break;

                    default: throw new Exception("InitializerFunction undefined.");
                    }
                    // 需要设置回前面因为反序列化在新状态下失败。 不知道为什么。
                    IInitializer oldInitializer;
                    foreach (ILayer layer in currentProject.Network.Layers)
                    {
                        oldInitializer    = layer.Initializer;
                        layer.Initializer = initFunct;
                        layer.Initialize();
                        layer.Initializer = oldInitializer;
                        foreach (IConnector conn in layer.TargetConnectors)
                        {
                            oldInitializer   = conn.Initializer;
                            conn.Initializer = initFunct;
                            conn.Initialize();
                            conn.Initializer = oldInitializer;
                        }
                    }
                    //currentProject.Network.Initialize(); 已单独调用
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error in program - " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        /// <summary>
        /// Tries to create an Leviathan Function expression if the function Uri correseponds to a supported Leviathan Function
        /// </summary>
        /// <param name="u">Function Uri</param>
        /// <param name="args">Function Arguments</param>
        /// <param name="scalarArgs">Scalar Arguments</param>
        /// <param name="expr">Generated Expression</param>
        /// <returns>Whether an expression was successfully generated</returns>
        public bool TryCreateExpression(Uri u, List <ISparqlExpression> args, Dictionary <String, ISparqlExpression> scalarArgs, out ISparqlExpression expr)
        {
            // If any Scalar Arguments are present then can't possibly be a Leviathan Function
            if (scalarArgs.Count > 0)
            {
                expr = null;
                return(false);
            }

            String func = u.ToString();

            if (func.StartsWith(LeviathanFunctionsNamespace))
            {
                func = func.Substring(LeviathanFunctionsNamespace.Length);
                ISparqlExpression lvnFunc = null;

                switch (func)
                {
                case All:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new AllAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new AllAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for Leviathan all() aggregate");
                    }
                    break;

                case Any:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new AnyAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new AnyAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for Leviathan any() aggregate");
                    }
                    break;

                case Cartesian:
                    if (args.Count == 4)
                    {
                        lvnFunc = new CartesianFunction(args[0], args[1], args[2], args[3]);
                    }
                    else if (args.Count == 6)
                    {
                        lvnFunc = new CartesianFunction(args[0], args[1], args[2], args[3], args[4], args[5]);
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for Leviathan cartesian() function");
                    }
                    break;

                case Cube:
                    if (args.Count == 1)
                    {
                        lvnFunc = new CubeFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan cube() function");
                    }
                    break;

                case DegreesToRadians:
                    if (args.Count == 1)
                    {
                        lvnFunc = new DegreesToRadiansFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan degrees-to-radians() function");
                    }
                    break;

                case E:
                    if (args.Count == 1)
                    {
                        lvnFunc = new EFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan e() function");
                    }
                    break;

                case Factorial:
                    if (args.Count == 1)
                    {
                        lvnFunc = new FactorialFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan factorial() function");
                    }
                    break;

                case Ln:
                    if (args.Count == 1)
                    {
                        lvnFunc = new LeviathanNaturalLogFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan ln() function");
                    }
                    break;

                case Log:
                    if (args.Count == 1)
                    {
                        lvnFunc = new LogFunction(args.First());
                    }
                    else if (args.Count == 2)
                    {
                        lvnFunc = new LogFunction(args.First(), args.Last());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan log() function");
                    }
                    break;

                case MD5Hash:
                    if (args.Count == 1)
                    {
                        lvnFunc = new MD5HashFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan md5hash() function");
                    }
                    break;

                case Median:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new MedianAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new MedianAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan median() aggregate");
                    }
                    break;

                case Mode:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new ModeAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new ModeAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan mode() aggregate");
                    }
                    break;

                case None:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new NoneAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new NoneAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan none() aggregate");
                    }
                    break;

                case NumericMax:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new NumericMaxAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new NumericMaxAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan nmax() aggregate");
                    }
                    break;

                case NumericMin:
                    if (args.Count == 1)
                    {
                        lvnFunc = new AggregateTerm(new NumericMinAggregate(args.First()));
                    }
                    else if (args.Count == 2 && args.First() is DistinctModifier)
                    {
                        lvnFunc = new AggregateTerm(new NumericMinAggregate(args.Last(), true));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan nmin() aggregate");
                    }
                    break;

                case Power:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SquareFunction(args.First());
                    }
                    else if (args.Count == 2)
                    {
                        lvnFunc = new PowerFunction(args.First(), args.Last());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan pow() function");
                    }
                    break;

                case Pythagoras:
                    if (args.Count == 2)
                    {
                        lvnFunc = new PythagoreanDistanceFunction(args.First(), args.Last());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan pythagoras() function");
                    }
                    break;

                case RadiansToDegrees:
                    if (args.Count == 1)
                    {
                        lvnFunc = new RadiansToDegreesFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan radians-to-degrees() function");
                    }
                    break;

                case Random:
                    if (args.Count == 0)
                    {
                        lvnFunc = new RandomFunction();
                    }
                    else if (args.Count == 1)
                    {
                        lvnFunc = new RandomFunction(args.First());
                    }
                    else if (args.Count == 2)
                    {
                        lvnFunc = new RandomFunction(args.First(), args.Last());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan rnd() function");
                    }
                    break;

                case Reciprocal:
                    if (args.Count == 1)
                    {
                        lvnFunc = new ReciprocalFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan reciprocal() function");
                    }
                    break;

                case Root:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SquareRootFunction(args.First());
                    }
                    else if (args.Count == 2)
                    {
                        lvnFunc = new RootFunction(args.First(), args.Last());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan root() function");
                    }
                    break;

                case Sha256Hash:
                    if (args.Count == 1)
                    {
                        lvnFunc = new Sha256HashFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan sha256hash() function");
                    }
                    break;

                case Square:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SquareFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan sq() function");
                    }
                    break;

                case SquareRoot:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SquareRootFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan sqrt() function");
                    }
                    break;

                case Ten:
                    if (args.Count == 1)
                    {
                        lvnFunc = new TenFunction(args.First());
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan ten() function");
                    }
                    break;

                case TrigCos:
                case TrigCosInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new CosineFunction(args.First(), func.Equals(TrigCosInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;

                case TrigCosec:
                case TrigCosecInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new CosecantFunction(args.First(), func.Equals(TrigCosecInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;

                case TrigCotan:
                case TrigCotanInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new CotangentFunction(args.First(), func.Equals(TrigCotanInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;

                case TrigSec:
                case TrigSecInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SecantFunction(args.First(), func.Equals(TrigSecInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;

                case TrigSin:
                case TrigSinInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new SineFunction(args.First(), func.Equals(TrigSinInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;

                case TrigTan:
                case TrigTanInv:
                    if (args.Count == 1)
                    {
                        lvnFunc = new TangentFunction(args.First(), func.Equals(TrigTanInv));
                    }
                    else
                    {
                        throw new RdfParseException("Incorrect number of arguments for the Leviathan " + func + "() function");
                    }
                    break;
                }

                if (lvnFunc != null)
                {
                    expr = lvnFunc;
                    return(true);
                }
            }
            expr = null;
            return(false);
        }