#import os
#os.environ['DISPLAY'] = 'localhost:99'
import os
import tempfile
from IPython.display import Image, display
import nibabel as ni
import osmosis as oz
import osmosis.model.dti as dti
import osmosis.model.sparse_deconvolution as ssd
import osmosis.viz.maya as maya
reload(maya)
import osmosis.viz.mpl as mpl
import osmosis.utils as ozu
import osmosis.volume as ozv
import osmosis.io as oio
oio.data_path = '/biac4/wandell/biac2/wandell6/data/arokem/osmosis'
import osmosis.tensor as ozt
subject = 'FP'
data_1k_1, data_1k_2 = oio.get_dwi_data(1000, subject)
data_2k_1, data_2k_2 = oio.get_dwi_data(2000, subject)
data_4k_1, data_4k_2 = oio.get_dwi_data(4000, subject)
# A corpus callosum voxel:
vox_idx = (40, 74, 34)
mask = np.zeros(ni.load(data_1k_1[0]).shape[:3])
mask[vox_idx[0]-1:vox_idx[0]+1,
vox_idx[1]-1:vox_idx[1]+1,
vox_idx[2]-1:vox_idx[2]+1]=1
TM_1k_1 = dti.TensorModel(*data_1k_1, mask=mask, params_file='temp')
TM_1k_2 = dti.TensorModel(*data_1k_2, mask=mask, params_file='temp')
TM_2k_1 = dti.TensorModel(*data_2k_1, mask=mask, params_file='temp')
TM_2k_2 = dti.TensorModel(*data_2k_2, mask=mask, params_file='temp')
TM_4k_1 = dti.TensorModel(*data_4k_1, mask=mask, params_file='temp')
TM_4k_2 = dti.TensorModel(*data_4k_2, mask=mask, params_file='temp')
Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs
%gui wx
# Interpolate the signal from the measurement b-vectors using radial basis functions and display in 3D:
fig = maya.plot_signal_interp(TM_1k_1.bvecs[:,TM_1k_1.b_idx], TM_1k_1.relative_signal[vox_idx], cmap='hot', origin=[0,0,0], vmin=0, vmax=1)
fig = maya.plot_signal_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], TM_2k_1.relative_signal[vox_idx], cmap='hot', origin=[0,0,2], vmin=0, vmax=1, figure=fig, offset=-2)
# Put it into a temporary file:
fn = '%s.png'%tempfile.NamedTemporaryFile().name
#orientation_axes = mlab.orientation_axes(xlabel='', ylabel='').axes
fig = maya.plot_signal_interp(TM_4k_1.bvecs[:,TM_4k_1.b_idx], TM_4k_1.relative_signal[vox_idx], cmap='hot', origin=[0,0,4], colorbar=True, vmin=0, vmax=1, figure=fig, offset=-4, file_name=fn, roll=90)
# Make figures for a movie:
#for ang in range(360):
# fn = '/home/arokem/Dropbox/osmosis_paper_figures/movie_figures_sig_2k/frame%03d.png'%ang
# if not os.path.exists(fn):
# fig = maya.plot_signal_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], TM_2k_1.relative_signal[vox_idx], cmap='hot', colorbar=True, vmin=0, vmax=1, elevation=ang, file_name=fn)
#for ang in range(360):
# fn = '/home/arokem/Dropbox/osmosis_paper_figures/movie_figures_sig_2k_w_pts/frame%03d.png'%ang
# if not os.path.exists(fn):
# fig = maya.plot_signal_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], TM_2k_1.relative_signal[vox_idx], cmap='hot', colorbar=True, vmin=0, vmax=1, elevation=ang, file_name=fn, points=True,scale_points=False)
# Interpolate the signal from the measurement b-vectors using radial basis functions and display in 3D:
fig = maya.plot_signal_interp(TM_1k_1.bvecs[:,TM_1k_1.b_idx], TM_1k_1.fit[vox_idx]/TM_1k_1.S0[vox_idx], origin=[0,0,0], cmap='hot', vmin=0, vmax=1)
fig = maya.plot_signal_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], TM_2k_1.fit[vox_idx]/TM_1k_1.S0[vox_idx], origin=[0,0,2], cmap='hot', figure=fig, offset=-2, vmin=0, vmax=1)
# Put it into a temporary file:
fn = '%s.png'%tempfile.NamedTemporaryFile().name
#orientation_axes = mlab.orientation_axes(xlabel='', ylabel='').axes
fig = maya.plot_signal_interp(TM_4k_1.bvecs[:,TM_4k_1.b_idx], TM_4k_1.fit[vox_idx]/TM_4k_1.S0[vox_idx], origin=[0,0,4], cmap='hot', colorbar=True, figure=fig, offset=-4, file_name=fn, roll=90, vmin=0, vmax=1)
Predicting signal from TensorModel Fitting TensorModel params using dipy Predicting signal from TensorModel Fitting TensorModel params using dipy Predicting signal from TensorModel Fitting TensorModel params using dipy
i = Image(filename=fn)
display(i)
ten_1k = ozt.tensor_from_eigs(TM_1k_1.model_params[vox_idx][3:].reshape(3,3),
TM_1k_1.model_params[vox_idx][:3],
TM_1k_1.bvecs[:, TM_1k_1.b_idx], TM_1k_1.bvals[TM_1k_1.b_idx])
fig = maya.plot_tensor_3d(ten_1k, mode='ADC', cmap='hot', origin=[0,0,0], colorbar=True, vmin=0, vmax=2.5)
ten_2k = ozt.tensor_from_eigs(TM_2k_1.model_params[vox_idx][3:].reshape(3,3),
TM_2k_1.model_params[vox_idx][:3],
TM_2k_1.bvecs[:, TM_2k_1.b_idx], TM_2k_1.bvals[TM_2k_1.b_idx])
fig = maya.plot_tensor_3d(ten_2k, mode='ADC', cmap='hot', origin=[0,0,2], vmin=0, vmax=2.5, figure=fig, offset=-2.5)
ten_4k = ozt.tensor_from_eigs(TM_4k_1.model_params[vox_idx][3:].reshape(3,3),
TM_4k_1.model_params[vox_idx][:3],
TM_4k_1.bvecs[:, TM_4k_1.b_idx], TM_4k_1.bvals[TM_4k_1.b_idx])
fn = '%s.png'%tempfile.NamedTemporaryFile().name
fig = maya.plot_tensor_3d(ten_4k, mode='ADC', cmap='hot', origin=[0,0,4], vmin=0, vmax=2.5, figure=fig, offset=-5, file_name=fn, roll=90)
i = Image(filename=fn, width=1280, height=1024)
display(i)
ten_1k = ozt.tensor_from_eigs(TM_1k_1.model_params[vox_idx][3:].reshape(3,3),
TM_1k_1.model_params[vox_idx][:3],
TM_1k_1.bvecs[:, TM_1k_1.b_idx], TM_1k_1.bvals[TM_1k_1.b_idx])
fig = maya.plot_tensor_3d(ten_1k, mode='ellipse', cmap='Greens', colorbar=True)
ten_2k = ozt.tensor_from_eigs(TM_2k_1.model_params[vox_idx][3:].reshape(3,3),
TM_2k_1.model_params[vox_idx][:3],
TM_2k_1.bvecs[:, TM_2k_1.b_idx], TM_2k_1.bvals[TM_2k_1.b_idx])
fig = maya.plot_tensor_3d(ten_2k, mode='ellipse', cmap='Greens', offset=-2.5, figure=fig)
ten_4k = ozt.tensor_from_eigs(TM_4k_1.model_params[vox_idx][3:].reshape(3,3),
TM_4k_1.model_params[vox_idx][:3],
TM_4k_1.bvecs[:, TM_4k_1.b_idx], TM_4k_1.bvals[TM_4k_1.b_idx])
fn = '%s.png'%tempfile.NamedTemporaryFile().name
fig = maya.plot_tensor_3d(ten_4k, mode='ellipse', cmap='Greens', offset=-5, figure=fig, file_name=fn, roll=90)
/home/arokem/usr/lib/python2.7/site-packages/osmosis/tensor.py:135: RuntimeWarning: invalid value encountered in sqrt dist = np.diag(1 / np.sqrt(sphADC))
i = Image(filename=fn, width=1280, height=1024)
display(i)
fig, axes = plt.subplots(1,3,squeeze=True)
axes[0].set_ylabel(r'$\frac{S}{S_0}$')
for ax, models in zip(axes,([TM_1k_1,TM_1k_2],[TM_2k_1, TM_2k_2],[TM_4k_1, TM_4k_2])):
ax.scatter(models[0].relative_signal[vox_idx], models[1].relative_signal[vox_idx])
ax.grid()
ax.set_xlim([0,1])
ax.set_ylim([0,1])
ax.set_aspect('equal')
ax.set_xlabel(r'$\frac{S}{S_0}$')
fig.set_size_inches([10,10])
Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.nii.gz Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.nii.gz Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.nii.gz
fig, axes = plt.subplots(1,3,squeeze=True)
axes[0].set_ylabel(r'Predicted $\frac{S}{S_0}$')
for ax, models in zip(axes,([TM_1k_1,TM_1k_2],[TM_2k_1, TM_2k_2],[TM_4k_1, TM_4k_2])):
ax.scatter(models[0].relative_signal[vox_idx], models[1].fit[vox_idx]/models[1].S0[vox_idx])
ax.grid()
ax.set_xlim([0,1])
ax.set_ylim([0,1])
ax.set_aspect('equal')
ax.set_xlabel(r'Measured $\frac{S}{S_0}$')
fig.set_size_inches([10,10])
Predicting signal from TensorModel Fitting TensorModel params using dipy Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Predicting signal from TensorModel
/home/arokem/usr/local/lib/python2.7/site-packages/dipy/reconst/dti.py:715: DeprecationWarning: This implementation of DTI will be deprecated in a future release, consider using TensorModel warnings.warn("This implementation of DTI will be deprecated in a future release, consider using TensorModel", DeprecationWarning) /home/arokem/usr/local/lib/python2.7/site-packages/dipy/reconst/dti.py:715: DeprecationWarning: This implementation of DTI will be deprecated in a future release, consider using TensorModel warnings.warn("This implementation of DTI will be deprecated in a future release, consider using TensorModel", DeprecationWarning)
Fitting TensorModel params using dipy Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Predicting signal from TensorModel Fitting TensorModel params using dipy Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs
/home/arokem/usr/local/lib/python2.7/site-packages/dipy/reconst/dti.py:715: DeprecationWarning: This implementation of DTI will be deprecated in a future release, consider using TensorModel warnings.warn("This implementation of DTI will be deprecated in a future release, consider using TensorModel", DeprecationWarning)
import sklearn.linear_model as lm
alpha = 0.0005
rho = 0.6
solver = lm.ElasticNet
solver_params = dict(alpha=alpha,
rho=rho,
fit_intercept=False,
positive=True)
ad_rd = oio.get_ad_rd(subject, 1000)
SD_1k_1 = ssd.SparseDeconvolutionModel(*data_1k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_1k_2 = ssd.SparseDeconvolutionModel(*data_1k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
ad_rd = oio.get_ad_rd(subject, 2000)
SD_2k_1 = ssd.SparseDeconvolutionModel(*data_2k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_2k_2 = ssd.SparseDeconvolutionModel(*data_2k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
ad_rd = oio.get_ad_rd(subject, 4000)
SD_4k_1 = ssd.SparseDeconvolutionModel(*data_4k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_4k_2 = ssd.SparseDeconvolutionModel(*data_4k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs
reload(maya)
fig = maya.plot_odf_interp(TM_1k_1.bvecs[:,TM_1k_1.b_idx], SD_1k_1.model_params[vox_idx], cmap='hot')
fig = maya.plot_odf_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], SD_2k_1.model_params[vox_idx], cmap='hot', figure=fig, offset=-0.4)
fn = '%s.png'%tempfile.NamedTemporaryFile().name
fig = maya.plot_odf_interp(TM_4k_1.bvecs[:,TM_4k_1.b_idx], SD_4k_1.model_params[vox_idx], cmap='hot', colorbar=True, figure=fig, offset=-0.8, file_name=fn, roll=90)
i = Image(filename=fn, width=1280, height=1024)
display(i)
SparseDeconvolutionModel.model_params [*****************88%************* ] 7 of 8 complete
fig = maya.plot_odf_interp(TM_1k_1.bvecs[:,TM_1k_1.b_idx], SD_1k_1.diffusion_distance()[vox_idx], cmap='hot')
fig = maya.plot_odf_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], SD_2k_1.diffusion_distance()[vox_idx], cmap='hot', figure=fig, offset=-4)
fn = '%s.png'%tempfile.NamedTemporaryFile().name
fig = maya.plot_odf_interp(TM_4k_1.bvecs[:,TM_4k_1.b_idx], SD_4k_1.diffusion_distance()[vox_idx], cmap='hot', colorbar=True, figure=fig, offset=-8, file_name=fn, roll=90)
plot(SD_1k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_1k_1.model_params[vox_idx]), np.sum(SD_1k_1.model_params[vox_idx]**2)))
plot(SD_2k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_2k_1.model_params[vox_idx]), np.sum(SD_2k_1.model_params[vox_idx]**2)))
plot(SD_4k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_4k_1.model_params[vox_idx]), np.sum(SD_4k_1.model_params[vox_idx]**2)))
L1 = 1.34, L2=0.21 L1 = 2.19, L2=0.57 L1 = 2.41, L2=0.97
import sklearn.linear_model as lm
alpha = 0.001
rho = 0.2
solver = lm.ElasticNet
solver_params = dict(alpha=alpha,
rho=rho,
fit_intercept=False,
positive=True)
ad_rd = oio.get_ad_rd(subject, 1000)
SD_1k_1 = ssd.SparseDeconvolutionModel(*data_1k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_1k_2 = ssd.SparseDeconvolutionModel(*data_1k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
ad_rd = oio.get_ad_rd(subject, 2000)
SD_2k_1 = ssd.SparseDeconvolutionModel(*data_2k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_2k_2 = ssd.SparseDeconvolutionModel(*data_2k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
ad_rd = oio.get_ad_rd(subject, 4000)
SD_4k_1 = ssd.SparseDeconvolutionModel(*data_4k_1, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[0]['AD'], radial_diffusivity=ad_rd[0]['RD'])
SD_4k_2 = ssd.SparseDeconvolutionModel(*data_4k_2, mask=mask, solver_params=solver_params, params_file='temp', axial_diffusivity=ad_rd[1]['AD'], radial_diffusivity=ad_rd[1]['RD'])
Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0009_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0011_01_DWI_2mm150dir_2x_b1000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DTI_2mm_150dir_2x_b2000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0005_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvals Loading from file: /biac4/wandell/biac2/wandell6/data/arokem/osmosis/FP/0007_01_DWI_2mm150dir_2x_b4000_aligned_trilin.bvecs
fig = maya.plot_odf_interp(TM_1k_1.bvecs[:,TM_1k_1.b_idx], SD_1k_1.model_params[vox_idx], cmap='hot')
fig = maya.plot_odf_interp(TM_2k_1.bvecs[:,TM_2k_1.b_idx], SD_2k_1.model_params[vox_idx], cmap='hot', figure=fig, offset=-0.4)
fn = '%s.png'%tempfile.NamedTemporaryFile().name
fig = maya.plot_odf_interp(TM_4k_1.bvecs[:,TM_4k_1.b_idx], SD_4k_1.model_params[vox_idx], cmap='hot', colorbar=True, figure=fig, offset=-0.8, file_name=fn, roll=90)
i = Image(filename=fn, width=1280, height=1024)
display(i)
SparseDeconvolutionModel.model_params [*****************88%************* ] 7 of 8 complete
plot(SD_1k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_1k_1.model_params[vox_idx]), np.sum(SD_1k_1.model_params[vox_idx]**2)))
plot(SD_2k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_2k_1.model_params[vox_idx]), np.sum(SD_2k_1.model_params[vox_idx]**2)))
plot(SD_4k_1.model_params[vox_idx])
print ("L1 = %2.2f, L2=%2.2f"%(np.sum(SD_4k_1.model_params[vox_idx]), np.sum(SD_4k_1.model_params[vox_idx]**2)))
L1 = 1.41, L2=0.13 L1 = 2.41, L2=0.48 L1 = 2.83, L2=0.52
SD_1k_1.rotations
array([[ 0.2148766 , 0.39115905, 0.48550145, ..., 0.20190876, 0.42979192, 0.70848237], [ 0.3911553 , 0.58395393, 0.70466358, ..., 0.46394868, 0.54974967, 0.72166331], [ 0.46437351, 0.68638811, 0.55513018, ..., 0.58353762, 0.61575423, 0.42474845], ..., [ 0.20505489, 0.45598796, 0.58353558, ..., 0.18918056, 0.48276254, 0.72642268], [ 0.43562293, 0.55981675, 0.61575549, ..., 0.4827663 , 0.55090826, 0.64042174], [ 0.70848078, 0.72166418, 0.35208007, ..., 0.65848782, 0.72188051, 0.20295763]])