preprocessor: JSON output aesthetic fixes, support planner objective. #1387
parent
236f1ca7d0
commit
301c9691d9
|
@ -668,9 +668,8 @@ RamseyPolicyStatement::writeJsonOutput(ostream &output) const
|
||||||
{
|
{
|
||||||
output << ", ";
|
output << ", ";
|
||||||
options_list.writeJsonOutput(output);
|
options_list.writeJsonOutput(output);
|
||||||
output << ", ";
|
|
||||||
}
|
}
|
||||||
output << "\"ramsey_policy_list\": [";
|
output << ", \"ramsey_policy_list\": [";
|
||||||
for (vector<string>::const_iterator it = ramsey_policy_list.begin();
|
for (vector<string>::const_iterator it = ramsey_policy_list.begin();
|
||||||
it != ramsey_policy_list.end(); ++it)
|
it != ramsey_policy_list.end(); ++it)
|
||||||
{
|
{
|
||||||
|
@ -1827,7 +1826,8 @@ ModelComparisonStatement::writeJsonOutput(ostream &output) const
|
||||||
}
|
}
|
||||||
|
|
||||||
PlannerObjectiveStatement::PlannerObjectiveStatement(StaticModel *model_tree_arg) :
|
PlannerObjectiveStatement::PlannerObjectiveStatement(StaticModel *model_tree_arg) :
|
||||||
model_tree(model_tree_arg)
|
model_tree(model_tree_arg),
|
||||||
|
computing_pass_called(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1860,6 +1860,7 @@ void
|
||||||
PlannerObjectiveStatement::computingPass()
|
PlannerObjectiveStatement::computingPass()
|
||||||
{
|
{
|
||||||
model_tree->computingPass(eval_context_t(), false, true, true, none, false, false);
|
model_tree->computingPass(eval_context_t(), false, true, true, none, false, false);
|
||||||
|
computing_pass_called = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1871,9 +1872,14 @@ PlannerObjectiveStatement::writeOutput(ostream &output, const string &basename,
|
||||||
void
|
void
|
||||||
PlannerObjectiveStatement::writeJsonOutput(ostream &output) const
|
PlannerObjectiveStatement::writeJsonOutput(ostream &output) const
|
||||||
{
|
{
|
||||||
cerr << "ERROR: writeJsonOutput not yet implemented for Planner Objective Statement" << endl;
|
output << "{\"statementName\": \"planner_objective\""
|
||||||
exit(EXIT_FAILURE);
|
<< ", ";
|
||||||
// model_tree->writeStaticJsonFile(basename + "_objective", false, false, false, false);
|
if (computing_pass_called)
|
||||||
|
model_tree->writeJsonComputingPassOutput(output);
|
||||||
|
else
|
||||||
|
model_tree->writeJsonOutput(output);
|
||||||
|
|
||||||
|
output << "}";
|
||||||
}
|
}
|
||||||
|
|
||||||
BVARDensityStatement::BVARDensityStatement(int maxnlags_arg, const OptionsList &options_list_arg) :
|
BVARDensityStatement::BVARDensityStatement(int maxnlags_arg, const OptionsList &options_list_arg) :
|
||||||
|
|
|
@ -449,6 +449,7 @@ class PlannerObjectiveStatement : public Statement
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
StaticModel *model_tree;
|
StaticModel *model_tree;
|
||||||
|
bool computing_pass_called;
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
/*! \param model_tree_arg the model tree used to store the objective function.
|
/*! \param model_tree_arg the model tree used to store the objective function.
|
||||||
|
|
|
@ -5364,7 +5364,7 @@ DynamicModel::writeJsonComputingPassOutput(ostream &output) const
|
||||||
writeJsonModelLocalVariables(model_local_vars_output, tef_terms);
|
writeJsonModelLocalVariables(model_local_vars_output, tef_terms);
|
||||||
|
|
||||||
writeJsonTemporaryTerms(temporary_terms_res, temp_term_union_m_1, model_output, tef_terms, concat);
|
writeJsonTemporaryTerms(temporary_terms_res, temp_term_union_m_1, model_output, tef_terms, concat);
|
||||||
|
model_output << ", ";
|
||||||
writeJsonModelEquations(model_output, true);
|
writeJsonModelEquations(model_output, true);
|
||||||
|
|
||||||
// Writing Jacobian
|
// Writing Jacobian
|
||||||
|
|
|
@ -1291,11 +1291,12 @@ ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType
|
||||||
output << "{" << endl;
|
output << "{" << endl;
|
||||||
|
|
||||||
symbol_table.writeJsonOutput(output);
|
symbol_table.writeJsonOutput(output);
|
||||||
|
output << ", ";
|
||||||
dynamic_model.writeJsonOutput(output);
|
dynamic_model.writeJsonOutput(output);
|
||||||
|
|
||||||
if (!statements.empty())
|
if (!statements.empty())
|
||||||
{
|
{
|
||||||
output << ",\"statements\": [";
|
output << ", \"statements\": [";
|
||||||
for (vector<Statement *>::const_iterator it = statements.begin();
|
for (vector<Statement *>::const_iterator it = statements.begin();
|
||||||
it != statements.end(); it++)
|
it != statements.end(); it++)
|
||||||
{
|
{
|
||||||
|
@ -1305,7 +1306,6 @@ ModFile::writeJsonOutputParsingCheck(const string &basename, JsonFileOutputType
|
||||||
}
|
}
|
||||||
output << "]" << endl;
|
output << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
output << "}" << endl;
|
output << "}" << endl;
|
||||||
|
|
||||||
if (json_output_mode == standardout)
|
if (json_output_mode == standardout)
|
||||||
|
|
|
@ -2028,9 +2028,9 @@ ModelTree::writeJsonModelEquations(ostream &output, bool residuals) const
|
||||||
vector<pair<string,string> > eqtags;
|
vector<pair<string,string> > eqtags;
|
||||||
temporary_terms_t tt_empty;
|
temporary_terms_t tt_empty;
|
||||||
if (residuals)
|
if (residuals)
|
||||||
output << endl << ",\"residuals\":[" << endl;
|
output << endl << "\"residuals\":[" << endl;
|
||||||
else
|
else
|
||||||
output << endl << ",\"model\":[" << endl;
|
output << endl << "\"model\":[" << endl;
|
||||||
for (int eq = 0; eq < (int) equations.size(); eq++)
|
for (int eq = 0; eq < (int) equations.size(); eq++)
|
||||||
{
|
{
|
||||||
if (eq > 0)
|
if (eq > 0)
|
||||||
|
|
|
@ -2415,6 +2415,12 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
paramsDerivsFile.close();
|
paramsDerivsFile.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
StaticModel::writeJsonOutput(ostream &output) const
|
||||||
|
{
|
||||||
|
writeJsonModelEquations(output, false);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
StaticModel::writeJsonComputingPassOutput(ostream &output) const
|
StaticModel::writeJsonComputingPassOutput(ostream &output) const
|
||||||
{
|
{
|
||||||
|
@ -2434,7 +2440,7 @@ StaticModel::writeJsonComputingPassOutput(ostream &output) const
|
||||||
writeJsonModelLocalVariables(model_local_vars_output, tef_terms);
|
writeJsonModelLocalVariables(model_local_vars_output, tef_terms);
|
||||||
|
|
||||||
writeJsonTemporaryTerms(temporary_terms_res, temp_term_union_m_1, model_output, tef_terms, concat);
|
writeJsonTemporaryTerms(temporary_terms_res, temp_term_union_m_1, model_output, tef_terms, concat);
|
||||||
|
model_output << ", ";
|
||||||
writeJsonModelEquations(model_output, true);
|
writeJsonModelEquations(model_output, true);
|
||||||
|
|
||||||
int nrows = equations.size();
|
int nrows = equations.size();
|
||||||
|
|
|
@ -173,6 +173,9 @@ public:
|
||||||
//! Writes static model file
|
//! Writes static model file
|
||||||
void writeStaticFile(const string &basename, bool block, bool bytecode, bool use_dll, bool julia) const;
|
void writeStaticFile(const string &basename, bool block, bool bytecode, bool use_dll, bool julia) const;
|
||||||
|
|
||||||
|
//! Write JSON Output (used by PlannerObjectiveStatement)
|
||||||
|
void writeJsonOutput(ostream &output) const;
|
||||||
|
|
||||||
//! Write JSON representation of static model
|
//! Write JSON representation of static model
|
||||||
void writeJsonComputingPassOutput(ostream &output) const;
|
void writeJsonComputingPassOutput(ostream &output) const;
|
||||||
|
|
||||||
|
|
|
@ -965,57 +965,18 @@ SymbolTable::writeJuliaOutput(ostream &output) const throw (NotYetFrozenExceptio
|
||||||
|
|
||||||
void
|
void
|
||||||
SymbolTable::writeJsonOutput(ostream &output) const
|
SymbolTable::writeJsonOutput(ostream &output) const
|
||||||
{/*
|
{
|
||||||
vector<int> endos, exos, exo_dets, params;
|
output << "\"endogenous\": ";
|
||||||
for (int i = 0; i < size; i++)
|
writeJsonVarVector(output, endo_ids);
|
||||||
{
|
|
||||||
switch (getType(i))
|
|
||||||
{
|
|
||||||
case eEndogenous:
|
|
||||||
endos.push_back(i);
|
|
||||||
break;
|
|
||||||
case eExogenous:
|
|
||||||
exos.push_back(i);
|
|
||||||
break;
|
|
||||||
case eExogenousDet:
|
|
||||||
exo_dets.push_back(i);
|
|
||||||
break;
|
|
||||||
case eParameter:
|
|
||||||
params.push_back(i);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!endo_ids.empty())
|
output << ", \"exogenous\":" ;
|
||||||
{
|
writeJsonVarVector(output, exo_ids);
|
||||||
output << "\"endogenous\":";
|
|
||||||
writeJsonVarVector(output, endo_ids);
|
|
||||||
output << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!exo_ids.empty())
|
output << ", \"exogenous_deterministic\": ";
|
||||||
{
|
writeJsonVarVector(output, exo_det_ids);
|
||||||
output << ",\"exogenous\":";
|
|
||||||
writeJsonVarVector(output, exo_ids);
|
|
||||||
output << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!exo_det_ids.empty())
|
output << ", \"parameters\": ";
|
||||||
{
|
writeJsonVarVector(output, param_ids);
|
||||||
output << ",\"exogenous_deterministic\":";
|
|
||||||
writeJsonVarVector(output, exo_det_ids);
|
|
||||||
output << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!param_ids.empty())
|
|
||||||
{
|
|
||||||
output << ",\"parameters\":";
|
|
||||||
writeJsonVarVector(output, param_ids);
|
|
||||||
cout << endl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1024,12 +985,13 @@ SymbolTable::writeJsonVarVector(ostream &output, const vector<int> &varvec) cons
|
||||||
output << "[";
|
output << "[";
|
||||||
for (size_t i = 0; i < varvec.size(); i++)
|
for (size_t i = 0; i < varvec.size(); i++)
|
||||||
{
|
{
|
||||||
output << endl << "{"
|
if (i != 0)
|
||||||
|
output << ", ";
|
||||||
|
output << "{"
|
||||||
<< "\"name\":\"" << getName(varvec[i]) << "\", "
|
<< "\"name\":\"" << getName(varvec[i]) << "\", "
|
||||||
<< "\"texName\":\"" << boost::replace_all_copy(getTeXName(varvec[i]), "\\", "\\\\") << "\", "
|
<< "\"texName\":\"" << boost::replace_all_copy(getTeXName(varvec[i]), "\\", "\\\\") << "\", "
|
||||||
<< "\"longName\":\"" << boost::replace_all_copy(getLongName(varvec[i]), "\\", "\\\\") << "\"}";
|
<< "\"longName\":\"" << boost::replace_all_copy(getLongName(varvec[i]), "\\", "\\\\") << "\"}"
|
||||||
if (i < varvec.size() - 1)
|
<< endl;
|
||||||
output << ", ";
|
|
||||||
}
|
}
|
||||||
output << endl << "]";
|
output << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue