diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts index 1e43bfbe9973f0011e2e883ae7e417c2645ce310..608ac77e06a1091e3133a183f9c81d1629060759 100644 --- a/api/src/engine/connectors/exareme/converters.ts +++ b/api/src/engine/connectors/exareme/converters.ts @@ -88,6 +88,18 @@ export const experimentInputToData = (data: ExperimentCreateInput) => { label: 'y', value: data.variables.join(','), }, + { + name: 'formula', + value: { + single: data.transformations.map((t) => ({ + var_name: t.name, + unary_operation: t.operation, + })), + interactions: data.interactions.map((v) => + v.reduce((a, v, i) => ({ ...a, [`var${i + 1}`]: v }), {}), + ), + }, + }, ].concat(data.algorithm.parameters.map(algoParamInputToData)), type: data.algorithm.type ?? 'string', name: data.algorithm.name, diff --git a/api/src/engine/models/experiment/input/experiment-create.input.ts b/api/src/engine/models/experiment/input/experiment-create.input.ts index 85a54049cffde188cd770237ba53ef1ccf847027..b0b57cea85b17b0b49d4cbdf7b6cc12f21b71688 100644 --- a/api/src/engine/models/experiment/input/experiment-create.input.ts +++ b/api/src/engine/models/experiment/input/experiment-create.input.ts @@ -1,6 +1,15 @@ import { Field, InputType } from '@nestjs/graphql'; import { AlgorithmInput } from './algorithm.input'; +@InputType() +export class FormulaTransformation { + @Field() + name: string; + + @Field() + operation: string; +} + @InputType() export class ExperimentCreateInput { @Field(() => [String]) @@ -20,4 +29,10 @@ export class ExperimentCreateInput { @Field() name: string; + + @Field(() => [FormulaTransformation], { nullable: true }) + transformations: FormulaTransformation[]; + + @Field(() => [[String]], { nullable: true }) + interactions: string[][]; } diff --git a/api/src/schema.gql b/api/src/schema.gql index b2c3ddb14a0cd1ade6d856616c0f56634915c969..1d30677261172d7d7fdc830d938d329d9b5f2d5d 100644 --- a/api/src/schema.gql +++ b/api/src/schema.gql @@ -189,6 +189,8 @@ input ExperimentCreateInput { variables: [String!]! algorithm: AlgorithmInput! name: String! + transformations: [FormulaTransformation!] + interactions: [[String!]!] } input AlgorithmInput { @@ -202,6 +204,11 @@ input AlgorithmParamInput { value: [String!]! } +input FormulaTransformation { + name: String! + operation: String! +} + input ExperimentEditInput { name: String viewed: Boolean