Parvalbumin-positive basket cells differentiate among hippocampal pyramidal cells (Lee et al. 2014)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:153280
This detailed microcircuit model explores the network level effects of sublayer specific connectivity in the mouse CA1. The differences in strengths and numbers of synapses between PV+ basket cells and either superficial sublayer or deep sublayer pyramidal cells enables a routing of inhibition from superficial to deep pyramidal cells. At the network level of this model, the effects become quite prominent when one compares the effect on firing rates when either the deep or superficial pyramidal cells receive a selective increase in excitation.
Reference:
1 . Lee SH, Marchionni I, Bezaire M, Varga C, Danielson N, Lovett-Barron M, Losonczy A, Soltesz I (2014) Parvalbumin-positive basket cells differentiate among hippocampal pyramidal cells. Neuron 82:1129-44 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Hippocampus CA1 basket cell;
Channel(s): I Sodium; I Calcium; I Potassium;
Gap Junctions:
Receptor(s): GabaA; Glutamate;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Detailed Neuronal Models; Connectivity matrix; Laminar Connectivity;
Implementer(s): Bezaire, Marianne [mariannejcase at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; GabaA; Glutamate; I Sodium; I Calcium; I Potassium;
begintemplate CellCategoryInfo			// Define a template that describes
										//  a class of celltype objects,
										//  where each celltype object
										//  holds type-specific parameters
										//  used in creating the network model
										
	public setCellTypeParams, setCellTypeDist			// Define variables and funcs that are
	public cellType_string, technicalType, cellStartGid, cellEndGid	//  accessible from outside the class
	public updateGidRange, addPosVec, layerflag, LastHighIndex			//  object
	public dist, numCells, CellList, addCell, numCons, numConns, numSyns, wgtConns, numThisHost
	public setBins, dentateYBins, dentateXBins, dentateZBins
	public dentateYBinSize, dentateXBinSize, dentateZBinSize, is_art

	objref dist, cellpos, f1, CellList, numCons, numConns, numSyns, wgtConns, ctype, this	// Define objects, including
																//  'this', which is this
																//  instance of the class
																
	strdef cellType_string, technicalType, tempString, cmd, strtomax 			// Define strings

	proc setCellTypeParams(){			// Define a proc to set the parameters
										//  corresponding to the celltype this
										//  member of the class describes
										
		cellType_string = $s1		// Name of the cell type
		
		technicalType = $s2
		
		cellStartGid = $3 			// First number in gid range (all cells
									//  of this type have consecutive numbers
									//  in the gid range)
									
		numCells = $4				// Number of cells of this type
		
		cellEndGid =  $3 + $4 -1	// Last number in gid range
		
		layerflag = $5				// Layer in which the somata of this cell type
									//  are found (order of the layers is a matter
									//  of convention, documented by YOU)
									
		LastHighIndex = 0
		
		ctype = new StringFunctions()	// Create a new StringFunctions object
										//  for parsing the name of the celltype
														
		is_art=$6			//  if the cell type is artificial
		
		objref CellList[numCells]	// Create a new CellList for this celltype,
									//  the length of which equals the number
									//  of cells
		numThisHost = 0
	}

	proc setCellTypeDist(){			// From a file, read in the constants
									//  for the Gaussian equation that describes
									//  the axonal distribution of this celltype
		f1 = new File()
		dist = new Vector(3)		// Define a new vector, dist, which holds
									//  the constants
		
		sprint(tempString,"../cells/dist_%s.hoc",cellType_string)	//Specify file
		
		f1.ropen(tempString)		// Open the file
		
		if (f1.isopen()) {			
			dist.scanf(f1)				// Read in the values from the file
		} else {
			dist.x[0]=1
			dist.x[1]=1
			dist.x[2]=1
		}
		
		f1.close()					// Close the file
	}
	
	proc updateGidRange() {			// Define a proc that updates the range
									//  of gids used by this celltype. The range
									//  needs updating if this cell type was
									//  subject to cell loss (reducing the 
									//  number of cells) or if any celltype
									//  earlier in the gid sequence was subject
									//  to cell loss (causing the StartGid to
									//  be moved earlier)
									
		cellStartGid = $1			// Read in the start gid
		
		cellEndGid = $1 + numCells -1	// Solve for the end gid given the
										//  number of cells
		if (numCells>0) {
			objref CellList[numCells]	// Create a new CellList for this celltype,
		}
	}
	
	proc setBins() {local runresult, toohigh, numtomin	// Defines the proc setBins,
														//  which takes the arguments
														//  for the length of the 
														//  brain region in X, Y, and Z,
														//  and determines how far apart
														//  the cells should be in each
														//  dimension to be evenly spaced

		dentateZBins=int((numCells*($3)^2/($2*$1))^(1/3))	// Given the relative length of
															//  the Z dimension compared to
															//  the X and Y dimensions, solve
															//  for how many cells should be 
															//  spaced along the z dimension 
															
		if (dentateZBins==0) {dentateZBins=1}	// Make sure the Z dimension is at least one
												//  cell wide
		
		dentateYBins=int(($2/$3)*(numCells*($3)^2/($2*$1))^(1/3))	// Given the relative
																	//  length for Y...
																	
		if (dentateYBins==0) {dentateYBins=1}	// Make sure the Y dimension is at least one
												//  cell wide
												
		dentateXBins=int(($1/$3)*(numCells*($3)^2/($2*$1))^(1/3))	// Given the relative
																	//  length for X...
																	
		if (dentateXBins==0) {dentateXBins=1}	// Make sure the Z dimension is at least one
												//  cell wide
												
		// The above code may result in there being slightly too few or too many positions
		//  set aside for cells. To make the final spacing along each dimension most closely,
		//  match the total number of cells of this type, we may either increase or decrease
		//  the number of cells assigned along each edge as follows
		
		// Find the largest dimension (which is the ideal dimension to change if the number
		//  of cell assignments is too large or too small) 								
		if ($3 >= $2 && $3 >= $1) {
			strtomax="dentateZBins"
			numtomin=dentateXBins*dentateYBins
		} else {
			if ($2 >= $3 && $2 >= $1) {
				strtomax="dentateYBins"
				numtomin=dentateXBins*dentateZBins
			} else {
				strtomax="dentateXBins"
				numtomin=dentateYBins*dentateZBins
			}
		}

		while (dentateXBins*dentateYBins*dentateZBins < numCells){	// If not enough cell
																	//  positions are allotted
			sprint(cmd, "%s=%s+1",strtomax,strtomax)	// Add another slot to
														//  the largest dimension
			runresult=execute1(cmd, this) 	// This command was written as a string so
											//	the dimension to increase doesn't have to be hard coded
		}

		toohigh=dentateXBins*dentateYBins*dentateZBins-numtomin
		while (toohigh >= numCells){				// If too many cell positions were allotted
			sprint(cmd, "%s=%s-1",strtomax,strtomax)// Remove one from the largest dimension
			runresult=execute1(cmd, this) 		// This command was written as a string so
												//	the dimension to increase doesn't have to be hard coded
			toohigh=dentateXBins*dentateYBins*dentateZBins-numtomin
		}

		dentateZBinSize = int($3/dentateZBins)	// Length of each cell's 'personal space' (along Z dimension) in microns
		
		dentateYBinSize = int($2/dentateYBins)	// Length of each cell's 'personal space' (along Y dimension) in microns
		
		dentateXBinSize = int($1/dentateXBins)	// Length of each cell's 'personal space' (along X dimension) in microns
	}

endtemplate CellCategoryInfo