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

wip: handle exceptions experiment exareme

parent af4a74ac
No related branches found
No related tags found
No related merge requests found
...@@ -220,8 +220,17 @@ export const dataToExperiment = ( ...@@ -220,8 +220,17 @@ export const dataToExperiment = (
return exp; return exp;
} catch (e) { } catch (e) {
//TODO : Add logger can't convert experiment return {
return undefined; id: data.uuid,
name: data.name,
status: 'error',
variables: [],
domain: data['domain'] ?? '',
datasets: [],
algorithm: {
id: 'unknown',
},
};
} }
}; };
...@@ -229,10 +238,19 @@ export const dataToAlgorithms = (data: string): Algorithm[] => { ...@@ -229,10 +238,19 @@ export const dataToAlgorithms = (data: string): Algorithm[] => {
return transformToAlgorithms.evaluate(data); return transformToAlgorithms.evaluate(data);
}; };
export const dataToRaw = (result: ResultExperiment): RawResult[] => { export const dataToRaw = (
algo: string,
result: ResultExperiment,
): RawResult[] => {
let data = result;
if (algo === 'CART') {
data = { ...data, type: 'application/binary-tree+json' };
}
return [ return [
{ {
rawdata: result, rawdata: data,
}, },
]; ];
}; };
...@@ -247,7 +265,7 @@ export const dataToResult = ( ...@@ -247,7 +265,7 @@ export const dataToResult = (
case 'application/vnd.highcharts+json': case 'application/vnd.highcharts+json':
return dataHighchartToResult(result as ResultChartExperiment, algo); return dataHighchartToResult(result as ResultChartExperiment, algo);
default: default:
return dataToRaw(result); return dataToRaw(algo, result);
} }
}; };
...@@ -259,7 +277,7 @@ export const dataJSONtoResult = ( ...@@ -259,7 +277,7 @@ export const dataJSONtoResult = (
case 'descriptive_stats': case 'descriptive_stats':
return descriptiveDataToTableResult(result); return descriptiveDataToTableResult(result);
default: default:
return dataToRaw(result); return dataToRaw(algo, result);
} }
}; };
...@@ -273,6 +291,6 @@ export const dataHighchartToResult = ( ...@@ -273,6 +291,6 @@ export const dataHighchartToResult = (
case 'area': case 'area':
return [dataROCToLineResult.evaluate(result) as LineChartResult]; return [dataROCToLineResult.evaluate(result) as LineChartResult];
default: default:
return dataToRaw(result); return dataToRaw(algo, result);
} }
}; };
...@@ -5,6 +5,7 @@ export interface ExperimentData { ...@@ -5,6 +5,7 @@ export interface ExperimentData {
uuid?: string; uuid?: string;
status?: string; status?: string;
createdBy?: string; createdBy?: string;
created: string;
shared?: boolean; shared?: boolean;
viewed?: boolean; viewed?: boolean;
result?: ResultExperiment[]; result?: ResultExperiment[];
......
...@@ -74,9 +74,7 @@ export default class ExaremeService implements IEngineService { ...@@ -74,9 +74,7 @@ export default class ExaremeService implements IEngineService {
return { return {
...resultAPI.data, ...resultAPI.data,
experiments: experiments: resultAPI.data.experiments?.map(dataToExperiment) ?? [],
resultAPI.data.experiments?.map(dataToExperiment).filter((r) => r) ??
[],
}; };
} }
......
...@@ -31,10 +31,9 @@ export const transformToAlgorithms = jsonata(` ...@@ -31,10 +31,9 @@ export const transformToAlgorithms = jsonata(`
export const transformToExperiment = jsonata(` export const transformToExperiment = jsonata(`
( (
$params := ["y", "pathology", "dataset", "filter", "x"]; $params := ["y", "pathology", "dataset", "filter", "x"];
$toArray := function($x) { $type($x) = 'array' ? $x : [$x]}; $toArray := function($x) { $type($x) = 'array' ? $x : [$x]};
$convDate := function($v) { $type($v) = 'string' ? $toMillis($v) : $v }; $convDate := function($v) { $type($v) = 'string' ? $toMillis($v) : $v };
$rp := function($v) {$replace($v, /(\\+|\\*|-)/, ',')};
{ {
"name": name, "name": name,
...@@ -47,8 +46,8 @@ export const transformToExperiment = jsonata(` ...@@ -47,8 +46,8 @@ export const transformToExperiment = jsonata(`
"shared": shared, "shared": shared,
"updateAt": $convDate(updated), "updateAt": $convDate(updated),
"domain": algorithm.parameters[name = "pathology"].value, "domain": algorithm.parameters[name = "pathology"].value,
"variables": $split(algorithm.parameters[name = "y"].value, ','), "variables": $split($rp(algorithm.parameters[name = "y"].value), ','),
"coVariables": $toArray($split(algorithm.parameters[name = "x"].value, ',')), "coVariables": $toArray($split($rp(algorithm.parameters[name = "x"].value), ',')),
"filter": algorithm.parameters[name = "filter"].value, "filter": algorithm.parameters[name = "filter"].value,
"datasets": $split(algorithm.parameters[name = "dataset"].value, ','), "datasets": $split(algorithm.parameters[name = "dataset"].value, ','),
"algorithm": { "algorithm": {
......
...@@ -53,10 +53,11 @@ export class EngineModule { ...@@ -53,10 +53,11 @@ export class EngineModule {
const engine = new service.default(options, httpService, req); const engine = new service.default(options, httpService, req);
return engine; return engine;
} catch { } catch (e) {
this.logger.error( this.logger.error(
`There is a problem with the connector '${options.type}'`, `There is a problem with the connector '${options.type}'`,
); );
this.logger.verbose(e);
process.exit(); // We can't continue without an engine, shutdown the process... process.exit(); // We can't continue without an engine, shutdown the process...
} }
} }
......
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