Skip to content
Snippets Groups Projects
Commit 457330c5 authored by Steve Reis's avatar Steve Reis
Browse files

WIP : uniform experiment and transient

parent 07e753ca
No related branches found
No related tags found
No related merge requests found
import { Observable } from 'rxjs';
import { IEngineService } from 'src/engine/engine.interfaces';
import { Domain } from 'src/engine/models/domain.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { ExperimentCreateInput } from 'src/engine/models/experiment/input/experiment-create.input';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
export default class DataShieldService implements IEngineService {
......
import { Category } from 'src/engine/models/category.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
import { AlgorithmParamInput } from 'src/engine/models/experiment/input/algorithm-parameter.input';
import { ExperimentCreateInput } from 'src/engine/models/experiment/input/experiment-create.input';
import { Group } from 'src/engine/models/group.model';
import { TableResult } from 'src/engine/models/result/table-result.model';
import { Variable } from 'src/engine/models/variable.model';
......@@ -39,6 +40,13 @@ export const dataToVariable = (data: VariableEntity): Variable => {
};
};
const algoParamInputToData = (param: AlgorithmParamInput) => {
return {
name: param.name,
value: param.value.join(','),
};
};
export const experimentInputToData = (data: ExperimentCreateInput) => {
return {
algorithm: {
......@@ -47,10 +55,6 @@ export const experimentInputToData = (data: ExperimentCreateInput) => {
name: 'dataset',
value: data.datasets.join(','),
},
{
name: 'y',
value: data.variables.join(','),
},
{
name: 'filter',
value: data.filter,
......@@ -59,9 +63,9 @@ export const experimentInputToData = (data: ExperimentCreateInput) => {
name: 'pathology',
value: data.domain,
},
],
type: 'string',
name: data.algorithm,
].concat(data.algorithm.parameters.map(algoParamInputToData)),
type: data.algorithm.type ?? 'string',
name: data.algorithm.name,
},
name: data.name,
};
......
......@@ -4,8 +4,8 @@ import { Request } from 'express';
import { firstValueFrom, map, Observable } from 'rxjs';
import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
import { Domain } from 'src/engine/models/domain.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/input/experiment-create.input';
import { Group } from 'src/engine/models/group.model';
import { Variable } from 'src/engine/models/variable.model';
import {
......@@ -24,10 +24,16 @@ export default class ExaremeService implements IEngineService {
private readonly options: IEngineOptions,
private readonly httpService: HttpService,
) {}
createExperiment(
data: ExperimentCreateInput,
): Experiment | Promise<Experiment> {
throw new Error('Method not implemented.');
async createExperiment(data: ExperimentCreateInput): Promise<Experiment> {
const form = experimentInputToData(data);
const path = this.options.baseurl + 'experiments';
const resultAPI = await firstValueFrom(
this.httpService.post<TransientDataResult>(path, form),
);
return dataToTransient(resultAPI.data);
}
async createTransient(data: ExperimentCreateInput): Promise<Experiment> {
......
import { Request } from 'express';
import { Observable } from 'rxjs';
import { Domain } from './models/domain.model';
import { ExperimentCreateInput } from './models/experiment/experiment-create.input';
import { ExperimentCreateInput } from './models/experiment/input/experiment-create.input';
import { Experiment } from './models/experiment/experiment.model';
export interface IEngineOptions {
......
......@@ -3,7 +3,7 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { ENGINE_SERVICE } from './engine.constants';
import { IEngineService } from './engine.interfaces';
import { Domain } from './models/domain.model';
import { ExperimentCreateInput } from './models/experiment/experiment-create.input';
import { ExperimentCreateInput } from './models/experiment/input/experiment-create.input';
import { Experiment } from './models/experiment/experiment.model';
@Resolver()
......
import { Field, InputType } from '@nestjs/graphql';
@InputType()
export class AlgorithmParamInput {
@Field()
name: string;
@Field(() => [String])
value: string[];
}
import { Field, InputType } from '@nestjs/graphql';
import { AlgorithmParamInput } from './algorithm-parameter.input';
@InputType()
export class AlgorithmInput {
@Field(() => [String])
datasets: string[];
@Field(() => [String])
variables: string[];
@Field(() => String, { nullable: true })
filter: string;
@Field()
domain: string;
name: string;
@Field()
algorithm: string;
@Field(() => [AlgorithmParamInput])
parameters: AlgorithmParamInput[];
@Field()
name: string;
type: string;
}
import { Field, InputType } from '@nestjs/graphql';
import { AlgorithmInput } from './algorithm.input';
@InputType()
export class ExperimentCreateInput {
@Field(() => [String])
datasets: string[];
@Field(() => [String])
variables: string[];
@Field(() => String, { nullable: true })
filter: string;
......@@ -15,7 +13,7 @@ export class ExperimentCreateInput {
domain: string;
@Field()
algorithm: string;
algorithm: AlgorithmInput;
@Field()
name: string;
......
......@@ -79,9 +79,19 @@ type Mutation {
input ExperimentCreateInput {
datasets: [String!]!
variables: [String!]!
filter: String
domain: String!
algorithm: String!
algorithm: AlgorithmInput!
name: String!
}
input AlgorithmInput {
name: String!
parameters: [AlgorithmParamInput!]!
type: String!
}
input AlgorithmParamInput {
name: String!
value: [String!]!
}
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