d = DTdirs[di] # Repeat simulations for the given directions for s_i in np.arange(di * nrep, (di + 1) * nrep): # Multi-compartmental simulations using # Dipy's function multi_tensor signal, sticks = multi_tensor(gtab, mevals, S0=100, angles=[d, (1, 0, 0)], fractions=fracts, snr=snr) DWI_simulates[fa_i, snr_i, s_i, :] = signal # Fit all simulated signals for given set of parameters params = nls_fit_tensor(gtab, DWI_simulates, Diso=Dwater) fw_params[acq_i, ...] = params # Display progress prog = (acq_i + 1.0) / nacq * 100 time.sleep(1) sys.stdout.write("\r%f%%" % prog) sys.stdout.flush() # ---------------------------------------------------------------- print('Compute and plot MSE...') # ---------------------------------------------------------------- fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(13, 10)) # Defining the figure's acquisition labels
data = img.get_data() affine = img.get_affine() # --------------------------------------------------------------- print('Estimate a brain mask...') # --------------------------------------------------------------- maskdata, mask = median_otsu(data, 4, 2, False, vol_idx=[0, 1], dilate=1) # --------------------------------------------------------------- print('Fitting the free water DTI model...') # --------------------------------------------------------------- t0 = time.time() fw_params = nls_fit_tensor(gtab, data, mask) dt = time.time() - t0 print("This step took %f seconds to run" % dt) # ---------------------------------------------------------------- print('Compute tensor statistic from the fitted parameters...') # ---------------------------------------------------------------- evals = fw_params[..., :3] FA = dti.fractional_anisotropy(evals) MD = dti.mean_diffusivity(evals) F = fw_params[..., 12] # ---------------------------------------------------------------- print('Compute standard DTI for comparison...') # ----------------------------------------------------------------
# Select a diffusion tensor direction d = DTdirs[di] # Repeat simulations for the given directions for s_i in np.arange(di * nrep, (di+1) * nrep): # Multi-compartmental simulations using # Dipy's function multi_tensor signal, sticks = multi_tensor(gtab, mevals, S0=100, angles=[d, (1, 0, 0)], fractions=fracts, snr=snr) DWI_simulates[fa_i, snr_i, s_i, :] = signal # Fit all simulated signals for given set of parameters params = nls_fit_tensor(gtab, DWI_simulates, Diso=Dwater) fw_params[acq_i, ...] = params # Display progress prog = (acq_i+1.0) / nacq * 100 time.sleep(1) sys.stdout.write("\r%f%%" % prog) sys.stdout.flush() # ---------------------------------------------------------------- print('Compute and plot MSE...') # ---------------------------------------------------------------- fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(13, 10)) # Defining the figure's acquisition labels
d = DTdirs[di] # Repeat each direction 100 times for s_i in np.arange(di * nrep, (di+1) * nrep): # Multi-compartmental simulations are done using # Dipy's function multi_tensor signal, sticks = multi_tensor(gtab, mevals, S0=100, angles=[d, (1, 0, 0)], fractions=fractions, snr=SNRa) rep_simulates[s_i, :] = signal # Process NLS fitting for all simulation repetitions of # a given pair of minimum-maximun b-value fw_params[bmin_i, bmax_i, :, :] = nls_fit_tensor(gtab, rep_simulates) # Process computing progress prog = (bmax_i*1.0)/bmax.size + (bmin_i+1.0)/(bmax.size*bmin.size) time.sleep(1) sys.stdout.write("\r%f%%" % prog * 100) sys.stdout.flush() # ---------------------------------------------------------------- print('Compute FA and f-value statistics and save results...') # ---------------------------------------------------------------- # select computed diffusion eigenvalues evals = fw_params[..., :3] # Compute the tissue's diffusion tensor fractional anisotropy
for s_i in np.arange(di * nrep, (di + 1) * nrep): # Multi-compartmental simulations are done using # Dipy's function multi_tensor signal, sticks = multi_tensor(gtab, mevals, S0=100, angles=[d, (1, 0, 0)], fractions=fractions, snr=SNRa) rep_simulates[s_i, :] = signal # Process NLS fitting for all simulation repetitions of # a given pair of minimum-maximun b-value fw_params[bmin_i, bmax_i, :, :] = nls_fit_tensor(gtab, rep_simulates) # Process computing progress prog = (bmax_i * 1.0) / bmax.size + (bmin_i + 1.0) / (bmax.size * bmin.size) time.sleep(1) sys.stdout.write("\r%f%%" % prog * 100) sys.stdout.flush() # ---------------------------------------------------------------- print('Compute FA and f-value statistics and save results...') # ---------------------------------------------------------------- # select computed diffusion eigenvalues evals = fw_params[..., :3]