Reconstructed neuron (cerebellar, hippocampal, striatal) sims using predicted diameters (Reed et al)

 Download zip file 
Help downloading and running models
Accession:267048
Many neuron morphologies in NeuroMorpho.org do not contain accurate dendritic diameters that are needed for simulations. We used a set of archives which did have realistic morphologies to derive equations predicting dendritic diameter, and to create morphologies using the predictions. The equations and new morphologies are derived by 1. extracting morphology features from swc files (morph_feature_extract.py) 2. using multiple regression to derive equations predicting diameter, (morph_feature_extract.py ) 3. using the equations to create the new morphology files from original swc file (shape_shifter.py). The python programs are all available from github.com/neurord/ShapeShifter We simulated the original morphologies and the morphologies with predicted diameter in Moose, evaluating the response to current injection and synaptic input. The code provided implements those simulations
Reference:
1 . Reed JD, Blackwell KT (2021) Prediction of Neural Diameter From Morphology to Enable Accurate Simulation. Front Neuroinform 15:666695 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Cerebellum Purkinje GABA cell; Striatal projection neuron;
Channel(s):
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s):
Simulation Environment: MOOSE/PyMOOSE;
Model Concept(s):
Implementer(s): Blackwell, Avrama [avrama at gmu.edu]; Reed, Jonathon;
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Cerebellum Purkinje GABA cell; AMPA;
#   module add python/2.7.15
#   module add moose
#   python
#>>> execfile('nameoffile.py')

import moose
import numpy as np
from numpy import linspace
from pprint import pprint
import moose_my_func as f
import moose_startparams as p
import sys


#filename, sim_duration, sim amplitute, simtime, optionally compartment name for synaptic stimulation
args = sys.argv[1:]
fname = args[0]
delay = float(args[1])
dur = float(args[2])
amp = float(args[3])
stime = float(args[4])
if fname.startswith('WT-P270'):
    print('Using Lindroos parameters')
    pas=p.params['Lindroos']
else:
    pas=p.params['default']
if len(args)>5:
    syncompname=args[5]
    stim='syn'
    amp=0
    outfname=fname+syncompname+'_RM'+str(round(pas['RM']))+'.txt'
    if len(args)>6:
        p.synparams['gbar']=float(args[6]) #overwrite default value
else:
    outfname=fname + str(dur)+'_RM'+str(round(pas['RM'])) + '.txt'
    stim='inject'
cname = 'cell'
cell = moose.loadModel(fname + '.p',cname)
comps = []
for comp in moose.wildcardFind('%s/#[TYPE=Compartment]'%(cell.name)):
    comps.append(f.adjust_comp(comp, pas['RM'], pas['CM'], pas['RA']))
    #comps.append(f.adjust_comp(comp, RM, CM, RA))
somaname = comps[0].path
injectcomp = moose.element(somaname)
soma = moose.element(somaname)

if stim=='syn':
    syncomp=moose.element(cell.path+'/'+syncompname)
    synproto=f.make_synchan(p.synparams)
    synchan,sh=f.add_synchan(p.synparams['channame'],syncomp.path,p.synparams['gbar'])
    spiketime=[delay]
    stimtab=f.create_tt(spiketime)
    f.connect_synchan(sh,stimtab)
if stim=='inject':
    soma_pulse = f.create_pulse('somapulse', soma, delay, dur, amp, p.delay1) #setup for current injection
    currenttab, vmtabs = f.output([soma],10*p.simdt,soma_pulse) #<--- plot/out dt
   
else:
    currenttab, vmtabs = f.output([soma,syncomp],10*p.simdt) #<--- plot/out dt
print('CURRENTTAB: ', currenttab,'VMTABS: ', vmtabs,' simdt (before hsolve)', soma.dt)

#################### set up hsolve
hsolve=moose.HSolve(cell.path+'/hsolve')
hsolve.dt=p.simdt
hsolve.target=somaname
print('after hsolve, simdt=', hsolve.dt)
moose.reinit()
moose.start(stime)
'''
import matplotlib.pyplot as plt
from matplotlib.ticker import StrMethodFormatter
plt.ion()
for vmtab in vmtabs:
    plt.plot(vmtab.vector*1000,label=vmtab.name)
plt.legend()
plt.gca().yaxis.set_major_formatter(StrMethodFormatter('{x:,.2f}'))
'''
header = 'time somaVm   '
if stim=='syn':
    header=header+syncompname+'Vm'
f.outfile(outfname, stime, header, vmtabs) 

'''
if swcfile: 
    cell = moose.loadModel(swcfile,cellname)
    #print('cell = ', cell, 'cellname = ', cellname, 'cell.name = ', cell.name)
    for comp in moose.wildcardFind('/' + cell.name + '/#[TYPE=Compartment]'):
        comp = f.adjust_comp(comp, pas['RM'], pas['CM'], pas['RA'])
    #for here soma from swcfile has to be changed
    somaname = cellname + '/soma[0]'  #this is the same path for either morphology file or create neuron

'''

Loading data, please wait...