diff --git a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java index 52db979d5ddd7b043572be8fc9255c45fa0e9c98..47e6f3ddfac62760727c91887547a6b950437a7b 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java @@ -1,9 +1,12 @@ package eu.hbp.mip.models.DTOs; +import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; import lombok.Getter; import lombok.Setter; +import java.util.Arrays; +import java.util.Hashtable; import java.util.List; @Getter @@ -70,4 +73,25 @@ public class AlgorithmDTO { @SerializedName("valueEnumerations") private List<String> valueEnumerations; } + + public MIPEngineBody convertToMIPEngineBody() + { + MIPEngineBody mipEngineBody = new MIPEngineBody(); + MIPEngineBody.InputData inputData = new MIPEngineBody.InputData(); + + this.parameters.forEach(parameter -> { + if(parameter.getName().equals("x")) + inputData.setX(Arrays.asList(parameter.getValue().split(","))); + if(parameter.getName().equals("y")) + inputData.setY(Arrays.asList(parameter.getValue().split(","))); + if(parameter.getName().equals("dataset")) + inputData.setDatasets(Arrays.asList(parameter.getValue().split(","))); + if(parameter.getName().equals("pathology")) + inputData.setPathology(parameter.getValue()); + if(parameter.getName().equals("filter")) + inputData.setFilters(null); + }); + mipEngineBody.setInputdata(inputData); + return mipEngineBody; + } } diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java index a250e42498295bffb7888319a0f584c42df16e3f..386195dab6451e130ccb9ab625d585d1d7e141e9 100644 --- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java +++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java @@ -25,7 +25,7 @@ public class MIPEngineAlgorithmDTO { private String type; @SerializedName("parameters") - private Object parameters; + private InputDataParamDTO parameters; @SerializedName("crossvalidation") private String crossvalidation; @@ -57,6 +57,7 @@ public class MIPEngineAlgorithmDTO { @SerializedName("desc") private String desc; + public AlgorithmDTO.AlgorithmParamDTO convertToAlgorithmParamDTO(String name) throws Exception { AlgorithmDTO.AlgorithmParamDTO algorithmParamDTO = new AlgorithmDTO.AlgorithmParamDTO(); algorithmParamDTO.setName(name); @@ -67,10 +68,6 @@ public class MIPEngineAlgorithmDTO { algorithmParamDTO.setValueType(this.types.get(0)); } else{ - if(stattypes == null){ - System.out.println("Dsafasfads------------------------->>>>>>>>>>>>>>>"); - System.out.println(name); - } algorithmParamDTO.setType("column"); algorithmParamDTO.setColumnValuesSQLType(String.join(", ", this.types)); algorithmParamDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes)); diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java new file mode 100644 index 0000000000000000000000000000000000000000..bbae5f4a096acf7401ea5e4d1cf2164488897286 --- /dev/null +++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java @@ -0,0 +1,31 @@ +package eu.hbp.mip.models.DTOs; + +import com.google.gson.annotations.SerializedName; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class MIPEngineBody { + @SerializedName("inputdata") + private InputData inputdata; + @SerializedName("parameters") + private Object parameters; + + @Getter + @Setter + public static class InputData { + @SerializedName("pathology") + private String pathology; + @SerializedName("datasets") + private List<String> datasets; + @SerializedName("filters") + private String filters; + @SerializedName("x") + private List<String> x; + @SerializedName("y") + private List<String> y; + } +} diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java index a8b176d764d02bab2507b545bf56c9951e0ff531..0179d824e1a648c9a4f9ab7a0215226f817f0890 100644 --- a/src/main/java/eu/hbp/mip/services/ExperimentService.java +++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java @@ -17,6 +17,7 @@ import eu.hbp.mip.models.DAOs.ExperimentDAO; import eu.hbp.mip.models.DAOs.UserDAO; import eu.hbp.mip.models.DTOs.AlgorithmDTO; import eu.hbp.mip.models.DTOs.ExperimentDTO; +import eu.hbp.mip.models.DTOs.MIPEngineBody; import eu.hbp.mip.models.galaxy.GalaxyWorkflowResult; import eu.hbp.mip.models.galaxy.PostWorkflowToGalaxyDtoResponse; import eu.hbp.mip.repositories.ExperimentRepository; @@ -506,6 +507,17 @@ public class ExperimentService { return JsonConverters.convertObjectToJsonString(finalJsonObject); } + private List<Object> formattingMIPEngienResult(String result) { + List<List<String>> resultJson = JsonConverters.convertJsonStringToObject(result, new ArrayList<ArrayList<String>>().getClass()); + List<Object> finalObject = new ArrayList<>(); + LinkedTreeMap<String,Object> data = new LinkedTreeMap<>(); + data.put("data", resultJson); + data.put("type", "application/json"); + finalObject.add(data); + List<Object> result_kappa = finalObject; + return result_kappa; + } + /** * The runExperiment will run the experiment to exareme or MIPEngine. * @@ -520,22 +532,18 @@ public class ExperimentService { // Run the 1st algorithm from the list String algorithmName = experimentDTO.getAlgorithm().getName(); - // Get the parameters - List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters - = experimentDTO.getAlgorithm().getParameters(); - - String body = gson.toJson(algorithmParameters); - - logger.LogUserAction("Completed, returning: " + experimentDTO); - - // Run with the appropriate engine if (algorithmType.equals("mipengine")) { + MIPEngineBody mipEngineBody = experimentDTO.getAlgorithm().convertToMIPEngineBody(); + String body = gson.toJson(mipEngineBody); String url = mipengineAlgorithmsUrl + "/" + algorithmName; logger.LogUserAction("url: " + url + ", body: " + body); logger.LogUserAction("Algorithm runs on MIPEngine."); return runMIPEngineExperiment(url, body); } else { + List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters + = experimentDTO.getAlgorithm().getParameters(); + String body = gson.toJson(algorithmParameters); String url = queryExaremeUrl + "/" + algorithmName; logger.LogUserAction("url: " + url + ", body: " + body); logger.LogUserAction("Algorithm runs on Exareme."); @@ -584,11 +592,8 @@ public class ExperimentService { } catch (Exception e) { throw new InternalServerError("Error occurred : " + e.getMessage()); } - System.out.println("----------------------------------->>>>>>>>>>>>>>>>>>>>>>"); - System.out.println(results); // Results are stored in the experiment object - ExperimentDTO experimentDTOWithOnlyResult = JsonConverters.convertJsonStringToObject(String.valueOf(results), ExperimentDTO.class); - List<Object> resultDTOS = experimentDTOWithOnlyResult.getResult(); + List<Object> resultDTOS = formattingMIPEngienResult(String.valueOf(results)); return new ExperimentResult(code, resultDTOS); }