Esempio n. 1
0
        private void PrepareStagingArea(Texture previewTexture)
        {
            this.m_StagingPath = Path.Combine(Path.Combine(DataLocation.localApplicationData, "WorkshopStagingArea"), Guid.NewGuid().ToString());
            Directory.CreateDirectory(this.m_StagingPath);
            //begin mod
            this.m_PreviewPath = Path.Combine(this.m_StagingPath, "PreviewImage.png");
            foreach (var previewImageFilename in PreviewImageFilenames)
            {
                var sourceFileName = Path.Combine(this.m_TargetFolder, previewImageFilename);
                if (File.Exists(sourceFileName))
                {
                    File.Copy(sourceFileName, m_PreviewPath);
                    break;
                }
            }

            if (!File.Exists(m_PreviewPath))
            {
                var texture2D = UnityEngine.Object.Instantiate((Texture)m_DefaultModPreviewTexture) as Texture2D;
                if (texture2D != null)
                {
                    File.WriteAllBytes(m_PreviewPath, texture2D.EncodeToPNG());
                }
            }
            //end mod
            ReloadPreviewImage();
            this.m_ContentPath = Path.Combine(this.m_StagingPath, "Content" + (object)Path.DirectorySeparatorChar);
            Directory.CreateDirectory(this.m_ContentPath);
            WorkshopHelper.DirectoryCopy(this.m_TargetFolder, this.m_ContentPath, true);
            this.StartWatchingPath();
        }
Esempio n. 2
0
        public void Train()
        {
            var modelPath        = WorkshopHelper.GetModelPath(ModelFile);
            var trainingData     = WorkshopHelper.GetTrainingDataFile("packt", TrainingFile);
            var trainingDataView = WorkshopHelper.LoadTrainingData <RestaurantFeedback>(Context, trainingData);

            // Split sample data into training and test
            var dataSplit = Context.Data.TrainTestSplit(trainingDataView, testFraction: 0.2);

            var processPipeline = Context.Transforms.Text.FeaturizeText(
                outputColumnName: "Features",
                inputColumnName: nameof(RestaurantFeedback.Text));

            var trainer = Context.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: nameof(RestaurantFeedback.Label),
                                                                                       featureColumnName: "Features")
                          .AppendCacheCheckpoint(Context);

            var trainingPipeline = processPipeline.Append(trainer);

            var trainedModel = trainingPipeline.Fit(dataSplit.TrainSet);

            Context.Model.Save(trainedModel, dataSplit.TrainSet.Schema, modelPath);

            var testSetTransform = trainedModel.Transform(dataSplit.TestSet);

            var modelMetrics = Context.BinaryClassification.Evaluate(data: testSetTransform, labelColumnName: nameof(RestaurantFeedback.Label), nameof(RestaurantPrediction.Score));

            Console.WriteLine($"Area Under Curve: {modelMetrics.AreaUnderRocCurve:P2}{Environment.NewLine}" +
                              $"Area Under Precision Recall Curve: {modelMetrics.AreaUnderPrecisionRecallCurve:P2}{Environment.NewLine}" +
                              $"Accuracy: {modelMetrics.Accuracy:P2}{Environment.NewLine}" +
                              $"F1Score: {modelMetrics.F1Score:P2}{Environment.NewLine}" +
                              $"Positive Recall: {modelMetrics.PositiveRecall:#.##}{Environment.NewLine}" +
                              $"Negative Recall: {modelMetrics.NegativeRecall:#.##}{Environment.NewLine}");
        }
Esempio n. 3
0
        public void Train()
        {
            // Define paths and initial variables
            var modelPath        = WorkshopHelper.GetModelPath(ModelFile);
            var trainingData     = WorkshopHelper.GetTrainingDataFile("ms", TrainingFile);
            var connectionString = $"Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename={trainingData};Integrated Security=True;Connect Timeout=30;";

            // Load the data
            var loader     = Context.Data.CreateDatabaseLoader <BikeInput>();
            var query      = "SELECT RentalDate, CAST(Year as REAL) as Year, CAST(TotalRentals as REAL) as TotalRentals FROM Rentals";
            var dbSource   = new DatabaseSource(SqlClientFactory.Instance, connectionString, query);
            var dataView   = loader.Load(dbSource);
            var firstYear  = Context.Data.FilterRowsByColumn(dataView, "Year", upperBound: 1);
            var secondYear = Context.Data.FilterRowsByColumn(dataView, "Year", upperBound: 2);

            // Define analysis pipeline
            var forecastPipeline = Context.Forecasting.ForecastBySsa(
                outputColumnName: "ForecastedRentals",
                inputColumnName: "TotalRentals",
                windowSize: 7,
                seriesLength: 30,
                trainSize: 365,
                horizon: 7,
                confidenceLevel: 0.95f,
                confidenceLowerBoundColumn: "LowerBoundRentals",
                confidenceUpperBoundColumn: "UpperBoundRentals");
            var forecaster = forecastPipeline.Fit(firstYear);
        }
        public void Train()
        {
            var modelPath        = WorkshopHelper.GetModelPath(ModelFile);
            var trainingData     = WorkshopHelper.GetTrainingDataFile("packt", TrainingFile);
            var trainingDataView = WorkshopHelper.LoadTrainingData <Email>(Context, trainingData, shuffle: true);

            var dataProcessingPipeline = Context.Transforms.Conversion.MapValueToKey(inputColumnName: nameof(Email.Category), outputColumnName: "Label")
                                         .Append(Context.Transforms.Text.FeaturizeText(inputColumnName: nameof(Email.Subject), outputColumnName: "SubjectFeaturized"))
                                         .Append(Context.Transforms.Text.FeaturizeText(inputColumnName: nameof(Email.Body), outputColumnName: "BodyFeaturized"))
                                         .Append(Context.Transforms.Text.FeaturizeText(inputColumnName: nameof(Email.Sender), outputColumnName: "SenderFeaturized"))
                                         .Append(Context.Transforms.Concatenate("Features",
                                                                                "SubjectFeaturized", "BodyFeaturized", "SenderFeaturized"))
                                         .AppendCacheCheckpoint(Context);

            var trainingPipeline = dataProcessingPipeline.Append(Context.MulticlassClassification.Trainers
                                                                 .SdcaMaximumEntropy("Label", "Features"))
                                   .Append(Context.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            var testData     = WorkshopHelper.GetTrainingDataFile("packt", "EmailTest.csv");
            var testDataView = WorkshopHelper.LoadTrainingData <Email>(Context, testData);

            var trainedModel = trainingPipeline.Fit(trainingDataView);

            Context.Model.Save(trainedModel, trainingDataView.Schema, modelPath);

            var modelMetrics = Context.MulticlassClassification.Evaluate(trainedModel.Transform(testDataView));

            Console.WriteLine($"MicroAccuracy: {modelMetrics.MicroAccuracy:0.###}");
            Console.WriteLine($"MacroAccuracy: {modelMetrics.MacroAccuracy:0.###}");
            Console.WriteLine($"LogLoss: {modelMetrics.LogLoss:#.###}");
            Console.WriteLine($"LogLossReduction: {modelMetrics.LogLossReduction:#.###}");
        }
        public Result PutWorkshop([FromBody] IEnumerable <Workshop> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.MarkedDateTime = markedDateTime;
                detail.Abbrev         = detail.Abbrev ?? "";
                detail.Remark         = detail.Remark ?? "";
            }
            if (details.Any(x => x.Name.IsNullOrEmpty()))
            {
                if (details.Any(x => x.Id == 0))
                {
                    return(Result.GenError <Result>(Error.WorkshopNotExist));
                }
                var ids = details.Select(x => x.Id);
                var cnt = WorkshopHelper.Instance.GetCountByIds(ids);
                if (cnt != details.Count())
                {
                    return(Result.GenError <Result>(Error.WorkshopNotExist));
                }
                WorkshopHelper.Enable(details);
            }
            else
            {
                if (details.GroupBy(x => x.Name).Any(y => y.Count() > 1))
                {
                    return(Result.GenError <Result>(Error.WorkshopDuplicate));
                }
                if (details.Any(x => !x.ValidShifts()))
                {
                    return(Result.GenError <Result>(Error.WorkshopShiftsError));
                }
                var sames = details.Select(x => x.Name);
                var ids   = details.Select(x => x.Id);
                if (WorkshopHelper.Instance.HaveSame(sames, ids))
                {
                    return(Result.GenError <Result>(Error.WorkshopIsExist));
                }
                var cnt = WorkshopHelper.Instance.GetCountByIds(ids);
                if (cnt != details.Count())
                {
                    return(Result.GenError <Result>(Error.WorkshopNotExist));
                }
                WorkshopHelper.Instance.Update(details);
            }
            return(Result.GenError <Result>(Error.Success));
        }
        public DataResult GetWorkshop([FromQuery] int qId, bool menu)
        {
            var result = new DataResult();

            result.datas.AddRange(menu
                ? WorkshopHelper.GetMenu(qId)
                : WorkshopHelper.GetDetails(qId));
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.WorkshopNotExist;
                return(result);
            }
            return(result);
        }
Esempio n. 7
0
        public DataResult GetAccount([FromQuery] int qId, bool menu, bool ws, bool all, string ids, string eIds)
        {
            var result = new DataResult();

            if (ws)
            {
                if (qId == 0)
                {
                    result.errno = Error.AccountNotExist;
                    return(result);
                }

                var acc = AccountInfoHelper.Instance.Get <AccountInfo>(qId);
                if (acc == null)
                {
                    result.errno = Error.AccountNotExist;
                    return(result);
                }

                if (acc.Id == 1 || acc.Belongs.Any())
                {
                    result.datas.AddRange(WorkshopHelper.GetMenus(acc.Belongs));
                }
                return(result);
            }
            var idList  = !ids.IsNullOrEmpty() ? ids.Split(",").Select(int.Parse) : new List <int>();
            var eIdList = !eIds.IsNullOrEmpty() ? eIds.Split(",").Select(int.Parse) : new List <int>();

            if (menu)
            {
                result.datas.AddRange(AccountInfoHelper.GetMenu(all, qId, idList, eIdList));
            }
            else
            {
                var data      = AccountInfoHelper.GetAccountInfos(qId, all, idList, eIdList);
                var wIds      = data.SelectMany(x => x.Belongs);
                var workshops = WorkshopHelper.Instance.GetByIds <Workshop>(wIds);
                foreach (var d in data)
                {
                    d.WorkShops = d.Belongs.Where(wId => workshops.Any(x => x.Id == wId)).Select(wId => workshops.First(x => x.Id == wId).Name).Join();
                }
                result.datas.AddRange(data);
            }
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.AccountNotExist;
                return(result);
            }
            return(result);
        }
Esempio n. 8
0
        public void InitSteamWorkshopTest()
        {
            MethodInfo method;

            if (ParameterPrefix == "SE")
            {
                method = WorkshopHelper.ReflectInitSteamWorkshop();
            }
            else
            {
                method = M.WorkshopHelper.ReflectInitSteamWorkshop();
            }

            Assert.IsNotNull(method);
        }
Esempio n. 9
0
        public void ItemPublisherMethodTest(string name)
        {
            MethodInfo method;

            if (ParameterPrefix == "SE")
            {
                method = WorkshopHelper.ReflectSteamWorkshopItemPublisherMethod(name);
            }
            else
            {
                method = M.WorkshopHelper.ReflectSteamWorkshopItemPublisherMethod(name);
            }

            Assert.IsNotNull(method);
        }
Esempio n. 10
0
        public void UpdatePublishedItemTest()
        {
            MethodInfo method;

            if (ParameterPrefix == "SE")
            {
                method = WorkshopHelper.ReflectSteamWorkshopItemPublisherMethod("UpdatePublishedItem", BindingFlags.Instance | BindingFlags.NonPublic);
            }
            else
            {
                method = M.WorkshopHelper.ReflectSteamWorkshopItemPublisherMethod("UpdatePublishedItem", BindingFlags.Instance | BindingFlags.Public);
            }

            Assert.IsNotNull(method);
        }
Esempio n. 11
0
        public void Predict()
        {
            var modelFile = WorkshopHelper.GetModelPath(ModelFile);
            var mlModel   = WorkshopHelper.GetModelData(Context, modelFile);

            var predictionEng = Context.Model.CreatePredictionEngine <Email, EmailPrediction>(mlModel);

            var csvPath = WorkshopHelper.GetPredictionDataFile(TrainingFile);
            var emails  = WorkshopHelper.GetCsvData <Email>(file: csvPath);


            foreach (var email in emails)
            {
                var predictions = predictionEng.Predict(email);
                Console.WriteLine(
                    $"Based on input json:{Environment.NewLine}" +
                    $"{TrainingFile}{Environment.NewLine}" +
                    $"The email is predicted to be a {predictions.Category}");
            }
        }
Esempio n. 12
0
        static void Predictor(string chap, string input)
        {
            switch (chap)
            {
            case Courses.PktLogReg:
                var chap2 = new PktLogRegPredict(input);
                chap2.Predict();
                break;

            case Courses.PktMultiClass:
                var emailJson       = WorkshopHelper.GetPredictionDataFile(input);
                var pktMultiPredict = new PktMultiClassPredict(emailJson);
                pktMultiPredict.Predict();
                break;

            default:
                PrintTable();
                break;
            }
        }
Esempio n. 13
0
        public static void AfterPrepareStagingArea(WorkshopAssetUploadPanel __instance)
        {
            var m_ContentPath   = __instance.GetType().GetField("m_ContentPath", RedirectorUtils.allFlags).GetValue(__instance) as string;
            var m_TargetAsset   = __instance.GetType().GetField("m_TargetAsset", RedirectorUtils.allFlags).GetValue(__instance) as Package.Asset;
            var rootAssetFolder = Path.GetDirectoryName(m_TargetAsset.package.packagePath);

            LogUtils.DoErrorLog($"rootAssetFolder2: {rootAssetFolder}; ");
            bool bundledAnyFile = false;

            if (!(CommonProperties.AssetExtraFileNames is null))
            {
                foreach (string filename in CommonProperties.AssetExtraFileNames)
                {
                    var targetFilename = Path.Combine(rootAssetFolder, filename);
                    if (File.Exists(targetFilename))
                    {
                        File.Copy(targetFilename, Path.Combine(m_ContentPath, filename));
                        bundledAnyFile = true;
                    }
                }
            }
            if (!(CommonProperties.AssetExtraDirectoryNames is null))
            {
                foreach (string directory in CommonProperties.AssetExtraDirectoryNames)
                {
                    var targetFolder = Path.Combine(rootAssetFolder, directory);
                    if (Directory.Exists(targetFolder))
                    {
                        WorkshopHelper.DirectoryCopy(targetFolder, Path.Combine(m_ContentPath, directory), true);
                        bundledAnyFile = true;
                    }
                }
            }

            if (bundledAnyFile)
            {
                var tagsField = (__instance.GetType().GetField("m_Tags", RedirectorUtils.allFlags));
                tagsField.SetValue(__instance, (tagsField.GetValue(__instance) as string[]).Union(new string[] { CommonProperties.ModName, $"K45 {CommonProperties.Acronym}" }).Distinct().ToArray());
            }
        }
Esempio n. 14
0
        private void PrepareStagingArea(string folder)
        {
            string path = Guid.NewGuid().ToString();

            var stagingPath = Path.Combine(Path.Combine(DataLocation.localApplicationData, "WorkshopStagingArea"), path);

            m_StagingPath.SetValue(workshopModUploadPanel, stagingPath);

            Directory.CreateDirectory(stagingPath);

            var previewPath = Path.Combine(stagingPath, "PreviewImage.png");

            foreach (var previewImageFilename in previewImageFilenames)
            {
                if (File.Exists(Path.Combine(folder, previewImageFilename)))
                {
                    File.Copy(Path.Combine(folder, previewImageFilename), previewPath);
                    break;
                }
            }

            if (!File.Exists(previewPath))
            {
                var defaultTexture = m_DefaultModPreviewTexture.GetValue(workshopModUploadPanel);
                File.WriteAllBytes(previewPath, (UnityEngine.Object.Instantiate((Texture)defaultTexture) as Texture2D).EncodeToPNG());
            }

            m_PreviewPath.SetValue(workshopModUploadPanel, previewPath);
            reloadPreviewImage.Invoke(workshopModUploadPanel, null);

            var contentPath = Path.Combine(stagingPath, "Content" + Path.DirectorySeparatorChar);

            m_ContentPath.SetValue(workshopModUploadPanel, contentPath);

            Directory.CreateDirectory(contentPath);
            WorkshopHelper.DirectoryCopy(folder, contentPath, true);

            startWatchingPath.Invoke(workshopModUploadPanel, null);
        }
Esempio n. 15
0
        private void UpdateItem()
        {
            try
            {
                string   text1 = this.m_Title.text;
                string   text2 = this.m_Desc.text;
                string   text3 = this.m_ChangeNote.text;
                string[] files = Directory.GetFiles(this.m_ContentPath, "*.*", SearchOption.AllDirectories);
                if (true)
                {
                    try
                    {
                        DirectoryUtils.DeleteDirectory(Path.Combine(this.m_ContentPath, "Source"));
                    }
                    catch (DirectoryNotFoundException ex)
                    {
                        ex.HelpLink = string.Empty;
                    }
                    catch (Exception ex)
                    {
                        CODebugBase <LogChannel> .Error(LogChannel.Core, "Failed to delete source for " + this.m_ContentPath + "\n" + ex.ToString());
                    }
                }
                WorkshopHelper.VerifyAndFinalizeFiles(files, this.m_PublishedFileId.ToString());
                //begin mod
                string version = BuildConfig.applicationVersion;
                this.m_CurrentHandle = PlatformService.workshop.UpdateItem(this.m_PublishedFileId, text1, text2, text3, this.m_PreviewPath, this.m_ContentPath, new string[2] {
                    "Mod", $"{version}-compatible"
                });
                //end mod
            }
            catch (Exception ex)
            {
                CODebugBase <LogChannel> .Error(LogChannel.Core, ex.GetType().ToString() + " " + ex.Message);

                UIView.ForwardException((Exception) new StagingException("Workshop Staging Failed", ex));
            }
        }
Esempio n. 16
0
        public DataResult GetAccountWorkshop([FromQuery] int qId)
        {
            var result = new DataResult();

            if (qId == 0)
            {
                result.errno = Error.AccountNotExist;
                return(result);
            }

            var acc = AccountInfoHelper.Instance.Get <AccountInfo>(qId);

            if (acc == null)
            {
                result.errno = Error.AccountNotExist;
                return(result);
            }

            if (acc.Id == 1 || acc.Belongs.Any())
            {
                result.datas.AddRange(WorkshopHelper.GetMenus(acc.Belongs));
            }
            return(result);
        }
        public void Predict()
        {
            var modelFile = WorkshopHelper.GetModelPath(ModelFile);
            var mlModel   = WorkshopHelper.GetModelData(Context, modelFile);

            var predictionEng = Context.Model.CreatePredictionEngine <RestaurantFeedback, RestaurantPrediction>(mlModel);

            Console.WriteLine($"Write down random feedback.");

            while (true)
            {
                var input   = Terminal.ReadLine;
                var predict = predictionEng.Predict(new RestaurantFeedback {
                    Text = input
                });

                if (input == "exit".ToLowerInvariant())
                {
                    break;
                }

                Console.WriteLine($"Based on \"{input}\", the feedback is predicted to be:{Environment.NewLine}{(predict.Prediction ? "Negative" : "Positive")} at a {predict.Probability:P0} confidence");
            }
        }
Esempio n. 18
0
        public void ToSteamTest()
        {
            var method = WorkshopHelper.ReflectToSteam();

            Assert.IsNotNull(method);
        }
Esempio n. 19
0
        public void ModIoCreateRequestTest()
        {
            var method = WorkshopHelper.ReflectCreateRequest();

            Assert.IsNotNull(method);
        }