Conduction block with kHz stimulation

In this example, we use NRV to replicate some results from the in-silico study from Bhadra et al. published in 2006. This is an example of propagation block with an mylinated axon (MRG model).

[1]:
import nrv
import matplotlib.pyplot as plt

########################
## PROBLEM DESCRITION ##
########################

# Axon def
y = 0                                                       # Axon y position, in [um]
z = 0                                                       # Axon z position, in [um]
d = 10                                                      # Axon diameter, in [um]
L = nrv.get_length_from_nodes(d,51)                         # get length to have exactly 51 nodes

dt = 0.001                                                  #time step in ms
t_sim = 25                                                  #simulation  duration
axon1 = nrv.myelinated(y,z,d,L,T=37,rec='nodes',dt=dt)      #Creation of an myelinated axon object

# first test pulse
t_start = 0.5                                               #test pulse start in ms
duration = 0.1                                              #test pulse duration in ms
amplitude = 10                                              #test pulse amplitude in nA
axon1.insert_I_Clamp(0, t_start, duration, amplitude)       #attach the test pulse to the axon

# Block electrode
x_elec = axon1.x_nodes[25]                                  #x-elect PSA is aligned with the 25th axon's NoR
y_elec = 1000                                               #axon-to-PSA distance is 1000um
z_elec = 0                                                  #z-elec position in um
E = nrv.point_source_electrode(x_elec,y_elec,z_elec)        #creation of a PSA object

#creation of a sinus stimulus object
stim = nrv.stimulus()
#stimulus Block
block_start=3                                               #KES block start in ms
block_amp=700                                               #KES block amplitude in uA
block_freq=20                                               #KES block frequency in kHz
block_duration=20                                           #KES duration
stim.sinus(block_start, block_duration, block_amp, block_freq,dt=dt)

### define nrv extra-cellular stimulation
epineurium = nrv.load_material('endoneurium_bhadra')        #set the epineurium conductivity
extra_stim = nrv.stimulation(epineurium)
extra_stim.add_electrode(E, stim)

axon1.attach_extracellular_stimulation(extra_stim) #the extracellular context is attached the axon

################
## SIMULATION ##
################
results = axon1.simulate(t_sim=t_sim, record_particles=True,record_I_ions=True)  #axon is simulated accordingly - results are saved as a dict

#####################
## POST PROCESSING ##
#####################

# filter the result to remove 10kHz artefacts
results.filter_freq('V_mem',block_freq)

color_1 = "#1B148A"
color_2 = "#C60A00"
color_3 = "#009913"
color_4 = "#E2AD00"

fig, axs = plt.subplots(3)
fig.set_size_inches(8.8, 5)
axs[0].plot(results['t'],results['V_mem'][25],label='Node 25',color = color_1,alpha = 0.7)
axs[0].plot(results['t'],results['V_mem'][23],label='Node 23',color = color_2)
axs[0].plot(results['t'],results['V_mem'][21],label='Node 21',color = color_3)
axs[0].set_ylabel('Vm (mV)')
axs[0].legend(loc='lower center',ncol = 3,frameon=False)
axs[0].set_xlim(0,25)
axs[0].set_ylim(-200,100)

axs[1].plot(results['t'],results['V_mem_filtered'][25],label='Node 25',color = color_1,alpha = 0.7)
axs[1].plot(results['t'],results['V_mem_filtered'][23],label='Node 23',color = color_2)
axs[1].plot(results['t'],results['V_mem_filtered'][21],label='Node 21',color = color_3)
axs[1].set_ylabel('Vm filtered(mV)')
axs[1].legend(loc='lower center',ncol = 3,frameon=False)
axs[1].set_xlim(0,25)
axs[1].set_ylim(-200,100)

axs[2].plot(results['t'],results['m'][25],label='m',color = color_1,alpha = 0.7)
axs[2].plot(results['t'],results['s'][25],label='s',color = color_2)
axs[2].plot(results['t'],results['h'][25],label='h',color = color_3)
axs[2].plot(results['t'],results['mp'][25],label='mp',color = color_4)
axs[2].set_xlabel('Time (ms)')
axs[2].set_ylabel('State \n (Node 25)')
axs[2].legend(loc='lower center',ncol = 4,frameon=False)
axs[2].set_xlim(0,25)
axs[2].set_ylim(0,1.1)

#plt.show()
../../_images/examples_generic_05_KES_conduction_block_1_0.png