From ee65a872f8cac1d2145bab9840155d1460a1dafe Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Sun, 23 Jan 2022 21:24:42 +0100
Subject: [PATCH] fix: Handle parameters exceptions (exareme)

---
 .../engine/connectors/exareme/converters.ts   | 46 ++++++++++++++++---
 1 file changed, 40 insertions(+), 6 deletions(-)

diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts
index 06950ab..3c32f75 100644
--- a/api/src/engine/connectors/exareme/converters.ts
+++ b/api/src/engine/connectors/exareme/converters.ts
@@ -111,11 +111,6 @@ export const experimentInputToData = (data: ExperimentCreateInput) => {
           label: 'pathology',
           value: data.domain,
         },
-        {
-          name: 'y',
-          label: 'y',
-          value: data.variables.join(','),
-        },
         ...(formula
           ? [
               {
@@ -132,10 +127,49 @@ export const experimentInputToData = (data: ExperimentCreateInput) => {
   };
 
   if (data.coVariables && data.coVariables.length) {
+    let separator = ',';
+
+    const design = params.algorithm.parameters.find((p) => p.name === 'design');
+    const excludes = [
+      'Multiple Histograms',
+      'CART',
+      'ID3',
+      'Naive Bayes Training',
+    ];
+
+    if (design && !excludes.includes(data.algorithm.id)) {
+      separator = design.value === 'additive' ? '+' : '*';
+    }
+
     params.algorithm.parameters.push({
       name: 'x',
       label: 'x',
-      value: data.coVariables.join(','),
+      value: data.coVariables.join(separator),
+    });
+  }
+
+  if (data.variables) {
+    let variables = data.variables.join(',');
+
+    if (data.algorithm.id === 'TTEST_PAIRED') {
+      const varCount = data.variables.length;
+      variables = data.variables
+        ?.reduce(
+          (vectors: string, v, i) =>
+            (i + 1) % 2 === 0
+              ? `${vectors}${v},`
+              : varCount === i + 1
+              ? `${vectors}${v}-${data.variables[0]}`
+              : `${vectors}${v}-`,
+          '',
+        )
+        .replace(/,$/, '');
+    }
+
+    params.algorithm.parameters.push({
+      name: 'y',
+      label: 'y',
+      value: variables,
     });
   }
 
-- 
GitLab