From b96c35a1a4aea9a3ba45e5c20f22da29be4647c8 Mon Sep 17 00:00:00 2001 From: Houtan Bastani <houtan.bastani@ens.fr> Date: Fri, 13 Apr 2012 15:56:25 +0200 Subject: [PATCH] ms-sbvar: remove unused code --- matlab/ms-sbvar/ms_estimation.m | 3 - mex/build/ms_sbvar.am | 15 +- .../mex_ms_convert_free_parameters.cc | 110 --- mex/sources/ms-sbvar/mex_ms_sbvar.cc | 631 ------------------ mex/sources/ms-sbvar/mex_ms_sbvar.h | 73 -- 5 files changed, 1 insertion(+), 831 deletions(-) delete mode 100644 mex/sources/ms-sbvar/mex_ms_convert_free_parameters.cc delete mode 100644 mex/sources/ms-sbvar/mex_ms_sbvar.cc delete mode 100644 mex/sources/ms-sbvar/mex_ms_sbvar.h diff --git a/matlab/ms-sbvar/ms_estimation.m b/matlab/ms-sbvar/ms_estimation.m index 389e532753..b08f664930 100644 --- a/matlab/ms-sbvar/ms_estimation.m +++ b/matlab/ms-sbvar/ms_estimation.m @@ -71,7 +71,4 @@ opt = [opt ' -random_tol_parms ' num2str(options_.ms.random_parameter_convergenc mexErrCheck('ms_estimation', err); [options_, oo_] = set_ms_estimation_file(options_.ms.output_file_tag, options_, oo_); -[err, oo_.ms.A0, oo_.ms.Aplus, oo_.ms.Zeta, oo_.ms.Q] = ... - mex_ms_convert_free_parameters({{'file_tag',options_.ms.output_file_tag}}, oo_.ms.maxparams); -mexErrCheck('mex_ms_convert_free_parameters', err); end diff --git a/mex/build/ms_sbvar.am b/mex/build/ms_sbvar.am index 219bf5d127..ce1d4584fa 100644 --- a/mex/build/ms_sbvar.am +++ b/mex/build/ms_sbvar.am @@ -1,4 +1,4 @@ -noinst_PROGRAMS = ms_sbvar_create_init_file ms_sbvar_command_line mex_ms_convert_free_parameters +noinst_PROGRAMS = ms_sbvar_create_init_file ms_sbvar_command_line DWSWITCHDIR = $(top_srcdir)/../../../ms-sbvar/switch_dw DWUTILITIESDIR = $(top_srcdir)/../../../ms-sbvar/utilities_dw @@ -62,16 +62,3 @@ nodist_ms_sbvar_command_line_SOURCES = \ $(DWSWITCHDIR)/state_space/sbvar/dw_csminwel.c \ $(DWUTILS) \ $(MSMEXSRC) - -nodist_mex_ms_convert_free_parameters_SOURCES = \ - $(DWSWITCHDIR)/switching/dw_switch.c \ - $(DWSWITCHDIR)/switching/dw_switchio.c \ - $(DWSWITCHDIR)/switching/dw_dirichlet_restrictions.c \ - $(DWSWITCHDIR)/switching/dw_metropolis_theta.c \ - $(DWSWITCHDIR)/state_space/sbvar/VARbase.c \ - $(DWSWITCHDIR)/state_space/sbvar/VARio.c \ - $(DWSWITCHDIR)/state_space/sbvar/VARio_matlab.c \ - $(MSMEXSRCDIR)/mex_ms_convert_free_parameters.cc \ - $(MSMEXSRCDIR)/mex_ms_sbvar.cc \ - $(MSMEXSRCDIR)/modify_for_mex.cc \ - $(DWUTILS) diff --git a/mex/sources/ms-sbvar/mex_ms_convert_free_parameters.cc b/mex/sources/ms-sbvar/mex_ms_convert_free_parameters.cc deleted file mode 100644 index 89d846df48..0000000000 --- a/mex/sources/ms-sbvar/mex_ms_convert_free_parameters.cc +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2011 Dynare Team - * - * This file is part of Dynare. - * - * Dynare is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Dynare is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Dynare. If not, see <http://www.gnu.org/licenses/>. - */ - -#if defined(MATLAB_MEX_FILE) || defined(OCTAVE_MEX_FILE) - -#include <iostream> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> - -#include "mex_ms_sbvar.h" - -extern "C" { -#include "modify_for_mex.h" -#include "switch.h" -#include "switchio.h" -#include "VARio.h" -} - -void -mexFunction(int nlhs, mxArray *plhs[], - int nrhs, const mxArray *prhs[]) -{ - double *free_parameters; - int nvars, npre, nstates, nfree; - double *aplus = NULL, *a0 = NULL, *zeta = NULL, *q = NULL; - mxArray *Q = NULL; - TStateModel *model; - SbvarOption *options = NULL; - - /* input must be a string */ - if (nrhs !=2) - DYN_MEX_FUNC_ERR_MSG_TXT("This function takes exactly two arguments"); - if (!mxIsDouble(prhs[1])) - DYN_MEX_FUNC_ERR_MSG_TXT("Second argument is a vector of free parameters"); - - if (nlhs < 4) - DYN_MEX_FUNC_ERR_MSG_TXT("You must specify at least four output arguments [err,A0,Aplus,Zeta]"); - - // second element should be vector of free parameters */ - free_parameters = mxGetPr(prhs[1]); - - model = initialize_model_and_options(&options, prhs, &nstates, &nvars, &npre, &nfree); - if (model == NULL || options == NULL) - DYN_MEX_FUNC_ERR_MSG_TXT("There was a problem initializing the model, can not continue"); - - // Check the size of the parameters that were passed in - size_t npars_passed = mxGetN(prhs[1]) > mxGetM(prhs[1]) ? mxGetN(prhs[1]) : mxGetM(prhs[1]); - // If it is 2 longer than the number of free parameters assume that the first two numbers should be ignored (log posterior, log likelihood) - if (nfree + 2 == (int) npars_passed) - free_parameters = free_parameters + 2; - else if (nfree != (int) npars_passed && nfree + 2 != (int) npars_passed) - { - printf("\n\nThe model requires a free paramter vector of length %d, you passed one of length %d\n\n", - (int) nfree, (int) npars_passed); - DYN_MEX_FUNC_ERR_MSG_TXT("The Free Parameter Array is the wrong size for this model\n"); - } - - // Ao (nstates x nvars x nvars) - mwSize dims[3] = {nstates, nvars, nvars}; - plhs[1] = mxCreateNumericArray(3, dims, mxDOUBLE_CLASS, mxREAL); - a0 = mxGetPr(plhs[1]); - - // Zeta (nstates x nvars x nvars) - plhs[3] = mxCreateNumericArray(3, dims, mxDOUBLE_CLASS, mxREAL); - zeta = mxGetPr(plhs[3]); - - // Aplus (nstates x (nlags*nvars +nconstant) x nvars) - dims[1] = npre; - plhs[2] = mxCreateNumericArray(3, dims, mxDOUBLE_CLASS, mxREAL); - aplus = mxGetPr(plhs[2]); - - // Grand Transition Matrix - Q = mxCreateDoubleMatrix(nstates, nstates, mxREAL); - q = mxGetPr(Q); - - // get the matrices - int ret = convert_free_parameters_to_VAR(model, free_parameters, a0, aplus, zeta, q); - if (ret > 0) - { - char *error_msg; - sprintf(error_msg = (char *) mxMalloc(255*sizeof(char)), "There was a problem converting the free parameters for the given model and inputs\nError Code: %d", ret); - DYN_MEX_FUNC_ERR_MSG_TXT(error_msg); - } - - // if they have passed 4 arguments then pass back Q - if (nlhs > 4) - plhs[4] = Q; - - mxFree(model); - plhs[0] = mxCreateDoubleScalar(0); -} - -#endif diff --git a/mex/sources/ms-sbvar/mex_ms_sbvar.cc b/mex/sources/ms-sbvar/mex_ms_sbvar.cc deleted file mode 100644 index 8be9beed7b..0000000000 --- a/mex/sources/ms-sbvar/mex_ms_sbvar.cc +++ /dev/null @@ -1,631 +0,0 @@ -/* - * Copyright (C) 2011 Dynare Team - * - * This file is part of Dynare. - * - * Dynare is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Dynare is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Dynare. If not, see <http://www.gnu.org/licenses/>. - */ - -#if defined(MATLAB_MEX_FILE) || defined(OCTAVE_MEX_FILE) -#include "dynmex.h" - -#include "mex_ms_sbvar.h" - -#include <iostream> -#include <fstream> - -extern "C" { -#include "modify_for_mex.h" -#include "switch.h" -#include "switchio.h" -#include "VARio.h" -#include "dw_rand.h" -} - -using namespace std; - -int -file_exist(char *filename) -{ - int ret = 0; - char ch; - - ifstream fin; - fin.open(filename, ios_base::in); - if (fin.is_open() && fin.get(ch)) - ret = 1; - - fin.close(); - return ret; -} - -char * -CreateFilenameFromTag(const char *fmt, const char *tag, const char *dir) -{ - char *filename; - if (!tag) - tag = ""; - if (!dir) - dir = ""; - sprintf(filename = (char *) mxMalloc(strlen(dir) + strlen(fmt) + strlen(tag) - 3), fmt, dir, tag); - return filename; -} - -/* - * initialize_ms_model - * - initiliazes a TstateModel given the filename or tagname of initialization file - */ -TStateModel * -initialize_ms_model(char *name) -{ - TStateModel *model = (TStateModel *) NULL; - - char *filename = (char *) NULL, *est_filename = (char *) NULL, *init_filename = (char *) NULL; - est_filename = CreateFilenameFromTag("%sest_final_%s.out", name, ""); - init_filename = CreateFilenameFromTag("%sinit_%s.dat", name, ""); - - if (file_exist(name)) - filename = name; - else if (file_exist(est_filename)) - filename = est_filename; - else if (file_exist(init_filename)) - filename = init_filename; - else - { - printf("Can not open initialization or estimation file!\n"); - return (TStateModel *) NULL; - } - - try - { - if (!(model = Read_VAR_Specification((FILE *) NULL, filename))) - { - mxFree(filename); - printf("Can not initialize model with given name!\n"); - return (TStateModel *) NULL; - } - - if (est_filename != NULL) - { - if (!strstr(est_filename, filename)) - { - printf("Initializing with empty parameters %s\n", filename); - // If no estimation file is around then just initialize the sizes - - double *theta = (double *) mxMalloc(sizeof(double)*NumberFreeParametersTheta(model)); - double *q = (double *) mxMalloc(sizeof(double)*NumberFreeParametersQ(model)); - ConvertFreeParametersToQ(model, q); - ConvertFreeParametersToTheta(model, theta); - } - } - } - catch (const char *s) - { - printf("Error Initializing TStateModel: %s\n", s); - model = (TStateModel *) NULL; - } - - mxFree(filename); - return model; -} - -int -get_var_dimensions(TStateModel *model, int *nstates, int *nvars, int *npre, int *nfree) -{ - - if (model) - { - try - { - *nfree = NumberFreeParametersTheta(model)+NumberFreeParametersQ(model); - - T_VAR_Parameters *p = (T_VAR_Parameters *) (model->theta); - - *nstates = model->sv->nstates; - *nvars = p->nvars; - *npre = p->npre; - return 0; - } - catch (const char *s) - { - printf("Error Getting VAR Dimensions"); - return 1; - } - - } - else - { - printf("The model passed was null!\n"); - return 1; - } -} - -int -set_parameters_in_VAR(TStateModel *model, double *free_parameters) -{ - int nfree; - try - { - nfree = NumberFreeParametersTheta(model)+NumberFreeParametersQ(model); - ConvertFreeParametersToQ(model, free_parameters+NumberFreeParametersTheta(model)); - ConvertFreeParametersToTheta(model, free_parameters); - ComputeTransitionMatrix(0, model); - } - catch (const char *s) - { - return 1; - } - return 0; -} - -int -convert_free_parameters_to_VAR(TStateModel *model, double *free_parameters, double *A0, double *Aplus, double *Zeta, double *Q) -{ - int nstates = 0, nvars = 0, npre = 0; - int i = 0, j = 0, s = 0; - - if (model == NULL) - { - printf("The model passed was null in Convert Free Parameters!\n"); - return 1; - } - - if (set_parameters_in_VAR(model, free_parameters) > 0) - { - printf("Could not set Parameters in model when converting parameters to var\n"); - return 2; - } - - try - { - T_VAR_Parameters *p = (T_VAR_Parameters *) (model->theta); - nstates = model->sv->nstates; - nvars = p->nvars; - npre = p->npre; - - TMatrix a = NULL, aplus = NULL; - a = CreateMatrix(p->nvars, p->nvars); - aplus = CreateMatrix(p->npre, p->nvars); - - // Is this is a good idea in matlab? - if (A0 == NULL) - A0 = new double [nstates*nvars*nvars]; - //A0 = malloc(sizeof(double)*(nstates*nvars*nvars)); - if (Aplus == NULL) - Aplus = new double [nstates*npre*nvars]; - //Aplus = malloc(sizeof(double)*(nstates*npre*nvars)); - if (Zeta == NULL) - Zeta = new double [nstates*nvars*nvars]; - //Zeta = malloc(sizeof(double)*(nstates*nvars*nvars)); - if (Q == NULL) - Q = new double [nstates*nstates]; - //Q = malloc(sizeof(double)*(nstates*nstates)); - - for (s = 0; s < nstates; s++) - { - MakeA0(a, s, p); - for (i = 0; i < nvars; i++) - { - for (j = 0; j < nvars; j++) - A0[(s)+((i+j*nvars)*nstates)] = ElementM(a, i, j); - } - MakeAplus(aplus, s, p); - for (i = 0; i < npre; i++) - { - for (j = 0; j < nvars; j++) - Aplus[(s)+((i+j*npre)*nstates)] = ElementM(aplus, i, j); - } - MakeZeta(a, s, p); - for (i = 0; i < nvars; i++) - { - for (j = 0; j < nvars; j++) - Zeta[(s)+((i+j*nvars)*nstates)] = ElementM(a, i, j); - } - } - - // Grand Transition Matrix - for (i = 0; i < nstates; i++) - for (j = 0; j < nstates; j++) - Q[i + j*nstates] = ElementM(model->sv->Q, i, j); - - FreeMatrix(a); - FreeMatrix(aplus); - } - catch (const char *s) - { - printf("Exception: convert_free_parameters\n"); - return 3; - } - return 0; -} - -/* - Additional command line parameters - - 'horizon', <integer> - If this argument exists, then the forecast horizon is given by the passed - integer. The default value is 12. - - 'filtered' - Uses filtered probabilities at the end of the sample as initial conditions - for regime probabilities. The default behavior is to us the erogdic - distribution for the initial conditions. This flag only applies if neither - -regimes nor -regime is specified. - - 'error_bands' - Output error bands. (default = off - only median is computed) - - 'percentiles' n p_1 p_2 ... p_n - Percentiles to compute. The first parameter after percentiles must be the - number of percentiles and the following values are the actual percentiles. - default = 3 0.16 0.50 0.84 if error_bands flag is set - = 1 0.50 otherwise - - 'parameter_uncertainty' - Apply parameter uncertainty when computing error bands or median. When set, - will default shocks = 1 - - 'shocks_per_parameter', <integer> - Number of regime paths to draw for each parameter draw. The default value - is 1 if parameter_uncertainty is set and 10,000 otherwise. - - 'thin' - Thinning factor. Only 1/thin of the draws in posterior draws file are - used. The default value is 1. - - 'regimes' - Produces forecasts as if each regime were permanent. (default = off) - - 'regime' <integer> - Produces forecasts as if regime were permanent. Regime numbers are zero - based. (default = off) - - 'simulation_file', <string> - name of the file containing the model's simulated free values - - 'number_observations', <integer> - If this argument exists, then the number of data points included in the - output is given by the passed integer int the forecast output. The default value is 0. - - 'free_parameters' <vector>: - Vector of free paramters to initialize the model with. - - 'median': - Shortcut for setting 'percentiles',[0.5] - - 'mean': - Compute the mean, instead of percentiles - - 'seed': - Set the Seed for random number generation, default=0 (random) - */ - -SbvarOption * -initialize_sbvar_options(char *file_tag) -{ - SbvarOption *options = new SbvarOption; - options->shocks = 10000; - options->thin = 1; - options->horizon = 20; - options->number_observations = 0; - options->regime = -1; - options->regimes = false; - options->parameter_uncertainty = false; - options->num_percentiles = 3; - options->percentiles = new double[3]; - options->percentiles[0] = 0.16; - options->percentiles[1] = 0.5; - options->percentiles[2] = 0.84; - options->filtered_probabilities = false; - options->num_parameters = -1; - options->free_parameters = (double *) NULL; - options->mean = false; - options->seed = 0; - - if (file_tag != NULL) - { - options->simulation_filename = (char *) CreateFilenameFromTag("%ssimulation_%s.out", file_tag, ""); - if (file_exist(options->simulation_filename)) - options->simulation_file = fopen(options->simulation_filename, "r"); - } - else - { - options->simulation_filename = (char *) NULL; - options->simulation_file = (FILE *) NULL; - } - return options; -} - -int -set_options(SbvarOption *options, const mxArray *prhs[]) -{ - if (options == NULL) - options = initialize_sbvar_options((char *) NULL); - - double *temp_buf; - bool shocks_passed = false; - int num_options = mxGetN(prhs[0]); - for (int i = 1; i < num_options; i++) - { - mxArray *this_option = mxGetCell(prhs[0],i); - char *option_name_c = mxArrayToString(mxGetCell(this_option,0)); - string option_name (option_name_c); - mxArray *this_option_value = NULL; - if (mxGetN(this_option) > 1) - this_option_value = mxGetCell(this_option,1); - - if (option_name == "horizon") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->horizon = (int) temp_buf[0]; - } - else - { - cout << "You must pass an integer after specifying the 'horizon' option" << endl; - return 1; - } - else if (option_name == "filtered") - options->filtered_probabilities = true; - else if (option_name == "error_bands") - { - free(options->percentiles); - options->num_percentiles = 3; - options->percentiles = new double[3]; - options->percentiles[0] = 0.16; - options->percentiles[1] = 0.5; - options->percentiles[2] = 0.84; - - // Check if the user specified to turn off error bands - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - if (temp_buf[0] == 0) - { - options->num_percentiles = 1; - options->percentiles = new double[1]; - options->percentiles[0] = 0.50; - } - } - } - else if (option_name == "median") - { - free(options->percentiles); - options->num_percentiles = 1; - options->percentiles = new double[1]; - options->percentiles[0] = 0.5; - } - else if (option_name == "percentiles") - if (this_option_value) - { - options->num_percentiles = mxGetN(this_option_value) - > mxGetM(this_option_value) ? mxGetN(this_option_value) - : mxGetM(this_option_value); - options->percentiles = mxGetPr(this_option_value); - } - else - { - cout << "You must pass a vector after the 'percentiles' argument with the " - << "percentiles that you want to have computed, ex " - << "'percentiles',[.16 .5 .84]" << endl; - return 1; - } - else if (option_name == "parameter_uncertainty") - { - options->parameter_uncertainty = true; - if (shocks_passed == false) - options->shocks = 1; - } - else if (option_name == "shocks_per_parameter") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->shocks = (int) temp_buf[0]; - shocks_passed = true; - } - else - { - cout << "You must pass an integer after specifying the 'shocks_per_parameter' option" << endl; - return 1; - } - else if (option_name == "thin") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->thin = (int) temp_buf[0]; - } - else - { - cout << "You must pass an integer after specifying the 'thin' option" << endl; - return 1; - } - else if (option_name == "simulation_file") - { - char *posterior_filename = mxArrayToString(this_option_value); - strcpy(options->simulation_filename, posterior_filename); - if (!(options->simulation_file = fopen(posterior_filename, "rt"))) - { - cout << "Can not open posterior file " << options->simulation_file - << " for reading. " << endl; - return 1; - } - mxFree(posterior_filename); - } - else if (option_name == "regimes") - options->regimes = true; - else if (option_name == "regime") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->regime = (int) temp_buf[0]; - } - else - { - cout << "You must pass an integer after specifying the 'regime' " - << "option, or alternatively you can specify 'regimes'" << endl; - return 1; - } - else if (option_name == "number_observations") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->number_observations = (int) temp_buf[0]; - } - else - { - cout << "You must pass an integer after specifying the " - << "'number_observations' option" << endl; - return 1; - } - else if (option_name == "free_parameters") - if (this_option_value && mxIsNumeric(this_option_value)) - { - options->num_parameters = mxGetM(this_option_value); - options->free_parameters = mxGetPr(this_option_value); - } - else - { - cout << "You must pass a vector of free parameters after " - << "specifying 'free_parameters'" << endl; - return 1; - } - else if (option_name == "mean") - { - options->mean = true; - options->num_percentiles = 0; - options->percentiles = (double *) NULL; - - } - else if (option_name == "seed") - if (this_option_value && mxIsNumeric(this_option_value)) - { - temp_buf = (double *) mxGetData(this_option_value); - options->seed = (long) temp_buf[0]; - } - else - { - cout << "You must pass an integer after specifying the 'seed' option" << endl; - return 1; - } - else - { - cout << "set_options error: option '" << option_name << "' not matched" << endl; - return 1; - } - mxFree(option_name_c); - } // End Optional Arguments - return 0; -} - -int -print_sbvar_options(SbvarOption *options) -{ - using namespace std; - int i; - - if (options == NULL) - return 1; - - cout << "SBVAR OPTIONS" << endl; - cout << "Number of Shocks: " << options->shocks << endl; - cout << "Thinning Factor: " << options->thin << endl; - cout << "Horizon: " << options->horizon << endl; - cout << "Number of Observations to Show: " << options->number_observations << endl; - cout << "Regime: " << options->regime << endl; - cout << "Regimes: " << options->regimes << endl; - cout << "Number Free parameters: " << options->num_parameters << endl; - cout << "Parameter Uncertainty: " << options->parameter_uncertainty << endl; - cout << "Mean: " << options->mean << endl; - cout << "Number Percentiles: " << options->num_percentiles << endl; - cout << "Percentiles: "; - for (i = 0; i < options->num_percentiles; i++) - cout << options->percentiles[i] << " "; - cout << endl; - cout << "Filtered Probabilities: " << options->filtered_probabilities << endl; - cout << "Simulation Filename: " << options->simulation_filename << endl; - cout << "Random Number Seed: " << options->seed << endl; - - return 0; -} - -TStateModel * -initialize_model_and_options(SbvarOption **options, const mxArray *prhs[], int *nstates, int *nvars, int *npre, int *nfree) -{ - char *name; - TStateModel *model = (TStateModel *) NULL; - SbvarOption *opt; - - // Initialize the StateSpace Model with the initialization file - name = mxArrayToString(mxGetCell(mxGetCell(prhs[0],0),1)); - model = initialize_ms_model(name); - if (model == NULL) - { - cout << "Could not initialize State Space Switching model with the given tag." << endl; - return (TStateModel *) NULL; - } - if (get_var_dimensions(model, nstates, nvars, npre, nfree) > 0) - { - cout << "Problems Determining the size of the Initialized model." << endl; - return (TStateModel *) NULL; - } - - // Process the rest of the options - opt = initialize_sbvar_options(name); - mxFree(name); - if (set_options(opt, prhs) > 0) - { - cout << "There was a problem with the options passed." << endl; - return (TStateModel *) NULL; - } - - // Set seed value - try - { - dw_initialize_generator(opt->seed); - } - catch (const char *s) - { - cout << "Exception: " << s << endl; - cout << "Exception thrown initializing Random Seed." << endl; - return (TStateModel *) NULL; - } - - // If free parameters have been passed, then set them in the model - if (opt->num_parameters > 0) - { - if (opt->num_parameters == *nfree + 2) - { - opt->free_parameters = opt->free_parameters+2; - opt->num_parameters = opt->num_parameters - 2; - } - if (opt->num_parameters != *nfree) - { - cout << "The Free Parameter vector passed is the wrong size for the given model" << endl; - return (TStateModel *) NULL; - } - - // Set the paramters as the current 'theta' - if (set_parameters_in_VAR(model, opt->free_parameters) > 0) - { - cout << "Problem with the free parameters that were passed being set in MS-SBVAR Model." << endl; - return (TStateModel *) NULL; - } - } - - *options = opt; - - return model; -} - -#endif diff --git a/mex/sources/ms-sbvar/mex_ms_sbvar.h b/mex/sources/ms-sbvar/mex_ms_sbvar.h deleted file mode 100644 index edca7a2961..0000000000 --- a/mex/sources/ms-sbvar/mex_ms_sbvar.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2011 Dynare Team - * - * This file is part of Dynare. - * - * Dynare is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Dynare is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Dynare. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef _MEXMSSBVAR_H_ -#define _MEXMSSBVAR_H_ - -#if defined(MATLAB_MEX_FILE) || defined(OCTAVE_MEX_FILE) - - -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -extern "C" { - #include "modify_for_mex.h" - #include "switch.h" - #include "switchio.h" - #include "VARio.h" -} - -typedef struct sbvar_options_t { - int shocks; - int thin; - int horizon; - int number_observations; - int regime; - bool regimes; - bool parameter_uncertainty; - int num_percentiles; - double *percentiles; - bool filtered_probabilities; - char *simulation_filename; - int num_parameters; - double *free_parameters; - FILE *simulation_file; - bool mean; - long seed; -} SbvarOption; - -#define printf mexPrintf - -int file_exist(char *filename); -char* CreateFilenameFromTag(const char *fmt,const char *tag,const char *dir); -SbvarOption * initialize_sbvar_options(char *file_tag); -int set_options(SbvarOption *options, const mxArray *prhs[]); -int print_sbvar_options(SbvarOption *options); -TStateModel * initialize_ms_model(char *filename); -int get_var_dimensions(TStateModel *model, int *nstates, int *nvars, int *npre, int *nfree); -int set_parameters_in_VAR(TStateModel *model, double *free_parameters); -int convert_free_parameters_to_VAR(TStateModel *model, double *free_parameters, double *A0, double *Aplus, double *Zeta, double *Q ); -TStateModel * initialize_model_and_options(SbvarOption **options, const mxArray *prhs[], int *nstates, int *nvars, int *npre, int *nfree); - -#endif -#endif -- GitLab