Changeset 8349bbb in tol


Ignore:
Timestamp:
Oct 26, 2008, 10:44:21 AM (18 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
1abcc87
Parents:
6f22f5e
Message:

Using local parameters of model and session
Preparing for common input missing
Avoiding to store all nodes to save memory

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@83 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/dynhlm/_db_api.load.tol

    r6f22f5e r8349bbb  
    102102  "  "+dbName+"."+_table::Parameter+" as C \n"
    103103  "WHERE \n"+
    104   "  A.id_model='"+_.model.name+"' AND \n"+
    105   "  A.id_session='"+_.session.name+"' AND\n"+
    106   "  B.id_model='"+_.model.name+"' AND \n"+
    107   "  B.id_session='"+_.session.name+"' AND\n"+
    108   "  C.id_model='"+_.model.name+"' AND \n"+
    109   "  C.id_session='"+_.session.name+"' AND\n"+
     104  "  A.id_model='"+model+"' AND \n"+
     105  "  A.id_session='"+session+"' AND\n"+
     106  "  B.id_model='"+model+"' AND \n"+
     107  "  B.id_session='"+session+"' AND\n"+
     108  "  C.id_model='"+model+"' AND \n"+
     109  "  C.id_session='"+session+"' AND\n"+
    110110  "  A.id_node_lower=B.id_node AND \n"+
    111111  "  A.id_parameter_lower=B.id_parameter AND\n"+
    … …  
    119119  "  vl_left_border, nu_inequation, vl_right_border \n"+
    120120  "FROM "+dbName+"."+_table::ConstrBorder+" WHERE \n"+
    121   "  id_model='"+_.model.name+"' AND \n"+
    122   "  id_session='"+_.session.name+"' AND\n"+
     121  "  id_model='"+model+"' AND \n"+
     122  "  id_session='"+session+"' AND\n"+
    123123  "  id_node='"+id_node+"'"
    124124  "ORDER BY nu_inequation",
    … …  
    135135    "  "+dbName+"."+_table::Parameter+" as B \n"+
    136136    "WHERE \n"+
    137     "  A.id_model='"+_.model.name+"' AND \n"+
    138     "  A.id_session='"+_.session.name+"' AND\n"+
     137    "  A.id_model='"+model+"' AND \n"+
     138    "  A.id_session='"+session+"' AND\n"+
    139139    "  A.nu_inequation="+IntText(b->NumInequation)+" AND \n"+
    140     "  B.id_model='"+_.model.name+"' AND \n"+
    141     "  B.id_session='"+_.session.name+"' AND\n"+
     140    "  B.id_model='"+model+"' AND \n"+
     141    "  B.id_session='"+session+"' AND\n"+
    142142    "  A.id_node=B.id_node AND \n"+
    143143    "  A.id_parameter=B.id_parameter\n",
    … …  
    168168                      Text session,
    169169                      Text id_node,
    170                       NameBlock modelHandler)
     170                      NameBlock modelHandler,
     171                      Set input.missing.labels)
    171172////////////////////////////////////////////////////////////////////////////
    172173{
    … …  
    187188  "  id_node='"+id_node+"' ",
    188189  "Bsr.DynHlm.DBStrObsOutput")[1];
     190
    189191  Set db_arima = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    190192  "SELECT \n"+
    … …  
    194196  "  te_dif \n"+
    195197  "FROM "+dbName+"."+_table::ObsArimaBlk+" WHERE \n"+
    196   "  id_model='"+_.model.name+"' AND \n"+
    197   "  id_session='"+_.session.name+"' AND \n"+
     198  "  id_model='"+model+"' AND \n"+
     199  "  id_session='"+session+"' AND \n"+
    198200  "  id_node='"+id_node+"' \n"+
    199201  "ORDER BY nu_factor ASC",
    … …  
    218220      db_output->firstDate,
    219221      db_output->lastDate,
     222      id_node,
    220223      db_output->missingPriorSigmaFactor,
    221224      db_output->missingPriorLowerBound,
    … …  
    237240  "  "+dbName+"."+_table::Parameter+" as B \n"+
    238241  "WHERE \n"+
    239   "  A.id_model='"+_.model.name+"' AND \n"+
    240   "  A.id_session='"+_.session.name+"' AND \n"+
     242  "  A.id_model='"+model+"' AND \n"+
     243  "  A.id_session='"+session+"' AND \n"+
    241244  "  A.id_node='"+id_node+"' AND\n"+
    242   "  B.id_model='"+_.model.name+"' AND \n"+
    243   "  B.id_session='"+_.session.name+"' AND \n"+
     245  "  B.id_model='"+model+"' AND \n"+
     246  "  B.id_session='"+session+"' AND \n"+
    244247  "  B.id_node='"+id_node+"' AND \n"+
    245248  "  B.id_parameter=A.id_parameter",
    … …  
    257260        db_output->firstDate,
    258261        db_output->lastDate,
     262        id_node   ,
    259263        db_inp->missingPriorSigmaFactor,
    260264        db_inp->missingPriorLowerBound,
    … …  
    279283  "  "+dbName+"."+_table::ObsTransFun+" as A\n"+
    280284  "WHERE \n"+
    281   "  A.id_model='"+_.model.name+"' AND \n"+
    282   "  A.id_session='"+_.session.name+"' AND \n"+
     285  "  A.id_model='"+model+"' AND \n"+
     286  "  A.id_session='"+session+"' AND \n"+
    283287  "  A.id_node='"+id_node+"' \n",
    284288  "Bsr.DynHlm.DBStrObsTransFun");
    … …  
    298302        db_output->firstDate,
    299303        db_output->lastDate,
     304        id_node,
    300305        db_tf->missingPriorSigmaFactor,
    301306        db_tf->missingPriorLowerBound,
    … …  
    311316    If(!FunctionExist("Real", "modelHandler::ForceZeroInputCoef"),0,
    312317      modelHandler::ForceZeroInputCoef(0));
    313   BysMcmc::Bsr::DynHlm::BuildNode::Obs
    314     (output, input, transFun, _.constr, forceZeroInputCoef)
     318  BysMcmc::Bsr::DynHlm::BuildNode::Obs(
     319    output, input, transFun, input.missing.labels,
     320    _.constr, forceZeroInputCoef)
    315321};
    316322
    … …  
    330336    "  vl_sigma \n"+
    331337    "FROM "+dbName+"."+_table::LatSigBlk+" WHERE \n"+
    332     "  id_model='"+_.model.name+"' AND \n"+
    333     "  id_session='"+_.session.name+"' AND \n"+
     338    "  id_model='"+model+"' AND \n"+
     339    "  id_session='"+session+"' AND \n"+
    334340    "  id_node='"+id_node+"' ",
    335341    "")[1][1];
    … …  
    340346    "  vl_sigma_factor \n"+
    341347    "FROM "+dbName+"."+_table::LatEqu+" WHERE \n"+
    342     "  id_model='"+_.model.name+"' AND \n"+
    343     "  id_session='"+_.session.name+"' AND \n"+
     348    "  id_model='"+model+"' AND \n"+
     349    "  id_session='"+session+"' AND \n"+
    344350    "  id_node_father='"+id_node+"' \n"
    345351    "ORDER BY nu_equation",
    … …  
    357363      "  "+dbName+"."+_table::Parameter+" as B  \n"
    358364      "WHERE \n"+
    359       "  A.id_model='"+_.model.name+"' AND \n"+
    360       "  A.id_session='"+_.session.name+"' AND \n"+
     365      "  A.id_model='"+model+"' AND \n"+
     366      "  A.id_session='"+session+"' AND \n"+
    361367      "  A.id_node_father='"+id_node+"' AND \n"+
    362368      "  A.nu_equation="+IntText(equ->nu_equation)+" AND \n"+
    363       "  B.id_model='"+_.model.name+"' AND \n"+
    364       "  B.id_session='"+_.session.name+"' AND \n"+
     369      "  B.id_model='"+model+"' AND \n"+
     370      "  B.id_session='"+session+"' AND \n"+
    365371      "  A.id_node_child=B.id_node AND \n"+
    366372      "  A.id_parameter_child=B.id_parameter \n",
    … …  
    382388      "  A.id_node_father='"+id_node+"' AND \n"+
    383389      "  A.nu_equation="+IntText(equ->nu_equation)+" AND \n"+
    384       "  B.id_model='"+_.model.name+"' AND \n"+
    385       "  B.id_session='"+_.session.name+"' AND \n"+
     390      "  B.id_model='"+model+"' AND \n"+
     391      "  B.id_session='"+session+"' AND \n"+
    386392      "  A.id_node_father=B.id_node AND \n"+
    387393      "  A.id_parameter_father=B.id_parameter \n",
    … …  
    462468    "  vl_sigma \n"+
    463469    "FROM "+dbName+"."+_table::PriEqu+" WHERE \n"+
    464     "  id_model='"+_.model.name+"' AND \n"+
    465     "  id_session='"+_.session.name+"' AND \n"+
     470    "  id_model='"+model+"' AND \n"+
     471    "  id_session='"+session+"' AND \n"+
    466472    "  id_node_father='"+id_node+"' \n"
    467473    "ORDER BY nu_equation",
    … …  
    538544  NameBlock _table = BysMcmc::Bsr::DynHlm::DBApi::_.table;
    539545  Text _.dbName = dbName;
    540   Text _.model.name = model;
    541   Text _.session.name = session;
     546  Text _.id_model = model;
     547  Text _.id_session = session;
    542548  Text _.resultRootPath = resultRootPath;
    543549  NameBlock _.modelHandler = modelHandler;
    544  
     550  Set _.deltaNonLinBlk = Copy(Empty);
     551
    545552  Real _.modSesCheck =
    546553  {
    547554    Real count = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    548555    "SELECT count(*) FROM "+dbName+"."+_table::ModSes+" WHERE "+
    549     "  id_model='"+_.model.name+"' AND id_session='"+_.session.name+"'","")[1][1];
     556    "  id_model='"+_.id_model+"' AND id_session='"+_.id_session+"'","")[1][1];
    550557    If(count==1, 1,
    551558    {
    … …  
    557564  Text _.model.description = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    558565  "SELECT ds_model FROM "+dbName+"."+_table::Model+" WHERE "+
    559   "  id_model='"+_.model.name+"'","")[1][1];
     566  "  id_model='"+_.id_model+"'","")[1][1];
    560567  Text _.session.description = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    561568  "SELECT ds_session FROM "+dbName+"."+_table::Session+" WHERE "+
    562   "  id_session='"+_.session.name+"'","")[1][1];
     569  "  id_session='"+_.id_session+"'","")[1][1];
    563570  Text _.session.te_authors = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    564571  "SELECT te_authors FROM "+dbName+"."+_table::Session+" WHERE "+
    565   "  id_session='"+_.session.name+"'","")[1][1];
    566 
    567   Set _.db_nodes.obs = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    568   "SELECT id_node FROM "+dbName+"."+_table::Node+" WHERE \n"+
    569   "  id_model='"+_.model.name+"' AND \n"+
    570   "  id_session='"+_.session.name+"' AND \n"+
    571   "  id_node_type='OBS' \n"+
    572   "ORDER BY nu_node ASC","");
    573   Set _.nodes.obs = EvalSet(_.db_nodes.obs, NameBlock(Set db_node)
    574   {
    575     Text id_node = db_node[1];
    576     BysMcmc::Bsr::DynHlm::DBApi::LoadObsNode
    577       (dbName, model, session, id_node, _.modelHandler)
    578   });
    579 
    580   Set _.db_nodes.lat = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    581   "SELECT id_node FROM "+dbName+"."+_table::Node+" WHERE \n"+
    582   "  id_model='"+_.model.name+"' AND \n"+
    583   "  id_session='"+_.session.name+"' AND \n"+
    584   "  id_node_type='LAT' \n"+
    585   "ORDER BY nu_node ASC","");
    586   Set _.nodes.lat = EvalSet(_.db_nodes.lat, NameBlock(Set db_node)
    587   {
    588     Text id_node = db_node[1];
    589     BysMcmc::Bsr::DynHlm::DBApi::LoadLatNode
    590       (dbName, model, session, id_node)
    591   });
    592 
    593   Set _.db_nodes.pri = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    594   "SELECT id_node FROM "+dbName+"."+_table::Node+" WHERE \n"+
    595   "  id_model='"+_.model.name+"' AND \n"+
    596   "  id_session='"+_.session.name+"' AND \n"+
    597   "  id_node_type='PRI' \n"+
    598   "ORDER BY nu_node ASC","");
    599   Set _.nodes.pri = EvalSet(_.db_nodes.pri, NameBlock(Set db_node)
    600   {
    601     Text id_node = db_node[1];
    602     BysMcmc::Bsr::DynHlm::DBApi::LoadPriNode
    603       (dbName, model, session, id_node)
    604   });
    605 
    606   Set _.nodes = _.nodes.obs << _.nodes.lat << _.nodes.pri;
     572  "  id_session='"+_.id_session+"'","")[1][1];
     573
     574  Set input.missing.labels = Copy(Empty);
     575
     576  Set _.nodes = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
     577  "SELECT id_node_type, id_node FROM "+dbName+"."+_table::Node+" WHERE \n"+
     578  "  id_model='"+_.id_model+"' AND \n"+
     579  "  id_session='"+_.id_session+"'"
     580  "order by id_node_type, nu_node","Bsr.DynHlm.DBNode");
    607581
    608582//Mandatory methods that will be used by BysMcmc::Bsr::Import
    … …  
    611585  // Documental Section
    612586  //Returns model identifier to help in analysis organization
    613   Text Get.Doc.Model.Name(Real unused) { _.model.name };
     587  Text Get.Doc.Model.Name(Real unused) { _.id_model };
    614588  //Brief explanation of model
    615589  Text Get.Doc.Model.Description(Real unused)  { _.model.description };
    616590  //Returns model identifier to help in analysis organization
    617   Text Get.Doc.Session.Name(Real unused)  { _.session.name };
     591  Text Get.Doc.Session.Name(Real unused)  { _.id_session };
    618592  //Brief explanation of model
    619593  Text Get.Doc.Session.Description(Real unused) { _.session.description };
    … …  
    626600  ///////////////////////////////////////////////////////////////////////////
    627601  // Linear Regression Section
    628   Real Get.LinReg.Size(Real unused) { Card(_.nodes) };
    629   NameBlock Get.LinReg.Segment(Real segmentNumber) { _.nodes[segmentNumber] };
     602  Real Get.LinReg.Size(Real unused)
     603  {
     604    Card(_.nodes)
     605  };
     606
     607  NameBlock Get.LinReg.Segment(Real segmentNumber)
     608  {
     609    Set node = _.nodes[segmentNumber];
     610    Text id_node = node->Node;
     611    Case(
     612      node->NodeType=="OBS",
     613      {
     614        NameBlock obs = BysMcmc::Bsr::DynHlm::DBApi::LoadObsNode(
     615          _.dbName, _.id_model, _.id_session, id_node,
     616          _.modelHandler, input.missing.labels);
     617        Set Append(_.deltaNonLinBlk, obs::_.deltaNonLinBlk);
     618        obs
     619      },   
     620      node->NodeType=="LAT",
     621      {
     622        BysMcmc::Bsr::DynHlm::DBApi::LoadLatNode(
     623          _.dbName, _.id_model, _.id_session, id_node)
     624      },
     625      node->NodeType=="PRI",
     626      {
     627        BysMcmc::Bsr::DynHlm::DBApi::LoadPriNode(
     628          _.dbName, _.id_model, _.id_session, id_node)
     629      }
     630    )
     631  };
    630632  ///////////////////////////////////////////////////////////////////////////
    631633
    … …  
    636638  {
    637639    NameBlock _table = BysMcmc::Bsr::DynHlm::DBApi::_.table;
    638     Set deltaNonLinBlk = If(!Card(_.nodes.obs),
    639       Empty,
    640       BinGroup("<<",EvalSet(_.nodes.obs,Set(NameBlock obs)
    641       {
    642         obs::_.deltaNonLinBlk
    643       })));
    644 //  Set db_genericNonLinBlk = Copy(Empty);
    645640    Set db_genericNonLinBlk = BysMcmc::Bsr::DynHlm::DBApi::SqlTableTrace(
    646641    "SELECT \n"+
    … …  
    648643    "  id_series \n"+
    649644    "FROM "+_.dbName+"."+_table::NonLinFlt+" WHERE \n"+
    650     "  id_model='"+_.model.name+"' AND \n"+
    651     "  id_session='"+_.session.name+"'\n",
     645    "  id_model='"+_.id_model+"' AND \n"+
     646    "  id_session='"+_.id_session+"'\n",
    652647    "Bsr.DynHlm.DBStrNonLinFlt");
    653648
    … …  
    659654      }));
    660655  //WriteLn("TRACE Get.NonLinFilter Card(deltaNonLinBlk)="<<Card(deltaNonLinBlk));
    661     deltaNonLinBlk << genericNonLinBlk
     656    _.deltaNonLinBlk << genericNonLinBlk
    662657  };
    663658
Note: See TracChangeset for help on using the changeset viewer.