From 16a6c70df865ee37294a88092ebe248c6053a158 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sun, 10 Apr 2022 00:15:25 +0200 Subject: Ispravljeni model,experiment i predictor. Omoguceno slanje zahteva za treniranje modela. --- .../api/api/Controllers/ExperimentController.cs | 10 +--- backend/api/api/Controllers/ModelController.cs | 10 ++-- backend/api/api/Controllers/PredictorController.cs | 5 -- backend/api/api/Models/Experiment.cs | 1 - backend/api/api/Models/Model.cs | 4 +- backend/api/api/Models/Predictor.cs | 3 +- backend/api/api/Services/ExperimentService.cs | 4 +- backend/api/api/Services/IMlConnectionService.cs | 4 +- backend/api/api/Services/IModelService.cs | 1 + backend/api/api/Services/MlConnectionService.cs | 55 +++++----------------- backend/api/api/Services/ModelService.cs | 4 ++ 11 files changed, 28 insertions(+), 73 deletions(-) (limited to 'backend/api') diff --git a/backend/api/api/Controllers/ExperimentController.cs b/backend/api/api/Controllers/ExperimentController.cs index 190c0e01..5cf10eb2 100644 --- a/backend/api/api/Controllers/ExperimentController.cs +++ b/backend/api/api/Controllers/ExperimentController.cs @@ -38,15 +38,7 @@ namespace api.Controllers var parameter = headerValue.Parameter; uploaderId = jwtToken.TokenToId(parameter); if (uploaderId == null) - return null; - else - { - FileModel fileModel = _fileService.getFile(experiment.fileId); - experiment.isPreProcess = false; - _experimentService.Create(experiment); - _mlConnectionService.PreProcess(experiment, fileModel.path); - return Ok(); - } + return BadRequest(); } else return BadRequest(); diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index 8031700a..eb40bf43 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -45,15 +45,15 @@ namespace api.Controllers var parameter = headerValue.Parameter; uploaderId = jwtToken.TokenToId(parameter); if (uploaderId == null) - return null; + return BadRequest(); } else return BadRequest(); var experiment=_experimentService.Get(model.experimentId); var dataset = _datasetService.GetOneDataset(experiment.datasetId); var filepath = _fileService.GetFilePath(dataset.fileId, uploaderId); - var result = await _mlService.SendModelAsync(model, filepath); - return Ok(result); + _mlService.TrainModel(model,experiment,filepath);//To do Obavestiti korisnika kada se model istrenira + return Ok(); } // GET: api//mymodels @@ -161,10 +161,8 @@ namespace api.Controllers return NotFound($"Model with name = {model.name} exisits"); else { - FileModel fileModel = _fileService.getFile(model.fileId); - model.isPreProcess = false; + model.isTrained = false; _modelService.Create(model); - _mlConnectionService.PreProcess(model, fileModel.path); //return Ok(); if (existingModel == null) _modelService.Create(model); diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 20d8f962..8feef725 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -188,11 +188,6 @@ namespace api.Controllers _predictorService.Create(predictor); return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor); - FileModel fileModel = _fileService.getFile(predictor.fileId); - predictor.isPreProcess = false; - _predictorService.Create(predictor); - _mlConnectionService.PreProcess(predictor, fileModel.path); - return Ok(); } } diff --git a/backend/api/api/Models/Experiment.cs b/backend/api/api/Models/Experiment.cs index 903d6dae..688813a0 100644 --- a/backend/api/api/Models/Experiment.cs +++ b/backend/api/api/Models/Experiment.cs @@ -19,7 +19,6 @@ namespace api.Models public string nullValues { get; set; } public NullValues[] nullValuesReplacers { get; set; } public string fileId { get; set; } - public bool isPreProcess { get; set; } } } diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs index e4e66a86..b169dddf 100644 --- a/backend/api/api/Models/Model.cs +++ b/backend/api/api/Models/Model.cs @@ -37,9 +37,7 @@ namespace api.Models public string[] metrics { get; set; } public int epochs { get; set; } - - public bool isPreProcess { get; set; } - public string fileId { get; set; } + public bool isTrained { get; set; } //public NullValues[] nullValues { get; set; } } } diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index d4ee9fa7..911a9aee 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -18,8 +18,7 @@ namespace api.Models public bool accessibleByLink { get; set; } public DateTime dateCreated { get; set; } public string experimentId { get; set; } - public string fileId { get; set; } - public bool isPreProcess { get; set; } + } } diff --git a/backend/api/api/Services/ExperimentService.cs b/backend/api/api/Services/ExperimentService.cs index c9de233e..f7f61136 100644 --- a/backend/api/api/Services/ExperimentService.cs +++ b/backend/api/api/Services/ExperimentService.cs @@ -23,9 +23,9 @@ namespace api.Services return _experiment.Find(exp=>exp._id == id).FirstOrDefault(); } - public void Update(string username, string name, Experiment experiment) + public void Update(string id, Experiment experiment) { - _experiment.ReplaceOne(experiment => experiment.username == username && experiment.name == name, experiment); + _experiment.ReplaceOne(experiment => experiment._id == id, experiment); } } } diff --git a/backend/api/api/Services/IMlConnectionService.cs b/backend/api/api/Services/IMlConnectionService.cs index e1529cc5..5edc5554 100644 --- a/backend/api/api/Services/IMlConnectionService.cs +++ b/backend/api/api/Services/IMlConnectionService.cs @@ -7,9 +7,7 @@ namespace api.Services { Task SendModelAsync(object model, object dataset); Task PreProcess(Dataset dataset, string filePath); - Task PreProcess(Experiment experiment, string filePath); - Task PreProcess(Predictor predictor, string filePath); - Task PreProcess(Model model, string filePath); + Task TrainModel(Model model, Experiment experiment, string filePath); //Task PreProcess(Dataset dataset, byte[] file, string filename); } } \ No newline at end of file diff --git a/backend/api/api/Services/IModelService.cs b/backend/api/api/Services/IModelService.cs index 3e70a1c3..86aa5b56 100644 --- a/backend/api/api/Services/IModelService.cs +++ b/backend/api/api/Services/IModelService.cs @@ -13,6 +13,7 @@ namespace api.Services Model Create(Model model); Model Replace(Model model); void Update(string username, string name, Model model); + public void Update(string id, Model model); void Delete(string username, string name); bool CheckHyperparameters(int inputNeurons, int hiddenLayerNeurons, int hiddenLayers, int outputNeurons); } diff --git a/backend/api/api/Services/MlConnectionService.cs b/backend/api/api/Services/MlConnectionService.cs index 146afd85..fb42965b 100644 --- a/backend/api/api/Services/MlConnectionService.cs +++ b/backend/api/api/Services/MlConnectionService.cs @@ -10,6 +10,7 @@ namespace api.Services { private RestClient client; private readonly IDatasetService _datasetService; + private readonly IModelService _modelService; public MlConnectionService(IDatasetService datasetService) { @@ -17,55 +18,38 @@ namespace api.Services _datasetService=datasetService; } - public async Task SendModelAsync(object model, object dataset) + public async Task SendModelAsync(object model, object dataset)//Don't Use { var request = new RestRequest("train", Method.Post); request.AddJsonBody(new { model, dataset}); var result = await this.client.ExecuteAsync(request); return result.Content; //Response od ML microservisa } - public async Task PreProcess(Dataset dataset,string filePath)//(Dataset dataset,byte[] file,string filename) - { - var request=new RestRequest("preprocess", Method.Post); - request.AddParameter("dataset", JsonConvert.SerializeObject(dataset)); - //request.AddFile("file", file,filename); - request.AddFile("file", filePath); - request.AddHeader("Content-Type", "multipart/form-data"); - var result=await this.client.ExecuteAsync(request); - - Dataset newDataset = JsonConvert.DeserializeObject(result.Content); - newDataset.isPreProcess = true; - _datasetService.Update(newDataset); - - return; - - } - - /*public async Task PreProcess(Experiment experiment, string filePath)//(Dataset dataset,byte[] file,string filename) + public async Task TrainModel(Model model, Experiment experiment, string filePath) { - var request = new RestRequest("preprocess", Method.Post); - request.AddParameter("dataset", JsonConvert.SerializeObject(experiment)); + var request = new RestRequest("train", Method.Post); + request.AddParameter("model", JsonConvert.SerializeObject(model)); + request.AddParameter("experiment", JsonConvert.SerializeObject(experiment)); //request.AddFile("file", file,filename); request.AddFile("file", filePath); request.AddHeader("Content-Type", "multipart/form-data"); var result = await this.client.ExecuteAsync(request); - Dataset newDataset = JsonConvert.DeserializeObject(result.Content); - newDataset.isPreProcess = true; - _experimentService.Update(newDataset); + Model newModel = JsonConvert.DeserializeObject(result.Content); + newModel.isTrained = true; + _modelService.Update(newModel._id, newModel); return; } - - public async Task PreProcess(Predictor predictor, string filePath)//(Dataset dataset,byte[] file,string filename) + public async Task PreProcess(Dataset dataset,string filePath)//(Dataset dataset,byte[] file,string filename) { - var request = new RestRequest("preprocess", Method.Post); + var request=new RestRequest("preprocess", Method.Post); request.AddParameter("dataset", JsonConvert.SerializeObject(dataset)); //request.AddFile("file", file,filename); request.AddFile("file", filePath); request.AddHeader("Content-Type", "multipart/form-data"); - var result = await this.client.ExecuteAsync(request); + var result=await this.client.ExecuteAsync(request); Dataset newDataset = JsonConvert.DeserializeObject(result.Content); newDataset.isPreProcess = true; @@ -75,21 +59,8 @@ namespace api.Services } - public async Task PreProcess(Model model, string filePath)//(Dataset dataset,byte[] file,string filename) - { - var request = new RestRequest("preprocess", Method.Post); - request.AddParameter("dataset", JsonConvert.SerializeObject(dataset)); - //request.AddFile("file", file,filename); - request.AddFile("file", filePath); - request.AddHeader("Content-Type", "multipart/form-data"); - var result = await this.client.ExecuteAsync(request); - - Dataset newDataset = JsonConvert.DeserializeObject(result.Content); - newDataset.isPreProcess = true; - _datasetService.Update(newDataset); + - return; - }*/ } } diff --git a/backend/api/api/Services/ModelService.cs b/backend/api/api/Services/ModelService.cs index c2b4e692..daba2855 100644 --- a/backend/api/api/Services/ModelService.cs +++ b/backend/api/api/Services/ModelService.cs @@ -64,6 +64,10 @@ namespace api.Services { _model.ReplaceOne(model => model.username == username && model.name == name, model); } + public void Update(string id, Model model) + { + _model.ReplaceOne(model => model._id == id, model); + } // public bool CheckHyperparameters(int inputNeurons, int hiddenLayerNeurons, int hiddenLayers, int outputNeurons) { -- cgit v1.2.3