Class AmiciSummedGradientFunction

Inheritance Relationships

Base Type

Class Documentation

class AmiciSummedGradientFunction : public parpe::SummedGradientFunction<int>

The AmiciSummedGradientFunction class represents a cost function based on simulations of an AMICI model for different datasets.

Public Types

using WorkPackage = AmiciSimulationRunner::AmiciWorkPackageSimple
using ResultPackage = AmiciSimulationRunner::AmiciResultPackageSimple
using ResultMap = std::map<int, ResultPackage>

Public Functions

AmiciSummedGradientFunction(MultiConditionDataProvider *dataProvider, LoadBalancerMaster *loadBalancer, OptimizationResultWriter *resultWriter)

AmiciSummedGradientFunction.

Parameters:
  • dataProvider – Provides data and settings for AMICI simulations

  • loadBalancer – LoadBalancerMaster for shared memory parallelism, or nullptr

  • resultWriter

~AmiciSummedGradientFunction() override = default
virtual FunctionEvaluationStatus evaluate(gsl::span<const double> parameters, int dataset, double &fval, gsl::span<double> gradient, Logger *logger, double *cpuTime) const override

Evaluate on single data point.

Parameters:
  • parameters – Parameter vector where the function is to be evaluated

  • dataset – The dataset on which to evaluate the function

  • fval – Output argument for f(x)

  • gradient – Preallocated space for the gradient of size dim(parameters). Or gsl::span<double>() for evaluation without gradient.

  • logger – Optional Logger instance used for output

  • cputime – Optional output argument to report cpuTime consumed by the the function

Returns:

Evaluation status

virtual FunctionEvaluationStatus evaluate(gsl::span<const double> parameters, std::vector<int> datasets, double &fval, gsl::span<double> gradient, Logger *logger, double *cpuTime) const override

Evaluate on vector of data points.

Parameters:
  • parameters – Parameter vector where the function is to be evaluated

  • datasets – The datasets on which to evaluate the function

  • fval – Output argument for f(x)

  • gradient – Preallocated space for the gradient of size dim(parameters). Or gsl::span<double>() for evaluation without gradient.

  • logger – Optional Logger instance used for output

  • cputime – Optional output argument to report cpuTime consumed by the the function

Returns:

Evaluation status

virtual int numParameters() const override

Number of optimization parameters.

Returns:

virtual std::vector<std::string> getParameterIds() const override
virtual FunctionEvaluationStatus getModelOutputsAndSigmas(gsl::span<double const> parameters, std::vector<std::vector<double>> &modelOutputs, std::vector<std::vector<double>> &modelSigmas, Logger *logger, double *cpuTime) const

Run simulations (no gradient) with given parameters and collect model outputs.

Parameters:
  • parametersModel parameters for simulation

  • modelOutput – in: some vector reference, will be resized. output: Vector of double vectors containing AMICI ReturnData::y (nt x ny, column-major)

Returns:

Simulation status

virtual std::vector<std::vector<double>> getAllMeasurements() const
virtual void messageHandler(std::vector<char> &buffer, int jobId) const

Callback function for LoadBalancer.

Parameters:
  • buffer – In/out: message buffer

  • jobId – In: Identifier of the job (unique up to INT_MAX)

virtual amici::ParameterScaling getParameterScaling(int parameterIndex) const

Public Members

bool sendStates = false

Include model states in result package

Protected Functions

AmiciSummedGradientFunction() = default
virtual int runSimulations(gsl::span<double const> optimizationParameters, double &nllh, gsl::span<double> objectiveFunctionGradient, const std::vector<int> &dataIndices, Logger *logger, double *cpuTime) const

Run AMICI simulations for conditions with the given indices.

Parameters:
  • optimizationVariables

  • logLikelihood

  • objectiveFunctionGradient

  • dataIndices

  • numDataIndices

Returns:

Simulation status, != 0 indicates failure

int aggregateLikelihood(JobData &data, double &negLogLikelihood, gsl::span<double> negLogLikelihoodGradient, double &simulationTimeInS, gsl::span<const double> optimizationParameters) const

Aggregates log-likelihood received from workers.

Parameters:
  • data – Simulation job result

  • negLogLikelihood – output argument to which negative log likelihood is added

  • negLogLikelihoodGradient – output argument to which negative log likelihood gradient is added

  • simulationTimeInS – unused

Returns:

void addSimulationGradientToObjectiveFunctionGradient(int conditionIdx, gsl::span<const double> simulationGradient, gsl::span<double> objectiveFunctionGradient, gsl::span<const double> parameters) const

Aggregates log-likelihood gradient received from workers.

Parameters:
  • conditionIdx

  • simulationGradient – log-likelihood gradient from simulation

  • objectiveFunctionGradient – output to which negative log-likelihood gradient from simulation is added

void setSensitivityOptions(bool sensiRequired) const