Changeset e3f5af6 in tol


Ignore:
Timestamp:
Oct 21, 2008, 11:05:25 AM (18 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
a3c9ab0
Parents:
3263cf5
Message:

Handling with vectorial or time series data in a transparent way
Fixed bug in LoadNodeConstraints

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

File:
1 edited

Legend:

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

    r3263cf5 re3f5af6  
    161161  );
    162162  //WriteLn("TRACE ModSes.Obs.Create ok.1="<<ok.1);
    163   Real outIsATimeSerie = ObjectExist("Serie","out::_.serie");
    164   Real outIsNonLinearFilter =
    165       If(!ObjectExist("Real","out::_.nonLinFlt::_.isNonLinearFilter"), False,
    166       out::_.nonLinFlt::_.isNonLinearFilter);
     163  Real outIsATimeSerie = ObjectExist("Serie",  "out::_.serie");
     164  Real outIsAVector    = ObjectExist("Matrix", "out::_.vector");
    167165
    168166  Real ok.2 = Case(
    … …  
    181179    )
    182180  },
    183   outIsNonLinearFilter,
     181  outIsAVector,
    184182  {
    185     WriteLn("  Non linear filter output "+out::_.name);
    186     NameBlock nlf = out::_.nonLinFlt;
    187     Text nlfDesc = "Block for user defined non linear filter of output "+out::_.name;
    188     Text id_gibbs_lin_blk = "NonLinearFilterBlk";
    189     Text clean.nlf.param.name(Text param)
    190     {
    191       Text aux = Replace(param,id_gibbs_lin_blk+"::"+id_node+"::","");
    192       WriteLn("Replace('"+aux+"','"+id_gibbs_lin_blk+"::"+id_node+"::','')="+
    193        aux);
    194       aux
    195     };
    196     Set colNames = EvalSet(nlf::get.colNames(0),clean.nlf.param.name);
    197     Matrix u = nlf::get.parameter(0);
    198     Real ok.4.2 = BysMcmc::Bsr::DynHlm::DBApi::SqlExecTrace(
    199       "INSERT INTO "+_table::NonLinFlt+"\n"
    200       "VALUES('"+id_model+"','"+id_session+"','"+
    201                  id_node+"','"+out::_.name+"',"+
    202                  IntText(0)+","+
    203                  IntText(Card(colNames))+")\n");
    204     Real ok.4.3 = SetSum(For(1,Card(colNames),Real nlf.param(Real k)
    205     {
    206       BysMcmc::Bsr::DynHlm::DBApi::ModSes.Mix.Param.Create(
    207         dbName, model, session, id_node,
    208         colNames[k],
    209         id_gibbs_lin_blk,
    210         MatDat(u,k,1),-1/0,1/0)
    211     }));
    212     And(ok.4.2, ok.4.3)
     183    WriteLn("  Vector output "+out::_.name);
     184    BysMcmc::Bsr::DynHlm::DBApi::ModSes.Obs.Output.Create
     185    (
     186      dbName, id_model, id_session, id_node,
     187      out::_.name,
     188      out::_.mis_pri_sig_fac,
     189      out::_.mis_pri_min,
     190      out::_.mis_pri_max,
     191      UnknownDate,
     192      UnknownDate
     193    )
    213194  },
    214195  1==1,
    … …  
    230211      If(!ObjectExist("Real","inp::_.isNonLinearFilter"), False,
    231212      inp::_.isNonLinearFilter);
     213    Real isNonLinearFilterInput = If(!isNonLinearFilter,False,
     214    {
     215      Card(inp::get.linBlkNames(0)) > 0
     216    });
     217    Real isNonLinearFilterOutput = And(isNonLinearFilter,!isNonLinearFilterInput);
    232218    Real ok.4.j = Case(Not(inp::_.enabled),
    233219    {
    … …  
    235221      1
    236222    },
    237     isNonLinearFilter,
     223    isNonLinearFilterOutput,
     224    {
     225      WriteLn("  Non linear filter output "+inpName);
     226      NameBlock nlf = inp;
     227      Text nlfDesc = "Block for user defined non linear filter of output "+inpName;
     228      Text id_gibbs_lin_blk = "NonLinearFilterBlk";
     229      Text clean.nlf.param.name(Text param)
     230      {
     231        Text aux = Replace(param,id_gibbs_lin_blk+"::"+id_node+"::","");
     232        WriteLn("Replace('"+aux+"','"+id_gibbs_lin_blk+"::"+id_node+"::','')="+
     233         aux);
     234        aux
     235      };
     236      Set colNames = EvalSet(nlf::get.colNames(0),clean.nlf.param.name);
     237      Matrix u = nlf::get.parameter(0);
     238      Real ok.4.2 = BysMcmc::Bsr::DynHlm::DBApi::SqlExecTrace(
     239        "INSERT INTO "+_table::NonLinFlt+"\n"
     240        "VALUES('"+id_model+"','"+id_session+"','"+
     241                   id_node+"','"+inpName+"',"+
     242                   IntText(0)+","+
     243                   IntText(Card(colNames))+")\n");
     244      Real ok.4.3 = SetSum(For(1,Card(colNames),Real nlf.param(Real k)
     245      {
     246        WriteLn(" Insert param "+colNames[k]+" <-"<<MatDat(u,k,1));
     247        BysMcmc::Bsr::DynHlm::DBApi::ModSes.Mix.Param.Create(
     248          dbName, model, session, id_node,
     249          colNames[k],
     250          id_gibbs_lin_blk,
     251          MatDat(u,k,1),-1/0,1/0)
     252      }));
     253      And(ok.4.2, ok.4.3)
     254    },
     255    isNonLinearFilterInput,
    238256    {
    239257      WriteLn("  Non linear filter input "+inpName);
    … …  
    386404      })
    387405    },
     406    ObjectExist("Matrix","inp::_.vector"),
     407    {
     408      WriteLn("  Vector input "+inpName);
     409      Real ok.4.1 = BysMcmc::Bsr::DynHlm::DBApi::ModSes.Mix.Param.Create
     410      (
     411        dbName, id_model, id_session, id_node,
     412        inpName+"::Coef",
     413        "LinearBlk",
     414        inp::_.initValue,
     415        inp::_.minimum,
     416        inp::_.maximum
     417      );
     418      //WriteLn("TRACE ModSes.Obs.Create ok.4.1="<<ok.4.1);
     419      Real ok.4.2 = BysMcmc::Bsr::DynHlm::DBApi::ModSes.Obs.Input.Create
     420      (
     421        dbName, id_model, id_session, id_node,
     422        inpName+"::Coef",
     423        inpName,
     424        inp::_.mis_pri_sig_fac,
     425        inp::_.mis_pri_min,
     426        inp::_.mis_pri_max
     427      );
     428      //WriteLn("TRACE ModSes.Obs.Create ok.4.2="<<ok.4.2);
     429      And(ok.4.1,ok.4.2)
     430    },
    388431    1==1,
    389432    {
Note: See TracChangeset for help on using the changeset viewer.