function timesliceCalculations (calcs) {
  return function _timesliceCalculations (metricInstances) {
    const slices = transposeToTimeslices(metricInstances)
    const calculated = applyFunctionsToTimeslices(slices, calcs)
    const untransposed = untransposeTimeslices(calculated)
    return untransposed
  }
}
Completely transforms an input set of data at each timepoint
Assumes that a time sample exists at each point

This is probably an expensive transform though so there may be cheaper ways to hardcode (tbc)

Best to see some of the examples to see what is possible

@param {object} an associative set specifying, for a given output at a given time series, what the fn to be applied should be
@return {function} a transform function