In [16]:
%matplotlib inline

In [17]:
from dipy.reconst.dti import fractional_anisotropy, color_fa
from argparse import ArgumentParser
from scipy import ndimage
import os
import re
import numpy as np
import nibabel as nb
import sys
import matplotlib

#matplotlib.use('Agg')  # very important above pyplot import
import matplotlib.pyplot as plt

In [3]:
cd


/root

In [4]:
ls


Aut1367.nii                    final.ipynb
Final Downsampled-Copy1.ipynb  index.html
Final Downsampled.ipynb        miniTIFF/
Final Downsampled2.ipynb       new/
Final Notebook.ipynb           pipeline.ipynb
TIFF_stack/                    prototype.ipynb
Untitled-Copy1.ipynb           result/
Untitled.ipynb                 sample0.tiff
bigtiff/                       sample1.tiff
downsampled/                   sample2.tiff
downsampled.nii                sample3.tiff
downsampled0.tiff              seelviz/
downsampled1.tiff              tensor_rgb_upper.nii.gz
downsampled2.tiff              tmp/
downsampled3.tiff              v100_ch0_tensorfsl_dogsig1_gausig2.3.nii

In [7]:
cd new/


/root/new

In [8]:
ls


dogsigma_0gausigma_0tensorfsl.nii  downsampled3.tiff  gradient_amplitudes.nii
downsampled0.tiff                  downsampled4.tiff  gradient_vectors.nii
downsampled1.tiff                  downsampled5.tiff
downsampled2.tiff                  downsampled6.tiff

In [9]:
from dipy.reconst.dti import from_lower_triangular

In [10]:
ls


dogsigma_0gausigma_0tensorfsl.nii  downsampled3.tiff  gradient_amplitudes.nii
downsampled0.tiff                  downsampled4.tiff  gradient_vectors.nii
downsampled1.tiff                  downsampled5.tiff
downsampled2.tiff                  downsampled6.tiff

In [12]:
img = nb.load('dogsigma_0gausigma_0tensorfsl.nii')

In [13]:
data = img.get_data()

In [14]:
output = from_lower_triangular(data)

In [15]:
output_ds = output[4250:4300, 250:300, :, :, :]

In [16]:
print output.shape
print output_ds.shape


(6, 10, 6, 3, 3)
(0, 0, 6, 3, 3)

In [17]:
FA = fractional_anisotropy(output)

In [18]:
FA = np.clip(FA, 0, 1)

In [19]:
FA[np.isnan(FA)] = 0

In [20]:
print FA.shape


(6, 10, 6, 3)

In [21]:
from dipy.reconst.dti import decompose_tensor

In [22]:
evalues, evectors = decompose_tensor(output)

In [23]:
print evectors[..., 0, 0].shape
print evectors.shape[-2:]


(6, 10, 6)
(3, 3)

In [24]:
print FA[:, :, :, 0].shape


(6, 10, 6)

In [25]:
RGB = color_fa(FA[:, :, :, 0], evectors)

In [26]:
nb.save(nb.Nifti1Image(np.array(255 * RGB, 'uint8'), img.get_affine()), 'tensor_rgb_upper.nii.gz')


/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:1: DeprecationWarning: get_affine method is deprecated.
Please use the ``img.affine`` property instead.

* deprecated from version: 2.1
* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 4.0
  if __name__ == '__main__':

In [27]:
def plot_rgb(im):
    plt.rcParams.update({'axes.labelsize': 'x-large',
                         'axes.titlesize': 'x-large'})

    if im.shape == (182, 218, 182):
        x = [78, 90, 100]
        y = [82, 107, 142]
        z = [88, 103, 107]
    else:
        shap = im.shape
        x = [int(shap[0]*0.35), int(shap[0]*0.51), int(shap[0]*0.65)]
        y = [int(shap[1]*0.35), int(shap[1]*0.51), int(shap[1]*0.65)]
        z = [int(shap[2]*0.35), int(shap[2]*0.51), int(shap[2]*0.65)]
    coords = (x, y, z)

    labs = ['Sagittal Slice (YZ fixed)',
            'Coronal Slice (XZ fixed)',
            'Axial Slice (XY fixed)']
    var = ['X', 'Y', 'Z']

    idx = 0
    for i, coord in enumerate(coords):
        for pos in coord:
            idx += 1
            ax = plt.subplot(3, 3, idx)
            ax.set_title(var[i] + " = " + str(pos))
            if i == 0:
                image = ndimage.rotate(im[pos, :, :], 90)
            elif i == 1:
                image = ndimage.rotate(im[:, pos, :], 90)
            else:
                image = im[:, :, pos]

            if idx % 3 == 1:
                ax.set_ylabel(labs[i])
                ax.yaxis.set_ticks([0, image.shape[0]/2, image.shape[0] - 1])
                ax.xaxis.set_ticks([0, image.shape[1]/2, image.shape[1] - 1])

            plt.imshow(image)

    fig = plt.gcf()
    fig.set_size_inches(12.5, 10.5, forward=True)
    return fig

In [28]:
affine = img.get_affine()

fa = nb.Nifti1Image(np.array(255 * RGB, 'uint8'), affine)
im = fa.get_data()


/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:1: DeprecationWarning: get_affine method is deprecated.
Please use the ``img.affine`` property instead.

* deprecated from version: 2.1
* Will raise <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 4.0
  if __name__ == '__main__':

In [29]:
print np.asarray(fa)


<class 'nibabel.nifti1.Nifti1Image'>
data shape (6, 10, 6, 3)
affine: 
[[ 1.  0.  0.  0.]
 [ 0.  1.  0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]
metadata:
<class 'nibabel.nifti1.Nifti1Header'> object, endian='<'
sizeof_hdr      : 348
data_type       : 
db_name         : 
extents         : 0
session_error   : 0
regular         : 
dim_info        : 0
dim             : [ 4  6 10  6  3  1  1  1]
intent_p1       : 0.0
intent_p2       : 0.0
intent_p3       : 0.0
intent_code     : none
datatype        : uint8
bitpix          : 8
slice_start     : 0
pixdim          : [ 1.  1.  1.  1.  1.  1.  1.  1.]
vox_offset      : 0.0
scl_slope       : nan
scl_inter       : nan
slice_end       : 0
slice_code      : unknown
xyzt_units      : 0
cal_max         : 0.0
cal_min         : 0.0
slice_duration  : 0.0
toffset         : 0.0
glmax           : 0
glmin           : 0
descrip         : 
aux_file        : 
qform_code      : unknown
sform_code      : aligned
quatern_b       : 0.0
quatern_c       : 0.0
quatern_d       : 0.0
qoffset_x       : 0.0
qoffset_y       : 0.0
qoffset_z       : 0.0
srow_x          : [ 1.  0.  0.  0.]
srow_y          : [ 0.  1.  0.  0.]
srow_z          : [ 0.  0.  1.  0.]
intent_name     : 
magic           : n+1

In [30]:
fig = plot_rgb(im)



In [31]:
import os

In [32]:
ls


dogsigma_0gausigma_0tensorfsl.nii  downsampled3.tiff  gradient_amplitudes.nii
downsampled0.tiff                  downsampled4.tiff  gradient_vectors.nii
downsampled1.tiff                  downsampled5.tiff  tensor_rgb_upper.nii.gz
downsampled2.tiff                  downsampled6.tiff

In [33]:
cd ..


/root

In [34]:
ls


Aut1367.nii                    final.ipynb
Final Downsampled-Copy1.ipynb  index.html
Final Downsampled.ipynb        miniTIFF/
Final Downsampled2.ipynb       new/
Final Notebook.ipynb           pipeline.ipynb
TIFF_stack/                    prototype.ipynb
Untitled-Copy1.ipynb           result/
Untitled.ipynb                 sample0.tiff
bigtiff/                       sample1.tiff
downsampled/                   sample2.tiff
downsampled.nii                sample3.tiff
downsampled0.tiff              seelviz/
downsampled1.tiff              tensor_rgb_upper.nii.gz
downsampled2.tiff              tmp/
downsampled3.tiff              v100_ch0_tensorfsl_dogsig1_gausig2.3.nii

In [35]:
cd ..


/

In [7]:
ls


dogsigma_0gausigma_0tensorfsl.nii  downsampled3.tiff  gradient_amplitudes.nii
downsampled0.tiff                  downsampled4.tiff  gradient_vectors.nii
downsampled1.tiff                  downsampled5.tiff  tensor_rgb_upper.nii.gz
downsampled2.tiff                  downsampled6.tiff

In [8]:
from PIL import Image

A = Image.open('downsampled0.tiff')
B = Image.open('downsampled1.tiff')
C = Image.open('downsampled2.tiff')
D = Image.open('downsampled3.tiff')
E = Image.open('downsampled4.tiff')
F = Image.open('downsampled5.tiff')


finalImage = np.dstack((A, B, C, D, E, F))

In [25]:
from PIL import Image
im = plt.imread('downsampled'+str(i)+'.tiff') 
plt.imshow(im)


Out[25]:
<matplotlib.image.AxesImage at 0x7fce784bc1d0>

In [ ]:


In [37]:
FA.shape


Out[37]:
(6, 10, 6, 3)

In [ ]:


In [ ]:


In [ ]: