A model for a nociceptor terminal and terminal tree (Barkai et al., 2020)

 Download zip file 
Help downloading and running models
This model was used to study how the architecture of the nociceptor terminal tree affects the input-output relation of the primary nociceptive neurons. The model shows that the input-output properties of the nociceptive neurons depend on the length, the axial resistance, and location of individual terminals and that activation of multiple terminals by a capsaicin-like current allows summation of the responses from individual terminals, thus leading to increased nociceptive output.
1 . Barkai O, Butterman R, Katz B, Lev S, Binshtok AM (2020) The Input-Output Relation of Primary Nociceptive Neurons is Determined by the Morphology of the Peripheral Nociceptive Terminals. J Neurosci 40:9346-9363 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Dorsal Root Ganglion (DRG) cell;
Channel(s): I Potassium; I Calcium; I Sodium; I h;
Gap Junctions:
Simulation Environment: NEURON;
Model Concept(s): Action Potentials; Axonal Action Potentials; Nociception;
Search NeuronDB for information about:  I h; I Sodium; I Calcium; I Potassium;

//The user can stimulate the terminals with capsaicin by adjusting Capsaicin_stimulation.hoc and uncommenting the last line of this file.

celsius = 25

// Nociceptive terminal model 
// Barkai et al. 2020 

//////////////////// VARIABLES /////////////////////

tstop = 3000

/////////////////   MORPHOLOGY ///////////////////////
Term_Branch = 27//Number of Terminal Branches
Term_Length = 1000 //Terminal Branches length
SF=1 //Scaling factor for terminal 
				print NavLessLength
				CENTRAL_DIAM = 0.4
				create soma, central,terminal[Term_Branch], peri, tjcentral, tjperi, stem, cone, NavLess[NavLessNum]

				l_seg = 10 //segment size
				l_seg_skinterminal = 5 //segment size for terinals (for more accuracy)

				peri {nseg=100 L=5000 diam = .8}		// peripherial axon
				tjperi {nseg=100 L=100 diam = .8}		   	// tjunction axon
				tjcentral {nseg=100 L=100 diam = CENTRAL_DIAM}		// tjunction axon
				central {nseg=100 L=5000 diam = CENTRAL_DIAM}		// central axon
				stem {nseg=100 L=75 diam = 1.4}				// stem axon
				soma {nseg=1 L=25 diam =25}				// soma

				Rorg=1 //Mitochondira etc. resistance at terminals 

				//////// Connectivity //////////

				//terminal connect peri(0),1
				peri connect tjperi(0),1
				tjperi connect stem(0),1
				stem connect soma(0),1
				tjperi connect tjcentral(0),1
				tjcentral connect central(0),1

				//Terminal branch morphology and connectivity
				term_nseg=term_L/l_seg   //Dividing the compartment to l size segment 

				cone connect peri(0),1
				connect terminal[0](1), cone(0)
				terminal[0]{nseg=term_nseg L=term_L diam=term_diam}
				// Terminal Morphology
					terminal[0] {nseg=term_nseg L=300*SF diam=term_diam}
					terminal[1] {nseg=term_nseg L=120*SF diam=term_diam}
					terminal[2] {nseg=term_nseg L=120*SF diam=term_diam}
					terminal[3] {nseg=term_nseg L=400*SF diam=term_diam}
					terminal[4] {nseg=term_nseg L=250*SF diam=term_diam}
					terminal[5] {nseg=term_nseg L=95*SF-NavLessLength diam=term_diam}
					terminal[6] {nseg=term_nseg L=175*SF-NavLessLength diam=term_diam} 
					terminal[7] {nseg=term_nseg L=40*SF diam=term_diam}
					terminal[8] {nseg=term_nseg L=40*SF diam=term_diam}
					terminal[9] {nseg=term_nseg L=40*SF diam=term_diam}
					terminal[10] {nseg=term_nseg L=160*SF diam=term_diam}
					terminal[11] {nseg=term_nseg L=100*SF-NavLessLength diam=term_diam}
					terminal[12] {nseg=term_nseg L=100*SF-NavLessLength diam=term_diam}
					terminal[13] {nseg=term_nseg L=100*SF-NavLessLength diam=term_diam}
					terminal[14] {nseg=term_nseg L=100*SF-NavLessLength diam=term_diam}
					terminal[15] {nseg=term_nseg L=350*SF diam=term_diam}
					terminal[16] {nseg=term_nseg L=175*SF-NavLessLength diam=term_diam}
					terminal[17] {nseg=term_nseg L=185*SF-NavLessLength diam=term_diam}
					terminal[18] {nseg=term_nseg L=85*SF diam=term_diam}
					terminal[19] {nseg=term_nseg L=200*SF-NavLessLength diam=term_diam}
					terminal[20] {nseg=term_nseg L=200*SF-NavLessLength diam=term_diam}
					terminal[21] {nseg=term_nseg L=155*SF-NavLessLength diam=term_diam}
					terminal[22] {nseg=term_nseg L=200*SF diam=term_diam}
					terminal[23] {nseg=term_nseg L=150*SF-NavLessLength diam=term_diam}
					terminal[24] {nseg=term_nseg L=80*SF diam=term_diam}
					terminal[25] {nseg=term_nseg L=75*SF-NavLessLength diam=term_diam}
					terminal[26] {nseg=term_nseg L=180*SF-NavLessLength diam=term_diam}
					connect terminal[1](1),terminal[0](0)	
					connect terminal[2](1),terminal[0](0) 
					connect terminal[3](1),terminal[1](0)	
					connect terminal[4](1),terminal[1](0) 
					connect terminal[5](1),terminal[2](0)
						connect NavLess[13](1), terminal[5](0)
					connect terminal[6](1),terminal[2](0)
						connect NavLess[12](1), terminal[6](0)
					connect terminal[7](1),terminal[3](0)	
					connect terminal[8](1),terminal[3](0)
					connect terminal[9](1),terminal[4](0)	
					connect terminal[10](1),terminal[4](0)	
					connect terminal[11](1),terminal[7](0)//skin
						connect NavLess[11](1), terminal[11](0)
					connect terminal[12](1),terminal[7](0)//skin
						connect NavLess[10](1), terminal[12](0)
					connect terminal[13](1),terminal[8](0)//skin	
						connect NavLess[9](1), terminal[13](0)
					connect terminal[14](1),terminal[8](0)//skin	
						connect NavLess[8](1), terminal[14](0)	
					connect terminal[15](1),terminal[9](0)	
					connect terminal[16](1),terminal[9](0)
						connect NavLess[7](1), terminal[16](0)
					connect terminal[17](1),terminal[10](0)
						connect NavLess[6](1), terminal[17](0)
					connect terminal[18](1),terminal[10](0)		
					connect terminal[19](1),terminal[15](0)//skin
						connect NavLess[5](1), terminal[19](0)	
					connect terminal[20](1),terminal[15](0)//skin
						connect NavLess[4](1), terminal[20](0)
					connect terminal[21](1),terminal[18](0)	
						connect NavLess[3](1), terminal[21](0)
					connect terminal[22](1),terminal[18](0)		
					connect terminal[23](1),terminal[22](0)//skin
						connect NavLess[2](1), terminal[23](0)	
					connect terminal[24](1),terminal[22](0)
					connect terminal[25](1),terminal[24](0)//skin
						connect NavLess[1](1), terminal[25](0)
					connect terminal[26](1),terminal[24](0)//skin
						connect NavLess[0](1), terminal[26](0)

				cone { //Cone between the terminal and the peripheral axon
					for i=0,nseg{ //coning the cone with respect to the terminal and peri diameters
							diam((1/nseg)*i/2)=(1/nseg)*i*(peri.diam - terminal[0].diam) + terminal[0].diam    

				objref DRG   					// create new object called DRG
				DRG = new SectionList()				// Define DRG as a list of sections

				tjperi DRG.append()				// DRG sections: tjunction, stem, and soma   
				tjcentral DRG.append()  
				stem DRG.append()				
				soma DRG.append()

				objref TermSec						// create new object called TermSec for terminals
				TermSec = new SectionList()	  					
					cone TermSec.append()
					for i=0, Term_Branch-1 { 	
							terminal[i] TermSec.append()
				objref NavLessSec
				NavLessSec = new SectionList()	  					
					for i=0, NavLessNum-1 { 	
							NavLess[i] NavLessSec.append()
				objref TermSkin	                    // Skin inervating Terinals (for Goldstein et al.)
				TermSkin = new SectionList()	
					terminal[26] TermSkin.append()
					terminal[25] TermSkin.append()
					terminal[23] TermSkin.append()
					terminal[21] TermSkin.append()
					terminal[20] TermSkin.append()
					terminal[19] TermSkin.append()
					terminal[17] TermSkin.append()
					terminal[16] TermSkin.append()
					terminal[14] TermSkin.append()
					terminal[13] TermSkin.append()
					terminal[12] TermSkin.append()
					terminal[11] TermSkin.append()
					terminal[5] TermSkin.append()
					terminal[6] TermSkin.append()

				/////////////////// INITIALIZATION /////////////////

				///// GENERAL INITIALIZATION /////////

				forall{				// for all compartments
						insert na_ion  //A bug fix for point_process 
						insert k_ion   //A bug fix for point_process
					   //Na Channels 
					   insert nattxs
					   insert nav1p9
					   insert nav1p8
						insert nap
					   //K Channels
					   insert kdr
					   insert ka
					   insert km
					   //insert kf
						//Ca channels
						insert calL_Shah
						insert calT_Shah 
						//H channels
						insert hd	

					insert pas			// insert leak channels	
					g_pas =1/10000	 //set Rm = 10000 ohms-cm2
					v = -60				// set Vrest
					e_pas = -60
					Ra = 150			// intracellular resistance

				forsec NavLessSec{
						g_pas=g_pas/4          //Accoring to  Dmytro V. Vasylyev and Stephen G. Waxman, Journal of Neurophysiology 2012	
						L=NavLessLength //-ShortenBy
						insert transducer_pas					
						//Distrubuting No NaV channels in the distal end of the terminal 
						Tau_Puff=7.04             //(from Golstein et al. 2017)
						for (x){ 
								xdist = distance(x)
								g_transducer_pas(x)=g_transMAX*exp(-(x*L)/Tau_Puff) //look at Capsaicin_Puff_Exponent_Check.m if you want to verify this
				forsec TermSec{
					g_pas=g_pas/4          //Accoring to  Dmytro V. Vasylyev and Stephen G. Waxman, Journal of Neurophysiology 2012	

				forsec TermSkin{
					insert transducer_pas
								//(from Golstein et al. 2017)
					nseg=L/l_seg_skinterminal //make the terminal of stimulation with a higher (nseg) resolution	
					for (x){ 
							xdist = distance(x)				
							g_transducer_pas(x)=g_MIN*exp(-(x*L)/Tau_Puff) //look at Capsaicin_Puff_Exponent_Check.m if you want to verify this	

				proc init(){				// INITIALIZATION FUNCTION
						dt=0.5 //0.1	//dt=0.7 

				  forall {
					   v=-60 // VREST FOR ALL COMPARTMENTS (Change to -54mV to get rid of the spontaneous first spike)
					   finitialize(v)			// reset all state variables
					   fcurrent()     			// calculate all currents
				}			/// end of initialization

			//The user can also choose which terminals to stimulate by changing Capsaicin_stimulation.hoc file and uncommenting the next line
			//load_file("Capsaicin_stimulation.hoc") // puts the electrodes in specific or all terminals	

Loading data, please wait...