Orientation preference in L23 V1 pyramidal neurons (Park et al 2019)

 Download zip file   Auto-launch 
Help downloading and running models
"Pyramidal neurons integrate synaptic inputs from basal and apical dendrites to generate stimulus-specific responses. It has been proposed that feed-forward inputs to basal dendrites drive a neuron’s stimulus preference, while feedback inputs to apical dendrites sharpen selectivity. However, how a neuron’s dendritic domains relate to its functional selectivity has not been demonstrated experimentally. We performed 2-photon dendritic micro-dissection on layer-2/3 pyramidal neurons in mouse primary visual cortex. We found that removing the apical dendritic tuft did not alter orientation-tuning. Furthermore, orientation-tuning curves were remarkably robust to the removal of basal dendrites: ablation of 2 basal dendrites was needed to cause a small shift in orientation preference, without significantly altering tuning width. Computational modeling corroborated our results and put limits on how orientation preferences among basal dendrites differ in order to reproduce the post-ablation data. In conclusion, neuronal orientation-tuning appears remarkably robust to loss of dendritic input."
1 . Park J, Papoutsi A, Ash RT, Marin MA, Poirazi P, Smirnakis SM (2019) Contribution of apical and basal dendrites to orientation encoding in mouse V1 L2/3 pyramidal neurons Nature Communications 10:5372
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex L2/3 pyramidal GLU cell;
Channel(s): I L high threshold; I T low threshold; I A; I K,Ca; I M; I K; I Na,t;
Gap Junctions:
Receptor(s): GabaA; NMDA; AMPA;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Vision;
Implementer(s): Papoutsi, Athanasia [athpapoutsi at gmail.com];
Search NeuronDB for information about:  Neocortex L2/3 pyramidal GLU cell; GabaA; AMPA; NMDA; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I K,Ca; Gaba; Glutamate;
//Record and save data

// Object declarations
objref PCv, Bv[total], Av[total], CBv[total], CAv[total], CPCv
objref vsoma, vapical[total], vbasal[total], ca_soma, ca_apical[total], ca_basal[total], save_tags_basal[5], save_tags_apical
strdef temp_save

proc rec_soma(){
	PCv=new Vector(n)
	soma PCv.record(&v(.5)) 
proc rec_dend () {
	for i=0, basal.count()-1 {
		Bv[i]=new Vector(n)
		basal.o(i).sec Bv[i].record(&v(.5))
	if (!ablated) {
		for i=0, apical.count()-1 {
			Av[i]=new Vector(n)
			apical.o(i).sec Av[i].record(&v(.5))
proc rec_calcium(){
	for i=0, basal.count()-1 {
		CBv[i]=new Vector(n)
		basal.o(i).sec CBv[i].record(&cai(.5)) 
	if (!ablated) {
		for i=0, apical.count()-1 {
			CAv[i]=new Vector(n)
			apical.o(i).sec CAv[i].record(&cai(.5))
	CPCv=new Vector(n)
	soma CPCv.record(&cai(.5)) 		

proc save_soma () {
	vsoma = new File()		
	sprint(temp_save,"%s/soma%d.dat", temp_dir,n_run+1)
	for j=0, PCv.size()-1 { vsoma.printf ("%f\n",PCv.x[j])}
proc save_tags() {
	save_tags_apical = new File()		
	sprint(temp_save,"%s/tag_apical%d.dat", temp_dir,n_run+1)
	for j=0, tags_apical_syns.size()-1 { save_tags_apical.printf ("%f\n",tags_apical_syns.x[j])}
	for pd=0, 4 { 
		save_tags_basal[pd] = new File()		
		sprint(temp_save,"%s/tag_basal%d_%d.dat", temp_dir, pd, n_run+1)
		save_tags_basal[pd].printf ("%f\n",tag_dend_vec.x[pd])
		for j=0, tags_basal_syns[pd].size()-1 {save_tags_basal[pd].printf ("%f\n",tags_basal_syns[pd].x[j])}
proc save_dend () {
	if (!ablated) {
		for i=0,num_apical-1 {
			vapical[i] = new File()		
			sprint(temp_save,"%s/apical%d_%d.dat", temp_dir,i, n_run+1)
			for j=0, Av.size()-1 {vapical[i].printf ("%f\n",Av.x[j])}
	for i=0,num_basal-1 {
		vbasal[i] = new File()		
		sprint(temp_save,"%s/basal%d.dat", temp_dir,i, n_run+1)
		for j=0, Bv.size()-1 {vbasal[i].printf ("%f\n",Bv.x[j])}

proc save_calcium() {
	ca_soma = new File()		
	sprint(temp_save,"%s/ca_soma%d.dat", temp_dir, n_run+1)
	for j=0, CPCv.size()-1 {ca_soma.printf ("%f\n",CPCv.x[j])}
	if (!ablated) {
		for i=0,apical.count()-1 {
			ca_apical[i] = new File()		
			sprint(temp_save,"%s/ca_apical%d_%d.dat", temp_dir,i, n_run+1)
			for j=0, CAv.size()-1 {ca_apical[i].printf ("%f\n",CAv.x[j])}
	for i=0,basal.count()-1 {
		ca_basal[i] = new File()		
		sprint(temp_save,"%s/ca_basal%d.dat", temp_dir,i, n_run+1)
		for j=0, CBv.size()-1 {ca_basal[i].printf ("%f\n",CBv.x[j])}