A computational model of systems memory consolidation and reconsolidation (Helfer & Shultz 2019)

 Download zip file 
Help downloading and running models
A neural-network framework for modeling systems memory consolidation and reconsolidation.
1 . Helfer P, Shultz TR (2019) A computational model of systems memory consolidation and reconsolidation. Hippocampus [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network; Synapse;
Brain Region(s)/Organism: Hippocampus; Neocortex;
Cell Type(s): Abstract integrate-and-fire neuron;
Gap Junctions:
Receptor(s): AMPA;
Transmitter(s): Glutamate;
Simulation Environment: C or C++ program;
Model Concept(s): Memory; Synaptic Plasticity;
Implementer(s): Helfer, Peter [peter.helfer at mail.mcgill.ca];
Search NeuronDB for information about:  AMPA; Glutamate;
#ifndef NS_TRACT_HH
#define NS_TRACT_HH

#include <vector>
#include <string>
#include <functional>
using std::vector;
using std::string;

#include "NsLayer.hh"
#include "NsUnit.hh"
#include "NsConnection.hh"

class NsTract {
    NsTract(const string &id,
            NsLayer *fromLayer, NsLayer *toLayer,
            const string &type);
    void depotentiateSome();
    void acquire(uint numStimCycles, const char *tag);
    void consolidate(uint numStimCycles);
    void calcRates();
    void stimulate(double learnRate, uint numStimCycles, const char *tag);
    void amparTrafficking();
    void maintain();
    void togglePsi(bool state);
    void reactivate();
    void calcDepotProb();
    uint getNumPotentiated() const;
    static void printNumPotentiatedHdr();
    void printNumPotentiated() const;
    void printState() const;

    string toStr(uint iLvl = 0, const string &iStr = "   ") const;

    string id;
    vector<NsConnection *> connections;
    string type;
    NsLayer *fromLayer;
    NsLayer *toLayer;

    double e3Level; // E3 enzyme level between 0.0 and 1.0
    double reactE3Level; // E3 level after reactivation

    // These are used to avoid useless calculations
    double lastE3Level;
    uint   lastTimeStep;

    // Probability that any given potentiated connection in this tract will
    // depotentiate during a timeStep.
    double depotProb;

    // Acquisition is simulated as a one-shot event, so not scaled to
    // timeStep.
    double acqLearnRate;

    // These rates and probabilities are per timeStep. They are calculated
    // from the 01h rates, which are read from the property file
    double consLearnRate;
    double psdDecayRate;
    double cpAmparRemovalRate;
    double ciAmparInsertionRate;
    double ciAmparRemovalRate;
    double baseDepotProb;
    double e3DepotProb;
    double e3DecayRate;
    double maxPotProb;

    // The 01h values for traffic rates and probabilities
    double consLearnRate01h;
    double psdDecayRate01h;
    double cpAmparRemovalRate01h;
    double ciAmparInsertionRate01h;
    double ciAmparRemovalRate01h;
    double baseDepotProb01h;
    double maxE3DepotProb01h; // 01h prob of E3-induced depot when e3Level = 1.0
    double e3DepotProb01h;
    double e3DecayRate01h;
    double maxPotProb01h;

 * Compare two tracts for equality (used by unordered_set<NsTract>)
inline bool operator==(const NsTract &u1, const NsTract &u2)
    return (u1.id == u2.id);