/// <summary>
        /// Sets identity for table function
        /// </summary>
        /// <param name="tableFunction"></param>
        /// <param name="dictionary">Dictionary from data reader</param>
        protected virtual void SetIdentity(TableFunction tableFunction, IDictionary<string, object> dictionary)
        {
            var identity = string.Concat(dictionary["Identity"]);

            if (string.Compare(identity, "No identity column defined.", true) != 0)
                tableFunction.Identity = new Identity(identity, Convert.ToInt32(dictionary["Seed"]), Convert.ToInt32(dictionary["Increment"]));
        }
        /// <summary>
        /// Adds a column in table function from row dictionary
        /// </summary>
        /// <param name="tableFunction">Instance of <see cref="TableFunction"/> class</param>
        /// <param name="dictionary">Dictionary from data reader</param>
        protected virtual void AddColumn(TableFunction tableFunction, IDictionary<string, object> dictionary)
        {
            var column = SqlServerDatabaseFactoryHelper.GetColumn(dictionary);

            if (!DatabaseImportSettings.ExclusionTypes.Contains(column.Type))
                tableFunction.Columns.Add(column);
        }
        public InletFlux(BoundaryCondition BC, TableFunction _flux, GetBetaFunction getElasticBeta)
            : base(BC.core_node, BC.current_time)
        {
            this.previous_velocity = 0;

            base_flux_on_time = _flux;
            flux_on_time      = _flux;


            // Artery lumen of terminal and previous nodes are set the same
            core_node.lumen_sq_0 = neighbour_node.lumen_sq_0;
            core_node.lumen_sq   = core_node.lumen_sq_0;


            double R0 = Math.Sqrt(core_node.lumen_sq_0 / Math.PI);


            beta_1        = getElasticBeta(R0, core_node.elasticity) / core_node.lumen_sq_0;
            flux_function = delegate(double A)
            {
                return(A * chrt_back + 4 * Math.Pow(A, 1.25f) * Math.Sqrt(beta_1 / 2.0 / GlobalDefs.BLOOD_DENSITY) - flux_on_time(current_time));
            };

            this.chrt_back = -4 * Math.Pow(core_node.lumen_sq_0, 0.25f) * Math.Sqrt(beta_1 / 2.0f / GlobalDefs.BLOOD_DENSITY);
        }
Example #4
0
        //---------------------------------------------------------------------------
        void CalcIncidentRadns()
        {
            List <double> ios = new List <double>();
            //List<double> ets = new List<double>();

            List <double> time = new List <double>();

            int preDawn  = (int)Math.Floor(12 - DayLength / 2.0);
            int postDusk = (int)Math.Ceiling(12 + DayLength / 2.0);

            for (int i = 0; i < 24; i++)
            {
                time.Add(i);

                //ios.Add(ETs.value(i) * ratios.value(i));
                if (i > preDawn && i < postDusk)
                {
                    ios.Add(Math.Max(CalcInstantaneousIncidentRadiation(i), 0));
                }
                else
                {
                    ios.Add(0);
                }

                //ets.Add(ios[i] / 0.75);
            }
            Ios = new TableFunction(time.ToArray(), ios.ToArray(), false);
            //ETs = new TableFunction(time.ToArray(), ets.ToArray(), false);
        }
        /// <summary>
        /// Gets table functions from database connection
        /// </summary>
        /// <param name="connection">Instance of <see cref="DbConnection"/> class</param>
        /// <param name="tableFunctions">Sequence of table functions</param>
        /// <returns>A sequence of <see cref="TableFunction"/> that represents existing views in database</returns>
        protected virtual IEnumerable<TableFunction> GetTableFunctions(DbConnection connection, IEnumerable<DbObject> tableFunctions)
        {
            foreach (var dbObject in tableFunctions)
            {
                using (var command = connection.CreateCommand())
                {
                    var tableFunction = new TableFunction
                    {
                        Schema = dbObject.Schema,
                        Name = dbObject.Name
                    };

                    command.Connection = connection;
                    command.CommandText = string.Format("sp_help '{0}'", dbObject.FullName);

                    var queryResults = new List<QueryResult>();

                    using (var dataReader = command.ExecuteReader())
                    {
                        while (dataReader.NextResult())
                        {
                            var queryResult = new QueryResult();

                            while (dataReader.Read())
                            {
                                var names = SqlServerDatabaseFactoryHelper.GetNames(dataReader).ToList();

                                var row = new Dictionary<string, object>();

                                for (var i = 0; i < names.Count; i++)
                                    row.Add(names[i], dataReader.GetValue(i));

                                queryResult.Items.Add(row);
                            }

                            queryResults.Add(queryResult);
                        }

                        foreach (var result in queryResults)
                        {
                            foreach (var item in result.Items)
                            {
                                if (item.ContainsKey("Column_name"))
                                    AddColumn(tableFunction, item);
                                else if (item.ContainsKey("Identity"))
                                    SetIdentity(tableFunction, item);
                                else if (item.ContainsKey("Parameter_name"))
                                    AddParameter(tableFunction, item);
                            }
                        }

                        yield return tableFunction;
                    }
                }
            }
        }
Example #6
0
 private void ImportDescription(DbConnection connection, TableFunction tableFunction)
 {
     if (ImportSettings.ImportMSDescription)
     {
         foreach (var extendProperty in connection.GetMsDescriptionForDbObject(tableFunction))
         {
             tableFunction.Description = string.Concat(extendProperty.Value);
         }
     }
 }
Example #7
0
 public virtual TableFunction VisitTableFunction(TableFunction tf)
 {
     if (tf == null)
         return null;
     foreach (TableFunctionParameter parameter in tf.Arguments)
     {
         VisitTableFunctionParameter(parameter);
     }
     VisitTableFunctionReturn(tf.Return);
     return tf;
 }
Example #8
0
        public void CalcRatios()
        {
            double[] times = new double[24];

            for (int i = 0; i < 23; i++)
            {
                times[i] = i;
            }

            Ratios = new TableFunction(times, _ratios_);
        }
 private void ImportExtendedProperties(DbConnection connection, TableFunction tableFunction)
 {
     foreach (var name in DatabaseImportSettings.ExtendedProperties)
     {
         foreach (var extendedProperty in connection.GetExtendedProperties(tableFunction, name))
         {
             // todo: Remove this token
             if (name == "MS_Description")
                 tableFunction.Description = extendedProperty.Value;
         }
     }
 }
Example #10
0
        //---------------------------------------------------------------------------
        void CalcDirectRadns()
        {
            List <double> dirs = new List <double>();
            List <double> time = new List <double>();

            for (int i = 0; i < 24; i++)
            {
                time.Add(i);
                dirs.Add(Ios.Value(i) - Idiffs.Value(i));
            }
            Idirs = new TableFunction(time.ToArray(), dirs.ToArray(), false);
        }
Example #11
0
        //------------------------------------------------------------------------------------------------
        protected void CalcSVPs()
        {
            // calculates SVP at the air temperature
            List <double> svp  = new List <double>();
            List <double> time = new List <double>();

            for (int i = 0; i < 24; i++)
            {
                svp.Add(CalcSVP(Temps.YVals[i]));
                time.Add(i);
            }
            SVPs = new TableFunction(time.ToArray(), svp.ToArray(), false);
        }
Example #12
0
 public virtual TableFunction VisitTableFunction(TableFunction tf)
 {
     if (tf == null)
     {
         return(null);
     }
     foreach (TableFunctionParameter parameter in tf.Arguments)
     {
         VisitTableFunctionParameter(parameter);
     }
     VisitTableFunctionReturn(tf.Return);
     return(tf);
 }
        public FunctionNode(TableFunction function) : base(function.Name)
        {
            TableFunction = function;

            ImageKey         = "table-function";
            SelectedImageKey = "table-function";
            Columns          = function.Columns.Select(col => new ColumnNode(col)).ToList();

            var folder = new FolderNode("Parameters", function.Arguments.Count());

            Nodes.Add(folder);
            folder.Nodes.AddRange(function.Arguments.Select(p => new ParameterNode(p)).ToArray());
        }
Example #14
0
        public static double[] Test2()
        {
            var frame3 = Generators.InpulseSignal(1024, 128, 10);
            var frame2 = Generators.Sin(1024, 4, 1);
            var frame  = Generators.Sin(1024, 64, 1);
            //for (var i = 0; i < frame.Length; i++)
            //{
            //    frame[i] += frame2[i];// + frame3[i];
            //}
            var func = Correlation.AutoCorrelation(TableFunction.TableToFunction(frame, 1, 0, 1024), 1, 0, 1024);

            return(func);
        }
        public InletPressure(BoundaryCondition BC, TableFunction _pressure, GetBetaFunction getElasticBeta)
            : base(BC.core_node, BC.current_time)
        {
            pressure_on_time = _pressure;

            double R0 = Math.Sqrt(core_node.lumen_sq_0 / Math.PI);

            beta_1 = getElasticBeta(R0, core_node.elasticity) / core_node.lumen_sq_0;


            core_node.lumen_sq_0 = neighbour_node.lumen_sq_0;
            core_node.lumen_sq   = neighbour_node.lumen_sq_0;

            chrt = 4 * Math.Pow(core_node.lumen_sq_0, 0.25f) * Math.Sqrt(beta_1 / 2.0f / GlobalDefs.BLOOD_DENSITY);
        }
Example #16
0
        protected virtual IEnumerable <TableFunction> GetTableFunctions(DbConnection connection, IEnumerable <DbObject> tableFunctions)
        {
            foreach (var item in tableFunctions)
            {
                using (var command = connection.CreateCommand())
                {
                    command.Connection  = connection;
                    command.CommandText = string.Format("sp_help '{0}'", item.FullName);

                    using (var dataReader = command.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            var tableFunction = new TableFunction
                            {
                                Schema = item.Schema,
                                Name   = item.Name
                            };

                            dataReader.NextResult();

                            while (dataReader.Read())
                            {
                                var column = new Column();

                                column.Name      = string.Concat(dataReader["Column_name"]);
                                column.Type      = string.Concat(dataReader["Type"]);
                                column.Length    = int.Parse(string.Concat(dataReader["Length"]));
                                column.Prec      = string.Concat(dataReader["Prec"]).Trim().Length == 0 ? default(short) : short.Parse(string.Concat(dataReader["Prec"]));
                                column.Scale     = string.Concat(dataReader["Scale"]).Trim().Length == 0 ? default(short) : short.Parse(string.Concat(dataReader["Scale"]));
                                column.Nullable  = string.Compare(string.Concat(dataReader["Nullable"]), "yes", true) == 0 ? true : false;
                                column.Collation = string.Concat(dataReader["Collation"]);

                                if (ImportSettings.ExclusionTypes.Contains(column.Type))
                                {
                                    continue;
                                }

                                tableFunction.Columns.Add(column);
                            }

                            yield return(tableFunction);
                        }
                    }
                }
            }
        }
Example #17
0
        //------------------------------------------------------------------------------------------------
        protected void CalcVPDs()
        {
            List <double> time = new List <double>();
            List <double> vpd  = new List <double>();

            double AVP = CalcSVP(MinT); // Actual vapour pressure

            for (int i = 0; i < 24; i++)
            {
                //AD - Have checked. This formula is equivalent to above
                //vpd.Add((1 - (rhs.yVals[i] / 100)) * svps.yVals[i]);
                vpd.Add(SVPs.YVals[i] - AVP);
                time.Add(i);
            }

            VPDs = new TableFunction(time.ToArray(), vpd.ToArray(), false);
        }
Example #18
0
        public void setInletBC(string inlet_data, int node_number, InletType type)
        {
            TableFunction inlet_function = null;

            IO_Module.LoadTableFunctionFromString(inlet_data, out inlet_function);
            int id = v_net.bounds.FindIndex(x => x.core_node.id == node_number);

            if (type == InletType.FLUX)
            {
                v_net.bounds[id] = new InletFlux(v_net.bounds[id], inlet_function, GlobalDefs.getBoileauBeta);
            }

            if (type == InletType.PRESSURE)
            {
                v_net.bounds[id] = new InletPressure(v_net.bounds[id], inlet_function, GlobalDefs.getBoileauBeta);
            }
        }
Example #19
0
        //------------------------------------------------------------------------------------------------
        public void CalcTemps()
        {
            List <double> hours        = new List <double>();
            List <double> temperatures = new List <double>();

            Angle aDelt = new Angle(23.45 * Math.Sin(2 * Math.PI * (284 + _DOY) / 365), AngleType.Deg);
            Angle temp2 = new Angle(Math.Acos(-Math.Tan(Latitude.Rad) * Math.Tan(aDelt.Rad)), AngleType.Rad);

            double dayLength   = (temp2.Deg / 15) * 2;
            double nightLength = (24.0 - dayLength);                 // night hours
            // determine if the hour is during the day or night
            double t_mint = 12.0 - dayLength / 2.0 + ZLag;           // corrected dawn - GmcL
                                                                     //time of Tmin ??
            double t_suns = 12.0 + dayLength / 2.0;                  // sundown

            for (int t = 1; t <= 24; t++)
            {
                double hr = t;
                double temperature;

                if (hr >= t_mint && hr < t_suns)         //day
                {
                    double m = 0;
                    m           = hr - t_mint;
                    temperature = (MaxT - MinT) * Math.Sin((Math.PI * m) / (dayLength + 2 * XLag)) + MinT;
                }
                else                             // night
                {
                    double n = 0;
                    if (hr > t_suns)
                    {
                        n = hr - t_suns;
                    }
                    if (hr < t_mint)
                    {
                        n = (24.0 - t_suns) + hr;
                    }
                    double m_suns = dayLength - ZLag;
                    double T_suns = (MaxT - MinT) * Math.Sin((Math.PI * m_suns) / (dayLength + 2 * XLag)) + MinT;
                    temperature = MinT + (T_suns - MinT) * Math.Exp(-YLag * n / nightLength);
                }
                hours.Add(hr - 1);
                temperatures.Add(temperature);
            }
            Temps = new TableFunction(hours.ToArray(), temperatures.ToArray(), false);
        }
Example #20
0
        /// <summary>
        /// Generates table function model from schema data.
        /// </summary>
        /// <param name="dataContext">Data context model.</param>
        /// <param name="func">Function schema.</param>
        /// <param name="defaultSchemas">List of default database schema names.</param>
        private void BuildTableFunction(DataContextModel dataContext, TableFunction func, ISet <string> defaultSchemas)
        {
            var(name, isNonDefaultSchema) = ProcessObjectName(func.Name, defaultSchemas);

            var method = new MethodModel(
                _namingServices.NormalizeIdentifier(_options.DataModel.ProcedureNameOptions,
                                                    (func.Name.Package != null ? $"{func.Name.Package}_" : null) + name.Name))
            {
                Modifiers = Modifiers.Public,
                Summary   = func.Description
            };

            var metadata = new TableFunctionMetadata()
            {
                Name = name
            };
            var funcModel = new TableFunctionModel(
                name,
                method,
                metadata,
                _namingServices.NormalizeIdentifier(_options.DataModel.TableFunctionMethodInfoFieldNameOptions, func.Name.Name))
            {
                Error = func.SchemaError?.Message
            };

            BuildParameters(func.Parameters, funcModel.Parameters);

            if (func.Result != null)
            {
                funcModel.Result = PrepareResultSetModel(func.Name, func.Result);
            }

            _interceptors.PreprocessTableFunction(_languageProvider.TypeParser, funcModel);

            if (isNonDefaultSchema && _options.DataModel.GenerateSchemaAsType)
            {
                GetOrAddAdditionalSchema(dataContext, func.Name.Schema !).TableFunctions.Add(funcModel);
            }
            else
            {
                dataContext.TableFunctions.Add(funcModel);
            }
        }
Example #21
0
        //---------------------------------------------------------------------------
        private void ConvertRadiationsToPAR()
        {
            List <double> io_par    = new List <double>();
            List <double> idiff_par = new List <double>();
            List <double> idir_par  = new List <double>();
            List <double> time      = new List <double>();

            for (int i = 0; i < 24; i++)
            {
                time.Add(i);

                idiff_par.Add(Idiffs.Value(i) * RPAR * 4.25 * 1E6);
                idir_par.Add(Idirs.Value(i) * (1 - RPAR) * 4.56 * 1E6);

                io_par.Add(idiff_par[i] + idir_par[i]);
            }
            Ios_PAR    = new TableFunction(time.ToArray(), io_par.ToArray(), false);
            Idiffs_PAR = new TableFunction(time.ToArray(), idiff_par.ToArray(), false);
            Idirs_PAR  = new TableFunction(time.ToArray(), idir_par.ToArray(), false);
        }
Example #22
0
        static public TableFunction makeTableFunction(double[,] table_function_0)
        {
            double period = table_function_0[table_function_0.GetLength(0) - 1, 0] - table_function_0[0, 0];

            TableFunction t_f = delegate(double time)
            {
                double value = 0;

                int l_ind = 0;
                int r_ind = table_function_0.GetLength(0) - 1;

                time = time - period * Math.Floor(time / period);
                {
                    while ((r_ind - l_ind) > 1)
                    {
                        int cur_ind = l_ind + (r_ind - l_ind) / 2;
                        if (table_function_0[cur_ind, 0] > time)
                        {
                            r_ind = cur_ind;
                        }
                        else
                        {
                            l_ind = cur_ind;
                        }
                    }

                    double l_time = table_function_0[l_ind, 0];
                    double r_time = table_function_0[r_ind, 0];

                    double l_value = table_function_0[l_ind, 1];
                    double r_value = table_function_0[r_ind, 1];

                    value = l_value + (time - l_time) / (r_time - l_time) * (r_value - l_value);
                }

                return(value);
            };

            return(t_f);
        }
        private IList <Column> queryForFunctionColumns(TableFunction func)
        {
            var sql = new Sql(@"SELECT 
	                            C.name AS ColumnName
	                            , Y.[name] AS BaseDataTypeName
	                            , C.is_nullable AS AllowNull

                            FROM sys.objects AS T	
	                            INNER JOIN sys.schemas AS S
		                            ON ( T.schema_id = S.schema_id )
	                            INNER JOIN sys.columns AS C
		                            ON ( T.object_id = C.object_id )
	                            INNER JOIN sys.types AS Y
		                            ON ( Y.user_type_id  = C.user_type_id )

                            WHERE T.object_id = @0
	                            AND T.type = 'TF'

                            ORDER BY C.column_id, C.name;", func.FunctionId);

            return(this.peta.Fetch <Column>(sql));
        }
Example #24
0
        //---------------------------------------------------------------------------
        void CalcDiffuseRadns()
        {
            List <double> diffs = new List <double>();
            List <double> ets   = new List <double>();
            List <double> time  = new List <double>();

            for (int i = 0; i < 24; i++)
            {
                time.Add(i);
                CalcSolarGeometryTimestep(i);

                diffs.Add(Math.Max(FracDiffuseATM * SolarConstant * Math.Sin(SunAngle.Rad) / 1000000, 0));
                // ets.Add(diffs[i] / fracDiffuseATM);

                if (diffs[i] > Ios.Value(i))
                {
                    diffs[i] = Ios.Value(i);
                }
            }
            Idiffs = new TableFunction(time.ToArray(), diffs.ToArray(), false);
            // ETs = new TableFunction(time.ToArray(), ets.ToArray(), false);
        }
Example #25
0
        public static EntityClassDefinition CreateView(this DapperProject project, TableFunction tableFunction)
        {
            var definition = new EntityClassDefinition();

            definition.Namespaces.Add("System");

            definition.Namespace = tableFunction.HasDefaultSchema() ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(tableFunction.Schema);

            definition.Name = tableFunction.GetEntityName();

            definition.Constructors.Add(new ClassConstructorDefinition());

            if (!string.IsNullOrEmpty(tableFunction.Description))
            {
                definition.Documentation.Summary = tableFunction.Description;
            }

            var selection = project.GetSelection(tableFunction);

            foreach (var column in tableFunction.Columns)
            {
                definition.Properties.Add(new PropertyDefinition(project.Database.ResolveType(column), column.GetPropertyName()));

                //if (selection.Settings.UseAutomaticPropertiesForEntities)
                //    definition.Properties.Add(new PropertyDefinition(project.Database.ResolveType(column), tableFunction.GetPropertyNameHack(column)));
                //else
                //    definition.AddPropertyWithField(project.Database.ResolveType(column), tableFunction.GetPropertyNameHack(column));
            }

            definition.Implements.Add("IEntity");

            if (selection.Settings.SimplifyDataTypes)
            {
                definition.SimplifyDataTypes();
            }

            return(definition);
        }
Example #26
0
        //------------------------------------------------------------------------------------------------
        protected void CalcRHs()
        {
            List <double> time = new List <double>();
            List <double> rh   = new List <double>();
            // calculate relative humidity
            double wP;

            if (MaxRH < 0.0 || MinRH < 0.0)
            {
                wP = CalcSVP(_minT) / 100 * 1000 * 90;         // svp at Tmin
            }
            else
            {
                wP = (CalcSVP(_minT) / 100 * 1000 * MaxRH + CalcSVP(_maxT) / 100 * 1000 * MinRH) / 2.0;
            }

            for (int i = 0; i < 24; i++)
            {
                rh.Add(wP / (10 * SVPs.YVals[i]));
            }

            RHs = new TableFunction(time.ToArray(), rh.ToArray(), false);
        }
Example #27
0
        protected virtual IEnumerable <TableFunction> GetTableFunctions(DbConnection connection, IEnumerable <DbObject> tableFunctions)
        {
            foreach (var item in tableFunctions)
            {
                using (var command = connection.CreateCommand())
                {
                    command.Connection  = connection;
                    command.CommandText = string.Format("sp_help '{0}'", item.FullName);

                    using (var dataReader = command.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            var tableFunction = new TableFunction
                            {
                                Schema = item.Schema,
                                Name   = item.Name
                            };

                            dataReader.NextResult();

                            if (dataReader.HasRows && dataReader.GetName(0) == "Column_name")
                            {
                                while (dataReader.Read())
                                {
                                    var column = new Column();

                                    column.Name      = string.Concat(dataReader["Column_name"]);
                                    column.Type      = string.Concat(dataReader["Type"]);
                                    column.Length    = int.Parse(string.Concat(dataReader["Length"]));
                                    column.Prec      = string.Concat(dataReader["Prec"]).Trim().Length == 0 ? default(short) : short.Parse(string.Concat(dataReader["Prec"]));
                                    column.Scale     = string.Concat(dataReader["Scale"]).Trim().Length == 0 ? default(short) : short.Parse(string.Concat(dataReader["Scale"]));
                                    column.Nullable  = string.Compare(string.Concat(dataReader["Nullable"]), "yes", true) == 0 ? true : false;
                                    column.Collation = string.Concat(dataReader["Collation"]);

                                    if (ImportSettings.ExclusionTypes.Contains(column.Type))
                                    {
                                        continue;
                                    }

                                    tableFunction.Columns.Add(column);
                                }
                            }

                            dataReader.NextResult();

                            if (dataReader.HasRows && dataReader.GetName(0) == "Identity")
                            {
                                // todo: Add code to set identity
                            }

                            dataReader.NextResult();

                            if (dataReader.HasRows && dataReader.GetName(0) == "RowGuidCol")
                            {
                                // todo: Add code to set row guid col
                            }

                            dataReader.NextResult();

                            if (dataReader.HasRows && dataReader.GetName(0) == "Parameter_name")
                            {
                                while (dataReader.Read())
                                {
                                    var parameter = new Parameter();

                                    parameter.Name       = string.Concat(dataReader["Parameter_name"]);
                                    parameter.Type       = string.Concat(dataReader["Type"]);
                                    parameter.Length     = short.Parse(string.Concat(dataReader["Length"]));
                                    parameter.Prec       = string.Concat(dataReader["Prec"]).Trim().Length == 0 ? default(int) : int.Parse(string.Concat(dataReader["Prec"]));
                                    parameter.ParamOrder = string.Concat(dataReader["Param_order"]).Trim().Length == 0 ? default(int) : int.Parse(string.Concat(dataReader["Param_order"]));
                                    parameter.Collation  = string.Concat(dataReader["Collation"]);

                                    tableFunction.Parameters.Add(parameter);
                                }
                            }

                            yield return(tableFunction);
                        }
                    }
                }
            }
        }
Example #28
0
 public static string GetColumnName(this TableFunction tableFunction, Column column)
 => string.Format("[{0}].[{1}].[{2}]", tableFunction.Schema, tableFunction.Name, column.Name);
 public static string GetColumnName(this Database database, TableFunction tableFunction, IColumn column)
 => database.NamingConvention.GetObjectName(tableFunction.Schema, tableFunction.Name, column.Name);
Example #30
0
        public static SongParametrs Detector(SongData data)
        {
            var parametrs = new SongParametrs();

            parametrs.Song = data;

            double[] signal = new double[data.leng];

            //Объединение сигналов
            for (int i = 0; i < data.leng; i++)
            {
                signal[i] = data.Left[i] + data.Right[i];
            }
            int st        = 10;
            int frameSize = 1 << st;
            int sst       = 0;
            int s         = 1 << sst;
            int step      = 1;
            int HiFilter  = 1 << 3;

            //Преобразование фурье
            parametrs.TransformSong = FastFourierTransform.WindowFFTParalell(signal, frameSize, step, s, st - sst);



            //Диффирационный фильтр
            List <double[]> FrequencyFunctions = new List <double[]>();


            for (int i = 0; i < frameSize / HiFilter; i++)
            {
                double[] func = new double[data.leng / step];
                for (int j = 0; j < data.leng / step; j++)
                {
                    func[j] = parametrs.TransformSong[j, i];
                }
                func = Filters.Differentiator5(func);
                FrequencyFunctions.Add(func);
            }
            ppp = FrequencyFunctions;

            //Суммирование
            parametrs.BeatFunction = new double[data.leng / step];
            for (int i = 0; i < data.leng / step; i++)
            {
                parametrs.BeatFunction[i] = 0;
                for (int j = 1; j < frameSize / HiFilter; j++)
                {
                    parametrs.BeatFunction[i] += Math.Abs(FrequencyFunctions[j][i]);
                }
            }

            var f   = Filters.DellShum(parametrs.BeatFunction);
            var cor = Correlation.Easy(TableFunction.TableToFunction(f, 1, 0, parametrs.BeatFunction.Length), 1, 0, parametrs.BeatFunction.Length / 3);

            var Max = MaxAssistance.LocalMax2(MaxAssistance.LocalMax(MaxAssistance.CompressFunc(cor, 1, 0), 220), 10);

            var BeatMax = MaxAssistance.LocalMax2(MaxAssistance.LocalMax(parametrs.BeatFunction, 220), 10);


            double BPMd = Max[1].Item1 * 1 * step;

            int sd = (int)BeatMax[0].Item1 * step;

            parametrs.Temp = 60 * 44100 / BPMd;

            parametrs.TempD = (int)BPMd;

            parametrs.StartBeat = sd;

            return(parametrs);
        }
Example #31
0
        private static MethodDefinition GetGetAllMethod(ProjectFeature <DapperProjectSettings> projectFeature, TableFunction tableFunction)
        {
            var lines = new List <ILine>();

            lines.Add(new CommentLine(" Create connection instance"));
            lines.Add(new CodeLine("using (var connection = new SqlConnection(ConnectionString))"));
            lines.Add(new CodeLine("{"));

            var selection = projectFeature.GetDapperProject().GetSelection(tableFunction);

            if (selection.Settings.UseStringBuilderForQueries)
            {
                lines.Add(new CommentLine(1, " Create string builder for query"));
                lines.Add(new CodeLine(1, "var query = new StringBuilder();"));
                lines.Add(new CodeLine());
                lines.Add(new CommentLine(1, " Create sql statement"));
                lines.Add(new CodeLine(1, "query.Append(\" select \");"));

                for (var i = 0; i < tableFunction.Columns.Count; i++)
                {
                    var column = tableFunction.Columns[i];

                    lines.Add(new CodeLine(1, "query.Append(\"  {0}{1} \");", tableFunction.GetColumnName(column), i < tableFunction.Columns.Count - 1 ? "," : string.Empty));
                }

                var selectParameters = tableFunction.Parameters.Count == 0 ? string.Empty : string.Join(", ", tableFunction.Parameters.Select(item => item.Name));

                lines.Add(new CodeLine(1, "query.Append(\" from \");"));
                lines.Add(new CodeLine(1, "query.Append(\"  {0}({1}) \");", tableFunction.GetFullName(), selectParameters));
                lines.Add(new CodeLine());
            }
            else
            {
                lines.Add(new CommentLine(1, " Create sql statement"));
                lines.Add(new CodeLine(1, "var query = @\" select "));

                for (var i = 0; i < tableFunction.Columns.Count; i++)
                {
                    var column = tableFunction.Columns[i];

                    lines.Add(new CodeLine(1, "  {0}{1} ", tableFunction.GetColumnName(column), i < tableFunction.Columns.Count - 1 ? "," : string.Empty));
                }

                var selectParameters = tableFunction.Parameters.Count == 0 ? string.Empty : string.Join(", ", tableFunction.Parameters.Select(item => item.Name));

                lines.Add(new CodeLine(1, " from "));
                lines.Add(new CodeLine(1, "  {0}({1}) ", tableFunction.GetFullName(), selectParameters));
                lines.Add(new CodeLine(1, " \";"));
                lines.Add(new CodeLine());
            }

            if (tableFunction.Parameters.Count > 0)
            {
                lines.Add(new CommentLine(1, " Create parameters collection"));
                lines.Add(new CodeLine(1, "var parameters = new DynamicParameters();"));
                lines.Add(new CodeLine());

                lines.Add(new CommentLine(1, " Add parameters to collection"));

                foreach (var parameter in tableFunction.Parameters)
                {
                    lines.Add(new CodeLine(1, "parameters.Add(\"{0}\", {1});", parameter.Name, NamingConvention.GetCamelCase(parameter.Name.Replace("@", ""))));
                }

                lines.Add(new CodeLine());
            }

            lines.Add(new CommentLine(1, " Retrieve result from database and convert to typed list"));

            if (tableFunction.Parameters.Count == 0)
            {
                lines.Add(new CodeLine(1, "return await connection.QueryAsync<{0}>(query.ToString());", tableFunction.GetEntityName()));
            }
            else
            {
                lines.Add(new CodeLine(1, "return await connection.QueryAsync<{0}>(query.ToString(), parameters);", tableFunction.GetEntityName()));
            }

            lines.Add(new CodeLine("}"));

            var parameters = new List <ParameterDefinition>();

            foreach (var parameter in tableFunction.Parameters)
            {
                parameters.Add(new ParameterDefinition(projectFeature.Project.Database.ResolveType(parameter.Type).ClrAliasType, NamingConvention.GetCamelCase(parameter.Name.Replace("@", ""))));
            }

            return(new MethodDefinition(string.Format("Task<IEnumerable<{0}>>", tableFunction.GetEntityName()), tableFunction.GetGetAllRepositoryMethodName(), parameters.ToArray())
            {
                IsAsync = true,
                Lines = lines
            });
        }