diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts index 06950abbd99852ee98e9745e63c1a20b4730d9b8..3c32f756990463f4e7256af71b4bfc9c424160b8 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, }); }