LFP estimation with dynamic remeshing#

Plot LFP from toy neurons

import xcell as xc
from neuron import h  # , gui
from neuron.units import ms, mV
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from tqdm import trange

# from ..Common_nongallery import Ring, makeSynthStudy

import Common_nongallery
import time

from xcell import nrnutil as nUtil

resultFolder = 'LFP'


h.load_file('stdrun.hoc')
h.CVode().use_fast_imem(1)

mpl.style.use('fast')

nRing = 5
nSegs = 5

dmax = 8
dmin = 3

nskip = 4
ring = Common_nongallery.Ring(N=nRing, stim_delay=0, dendSegs=nSegs, r=175)
tstop = 40
tPerFrame = 5
barRatio = [9, 1]

coords, rads, is_sphere = nUtil.get_neuron_geometry()
ivecs = nUtil.get_membrane_currents()


t = h.Vector().record(h._ref_t)
h.finitialize(-65 * mV)
h.continuerun(tstop)

tv = np.array(t)*1e-3
I = 1e-9*np.array(ivecs).transpose()


I = I[::nskip]
tv = tv[::nskip]


analyticVmax = I/(4*np.pi*np.array(rads, ndmin=2))
vPeak = np.max(np.abs(analyticVmax))

imax = np.max(np.abs(I[::nskip]))


coord = np.array(coords)
xmax = 2*np.max(np.concatenate(
    (np.max(coord, axis=0), np.min(coord, axis=0))
))

# round up
xmax = xc.util.round_to_digit(xmax)
if xmax <= 0 or np.isnan(xmax):
    xmax = 1e-4


lastNumEl = 0
lastI = 0

study, setup = Common_nongallery.makeSynthStudy(resultFolder, xmax=xmax)
setup.current_sources = []
study_path = study.study_path

dspan = dmax-dmin


tdata = None

img = xc.visualizers.SingleSlice(None, study,
                                    tv, tdata=tdata)

for r, c, i in zip(rads, coord, I.transpose()):
    geo = xc.geometry.Sphere(center=c, radius = r)
    signal=xc.signals.PiecewiseSignal(tv, i )
    setup.add_current_source(signal, geometry = geo)

tmax = tv.shape[0]
errdicts = []

stepper = trange(0,tmax,postfix="")

for ii in stepper:

    t0 = time.monotonic()
    ivals = I[ii]
    tval = tv[ii]
    vScale = np.abs(analyticVmax[ii])/vPeak

    setup.current_time = tval

    changed = False

    # for jj in range(len(setup.current_sources)):
    #     ival = ivals[jj]
    #     setup.current_sources[jj].value = ival

    # Depth strategy
    scale = dmin+dspan*vScale
    dint = np.rint(scale)
    max_depth = np.floor(scale).astype(int)

    density = 0.2

    metricCoef = 2**(-density*scale)

    netScale = 2**(-max_depth*density)

    changed = setup.make_adaptive_grid(
        coord, max_depth, xc.general_metric, coefs=metricCoef)

    if changed or ii == 0:
        setup.meshnum += 1
        setup.finalize_mesh()

        n_elements = len(setup.mesh.elements)

        setup.set_boundary_nodes()

        v = setup.solve()
        lastNumEl = n_elements
        setup.iteration += 1

        study.save_simulation(setup)
        # stepper.set_postfix_str('%d source nodes' % sum(setup.node_role_table == 2))
        # stepper.set_postfix_str('%d elements'%n_elements)

        # stepper.set_postfix_str('(%.2g, %.2g)'%(v.min(), v.max()))
    else:
    #     # TODO: why is reset needed?
    #     setup.node_role_table[setup.node_role_table == 2] = 0
        v = setup.solve()

    dt = time.monotonic()-t0

    study.log_current_simulation(['Timestep', 'Meshnum'], [
                      setup.current_time, setup.meshnum])

    setup.step_logs = []


    img.add_simulation_data(setup, append=True)

nUtil.show_cell_geo(img.axes[0])

ani = img.animate_study('', fps=30)
  0%|          | 0/401 [00:00<?, ?it/s]
  0%|          | 1/401 [00:00<01:50,  3.61it/s]
  0%|          | 2/401 [00:00<01:44,  3.81it/s]
  1%|          | 3/401 [00:00<01:43,  3.86it/s]
  1%|          | 4/401 [00:01<01:42,  3.87it/s]
  1%|          | 5/401 [00:01<01:42,  3.87it/s]
  1%|▏         | 6/401 [00:01<01:40,  3.93it/s]
  2%|▏         | 7/401 [00:01<01:39,  3.96it/s]
  2%|▏         | 8/401 [00:02<01:37,  4.02it/s]
  2%|▏         | 9/401 [00:02<01:35,  4.09it/s]
  2%|▏         | 10/401 [00:02<01:35,  4.10it/s]
  3%|▎         | 11/401 [00:02<01:34,  4.11it/s]
  3%|▎         | 12/401 [00:02<01:34,  4.12it/s]
  3%|▎         | 13/401 [00:03<01:34,  4.12it/s]
  3%|▎         | 14/401 [00:03<01:33,  4.13it/s]
  4%|▎         | 15/401 [00:03<01:33,  4.12it/s]
  4%|▍         | 16/401 [00:03<01:33,  4.13it/s]
  4%|▍         | 17/401 [00:04<01:31,  4.17it/s]
  4%|▍         | 18/401 [00:04<01:31,  4.17it/s]
  5%|▍         | 19/401 [00:04<01:30,  4.20it/s]
  5%|▍         | 20/401 [00:04<01:30,  4.20it/s]
  5%|▌         | 21/401 [00:05<01:31,  4.17it/s]
  5%|▌         | 22/401 [00:05<01:31,  4.15it/s]
  6%|▌         | 23/401 [00:05<01:31,  4.15it/s]
  6%|▌         | 24/401 [00:05<01:30,  4.17it/s]
  6%|▌         | 25/401 [00:06<01:30,  4.17it/s]
  6%|▋         | 26/401 [00:06<01:28,  4.24it/s]
  7%|▋         | 27/401 [00:06<01:29,  4.19it/s]
  7%|▋         | 28/401 [00:06<01:29,  4.16it/s]
  7%|▋         | 29/401 [00:07<01:30,  4.12it/s]
  7%|▋         | 30/401 [00:07<01:29,  4.14it/s]
  8%|▊         | 31/401 [00:07<01:29,  4.15it/s]
  8%|▊         | 32/401 [00:07<01:29,  4.14it/s]
  8%|▊         | 33/401 [00:08<01:28,  4.17it/s]
  8%|▊         | 34/401 [00:08<01:28,  4.17it/s]
  9%|▊         | 35/401 [00:08<01:27,  4.16it/s]
  9%|▉         | 36/401 [00:08<01:27,  4.17it/s]
  9%|▉         | 37/401 [00:08<01:26,  4.19it/s]
  9%|▉         | 38/401 [00:09<01:26,  4.18it/s]
 10%|▉         | 39/401 [00:09<01:26,  4.18it/s]
 10%|▉         | 40/401 [00:09<01:26,  4.17it/s]
 10%|█         | 41/401 [00:09<01:26,  4.15it/s]
 10%|█         | 42/401 [00:11<04:23,  1.36it/s]
 11%|█         | 43/401 [00:13<05:57,  1.00it/s]
 11%|█         | 44/401 [00:14<06:29,  1.09s/it]
 11%|█         | 45/401 [00:16<06:44,  1.14s/it]
 11%|█▏        | 46/401 [00:17<06:46,  1.14s/it]
 12%|█▏        | 47/401 [00:18<06:30,  1.10s/it]
 12%|█▏        | 48/401 [00:19<06:19,  1.07s/it]
 12%|█▏        | 49/401 [00:20<06:07,  1.04s/it]
 12%|█▏        | 50/401 [00:21<05:56,  1.02s/it]
 13%|█▎        | 51/401 [00:22<05:47,  1.01it/s]
 13%|█▎        | 52/401 [00:22<05:31,  1.05it/s]
 13%|█▎        | 53/401 [00:23<04:58,  1.16it/s]
 13%|█▎        | 54/401 [00:24<04:34,  1.26it/s]
 14%|█▎        | 55/401 [00:24<04:12,  1.37it/s]
 14%|█▍        | 56/401 [00:25<03:53,  1.48it/s]
 14%|█▍        | 57/401 [00:25<03:32,  1.62it/s]
 14%|█▍        | 58/401 [00:26<03:18,  1.73it/s]
 15%|█▍        | 59/401 [00:26<03:08,  1.82it/s]
 15%|█▍        | 60/401 [00:27<03:00,  1.89it/s]
 15%|█▌        | 61/401 [00:27<02:55,  1.94it/s]
 15%|█▌        | 62/401 [00:28<02:51,  1.98it/s]
 16%|█▌        | 63/401 [00:28<02:49,  2.00it/s]
 16%|█▌        | 64/401 [00:29<02:46,  2.02it/s]
 16%|█▌        | 65/401 [00:29<02:44,  2.04it/s]
 16%|█▋        | 66/401 [00:30<02:43,  2.05it/s]
 17%|█▋        | 67/401 [00:30<02:41,  2.06it/s]
 17%|█▋        | 68/401 [00:31<02:40,  2.07it/s]
 17%|█▋        | 69/401 [00:31<02:40,  2.07it/s]
 17%|█▋        | 70/401 [00:32<02:39,  2.08it/s]
 18%|█▊        | 71/401 [00:32<02:38,  2.09it/s]
 18%|█▊        | 72/401 [00:33<02:37,  2.08it/s]
 18%|█▊        | 73/401 [00:33<02:37,  2.08it/s]
 18%|█▊        | 74/401 [00:33<02:37,  2.07it/s]
 19%|█▊        | 75/401 [00:34<02:37,  2.07it/s]
 19%|█▉        | 76/401 [00:34<02:36,  2.07it/s]
 19%|█▉        | 77/401 [00:35<02:32,  2.13it/s]
 19%|█▉        | 78/401 [00:35<02:30,  2.15it/s]
 20%|█▉        | 79/401 [00:36<02:29,  2.15it/s]
 20%|█▉        | 80/401 [00:36<02:27,  2.17it/s]
 20%|██        | 81/401 [00:37<02:26,  2.18it/s]
 20%|██        | 82/401 [00:37<02:25,  2.19it/s]
 21%|██        | 83/401 [00:38<02:23,  2.21it/s]
 21%|██        | 84/401 [00:38<02:22,  2.22it/s]
 21%|██        | 85/401 [00:39<02:21,  2.23it/s]
 21%|██▏       | 86/401 [00:39<02:21,  2.23it/s]
 22%|██▏       | 87/401 [00:39<02:21,  2.23it/s]
 22%|██▏       | 88/401 [00:40<02:19,  2.24it/s]
 22%|██▏       | 89/401 [00:40<02:19,  2.24it/s]
 22%|██▏       | 90/401 [00:41<02:18,  2.24it/s]
 23%|██▎       | 91/401 [00:41<02:18,  2.25it/s]
 23%|██▎       | 92/401 [00:42<02:17,  2.25it/s]
 23%|██▎       | 93/401 [00:42<02:17,  2.25it/s]
 23%|██▎       | 94/401 [00:43<02:16,  2.25it/s]
 24%|██▎       | 95/401 [00:43<02:16,  2.24it/s]
 24%|██▍       | 96/401 [00:43<02:15,  2.25it/s]
 24%|██▍       | 97/401 [00:44<02:14,  2.26it/s]
 24%|██▍       | 98/401 [00:44<02:14,  2.25it/s]
 25%|██▍       | 99/401 [00:45<02:13,  2.27it/s]
 25%|██▍       | 100/401 [00:45<02:12,  2.28it/s]
 25%|██▌       | 101/401 [00:46<02:12,  2.26it/s]
 25%|██▌       | 102/401 [00:46<02:11,  2.27it/s]
 26%|██▌       | 103/401 [00:46<02:11,  2.26it/s]
 26%|██▌       | 104/401 [00:47<02:33,  1.94it/s]
 26%|██▌       | 105/401 [00:48<03:01,  1.63it/s]
 26%|██▋       | 106/401 [00:49<03:14,  1.51it/s]
 27%|██▋       | 107/401 [00:50<03:23,  1.44it/s]
 27%|██▋       | 108/401 [00:50<03:27,  1.41it/s]
 27%|██▋       | 109/401 [00:51<03:29,  1.39it/s]
 27%|██▋       | 110/401 [00:52<03:30,  1.38it/s]
 28%|██▊       | 111/401 [00:52<03:21,  1.44it/s]
 28%|██▊       | 112/401 [00:53<03:13,  1.49it/s]
 28%|██▊       | 113/401 [00:54<03:08,  1.53it/s]
 28%|██▊       | 114/401 [00:54<03:03,  1.56it/s]
 29%|██▊       | 115/401 [00:55<03:00,  1.58it/s]
 29%|██▉       | 116/401 [00:55<02:58,  1.60it/s]
 29%|██▉       | 117/401 [00:56<02:54,  1.62it/s]
 29%|██▉       | 118/401 [00:57<02:53,  1.63it/s]
 30%|██▉       | 119/401 [00:57<02:57,  1.59it/s]
 30%|██▉       | 120/401 [00:58<03:00,  1.55it/s]
 30%|███       | 121/401 [00:59<02:57,  1.58it/s]
 30%|███       | 122/401 [00:59<02:51,  1.62it/s]
 31%|███       | 123/401 [01:00<02:41,  1.73it/s]
 31%|███       | 124/401 [01:00<02:34,  1.79it/s]
 31%|███       | 125/401 [01:01<02:28,  1.86it/s]
 31%|███▏      | 126/401 [01:01<02:24,  1.91it/s]
 32%|███▏      | 127/401 [01:02<02:21,  1.93it/s]
 32%|███▏      | 128/401 [01:02<02:19,  1.96it/s]
 32%|███▏      | 129/401 [01:03<02:17,  1.98it/s]
 32%|███▏      | 130/401 [01:03<02:16,  1.99it/s]
 33%|███▎      | 131/401 [01:04<02:15,  2.00it/s]
 33%|███▎      | 132/401 [01:04<02:13,  2.01it/s]
 33%|███▎      | 133/401 [01:05<02:13,  2.01it/s]
 33%|███▎      | 134/401 [01:05<02:13,  2.00it/s]
 34%|███▎      | 135/401 [01:06<02:12,  2.01it/s]
 34%|███▍      | 136/401 [01:06<02:11,  2.02it/s]
 34%|███▍      | 137/401 [01:07<02:10,  2.02it/s]
 34%|███▍      | 138/401 [01:07<02:10,  2.02it/s]
 35%|███▍      | 139/401 [01:08<02:10,  2.01it/s]
 35%|███▍      | 140/401 [01:08<02:09,  2.02it/s]
 35%|███▌      | 141/401 [01:09<02:09,  2.01it/s]
 35%|███▌      | 142/401 [01:09<02:08,  2.01it/s]
 36%|███▌      | 143/401 [01:10<02:08,  2.01it/s]
 36%|███▌      | 144/401 [01:10<02:08,  2.01it/s]
 36%|███▌      | 145/401 [01:11<02:07,  2.01it/s]
 36%|███▋      | 146/401 [01:11<02:06,  2.02it/s]
 37%|███▋      | 147/401 [01:12<02:05,  2.03it/s]
 37%|███▋      | 148/401 [01:12<02:05,  2.01it/s]
 37%|███▋      | 149/401 [01:13<02:05,  2.01it/s]
 37%|███▋      | 150/401 [01:13<02:05,  2.00it/s]
 38%|███▊      | 151/401 [01:14<02:05,  1.99it/s]
 38%|███▊      | 152/401 [01:14<02:04,  2.00it/s]
 38%|███▊      | 153/401 [01:15<02:03,  2.00it/s]
 38%|███▊      | 154/401 [01:15<02:02,  2.01it/s]
 39%|███▊      | 155/401 [01:16<02:02,  2.01it/s]
 39%|███▉      | 156/401 [01:16<02:01,  2.02it/s]
 39%|███▉      | 157/401 [01:17<02:01,  2.01it/s]
 39%|███▉      | 158/401 [01:17<02:00,  2.02it/s]
 40%|███▉      | 159/401 [01:18<01:59,  2.02it/s]
 40%|███▉      | 160/401 [01:18<01:59,  2.01it/s]
 40%|████      | 161/401 [01:19<01:59,  2.01it/s]
 40%|████      | 162/401 [01:19<01:58,  2.01it/s]
 41%|████      | 163/401 [01:20<01:58,  2.01it/s]
 41%|████      | 164/401 [01:20<01:57,  2.02it/s]
 41%|████      | 165/401 [01:21<01:56,  2.02it/s]
 41%|████▏     | 166/401 [01:21<01:56,  2.02it/s]
 42%|████▏     | 167/401 [01:22<01:56,  2.01it/s]
 42%|████▏     | 168/401 [01:22<01:55,  2.02it/s]
 42%|████▏     | 169/401 [01:23<01:54,  2.02it/s]
 42%|████▏     | 170/401 [01:23<02:07,  1.82it/s]
 43%|████▎     | 171/401 [01:24<02:29,  1.54it/s]
 43%|████▎     | 172/401 [01:25<02:37,  1.45it/s]
 43%|████▎     | 173/401 [01:26<02:42,  1.40it/s]
 43%|████▎     | 174/401 [01:26<02:46,  1.36it/s]
 44%|████▎     | 175/401 [01:27<02:48,  1.34it/s]
 44%|████▍     | 176/401 [01:28<02:49,  1.33it/s]
 44%|████▍     | 177/401 [01:29<02:43,  1.37it/s]
 44%|████▍     | 178/401 [01:29<02:36,  1.42it/s]
 45%|████▍     | 179/401 [01:30<02:31,  1.47it/s]
 45%|████▍     | 180/401 [01:31<02:27,  1.50it/s]
 45%|████▌     | 181/401 [01:31<02:24,  1.53it/s]
 45%|████▌     | 182/401 [01:32<02:21,  1.54it/s]
 46%|████▌     | 183/401 [01:32<02:19,  1.56it/s]
 46%|████▌     | 184/401 [01:33<02:16,  1.59it/s]
 46%|████▌     | 185/401 [01:34<02:20,  1.54it/s]
 46%|████▋     | 186/401 [01:34<02:22,  1.51it/s]
 47%|████▋     | 187/401 [01:35<02:18,  1.54it/s]
 47%|████▋     | 188/401 [01:36<02:15,  1.58it/s]
 47%|████▋     | 189/401 [01:36<02:08,  1.66it/s]
 47%|████▋     | 190/401 [01:37<02:02,  1.72it/s]
 48%|████▊     | 191/401 [01:37<01:58,  1.78it/s]
 48%|████▊     | 192/401 [01:38<01:55,  1.81it/s]
 48%|████▊     | 193/401 [01:38<01:53,  1.84it/s]
 48%|████▊     | 194/401 [01:39<01:50,  1.87it/s]
 49%|████▊     | 195/401 [01:39<01:49,  1.88it/s]
 49%|████▉     | 196/401 [01:40<01:47,  1.90it/s]
 49%|████▉     | 197/401 [01:40<01:46,  1.91it/s]
 49%|████▉     | 198/401 [01:41<01:46,  1.91it/s]
 50%|████▉     | 199/401 [01:41<01:45,  1.92it/s]
 50%|████▉     | 200/401 [01:42<01:44,  1.92it/s]
 50%|█████     | 201/401 [01:42<01:44,  1.92it/s]
 50%|█████     | 202/401 [01:43<01:43,  1.93it/s]
 51%|█████     | 203/401 [01:43<01:42,  1.92it/s]
 51%|█████     | 204/401 [01:44<01:41,  1.93it/s]
 51%|█████     | 205/401 [01:44<01:41,  1.92it/s]
 51%|█████▏    | 206/401 [01:45<01:41,  1.92it/s]
 52%|█████▏    | 207/401 [01:46<01:40,  1.93it/s]
 52%|█████▏    | 208/401 [01:46<01:39,  1.93it/s]
 52%|█████▏    | 209/401 [01:47<01:39,  1.92it/s]
 52%|█████▏    | 210/401 [01:47<01:39,  1.93it/s]
 53%|█████▎    | 211/401 [01:48<01:38,  1.92it/s]
 53%|█████▎    | 212/401 [01:48<01:38,  1.93it/s]
 53%|█████▎    | 213/401 [01:49<01:37,  1.93it/s]
 53%|█████▎    | 214/401 [01:49<01:36,  1.93it/s]
 54%|█████▎    | 215/401 [01:50<01:36,  1.93it/s]
 54%|█████▍    | 216/401 [01:50<01:35,  1.93it/s]
 54%|█████▍    | 217/401 [01:51<01:35,  1.93it/s]
 54%|█████▍    | 218/401 [01:51<01:35,  1.92it/s]
 55%|█████▍    | 219/401 [01:52<01:34,  1.92it/s]
 55%|█████▍    | 220/401 [01:52<01:34,  1.91it/s]
 55%|█████▌    | 221/401 [01:53<01:33,  1.92it/s]
 55%|█████▌    | 222/401 [01:53<01:33,  1.91it/s]
 56%|█████▌    | 223/401 [01:54<01:32,  1.92it/s]
 56%|█████▌    | 224/401 [01:54<01:32,  1.92it/s]
 56%|█████▌    | 225/401 [01:55<01:31,  1.92it/s]
 56%|█████▋    | 226/401 [01:55<01:30,  1.92it/s]
 57%|█████▋    | 227/401 [01:56<01:30,  1.92it/s]
 57%|█████▋    | 228/401 [01:56<01:29,  1.92it/s]
 57%|█████▋    | 229/401 [01:57<01:28,  1.93it/s]
 57%|█████▋    | 230/401 [01:57<01:28,  1.92it/s]
 58%|█████▊    | 231/401 [01:58<01:28,  1.92it/s]
 58%|█████▊    | 232/401 [01:59<01:28,  1.92it/s]
 58%|█████▊    | 233/401 [01:59<01:27,  1.92it/s]
 58%|█████▊    | 234/401 [02:00<01:27,  1.91it/s]
 59%|█████▊    | 235/401 [02:00<01:26,  1.92it/s]
 59%|█████▉    | 236/401 [02:01<01:34,  1.75it/s]
 59%|█████▉    | 237/401 [02:02<01:51,  1.47it/s]
 59%|█████▉    | 238/401 [02:03<01:57,  1.38it/s]
 60%|█████▉    | 239/401 [02:03<02:00,  1.34it/s]
 60%|█████▉    | 240/401 [02:04<02:02,  1.32it/s]
 60%|██████    | 241/401 [02:05<02:02,  1.31it/s]
 60%|██████    | 242/401 [02:06<02:01,  1.31it/s]
 61%|██████    | 243/401 [02:06<01:55,  1.37it/s]
 61%|██████    | 244/401 [02:07<01:51,  1.40it/s]
 61%|██████    | 245/401 [02:08<01:49,  1.43it/s]
 61%|██████▏   | 246/401 [02:08<01:46,  1.45it/s]
 62%|██████▏   | 247/401 [02:09<01:44,  1.48it/s]
 62%|██████▏   | 248/401 [02:10<01:41,  1.51it/s]
 62%|██████▏   | 249/401 [02:10<01:39,  1.53it/s]
 62%|██████▏   | 250/401 [02:11<01:37,  1.55it/s]
 63%|██████▎   | 251/401 [02:12<01:38,  1.52it/s]
 63%|██████▎   | 252/401 [02:12<01:39,  1.49it/s]
 63%|██████▎   | 253/401 [02:13<01:37,  1.51it/s]
 63%|██████▎   | 254/401 [02:13<01:34,  1.56it/s]
 64%|██████▎   | 255/401 [02:14<01:28,  1.64it/s]
 64%|██████▍   | 256/401 [02:15<01:25,  1.70it/s]
 64%|██████▍   | 257/401 [02:15<01:21,  1.76it/s]
 64%|██████▍   | 258/401 [02:16<01:19,  1.80it/s]
 65%|██████▍   | 259/401 [02:16<01:18,  1.82it/s]
 65%|██████▍   | 260/401 [02:17<01:16,  1.84it/s]
 65%|██████▌   | 261/401 [02:17<01:15,  1.85it/s]
 65%|██████▌   | 262/401 [02:18<01:14,  1.87it/s]
 66%|██████▌   | 263/401 [02:18<01:13,  1.88it/s]
 66%|██████▌   | 264/401 [02:19<01:12,  1.88it/s]
 66%|██████▌   | 265/401 [02:19<01:12,  1.89it/s]
 66%|██████▋   | 266/401 [02:20<01:11,  1.89it/s]
 67%|██████▋   | 267/401 [02:20<01:11,  1.88it/s]
 67%|██████▋   | 268/401 [02:21<01:10,  1.89it/s]
 67%|██████▋   | 269/401 [02:21<01:09,  1.89it/s]
 67%|██████▋   | 270/401 [02:22<01:09,  1.89it/s]
 68%|██████▊   | 271/401 [02:22<01:08,  1.90it/s]
 68%|██████▊   | 272/401 [02:23<01:07,  1.90it/s]
 68%|██████▊   | 273/401 [02:24<01:07,  1.90it/s]
 68%|██████▊   | 274/401 [02:24<01:06,  1.90it/s]
 69%|██████▊   | 275/401 [02:25<01:06,  1.90it/s]
 69%|██████▉   | 276/401 [02:25<01:05,  1.90it/s]
 69%|██████▉   | 277/401 [02:26<01:05,  1.89it/s]
 69%|██████▉   | 278/401 [02:26<01:05,  1.89it/s]
 70%|██████▉   | 279/401 [02:27<01:04,  1.89it/s]
 70%|██████▉   | 280/401 [02:27<01:03,  1.89it/s]
 70%|███████   | 281/401 [02:28<01:03,  1.89it/s]
 70%|███████   | 282/401 [02:28<01:02,  1.89it/s]
 71%|███████   | 283/401 [02:29<01:02,  1.90it/s]
 71%|███████   | 284/401 [02:29<01:01,  1.90it/s]
 71%|███████   | 285/401 [02:30<01:01,  1.90it/s]
 71%|███████▏  | 286/401 [02:30<01:00,  1.90it/s]
 72%|███████▏  | 287/401 [02:31<00:59,  1.90it/s]
 72%|███████▏  | 288/401 [02:31<00:59,  1.89it/s]
 72%|███████▏  | 289/401 [02:32<00:59,  1.89it/s]
 72%|███████▏  | 290/401 [02:32<00:58,  1.90it/s]
 73%|███████▎  | 291/401 [02:33<00:57,  1.90it/s]
 73%|███████▎  | 292/401 [02:34<00:57,  1.90it/s]
 73%|███████▎  | 293/401 [02:34<00:56,  1.90it/s]
 73%|███████▎  | 294/401 [02:35<00:56,  1.90it/s]
 74%|███████▎  | 295/401 [02:35<00:55,  1.90it/s]
 74%|███████▍  | 296/401 [02:36<00:55,  1.89it/s]
 74%|███████▍  | 297/401 [02:36<00:54,  1.90it/s]
 74%|███████▍  | 298/401 [02:37<00:54,  1.90it/s]
 75%|███████▍  | 299/401 [02:37<00:53,  1.89it/s]
 75%|███████▍  | 300/401 [02:38<00:53,  1.89it/s]
 75%|███████▌  | 301/401 [02:38<00:52,  1.90it/s]
 75%|███████▌  | 302/401 [02:39<00:57,  1.72it/s]
 76%|███████▌  | 303/401 [02:40<01:06,  1.48it/s]
 76%|███████▌  | 304/401 [02:41<01:09,  1.39it/s]
 76%|███████▌  | 305/401 [02:42<01:11,  1.35it/s]
 76%|███████▋  | 306/401 [02:42<01:11,  1.33it/s]
 77%|███████▋  | 307/401 [02:43<01:11,  1.31it/s]
 77%|███████▋  | 308/401 [02:44<01:11,  1.31it/s]
 77%|███████▋  | 309/401 [02:45<01:07,  1.36it/s]
 77%|███████▋  | 310/401 [02:45<01:04,  1.41it/s]
 78%|███████▊  | 311/401 [02:46<01:02,  1.45it/s]
 78%|███████▊  | 312/401 [02:46<01:00,  1.48it/s]
 78%|███████▊  | 313/401 [02:47<00:58,  1.50it/s]
 78%|███████▊  | 314/401 [02:48<00:56,  1.53it/s]
 79%|███████▊  | 315/401 [02:48<00:55,  1.54it/s]
 79%|███████▉  | 316/401 [02:49<00:53,  1.58it/s]
 79%|███████▉  | 317/401 [02:50<00:54,  1.53it/s]
 79%|███████▉  | 318/401 [02:50<00:55,  1.50it/s]
 80%|███████▉  | 319/401 [02:51<00:53,  1.54it/s]
 80%|███████▉  | 320/401 [02:52<00:51,  1.57it/s]
 80%|████████  | 321/401 [02:52<00:48,  1.66it/s]
 80%|████████  | 322/401 [02:53<00:45,  1.73it/s]
 81%|████████  | 323/401 [02:53<00:43,  1.77it/s]
 81%|████████  | 324/401 [02:54<00:42,  1.81it/s]
 81%|████████  | 325/401 [02:54<00:41,  1.84it/s]
 81%|████████▏ | 326/401 [02:55<00:40,  1.87it/s]
 82%|████████▏ | 327/401 [02:55<00:39,  1.88it/s]
 82%|████████▏ | 328/401 [02:56<00:38,  1.88it/s]
 82%|████████▏ | 329/401 [02:56<00:38,  1.88it/s]
 82%|████████▏ | 330/401 [02:57<00:37,  1.90it/s]
 83%|████████▎ | 331/401 [02:57<00:36,  1.90it/s]
 83%|████████▎ | 332/401 [02:58<00:36,  1.91it/s]
 83%|████████▎ | 333/401 [02:58<00:35,  1.92it/s]
 83%|████████▎ | 334/401 [02:59<00:34,  1.92it/s]
 84%|████████▎ | 335/401 [02:59<00:34,  1.91it/s]
 84%|████████▍ | 336/401 [03:00<00:33,  1.92it/s]
 84%|████████▍ | 337/401 [03:00<00:33,  1.92it/s]
 84%|████████▍ | 338/401 [03:01<00:32,  1.92it/s]
 85%|████████▍ | 339/401 [03:01<00:32,  1.92it/s]
 85%|████████▍ | 340/401 [03:02<00:31,  1.92it/s]
 85%|████████▌ | 341/401 [03:03<00:31,  1.91it/s]
 85%|████████▌ | 342/401 [03:03<00:30,  1.91it/s]
 86%|████████▌ | 343/401 [03:04<00:30,  1.90it/s]
 86%|████████▌ | 344/401 [03:04<00:29,  1.91it/s]
 86%|████████▌ | 345/401 [03:05<00:29,  1.91it/s]
 86%|████████▋ | 346/401 [03:05<00:28,  1.91it/s]
 87%|████████▋ | 347/401 [03:06<00:28,  1.91it/s]
 87%|████████▋ | 348/401 [03:06<00:27,  1.90it/s]
 87%|████████▋ | 349/401 [03:07<00:27,  1.91it/s]
 87%|████████▋ | 350/401 [03:07<00:26,  1.90it/s]
 88%|████████▊ | 351/401 [03:08<00:26,  1.90it/s]
 88%|████████▊ | 352/401 [03:08<00:25,  1.90it/s]
 88%|████████▊ | 353/401 [03:09<00:25,  1.90it/s]
 88%|████████▊ | 354/401 [03:09<00:24,  1.90it/s]
 89%|████████▊ | 355/401 [03:10<00:24,  1.90it/s]
 89%|████████▉ | 356/401 [03:10<00:23,  1.90it/s]
 89%|████████▉ | 357/401 [03:11<00:23,  1.90it/s]
 89%|████████▉ | 358/401 [03:11<00:22,  1.90it/s]
 90%|████████▉ | 359/401 [03:12<00:21,  1.92it/s]
 90%|████████▉ | 360/401 [03:13<00:21,  1.91it/s]
 90%|█████████ | 361/401 [03:13<00:20,  1.91it/s]
 90%|█████████ | 362/401 [03:14<00:20,  1.91it/s]
 91%|█████████ | 363/401 [03:14<00:19,  1.91it/s]
 91%|█████████ | 364/401 [03:15<00:19,  1.90it/s]
 91%|█████████ | 365/401 [03:15<00:18,  1.91it/s]
 91%|█████████▏| 366/401 [03:16<00:18,  1.91it/s]
 92%|█████████▏| 367/401 [03:16<00:17,  1.91it/s]
 92%|█████████▏| 368/401 [03:17<00:18,  1.75it/s]
 92%|█████████▏| 369/401 [03:18<00:21,  1.50it/s]
 92%|█████████▏| 370/401 [03:19<00:21,  1.41it/s]
 93%|█████████▎| 371/401 [03:19<00:21,  1.37it/s]
 93%|█████████▎| 372/401 [03:20<00:21,  1.35it/s]
 93%|█████████▎| 373/401 [03:21<00:20,  1.34it/s]
 93%|█████████▎| 374/401 [03:22<00:20,  1.34it/s]
 94%|█████████▎| 375/401 [03:22<00:18,  1.38it/s]
 94%|█████████▍| 376/401 [03:23<00:17,  1.42it/s]
 94%|█████████▍| 377/401 [03:24<00:16,  1.45it/s]
 94%|█████████▍| 378/401 [03:24<00:15,  1.48it/s]
 95%|█████████▍| 379/401 [03:25<00:14,  1.51it/s]
 95%|█████████▍| 380/401 [03:26<00:13,  1.53it/s]
 95%|█████████▌| 381/401 [03:26<00:12,  1.56it/s]
 95%|█████████▌| 382/401 [03:27<00:11,  1.59it/s]
 96%|█████████▌| 383/401 [03:27<00:11,  1.55it/s]
 96%|█████████▌| 384/401 [03:28<00:11,  1.50it/s]
 96%|█████████▌| 385/401 [03:29<00:10,  1.53it/s]
 96%|█████████▋| 386/401 [03:29<00:09,  1.56it/s]
 97%|█████████▋| 387/401 [03:30<00:08,  1.66it/s]
 97%|█████████▋| 388/401 [03:30<00:07,  1.72it/s]
 97%|█████████▋| 389/401 [03:31<00:06,  1.77it/s]
 97%|█████████▋| 390/401 [03:31<00:06,  1.81it/s]
 98%|█████████▊| 391/401 [03:32<00:05,  1.84it/s]
 98%|█████████▊| 392/401 [03:33<00:04,  1.85it/s]
 98%|█████████▊| 393/401 [03:33<00:04,  1.88it/s]
 98%|█████████▊| 394/401 [03:34<00:03,  1.89it/s]
 99%|█████████▊| 395/401 [03:34<00:03,  1.89it/s]
 99%|█████████▉| 396/401 [03:35<00:02,  1.89it/s]
 99%|█████████▉| 397/401 [03:35<00:02,  1.89it/s]
 99%|█████████▉| 398/401 [03:36<00:01,  1.90it/s]
100%|█████████▉| 399/401 [03:36<00:01,  1.90it/s]
100%|█████████▉| 400/401 [03:37<00:00,  1.90it/s]
100%|██████████| 401/401 [03:37<00:00,  1.90it/s]
100%|██████████| 401/401 [03:37<00:00,  1.84it/s]

Total running time of the script: (4 minutes 46.879 seconds)

Gallery generated by Sphinx-Gallery