Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@
"source": [
"# create edata, with 3 timepoints and 2 observables:\n",
"edata = ExpData(2, 0, 0, np.array([0.0, 0.1, 1.0]))\n",
"edata.set_observed_data([1.8] * 6)\n",
"edata.set_measurements([1.8] * 6)\n",
"edata.fixed_parameters = np.array([3.0, 5.0])\n",
"# set parameters for pre-equilibration\n",
"edata.fixed_parameters_pre_equilibration = np.array([0.0, 2.0])\n",
Expand Down Expand Up @@ -765,7 +765,7 @@
"# by setting an infinity timepoint\n",
"# and creatíng an edata object, which is needed for adjoint computation\n",
"edata = ExpData(2, 0, 0, np.array([float(\"inf\")]))\n",
"edata.set_observed_data([1.8] * 2)\n",
"edata.set_measurements([1.8] * 2)\n",
"edata.fixed_parameters = np.array([3.0, 5.0])\n",
"\n",
"model_reduced.set_steady_state_sensitivity_mode(\n",
Expand Down Expand Up @@ -853,7 +853,7 @@
"# No post-equilibration this time.\n",
"# create edata, with 3 timepoints and 2 observables:\n",
"edata = ExpData(2, 0, 0, np.array([0.0, 0.1, 1.0]))\n",
"edata.set_observed_data([1.8] * 6)\n",
"edata.set_measurements([1.8] * 6)\n",
"edata.fixed_parameters = np.array([3.0, 5.0])\n",
"# set parameters for pre-equilibration\n",
"edata.fixed_parameters_pre_equilibration = np.array([0.0, 2.0])\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1135,7 +1135,7 @@
"edata.fixed_parameters = model.get_fixed_parameters()\n",
"# set sigma to 1.0 except for observable 5, so that p[7] is used instead\n",
"# (if we have sigma parameterized, the corresponding ExpData entries must NaN, otherwise they will override the parameter)\n",
"edata.set_observed_data_std_dev(\n",
"edata.set_noise_scale(\n",
" rdata[\"t\"] * 0 + np.nan,\n",
" list(model.get_observable_ids()).index(\"observable_x1withsigma\"),\n",
")\n",
Expand Down
164 changes: 78 additions & 86 deletions include/amici/edata.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,20 @@ class ExpData : public SimulationParameters {
* @param nztrue Number of event outputs
* @param nmaxevent Maximal number of events to track
* @param ts Timepoints (dimension: nt)
* @param observed_data observed data (dimension: nt x nytrue, row-major)
* @param observed_data_std_dev standard deviation of observed data
* @param my measurements (dimension: nt x nytrue, row-major)
* @param sigma_y noise scale of measurements
* (dimension: nt x nytrue, row-major)
* @param observed_events observed events
* @param mz event measurements
* (dimension: nmaxevents x nztrue, row-major)
* @param sigma_z noise scale of event measurements
* (dimension: nmaxevents x nztrue, row-major)
* @param observed_events_std_dev standard deviation of observed
* events/roots (dimension: nmaxevents x nztrue, row-major)
*/
ExpData(
int nytrue, int nztrue, int nmaxevent, std::vector<realtype> ts,
std::vector<realtype> const& observed_data,
std::vector<realtype> const& observed_data_std_dev,
std::vector<realtype> const& observed_events,
std::vector<realtype> const& observed_events_std_dev
std::vector<realtype> const& my,
std::vector<realtype> const& sigma_y,
std::vector<realtype> const& mz,
std::vector<realtype> const& sigma_z
);

/**
Expand All @@ -101,8 +101,8 @@ class ExpData : public SimulationParameters {
* distributed noise according to specified sigmas.
*
* @param rdata return data pointer with stored simulation results
* @param sigma_y scalar standard deviations for all observables
* @param sigma_z scalar standard deviations for all event observables
* @param sigma_y scalar noise scales for all observables
* @param sigma_z scalar noise scales for all event observables
* @param seed Seed for the random number generator. If a negative number
* is passed, a random seed is used.
*/
Expand All @@ -116,9 +116,9 @@ class ExpData : public SimulationParameters {
* distributed noise according to specified sigmas.
*
* @param rdata return data pointer with stored simulation results
* @param sigma_y vector of standard deviations for observables
* @param sigma_y vector of noise scales for observables
* (dimension: nytrue or nt x nytrue, row-major)
* @param sigma_z vector of standard deviations for event observables
* @param sigma_z vector of noise scales for event observables
* (dimension: nztrue or nmaxevent x nztrue, row-major)
* @param seed Seed for the random number generator. If a negative number
* is passed, a random seed is used.
Expand Down Expand Up @@ -196,17 +196,17 @@ class ExpData : public SimulationParameters {
/**
* @brief Set all measurements.
*
* @param observed_data observed data (dimension: nt x nytrue, row-major)
* @param measurements observed data (dimension: nt x nytrue, row-major)
*/
void set_observed_data(std::vector<realtype> const& observed_data);
void set_measurements(std::vector<realtype> const& measurements);

/**
* @brief Set measurements for a given observable index
*
* @param observed_data observed data (dimension: nt)
* @param measurements observed data (dimension: nt)
* @param iy observed data index
*/
void set_observed_data(std::vector<realtype> const& observed_data, int iy);
void set_measurements(std::vector<realtype> const& measurements, int iy);

/**
* @brief Whether there is a measurement for the given time- and observable-
Expand All @@ -217,14 +217,14 @@ class ExpData : public SimulationParameters {
*
* @return boolean specifying if data was set
*/
bool is_set_observed_data(int it, int iy) const;
bool is_set_measurements(int it, int iy) const;

/**
* @brief Get all measurements.
*
* @return observed data (dimension: nt x nytrue, row-major)
*/
std::vector<realtype> const& get_observed_data() const;
std::vector<realtype> const& get_measurements() const;

/**
* @brief Get measurements for a given timepoint index.
Expand All @@ -233,78 +233,74 @@ class ExpData : public SimulationParameters {
*
* @return pointer to observed data at index (dimension: nytrue)
*/
realtype const* get_observed_data_ptr(int it) const;
realtype const* get_measurements_ptr(int it) const;

/**
* @brief Set standard deviations for measurements.
* @brief Set noise scales for measurements.
*
* @param observed_data_std_dev standard deviation of observed data
* @param noise_scale noise scale of observed data
* (dimension: nt x nytrue, row-major)
*/
void set_observed_data_std_dev(
std::vector<realtype> const& observed_data_std_dev
);
void set_noise_scale(std::vector<realtype> const& noise_scale);

/**
* @brief Set identical standard deviation for all measurements.
* @brief Set identical noise scale for all measurements.
*
* @param stdDev standard deviation (dimension: scalar)
* @param sigma noise scale (dimension: scalar)
*/
void set_observed_data_std_dev(realtype stdDev);
void set_noise_scale(realtype sigma);

/**
* @brief Set standard deviations of observed data for a
* @brief Set noise scales of observed data for a
* specific observable index.
*
* @param observedDataStdDev standard deviation of observed data (dimension:
* @param sigma noise scale of observed data (dimension:
* nt)
* @param iy observed data index
*/
void set_observed_data_std_dev(
std::vector<realtype> const& observedDataStdDev, int iy
);
void set_noise_scale(std::vector<realtype> const& sigma, int iy);

/**
* @brief Set all standard deviation for a given observable index to the
* @brief Set all noise scale for a given observable index to the
* input value.
*
* @param stdDev standard deviation (dimension: scalar)
* @param sigma noise scale (dimension: scalar)
* @param iy observed data index
*/
void set_observed_data_std_dev(realtype stdDev, int iy);
void set_noise_scale(realtype sigma, int iy);

/**
* @brief Whether standard deviation for a measurement at
* @brief Whether noise scale for a measurement at
* specified timepoint- and observable index has been set.
*
* @param it time index
* @param iy observable index
* @return boolean specifying if standard deviation of data was set
* @return boolean specifying if noise scale of data was set
*/
bool is_set_observed_data_std_dev(int it, int iy) const;
bool is_set_noise_scale(int it, int iy) const;

/**
* @brief Get measurement standard deviations.
* @brief Get measurement noise scales.
*
* @return standard deviation of observed data
* @return noise scale of observed data
*/
std::vector<realtype> const& get_observed_data_std_dev() const;
std::vector<realtype> const& get_noise_scale() const;

/**
* @brief Get pointer to measurement standard deviations.
* @brief Get pointer to measurement noise scales.
*
* @param it timepoint index
* @return pointer to standard deviation of observed data at index
* @return pointer to noise scale of observed data at index
*/
realtype const* get_observed_data_std_dev_ptr(int it) const;
realtype const* get_noise_scale_ptr(int it) const;

/**
* @brief Set observed event data.
*
* @param observedEvents observed data (dimension: nmaxevent x nztrue,
* row-major)
*/
void set_observed_events(std::vector<realtype> const& observedEvents);
void set_event_measurements(std::vector<realtype> const& observedEvents);

/**
* @brief Set observed event data for specific event observable.
Expand All @@ -313,7 +309,7 @@ class ExpData : public SimulationParameters {
* @param iz observed event data index
*/
void
set_observed_events(std::vector<realtype> const& observedEvents, int iz);
set_event_measurements(std::vector<realtype> const& observedEvents, int iz);

/**
* @brief Check whether event data at specified indices has been set.
Expand All @@ -322,14 +318,14 @@ class ExpData : public SimulationParameters {
* @param iz event observable index
* @return boolean specifying if data was set
*/
bool is_set_observed_events(int ie, int iz) const;
bool is_set_event_measurements(int ie, int iz) const;

/**
* @brief Get observed event data.
*
* @return observed event data
*/
std::vector<realtype> const& get_observed_events() const;
std::vector<realtype> const& get_event_measurements() const;

/**
* @brief Get pointer to observed data at ie-th occurrence.
Expand All @@ -338,73 +334,69 @@ class ExpData : public SimulationParameters {
*
* @return pointer to observed event data at ie-th occurrence
*/
realtype const* get_observed_events_ptr(int ie) const;
realtype const* get_event_measurements_ptr(int ie) const;

/**
* @brief Set standard deviation of observed event data.
* @brief Set noise scale of observed event data.
*
* @param observedEventsStdDev standard deviation of observed event data
* @param sigma noise scale of observed event data
*/
void set_observed_events_std_dev(
std::vector<realtype> const& observedEventsStdDev
);
void set_event_noise_scale(std::vector<realtype> const& sigma);

/**
* @brief Set standard deviation of observed event data.
* @brief Set noise scale of observed event data.
*
* @param stdDev standard deviation (dimension: scalar)
* @param sigma noise scale (dimension: scalar)
*/
void set_observed_events_std_dev(realtype stdDev);
void set_event_noise_scale(realtype sigma);

/**
* @brief Set standard deviation of observed data for a specific observable.
* @brief Set noise scale of observed data for a specific observable.
*
* @param observedEventsStdDev standard deviation of observed data
* @param sigma noise scale of observed data
* (dimension: nmaxevent)
* @param iz observed data index
*/
void set_observed_events_std_dev(
std::vector<realtype> const& observedEventsStdDev, int iz
);
void set_event_noise_scale(std::vector<realtype> const& sigma, int iz);

/**
* @brief Set all standard deviations of a specific event-observable.
* @brief Set all noise scales of a specific event-observable.
*
* @param stdDev standard deviation (dimension: scalar)
* @param sigma noise scale (dimension: scalar)
* @param iz observed data index
*/
void set_observed_events_std_dev(realtype stdDev, int iz);
void set_event_noise_scale(realtype sigma, int iz);

/**
* @brief Check whether standard deviation of event data
* @brief Check whether noise scale of event data
* at specified indices has been set.
*
* @param ie event index
* @param iz event observable index
* @return boolean specifying if standard deviation of event data was set
* @return boolean specifying if noise scale of event data was set
*/
bool is_set_observed_events_std_dev(int ie, int iz) const;
bool is_set_event_noise_scale(int ie, int iz) const;

/**
* @brief Get standard deviation of observed event data.
* @brief Get noise scale of observed event data.
*
* @return standard deviation of observed event data
* @return noise scale of observed event data
*/
std::vector<realtype> const& get_observed_events_std_dev() const;
std::vector<realtype> const& get_event_noise_scale() const;

/**
* @brief Get pointer to standard deviation of
* @brief Get pointer to noise scale of
* observed event data at ie-th occurrence.
*
* @param ie event occurrence
*
* @return pointer to standard deviation of observed event data at ie-th
* @return pointer to noise scale of observed event data at ie-th
* occurrence
*/
realtype const* get_observed_events_std_dev_ptr(int ie) const;
realtype const* get_event_noise_scale_ptr(int ie) const;

/**
* @brief Set all observations and their standard deviations to NaN.
* @brief Set all observations and their noise scales to NaN.
*
* Useful, e.g., after calling ExpData::setTimepoints.
*/
Expand Down Expand Up @@ -463,24 +455,24 @@ class ExpData : public SimulationParameters {
int nmaxevent_{0};

/** @brief observed data (dimension: nt x nytrue, row-major) */
std::vector<realtype> observed_data_;
std::vector<realtype> measurements_;

/**
* @brief standard deviation of observed data (dimension: nt x nytrue,
* @brief noise scale of observed data (dimension: nt x nytrue,
* row-major)
*/
std::vector<realtype> observed_data_std_dev_;
std::vector<realtype> noise_scale_;

/**
* @brief observed events (dimension: nmaxevents x nztrue, row-major)
*/
std::vector<realtype> observed_events_;
std::vector<realtype> event_measurements_;

/**
* @brief standard deviation of observed events/roots
* @brief noise scale of observed events/roots
* (dimension: nmaxevents x nztrue, row-major)
*/
std::vector<realtype> observed_events_std_dev_;
std::vector<realtype> event_noise_scale_;
};

/**
Expand All @@ -494,11 +486,11 @@ inline bool operator==(ExpData const& lhs, ExpData const& rhs) {
== *dynamic_cast<SimulationParameters const*>(&rhs)
&& lhs.id == rhs.id && lhs.nytrue_ == rhs.nytrue_
&& lhs.nztrue_ == rhs.nztrue_ && lhs.nmaxevent_ == rhs.nmaxevent_
&& is_equal(lhs.observed_data_, rhs.observed_data_)
&& is_equal(lhs.observed_data_std_dev_, rhs.observed_data_std_dev_)
&& is_equal(lhs.observed_events_, rhs.observed_events_)
&& is_equal(lhs.measurements_, rhs.measurements_)
&& is_equal(lhs.noise_scale_, rhs.noise_scale_)
&& is_equal(lhs.event_measurements_, rhs.event_measurements_)
&& is_equal(
lhs.observed_events_std_dev_, rhs.observed_events_std_dev_
lhs.event_noise_scale_, rhs.event_noise_scale_
);
}

Expand Down
Loading
Loading