def run_test(self, cell): # run I/V test on cell V0 = cell.find_i0(showinfo=True) rmrintau = cell.compute_rmrintau(auto_initialize=False, vrange=None) iv = IVCurve() self.iv = iv iv.run(cell.i_test_range, cell) if self.audit: iv.show(cell) info = dict( temp=iv.temp, icmd=iv.current_cmd, spikes=iv.spike_times(), rmp=iv.rest_vm(), rm_taum=iv.input_resistance_tau(), vpeak=iv.peak_vm(), vss=iv.steady_vm(), rmrintau=rmrintau, ) return info
class Tests(): """ Class to select cells for tests """ def __init__(self): pass def selectCell(self, args): """ Parameters ---------- args : argparse args from command line Returns ------- cell Instantiated cell of the selected celltype """ h.celsius = float(args.temp) # # Spiral Ganglion cell tests # if args.celltype == 'sgc': # morphology is always "point" for SGCs cell = cells.SGC.create(debug=debugFlag, species=args.species, nach=args.nav, ttx=args.ttx, modelType=args.type) # # Bushy tests # elif args.celltype == 'bushy' and args.morphology == 'point': cell = cells.Bushy.create(model='RM03', species=args.species, modelType=args.type, ttx=args.ttx, nach=args.nav, debug=debugFlag) # cell.soma().klt.gbar = 0.0003 elif args.celltype == 'bushy' and args.morphology == 'waxon': cell = cells.Bushy.create(model='RM03', species=args.species, modelType=args.type, nach=args.nav, ttx=args.ttx, debug=debugFlag) cell.add_axon() elif args.celltype == 'bushy' and args.morphology == 'stick': cell = cells.Bushy.create( model='RM03', species=args.species, modelType=args.type, morphology='cnmodel/morphology/bushy_stick.hoc', decorator=True, nach=args.nav, ttx=args.ttx, debug=debugFlag) h.topology() elif args.celltype == 'bushycoop' and args.morphology == 'point': cell = cells.Bushy.create(model='RM03', species=args.species, modelType=args.type, ttx=args.ttx, nach=args.nav, debug=debugFlag) # # T-stellate tests # elif args.celltype == 'tstellate' and args.morphology == 'point': cell = cells.TStellate.create(model='RM03', species=args.species, modelType=args.type, nach=args.nav, ttx=args.ttx, debug=debugFlag) elif args.celltype == 'tstellate' and args.morphology == 'stick': cell = cells.TStellate.create( model='RM03', species=args.species, modelType=args.type, nach=args.nav, ttx=args.ttx, debug=debugFlag, morphology='cnmodel/morphology/tstellate_stick.hoc', decorator=True) elif args.celltype == 'tstellatenav11' and args.morphology == 'point': # note this uses a different model... print 'test_cells: Stellate NAV11' cell = cells.TStellateNav11.create(model='Nav11', species=args.species, modelType=None, ttx=args.ttx, debug=debugFlag) elif args.celltype == 'tstellatenav11' and args.morphology == 'stick': # note this uses a different model... cell = cells.TStellateNav11.create( model='Nav11', species=args.species, modelType=None, morphology='cnmodel/morphology/tstellate_stick.hoc', decorator=True, ttx=args.ttx, debug=debugFlag, ) h.topology() # # Octopus cell tests # elif args.celltype == 'octopus' and args.morphology == 'point': cell = cells.Octopus.create( species=args.species, modelType='RM03', # args.type, nach=args.nav, ttx=args.ttx, debug=debugFlag) elif args.celltype == 'octopus' and args.morphology == 'stick': # Go to spencer et al. model cell = cells.Octopus.create( modelType='Spencer', species=args.species, morphology='cnmodel/morphology/octopus_spencer_stick.hoc', decorator=True, nach=args.nav, ttx=args.ttx, debug=debugFlag) h.topology() # # D-stellate tests # elif args.celltype == 'dstellate': cell = cells.DStellate.create(debug=debugFlag, species=args.species, ttx=args.ttx, modelType=args.type) elif args.celltype == 'dstellateeager': cell = cells.DStellateEager.create(debug=debugFlag, ttx=args.ttx, modelType=args.type) # # DCN pyramidal cell tests # elif args.celltype == 'pyramidal': cell = cells.Pyramidal.create(modelType=args.type, ttx=args.ttx, debug=debugFlag) # # DCN tuberculoventral cell tests # elif args.celltype == 'tuberculoventral' and args.morphology == 'point': cell = cells.Tuberculoventral.create(species='mouse', modelType='TVmouse', ttx=args.ttx, nach=args.nav, debug=debugFlag) elif args.celltype == 'tuberculoventral' and args.morphology == 'stick': cell = cells.Tuberculoventral.create( species='mouse', modelType='TVmouse', morphology='cnmodel/morphology/tv_stick.hoc', decorator=True, ttx=args.ttx, debug=debugFlag) h.topology() # # DCN cartwheel cell tests # elif args.celltype == 'cartwheel': cell = cells.Cartwheel.create(modelType=args.type, ttx=args.ttx, debug=debugFlag) # # MSO principal neuron tests # elif args.celltype == 'mso' and args.morphology == 'point': cell = cells.MSO.create(model='RM03', species=args.species, modelType=args.type, ttx=args.ttx, nach=args.nav, debug=debugFlag) else: raise ValueError( "Cell Type %s and configurations nav=%s or config=%s are not available" % (args.celltype, args.nav, args.morphology)) print(cell.__doc__) self.cell = cell def run_test(self, args): """ Run either vc or cc test, and plot the result Parameters ---------- args : argparse args from command line """ self.cell.set_temperature(float(args.temp)) print self.cell.status V0 = self.cell.find_i0(showinfo=True) # self.cell.cell_initialize() print 'Currents at nominal Vrest= %.2f I = 0: I = %g ' % ( V0, self.cell.i_currents(V=V0)) self.cell.print_mechs(self.cell.soma) instant = self.cell.compute_rmrintau(auto_initialize=False, vrange=None) print( ' From Inst: Rin = {:7.1f} Tau = {:7.1f} Vm = {:7.1f}'.format( instant['Rin'], instant['tau'], instant['v'])) if args.cc is True: # define the current clamp electrode and default settings self.iv = IVCurve() self.iv.run(ccivrange[args.species][args.celltype], self.cell, durs=default_durs, sites=sites, reppulse=ptype, temp=float(args.temp)) ret = self.iv.input_resistance_tau() print(' From IV: Rin = {:7.1f} Tau = {:7.1f} Vm = {:7.1f}'. format(ret['slope'], ret['tau'], ret['intercept'])) self.iv.show(cell=self.cell) elif args.rmp is True: print 'temperature: ', self.cell.status['temperature'] self.iv = IVCurve() self.iv.run({'pulse': (0, 0, 1)}, self.cell, durs=default_durs, sites=sites, reppulse=ptype, temp=float(args.temp)) self.iv.show(cell=self.cell, rmponly=True) elif args.vc is True: # define the voltage clamp electrode and default settings self.vc = VCCurve() self.vc.run((-120, 40, 5), self.cell) self.vc.show(cell=self.cell) else: raise ValueError( "Nothing to run. Specify one of --cc, --vc, --rmp.")