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 {
new Thread(() -> {
String query = experiment.computeExaremeQuery(params);
String url = miningExaremeQueryUrl + "/" + algoCode;
// Results are stored in the experiment object
try {
StringBuilder results = new StringBuilder();
......
......@@ -138,13 +138,39 @@ public class Experiment {
public String computeExaremeQuery(List<AlgorithmParam> params) {
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
if (this.isExaremeAlgorithm()._2.equals(WP_K_MEANS)) {
String algoName = this.isExaremeAlgorithm()._2;
if (algoName.equals(WP_K_MEANS)) {
// columns
List<String> columns = new ArrayList<>();
for (Variable var : model.getQuery().getVariables()) { columns.add(var.getCode()); }
for (Variable var : model.getQuery().getCovariables()) { columns.add(var.getCode()); }
for (Variable var : model.getQuery().getGrouping()) { columns.add(var.getCode()); }
columns.addAll(variables);
columns.addAll(covariables);
columns.addAll(groupings);
StringBuilder sb = new StringBuilder();
int i = 0;
for (String s : columns)
......@@ -160,18 +186,38 @@ public class Experiment {
columnsEl.setDesc("");
columnsEl.setValue(sb.toString());
queryElements.add(columnsEl);
}
} else if (algoName.equals(WP_LINEAR_REGRESSION)) {
List<String> vars = new ArrayList<>();
vars.addAll(variables);
vars.addAll(covariables);
// parameters
if (params != null) {
for (AlgorithmParam p : params)
String operator = design.equals("factorial") ? "*" : "+";
StringBuilder sb = new StringBuilder();
int i = 0;
for (String s : vars)
{
ExaremeQueryElement paramEl = new ExaremeQueryElement();
paramEl.setName(p.getCode());
paramEl.setDesc("");
paramEl.setValue(p.getValue());
queryElements.add(paramEl);
i++;
sb.append(s);
if (i < vars.size()) {
sb.append(operator);
}
}
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
......@@ -190,8 +236,7 @@ public class Experiment {
ExaremeQueryElement datasetsEl = new ExaremeQueryElement();
datasetsEl.setName("dataset");
datasetsEl.setDesc("");
datasetsEl.setValue("adni,ppmi,edsd");
// datasetsEl.setValue(datasets.toString());
datasetsEl.setValue(datasets.toString());
queryElements.add(datasetsEl);
return gson.toJson(queryElements);
......
......@@ -7,23 +7,23 @@
"description": "Linear Regression using Exareme services",
"parameters": [
{
"code": "x",
"label": "x",
"type": "string",
"description": "The expression for x-axis"
},
{
"code": "y",
"label": "y",
"type": "string",
"description": "The expression for y-axis"
"code": "design",
"default_value": "factorial",
"description": "The type of multi-factors design. Choose 'factorial' to enable interactions analysis or 'additive' for a model without no interaction at all.",
"label": "design",
"type": "enumeration",
"values": [
"factorial",
"additive"
]
}
],
"constraints": {
"variable": {
"real": true,
"binominal": true,
"polynominal": true
"binominal": false,
"integer": 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