sciforge_hub/engine/experience/
runner.rs1use super::experiment::Experiment;
8use crate::domain::common::errors::HubResult;
9
10#[derive(Debug, Clone)]
12pub enum RunOutput {
13 Scalar(f64),
14 Vector(Vec<f64>),
15 Pair(f64, f64),
16 Triple(f64, f64, f64),
17 Matrix(Vec<Vec<f64>>),
18 Boolean(bool),
19 Text(String),
20 Complex(f64, f64),
21 ComplexVector(Vec<(f64, f64)>),
22 ComplexMatrix(Vec<Vec<(f64, f64)>>),
23 PolynomialOut(Vec<f64>),
24 TensorOut {
25 data: Vec<f64>,
26 shape: Vec<usize>,
27 },
28 SparseOut {
29 rows: usize,
30 cols: usize,
31 row_ptr: Vec<usize>,
32 col_idx: Vec<usize>,
33 values: Vec<f64>,
34 },
35 Integer(i64),
36 IntVector(Vec<i64>),
37 PairVec(Vec<(f64, f64)>),
38 TimeSeries {
39 times: Vec<f64>,
40 values: Vec<f64>,
41 },
42}
43
44pub struct ExperimentRunner;
46
47impl Default for ExperimentRunner {
48 fn default() -> Self {
49 Self
50 }
51}
52
53impl ExperimentRunner {
54 pub fn new() -> Self {
56 Self
57 }
58
59 pub fn run(&self, experiment: &Experiment) -> HubResult<RunOutput> {
61 crate::engine::dispatch::dispatch(experiment)
62 }
63}