CA1 network model for place cell dynamics (Turi et al 2019)

 Download zip file   Auto-launch 
Help downloading and running models
Biophysical model of CA1 hippocampal region. The model simulates place cells/fields and explores the place cell dynamics as function of VIP+ interneurons.
1 . Turi GF, Li W, Chavlis S, Pandi I, O’Hare J, Priestley JB, Grosmark AD, Liao Z, Ladow M, Zhang JF, Zemelman BV, Poirazi P, Losonczy A (2019) Vasoactive Intestinal Polypeptide-Expressing Interneurons in the Hippocampus Support Goal-Oriented Spatial Learning Neuron
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus; Mouse;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 basket cell; Hippocampus CA1 basket cell - CCK/VIP; Hippocampus CA1 bistratified cell; Hippocampus CA1 axo-axonic cell; Hippocampus CA1 stratum oriens lacunosum-moleculare interneuron ; Hippocampal CA1 CR/VIP cell;
Channel(s): I A; I h; I K,Ca; I Calcium; I Na, leak; I K,leak; I M;
Gap Junctions:
Receptor(s): GabaA; GabaB; NMDA; AMPA;
Simulation Environment: NEURON; Brian;
Model Concept(s): Place cell/field;
Implementer(s): Chavlis, Spyridon [schavlis at]; Pandi, Ioanna ;
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; GabaA; GabaB; AMPA; NMDA; I A; I K,leak; I M; I h; I K,Ca; I Calcium; I Na, leak;
def spike_map(spiketimes,csum, npath_x, npath_y):
    Make the Spike Matrix from spiketimes, path and time_array
    import numpy as np
    Z = np.zeros((npath_x,npath_y))
    if len(spiketimes) != 0:
        for spike in spiketimes:
            # Find the last positive index --> this is the mapping from time to space 
            if spike > csum[-1]:
                idxs = np.argwhere((spike - csum) > 0)
                if idxs.shape[0]==0:
                    idx = idxs.shape[0]
                Z[idx,:] += 1
    if Z.shape[0] != npath_x or Z.shape[1] != npath_y:
        print 'Error in Z dimensions'
    return Z

def binning(a, N, method):
    import numpy as np
    if (isinstance(N, int)==False):
        raise ValueError('Binning size must be integer.')
    a = a.squeeze()
    L = a.shape[0]
    rem = L % N
    if rem !=0:
        raise ValueError('Not a valid binning size.')
    # find the step
    step = L/N
    b = np.zeros(N)
    cnt = 0    
    for i in range(0, L, step):
        if method=='summing':
            b[cnt] = np.sum(a[i:i+step])
        elif method=='mean':
            b[cnt] = np.mean(a[i:i+step])
    return b.reshape(-1,1)

Loading data, please wait...