Skip to content
Snippets Groups Projects
Commit be1831d7 authored by Manuel Spuhler's avatar Manuel Spuhler
Browse files

Exareme LR algorithm

parent 869eb07e
No related branches found
No related tags found
No related merge requests found
...@@ -293,6 +293,7 @@ public class ExperimentApi extends WokenClientController { ...@@ -293,6 +293,7 @@ public class ExperimentApi extends WokenClientController {
new Thread(() -> { new Thread(() -> {
String query = experiment.computeExaremeQuery(params); String query = experiment.computeExaremeQuery(params);
String url = miningExaremeQueryUrl + "/" + algoCode; String url = miningExaremeQueryUrl + "/" + algoCode;
// Results are stored in the experiment object // Results are stored in the experiment object
try { try {
StringBuilder results = new StringBuilder(); StringBuilder results = new StringBuilder();
......
...@@ -138,13 +138,39 @@ public class Experiment { ...@@ -138,13 +138,39 @@ public class Experiment {
public String computeExaremeQuery(List<AlgorithmParam> params) { public String computeExaremeQuery(List<AlgorithmParam> params) {
List<ExaremeQueryElement> queryElements = new LinkedList<>(); List<ExaremeQueryElement> queryElements = new LinkedList<>();
// parameters
String design = "";
if (params != null) {
for (AlgorithmParam p : params)
{
ExaremeQueryElement paramEl = new ExaremeQueryElement();
paramEl.setName(p.getCode());
paramEl.setDesc("");
paramEl.setValue(p.getValue());
queryElements.add(paramEl);
if (p.getCode().equals("design")) {
design = p.getValue();
}
}
}
List<String> variables = new ArrayList<>();
List<String> covariables = new ArrayList<>();
List<String> groupings = new ArrayList<>();
for (Variable var : model.getQuery().getVariables()) { variables.add(var.getCode()); }
for (Variable var : model.getQuery().getCovariables()) { covariables.add(var.getCode()); }
for (Variable var : model.getQuery().getGrouping()) { groupings.add(var.getCode()); }
// Set algorithm specific queries // Set algorithm specific queries
if (this.isExaremeAlgorithm()._2.equals(WP_K_MEANS)) { String algoName = this.isExaremeAlgorithm()._2;
if (algoName.equals(WP_K_MEANS)) {
// columns // columns
List<String> columns = new ArrayList<>(); List<String> columns = new ArrayList<>();
for (Variable var : model.getQuery().getVariables()) { columns.add(var.getCode()); } columns.addAll(variables);
for (Variable var : model.getQuery().getCovariables()) { columns.add(var.getCode()); } columns.addAll(covariables);
for (Variable var : model.getQuery().getGrouping()) { columns.add(var.getCode()); } columns.addAll(groupings);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int i = 0; int i = 0;
for (String s : columns) for (String s : columns)
...@@ -160,18 +186,38 @@ public class Experiment { ...@@ -160,18 +186,38 @@ public class Experiment {
columnsEl.setDesc(""); columnsEl.setDesc("");
columnsEl.setValue(sb.toString()); columnsEl.setValue(sb.toString());
queryElements.add(columnsEl); queryElements.add(columnsEl);
} } else if (algoName.equals(WP_LINEAR_REGRESSION)) {
List<String> vars = new ArrayList<>();
vars.addAll(variables);
vars.addAll(covariables);
// parameters String operator = design.equals("factorial") ? "*" : "+";
if (params != null) { StringBuilder sb = new StringBuilder();
for (AlgorithmParam p : params) int i = 0;
for (String s : vars)
{ {
ExaremeQueryElement paramEl = new ExaremeQueryElement(); i++;
paramEl.setName(p.getCode()); sb.append(s);
paramEl.setDesc(""); if (i < vars.size()) {
paramEl.setValue(p.getValue()); sb.append(operator);
queryElements.add(paramEl); }
}
ExaremeQueryElement xEl = new ExaremeQueryElement();
xEl.setName("x");
xEl.setDesc("");
xEl.setValue(sb.toString());
queryElements.add(xEl);
StringBuilder sby = new StringBuilder();
for (String s : variables)
{
sby.append(s);
} }
ExaremeQueryElement yEl = new ExaremeQueryElement();
yEl.setName("y");
yEl.setDesc("");
yEl.setValue(sby.toString());
queryElements.add(yEl);
} }
// datasets // datasets
...@@ -190,8 +236,7 @@ public class Experiment { ...@@ -190,8 +236,7 @@ public class Experiment {
ExaremeQueryElement datasetsEl = new ExaremeQueryElement(); ExaremeQueryElement datasetsEl = new ExaremeQueryElement();
datasetsEl.setName("dataset"); datasetsEl.setName("dataset");
datasetsEl.setDesc(""); datasetsEl.setDesc("");
datasetsEl.setValue("adni,ppmi,edsd"); datasetsEl.setValue(datasets.toString());
// datasetsEl.setValue(datasets.toString());
queryElements.add(datasetsEl); queryElements.add(datasetsEl);
return gson.toJson(queryElements); return gson.toJson(queryElements);
......
...@@ -7,23 +7,23 @@ ...@@ -7,23 +7,23 @@
"description": "Linear Regression using Exareme services", "description": "Linear Regression using Exareme services",
"parameters": [ "parameters": [
{ {
"code": "x", "code": "design",
"label": "x", "default_value": "factorial",
"type": "string", "description": "The type of multi-factors design. Choose 'factorial' to enable interactions analysis or 'additive' for a model without no interaction at all.",
"description": "The expression for x-axis" "label": "design",
}, "type": "enumeration",
{ "values": [
"code": "y", "factorial",
"label": "y", "additive"
"type": "string", ]
"description": "The expression for y-axis"
} }
], ],
"constraints": { "constraints": {
"variable": { "variable": {
"real": true, "binominal": false,
"binominal": true, "integer": true,
"polynominal": true "polynominal": false,
"real": true
} }
} }
}, },
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment