Skip to content
Snippets Groups Projects
Commit e981261a authored by stevereis's avatar stevereis
Browse files

Refactor Transient to Experiment

parent 7838f9a8
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 { TransientCreateInput } from 'src/engine/models/transient/transient-create.input';
import { Transient } from 'src/engine/models/transient/transient.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
export default class DataShieldService implements IEngineService {
createTransient(data: TransientCreateInput): Promise<Transient> | Transient {
createTransient(
data: ExperimentCreateInput,
): Experiment | Promise<Experiment> {
throw new Error('Method not implemented.');
}
getDomains(): Domain[] {
throw new Error('Method not implemented.');
}
......
......@@ -4,9 +4,9 @@ import { Variable } from 'src/engine/models/variable.model';
import { Hierarchy } from './interfaces/hierarchy.interface';
import { VariableEntity } from './interfaces/variable-entity.interface';
import { Entity } from './interfaces/entity.interface';
import { TransientCreateInput } from 'src/engine/models/transient/transient-create.input';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { TransientDataResult } from './interfaces/transient/transient-data-result.interface';
import { Transient } from 'src/engine/models/transient/transient.model';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
import { MetaData } from 'src/engine/models/result/common/metadata.model';
import { TableResult } from 'src/engine/models/result/table-result.model';
import { Dictionary } from 'src/common/interfaces/utilities.interface';
......@@ -40,7 +40,7 @@ export const dataToVariable = (data: VariableEntity): Variable => {
};
};
export const transientInputToData = (data: TransientCreateInput) => {
export const experimentInputToData = (data: ExperimentCreateInput) => {
return {
algorithm: {
parameters: [
......@@ -62,9 +62,9 @@ export const transientInputToData = (data: TransientCreateInput) => {
},
],
type: 'string',
name: 'DESCRIPTIVE_STATS',
name: data.algorithm,
},
name: 'Descriptive statistics',
name: data.name,
};
};
......@@ -80,7 +80,7 @@ const dictToTable = (dict: Dictionary<string[]>, rows: number): string[][] => {
});
};
export const dataToTransient = (data: TransientDataResult): Transient => {
export const dataToTransient = (data: TransientDataResult): Experiment => {
const result = data.result[0];
const tables = Object.keys(result.data.single).map((varKey): TableResult => {
const variable = result.data.single[varKey];
......@@ -116,6 +116,7 @@ export const dataToTransient = (data: TransientDataResult): Transient => {
data: dictToTable(rows, count),
metadatas: domains,
name: varKey,
groupBy: 'single',
};
});
......
......@@ -5,15 +5,15 @@ import { firstValueFrom, map, Observable } from 'rxjs';
import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
import { Domain } from 'src/engine/models/domain.model';
import { Group } from 'src/engine/models/group.model';
import { TransientCreateInput } from 'src/engine/models/transient/transient-create.input';
import { Transient } from 'src/engine/models/transient/transient.model';
import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
import { Experiment } from 'src/engine/models/experiment/experiment.model';
import { Variable } from 'src/engine/models/variable.model';
import {
dataToCategory,
dataToGroup,
dataToTransient,
dataToVariable,
transientInputToData,
experimentInputToData,
} from './converters';
import { Hierarchy } from './interfaces/hierarchy.interface';
import { Pathology } from './interfaces/pathology.interface';
......@@ -25,8 +25,8 @@ export default class ExaremeService implements IEngineService {
private readonly httpService: HttpService,
) {}
async createTransient(data: TransientCreateInput): Promise<Transient> {
const form = transientInputToData(data);
async createTransient(data: ExperimentCreateInput): Promise<Experiment> {
const form = experimentInputToData(data);
const path = this.options.baseurl + 'experiments/transient';
......@@ -40,7 +40,6 @@ export default class ExaremeService implements IEngineService {
ppmi: {
data: {
std: 1.2048783713787277,
max: 15.0815,
min: 7.6335,
mean: 11.38076218487395,
},
......
import { Request } from 'express';
import { Observable } from 'rxjs';
import { Domain } from './models/domain.model';
import { TransientCreateInput } from './models/transient/transient-create.input';
import { Transient } from './models/transient/transient.model';
import { ExperimentCreateInput } from './models/experiment/experiment-create.input';
import { Experiment } from './models/experiment/experiment.model';
export interface IEngineOptions {
type: string;
......@@ -24,7 +24,9 @@ export interface IEngineService {
startExperimentTransient(request: Request): Observable<string>;
createTransient(data: TransientCreateInput): Promise<Transient> | Transient;
createTransient(
data: ExperimentCreateInput,
): Promise<Experiment> | Experiment;
startExperiment(request: Request): Observable<string>;
......
......@@ -3,8 +3,8 @@ 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 { TransientCreateInput } from './models/transient/transient-create.input';
import { Transient } from './models/transient/transient.model';
import { ExperimentCreateInput } from './models/experiment/experiment-create.input';
import { Experiment } from './models/experiment/experiment.model';
@Resolver()
export class EngineResolver {
......@@ -20,10 +20,10 @@ export class EngineResolver {
return this.engineService.getDomains(ids);
}
@Mutation(() => Transient)
@Mutation(() => Experiment)
async createTransient(
@Args('data') transientCreateInput: TransientCreateInput,
@Args('data') experimentCreateInput: ExperimentCreateInput,
) {
return this.engineService.createTransient(transientCreateInput);
return this.engineService.createTransient(experimentCreateInput);
}
}
import { Field, InputType } from '@nestjs/graphql';
import { Extrafield } from '../utility/extrafield.input';
@InputType()
export class TransientCreateInput extends Extrafield {
export class ExperimentCreateInput {
@Field(() => [String])
datasets: string[];
......@@ -14,4 +13,10 @@ export class TransientCreateInput extends Extrafield {
@Field()
domain: string;
@Field()
algorithm: string;
@Field()
name: string;
}
import { Field, GraphQLISODateTime, ObjectType } from '@nestjs/graphql';
import { Result } from '../result/result.model';
@ObjectType()
export class Experiment {
@Field()
title: string;
@Field({ nullable: true })
uuid?: string;
@Field(() => GraphQLISODateTime, { nullable: true })
created_at?: Date;
@Field(() => GraphQLISODateTime, { nullable: true })
update_at?: Date;
@Field(() => GraphQLISODateTime, { nullable: true })
finished_at?: Date;
@Field(() => [Result])
result: Result[];
}
import { Field, ObjectType } from '@nestjs/graphql';
import { TableResult } from '../result/table-result.model';
@ObjectType()
export class Transient {
@Field()
title: string;
@Field(() => [TableResult])
result: TableResult[];
}
import { Field, InputType } from '@nestjs/graphql';
/**
* This class is used to add a common extra field to
* an input class in order to provide specific
* information for a connector
*/
@InputType()
export class Extrafield {
@Field({ nullable: true })
extradata: string;
}
......@@ -34,20 +34,27 @@ type Domain {
rootGroup: Group!
}
type MetaData {
name: String!
type: String!
type Result {
groupBy: String
}
type TableResult {
name: String!
data: [[String!]!]!
metadatas: [MetaData!]!
type Experiment {
title: String!
uuid: String
created_at: DateTime
update_at: DateTime
finished_at: DateTime
result: [Result!]!
}
type Transient {
title: String!
result: [TableResult!]!
"""
A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.
"""
scalar DateTime
type MetaData {
name: String!
type: String!
}
type Query {
......@@ -55,13 +62,14 @@ type Query {
}
type Mutation {
createTransient(data: TransientCreateInput!): Transient!
createTransient(data: ExperimentCreateInput!): Experiment!
}
input TransientCreateInput {
extradata: String
input ExperimentCreateInput {
datasets: [String!]!
variables: [String!]!
filter: String
domain: String!
algorithm: String!
name: 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