#!/usr/bin/env python # -*- coding: utf-8 -*- ### This program plots a channel's state variables / hinf, htau etc. as a function of voltage. mechanism_names = [ 'Na_rat_ms','KDR_ms','KA_ms', # migliore and shepherd 'TCa_d','Ih_cb', # PG cell of Cleland and Sethupathy uses channels from various places 'Na_mit_usb','K2_mit_usb','K_mit_usb','LCa3_mit_usb','KA_bsg_yka'] #'Gran_CaHVA_98','cal'] # extra channels from neuroConstruct examples mechanism_vars = [ ['minf','mtau','hinf','htau'], ['minf','mtau'], ['minf','mtau','hinf','htau'], ['minf','mtau','hinf','htau'], ['linf','ltau'], ['minf','mtau','hinf','htau'], ['ninf','ntau','kinf','ktau'], ['ninf','ntau','kinf','ktau'], ['sinf','stau','rinf','rtau'], ['pinf','ptau','qinf','qtau'] #['minf','mtau','hinf','htau'], #['minf','mtau'] ] # index of the mechanism to test in above arrays. test_mechanism_index = 8 import sys import math # The PYTHONPATH should contain the location of moose.py and _moose.so # files. Putting ".." with the assumption that moose.py and _moose.so # has been generated in ${MOOSE_SOURCE_DIRECTORY}/pymoose/ (as default # pymoose build does) and this file is located in # ${MOOSE_SOURCE_DIRECTORY}/pymoose/examples try: import moose except ImportError: print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH" import sys sys.exit(1) sys.path.append('..') from mooseConstants import * from load_channels import * from pylab import * if __name__ == "__main__": load_channels() idx = test_mechanism_index for varidx in range(len(mechanism_vars[idx])/2): # loop over each inf and tau i.e. two elements of mechanism_vars[idx] at a time var = ['x','y','z'][varidx] gate = moose.HHGate('/library/'+mechanism_names[idx]+'/'+var+'Gate') VMIN = gate.A.xmin VMAX = gate.A.xmax NDIVS = gate.A.xdivs # will use same VMIN, VMAX and NDIVS for A and B tables. dv = (VMAX-VMIN)/NDIVS vrange = [VMIN+i*dv for i in range(NDIVS+1)] figure() plot(vrange,[gate.A[i]/gate.B[i] for i in range(NDIVS+1)],'b-,') # Assume A and B have corresponding number of entries title('state variable '+mechanism_vars[idx][2*varidx]+' of '+mechanism_names[idx]+' vs Voltage (V)') figure() plot(vrange,[1.0/gate.B[i] for i in range(NDIVS+1)],'b-,') title('state variable '+mechanism_vars[idx][2*varidx+1]+' of '+mechanism_names[idx]+' vs Voltage (V)') show()