From cde54d7ad433895b37230e2d0676de2dac0a6f5c Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Fri, 10 Mar 2017 17:18:41 +0100 Subject: [PATCH] Revert "preprocessor: write equation cross references in JSON. #1387" This reverts commit 0ccc82300c3046d159554c24027ded09a93b687e. --- DynamicModel.cc | 122 ------------------------------------------------ DynamicModel.hh | 17 +------ ExprNode.cc | 81 -------------------------------- ExprNode.hh | 18 ------- ModFile.cc | 3 -- 5 files changed, 1 insertion(+), 240 deletions(-) diff --git a/DynamicModel.cc b/DynamicModel.cc index c05529c4..10db3a8b 100644 --- a/DynamicModel.cc +++ b/DynamicModel.cc @@ -5342,127 +5342,6 @@ void DynamicModel::writeJsonOutput(ostream &output) const { writeJsonModelEquations(output, false); - output << ", "; - writeJsonXrefs(output); -} - -void -DynamicModel::writeJsonXrefs(ostream &output) const -{ - output << "\"xrefs\": {" - << "\"parameters\": ["; - for (map, set >::const_iterator it = json_xref_param.begin(); - it != json_xref_param.end(); it++) - { - if (it != json_xref_param.begin()) - output << ", "; - output << "{\"parameter\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } - output << "]" - << ", \"endogenous\": ["; - for (map, set >::const_iterator it = json_xref_endo.begin(); - it != json_xref_endo.end(); it++) - { - if (it != json_xref_endo.begin()) - output << ", "; - output << "{\"endogenous\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } - output << "]" - << ", \"exogenous\": ["; - for (map, set >::const_iterator it = json_xref_exo.begin(); - it != json_xref_exo.end(); it++) - { - if (it != json_xref_exo.begin()) - output << ", "; - output << "{\"exogenous\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } - output << "]" - << ", \"exogenous_deterministic\": ["; - for (map, set >::const_iterator it = json_xref_exo_det.begin(); - it != json_xref_exo_det.end(); it++) - { - if (it != json_xref_exo_det.begin()) - output << ", "; - output << "{\"exogenous_det\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } - output << "]}" << endl; -} - -void -DynamicModel::computeJsonXrefs() -{ - map xrefs; - int i = 0; - for (vector::iterator it = equations.begin(); - it != equations.end(); it++) - { - ExprNode::JsonEquationInfo ei; - (*it)->computeJsonXrefs(ei); - xrefs[i++] = ei; - } - - i = 0; - for (map::const_iterator it = xrefs.begin(); - it != xrefs.end(); it++, i++) - { - computeJsonRevXref(json_xref_param, it->second.param, i); - computeJsonRevXref(json_xref_endo, it->second.endo, i); - computeJsonRevXref(json_xref_exo, it->second.exo, i); - computeJsonRevXref(json_xref_exo_det, it->second.exo_det, i); - } -} - -void -DynamicModel::computeJsonRevXref(map, set > &xrefset, const set > &eiref, int eqn) -{ - for (set >::const_iterator it = eiref.begin(); - it != eiref.end(); it++) - { - set eq; - if (xrefset.find(*it) != xrefset.end()) - eq = xrefset[*it]; - eq.insert(eqn); - xrefset[*it] = eq; - } } void @@ -5842,4 +5721,3 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails) << ", " << third_derivs1_output.str() << "}"; } - diff --git a/DynamicModel.hh b/DynamicModel.hh index cec66d97..b0828a2b 100644 --- a/DynamicModel.hh +++ b/DynamicModel.hh @@ -62,12 +62,6 @@ private: /*! Set by computeDerivIDs() */ int max_exo_det_lag, max_exo_det_lead; - //! Cross references WITH lags (for #1387, potentially combine with cross references above upon decision by @michel) - map, set > json_xref_param; - map, set > json_xref_endo; - map, set > json_xref_exo; - map, set > json_xref_exo_det; - //! Number of columns of dynamic jacobian /*! Set by computeDerivID()s and computeDynJacobianCols() */ int dynJacobianColsNbr; @@ -195,9 +189,6 @@ private: /*! pair< pair, pair > */ vector, pair > > block_col_type; - //! Related to public function computeJsonXref - void computeJsonRevXref(map, set > &xrefset, const set > &eiref, int eqn); - //! List for each variable its block number and its maximum lag and lead inside the block vector > > variable_block_lead_lag; //! List for each equation its block number @@ -211,10 +202,7 @@ public: //! Adds a variable node /*! This implementation allows for non-zero lag */ virtual VariableNode *AddVariable(int symb_id, int lag = 0); - - //! For computing cross references for json output (i.e. that contains lag information) #1387 - void computeJsonXrefs(); - + //! Execute computations (variable sorting + derivation) /*! \param jacobianExo whether derivatives w.r. to exo and exo_det should be in the Jacobian (derivatives w.r. to endo are always computed) @@ -232,9 +220,6 @@ public: //! Write JSON Output void writeJsonOutput(ostream &output) const; - //! Write cross reference output if the xref maps have been filed - void writeJsonXrefs(ostream &output) const; - //! Write JSON Output representation of dynamic model after computing pass void writeJsonComputingPassOutput(ostream &output, bool writeDetails) const; diff --git a/ExprNode.cc b/ExprNode.cc index dfb66d3d..5cc0298b 100644 --- a/ExprNode.cc +++ b/ExprNode.cc @@ -396,11 +396,6 @@ NumConstNode::computeXrefs(EquationInfo &ei) const { } -void -NumConstNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ -} - expr_t NumConstNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -1136,34 +1131,6 @@ VariableNode::computeXrefs(EquationInfo &ei) const } } -void -VariableNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - switch (type) - { - case eEndogenous: - ei.endo.insert(make_pair(symb_id, lag)); - break; - case eExogenous: - ei.exo.insert(make_pair(symb_id, lag)); - break; - case eExogenousDet: - ei.exo_det.insert(make_pair(symb_id, lag)); - break; - case eParameter: - ei.param.insert(make_pair(symb_id, 0)); - break; - case eTrend: - case eLogTrend: - case eModelLocalVariable: - case eModFileLocalVariable: - case eStatementDeclaredVariable: - case eUnusedEndogenous: - case eExternalFunction: - break; - } -} - expr_t VariableNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -2591,12 +2558,6 @@ UnaryOpNode::computeXrefs(EquationInfo &ei) const arg->computeXrefs(ei); } -void -UnaryOpNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - arg->computeJsonXrefs(ei); -} - expr_t UnaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -4033,13 +3994,6 @@ BinaryOpNode::computeXrefs(EquationInfo &ei) const arg2->computeXrefs(ei); } -void -BinaryOpNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - arg1->computeJsonXrefs(ei); - arg2->computeJsonXrefs(ei); -} - expr_t BinaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -4807,14 +4761,6 @@ TrinaryOpNode::computeXrefs(EquationInfo &ei) const arg3->computeXrefs(ei); } -void -TrinaryOpNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - arg1->computeJsonXrefs(ei); - arg2->computeJsonXrefs(ei); - arg3->computeJsonXrefs(ei); -} - expr_t TrinaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -5698,15 +5644,6 @@ ExternalFunctionNode::computeXrefs(EquationInfo &ei) const (*it)->computeXrefs(ei); } -void -ExternalFunctionNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - vector dynamic_arguments; - for (vector::const_iterator it = arguments.begin(); - it != arguments.end(); it++) - (*it)->computeJsonXrefs(ei); -} - expr_t ExternalFunctionNode::cloneDynamic(DataTree &dynamic_datatree) const { @@ -6107,15 +6044,6 @@ FirstDerivExternalFunctionNode::computeXrefs(EquationInfo &ei) const (*it)->computeXrefs(ei); } -void -FirstDerivExternalFunctionNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - vector dynamic_arguments; - for (vector::const_iterator it = arguments.begin(); - it != arguments.end(); it++) - (*it)->computeJsonXrefs(ei); -} - SecondDerivExternalFunctionNode::SecondDerivExternalFunctionNode(DataTree &datatree_arg, int top_level_symb_id_arg, const vector &arguments_arg, @@ -6431,15 +6359,6 @@ SecondDerivExternalFunctionNode::computeXrefs(EquationInfo &ei) const (*it)->computeXrefs(ei); } -void -SecondDerivExternalFunctionNode::computeJsonXrefs(JsonEquationInfo &ei) const -{ - vector dynamic_arguments; - for (vector::const_iterator it = arguments.begin(); - it != arguments.end(); it++) - (*it)->computeJsonXrefs(ei); -} - void SecondDerivExternalFunctionNode::compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, diff --git a/ExprNode.hh b/ExprNode.hh index c6dca035..e4e5d9bc 100644 --- a/ExprNode.hh +++ b/ExprNode.hh @@ -171,14 +171,6 @@ protected: set exo_det; }; - struct JsonEquationInfo - { - set > param; - set > endo; - set > exo; - set > exo_det; - }; - public: ExprNode(DataTree &datatree_arg); virtual ~ExprNode(); @@ -318,7 +310,6 @@ public: */ // virtual void computeXrefs(set ¶m, set &endo, set &exo, set &exo_det) const = 0; virtual void computeXrefs(EquationInfo &ei) const = 0; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const = 0; //! Try to normalize an equation linear in its endogenous variable virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const = 0; @@ -506,7 +497,6 @@ public: virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); virtual int maxEndoLead() const; @@ -563,7 +553,6 @@ public: virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; SymbolType get_type() const { @@ -663,7 +652,6 @@ public: }; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); virtual int maxEndoLead() const; @@ -768,7 +756,6 @@ public: } virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); virtual int maxEndoLead() const; @@ -854,7 +841,6 @@ public: virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); virtual int maxEndoLead() const; @@ -942,7 +928,6 @@ public: virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const = 0; virtual expr_t toStatic(DataTree &static_datatree) const = 0; virtual void computeXrefs(EquationInfo &ei) const = 0; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const = 0; virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); virtual int maxEndoLead() const; @@ -1004,7 +989,6 @@ public: virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; }; @@ -1046,7 +1030,6 @@ public: deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; }; @@ -1090,7 +1073,6 @@ public: deriv_node_temp_terms_t &tef_terms) const; virtual expr_t toStatic(DataTree &static_datatree) const; virtual void computeXrefs(EquationInfo &ei) const; - virtual void computeJsonXrefs(JsonEquationInfo &ei) const; virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; }; diff --git a/ModFile.cc b/ModFile.cc index ea9cf4e3..7ee204ad 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -414,9 +414,6 @@ ModFile::transformPass(bool nostrict) // Freeze the symbol table symbol_table.freeze(); - //! Need access to this info after transform pass so calculate it here - dynamic_model.computeJsonXrefs(); - /* Enforce the same number of equations and endogenous, except in three cases: - ramsey_model, ramsey_policy or discretionary_policy is used