Reconstruction with Multi-Shell Multi-Tissue CSD

This example shows how to use Multi-Shell Multi-Tissue Constrained Spherical Deconvolution (MSMT-CSD) introduced by Tournier et al. [Jeurissen2014]. This tutorial goes through the steps involved in implementing the method.

This method provides improved White Matter(WM), Grey Matter (GM), and Cerebrospinal fluid (CSF) volume fraction maps, which is otherwise overestimated in the standard CSD (SSST-CSD). This is done by using b-value dependencies of the different tissue types to estimate ODFs. This method thus extends the SSST-CSD introduced in [Tournier2007].

The reconstruction of the fiber orientation distribution function (fODF) in MSMT-CSD involves the following steps:

  1. Generate a mask using Median Otsu (optional step)

  2. Denoise the data using MP-PCA (optional step)

  3. Generate Anisotropic Powermap (if T1 unavailable)

  4. Fit DTI model to the data

  5. Tissue Classification (needs to be at least two classes of tissues)

  6. Estimation of the fiber response function

  7. Use the response function to reconstruct the fODF

First, we import all the modules we need from dipy as follows:

import numpy as np
import dipy.reconst.shm as shm
import dipy.direction.peaks as dp
import matplotlib.pyplot as plt

from dipy.denoise.localpca import mppca
from dipy.core.gradients import gradient_table, unique_bvals_tolerance
from dipy.io.gradients import read_bvals_bvecs
from dipy.io.image import load_nifti
from dipy.segment.mask import median_otsu
from dipy.reconst.mcsd import (auto_response_msmt,
                               mask_for_response_msmt,
                               response_from_mask_msmt)
from dipy.segment.tissue import TissueClassifierHMRF
from dipy.reconst.mcsd import MultiShellDeconvModel, multi_shell_fiber_response
from dipy.viz import window, actor

from dipy.data import get_sphere, get_fnames
sphere = get_sphere('symmetric724')

For this example, we use fetch to download a multi-shell dataset which was kindly provided by Hansen and Jespersen (more details about the data are provided in their paper [Hansen2016]). The total size of the downloaded data is 192 MBytes, however you only need to fetch it once.

fraw, fbval, fbvec, t1_fname = get_fnames('cfin_multib')

data, affine = load_nifti(fraw)
bvals, bvecs = read_bvals_bvecs(fbval, fbvec)
gtab = gradient_table(bvals, bvecs)

For the sake of simplicity, we only select two non-zero b-values for this example.

bvals = gtab.bvals
bvecs = gtab.bvecs

sel_b = np.logical_or(np.logical_or(bvals == 0, bvals == 1000), bvals == 2000)
data = data[..., sel_b]

The gradient table is also selected to have the selected b-values (0, 1000 and 2000)

gtab = gradient_table(bvals[sel_b], bvecs[sel_b])

We make use of the median_otsu method to generate the mask for the data as follows:

b0_mask, mask = median_otsu(data, median_radius=2, numpass=1, vol_idx=[0, 1])


print(data.shape)
(96, 96, 19, 67)

As one can see from its shape, the selected data contains a total of 67 volumes of images corresponding to all the diffusion gradient directions of the selected b-values and call the mppca as follows:

denoised_arr = mppca(data, mask=mask, patch_radius=2)
/Users/skoudoro/devel/dipy/dipy/denoise/localpca.py:285: RuntimeWarning: invalid value encountered in divide
  denoised_arr = thetax / theta

Now we will use the denoised array (denoised_arr) obtained from mppca in the rest of the steps in the tutorial.

As for the next step, we generate the anisotropic powermap introduced by [DellAcqua2014]. To do so, we make use of the Q-ball Model as follows:

qball_model = shm.QballModel(gtab, 8)

We generate the peaks from the qball_model as follows:

peaks = dp.peaks_from_model(model=qball_model, data=denoised_arr,
                            relative_peak_threshold=.5,
                            min_separation_angle=25,
                            sphere=sphere, mask=mask)

ap = shm.anisotropic_power(peaks.shm_coeff)

plt.matshow(np.rot90(ap[:, :, 10]), cmap=plt.cm.bone)
plt.savefig("anisotropic_power_map.png")
plt.close()
reconst mcsd
examples_built/07_reconstruction/anisotropic_power_map.png

Anisotropic Power Map (Axial Slice)

print(ap.shape)
(96, 96, 19)

The above figure is a visualization of the axial slice of the Anisotropic Power Map. It can be treated as a pseudo-T1 for classification purposes using the Hidden Markov Random Fields (HMRF) classifier, if the T1 image is not available.

As we can see from the shape of the Anisotropic Power Map, it is 3D and can be used for tissue classification using HMRF. The HMRF needs the specification of the number of classes. For the case of MSMT-CSD the nclass parameter needs to be >=2. In our case, we set it to 3: namely corticospinal fluid (csf), white matter (wm) and gray matter (gm).

nclass = 3

Then, the smoothness factor of the segmentation. Good performance is achieved with values between 0 and 0.5.

beta = 0.1

We then call the TissueClassifierHMRF with the parameters specified as above:

hmrf = TissueClassifierHMRF()
initial_segmentation, final_segmentation, PVE = hmrf.classify(ap, nclass, beta)
>> Iteration: 0
>> Iteration: 1
>> Iteration: 2
>> Iteration: 3
>> Iteration: 4
>> Iteration: 5
>> Iteration: 6
>> Iteration: 7
>> Iteration: 8
>> Iteration: 9
>> Iteration: 10
>> Iteration: 11
>> Iteration: 12
>> Iteration: 13
>> Iteration: 14
>> Iteration: 15
>> Iteration: 16
>> Iteration: 17
>> Iteration: 18
>> Iteration: 19
>> Iteration: 20
>> Iteration: 21
>> Iteration: 22
>> Iteration: 23

Then, we get the tissues segmentation from the final_segmentation.

csf = np.where(final_segmentation == 1, 1, 0)
gm = np.where(final_segmentation == 2, 1, 0)
wm = np.where(final_segmentation == 3, 1, 0)

Now, we want the response function for each of the three tissues and for each bvalues. This can be achieved in two different ways. If the case that tissue segmentation is available or that one wants to see the tissue masks used to compute the response functions, a combination of the functions mask_for_response_msmt and response_from_mask is needed.

The mask_for_response_msmt function will return a mask of voxels within a cuboid ROI and that meet some threshold constraints, for each tissue and bvalue. More precisely, the WM mask must have a FA value above a given threshold. The GM mask and CSF mask must have a FA below given thresholds and a MD below other thresholds.

Note that for mask_for_response_msmt, the gtab and data should be for bvalues under 1200, for optimal tensor fit.

mask_wm, mask_gm, mask_csf = mask_for_response_msmt(gtab, data, roi_radii=10,
                                                    wm_fa_thr=0.7,
                                                    gm_fa_thr=0.3,
                                                    csf_fa_thr=0.15,
                                                    gm_md_thr=0.001,
                                                    csf_md_thr=0.0032)
/Users/skoudoro/devel/dipy/dipy/reconst/mcsd.py:594: UserWarning: Some b-values are higher than 1200.
        The DTI fit might be affected.
  warnings.warn(msg_bvals, UserWarning)

If one wants to use the previously computed tissue segmentation in addition to the threshold method, it is possible by simply multiplying both masks together.

mask_wm *= wm
mask_gm *= gm
mask_csf *= csf

The masks can also be used to calculate the number of voxels for each tissue.

nvoxels_wm = np.sum(mask_wm)
nvoxels_gm = np.sum(mask_gm)
nvoxels_csf = np.sum(mask_csf)

print(nvoxels_wm)
1407

Then, the response_from_mask function will return the msmt response functions using precalculated tissue masks.

response_wm, response_gm, response_csf = response_from_mask_msmt(gtab, data,
                                                                 mask_wm,
                                                                 mask_gm,
                                                                 mask_csf)

Note that we can also get directly the response functions by calling the auto_response_msmt function, which internally calls mask_for_response_msmt followed by response_from_mask. By doing so, we don’t have access to the masks and we might have problems with high bvalues tensor fit.

auto_response_wm, auto_response_gm, auto_response_csf = \
    auto_response_msmt(gtab, data, roi_radii=10)
/Users/skoudoro/devel/dipy/dipy/reconst/mcsd.py:786: UserWarning: Some b-values are higher than 1200.
        The DTI fit might be affected. It is advised to use
        mask_for_response_msmt with bvalues lower than 1200, followed by
        response_from_mask_msmt with all bvalues to overcome this.
  warnings.warn(msg_bvals, UserWarning)

As we can see below, adding the tissue segmentation can change the results of the response functions.

print("Responses")
print(response_wm)
print(response_gm)
print(response_csf)
print("Auto responses")
print(auto_response_wm)
print(auto_response_gm)
print(auto_response_csf)
Responses
[[1.56692320e-03 4.46085143e-04 4.46085143e-04 1.62131485e+02]
 [1.34276461e-03 3.52534556e-04 3.52534556e-04 1.62131485e+02]]
[[9.71997238e-04 8.03193240e-04 8.03193240e-04 1.83911565e+02]
 [8.84828549e-04 7.24057454e-04 7.24057454e-04 1.83911565e+02]]
[[1.48173768e-03 1.33583578e-03 1.33583578e-03 2.54048426e+02]
 [1.19247972e-03 1.03434085e-03 1.03434085e-03 2.54048426e+02]]
Auto responses
[[1.70814058e-03 5.99497542e-04 5.99497542e-04 1.66589967e+02]
 [1.37647490e-03 4.22844899e-04 4.22844899e-04 1.66589967e+02]]
[[1.02876747e-03 8.64284096e-04 8.64284096e-04 1.90155949e+02]
 [9.05450074e-04 7.52760292e-04 7.52760292e-04 1.90155949e+02]]
[[1.33298612e-03 1.19461602e-03 1.19461602e-03 2.31346774e+02]
 [1.09567957e-03 9.48548376e-04 9.48548376e-04 2.31346774e+02]]

At this point, there are two options on how to use those response functions. We want to create a MultiShellDeconvModel, which takes a response function as input. This response function can either be directly in the current format, or it can be a MultiShellResponse format, as produced by the multi_shell_fiber_response method. This function assumes a 3 compartments model (wm, gm, csf) and takes one response function per tissue per bvalue. It is important to note that the bvalues must be unique for this function.

ubvals = unique_bvals_tolerance(gtab.bvals)
response_mcsd = multi_shell_fiber_response(sh_order=8,
                                           bvals=ubvals,
                                           wm_rf=response_wm,
                                           gm_rf=response_gm,
                                           csf_rf=response_csf)

As mentioned, we can also build the model directly and it will call multi_shell_fiber_response internally. Important note here, the function unique_bvals_tolerance is used to keep only unique bvalues from the gtab given to the model, as input for multi_shell_fiber_response. This may introduce differences between the calculated response of each method, depending on the bvalues given to multi_shell_fiber_response externally.

response = np.array([response_wm, response_gm, response_csf])
mcsd_model_simple_response = MultiShellDeconvModel(gtab, response, sh_order=8)

Note that this technique only works for a 3 compartments model (wm, gm, csf). If one wants more compartments, a custom MultiShellResponse object must be used. It can be inspired by the multi_shell_fiber_response method.

Now we build the MSMT-CSD model with the response_mcsd as input. We then call the fit function to fit one slice of the 3D data and visualize it.

mcsd_model = MultiShellDeconvModel(gtab, response_mcsd)
mcsd_fit = mcsd_model.fit(denoised_arr[:, :, 10:11])
  0%|          | 0/9216 [00:00<?, ?it/s]
  0%|          | 14/9216 [00:00<01:10, 130.72it/s]
  0%|          | 28/9216 [00:00<01:09, 132.04it/s]
  0%|          | 42/9216 [00:00<01:09, 131.93it/s]
  1%|          | 56/9216 [00:00<01:09, 131.21it/s]
  1%|          | 70/9216 [00:00<01:10, 130.59it/s]
  1%|          | 84/9216 [00:00<01:10, 130.28it/s]
  1%|1         | 98/9216 [00:00<01:10, 130.02it/s]
  1%|1         | 112/9216 [00:00<01:09, 130.39it/s]
  1%|1         | 126/9216 [00:00<01:09, 131.05it/s]
  2%|1         | 140/9216 [00:01<01:09, 130.16it/s]
  2%|1         | 154/9216 [00:01<01:09, 129.57it/s]
  2%|1         | 168/9216 [00:01<01:09, 129.68it/s]
  2%|1         | 181/9216 [00:01<01:09, 129.57it/s]
  2%|2         | 195/9216 [00:01<01:09, 130.67it/s]
  2%|2         | 209/9216 [00:01<01:08, 131.00it/s]
  2%|2         | 223/9216 [00:01<01:08, 131.08it/s]
  3%|2         | 237/9216 [00:01<01:08, 131.49it/s]
  3%|2         | 251/9216 [00:01<01:08, 131.33it/s]
  3%|2         | 265/9216 [00:02<01:07, 131.95it/s]
  3%|3         | 279/9216 [00:02<01:07, 132.38it/s]
  3%|3         | 293/9216 [00:02<01:08, 130.59it/s]
  3%|3         | 307/9216 [00:02<01:07, 131.20it/s]
  3%|3         | 321/9216 [00:02<01:08, 130.02it/s]
  4%|3         | 335/9216 [00:02<01:07, 130.79it/s]
  4%|3         | 349/9216 [00:02<01:07, 131.14it/s]
  4%|3         | 363/9216 [00:02<01:07, 131.31it/s]
  4%|4         | 377/9216 [00:02<01:07, 131.66it/s]
  4%|4         | 391/9216 [00:02<01:07, 130.57it/s]
  4%|4         | 405/9216 [00:03<01:09, 125.93it/s]
  5%|4         | 418/9216 [00:03<01:10, 124.73it/s]
  5%|4         | 431/9216 [00:03<01:10, 124.66it/s]
  5%|4         | 444/9216 [00:03<01:09, 125.98it/s]
  5%|4         | 458/9216 [00:03<01:08, 127.76it/s]
  5%|5         | 472/9216 [00:03<01:08, 128.51it/s]
  5%|5         | 486/9216 [00:03<01:07, 129.40it/s]
  5%|5         | 499/9216 [00:03<01:07, 128.33it/s]
  6%|5         | 513/9216 [00:03<01:07, 129.78it/s]
  6%|5         | 526/9216 [00:04<01:07, 128.88it/s]
  6%|5         | 539/9216 [00:04<01:07, 128.95it/s]
  6%|6         | 553/9216 [00:04<01:06, 130.10it/s]
  6%|6         | 567/9216 [00:04<01:06, 130.72it/s]
  6%|6         | 581/9216 [00:04<01:05, 131.43it/s]
  6%|6         | 595/9216 [00:04<01:05, 131.57it/s]
  7%|6         | 609/9216 [00:04<01:05, 131.52it/s]
  7%|6         | 623/9216 [00:04<01:04, 132.31it/s]
  7%|6         | 637/9216 [00:04<01:04, 132.67it/s]
  7%|7         | 651/9216 [00:04<01:04, 131.92it/s]
  7%|7         | 665/9216 [00:05<01:04, 132.02it/s]
  7%|7         | 679/9216 [00:05<01:04, 132.44it/s]
  8%|7         | 693/9216 [00:05<01:04, 132.81it/s]
  8%|7         | 707/9216 [00:05<01:04, 132.61it/s]
  8%|7         | 721/9216 [00:05<01:04, 132.46it/s]
  8%|7         | 735/9216 [00:05<01:03, 132.61it/s]
  8%|8         | 749/9216 [00:05<01:03, 132.78it/s]
  8%|8         | 763/9216 [00:05<01:03, 132.77it/s]
  8%|8         | 777/9216 [00:05<01:03, 133.01it/s]
  9%|8         | 791/9216 [00:06<01:03, 132.75it/s]
  9%|8         | 805/9216 [00:06<01:03, 132.64it/s]
  9%|8         | 819/9216 [00:06<01:03, 131.32it/s]
  9%|9         | 833/9216 [00:06<01:03, 131.58it/s]
  9%|9         | 847/9216 [00:06<01:03, 131.85it/s]
  9%|9         | 861/9216 [00:06<01:03, 131.48it/s]
  9%|9         | 875/9216 [00:06<01:03, 131.32it/s]
 10%|9         | 889/9216 [00:06<01:03, 131.77it/s]
 10%|9         | 903/9216 [00:06<01:03, 131.38it/s]
 10%|9         | 917/9216 [00:07<01:03, 131.70it/s]
 10%|#         | 931/9216 [00:07<01:02, 131.65it/s]
 10%|#         | 945/9216 [00:07<01:02, 131.91it/s]
 10%|#         | 959/9216 [00:07<01:02, 131.86it/s]
 11%|#         | 973/9216 [00:07<01:02, 132.11it/s]
 11%|#         | 987/9216 [00:07<01:02, 132.51it/s]
 11%|#         | 1001/9216 [00:07<01:01, 132.86it/s]
 11%|#1        | 1015/9216 [00:07<01:02, 131.12it/s]
 11%|#1        | 1029/9216 [00:07<01:02, 131.68it/s]
 11%|#1        | 1043/9216 [00:07<01:02, 131.70it/s]
 11%|#1        | 1057/9216 [00:08<01:02, 131.36it/s]
 12%|#1        | 1071/9216 [00:08<01:01, 131.78it/s]
 12%|#1        | 1085/9216 [00:08<01:01, 131.43it/s]
 12%|#1        | 1099/9216 [00:08<01:01, 131.80it/s]
 12%|#2        | 1113/9216 [00:08<01:01, 131.99it/s]
 12%|#2        | 1127/9216 [00:08<01:01, 131.83it/s]
 12%|#2        | 1141/9216 [00:08<01:01, 131.80it/s]
 13%|#2        | 1155/9216 [00:08<01:00, 132.24it/s]
 13%|#2        | 1169/9216 [00:08<01:00, 132.71it/s]
 13%|#2        | 1183/9216 [00:09<01:00, 132.38it/s]
 13%|#2        | 1197/9216 [00:09<01:00, 132.29it/s]
 13%|#3        | 1211/9216 [00:09<01:00, 131.43it/s]
 13%|#3        | 1225/9216 [00:09<01:01, 130.72it/s]
 13%|#3        | 1239/9216 [00:09<01:02, 128.15it/s]
 14%|#3        | 1252/9216 [00:09<01:03, 126.06it/s]
 14%|#3        | 1265/9216 [00:09<01:02, 126.98it/s]
 14%|#3        | 1279/9216 [00:09<01:02, 127.92it/s]
 14%|#4        | 1293/9216 [00:09<01:01, 129.20it/s]
 14%|#4        | 1307/9216 [00:09<01:00, 130.33it/s]
 14%|#4        | 1321/9216 [00:10<01:00, 130.59it/s]
 14%|#4        | 1335/9216 [00:10<01:00, 131.01it/s]
 15%|#4        | 1349/9216 [00:10<00:59, 131.55it/s]
 15%|#4        | 1363/9216 [00:10<00:59, 131.93it/s]
 15%|#4        | 1377/9216 [00:10<00:59, 131.76it/s]
 15%|#5        | 1391/9216 [00:10<00:59, 131.29it/s]
 15%|#5        | 1405/9216 [00:10<00:59, 131.56it/s]
 15%|#5        | 1419/9216 [00:10<00:59, 132.02it/s]
 16%|#5        | 1433/9216 [00:10<00:58, 132.29it/s]
 16%|#5        | 1447/9216 [00:11<00:59, 130.99it/s]
 16%|#5        | 1461/9216 [00:11<00:59, 131.19it/s]
 16%|#6        | 1475/9216 [00:11<00:58, 131.89it/s]
 16%|#6        | 1489/9216 [00:11<00:58, 132.35it/s]
 16%|#6        | 1503/9216 [00:11<00:58, 131.99it/s]
 16%|#6        | 1517/9216 [00:11<00:58, 131.80it/s]
 17%|#6        | 1531/9216 [00:11<00:58, 131.20it/s]
 17%|#6        | 1545/9216 [00:11<00:58, 131.38it/s]
 17%|#6        | 1559/9216 [00:11<00:58, 131.52it/s]
 17%|#7        | 1573/9216 [00:12<00:57, 132.03it/s]
 17%|#7        | 1587/9216 [00:12<00:57, 131.86it/s]
 17%|#7        | 1601/9216 [00:12<00:57, 132.25it/s]
 18%|#7        | 1615/9216 [00:12<00:57, 132.44it/s]
 18%|#7        | 1629/9216 [00:12<00:57, 131.63it/s]
 18%|#7        | 1643/9216 [00:12<00:57, 131.57it/s]
 18%|#7        | 1657/9216 [00:12<00:57, 131.42it/s]
 18%|#8        | 1671/9216 [00:12<00:57, 131.66it/s]
 18%|#8        | 1685/9216 [00:12<00:57, 131.71it/s]
 18%|#8        | 1699/9216 [00:12<00:56, 132.01it/s]
 19%|#8        | 1713/9216 [00:13<00:56, 131.76it/s]
 19%|#8        | 1727/9216 [00:13<00:58, 128.93it/s]
 19%|#8        | 1740/9216 [00:13<00:58, 127.46it/s]
 19%|#9        | 1754/9216 [00:13<00:57, 128.89it/s]
 19%|#9        | 1768/9216 [00:13<00:57, 129.61it/s]
 19%|#9        | 1782/9216 [00:13<00:57, 130.20it/s]
 19%|#9        | 1796/9216 [00:13<00:56, 130.66it/s]
 20%|#9        | 1810/9216 [00:13<00:56, 131.38it/s]
 20%|#9        | 1824/9216 [00:13<00:56, 131.58it/s]
 20%|#9        | 1838/9216 [00:14<00:56, 131.73it/s]
 20%|##        | 1852/9216 [00:14<00:55, 131.84it/s]
 20%|##        | 1866/9216 [00:14<00:55, 132.17it/s]
 20%|##        | 1880/9216 [00:14<00:55, 132.37it/s]
 21%|##        | 1894/9216 [00:14<00:55, 132.52it/s]
 21%|##        | 1908/9216 [00:14<00:55, 132.50it/s]
 21%|##        | 1922/9216 [00:14<00:55, 132.61it/s]
 21%|##1       | 1936/9216 [00:14<00:54, 132.45it/s]
 21%|##1       | 1950/9216 [00:14<00:54, 132.75it/s]
 21%|##1       | 1964/9216 [00:14<00:54, 132.44it/s]
 21%|##1       | 1978/9216 [00:15<00:54, 132.14it/s]
 22%|##1       | 1992/9216 [00:15<00:54, 131.78it/s]
 22%|##1       | 2006/9216 [00:15<00:54, 132.27it/s]
 22%|##1       | 2020/9216 [00:15<00:54, 132.72it/s]
 22%|##2       | 2034/9216 [00:15<00:54, 132.47it/s]
 22%|##2       | 2048/9216 [00:15<00:54, 132.65it/s]
 22%|##2       | 2062/9216 [00:15<00:53, 132.92it/s]
 23%|##2       | 2076/9216 [00:15<00:53, 132.93it/s]
 23%|##2       | 2090/9216 [00:15<00:53, 133.06it/s]
 23%|##2       | 2104/9216 [00:16<00:53, 133.04it/s]
 23%|##2       | 2118/9216 [00:16<00:53, 131.91it/s]
 23%|##3       | 2132/9216 [00:16<00:53, 131.82it/s]
 23%|##3       | 2146/9216 [00:16<00:53, 131.84it/s]
 23%|##3       | 2160/9216 [00:16<00:59, 119.43it/s]
 24%|##3       | 2173/9216 [00:16<00:58, 121.32it/s]
 24%|##3       | 2187/9216 [00:16<00:56, 124.26it/s]
 24%|##3       | 2201/9216 [00:16<00:55, 126.34it/s]
 24%|##4       | 2214/9216 [00:16<00:55, 126.76it/s]
 24%|##4       | 2228/9216 [00:17<00:54, 128.58it/s]
 24%|##4       | 2242/9216 [00:17<00:54, 127.90it/s]
 24%|##4       | 2255/9216 [00:17<01:18, 88.79it/s]
 25%|##4       | 2266/9216 [00:17<01:25, 81.40it/s]
 25%|##4       | 2280/9216 [00:17<01:14, 92.98it/s]
 25%|##4       | 2294/9216 [00:17<01:07, 102.55it/s]
 25%|##5       | 2308/9216 [00:17<01:02, 110.17it/s]
 25%|##5       | 2322/9216 [00:17<00:59, 116.14it/s]
 25%|##5       | 2335/9216 [00:18<00:58, 118.13it/s]
 25%|##5       | 2348/9216 [00:18<01:41, 67.99it/s]
 26%|##5       | 2358/9216 [00:18<02:33, 44.54it/s]
 26%|##5       | 2366/9216 [00:19<02:26, 46.73it/s]
 26%|##5       | 2380/9216 [00:19<01:52, 60.61it/s]
 26%|##5       | 2394/9216 [00:19<01:32, 74.11it/s]
 26%|##6       | 2408/9216 [00:19<01:18, 86.62it/s]
 26%|##6       | 2422/9216 [00:19<01:09, 97.60it/s]
 26%|##6       | 2434/9216 [00:19<01:18, 86.62it/s]
 27%|##6       | 2445/9216 [00:19<01:47, 62.73it/s]
 27%|##6       | 2454/9216 [00:20<02:16, 49.48it/s]
 27%|##6       | 2461/9216 [00:20<02:11, 51.25it/s]
 27%|##6       | 2474/9216 [00:20<01:43, 65.03it/s]
 27%|##6       | 2488/9216 [00:20<01:24, 79.47it/s]
 27%|##7       | 2502/9216 [00:20<01:13, 91.94it/s]
 27%|##7       | 2516/9216 [00:20<01:05, 102.29it/s]
 27%|##7       | 2528/9216 [00:20<01:06, 100.36it/s]
 28%|##7       | 2540/9216 [00:21<01:47, 61.98it/s]
 28%|##7       | 2549/9216 [00:21<02:14, 49.58it/s]
 28%|##7       | 2556/9216 [00:21<02:13, 49.89it/s]
 28%|##7       | 2563/9216 [00:21<02:18, 48.12it/s]
 28%|##7       | 2577/9216 [00:22<01:43, 64.29it/s]
 28%|##8       | 2591/9216 [00:22<01:23, 78.91it/s]
 28%|##8       | 2605/9216 [00:22<01:12, 91.62it/s]
 28%|##8       | 2618/9216 [00:22<01:06, 98.71it/s]
 29%|##8       | 2630/9216 [00:22<02:12, 49.76it/s]
 29%|##8       | 2639/9216 [00:23<02:26, 44.90it/s]
 29%|##8       | 2646/9216 [00:23<02:58, 36.74it/s]
 29%|##8       | 2652/9216 [00:23<03:21, 32.65it/s]
 29%|##8       | 2657/9216 [00:23<03:29, 31.28it/s]
 29%|##8       | 2667/9216 [00:24<02:38, 41.34it/s]
 29%|##9       | 2681/9216 [00:24<01:52, 58.11it/s]
 29%|##9       | 2694/9216 [00:24<01:30, 72.21it/s]
 29%|##9       | 2708/9216 [00:24<01:15, 86.31it/s]
 30%|##9       | 2719/9216 [00:24<01:57, 55.31it/s]/opt/homebrew/Caskroom/miniforge/base/envs/dipy-39-x86/lib/python3.9/site-packages/cvxpy/problems/problem.py:1385: UserWarning: Solution may be inaccurate. Try another solver, adjusting the solver settings, or solve with verbose=True for more information.
  warnings.warn(

 30%|##9       | 2728/9216 [00:25<03:18, 32.73it/s]
 30%|##9       | 2735/9216 [00:25<03:05, 34.87it/s]
 30%|##9       | 2741/9216 [00:25<03:24, 31.72it/s]
 30%|##9       | 2746/9216 [00:26<04:12, 25.59it/s]
 30%|##9       | 2750/9216 [00:26<03:56, 27.32it/s]
 30%|##9       | 2754/9216 [00:26<03:52, 27.80it/s]
 30%|##9       | 2758/9216 [00:26<04:04, 26.44it/s]
 30%|###       | 2771/9216 [00:26<02:23, 44.80it/s]
 30%|###       | 2785/9216 [00:26<01:41, 63.38it/s]
 30%|###       | 2799/9216 [00:26<01:20, 79.59it/s]
 30%|###       | 2809/9216 [00:26<01:28, 72.26it/s]
 31%|###       | 2818/9216 [00:27<02:40, 39.87it/s]
 31%|###       | 2825/9216 [00:27<03:28, 30.67it/s]
 31%|###       | 2831/9216 [00:28<03:14, 32.77it/s]
 31%|###       | 2836/9216 [00:28<03:25, 31.02it/s]
 31%|###       | 2841/9216 [00:28<04:29, 23.63it/s]
 31%|###       | 2845/9216 [00:28<04:29, 23.66it/s]
 31%|###       | 2849/9216 [00:29<04:56, 21.46it/s]
 31%|###       | 2852/9216 [00:29<05:10, 20.50it/s]
 31%|###       | 2856/9216 [00:29<04:30, 23.54it/s]
 31%|###1      | 2869/9216 [00:29<02:26, 43.31it/s]
 31%|###1      | 2883/9216 [00:29<01:41, 62.66it/s]
 31%|###1      | 2897/9216 [00:29<01:19, 79.31it/s]
 32%|###1      | 2907/9216 [00:29<02:00, 52.27it/s]
 32%|###1      | 2915/9216 [00:30<02:40, 39.36it/s]
 32%|###1      | 2921/9216 [00:30<03:41, 28.43it/s]
 32%|###1      | 2926/9216 [00:30<03:32, 29.62it/s]
 32%|###1      | 2931/9216 [00:31<03:21, 31.16it/s]
 32%|###1      | 2936/9216 [00:31<03:57, 26.40it/s]
 32%|###1      | 2940/9216 [00:31<03:49, 27.38it/s]
 32%|###1      | 2944/9216 [00:31<05:09, 20.29it/s]
 32%|###1      | 2947/9216 [00:32<06:00, 17.37it/s]
 32%|###2      | 2951/9216 [00:32<05:12, 20.02it/s]
 32%|###2      | 2957/9216 [00:32<03:57, 26.37it/s]
 32%|###2      | 2970/9216 [00:32<02:16, 45.71it/s]
 32%|###2      | 2983/9216 [00:32<01:38, 63.51it/s]
 33%|###2      | 2996/9216 [00:32<01:20, 76.80it/s]
 33%|###2      | 3006/9216 [00:33<02:12, 46.91it/s]
 33%|###2      | 3014/9216 [00:33<03:43, 27.81it/s]
 33%|###2      | 3020/9216 [00:33<03:40, 28.04it/s]
 33%|###2      | 3025/9216 [00:33<03:33, 29.06it/s]
 33%|###2      | 3030/9216 [00:34<03:26, 29.99it/s]
 33%|###2      | 3035/9216 [00:34<03:33, 29.01it/s]
 33%|###2      | 3039/9216 [00:34<04:15, 24.22it/s]
 33%|###3      | 3042/9216 [00:34<05:41, 18.10it/s]
 33%|###3      | 3045/9216 [00:35<05:53, 17.44it/s]
 33%|###3      | 3048/9216 [00:35<05:21, 19.18it/s]
 33%|###3      | 3051/9216 [00:35<04:58, 20.65it/s]
 33%|###3      | 3064/9216 [00:35<02:28, 41.56it/s]
 33%|###3      | 3077/9216 [00:35<01:41, 60.34it/s]
 34%|###3      | 3090/9216 [00:35<01:20, 76.37it/s]
 34%|###3      | 3100/9216 [00:36<02:14, 45.43it/s]
 34%|###3      | 3108/9216 [00:36<02:59, 34.06it/s]
 34%|###3      | 3114/9216 [00:36<03:33, 28.53it/s]
 34%|###3      | 3119/9216 [00:36<03:28, 29.21it/s]
 34%|###3      | 3124/9216 [00:37<03:45, 27.00it/s]
 34%|###3      | 3128/9216 [00:37<03:36, 28.08it/s]
 34%|###3      | 3132/9216 [00:37<03:52, 26.12it/s]
 34%|###4      | 3137/9216 [00:37<03:57, 25.63it/s]
 34%|###4      | 3140/9216 [00:38<05:06, 19.86it/s]
 34%|###4      | 3143/9216 [00:38<05:51, 17.28it/s]
 34%|###4      | 3147/9216 [00:38<05:21, 18.90it/s]
 34%|###4      | 3160/9216 [00:38<02:42, 37.36it/s]
 34%|###4      | 3174/9216 [00:38<01:47, 56.45it/s]
 35%|###4      | 3186/9216 [00:38<01:28, 68.27it/s]
 35%|###4      | 3195/9216 [00:39<02:19, 43.03it/s]
 35%|###4      | 3202/9216 [00:39<03:12, 31.28it/s]
 35%|###4      | 3208/9216 [00:40<04:09, 24.11it/s]
 35%|###4      | 3213/9216 [00:40<04:19, 23.13it/s]
 35%|###4      | 3217/9216 [00:40<04:04, 24.59it/s]
 35%|###4      | 3222/9216 [00:40<03:31, 28.27it/s]
 35%|###5      | 3226/9216 [00:40<04:05, 24.43it/s]
 35%|###5      | 3230/9216 [00:40<04:00, 24.90it/s]
 35%|###5      | 3234/9216 [00:41<04:38, 21.46it/s]
 35%|###5      | 3237/9216 [00:41<04:56, 20.17it/s]
 35%|###5      | 3241/9216 [00:41<04:35, 21.71it/s]
 35%|###5      | 3248/9216 [00:41<03:14, 30.63it/s]
 35%|###5      | 3261/9216 [00:41<01:56, 51.26it/s]
 36%|###5      | 3275/9216 [00:41<01:24, 70.57it/s]
 36%|###5      | 3284/9216 [00:41<01:31, 64.89it/s]
 36%|###5      | 3292/9216 [00:42<02:43, 36.31it/s]
 36%|###5      | 3298/9216 [00:42<03:18, 29.82it/s]
 36%|###5      | 3303/9216 [00:43<04:15, 23.14it/s]
 36%|###5      | 3307/9216 [00:43<04:20, 22.71it/s]
 36%|###5      | 3311/9216 [00:43<04:13, 23.26it/s]
 36%|###5      | 3314/9216 [00:43<04:05, 24.04it/s]
 36%|###6      | 3319/9216 [00:43<03:27, 28.41it/s]
 36%|###6      | 3324/9216 [00:43<03:06, 31.61it/s]
 36%|###6      | 3328/9216 [00:43<03:09, 31.02it/s]
 36%|###6      | 3332/9216 [00:44<05:32, 17.71it/s]
 36%|###6      | 3336/9216 [00:44<05:05, 19.23it/s]
 36%|###6      | 3339/9216 [00:44<04:41, 20.87it/s]
 36%|###6      | 3353/9216 [00:44<02:18, 42.46it/s]
 37%|###6      | 3367/9216 [00:44<01:34, 62.04it/s]
 37%|###6      | 3376/9216 [00:45<01:30, 64.53it/s]
 37%|###6      | 3384/9216 [00:45<02:07, 45.70it/s]
 37%|###6      | 3391/9216 [00:45<03:20, 29.01it/s]
 37%|###6      | 3396/9216 [00:46<03:30, 27.60it/s]
 37%|###6      | 3401/9216 [00:46<04:45, 20.39it/s]
 37%|###6      | 3405/9216 [00:46<04:23, 22.02it/s]
 37%|###6      | 3409/9216 [00:46<04:04, 23.71it/s]
 37%|###7      | 3413/9216 [00:47<05:07, 18.86it/s]
 37%|###7      | 3417/9216 [00:47<04:37, 20.93it/s]
 37%|###7      | 3422/9216 [00:47<04:05, 23.64it/s]
 37%|###7      | 3425/9216 [00:47<04:25, 21.78it/s]
 37%|###7      | 3428/9216 [00:47<05:11, 18.57it/s]
 37%|###7      | 3431/9216 [00:48<05:18, 18.15it/s]
 37%|###7      | 3440/9216 [00:48<03:07, 30.80it/s]
 37%|###7      | 3452/9216 [00:48<01:58, 48.80it/s]
 38%|###7      | 3465/9216 [00:48<01:26, 66.13it/s]
 38%|###7      | 3474/9216 [00:48<02:00, 47.47it/s]
 38%|###7      | 3481/9216 [00:49<03:40, 26.03it/s]
 38%|###7      | 3486/9216 [00:49<03:48, 25.07it/s]
 38%|###7      | 3491/9216 [00:49<04:07, 23.12it/s]
 38%|###7      | 3495/9216 [00:50<04:55, 19.36it/s]
 38%|###7      | 3498/9216 [00:50<05:51, 16.29it/s]
 38%|###7      | 3501/9216 [00:50<06:10, 15.44it/s]
 38%|###8      | 3503/9216 [00:50<06:09, 15.46it/s]
 38%|###8      | 3505/9216 [00:50<06:19, 15.06it/s]
 38%|###8      | 3507/9216 [00:51<07:17, 13.04it/s]
 38%|###8      | 3509/9216 [00:51<09:43,  9.79it/s]
 38%|###8      | 3511/9216 [00:51<09:28, 10.03it/s]
 38%|###8      | 3516/9216 [00:51<05:56, 16.01it/s]
 38%|###8      | 3519/9216 [00:51<05:24, 17.56it/s]
 38%|###8      | 3522/9216 [00:52<05:34, 17.04it/s]
 38%|###8      | 3525/9216 [00:52<07:51, 12.07it/s]
 38%|###8      | 3527/9216 [00:52<07:36, 12.46it/s]
 38%|###8      | 3533/9216 [00:52<04:43, 20.06it/s]
 38%|###8      | 3544/9216 [00:52<02:35, 36.56it/s]
 39%|###8      | 3556/9216 [00:53<01:45, 53.51it/s]
 39%|###8      | 3568/9216 [00:53<01:26, 65.06it/s]
 39%|###8      | 3576/9216 [00:53<02:59, 31.49it/s]
 39%|###8      | 3582/9216 [00:54<04:12, 22.27it/s]
 39%|###8      | 3587/9216 [00:54<04:11, 22.35it/s]
 39%|###8      | 3591/9216 [00:54<04:03, 23.06it/s]
 39%|###9      | 3595/9216 [00:54<04:20, 21.56it/s]
 39%|###9      | 3598/9216 [00:55<05:21, 17.49it/s]
 39%|###9      | 3601/9216 [00:55<05:38, 16.57it/s]
 39%|###9      | 3604/9216 [00:55<05:47, 16.14it/s]
 39%|###9      | 3606/9216 [00:55<06:23, 14.63it/s]
 39%|###9      | 3608/9216 [00:56<07:01, 13.29it/s]
 39%|###9      | 3610/9216 [00:56<06:31, 14.30it/s]
 39%|###9      | 3614/9216 [00:56<05:10, 18.05it/s]
 39%|###9      | 3617/9216 [00:56<07:17, 12.80it/s]
 39%|###9      | 3619/9216 [00:56<07:20, 12.71it/s]
 39%|###9      | 3621/9216 [00:56<07:27, 12.49it/s]
 39%|###9      | 3623/9216 [00:57<06:52, 13.57it/s]
 39%|###9      | 3628/9216 [00:57<04:40, 19.94it/s]
 39%|###9      | 3633/9216 [00:57<03:33, 26.18it/s]
 40%|###9      | 3645/9216 [00:57<01:57, 47.30it/s]
 40%|###9      | 3657/9216 [00:57<01:26, 64.22it/s]
 40%|###9      | 3665/9216 [00:57<01:24, 65.90it/s]
 40%|###9      | 3673/9216 [00:58<02:47, 33.14it/s]
 40%|###9      | 3679/9216 [00:58<03:52, 23.80it/s]
 40%|###9      | 3685/9216 [00:58<03:17, 27.96it/s]
 40%|####      | 3690/9216 [00:59<03:59, 23.09it/s]
 40%|####      | 3694/9216 [00:59<04:47, 19.19it/s]
 40%|####      | 3697/9216 [00:59<04:36, 19.93it/s]
 40%|####      | 3700/9216 [00:59<04:17, 21.41it/s]
 40%|####      | 3703/9216 [00:59<04:15, 21.56it/s]
 40%|####      | 3706/9216 [01:00<05:03, 18.16it/s]
 40%|####      | 3709/9216 [01:00<08:06, 11.32it/s]
 40%|####      | 3711/9216 [01:00<07:46, 11.81it/s]
 40%|####      | 3713/9216 [01:00<07:45, 11.83it/s]
 40%|####      | 3715/9216 [01:01<07:22, 12.43it/s]
 40%|####      | 3718/9216 [01:01<06:45, 13.57it/s]
 40%|####      | 3720/9216 [01:01<06:25, 14.26it/s]
 40%|####      | 3723/9216 [01:01<06:25, 14.26it/s]
 40%|####      | 3725/9216 [01:01<06:08, 14.91it/s]
 40%|####      | 3727/9216 [01:01<05:46, 15.84it/s]
 41%|####      | 3738/9216 [01:01<02:28, 36.94it/s]
 41%|####      | 3752/9216 [01:01<01:29, 61.25it/s]
 41%|####      | 3761/9216 [01:02<01:21, 66.70it/s]
 41%|####      | 3769/9216 [01:02<02:26, 37.25it/s]
 41%|####      | 3775/9216 [01:02<03:40, 24.65it/s]
 41%|####1     | 3780/9216 [01:03<03:26, 26.37it/s]
 41%|####1     | 3785/9216 [01:03<03:19, 27.16it/s]
 41%|####1     | 3789/9216 [01:03<03:51, 23.48it/s]
 41%|####1     | 3793/9216 [01:03<03:41, 24.54it/s]
 41%|####1     | 3797/9216 [01:04<04:40, 19.31it/s]
 41%|####1     | 3800/9216 [01:04<04:34, 19.75it/s]
 41%|####1     | 3803/9216 [01:04<04:57, 18.22it/s]
 41%|####1     | 3806/9216 [01:04<04:51, 18.55it/s]
 41%|####1     | 3809/9216 [01:04<04:50, 18.63it/s]
 41%|####1     | 3812/9216 [01:04<05:22, 16.76it/s]
 41%|####1     | 3814/9216 [01:05<05:59, 15.02it/s]
 41%|####1     | 3816/9216 [01:05<06:51, 13.12it/s]
 41%|####1     | 3818/9216 [01:05<07:39, 11.75it/s]
 41%|####1     | 3823/9216 [01:05<05:15, 17.10it/s]
 42%|####1     | 3836/9216 [01:05<02:22, 37.66it/s]
 42%|####1     | 3850/9216 [01:05<01:32, 58.31it/s]
 42%|####1     | 3858/9216 [01:06<01:54, 46.82it/s]
 42%|####1     | 3865/9216 [01:06<02:49, 31.62it/s]
 42%|####1     | 3870/9216 [01:06<02:39, 33.45it/s]
 42%|####2     | 3875/9216 [01:06<02:56, 30.20it/s]
 42%|####2     | 3881/9216 [01:07<02:54, 30.51it/s]
 42%|####2     | 3885/9216 [01:07<03:58, 22.32it/s]
 42%|####2     | 3889/9216 [01:07<03:43, 23.85it/s]
 42%|####2     | 3892/9216 [01:07<03:44, 23.68it/s]
 42%|####2     | 3895/9216 [01:07<03:45, 23.59it/s]
 42%|####2     | 3898/9216 [01:07<03:50, 23.08it/s]
 42%|####2     | 3901/9216 [01:08<04:55, 17.99it/s]
 42%|####2     | 3904/9216 [01:08<05:25, 16.33it/s]
 42%|####2     | 3906/9216 [01:08<06:18, 14.03it/s]
 42%|####2     | 3908/9216 [01:08<06:46, 13.07it/s]
 42%|####2     | 3910/9216 [01:09<06:36, 13.38it/s]
 42%|####2     | 3912/9216 [01:09<06:31, 13.55it/s]
 42%|####2     | 3914/9216 [01:09<06:05, 14.52it/s]
 43%|####2     | 3918/9216 [01:09<05:17, 16.70it/s]
 43%|####2     | 3920/9216 [01:09<05:10, 17.07it/s]
 43%|####2     | 3934/9216 [01:09<01:59, 44.07it/s]
 43%|####2     | 3948/9216 [01:09<01:19, 66.27it/s]
 43%|####2     | 3956/9216 [01:10<02:28, 35.32it/s]
 43%|####2     | 3962/9216 [01:10<03:01, 29.01it/s]
 43%|####3     | 3967/9216 [01:10<02:48, 31.07it/s]
 43%|####3     | 3972/9216 [01:11<03:40, 23.81it/s]
 43%|####3     | 3977/9216 [01:11<03:28, 25.07it/s]
 43%|####3     | 3981/9216 [01:11<04:16, 20.42it/s]
 43%|####3     | 3984/9216 [01:11<05:10, 16.85it/s]
 43%|####3     | 3987/9216 [01:12<05:10, 16.85it/s]
 43%|####3     | 3990/9216 [01:12<05:23, 16.14it/s]
 43%|####3     | 3993/9216 [01:12<05:07, 16.97it/s]
 43%|####3     | 3996/9216 [01:12<04:36, 18.88it/s]
 43%|####3     | 3999/9216 [01:12<06:26, 13.51it/s]
 43%|####3     | 4001/9216 [01:13<06:53, 12.60it/s]
 43%|####3     | 4004/9216 [01:13<05:56, 14.60it/s]
 43%|####3     | 4006/9216 [01:13<06:08, 14.13it/s]
 43%|####3     | 4008/9216 [01:13<07:46, 11.16it/s]
 44%|####3     | 4010/9216 [01:14<08:55,  9.71it/s]
 44%|####3     | 4012/9216 [01:14<08:30, 10.20it/s]
 44%|####3     | 4014/9216 [01:14<08:20, 10.39it/s]
 44%|####3     | 4023/9216 [01:14<03:38, 23.73it/s]
 44%|####3     | 4037/9216 [01:14<01:52, 45.83it/s]
 44%|####3     | 4046/9216 [01:14<01:47, 48.12it/s]
 44%|####3     | 4052/9216 [01:15<02:54, 29.51it/s]
 44%|####4     | 4057/9216 [01:15<04:16, 20.13it/s]
 44%|####4     | 4062/9216 [01:15<03:48, 22.54it/s]
 44%|####4     | 4066/9216 [01:16<04:05, 21.02it/s]
 44%|####4     | 4069/9216 [01:16<03:56, 21.75it/s]
 44%|####4     | 4073/9216 [01:16<03:48, 22.51it/s]
 44%|####4     | 4076/9216 [01:16<04:49, 17.75it/s]
 44%|####4     | 4079/9216 [01:16<05:41, 15.03it/s]
 44%|####4     | 4081/9216 [01:17<05:50, 14.63it/s]
 44%|####4     | 4083/9216 [01:17<05:56, 14.42it/s]
 44%|####4     | 4085/9216 [01:17<06:05, 14.05it/s]
 44%|####4     | 4087/9216 [01:17<05:45, 14.85it/s]
 44%|####4     | 4090/9216 [01:17<04:58, 17.19it/s]
 44%|####4     | 4092/9216 [01:17<04:48, 17.76it/s]
 44%|####4     | 4096/9216 [01:17<04:34, 18.63it/s]
 44%|####4     | 4098/9216 [01:18<04:53, 17.44it/s]
 44%|####4     | 4100/9216 [01:18<04:57, 17.22it/s]
 45%|####4     | 4102/9216 [01:18<05:18, 16.04it/s]
 45%|####4     | 4104/9216 [01:18<07:11, 11.85it/s]
 45%|####4     | 4106/9216 [01:18<08:38,  9.85it/s]
 45%|####4     | 4108/9216 [01:19<09:00,  9.45it/s]
 45%|####4     | 4110/9216 [01:19<09:42,  8.76it/s]
 45%|####4     | 4118/9216 [01:19<04:21, 19.52it/s]
 45%|####4     | 4131/9216 [01:19<02:11, 38.78it/s]
 45%|####4     | 4141/9216 [01:19<01:44, 48.56it/s]
 45%|####5     | 4148/9216 [01:20<02:39, 31.86it/s]
 45%|####5     | 4153/9216 [01:20<03:40, 22.97it/s]
 45%|####5     | 4159/9216 [01:20<03:18, 25.45it/s]
 45%|####5     | 4163/9216 [01:21<04:02, 20.81it/s]
 45%|####5     | 4166/9216 [01:21<04:05, 20.55it/s]
 45%|####5     | 4169/9216 [01:21<03:51, 21.77it/s]
 45%|####5     | 4172/9216 [01:21<04:30, 18.66it/s]
 45%|####5     | 4175/9216 [01:21<05:21, 15.69it/s]
 45%|####5     | 4177/9216 [01:22<06:07, 13.71it/s]
 45%|####5     | 4180/9216 [01:22<05:54, 14.21it/s]
 45%|####5     | 4182/9216 [01:22<05:47, 14.49it/s]
 45%|####5     | 4185/9216 [01:22<04:54, 17.10it/s]
 45%|####5     | 4191/9216 [01:22<03:40, 22.77it/s]
 46%|####5     | 4194/9216 [01:22<03:54, 21.39it/s]
 46%|####5     | 4197/9216 [01:23<04:33, 18.36it/s]
 46%|####5     | 4200/9216 [01:23<05:02, 16.58it/s]
 46%|####5     | 4202/9216 [01:23<05:19, 15.68it/s]
 46%|####5     | 4204/9216 [01:23<05:24, 15.46it/s]
 46%|####5     | 4208/9216 [01:23<04:11, 19.95it/s]
 46%|####5     | 4221/9216 [01:23<01:53, 44.11it/s]
 46%|####5     | 4235/9216 [01:23<01:15, 66.14it/s]
 46%|####6     | 4243/9216 [01:24<01:57, 42.46it/s]
 46%|####6     | 4250/9216 [01:24<03:04, 26.86it/s]
 46%|####6     | 4255/9216 [01:24<02:52, 28.83it/s]
 46%|####6     | 4260/9216 [01:25<04:06, 20.12it/s]
 46%|####6     | 4264/9216 [01:25<03:50, 21.47it/s]
 46%|####6     | 4268/9216 [01:25<04:52, 16.90it/s]
 46%|####6     | 4271/9216 [01:26<05:41, 14.46it/s]
 46%|####6     | 4274/9216 [01:26<05:57, 13.83it/s]
 46%|####6     | 4276/9216 [01:26<07:07, 11.56it/s]
 46%|####6     | 4279/9216 [01:26<06:04, 13.55it/s]
 46%|####6     | 4282/9216 [01:27<05:14, 15.69it/s]
 47%|####6     | 4287/9216 [01:27<03:52, 21.22it/s]
 47%|####6     | 4290/9216 [01:27<04:55, 16.68it/s]
 47%|####6     | 4293/9216 [01:27<04:31, 18.16it/s]
 47%|####6     | 4297/9216 [01:27<04:15, 19.28it/s]
 47%|####6     | 4300/9216 [01:27<03:56, 20.76it/s]
 47%|####6     | 4306/9216 [01:28<02:52, 28.47it/s]
 47%|####6     | 4320/9216 [01:28<01:32, 53.01it/s]
 47%|####7     | 4333/9216 [01:28<01:08, 70.87it/s]
 47%|####7     | 4342/9216 [01:28<02:19, 34.84it/s]
 47%|####7     | 4349/9216 [01:28<02:14, 36.24it/s]
 47%|####7     | 4355/9216 [01:29<03:23, 23.87it/s]
 47%|####7     | 4360/9216 [01:29<03:13, 25.04it/s]
 47%|####7     | 4364/9216 [01:30<04:11, 19.26it/s]
 47%|####7     | 4368/9216 [01:30<05:06, 15.81it/s]
 47%|####7     | 4371/9216 [01:30<05:06, 15.80it/s]
 48%|####7     | 4381/9216 [01:30<03:08, 25.62it/s]
 48%|####7     | 4385/9216 [01:30<03:10, 25.32it/s]
 48%|####7     | 4389/9216 [01:31<03:23, 23.71it/s]
 48%|####7     | 4393/9216 [01:31<03:24, 23.58it/s]
 48%|####7     | 4396/9216 [01:31<03:40, 21.87it/s]
 48%|####7     | 4400/9216 [01:31<03:12, 25.00it/s]
 48%|####7     | 4414/9216 [01:31<01:40, 47.79it/s]
 48%|####8     | 4428/9216 [01:31<01:11, 67.39it/s]
 48%|####8     | 4437/9216 [01:32<01:57, 40.61it/s]
 48%|####8     | 4444/9216 [01:32<02:10, 36.66it/s]
 48%|####8     | 4450/9216 [01:32<02:42, 29.36it/s]
 48%|####8     | 4455/9216 [01:33<02:54, 27.30it/s]
 48%|####8     | 4460/9216 [01:33<02:38, 29.92it/s]
 48%|####8     | 4464/9216 [01:33<03:40, 21.57it/s]
 48%|####8     | 4467/9216 [01:33<03:50, 20.63it/s]
 49%|####8     | 4477/9216 [01:33<02:28, 31.82it/s]
 49%|####8     | 4482/9216 [01:34<02:47, 28.26it/s]
 49%|####8     | 4487/9216 [01:34<02:31, 31.12it/s]
 49%|####8     | 4491/9216 [01:34<02:38, 29.87it/s]
 49%|####8     | 4495/9216 [01:34<02:30, 31.45it/s]
 49%|####8     | 4508/9216 [01:34<01:29, 52.45it/s]
 49%|####9     | 4521/9216 [01:34<01:06, 70.43it/s]
 49%|####9     | 4530/9216 [01:34<01:31, 51.13it/s]
 49%|####9     | 4537/9216 [01:35<01:52, 41.75it/s]
 49%|####9     | 4543/9216 [01:35<02:11, 35.41it/s]
 49%|####9     | 4548/9216 [01:35<02:30, 31.01it/s]
 49%|####9     | 4552/9216 [01:35<02:52, 27.03it/s]
 49%|####9     | 4557/9216 [01:36<02:34, 30.10it/s]
 49%|####9     | 4561/9216 [01:36<03:19, 23.28it/s]
 50%|####9     | 4569/9216 [01:36<02:24, 32.10it/s]
 50%|####9     | 4574/9216 [01:36<02:20, 32.98it/s]
 50%|####9     | 4579/9216 [01:36<02:37, 29.43it/s]
 50%|####9     | 4586/9216 [01:36<02:15, 34.15it/s]
 50%|####9     | 4591/9216 [01:37<02:05, 36.73it/s]
 50%|####9     | 4604/9216 [01:37<01:21, 56.73it/s]
 50%|#####     | 4618/9216 [01:37<01:00, 75.42it/s]
 50%|#####     | 4627/9216 [01:37<01:08, 66.51it/s]
 50%|#####     | 4635/9216 [01:37<01:30, 50.84it/s]
 50%|#####     | 4642/9216 [01:37<01:29, 51.01it/s]
 50%|#####     | 4648/9216 [01:38<01:57, 38.79it/s]
 51%|#####     | 4656/9216 [01:38<01:42, 44.36it/s]
 51%|#####     | 4662/9216 [01:38<02:02, 37.04it/s]
 51%|#####     | 4668/9216 [01:38<01:50, 41.00it/s]
 51%|#####     | 4673/9216 [01:38<02:00, 37.67it/s]
 51%|#####     | 4680/9216 [01:38<01:43, 43.87it/s]
 51%|#####     | 4693/9216 [01:38<01:12, 62.60it/s]
 51%|#####1    | 4707/9216 [01:39<00:56, 80.30it/s]
 51%|#####1    | 4719/9216 [01:39<00:50, 88.74it/s]
 51%|#####1    | 4729/9216 [01:39<00:59, 75.62it/s]
 51%|#####1    | 4738/9216 [01:39<01:10, 63.45it/s]
 51%|#####1    | 4746/9216 [01:39<01:31, 49.10it/s]
 52%|#####1    | 4752/9216 [01:40<02:14, 33.17it/s]
 52%|#####1    | 4757/9216 [01:40<02:40, 27.77it/s]
 52%|#####1    | 4765/9216 [01:40<02:09, 34.38it/s]
 52%|#####1    | 4770/9216 [01:40<02:11, 33.86it/s]
 52%|#####1    | 4777/9216 [01:40<01:52, 39.63it/s]
 52%|#####1    | 4785/9216 [01:40<01:34, 47.10it/s]
 52%|#####2    | 4799/9216 [01:41<01:06, 66.63it/s]
 52%|#####2    | 4812/9216 [01:41<00:53, 81.57it/s]
 52%|#####2    | 4822/9216 [01:41<01:07, 64.84it/s]
 52%|#####2    | 4830/9216 [01:41<01:12, 60.20it/s]
 52%|#####2    | 4838/9216 [01:41<01:37, 44.67it/s]
 53%|#####2    | 4844/9216 [01:42<01:40, 43.30it/s]
 53%|#####2    | 4850/9216 [01:42<03:00, 24.13it/s]
 53%|#####2    | 4860/9216 [01:42<02:13, 32.72it/s]
 53%|#####2    | 4866/9216 [01:43<02:39, 27.21it/s]
 53%|#####2    | 4871/9216 [01:43<02:37, 27.59it/s]
 53%|#####2    | 4875/9216 [01:43<02:42, 26.71it/s]
 53%|#####2    | 4884/9216 [01:43<01:57, 36.78it/s]
 53%|#####3    | 4898/9216 [01:43<01:18, 55.27it/s]
 53%|#####3    | 4909/9216 [01:43<01:08, 63.33it/s]
 53%|#####3    | 4917/9216 [01:44<01:40, 42.83it/s]
 53%|#####3    | 4924/9216 [01:44<01:40, 42.86it/s]
 53%|#####3    | 4930/9216 [01:44<01:56, 36.93it/s]
 54%|#####3    | 4935/9216 [01:44<02:25, 29.36it/s]
 54%|#####3    | 4939/9216 [01:45<02:39, 26.83it/s]
 54%|#####3    | 4943/9216 [01:45<04:01, 17.68it/s]
 54%|#####3    | 4946/9216 [01:45<05:10, 13.74it/s]
 54%|#####3    | 4948/9216 [01:46<04:56, 14.39it/s]
 54%|#####3    | 4953/9216 [01:46<03:42, 19.13it/s]
 54%|#####3    | 4958/9216 [01:46<03:03, 23.18it/s]
 54%|#####3    | 4962/9216 [01:46<03:43, 19.03it/s]
 54%|#####3    | 4965/9216 [01:46<03:32, 19.97it/s]
 54%|#####3    | 4968/9216 [01:46<03:42, 19.13it/s]
 54%|#####3    | 4973/9216 [01:47<03:09, 22.37it/s]
 54%|#####4    | 4978/9216 [01:47<02:34, 27.44it/s]
 54%|#####4    | 4992/9216 [01:47<01:22, 50.92it/s]
 54%|#####4    | 5005/9216 [01:47<01:05, 64.77it/s]
 54%|#####4    | 5013/9216 [01:47<02:10, 32.31it/s]
 54%|#####4    | 5019/9216 [01:48<02:24, 28.97it/s]
 55%|#####4    | 5024/9216 [01:48<02:40, 26.07it/s]
 55%|#####4    | 5028/9216 [01:48<02:56, 23.74it/s]
 55%|#####4    | 5032/9216 [01:48<02:48, 24.80it/s]
 55%|#####4    | 5036/9216 [01:49<04:20, 16.03it/s]
 55%|#####4    | 5039/9216 [01:49<04:44, 14.69it/s]
 55%|#####4    | 5042/9216 [01:49<05:04, 13.72it/s]
 55%|#####4    | 5044/9216 [01:50<05:39, 12.30it/s]
 55%|#####4    | 5046/9216 [01:50<05:40, 12.26it/s]
 55%|#####4    | 5050/9216 [01:50<04:22, 15.86it/s]
 55%|#####4    | 5054/9216 [01:50<03:34, 19.38it/s]
 55%|#####4    | 5057/9216 [01:50<03:55, 17.64it/s]
 55%|#####4    | 5060/9216 [01:50<03:57, 17.48it/s]
 55%|#####4    | 5062/9216 [01:51<04:11, 16.53it/s]
 55%|#####4    | 5065/9216 [01:51<03:42, 18.69it/s]
 55%|#####4    | 5068/9216 [01:51<04:10, 16.58it/s]
 55%|#####5    | 5070/9216 [01:51<04:08, 16.69it/s]
 55%|#####5    | 5072/9216 [01:51<04:24, 15.66it/s]
 55%|#####5    | 5082/9216 [01:51<02:03, 33.58it/s]
 55%|#####5    | 5095/9216 [01:51<01:13, 56.05it/s]
 55%|#####5    | 5103/9216 [01:52<01:11, 57.43it/s]
 55%|#####5    | 5110/9216 [01:52<02:20, 29.24it/s]
 56%|#####5    | 5115/9216 [01:52<02:28, 27.63it/s]
 56%|#####5    | 5120/9216 [01:52<02:19, 29.39it/s]
 56%|#####5    | 5125/9216 [01:53<02:32, 26.84it/s]
 56%|#####5    | 5129/9216 [01:53<02:44, 24.91it/s]
 56%|#####5    | 5133/9216 [01:53<04:04, 16.68it/s]
 56%|#####5    | 5136/9216 [01:54<04:26, 15.33it/s]
 56%|#####5    | 5139/9216 [01:54<04:24, 15.43it/s]
 56%|#####5    | 5141/9216 [01:54<04:19, 15.69it/s]
 56%|#####5    | 5143/9216 [01:54<04:08, 16.39it/s]
 56%|#####5    | 5147/9216 [01:54<03:43, 18.19it/s]
 56%|#####5    | 5151/9216 [01:54<03:05, 21.95it/s]
 56%|#####5    | 5154/9216 [01:55<03:21, 20.18it/s]
 56%|#####5    | 5157/9216 [01:55<04:10, 16.18it/s]
 56%|#####6    | 5162/9216 [01:55<03:35, 18.85it/s]
 56%|#####6    | 5165/9216 [01:55<03:53, 17.33it/s]
 56%|#####6    | 5169/9216 [01:55<03:12, 21.05it/s]
 56%|#####6    | 5181/9216 [01:55<01:39, 40.44it/s]
 56%|#####6    | 5194/9216 [01:56<01:07, 59.94it/s]
 56%|#####6    | 5202/9216 [01:56<01:16, 52.34it/s]
 57%|#####6    | 5209/9216 [01:56<02:26, 27.27it/s]
 57%|#####6    | 5215/9216 [01:56<02:12, 30.27it/s]
 57%|#####6    | 5220/9216 [01:57<02:29, 26.74it/s]
 57%|#####6    | 5224/9216 [01:57<02:26, 27.18it/s]
 57%|#####6    | 5228/9216 [01:57<03:12, 20.76it/s]
 57%|#####6    | 5231/9216 [01:57<03:49, 17.35it/s]
 57%|#####6    | 5234/9216 [01:58<03:59, 16.66it/s]
 57%|#####6    | 5237/9216 [01:58<03:35, 18.44it/s]
 57%|#####6    | 5240/9216 [01:58<03:43, 17.82it/s]
 57%|#####6    | 5243/9216 [01:58<03:31, 18.79it/s]
 57%|#####6    | 5247/9216 [01:58<03:01, 21.82it/s]
 57%|#####6    | 5250/9216 [01:58<03:25, 19.32it/s]
 57%|#####6    | 5253/9216 [01:59<03:23, 19.46it/s]
 57%|#####7    | 5256/9216 [01:59<03:07, 21.09it/s]
 57%|#####7    | 5259/9216 [01:59<03:45, 17.54it/s]
 57%|#####7    | 5261/9216 [01:59<03:51, 17.07it/s]
 57%|#####7    | 5263/9216 [01:59<03:57, 16.61it/s]
 57%|#####7    | 5265/9216 [01:59<04:04, 16.16it/s]
 57%|#####7    | 5277/9216 [01:59<01:39, 39.45it/s]
 57%|#####7    | 5290/9216 [02:00<01:05, 60.39it/s]
 57%|#####7    | 5297/9216 [02:00<01:05, 59.85it/s]
 58%|#####7    | 5304/9216 [02:00<02:19, 28.11it/s]
 58%|#####7    | 5310/9216 [02:01<02:32, 25.67it/s]
 58%|#####7    | 5315/9216 [02:01<02:47, 23.31it/s]
 58%|#####7    | 5319/9216 [02:01<02:35, 25.11it/s]
 58%|#####7    | 5323/9216 [02:01<03:24, 19.01it/s]
 58%|#####7    | 5326/9216 [02:01<03:32, 18.31it/s]
 58%|#####7    | 5329/9216 [02:02<03:18, 19.63it/s]
 58%|#####7    | 5332/9216 [02:02<03:48, 17.03it/s]
 58%|#####7    | 5335/9216 [02:02<03:25, 18.89it/s]
 58%|#####7    | 5338/9216 [02:02<03:24, 18.94it/s]
 58%|#####7    | 5341/9216 [02:02<03:28, 18.56it/s]
 58%|#####7    | 5344/9216 [02:03<04:41, 13.73it/s]
 58%|#####8    | 5346/9216 [02:03<05:42, 11.29it/s]
 58%|#####8    | 5348/9216 [02:03<05:57, 10.82it/s]
 58%|#####8    | 5350/9216 [02:03<06:25, 10.03it/s]
 58%|#####8    | 5352/9216 [02:04<06:52,  9.38it/s]
 58%|#####8    | 5354/9216 [02:04<07:08,  9.02it/s]
 58%|#####8    | 5356/9216 [02:04<06:32,  9.83it/s]
 58%|#####8    | 5360/9216 [02:04<04:31, 14.18it/s]
 58%|#####8    | 5371/9216 [02:04<02:02, 31.49it/s]
 58%|#####8    | 5384/9216 [02:04<01:13, 51.81it/s]
 58%|#####8    | 5391/9216 [02:05<01:13, 51.69it/s]
 59%|#####8    | 5398/9216 [02:05<02:05, 30.31it/s]
 59%|#####8    | 5403/9216 [02:05<02:31, 25.22it/s]
 59%|#####8    | 5407/9216 [02:05<02:37, 24.23it/s]
 59%|#####8    | 5411/9216 [02:06<02:49, 22.43it/s]
 59%|#####8    | 5417/9216 [02:06<02:33, 24.70it/s]
 59%|#####8    | 5420/9216 [02:06<02:49, 22.39it/s]
 59%|#####8    | 5423/9216 [02:06<02:42, 23.30it/s]
 59%|#####8    | 5427/9216 [02:06<02:34, 24.47it/s]
 59%|#####8    | 5430/9216 [02:07<02:51, 22.03it/s]
 59%|#####8    | 5433/9216 [02:07<02:43, 23.11it/s]
 59%|#####8    | 5436/9216 [02:07<03:06, 20.23it/s]
 59%|#####9    | 5439/9216 [02:07<04:27, 14.12it/s]
 59%|#####9    | 5441/9216 [02:07<05:10, 12.17it/s]
 59%|#####9    | 5443/9216 [02:08<05:22, 11.69it/s]
 59%|#####9    | 5445/9216 [02:08<05:15, 11.94it/s]
 59%|#####9    | 5447/9216 [02:08<05:34, 11.25it/s]
 59%|#####9    | 5449/9216 [02:08<06:04, 10.35it/s]
 59%|#####9    | 5451/9216 [02:08<05:48, 10.81it/s]
 59%|#####9    | 5453/9216 [02:09<05:46, 10.87it/s]
 59%|#####9    | 5455/9216 [02:09<05:04, 12.36it/s]
 59%|#####9    | 5462/9216 [02:09<02:36, 23.95it/s]
 59%|#####9    | 5476/9216 [02:09<01:15, 49.39it/s]
 60%|#####9    | 5486/9216 [02:09<01:00, 61.39it/s]
 60%|#####9    | 5494/9216 [02:10<02:07, 29.26it/s]
 60%|#####9    | 5500/9216 [02:10<02:25, 25.50it/s]
 60%|#####9    | 5505/9216 [02:10<02:34, 24.01it/s]
 60%|#####9    | 5509/9216 [02:10<02:22, 26.10it/s]
 60%|#####9    | 5513/9216 [02:10<02:34, 24.02it/s]
 60%|#####9    | 5517/9216 [02:11<02:47, 22.11it/s]
 60%|#####9    | 5520/9216 [02:11<02:39, 23.23it/s]
 60%|#####9    | 5523/9216 [02:11<03:01, 20.36it/s]
 60%|#####9    | 5526/9216 [02:11<02:56, 20.89it/s]
 60%|#####9    | 5529/9216 [02:11<02:54, 21.13it/s]
 60%|######    | 5532/9216 [02:11<02:58, 20.67it/s]
 60%|######    | 5535/9216 [02:12<03:08, 19.57it/s]
 60%|######    | 5538/9216 [02:12<04:03, 15.11it/s]
 60%|######    | 5540/9216 [02:12<04:36, 13.31it/s]
 60%|######    | 5542/9216 [02:12<04:52, 12.57it/s]
 60%|######    | 5544/9216 [02:13<05:33, 11.00it/s]
 60%|######    | 5546/9216 [02:13<05:09, 11.86it/s]
 60%|######    | 5548/9216 [02:13<04:40, 13.07it/s]
 60%|######    | 5550/9216 [02:13<05:24, 11.28it/s]
 60%|######    | 5552/9216 [02:13<05:05, 11.98it/s]
 60%|######    | 5565/9216 [02:13<01:43, 35.20it/s]
 61%|######    | 5579/9216 [02:13<01:03, 57.30it/s]
 61%|######    | 5587/9216 [02:14<01:18, 46.05it/s]
 61%|######    | 5594/9216 [02:14<01:55, 31.40it/s]
 61%|######    | 5599/9216 [02:14<02:10, 27.80it/s]
 61%|######    | 5604/9216 [02:14<01:57, 30.70it/s]
 61%|######    | 5609/9216 [02:15<02:04, 28.92it/s]
 61%|######    | 5613/9216 [02:15<02:29, 24.07it/s]
 61%|######    | 5616/9216 [02:15<02:40, 22.46it/s]
 61%|######    | 5620/9216 [02:15<02:27, 24.33it/s]
 61%|######1   | 5623/9216 [02:15<02:46, 21.59it/s]
 61%|######1   | 5626/9216 [02:16<03:47, 15.81it/s]
 61%|######1   | 5628/9216 [02:16<04:12, 14.19it/s]
 61%|######1   | 5630/9216 [02:16<04:20, 13.77it/s]
 61%|######1   | 5632/9216 [02:16<04:53, 12.23it/s]
 61%|######1   | 5634/9216 [02:17<04:58, 12.00it/s]
 61%|######1   | 5636/9216 [02:17<04:57, 12.02it/s]
 61%|######1   | 5638/9216 [02:17<05:11, 11.48it/s]
 61%|######1   | 5640/9216 [02:17<05:32, 10.75it/s]
 61%|######1   | 5642/9216 [02:17<05:43, 10.40it/s]
 61%|######1   | 5644/9216 [02:17<05:06, 11.67it/s]
 61%|######1   | 5648/9216 [02:18<03:34, 16.65it/s]
 61%|######1   | 5662/9216 [02:18<01:24, 42.07it/s]
 62%|######1   | 5675/9216 [02:18<00:56, 62.18it/s]
 62%|######1   | 5683/9216 [02:18<01:23, 42.25it/s]
 62%|######1   | 5689/9216 [02:18<01:42, 34.47it/s]
 62%|######1   | 5694/9216 [02:19<01:47, 32.67it/s]
 62%|######1   | 5699/9216 [02:19<01:52, 31.22it/s]
 62%|######1   | 5703/9216 [02:19<02:04, 28.15it/s]
 62%|######1   | 5707/9216 [02:19<02:37, 22.30it/s]
 62%|######1   | 5710/9216 [02:20<03:19, 17.61it/s]
 62%|######1   | 5713/9216 [02:20<03:15, 17.96it/s]
 62%|######2   | 5716/9216 [02:20<03:04, 19.00it/s]
 62%|######2   | 5719/9216 [02:20<03:28, 16.79it/s]
 62%|######2   | 5721/9216 [02:20<04:07, 14.11it/s]
 62%|######2   | 5723/9216 [02:20<03:59, 14.58it/s]
 62%|######2   | 5725/9216 [02:21<03:46, 15.38it/s]
 62%|######2   | 5727/9216 [02:21<04:05, 14.21it/s]
 62%|######2   | 5729/9216 [02:21<05:02, 11.54it/s]
 62%|######2   | 5731/9216 [02:21<06:01,  9.65it/s]
 62%|######2   | 5733/9216 [02:21<06:05,  9.54it/s]
 62%|######2   | 5735/9216 [02:22<05:16, 11.02it/s]
 62%|######2   | 5738/9216 [02:22<04:01, 14.40it/s]
 62%|######2   | 5740/9216 [02:22<03:58, 14.60it/s]
 62%|######2   | 5747/9216 [02:22<02:12, 26.21it/s]
 62%|######2   | 5760/9216 [02:22<01:08, 50.41it/s]
 63%|######2   | 5774/9216 [02:22<00:48, 71.49it/s]
 63%|######2   | 5783/9216 [02:23<02:00, 28.51it/s]
 63%|######2   | 5790/9216 [02:24<03:01, 18.92it/s]
 63%|######2   | 5795/9216 [02:24<03:01, 18.85it/s]
 63%|######2   | 5799/9216 [02:24<03:27, 16.47it/s]
 63%|######2   | 5802/9216 [02:25<04:02, 14.05it/s]
 63%|######2   | 5805/9216 [02:25<03:58, 14.27it/s]
 63%|######3   | 5808/9216 [02:25<04:50, 11.72it/s]
 63%|######3   | 5810/9216 [02:25<04:34, 12.40it/s]
 63%|######3   | 5812/9216 [02:26<04:59, 11.38it/s]
 63%|######3   | 5814/9216 [02:26<05:00, 11.33it/s]
 63%|######3   | 5817/9216 [02:26<04:08, 13.69it/s]
 63%|######3   | 5820/9216 [02:26<03:38, 15.57it/s]
 63%|######3   | 5822/9216 [02:26<03:28, 16.26it/s]
 63%|######3   | 5824/9216 [02:26<03:28, 16.27it/s]
 63%|######3   | 5826/9216 [02:26<03:40, 15.41it/s]
 63%|######3   | 5828/9216 [02:27<04:04, 13.83it/s]
 63%|######3   | 5830/9216 [02:27<04:00, 14.08it/s]
 63%|######3   | 5832/9216 [02:27<04:14, 13.32it/s]
 63%|######3   | 5835/9216 [02:27<03:30, 16.04it/s]
 63%|######3   | 5845/9216 [02:27<01:37, 34.40it/s]
 64%|######3   | 5859/9216 [02:27<00:56, 59.12it/s]
 64%|######3   | 5872/9216 [02:27<00:43, 76.41it/s]
 64%|######3   | 5881/9216 [02:28<01:40, 33.33it/s]
 64%|######3   | 5888/9216 [02:28<02:01, 27.31it/s]
 64%|######3   | 5894/9216 [02:29<02:31, 21.87it/s]
 64%|######3   | 5898/9216 [02:29<02:49, 19.56it/s]
 64%|######4   | 5902/9216 [02:29<02:50, 19.46it/s]
 64%|######4   | 5905/9216 [02:30<03:05, 17.82it/s]
 64%|######4   | 5908/9216 [02:30<03:04, 17.89it/s]
 64%|######4   | 5912/9216 [02:30<02:37, 21.00it/s]
 64%|######4   | 5916/9216 [02:30<02:24, 22.80it/s]
 64%|######4   | 5919/9216 [02:30<02:22, 23.16it/s]
 64%|######4   | 5922/9216 [02:30<02:44, 20.03it/s]
 64%|######4   | 5925/9216 [02:30<02:49, 19.41it/s]
 64%|######4   | 5928/9216 [02:31<02:50, 19.24it/s]
 64%|######4   | 5931/9216 [02:31<02:37, 20.81it/s]
 64%|######4   | 5942/9216 [02:31<01:22, 39.72it/s]
 65%|######4   | 5955/9216 [02:31<00:54, 60.15it/s]
 65%|######4   | 5968/9216 [02:31<00:47, 68.18it/s]
 65%|######4   | 5976/9216 [02:32<01:41, 31.77it/s]
 65%|######4   | 5982/9216 [02:32<02:30, 21.42it/s]
 65%|######4   | 5987/9216 [02:33<03:26, 15.65it/s]
 65%|######5   | 5991/9216 [02:33<03:18, 16.26it/s]
 65%|######5   | 5994/9216 [02:33<03:18, 16.22it/s]
 65%|######5   | 5997/9216 [02:34<03:14, 16.56it/s]
 65%|######5   | 6000/9216 [02:34<03:33, 15.03it/s]
 65%|######5   | 6003/9216 [02:34<03:18, 16.16it/s]
 65%|######5   | 6008/9216 [02:34<02:32, 21.09it/s]
 65%|######5   | 6013/9216 [02:34<02:05, 25.60it/s]
 65%|######5   | 6017/9216 [02:34<02:16, 23.51it/s]
 65%|######5   | 6020/9216 [02:35<03:07, 17.06it/s]
 65%|######5   | 6024/9216 [02:35<02:42, 19.65it/s]
 65%|######5   | 6027/9216 [02:35<03:04, 17.31it/s]
 65%|######5   | 6034/9216 [02:35<02:02, 26.07it/s]
 66%|######5   | 6047/9216 [02:35<01:08, 45.96it/s]
 66%|######5   | 6061/9216 [02:35<00:48, 65.55it/s]
 66%|######5   | 6070/9216 [02:36<00:55, 56.48it/s]
 66%|######5   | 6078/9216 [02:36<01:43, 30.19it/s]
 66%|######6   | 6084/9216 [02:37<02:22, 22.01it/s]
 66%|######6   | 6089/9216 [02:37<02:34, 20.30it/s]
 66%|######6   | 6093/9216 [02:37<02:50, 18.27it/s]
 66%|######6   | 6096/9216 [02:37<02:41, 19.31it/s]
 66%|######6   | 6099/9216 [02:38<02:30, 20.74it/s]
 66%|######6   | 6103/9216 [02:38<02:10, 23.80it/s]
 66%|######6   | 6108/9216 [02:38<01:53, 27.27it/s]
 66%|######6   | 6112/9216 [02:38<01:53, 27.42it/s]
 66%|######6   | 6116/9216 [02:38<03:06, 16.66it/s]
 66%|######6   | 6119/9216 [02:39<02:59, 17.25it/s]
 66%|######6   | 6122/9216 [02:39<03:12, 16.03it/s]
 66%|######6   | 6125/9216 [02:39<03:34, 14.41it/s]
 67%|######6   | 6138/9216 [02:39<01:36, 31.81it/s]
 67%|######6   | 6151/9216 [02:39<01:02, 48.83it/s]
 67%|######6   | 6162/9216 [02:39<00:51, 59.44it/s]
 67%|######6   | 6170/9216 [02:40<01:31, 33.14it/s]
 67%|######7   | 6177/9216 [02:40<02:02, 24.82it/s]
 67%|######7   | 6182/9216 [02:41<02:23, 21.18it/s]
 67%|######7   | 6186/9216 [02:41<02:13, 22.63it/s]
 67%|######7   | 6190/9216 [02:41<02:10, 23.24it/s]
 67%|######7   | 6195/9216 [02:41<01:51, 27.12it/s]
 67%|######7   | 6199/9216 [02:41<01:50, 27.22it/s]
 67%|######7   | 6203/9216 [02:41<01:48, 27.71it/s]
 67%|######7   | 6207/9216 [02:42<01:51, 27.05it/s]
 67%|######7   | 6211/9216 [02:42<02:33, 19.53it/s]
 67%|######7   | 6215/9216 [02:42<02:25, 20.59it/s]
 67%|######7   | 6218/9216 [02:42<02:44, 18.27it/s]
 68%|######7   | 6228/9216 [02:42<01:33, 31.98it/s]
 68%|######7   | 6242/9216 [02:43<00:56, 52.41it/s]
 68%|######7   | 6256/9216 [02:43<00:42, 70.26it/s]
 68%|######7   | 6265/9216 [02:43<01:02, 47.28it/s]
 68%|######8   | 6273/9216 [02:44<01:37, 30.24it/s]
 68%|######8   | 6279/9216 [02:44<01:56, 25.19it/s]
 68%|######8   | 6286/9216 [02:44<01:39, 29.47it/s]
 68%|######8   | 6292/9216 [02:44<01:34, 30.94it/s]
 68%|######8   | 6297/9216 [02:45<01:57, 24.83it/s]
 68%|######8   | 6301/9216 [02:45<01:56, 25.00it/s]
 68%|######8   | 6305/9216 [02:45<02:13, 21.81it/s]
 68%|######8   | 6308/9216 [02:45<02:46, 17.52it/s]
 69%|######8   | 6314/9216 [02:45<02:07, 22.73it/s]
 69%|######8   | 6326/9216 [02:45<01:15, 38.49it/s]
 69%|######8   | 6340/9216 [02:46<00:50, 57.01it/s]
 69%|######8   | 6354/9216 [02:46<00:38, 73.66it/s]
 69%|######9   | 6364/9216 [02:46<00:49, 57.40it/s]
 69%|######9   | 6372/9216 [02:47<01:29, 31.76it/s]
 69%|######9   | 6378/9216 [02:47<01:54, 24.78it/s]
 69%|######9   | 6383/9216 [02:47<01:45, 26.81it/s]
 69%|######9   | 6388/9216 [02:47<01:42, 27.57it/s]
 69%|######9   | 6392/9216 [02:48<02:06, 22.37it/s]
 69%|######9   | 6396/9216 [02:48<02:27, 19.10it/s]
 69%|######9   | 6399/9216 [02:48<02:29, 18.83it/s]
 69%|######9   | 6402/9216 [02:48<02:57, 15.90it/s]
 69%|######9   | 6404/9216 [02:49<02:59, 15.64it/s]
 70%|######9   | 6406/9216 [02:49<03:08, 14.90it/s]
 70%|######9   | 6413/9216 [02:49<01:54, 24.40it/s]
 70%|######9   | 6426/9216 [02:49<01:02, 44.74it/s]
 70%|######9   | 6439/9216 [02:49<00:44, 62.44it/s]
 70%|######9   | 6451/9216 [02:49<00:36, 75.85it/s]
 70%|#######   | 6461/9216 [02:49<00:54, 50.82it/s]
 70%|#######   | 6469/9216 [02:50<01:15, 36.53it/s]
 70%|#######   | 6475/9216 [02:50<01:28, 30.83it/s]
 70%|#######   | 6480/9216 [02:50<01:30, 30.12it/s]
 70%|#######   | 6485/9216 [02:51<01:56, 23.35it/s]
 70%|#######   | 6489/9216 [02:51<02:04, 21.83it/s]
 70%|#######   | 6492/9216 [02:51<02:00, 22.52it/s]
 70%|#######   | 6495/9216 [02:51<02:05, 21.69it/s]
 71%|#######   | 6498/9216 [02:51<02:13, 20.37it/s]
 71%|#######   | 6501/9216 [02:52<02:22, 19.02it/s]
 71%|#######   | 6504/9216 [02:52<02:19, 19.50it/s]
 71%|#######   | 6518/9216 [02:52<01:03, 42.31it/s]
 71%|#######   | 6532/9216 [02:52<00:42, 62.64it/s]
 71%|#######1  | 6546/9216 [02:52<00:33, 79.45it/s]
 71%|#######1  | 6556/9216 [02:52<00:44, 60.44it/s]
 71%|#######1  | 6564/9216 [02:53<01:05, 40.48it/s]
 71%|#######1  | 6571/9216 [02:53<01:31, 28.89it/s]
 71%|#######1  | 6577/9216 [02:53<01:21, 32.20it/s]
 71%|#######1  | 6582/9216 [02:53<01:28, 29.84it/s]
 71%|#######1  | 6587/9216 [02:54<01:36, 27.23it/s]
 72%|#######1  | 6591/9216 [02:54<01:41, 25.74it/s]
 72%|#######1  | 6595/9216 [02:54<01:41, 25.92it/s]
 72%|#######1  | 6598/9216 [02:54<01:51, 23.58it/s]
 72%|#######1  | 6606/9216 [02:54<01:17, 33.60it/s]
 72%|#######1  | 6620/9216 [02:54<00:47, 54.75it/s]
 72%|#######1  | 6634/9216 [02:55<00:35, 72.74it/s]
 72%|#######2  | 6648/9216 [02:55<00:29, 86.53it/s]
 72%|#######2  | 6658/9216 [02:55<00:52, 48.48it/s]
 72%|#######2  | 6666/9216 [02:56<01:30, 28.10it/s]
 72%|#######2  | 6673/9216 [02:56<01:18, 32.54it/s]
 72%|#######2  | 6680/9216 [02:56<01:26, 29.47it/s]
 73%|#######2  | 6685/9216 [02:56<01:21, 31.22it/s]
 73%|#######2  | 6690/9216 [02:56<01:21, 30.98it/s]
 73%|#######2  | 6699/9216 [02:57<01:01, 40.60it/s]
 73%|#######2  | 6713/9216 [02:57<00:42, 59.00it/s]
 73%|#######2  | 6726/9216 [02:57<00:33, 73.75it/s]
 73%|#######3  | 6738/9216 [02:57<00:29, 83.65it/s]
 73%|#######3  | 6748/9216 [02:57<00:29, 82.78it/s]
 73%|#######3  | 6758/9216 [02:58<01:07, 36.64it/s]
 73%|#######3  | 6766/9216 [02:58<01:17, 31.55it/s]
 73%|#######3  | 6772/9216 [02:58<01:10, 34.69it/s]
 74%|#######3  | 6778/9216 [02:58<01:14, 32.82it/s]
 74%|#######3  | 6783/9216 [02:58<01:12, 33.76it/s]
 74%|#######3  | 6788/9216 [02:59<01:18, 30.91it/s]
 74%|#######3  | 6800/9216 [02:59<00:52, 46.18it/s]
 74%|#######3  | 6814/9216 [02:59<00:37, 63.88it/s]
 74%|#######4  | 6827/9216 [02:59<00:30, 78.01it/s]
 74%|#######4  | 6840/9216 [02:59<00:26, 90.09it/s]
 74%|#######4  | 6851/9216 [03:00<00:48, 49.09it/s]
 74%|#######4  | 6860/9216 [03:00<01:21, 28.87it/s]
 75%|#######4  | 6867/9216 [03:00<01:13, 32.02it/s]
 75%|#######4  | 6873/9216 [03:01<01:19, 29.31it/s]
 75%|#######4  | 6879/9216 [03:01<01:12, 32.31it/s]
 75%|#######4  | 6891/9216 [03:01<00:51, 45.53it/s]
 75%|#######4  | 6905/9216 [03:01<00:37, 61.89it/s]
 75%|#######5  | 6919/9216 [03:01<00:29, 76.97it/s]
 75%|#######5  | 6932/9216 [03:01<00:25, 88.72it/s]
 75%|#######5  | 6944/9216 [03:01<00:24, 94.29it/s]
 75%|#######5  | 6956/9216 [03:02<01:07, 33.39it/s]
 76%|#######5  | 6965/9216 [03:02<01:04, 35.09it/s]
 76%|#######5  | 6972/9216 [03:02<00:57, 38.90it/s]
 76%|#######5  | 6985/9216 [03:03<00:42, 51.94it/s]
 76%|#######5  | 6999/9216 [03:03<00:33, 66.34it/s]
 76%|#######6  | 7013/9216 [03:03<00:27, 79.85it/s]
 76%|#######6  | 7027/9216 [03:03<00:24, 91.20it/s]
 76%|#######6  | 7040/9216 [03:03<00:22, 98.86it/s]
 77%|#######6  | 7052/9216 [03:03<00:31, 68.65it/s]
 77%|#######6  | 7062/9216 [03:04<00:35, 60.77it/s]
 77%|#######6  | 7075/9216 [03:04<00:29, 72.34it/s]
 77%|#######6  | 7089/9216 [03:04<00:25, 84.94it/s]
 77%|#######7  | 7103/9216 [03:04<00:22, 95.85it/s]
 77%|#######7  | 7117/9216 [03:04<00:20, 104.82it/s]
 77%|#######7  | 7130/9216 [03:04<00:18, 110.93it/s]
 78%|#######7  | 7143/9216 [03:04<00:19, 108.67it/s]
 78%|#######7  | 7155/9216 [03:04<00:20, 100.94it/s]
 78%|#######7  | 7169/9216 [03:04<00:18, 109.03it/s]
 78%|#######7  | 7182/9216 [03:05<00:17, 114.36it/s]
 78%|#######8  | 7196/9216 [03:05<00:16, 119.10it/s]
 78%|#######8  | 7210/9216 [03:05<00:16, 123.12it/s]
 78%|#######8  | 7223/9216 [03:05<00:15, 124.63it/s]
 79%|#######8  | 7237/9216 [03:05<00:15, 127.13it/s]
 79%|#######8  | 7250/9216 [03:05<00:15, 127.72it/s]
 79%|#######8  | 7263/9216 [03:05<00:15, 125.83it/s]
 79%|#######8  | 7276/9216 [03:05<00:15, 126.21it/s]
 79%|#######9  | 7290/9216 [03:05<00:15, 128.19it/s]
 79%|#######9  | 7304/9216 [03:05<00:14, 129.12it/s]
 79%|#######9  | 7318/9216 [03:06<00:14, 129.81it/s]
 80%|#######9  | 7332/9216 [03:06<00:14, 130.70it/s]
 80%|#######9  | 7346/9216 [03:06<00:14, 131.36it/s]
 80%|#######9  | 7360/9216 [03:06<00:14, 131.89it/s]
 80%|########  | 7374/9216 [03:06<00:13, 132.30it/s]
 80%|########  | 7388/9216 [03:06<00:13, 131.53it/s]
 80%|########  | 7402/9216 [03:06<00:13, 131.84it/s]
 80%|########  | 7416/9216 [03:06<00:13, 132.22it/s]
 81%|########  | 7430/9216 [03:06<00:13, 130.98it/s]
 81%|########  | 7444/9216 [03:07<00:13, 129.91it/s]
 81%|########  | 7457/9216 [03:07<00:13, 129.32it/s]
 81%|########1 | 7471/9216 [03:07<00:13, 129.62it/s]
 81%|########1 | 7485/9216 [03:07<00:13, 130.02it/s]
 81%|########1 | 7499/9216 [03:07<00:13, 130.41it/s]
 82%|########1 | 7513/9216 [03:07<00:13, 130.71it/s]
 82%|########1 | 7527/9216 [03:07<00:12, 130.75it/s]
 82%|########1 | 7541/9216 [03:07<00:12, 131.43it/s]
 82%|########1 | 7555/9216 [03:07<00:12, 131.88it/s]
 82%|########2 | 7569/9216 [03:08<00:12, 131.82it/s]
 82%|########2 | 7583/9216 [03:08<00:12, 132.13it/s]
 82%|########2 | 7597/9216 [03:08<00:12, 132.47it/s]
 83%|########2 | 7611/9216 [03:08<00:12, 132.72it/s]
 83%|########2 | 7625/9216 [03:08<00:11, 133.04it/s]
 83%|########2 | 7639/9216 [03:08<00:11, 133.09it/s]
 83%|########3 | 7653/9216 [03:08<00:11, 132.92it/s]
 83%|########3 | 7667/9216 [03:08<00:11, 133.08it/s]
 83%|########3 | 7681/9216 [03:08<00:11, 133.21it/s]
 83%|########3 | 7695/9216 [03:08<00:11, 133.48it/s]
 84%|########3 | 7709/9216 [03:09<00:11, 133.38it/s]
 84%|########3 | 7723/9216 [03:09<00:11, 132.80it/s]
 84%|########3 | 7737/9216 [03:09<00:11, 132.52it/s]
 84%|########4 | 7751/9216 [03:09<00:11, 132.95it/s]
 84%|########4 | 7765/9216 [03:09<00:10, 133.41it/s]
 84%|########4 | 7779/9216 [03:09<00:10, 133.69it/s]
 85%|########4 | 7793/9216 [03:09<00:10, 133.86it/s]
 85%|########4 | 7807/9216 [03:09<00:10, 134.02it/s]
 85%|########4 | 7821/9216 [03:09<00:10, 134.18it/s]
 85%|########5 | 7835/9216 [03:10<00:10, 134.28it/s]
 85%|########5 | 7849/9216 [03:10<00:10, 134.34it/s]
 85%|########5 | 7863/9216 [03:10<00:10, 134.38it/s]
 85%|########5 | 7877/9216 [03:10<00:09, 134.43it/s]
 86%|########5 | 7891/9216 [03:10<00:09, 134.39it/s]
 86%|########5 | 7905/9216 [03:10<00:09, 134.33it/s]
 86%|########5 | 7919/9216 [03:10<00:09, 134.29it/s]
 86%|########6 | 7933/9216 [03:10<00:09, 133.60it/s]
 86%|########6 | 7947/9216 [03:10<00:09, 132.51it/s]
 86%|########6 | 7961/9216 [03:10<00:09, 129.87it/s]
 87%|########6 | 7975/9216 [03:11<00:09, 129.63it/s]
 87%|########6 | 7989/9216 [03:11<00:09, 130.71it/s]
 87%|########6 | 8003/9216 [03:11<00:09, 131.44it/s]
 87%|########6 | 8017/9216 [03:11<00:09, 131.54it/s]
 87%|########7 | 8031/9216 [03:11<00:09, 130.69it/s]
 87%|########7 | 8045/9216 [03:11<00:08, 130.88it/s]
 87%|########7 | 8059/9216 [03:11<00:08, 130.21it/s]
 88%|########7 | 8073/9216 [03:11<00:08, 130.11it/s]
 88%|########7 | 8087/9216 [03:11<00:08, 130.42it/s]
 88%|########7 | 8101/9216 [03:12<00:08, 130.41it/s]
 88%|########8 | 8115/9216 [03:12<00:08, 127.92it/s]
 88%|########8 | 8128/9216 [03:12<00:08, 126.68it/s]
 88%|########8 | 8141/9216 [03:12<00:08, 126.24it/s]
 88%|########8 | 8154/9216 [03:12<00:08, 125.52it/s]
 89%|########8 | 8167/9216 [03:12<00:08, 124.81it/s]
 89%|########8 | 8180/9216 [03:12<00:08, 123.40it/s]
 89%|########8 | 8193/9216 [03:12<00:08, 123.12it/s]
 89%|########9 | 8206/9216 [03:12<00:08, 123.19it/s]
 89%|########9 | 8219/9216 [03:12<00:08, 123.60it/s]
 89%|########9 | 8232/9216 [03:13<00:07, 124.08it/s]
 89%|########9 | 8245/9216 [03:13<00:07, 123.54it/s]
 90%|########9 | 8258/9216 [03:13<00:07, 123.19it/s]
 90%|########9 | 8271/9216 [03:13<00:07, 123.35it/s]
 90%|########9 | 8284/9216 [03:13<00:07, 123.47it/s]
 90%|######### | 8297/9216 [03:13<00:07, 123.76it/s]
 90%|######### | 8310/9216 [03:13<00:07, 123.84it/s]
 90%|######### | 8323/9216 [03:13<00:07, 124.14it/s]
 90%|######### | 8336/9216 [03:13<00:07, 124.16it/s]
 91%|######### | 8349/9216 [03:14<00:06, 123.89it/s]
 91%|######### | 8362/9216 [03:14<00:06, 124.35it/s]
 91%|######### | 8375/9216 [03:14<00:06, 123.87it/s]
 91%|#########1| 8388/9216 [03:14<00:06, 124.19it/s]
 91%|#########1| 8401/9216 [03:14<00:06, 123.42it/s]
 91%|#########1| 8414/9216 [03:14<00:06, 124.67it/s]
 91%|#########1| 8427/9216 [03:14<00:06, 124.86it/s]
 92%|#########1| 8441/9216 [03:14<00:06, 126.62it/s]
 92%|#########1| 8455/9216 [03:14<00:05, 128.71it/s]
 92%|#########1| 8469/9216 [03:14<00:05, 130.35it/s]
 92%|#########2| 8483/9216 [03:15<00:05, 131.48it/s]
 92%|#########2| 8497/9216 [03:15<00:05, 132.36it/s]
 92%|#########2| 8511/9216 [03:15<00:05, 132.63it/s]
 93%|#########2| 8525/9216 [03:15<00:05, 133.06it/s]
 93%|#########2| 8539/9216 [03:15<00:05, 133.27it/s]
 93%|#########2| 8553/9216 [03:15<00:05, 132.24it/s]
 93%|#########2| 8567/9216 [03:15<00:04, 132.00it/s]
 93%|#########3| 8581/9216 [03:15<00:04, 132.12it/s]
 93%|#########3| 8595/9216 [03:15<00:04, 132.58it/s]
 93%|#########3| 8609/9216 [03:16<00:04, 132.89it/s]
 94%|#########3| 8623/9216 [03:16<00:04, 133.22it/s]
 94%|#########3| 8637/9216 [03:16<00:04, 133.43it/s]
 94%|#########3| 8651/9216 [03:16<00:04, 133.56it/s]
 94%|#########4| 8665/9216 [03:16<00:04, 133.65it/s]
 94%|#########4| 8679/9216 [03:16<00:04, 133.65it/s]
 94%|#########4| 8693/9216 [03:16<00:03, 133.41it/s]
 94%|#########4| 8707/9216 [03:16<00:03, 133.31it/s]
 95%|#########4| 8721/9216 [03:16<00:03, 133.21it/s]
 95%|#########4| 8735/9216 [03:16<00:03, 133.36it/s]
 95%|#########4| 8749/9216 [03:17<00:03, 133.55it/s]
 95%|#########5| 8763/9216 [03:17<00:03, 133.72it/s]
 95%|#########5| 8777/9216 [03:17<00:03, 133.79it/s]
 95%|#########5| 8791/9216 [03:17<00:03, 133.59it/s]
 96%|#########5| 8805/9216 [03:17<00:03, 133.59it/s]
 96%|#########5| 8819/9216 [03:17<00:02, 133.44it/s]
 96%|#########5| 8833/9216 [03:17<00:02, 133.37it/s]
 96%|#########5| 8847/9216 [03:17<00:02, 133.02it/s]
 96%|#########6| 8861/9216 [03:17<00:02, 129.96it/s]
 96%|#########6| 8875/9216 [03:18<00:02, 126.51it/s]
 96%|#########6| 8888/9216 [03:18<00:02, 124.49it/s]
 97%|#########6| 8901/9216 [03:18<00:02, 123.44it/s]
 97%|#########6| 8914/9216 [03:18<00:02, 124.43it/s]
 97%|#########6| 8928/9216 [03:18<00:02, 126.62it/s]
 97%|#########7| 8942/9216 [03:18<00:02, 128.53it/s]
 97%|#########7| 8956/9216 [03:18<00:02, 129.76it/s]
 97%|#########7| 8970/9216 [03:18<00:01, 130.40it/s]
 97%|#########7| 8984/9216 [03:18<00:01, 130.45it/s]
 98%|#########7| 8998/9216 [03:19<00:01, 128.87it/s]
 98%|#########7| 9011/9216 [03:19<00:01, 128.09it/s]
 98%|#########7| 9024/9216 [03:19<00:01, 127.94it/s]
 98%|#########8| 9037/9216 [03:19<00:01, 127.20it/s]
 98%|#########8| 9050/9216 [03:19<00:01, 127.50it/s]
 98%|#########8| 9064/9216 [03:19<00:01, 129.19it/s]
 99%|#########8| 9078/9216 [03:19<00:01, 130.20it/s]
 99%|#########8| 9092/9216 [03:19<00:00, 128.35it/s]
 99%|#########8| 9106/9216 [03:19<00:00, 129.62it/s]
 99%|#########8| 9120/9216 [03:19<00:00, 130.80it/s]
 99%|#########9| 9134/9216 [03:20<00:00, 131.61it/s]
 99%|#########9| 9148/9216 [03:20<00:00, 129.51it/s]
 99%|#########9| 9161/9216 [03:20<00:00, 128.02it/s]
100%|#########9| 9175/9216 [03:20<00:00, 129.26it/s]
100%|#########9| 9189/9216 [03:20<00:00, 130.45it/s]
100%|#########9| 9203/9216 [03:20<00:00, 131.23it/s]
100%|##########| 9216/9216 [03:20<00:00, 45.92it/s]

The volume fractions of tissues for each voxel are also accessible, as well as the sh coefficients for all tissues. One can also get each sh tissue separately using all_shm_coeff for each compartment (isotropic) and shm_coeff for white matter.

vf = mcsd_fit.volume_fractions
sh_coeff = mcsd_fit.all_shm_coeff
csf_sh_coeff = sh_coeff[..., 0]
gm_sh_coeff = sh_coeff[..., 1]
wm_sh_coeff = mcsd_fit.shm_coeff

The model allows to predict a signal from sh coefficients. There are two ways of doing this.

mcsd_pred = mcsd_fit.predict()
mcsd_pred = mcsd_model.predict(mcsd_fit.all_shm_coeff)

From the fit obtained in the previous step, we generate the ODFs which can be visualized as follows:

mcsd_odf = mcsd_fit.odf(sphere)

print("ODF")
print(mcsd_odf.shape)
print(mcsd_odf[40, 40, 0])

fodf_spheres = actor.odf_slicer(mcsd_odf, sphere=sphere, scale=1,
                                norm=False, colormap='plasma')

interactive = False
scene = window.Scene()
scene.add(fodf_spheres)
scene.reset_camera_tight()

print('Saving illustration as msdodf.png')
window.record(scene, out_path='msdodf.png', size=(600, 600))

if interactive:
    window.show(scene)
reconst mcsd
ODF
(96, 96, 1, 724)
[ 2.07825714e-03  2.48320688e-03  3.86296574e-03  5.78587170e-04
  4.13735690e-03  1.90413144e-03  2.91231786e-04  2.78762352e-03
  3.98478870e-05  3.62344531e-03  3.17122629e-03  1.22765485e-03
  1.38664442e-03  9.01082781e-05  3.16166084e-04  1.06773266e-03
  1.41480505e-03  3.65267032e-03  2.38412226e-03  9.35372242e-04
 -4.67682855e-04 -2.33196727e-04  3.37010673e-03  1.26876858e-03
  3.69441781e-03 -9.45155684e-04  7.79924130e-04 -2.77920204e-04
  1.30414334e-03  1.04371319e-03  5.12873011e-03  2.58197594e-03
  4.04074927e-03  2.23541599e-03  1.53194270e-04  1.99136992e-03
  1.66444502e-04  3.10730689e-03 -4.39150785e-04  1.84296018e-03
  1.67754591e-03  1.53366214e-02  6.37294028e-04  6.11570872e-03
  8.04505730e-04  4.97962172e-03  4.41602185e-03  5.40733046e-04
  1.15893785e-03  1.28407355e-02  9.98608252e-04  2.42820604e-03
  2.33807225e-03  3.95418963e-03  3.73769172e-02  9.12470030e-04
  4.61559671e-03  1.29336264e-03  2.62753571e-03  1.59015145e-03
  6.00676680e-04  2.11111760e-03  5.20283855e-02  5.52107559e-04
  5.07375854e-03  1.29958882e-03  3.87700865e-03  4.55472608e-02
  5.42076050e-04  2.96028375e-03  2.09408894e-02  1.07250667e-04
 -5.60013139e-04  9.08099370e-04  2.87255730e-03  1.04596989e-01
  9.93302298e-04  4.46639760e-03  9.88176082e-04  1.67566968e-03
  3.08017508e-02 -5.69246541e-05  3.03389847e-03  8.06214708e-02
  2.97455817e-04  1.01074331e-03  9.83107191e-04  2.05432765e-03
  1.29875192e-01  3.50743469e-04  2.69107948e-03  1.72161258e-02
 -1.71912972e-05  1.02315620e-02  1.61453459e-04  2.72171800e-03
  1.70710508e-01  1.20540576e-03  1.80871371e-03  3.74810860e-04
  8.37481277e-04  1.04012366e-01  6.76952950e-04  2.88628982e-03
  7.98581560e-02  1.11698750e-03  1.16370265e-03  5.02031598e-04
  9.15078161e-04  2.34125626e-01 -1.57636814e-05  4.87057751e-04
  8.08372530e-03  6.73156134e-04  5.23466158e-02  3.42254193e-03
  3.16393361e-03  1.97176333e-01  2.89462386e-03  1.01111645e-03
  9.44506317e-05  1.44825417e-05  2.17301579e-01  1.25120845e-03
  5.88156543e-04  5.43064774e-02  2.60591938e-03  1.65014580e-02
  4.62778847e-03  1.22901817e-03  3.12828243e-01  8.80152378e-04
  8.11872383e-04  1.74946717e-03  1.21786048e-03  1.36295168e-01
  9.99807838e-03  2.15505101e-03  1.70146711e-01  5.41700758e-03
  7.26276630e-03  2.32720643e-03 -3.28680221e-04  3.38750248e-01
  5.78389703e-04 -3.13442956e-04  2.47154094e-02  3.56322265e-03
  5.83758020e-02  1.77165982e-02  1.97217733e-03  3.26284263e-01
  3.84276583e-03  8.62880666e-03  1.03669802e-04  1.04120838e-03
  2.54014665e-01  1.45846373e-02 -1.01404115e-05  1.09567480e-01
  6.53773308e-03  2.48612768e-02  1.38566743e-02  4.18646811e-04
  4.19626835e-01  2.43518929e-04  7.50190348e-03  6.42733094e-03
  3.41860290e-03  1.33033575e-01  3.62874065e-02  1.10453134e-03
  2.68331457e-01  6.71118430e-03  2.43995453e-02  4.39594177e-03
  6.78945359e-04  3.73880579e-01  1.33509989e-02  3.02294699e-03
  5.02849534e-02  5.29218291e-03  5.81699502e-02  4.01333399e-02
  1.40521983e-03  4.21620846e-01  1.74911001e-03  2.81117988e-02
  6.05512944e-04  2.39219383e-03  2.33589970e-01  4.94852606e-02
 -6.97354508e-05  1.70845545e-01  6.36840692e-03  4.44512043e-02
  2.18406153e-02  1.12789423e-03  4.50548952e-01  8.25164556e-03
  2.07545195e-02  1.44507819e-02  2.95032378e-03  1.10790142e-01
  7.53192098e-02  7.05477408e-04  3.42565078e-01  3.28451785e-03
  5.63248989e-02  4.45732303e-03  1.24078865e-03  3.35111453e-01
  4.89079865e-02  6.81911446e-03  8.00037849e-02  2.98130298e-03
  6.64082879e-02  5.95458303e-02  2.06277180e-03  4.48686190e-01
  3.63461534e-03  5.62134858e-02  1.61983453e-03  1.00689115e-03
  1.80014854e-01  1.02479403e-01 -2.63986776e-04  2.19701223e-01
  2.12828761e-03  8.04013277e-02  2.31057955e-02  1.02732914e-03
  4.00853583e-01  3.63258297e-02  3.32776999e-02  2.45073241e-02
  1.48253675e-04  9.24362168e-02  1.11416894e-01  1.55594227e-03
  3.66211961e-01  8.66886607e-04  9.88707047e-02  2.61079769e-03
 -2.48963962e-04  2.50954495e-01  1.06762823e-01  7.62260204e-03
  1.05394052e-01 -1.57027962e-04  9.19017156e-02  6.53315878e-02
  1.93977986e-03  4.00634246e-01  2.04843097e-02  8.22854463e-02
  3.29006140e-03  3.35060517e-04  1.25226224e-01  1.55946751e-01
  2.97190232e-05  2.38455423e-01 -5.30405431e-04  1.29341975e-01
  1.74269074e-02 -7.73567857e-04  2.98495256e-01  8.77695478e-02
  3.76407017e-02  3.37220435e-02  1.90821002e-03  9.25568377e-02
  1.27628010e-01  2.25484024e-03  3.30601546e-01  8.83352609e-03
  1.39557189e-01  6.03764614e-04  2.02919100e-03  1.60554893e-01
  1.71033953e-01  5.54295431e-03  1.17083871e-01  2.58058228e-03
  1.33512713e-01  5.51400640e-02 -1.60319120e-04  2.99770887e-01
  5.82553416e-02  9.44161611e-02  5.13505427e-03  1.07856758e-02
  9.09364381e-02  1.87529083e-01  8.75690864e-04  2.18739736e-01
  5.57024130e-03  1.79057318e-01  9.09783747e-03  2.45253011e-03
  1.85215762e-01  1.51340946e-01  3.20780614e-02  3.84502352e-02
  1.66357823e-02  1.13090933e-01  1.16813681e-01  9.43923789e-04
  2.49644586e-01  3.33582602e-02  1.62862393e-01 -2.59266012e-04
  2.14100138e-02  9.27178993e-02  2.17189219e-01  2.94850871e-03
  1.09268151e-01  1.61374828e-02  1.80829657e-01  3.55534409e-02
  1.38498453e-03  1.84362522e-01  1.10932934e-01  8.72180943e-02
  6.07894493e-03  4.27947146e-02  8.26764599e-02  1.83527206e-01
  8.54044597e-04  1.66744918e-01  2.42317391e-02  2.12562647e-01
  2.83840281e-03  2.57695119e-02  9.48376096e-02  2.04471758e-01
  2.09779280e-02  3.60482926e-02  4.72692458e-02  1.45709255e-01
  8.54483280e-02  4.70784301e-04  1.52923050e-01  7.17282803e-02
  1.58778170e-01 -1.10633216e-04  7.06985422e-02  5.70202356e-02
  2.25659716e-01  1.15013999e-03  8.35414498e-02  3.99825768e-02
  2.17744343e-01  1.64915308e-02  2.12219560e-02  8.90813033e-02
  1.60830121e-01  6.51522181e-02  5.26438843e-03  9.78209872e-02
  9.35279596e-02  1.46778239e-01  2.07825714e-03  2.48320688e-03
  3.86296574e-03  5.78587170e-04  4.13735690e-03  1.90413144e-03
  2.91231786e-04  2.78762352e-03  3.98478870e-05  3.62344531e-03
  3.17122629e-03  1.22765485e-03  1.38664442e-03  9.01082781e-05
  3.16166084e-04  1.06773266e-03  1.41480505e-03  3.65267032e-03
  2.38412226e-03  9.35372242e-04 -4.67682855e-04 -2.33196727e-04
  3.37010673e-03  1.26876858e-03  3.69441781e-03 -9.45155684e-04
  7.79924130e-04 -2.77920204e-04  1.30414334e-03  1.04371319e-03
  5.12873011e-03  2.58197594e-03  4.04074927e-03  2.23541599e-03
  1.53194270e-04  1.99136992e-03  1.66444502e-04  3.10730689e-03
 -4.39150785e-04  1.84296018e-03  1.67754591e-03  1.53366214e-02
  6.37294028e-04  6.11570872e-03  8.04505730e-04  4.97962172e-03
  4.41602185e-03  5.40733046e-04  1.15893785e-03  1.28407355e-02
  9.98608252e-04  2.42820604e-03  2.33807225e-03  3.95418963e-03
  3.73769172e-02  9.12470030e-04  4.61559671e-03  1.29336264e-03
  2.62753571e-03  1.59015145e-03  6.00676680e-04  2.11111760e-03
  5.20283855e-02  5.52107559e-04  5.07375854e-03  1.29958882e-03
  3.87700865e-03  4.55472608e-02  5.42076050e-04  2.96028375e-03
  2.09408894e-02  1.07250667e-04 -5.60013139e-04  9.08099370e-04
  2.87255730e-03  1.04596989e-01  9.93302298e-04  4.46639760e-03
  9.88176082e-04  1.67566968e-03  3.08017508e-02 -5.69246541e-05
  3.03389847e-03  8.06214708e-02  2.97455817e-04  1.01074331e-03
  9.83107191e-04  2.05432765e-03  1.29875192e-01  3.50743469e-04
  2.69107948e-03  1.72161258e-02 -1.71912972e-05  1.02315620e-02
  1.61453459e-04  2.72171800e-03  1.70710508e-01  1.20540576e-03
  1.80871371e-03  3.74810860e-04  8.37481277e-04  1.04012366e-01
  6.76952950e-04  2.88628982e-03  7.98581560e-02  1.11698750e-03
  1.16370265e-03  5.02031598e-04  9.15078161e-04  2.34125626e-01
 -1.57636814e-05  4.87057751e-04  8.08372530e-03  6.73156134e-04
  5.23466158e-02  3.42254193e-03  3.16393361e-03  1.97176333e-01
  2.89462386e-03  1.01111645e-03  9.44506317e-05  1.44825417e-05
  2.17301579e-01  1.25120845e-03  5.88156543e-04  5.43064774e-02
  2.60591938e-03  1.65014580e-02  4.62778847e-03  1.22901817e-03
  3.12828243e-01  8.80152378e-04  8.11872383e-04  1.74946717e-03
  1.21786048e-03  1.36295168e-01  9.99807838e-03  2.15505101e-03
  1.70146711e-01  5.41700758e-03  7.26276630e-03  2.32720643e-03
 -3.28680221e-04  3.38750248e-01  5.78389703e-04 -3.13442956e-04
  2.47154094e-02  3.56322265e-03  5.83758020e-02  1.77165982e-02
  1.97217733e-03  3.26284263e-01  3.84276583e-03  8.62880666e-03
  1.03669802e-04  1.04120838e-03  2.54014665e-01  1.45846373e-02
 -1.01404115e-05  1.09567480e-01  6.53773308e-03  2.48612768e-02
  1.38566743e-02  4.18646811e-04  4.19626835e-01  2.43518929e-04
  7.50190348e-03  6.42733094e-03  3.41860290e-03  1.33033575e-01
  3.62874065e-02  1.10453134e-03  2.68331457e-01  6.71118430e-03
  2.43995453e-02  4.39594177e-03  6.78945359e-04  3.73880579e-01
  1.33509989e-02  3.02294699e-03  5.02849534e-02  5.29218291e-03
  5.81699502e-02  4.01333399e-02  1.40521983e-03  4.21620846e-01
  1.74911001e-03  2.81117988e-02  6.05512944e-04  2.39219383e-03
  2.33589970e-01  4.94852606e-02 -6.97354508e-05  1.70845545e-01
  6.36840692e-03  4.44512043e-02  2.18406153e-02  1.12789423e-03
  4.50548952e-01  8.25164556e-03  2.07545195e-02  1.44507819e-02
  2.95032378e-03  1.10790142e-01  7.53192098e-02  7.05477408e-04
  3.42565078e-01  3.28451785e-03  5.63248989e-02  4.45732303e-03
  1.24078865e-03  3.35111453e-01  4.89079865e-02  6.81911446e-03
  8.00037849e-02  2.98130298e-03  6.64082879e-02  5.95458303e-02
  2.06277180e-03  4.48686190e-01  3.63461534e-03  5.62134858e-02
  1.61983453e-03  1.00689115e-03  1.80014854e-01  1.02479403e-01
 -2.63986776e-04  2.19701223e-01  2.12828761e-03  8.04013277e-02
  2.31057955e-02  1.02732914e-03  4.00853583e-01  3.63258297e-02
  3.32776999e-02  2.45073241e-02  1.48253675e-04  9.24362168e-02
  1.11416894e-01  1.55594227e-03  3.66211961e-01  8.66886607e-04
  9.88707047e-02  2.61079769e-03 -2.48963962e-04  2.50954495e-01
  1.06762823e-01  7.62260204e-03  1.05394052e-01 -1.57027962e-04
  9.19017156e-02  6.53315878e-02  1.93977986e-03  4.00634246e-01
  2.04843097e-02  8.22854463e-02  3.29006140e-03  3.35060517e-04
  1.25226224e-01  1.55946751e-01  2.97190232e-05  2.38455423e-01
 -5.30405431e-04  1.29341975e-01  1.74269074e-02 -7.73567857e-04
  2.98495256e-01  8.77695478e-02  3.76407017e-02  3.37220435e-02
  1.90821002e-03  9.25568377e-02  1.27628010e-01  2.25484024e-03
  3.30601546e-01  8.83352609e-03  1.39557189e-01  6.03764614e-04
  2.02919100e-03  1.60554893e-01  1.71033953e-01  5.54295431e-03
  1.17083871e-01  2.58058228e-03  1.33512713e-01  5.51400640e-02
 -1.60319120e-04  2.99770887e-01  5.82553416e-02  9.44161611e-02
  5.13505427e-03  1.07856758e-02  9.09364381e-02  1.87529083e-01
  8.75690864e-04  2.18739736e-01  5.57024130e-03  1.79057318e-01
  9.09783747e-03  2.45253011e-03  1.85215762e-01  1.51340946e-01
  3.20780614e-02  3.84502352e-02  1.66357823e-02  1.13090933e-01
  1.16813681e-01  9.43923789e-04  2.49644586e-01  3.33582602e-02
  1.62862393e-01 -2.59266012e-04  2.14100138e-02  9.27178993e-02
  2.17189219e-01  2.94850871e-03  1.09268151e-01  1.61374828e-02
  1.80829657e-01  3.55534409e-02  1.38498453e-03  1.84362522e-01
  1.10932934e-01  8.72180943e-02  6.07894493e-03  4.27947146e-02
  8.26764599e-02  1.83527206e-01  8.54044597e-04  1.66744918e-01
  2.42317391e-02  2.12562647e-01  2.83840281e-03  2.57695119e-02
  9.48376096e-02  2.04471758e-01  2.09779280e-02  3.60482926e-02
  4.72692458e-02  1.45709255e-01  8.54483280e-02  4.70784301e-04
  1.52923050e-01  7.17282803e-02  1.58778170e-01 -1.10633216e-04
  7.06985422e-02  5.70202356e-02  2.25659716e-01  1.15013999e-03
  8.35414498e-02  3.99825768e-02  2.17744343e-01  1.64915308e-02
  2.12219560e-02  8.90813033e-02  1.60830121e-01  6.51522181e-02
  5.26438843e-03  9.78209872e-02  9.35279596e-02  1.46778239e-01]
Saving illustration as msdodf.png
examples_built/07_reconstruction/msdodf.png

MSMT-CSD Peaks and ODFs.

References

[Jeurissen2014]

B. Jeurissen, et al., “Multi-tissue constrained spherical deconvolution for improved analysis of multi-shell diffusion MRI data.” NeuroImage 103 (2014): 411-426.

[Tournier2007]

J-D. Tournier, F. Calamante and A. Connelly, “Robust determination of the fibre orientation distribution in diffusion MRI: Non-negativity constrained super-resolved spherical deconvolution”, Neuroimage, vol. 35, no. 4, pp. 1459-1472, (2007).

[Hansen2016]

B. Hansen and SN. Jespersen, “ Data for evaluation of fast kurtosis strategies, b-value optimization and exploration of diffusion MRI contrast”, Scientific Data 3: 160072 doi:10.1038/sdata.2016.72, (2016)

[DellAcqua2014]

F. Dell’Acqua, et. al., “Anisotropic Power Maps: A diffusion contrast to reveal low anisotropy tissues from HARDI data”, Proceedings of International Society for Magnetic Resonance in Medicine. Milan, Italy, (2014).

Total running time of the script: ( 8 minutes 32.747 seconds)

Gallery generated by Sphinx-Gallery