Cortical feedback alters visual response properties of dLGN relay cells (Martínez-Cañada et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:239878
Network model that includes biophysically detailed, single-compartment and multicompartment neuron models of relay-cells and interneurons in the dLGN and a population of orientation-selective layer 6 simple cells, consisting of pyramidal cells (PY). We have considered two different arrangements of synaptic feedback from the ON and OFF zones in the visual cortex to the dLGN: phase-reversed (‘push-pull’) and phase-matched (‘push-push’), as well as different spatial extents of the corticothalamic projection pattern. This project is the result of a research work and its associated publication is: (Martínez-Cañada et al 2018). Installation instructions as well as the latest version can be found in the Github repository: https://github.com/CINPLA/biophysical_thalamocortical_system
Reference:
1 . Martínez-Cañada P, Mobarhan MH, Halnes G, Fyhn M, Morillas C, Pelayo F, Einevoll GT (2018) Biophysical network modeling of the dLGN circuit: Effects of cortical feedback on spatial response properties of relay cells. PLoS Comput Biol 14:e1005930 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Thalamus;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: LFPy; NEURON; NEST; Python;
Model Concept(s): Vision;
Implementer(s): Martínez-Cañada, Pablo [pablomc at ugr.es];
#!/usr/bin/env python
# -*- coding: utf-8 -*-

## This class defines the properties and synapses of a cortical pyramidal cell.

from os.path import join
import numpy as np
import pylab as plt
from time import time
import neuron
import LFPy
import os

nrn = neuron.h

# Path to folder of neuron models
root_path = os.path.dirname(os.path.realpath(__file__))
root_path = root_path[0:root_path.find("thalamocortical")]

class CorticalPyramidalTemplate(object):

    def __init__(self):
        self.dummyP = 0.0

    def return_cell(self):

        self.model_path = join(root_path+'cortex_neurons')
        neuron.load_mechanisms(self.model_path)

        cell_parameters = {
            'morphology': join(self.model_path, 'soma.hoc'),
            'passive':False,
            'v_init' : -70,
            'extracellular':False,
            'nsegs_method': 'lambda_f',
            'lambda_f': 50,
            'timeres_NEURON':0.1,
            'timeres_python':0.1,
            'tstopms':2000,
            'tstartms':0,
            'templatefile': join(self.model_path, 'sPY_template'),
            'templatename':'sPY',
            'templateargs':None,
            'custom_fun': None,
            'delete_sections':False
        }

        cell = LFPy.TemplateCell(**cell_parameters)
        cell.set_rotation(x=-1.57, y=0.0, z=0.0)

        return cell


    def currentPulse(self,cell, stimamp0=0.055, stimamp1=0.0):

        PPparams0 = {
            'idx' : 0,
            'pptype' : 'IClamp',
            'delay' : 300,
            'dur' : 400,
            'amp' : stimamp0
        }
        PPparams1 = {
            'idx' : 0,
            'pptype' : 'IClamp',
            'delay' : 0,
            'dur' : 20000,
            'amp' : stimamp1,
        }

        if stimamp0 != 0:
            stim0 = LFPy.StimIntElectrode(cell, **PPparams0)
        if stimamp1 != 0:
            stim1 = LFPy.StimIntElectrode(cell, **PPparams1)

        cell.simulate(rec_vmem=True)


    def TCConn(self, cell):
        syn = nrn.Exp2Syn(0.5, sec=cell.cell.soma[0])
        syn.e = 10.0
        syn.tau1 = 0.2
        syn.tau2 = 1.2

        return syn

    def somaCon(self, cell, syn,weight):

        netcon = nrn.NetCon(cell.cell.soma[0](0.5)._ref_v, syn,sec=cell.cell.soma[0])
        netcon.threshold = -10.0
        netcon.delay = 1.
        netcon.weight[0] = weight # nS

        return netcon

    def somaInhibition(self, cell):
        syn = nrn.Exp2Syn(0.5, sec=cell.cell.soma[0])
        syn.e = -60.0
        syn.tau1 = .45
        syn.tau2 = 5.0

        return syn



if __name__ == '__main__':

    print("main")

    #### Current steps ####

    template = CorticalPyramidalTemplate()

    plt.figure()

    neuron.h("forall delete_section()")
    nrn.celsius=36.0

    PY_neuron = template.return_cell()
    template.currentPulse(PY_neuron,0.75,0.0)

    plt.subplot(111, xlabel='Time [ms]', ylabel='mV')
    plt.plot(PY_neuron.tvec, PY_neuron.vmem[0, :])


    plt.show()

Loading data, please wait...