|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# -*- coding: utf-8 -*-
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
"""
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
Example plot for LFPy: Single-synapse contribution to the potential through head
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
Copyright (C) 2017 Computational Neuroscience Group, NMBU.
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
This program is free software: you can redistribute it and/or modify
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
it under the terms of the GNU General Public License as published by
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
the Free Software Foundation, either version 3 of the License, or
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
(at your option) any later version.
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
This program is distributed in the hope that it will be useful,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
GNU General Public License for more details.
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
"""
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
import LFPy
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
import numpy as np
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
import matplotlib.pyplot as plt
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
from os.path import join
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# four-sphere properties
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
radii = [79000., 80000., 85000., 90000.]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
radii_name = ["Brain", "CSF", "Skull", "Scalp"]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
sigmas = [0.3, 1.5, 0.015, 0.3]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
rad_tol = 1e-2
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
somapos = np.array([0., 0., 78750.])
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
xlim = [-1000, 1000]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ylim = [radii[0]-500, radii[1] + 500]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# cell with simplified morphology
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
cellParameters = {
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'morphology' : join("morphologies", 'example_morphology.hoc'),
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'tstart' : 0.,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'tstop' : 5.,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'dt' : 2**-4,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'v_init' : -65,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'cm' : 1.,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'Ra' : 150.,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'passive' : True,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'passive_parameters' : {'g_pas' : 1./3E4, 'e_pas' : -65.},
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'pt3d' : True,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
}
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
cell = LFPy.Cell(**cellParameters)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
synidx = cell.get_closest_idx(z=200)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
synapseParameters = {
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'idx' : synidx,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'e' : 0, # reversal potential
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'syntype' : 'Exp2Syn', # synapse type
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'tau1' : 0.1, # syn. rise time constant
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'tau2' : 1., # syn. decay time constant
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'weight' : 0.002, # syn. weight
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'record_current' : True # syn. current record
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
}
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
synapse = LFPy.Synapse(cell, **synapseParameters)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
synapse.set_spike_times(np.array([1.]))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
cell.set_pos(z=somapos[2])
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
cell.simulate(rec_imem=True, rec_vmem=True, rec_current_dipole_moment=True)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# Setting up recording positions
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
elec_z = np.array([radii[0],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
(radii[0] + radii[1]) / 2,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
radii[1],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
radii[1] + 500])
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
elec_x = np.zeros(elec_z.shape)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
elec_y = np.zeros(elec_x.shape)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
eeg_coords = np.array([elec_x.flatten(), elec_y.flatten(), elec_z.flatten()]).T
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
MD_4s = LFPy.FourSphereVolumeConductor(radii, sigmas, eeg_coords)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
phi = MD_4s.calc_potential_from_multi_dipoles(cell) * 1e6 # from mV to nV
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# Plotting results
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
plt.close('all')
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
fig = plt.figure(figsize=[8, 10])
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
fig.subplots_adjust(left=0.02, hspace=0.5, right=0.98, top=0.95)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax = fig.add_subplot(111, aspect=1, frameon=False, xlim=xlim, ylim=ylim,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
xticks=[], yticks=[])
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# Plotting cell
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
for sec in LFPy.cell.neuron.h.allsec():
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
idx = cell.get_idx(sec.name())
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
l_cell, = ax.plot(np.r_[cell.xstart[idx], cell.xend[idx][-1]],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
np.r_[cell.zstart[idx], cell.zend[idx][-1]],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
color='r', zorder=3, lw=np.sqrt(np.average(cell.diam[idx])))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
l_syn, = ax.plot(cell.xmid[synapseParameters['idx']],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
cell.zmid[synapseParameters['idx']],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'*', c='orange', zorder=5)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# Plotting the layers of the head model
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
max_angle = np.abs(np.rad2deg(np.arcsin(xlim[0] / ylim[0])))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
plot_angle = np.linspace(-max_angle, max_angle, 100)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
for b_idx in range(len(radii)):
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
x_ = radii[b_idx] * np.sin(np.deg2rad(plot_angle))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
z_ = radii[b_idx] * np.cos(np.deg2rad(plot_angle))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
l_curved, = ax.plot(x_, z_, ':', c="gray")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text(xlim[0], radii[0] - 70, "Brain", va="top", ha="left", color="k")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text(xlim[0], radii[0] + 70, "CSF", va="top", ha="left", color="k")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text(xlim[0], radii[1] + 70, "Skull", va="top", ha="left", color="k")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.plot([-700, -200], [radii[0]-300, radii[0]-300], 'k', lw=2)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text(-550, radii[0]-290, "500 $\mu$m")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
# Plotting the potential at different positions
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
y_norm = 200
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
x_norm = 500
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
elec_clr = lambda elec_idx: plt.cm.viridis(elec_idx / (len(elec_z) - 1))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
for elec_idx in range(len(elec_z)):
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
l_elec, = ax.plot(elec_x[elec_idx], elec_z[elec_idx],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
'o', c=elec_clr(elec_idx), clip_on=False)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
y_ = phi[elec_idx, :]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
norm_const = np.max(np.abs(y_))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
y_ = y_ * y_norm / norm_const + elec_z[elec_idx]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
x_ = cell.tvec / cell.tvec[-1] * x_norm + elec_x[elec_idx]
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.plot(x_, y_, c=elec_clr(elec_idx), clip_on=False)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.plot([x_[-1] + 200, x_[-1] + 200],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
[elec_z[elec_idx], elec_z[elec_idx] - y_norm], c='k')
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
scale_text = "{:2.1f} nV".format(norm_const)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text(x_[-1] + 250, elec_z[elec_idx] - y_norm / 2, scale_text)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.plot([x_[0], x_[-1]],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
[elec_z[1] - y_norm*1.1, elec_z[1] - y_norm*1.1],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
c='k', clip_on=False, lw=2)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.text((x_[0] + x_[-1])/2, elec_z[1] - y_norm * 1.2,
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
"{} ms".format(cell.tvec[-1]),
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
va="top", ha="center", clip_on=False)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax_inset = fig.add_axes([0.7, 0.05, 0.25, 0.15], title="Synaptic current",
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ylabel="nA", xlabel="Time (ms)")
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
l_isyn, = ax_inset.plot(cell.tvec, synapse.i, c='orange')
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ax.legend([l_cell, l_curved, l_syn, l_isyn, l_elec],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
["Cell", "Four-sphere boundary", "Synapse",
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
"Synaptic current", "Electrode"],
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
ncol=1, loc=(0.01, -0.1), frameon=False)
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
plt.savefig(join('example_potential_through_head.pdf'))
|
|
![](https://seccdn.libravatar.org/avatar/5bd1084ba3c410e1218065d166e726101cd2f8167f2ac85e81fd841d128703ef?s=16&d=retro) |
5d3830a |
plt.show()
|