Пример #1
0
        public void CalculateNba(NbaGame nbaGame)
        {
            Dictionary <string, Dictionary <string, double> > modelData = nbaGame.ModelData;

            LoadTables(modelData);
            SetSecondFoulPossession(nbaGame);

            string saveFileName = GetSaveFullFileName(nbaGame);

            SaveModel(saveFileName);
            //LogArrayValues();
        }
Пример #2
0
        //private void LogArrayValues()
        //{
        //    CATable caTable = GetDefTable("OPP");
        //    string[] indexArray = { "iMTR", "iTVH", "iPLY", "iAlt", "iGL2" };

        //    // todo fails here
        //    if (!caTable.SetIndexOrder(indexArray))
        //    {
        //        string message = $"SetIndexOrder() failed: indexArray = {ConvertIndexArrayToString(indexArray)}";
        //        throw new Exception(message);
        //    }

        //    dynamic safeArray = caTable.GetSafeArray();
        //    Array array = (Array)safeArray;
        //    WriteLine(array);

        //    caTable = GetDefTable("FP");
        //    // todo missing SetIndexOrder()?
        //    safeArray = caTable.GetSafeArray();
        //    array = (Array)safeArray;
        //    WriteLine(array);
        //}

        private static string GetSaveFullFileName(NbaGame nbaGame)
        {
            const string dateFormat     = "yyyymmd";
            string       dateTimeString = DateTime.Now.ToString(dateFormat);
            string       saveFileName   = $"{nbaGame.Away}_{nbaGame.Home}_{nbaGame.GameId}_{dateTimeString}.ana";

            // todo directory is wrong for some reason?
            string baseDirectory    = Utils.GetBaseDirectory();
            string saveFullFileName = Path.Combine(baseDirectory, "AnalyticaSavedModels", saveFileName);

            Logger.Debug($"saveFullFileName = {saveFullFileName}");

            return(saveFullFileName);
        }
Пример #3
0
        // "assists"
        // "points"
        // "blocks"
        // "rebounds"
        // "steals"
        // "threepointattempted"
        // "threepointmade"
        // "turnovers"
        // "twopointattempted"
        // "twopointmade"
        // "freethrowattempted"
        // "freethrowmade"

        #endregion

        public List <NbaGame> GetGames()
        {
            List <NbaGame> gameEventList = new List <NbaGame>();

            using (MySqlConnection mySqlConnection = MySqlConnection)
            {
                mySqlConnection.Open();
                const string storedProcedure = "pbp.GetGames";

                using (MySqlCommand mySqlCommand = new MySqlCommand(storedProcedure, mySqlConnection))
                {
                    mySqlCommand.CommandType = CommandType.StoredProcedure;

                    using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
                    {
                        if (!mySqlDataReader.HasRows)
                        {
                            const string error   = "GetGameEvents() has no rows";
                            string       message = $"{error,40}, {storedProcedure,40}\n";
                            Write(message);

                            return(gameEventList);
                        }

                        while (mySqlDataReader.Read())
                        {
                            NbaGame nbaGame = new NbaGame
                            {
                                GameId     = mySqlDataReader.GetGuid("comp_id"),
                                GameTime   = mySqlDataReader.GetDateTime("game_time"),
                                AwayTeamId = mySqlDataReader.GetGuid("away_team_id"),
                                HomeTeamId = mySqlDataReader.GetGuid("home_team_id"),
                                Away       = mySqlDataReader.GetString("away"),
                                Home       = mySqlDataReader.GetString("home")
                            };

                            gameEventList.Add(nbaGame);
                        }

                        return(gameEventList);
                    }
                }
            }
        }
Пример #4
0
        private void SetSecondFoulPossession(NbaGame nbaGame)
        {
            CATable caTable = GetDefTable("EGT");

            string[] indexArray = { "S" };
            int      seconds    = nbaGame.NbaScore.Seconds;

            if (!caTable.SetDataByLabels(seconds, indexArray))
            {
                string message = $"SetDataByLabels() failed: seconds = {seconds}, indexArray1 = {ConvertIndexArrayToString(indexArray)}";
                Logger.Error(message);
                throw new Exception(message);
            }

            indexArray = new[] { "F" };
            int foul = nbaGame.Foul;

            if (!caTable.SetDataByLabels(foul, indexArray))
            {
                string message = $"SetDataByLabels() failed: foul = {foul}, indexArray2 = {ConvertIndexArrayToString(indexArray)}";
                throw new Exception(message);
            }

            indexArray = new[] { "P" };
            string possession = $"{nbaGame.Possession}";

            Logger.Info($"possession = {possession}, indexArray3 = {ConvertIndexArrayToString(indexArray)}");

            // todo bug here
            if (!caTable.SetDataByLabels(possession, indexArray))
            {
                throw new Exception($"SetDataByLabels() failed: possession = {possession}, indexArray3 = {ConvertIndexArrayToString(indexArray)}");
            }

            if (!caTable.Update())
            {
                throw new Exception("Update() failed");
            }
        }