Changeset 40668f6 in tol


Ignore:
Timestamp:
Sep 11, 2009, 2:58:33 PM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
b19979f
Parents:
f57fe71
Message:

Fixed bug in getMergedFixedAndReloadedSample

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/stdlib/math/stat/models/bayesian/bysMcmc/_partialSampler.tol

    rf57fe71 r40668f6  
    147147  VMatrix _.fixedValues = Rand(0,1,0,0);
    148148  //Stores values of reloaded parameters in natural order
    149   VMatrix _.reloadedValues = Rand(0,1,0,0);
     149  VMatrix _.reloadValues = Rand(0,1,0,0);
    150150  //Stores values of both fixed and reloaded parameters in the block order
    151151  VMatrix _.values = Rand(0,1,0,0);
     152  VMatrix _.nonFreeValues = Rand(0,1,0,0);
     153
     154  Set _.nonFreeIndex = Copy(Empty);
     155  Set _.freeIndex = Copy(Empty);
    152156
    153157
    … …  
    220224      Real _.reloadParamNum := Rows(_.reloadParamIdx);
    221225      Real _.freeParamNum   := Rows(_.freeParamIdx);
    222       VMatrix If(_.fixedParamNum | _.reloadParamNum,
     226      Real If(_.fixedParamNum | _.reloadParamNum,
    223227      {
    224228        getMergedFixedAndReloadedSample(0)
    225229      });
    226230      1
    227     })
     231    });
     232    Set _.nonFreeIndex := MatSet(Tra(_.fixedParamIdx << _.reloadParamIdx))[1];
     233    Set _.freeIndex := MatSet(Tra(_.freeParamIdx))[1];
     234    1
    228235  };
    229236
    … …  
    232239  ////////////////////////////////////////////////////////////////////////////
    233240  {
    234      MatSet(Tra(_.fixedParamIdx << _.reloadParamIdx))[1]
     241    _.nonFreeIndex
    235242  };
    236243
    … …  
    239246  ////////////////////////////////////////////////////////////////////////////
    240247  {
    241      MatSet(Tra(_.freeParamIdx))[1]
    242   };
    243 
    244 
    245   ////////////////////////////////////////////////////////////////////////////
    246   VMatrix getMergedFixedAndReloadedSample(Real numSim)
    247   ////////////////////////////////////////////////////////////////////////////
    248   {
    249     VMatrix _.reloadedValues := _.mcmcPartialHandler::_.reloader::
     248    _.freeIndex
     249  };
     250
     251
     252  ////////////////////////////////////////////////////////////////////////////
     253  Real getMergedFixedAndReloadedSample(Real numSim)
     254  ////////////////////////////////////////////////////////////////////////////
     255  {
     256  //WriteLn("TRACE"+_MID+" BlockPartialSampler::getMergedFixedAndReloadedSample 0");
     257    VMatrix _.reloadValues := _.mcmcPartialHandler::_.reloader::
    250258     reloadSimulation(numSim, _.reloadParamIdxOrig);
    251     VMatrix _.values := Case(
    252     _.N==_.fixedParamNum,
    253     {
    254       _.fixedValues
     259  //WriteLn("TRACE"+_MID+" _.fixedValues:"<<_.fixedValues);
     260  //WriteLn("TRACE"+_MID+" _.reloadValues:"<<_.reloadValues);
     261    VMatrix values = Case(
     262    !_.fixedParamNum,
     263    {
     264      MergeRows(_.N, [[
     265        [[_.reloadValues, _.reloadParamIdx]] ]])
    255266    },
    256     _.N==_.reloadParamNum,
    257     {
    258       _.reloadedValues
     267    !_.reloadParamNum,
     268    {
     269      MergeRows(_.N, [[
     270        [[_.fixedValues,  _.fixedParamIdx ]] ]])
    259271    },
    260272    1==1,
    261273    {
    262       VMatrix values = MergeRows(_.N, [[
    263         [[_.fixedValues,    _.fixedParamIdx ]],
    264         [[_.reloadedValues, _.reloadParamIdx]] ]]);
    265       Convert(values,"Blas.R.Dense")
    266     })
     274      MergeRows(_.N, [[
     275        [[_.fixedValues,  _.fixedParamIdx ]],
     276        [[_.reloadValues, _.reloadParamIdx]] ]])
     277    });
     278    VMatrix _.values := Convert(values,"Blas.R.Dense");
     279    VMatrix _.nonFreeValues := SubRow(_.values, _.nonFreeIndex);
     280    0
    267281  };
    268282
    … …  
    271285  ////////////////////////////////////////////////////////////////////////////
    272286  {
     287  //WriteLn("TRACE"+_MID+" BlockPartialSampler::getMergedFixedAndReloadedSample 0");
     288  //WriteLn("TRACE"+_MID+" _.fixedValues:"<<_.fixedValues);
     289  //WriteLn("TRACE"+_MID+" _.fixedParamIdx:"<<_.fixedParamIdx);
     290  //WriteLn("TRACE"+_MID+" _.reloadValues:"<<_.reloadValues);
     291  //WriteLn("TRACE"+_MID+" _.reloadParamIdx:"<<_.reloadParamIdx);
     292  //WriteLn("TRACE"+_MID+" freeValues:"<<freeValues);
     293  //WriteLn("TRACE"+_MID+" _.freeParamIdx:"<<_.freeParamIdx);
    273294    VMatrix values = MergeRows(_.N, [[
    274       [[_.fixedValues,    _.fixedParamIdx ]],
    275       [[_.reloadedValues, _.reloadParamIdx]],
    276       [[  freeValues,     _.freeParamIdx  ]] ]]);
     295      [[_.fixedValues,  _.fixedParamIdx ]],
     296      [[_.reloadValues, _.reloadParamIdx]],
     297      [[  freeValues,   _.freeParamIdx  ]] ]]);
    277298    VMatrix _.values := Convert(values,"Blas.R.Dense")
    278299  }
Note: See TracChangeset for help on using the changeset viewer.