123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- //
- // C++ Implementation: simmod_maplayer
- //
- // Description:
- //
- //
- // Author: Frank Michler,,, <frank@pc13365>, (C) 2010
- //
- // Copyright: See COPYING file that comes with this distribution
- //
- //
- #include "sys.hpp" // for libcwd
- #include "debug.hpp" // for libcwd
- #include <vector>
- #include "simloop.hpp"
- #include "simmodules/simmodules.hpp"
- #include "anyoptwrap/anyoptionwrapper.hpp"
- #include "anyoptwrap/anyoptionwrap_defs.hpp"
- #include "layerfactory.hpp"
- #include "simmod_maplayer.hpp"
- #include "vconnection.hpp"
- SimMod_MapLayer::SimMod_MapLayer(AnyOptionWrapper* _opt):
- SimModule(_opt),
- mLocalInh(_opt),
- mMapLayer(0),
- mInhLayer(0),
- mConLateralExcitation(0)
- {
- mOptionsPrefix="MapLayer_";
- }
- SimMod_MapLayer::~SimMod_MapLayer()
- {
- // SimElements are deleted by SimLoop, so we don't need to delete them here.
- }
- void SimMod_MapLayer::SetCmdLineOptions()
- {
- myAnyWrap->setOption( (mOptionsPrefix + "Nx").c_str(),'a', &mMapNx, 100);
- myAnyWrap->setOption( (mOptionsPrefix + "Ny").c_str(),'a', &mMapNy, 100);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExStrength").c_str(),'a', &mLatExStrength, 0.);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExRange").c_str(),'a', &mLatExRange, 0.);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExTauRec").c_str(),'a',&mLatExTauRec, 300.);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExU_Se").c_str(),'a',&mLatExUSe, 0.3);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExMinDelay").c_str(),'a',&mLatExMinDelay, 0.);
- myAnyWrap->setOption( (mOptionsPrefix + "LatExMaxDelay").c_str(),'a',&mLatExMaxDelay, 0.);
-
- mLocalInh.SetCmdLineOptions();
- }
- layer* SimMod_MapLayer::Setup(SimLoop* _MainSimLoop)
- {
- MainSimLoop = _MainSimLoop;
- mMapLayer = createLayer(mMapNx*mMapNy, NMType_DecoLif, NPType_Excitatory);
- mMapLayer->SetName("RepresentationLayer");
- mMapLayer->SetupPositions(mMapNx,mMapNy,true);
- mMapLayer->SetRandomInputStrength(0);
- MainSimLoop->AddSimElement(mMapLayer);
- mInhLayer = mLocalInh.Setup(MainSimLoop, mMapLayer);
- setupLateralExcitation();
- return mMapLayer;
- }
- void SimMod_MapLayer::setupLateralExcitation()
- {
- Dout(dc::smod, __FUNCTION__);
- if (mLatExStrength > 0) {
- mConLateralExcitation = new
- VecDepressiveConnection(mMapLayer,
- mMapLayer,
- csimInputChannel_NMDA_AMPA,
- mLatExTauRec,
- mLatExUSe);
- mConLateralExcitation->SetName("conIT_ExEx");
-
- //! @todo implement loading connection from weight file
- mLatExMaxDelay=1;
- mLatExMinDelay=0;
- mConLateralExcitation->ConnectGaussian(mLatExRange,
- mLatExStrength,
- mLatExMaxDelay,
- mLatExMinDelay,
- true);
-
- mConLateralExcitation->Save();
- MainSimLoop->AddSimElement(mConLateralExcitation);
- }
- }
- VecConnection* SimMod_MapLayer::ConLateralExcitation()
- {
- return dynamic_cast<VecConnection*>(mConLateralExcitation);
- }
- VecConnection* SimMod_MapLayer::ConExToLateralInhibition()
- {
- return mLocalInh.ConExInh();
- }
- SimMod_LocalInh* SimMod_MapLayer::LateralInhibition()
- {
- return &mLocalInh;
- }
|