Explore with Aggregate Sampling Results

Suggest edits
Documentation > Explore > Samplings

Contents

"Aggregating Results of a Direct Sampling" 🔗

"In Arrays" 🔗

Direct sampling and offers a way to aggregate the multiple output value of the model generated by the multiple execution of the model. This is done by settings the argument aggregation of the "Direct Sampling" or "Replication" method. The simplest usage is to generate an array of all the computed outputs. You can then store it using a hook or pass it to a subsequent task:
val input_i = Val[Int]
val input_j = Val[Double]
val output1 = Val[Double]
val output2 = Val[Double]

val postProcessingTask =
  ScalaTask("""
    // my post processing code
  """) set (
    inputs += (output1.array, output2.array)
  )

DirectSampling(
  evaluation = my_own_model,
  sampling =
    (input_i in (0 to 10 by 2)) x
    (input_j in (0.0 to 5.0 by 0.5)),
  aggregation = Seq(output1, output2)
) -- postProcessingTask

"Statistic Indicators" 🔗

OpenMOLE provides a bunch on statistic function you can use to aggregate you outputs. The list of these function is available in the doc. You can use these function either in a "ScalaTask" to post process your results or using the aggregate keyword:
val input_i = Val[Int]
val input_j = Val[Double]
val output1 = Val[Double]
val output2 = Val[Double]

DirectSampling(
  evaluation = my_own_model,
  sampling =
    (input_i in (0 to 10 by 2)) x
    (input_j in (0.0 to 5.0 by 0.5)),
  aggregation = Seq(
    output1 aggregate median,
    output2 aggregate average
  )
)

"You own function" 🔗

You can also provide your own scala function to aggregate the data, as it is shown in the following example:
val input_i = Val[Int]
val input_j = Val[Double]
val output1 = Val[Double]
val output2 = Val[Double]

def myAggregation(d: Array[Double]) = d.sum / 3.0

DirectSampling(
  evaluation = my_own_model,
  sampling =
    (input_i in (0 to 10 by 2)) x
    (input_j in (0.0 to 5.0 by 0.5)),
  aggregation = Seq(
    output1 aggregate myAggregation _,
    output2 aggregate myAggregation _
  )
)