From 1133b52c5095d193461f5803b16488afd39f79ce Mon Sep 17 00:00:00 2001 From: Matthew-Supernaw-NOAA Date: Thu, 18 Jul 2024 09:21:50 -0400 Subject: [PATCH] Added ToJSON --- .../include/interface/rcpp/rcpp_interface.hpp | 26 +++++++++++++++++-- .../rcpp/rcpp_objects/rcpp_interface_base.hpp | 4 +++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/inst/include/interface/rcpp/rcpp_interface.hpp b/inst/include/interface/rcpp/rcpp_interface.hpp index 5f3147e52..c8668eaf6 100644 --- a/inst/include/interface/rcpp/rcpp_interface.hpp +++ b/inst/include/interface/rcpp/rcpp_interface.hpp @@ -75,6 +75,21 @@ void Finalize() { } } +/** + * @brief Extracts derived quantities from model objects. + */ +void ToJSON() { + std::stringstream ss; + ss<<"[\n"; + size_t length = FIMSRcppInterfaceBase::fims_interface_objects.size(); + for (size_t i = 0; i < length-1;i++) { + ss<to_json()<<",\n"; + } + + ss<to_json()<<"\n]"; + return ss.str(); +} + Rcpp::NumericVector get_fixed_parameters_vector() { // base model std::shared_ptr> d0 = @@ -464,6 +479,7 @@ RCPP_EXPOSED_CLASS(ParameterVector) RCPP_MODULE(fims) { Rcpp::function("CreateTMBModel", &CreateTMBModel); Rcpp::function("Finalize", &Finalize); + Rcpp::function("ToJSON", &ToJSON); Rcpp::function("get_fixed", &get_fixed_parameters_vector); Rcpp::function("get_random", &get_random_parameters_vector); Rcpp::function("clear", clear); @@ -612,10 +628,10 @@ RCPP_MODULE(fims) { .constructor() .field("inflection_point", &LogisticSelectivityInterface::inflection_point) - .field("estimated_inflection_point", + .field("estimated_inflection_point", &LogisticSelectivityInterface::estimated_inflection_point) .field("slope", &LogisticSelectivityInterface::slope) - .field("slope", &LogisticSelectivityInterface::slope) + .field("slope", &LogisticSelectivityInterface::slope) .method("get_id", &LogisticSelectivityInterface::get_id) .method("evaluate", &LogisticSelectivityInterface::evaluate); @@ -623,10 +639,16 @@ RCPP_MODULE(fims) { .constructor() .field("inflection_point_asc", &DoubleLogisticSelectivityInterface::inflection_point_asc) + .field("estimated_inflection_point_asc", + &DoubleLogisticSelectivityInterface::estimated_inflection_point_asc) .field("slope_asc", &DoubleLogisticSelectivityInterface::slope_asc) + .field("estimated_slope_asc", &DoubleLogisticSelectivityInterface::estimated_slope_asc) .field("inflection_point_desc", &DoubleLogisticSelectivityInterface::inflection_point_desc) + .field("estimated_inflection_point_desc", + &DoubleLogisticSelectivityInterface::estimated_inflection_point_desc) .field("slope_desc", &DoubleLogisticSelectivityInterface::slope_desc) + .field("estimated_slope_desc", &DoubleLogisticSelectivityInterface::estimated_slope_desc) .method("get_id", &DoubleLogisticSelectivityInterface::get_id) .method("evaluate", &DoubleLogisticSelectivityInterface::evaluate); diff --git a/inst/include/interface/rcpp/rcpp_objects/rcpp_interface_base.hpp b/inst/include/interface/rcpp/rcpp_objects/rcpp_interface_base.hpp index 5e33ba7e7..d2add754a 100644 --- a/inst/include/interface/rcpp/rcpp_objects/rcpp_interface_base.hpp +++ b/inst/include/interface/rcpp/rcpp_objects/rcpp_interface_base.hpp @@ -253,6 +253,10 @@ class FIMSRcppInterfaceBase { virtual void finalize() { } + + virtual std::string to_json(){ + + } }; std::vector FIMSRcppInterfaceBase::fims_interface_objects;