import numpy as np
%matplotlib notebook
# %matplotlib inline
import matplotlib.pyplot as plt
import lddmm
import vis
import nibabel as nib
import tensorflow as tf
import rat_iDISCO_tools as rit
import os
import glob
atlas_filename = '/cis/home/dtward/Documents/waxholm_rat_atlas/WHS_SD_rat_atlas_v2_pack/WHS_SD_rat_T2star_v1.01.nii.gz'
label_filename = '/cis/home/dtward/Documents/waxholm_rat_atlas/WHS_SD_rat_atlas_v2_pack/WHS_SD_rat_atlas_v2.nii.gz'
atlas_downsample = [2,2,2]
data_directory = '/cis/home/dtward/Documents/audry_rat_mouse/AB_Rat_NewbornNeuron/YoungRat161135SagittalMidlineUp/'
# pixel size
dx0 = 5.15e-3 # in mm
dx1 = 5.15e-3 # in mm
# space between pixels
dx2 = 2.5e-3
data_downsample = [15,15,31]
output_directory = '/cis/home/dtward/Documents/audry_rat_mouse/AB_Rat_NewbornNeuron/YoungRat161135SagittalMidlineUp/'
# load the image
img_atlas = nib.load(atlas_filename)
nxI = img_atlas.header['dim'][1:4]
dxI = img_atlas.header['pixdim'][1:4]
xI = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxI,dxI)]
I0 = img_atlas.get_data().squeeze()
# load labels for a brain mask
img_label = nib.load(label_filename)
L = img_label.get_data().squeeze()
I = I0 * (L > 0)
I = I - np.mean(I)
I = I / np.std(I)
# show the labels
f = plt.figure()
vis.imshow_slices(vis.RGB_from_labels(L,I,alpha=0.125),x=xI,fig=f)
f.canvas.draw()
# display the atlas
f = plt.figure()
vis.imshow_slices(I,x=xI,fig=f,colorbar=True)
f.canvas.draw()
# downsample
I = lddmm.down(I.astype(float),atlas_downsample)
dxI = dxI*2.0
nxI = I.shape
xI = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxI,dxI)]
# crop?
x1lim = np.array([-6,13])
x1ind = ((x1lim - xI[1][0])/dxI[1]).astype(int)
Ic = np.array(I[:,x1ind[0]:x1ind[1]+1,:])
xIc = list(xI)
xIc[1] = xI[1][x1ind[0]:x1ind[1]+1]
# display the atlas
f = plt.figure()
vis.imshow_slices(Ic,x=xIc,fig=f,colorbar=True)
f.canvas.draw()
Look at the above figure and input orientation as a three character string (see above).
Characters must be L/R (left or right), A/P (anterior or posterior), S/I (superior or inferior)
The first character says the orientation of the positive x0 axis.
The second character says the orientation of the positive x1 axis.
The third character says the orientation of the positive x2 axis.
If there is ambiguity between left and right, we suggest using a right handed coordinate system.
Note that 'LAS' is a canonical coordinate system in MRI, even though it is not right handed.
atlas_orientation = 'LAS'
# get list of files
files = glob.glob(os.path.join(data_directory,'*.tif'))
files = list(sorted(files))
nfiles = len(files)
def compute_intensity_correction(files):
# get mean intensity
means = np.zeros((nfiles))
f,ax = plt.subplots()
for i,fname in enumerate(files):
I_ = plt.imread(fname)
means[i] = np.mean(I_)
if not i%10 or i == nfiles-1:
ax.cla()
ax.plot(means)
ax.set_xlabel('Slice')
ax.set_ylabel('Mean intensity')
f.canvas.draw()
# smooth it
npad = 100
meansp = np.pad(means,npad,mode='reflect')
# kernel
r = 100
k = np.exp( -np.arange(-r,r+1)**2/2.0/(r/3.0)**2 )
k /= np.sum(k)
meansps = np.convolve(meansp,k,mode='same')
meanss = meansps[npad:-npad]
f,ax = plt.subplots()
ax.plot(meanss)
ax.set_xlabel('Slice')
ax.set_ylabel('Corrected mean intensity')
f.canvas.draw()
correction = meanss/means
return correction
correction = compute_intensity_correction(files)
/cis/home/dtward/python-theta/ENV/lib/python3.6/site-packages/ipykernel_launcher.py:29: RuntimeWarning: divide by zero encountered in true_divide
def make_centered_f(n,d):
# frequency domain
f0 = np.arange(n)/n/d
# greater than Nyquist
ind = f0 >= 1.0/2.0/d
# shift
f0 = np.concatenate([f0[ind]-1.0/d, f0[np.logical_not(ind)]])
return f0
def filter_and_downsample(I_,dx,down,theta=10.5,correction=1.0,fig=None,draw=False):
if draw:
if fig is None:
fig = plt.figure()
fig.clf()
nx = I_.shape
x = [np.arange(n)*d for n,d in zip(nx,dx)]
fx = [make_centered_f(n,d) for n,d in zip(nx,dx)]
if draw:
ax = fig.add_subplot(2,2,1)
ax.imshow(I_,extent=[x[1][0],x[1][-1],x[0][0],x[0][-1]])
ax.axis('off')
if theta is not None:
[F0,F1] = np.meshgrid(*fx, indexing='ij')
FR,FT = np.sqrt(F0**2 + F1**2),np.arctan2(F1,F0)
thetas = np.array([-theta,0.0,theta])
thetas = np.concatenate([thetas,thetas-180,thetas+180])
dtheta = 5.0
slopetheta = 0.2
sloper = 0.5
high = 2.0
FILT = np.ones_like(F0)
highfilt = 1.0/(1.0 + np.exp(-(FR-high)/sloper))
for t in thetas:
thetafilt = 1.0/(1 + np.exp(-(FT/(np.pi/180) - (t-dtheta/2))/slopetheta))/(1 + np.exp(+(FT/(np.pi/180) - (t+dtheta/2))/slopetheta))
FILT = FILT * (1.0 - thetafilt*highfilt)
Ihat = np.fft.fft2(I_)
if draw:
ax = fig.add_subplot(2,2,3)
ax.imshow(np.fft.ifftshift(np.log(np.abs(Ihat) + 1.0)),extent=[fx[1][0],fx[1][-1],fx[0][0],fx[0][-1]])
ax.axis('off')
IhatF = np.fft.ifftshift(np.fft.fftshift(Ihat) * FILT)
if draw:
ax = fig.add_subplot(2,2,4)
ax.imshow(np.fft.ifftshift(np.log(np.abs(IhatF) + 1.0)),extent=[fx[1][0],fx[1][-1],fx[0][0],fx[0][-1]])
ax.axis('off')
IF = np.fft.ifft2(IhatF).real
else:
IF = np.array(I_)
if draw:
ax = fig.add_subplot(2,2,2)
ax.imshow(IF,extent=[x[1][0],x[1][-1],x[0][0],x[0][-1]])
ax.axis('off')
IFd = np.squeeze(lddmm.down(IF[:,:,None],[down[0],down[1],1]))
return IFd
def downsampling_with_artifact_correction(files, data_downsample, theta=10.5, draw=10):
'''
Streak correction at angles specified by theta
theta=None means no streak correction
Downsample data by the triple data_downsample
draw pictures every draw frames
'''
fig0 = plt.figure()
fig1 = plt.figure()
for i,fname in enumerate(files):
I_ = plt.imread(fname)
if i == 0:
nxJ = np.array([I_.shape[0],I_.shape[1],len(files)]) // data_downsample
J = np.zeros(nxJ)
Id = filter_and_downsample(I_,(dx0,dx1),
(data_downsample[0],data_downsample[1]),
theta=None,
correction=correction[i],fig=fig0,draw=not i%draw)
fig0.suptitle('Slice {} of {}'.format(i,len(files)))
this_slice = i//data_downsample[2]
if this_slice == J.shape[2]:
break
J[:,:,this_slice] += Id/data_downsample[2]
if not i%draw:
fig1.clf()
ax = fig1.add_subplot(1,2,1)
ax.imshow(I_)
ax.set_title('Original')
ax.axis('off')
ax = fig1.add_subplot(1,2,2)
ax.imshow(J[:,:,this_slice])
ax.set_title('Downsampled')
ax.axis('off')
fig0.canvas.draw()
fig1.canvas.draw()
return J
J = downsampling_with_artifact_correction(files,data_downsample,theta=None)
# save this image J
nxJ = J.shape
dxJ = np.array([dx0,dx1,dx2])*data_downsample
img = nib.Nifti1Image(J, np.diag([dxJ[0],dxJ[1],dxJ[2],1]))
img.get_data_dtype()
img.to_filename(os.path.join(output_directory,'J.nii.gz'))
# load the saved image (or skip the above preprocessing and go directly here)
img_target = nib.load(os.path.join(output_directory,'J.nii.gz'))
J = img_target.get_data()
nxJ = img_target.header['dim'][1:4]
dxJ = img_target.header['pixdim'][1:4]
xJ = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxJ,dxJ)]
# display the target
f = plt.figure()
vis.imshow_slices(J,x=xJ,fig=f,colorbar=True)
f.suptitle('Target image')
f.canvas.draw()
Look at the above figure and input orientation as a three character string (see above).
If there is ambiguity, we suggest using a right handed coordinate system (or the same system as above).
target_orientation = 'PIL'
# input orientation
A = lddmm.orientation_to_matrix(atlas_orientation, target_orientation)
Id = lddmm.affine_transform_data(*xIc,Ic,A,*xJ)
f = plt.figure()
vis.imshow_slices(Id,x=xJ,fig=f)
f.suptitle('Initial rotation')
f.canvas.draw()
# shift since we are matching one hemisphere
shift = [3,2,-2]
A = np.array([[1,0,0,shift[0]],
[0,1,0,shift[1]],
[0,0,1,shift[2]],
[0,0,0,1]])@A
Id = lddmm.affine_transform_data(*xIc,Ic,A,*xJ)
f = plt.figure()
vis.imshow_slices(Id,x=xJ,fig=f)
f.suptitle('Initial affine transformation')
f.canvas.draw()
This is essential, either part of matching code or as a preprocessing step.
Jc = rit.nonuniformity_corrrection(xJ, J)
/cis/home/dtward/python-theta/ENV/lib/python3.6/site-packages/matplotlib/figure.py:98: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance. "Adding an axes using the same arguments as a previous axes "
# downsample data
ndown = 2
dxId = np.array(dxI)
dxJd = np.array(dxJ)
Id = np.array(Ic)
Jd = np.array(Jc)
for d in range(ndown):
# downsample
Id = lddmm.down2(Id.astype(float))
dxId = dxId*2.0
Jd = lddmm.down2(Jd.astype(float))
dxJd = dxJd*2.0
nxId = Id.shape
down = 2**ndown
xId = [xIc[0][::down] + dxId[0]/2.0, xIc[1][::down] + dxId[1]/2.0, xIc[2][::down] + dxId[2]/2.0]
nxJd = Jd.shape
xJd = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxJd,dxJd)]
# Calculate affine transform and deformation at low resolution
naffine = 50
niter = 200
sigmaM = 0.5
sigmaA = sigmaM*5.0
#EM algorithm
nMstep = 1
nMstep_affine = 1
# matching cost
sigmaM = 1.0
# affine gradient descent step sizes
eT = 1e-3*sigmaM**2
eL = 1e-5*sigmaM**2
# and for deformation
nt = 5 # timesteps for flow
a = 2.0 # in millimeters, not voxels
a = 1.0 # I think 2 was too big
eV = 5e0*sigmaM**2
sigmaR = 5e1
# now that I made a smaller
# we need a smaller stepsize
eV = 2e0
eV = 1e0
# run mapping at low res
outd2 = lddmm.lddmm(Id,Jd,
xI=xId,xJ=xJd,
A0=A,
niter=niter, naffine=naffine,
eT=eT*down, eL=eL*down,
nMstep=nMstep, nMstep_affine=nMstep_affine,
sigmaM=sigmaM,sigmaA=sigmaA,
sigmaR=sigmaR, eV=eV*down, a=a, nt=nt
)
Set default parameters Initial affine transform [[ 0. -1. 0. 3.] [ 0. 0. -1. 2.] [ 1. 0. 0. -2.] [ 0. 0. 0. 1.]] Got parameters
Built energy operators WARNING:tensorflow:From /cis/home/dtward/python-theta/ENV/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version. Instructions for updating: Colocations handled automatically by placer. Built tensorflow variables Computation graph defined
Taking affine only step Updating weights
/cis/home/dtward/python-theta/ENV/lib/python3.6/site-packages/numpy/core/numeric.py:538: ComplexWarning: Casting complex values to real discards the imaginary part return array(a, dtype, copy=False, order=order)
Finished iteration 0, energy 2.144949e+02 (match 2.144949e+02, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 1, energy 1.198300e+02 (match 1.198300e+02, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 2, energy 1.088523e+02 (match 1.088523e+02, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 3, energy 1.026817e+02 (match 1.026817e+02, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 4, energy 9.796746e+01 (match 9.796746e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 5, energy 9.391596e+01 (match 9.391596e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 6, energy 9.033257e+01 (match 9.033257e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 7, energy 8.711175e+01 (match 8.711175e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 8, energy 8.394765e+01 (match 8.394765e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 9, energy 8.088439e+01 (match 8.088439e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 10, energy 7.791793e+01 (match 7.791793e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 11, energy 7.526459e+01 (match 7.526459e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 12, energy 7.302055e+01 (match 7.302055e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 13, energy 7.102357e+01 (match 7.102357e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 14, energy 6.910741e+01 (match 6.910741e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 15, energy 6.735024e+01 (match 6.735024e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 16, energy 6.578952e+01 (match 6.578952e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 17, energy 6.441115e+01 (match 6.441115e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 18, energy 6.317443e+01 (match 6.317443e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 19, energy 6.204634e+01 (match 6.204634e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 20, energy 6.101100e+01 (match 6.101100e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 21, energy 6.005034e+01 (match 6.005034e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 22, energy 5.913389e+01 (match 5.913389e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 23, energy 5.827378e+01 (match 5.827378e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 24, energy 5.747003e+01 (match 5.747003e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 25, energy 5.672158e+01 (match 5.672158e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 26, energy 5.601875e+01 (match 5.601875e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 27, energy 5.534141e+01 (match 5.534141e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 28, energy 5.470137e+01 (match 5.470137e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 29, energy 5.410321e+01 (match 5.410321e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 30, energy 5.354005e+01 (match 5.354005e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 31, energy 5.299825e+01 (match 5.299825e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 32, energy 5.247566e+01 (match 5.247566e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 33, energy 5.197697e+01 (match 5.197697e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 34, energy 5.150589e+01 (match 5.150589e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 35, energy 5.106456e+01 (match 5.106456e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 36, energy 5.065580e+01 (match 5.065580e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 37, energy 5.027988e+01 (match 5.027988e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 38, energy 4.993159e+01 (match 4.993159e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 39, energy 4.961735e+01 (match 4.961735e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 40, energy 4.933211e+01 (match 4.933211e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 41, energy 4.907192e+01 (match 4.907192e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 42, energy 4.883670e+01 (match 4.883670e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 43, energy 4.861847e+01 (match 4.861847e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 44, energy 4.841625e+01 (match 4.841625e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 45, energy 4.822627e+01 (match 4.822627e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 46, energy 4.804476e+01 (match 4.804476e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 47, energy 4.787014e+01 (match 4.787014e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 48, energy 4.770143e+01 (match 4.770143e+01, reg 0.000000e+00) Taking affine only step Updating weights Finished iteration 49, energy 4.753909e+01 (match 4.753909e+01, reg 0.000000e+00) Taking affine and deformation step Updating weights Finished iteration 50, energy 4.738387e+01 (match 4.738387e+01, reg 0.000000e+00) Taking affine and deformation step Updating weights Finished iteration 51, energy 4.521332e+01 (match 4.521123e+01, reg 2.085109e-03) Taking affine and deformation step Updating weights Finished iteration 52, energy 4.360173e+01 (match 4.359484e+01, reg 6.889916e-03) Taking affine and deformation step Updating weights Finished iteration 53, energy 4.229747e+01 (match 4.228426e+01, reg 1.321537e-02) Taking affine and deformation step Updating weights Finished iteration 54, energy 4.123276e+01 (match 4.121226e+01, reg 2.049911e-02) Taking affine and deformation step Updating weights Finished iteration 55, energy 4.032764e+01 (match 4.029915e+01, reg 2.848982e-02) Taking affine and deformation step Updating weights Finished iteration 56, energy 3.954728e+01 (match 3.951022e+01, reg 3.705955e-02) Taking affine and deformation step Updating weights Finished iteration 57, energy 3.886734e+01 (match 3.882123e+01, reg 4.611111e-02) Taking affine and deformation step Updating weights Finished iteration 58, energy 3.828301e+01 (match 3.822747e+01, reg 5.554688e-02) Taking affine and deformation step Updating weights Finished iteration 59, energy 3.778122e+01 (match 3.771594e+01, reg 6.528000e-02) Taking affine and deformation step Updating weights Finished iteration 60, energy 3.733804e+01 (match 3.726278e+01, reg 7.525847e-02) Taking affine and deformation step Updating weights Finished iteration 61, energy 3.694985e+01 (match 3.686442e+01, reg 8.542677e-02) Taking affine and deformation step Updating weights Finished iteration 62, energy 3.660212e+01 (match 3.650638e+01, reg 9.574270e-02) Taking affine and deformation step Updating weights Finished iteration 63, energy 3.625023e+01 (match 3.614402e+01, reg 1.062053e-01) Taking affine and deformation step Updating weights Finished iteration 64, energy 3.589384e+01 (match 3.577701e+01, reg 1.168307e-01) Taking affine and deformation step Updating weights Finished iteration 65, energy 3.554328e+01 (match 3.541566e+01, reg 1.276218e-01) Taking affine and deformation step Updating weights Finished iteration 66, energy 3.519910e+01 (match 3.506056e+01, reg 1.385380e-01) Taking affine and deformation step Updating weights Finished iteration 67, energy 3.486976e+01 (match 3.472024e+01, reg 1.495167e-01) Taking affine and deformation step Updating weights Finished iteration 68, energy 3.456021e+01 (match 3.439970e+01, reg 1.605157e-01) Taking affine and deformation step Updating weights Finished iteration 69, energy 3.427230e+01 (match 3.410083e+01, reg 1.714726e-01) Taking affine and deformation step Updating weights Finished iteration 70, energy 3.400628e+01 (match 3.382394e+01, reg 1.823487e-01) Taking affine and deformation step Updating weights Finished iteration 71, energy 3.375961e+01 (match 3.356648e+01, reg 1.931223e-01) Taking affine and deformation step Updating weights Finished iteration 72, energy 3.353276e+01 (match 3.332898e+01, reg 2.037786e-01) Taking affine and deformation step Updating weights Finished iteration 73, energy 3.332384e+01 (match 3.310953e+01, reg 2.143114e-01) Taking affine and deformation step Updating weights Finished iteration 74, energy 3.312129e+01 (match 3.289656e+01, reg 2.247296e-01) Taking affine and deformation step Updating weights Finished iteration 75, energy 3.292379e+01 (match 3.268874e+01, reg 2.350530e-01) Taking affine and deformation step Updating weights Finished iteration 76, energy 3.273334e+01 (match 3.248807e+01, reg 2.452776e-01) Taking affine and deformation step Updating weights Finished iteration 77, energy 3.255362e+01 (match 3.229821e+01, reg 2.554078e-01) Taking affine and deformation step Updating weights Finished iteration 78, energy 3.238609e+01 (match 3.212065e+01, reg 2.654381e-01) Taking affine and deformation step Updating weights Finished iteration 79, energy 3.222897e+01 (match 3.195360e+01, reg 2.753664e-01) Taking affine and deformation step Updating weights Finished iteration 80, energy 3.208389e+01 (match 3.179869e+01, reg 2.852004e-01) Taking affine and deformation step Updating weights Finished iteration 81, energy 3.194801e+01 (match 3.165306e+01, reg 2.949475e-01) Taking affine and deformation step Updating weights Finished iteration 82, energy 3.181656e+01 (match 3.151194e+01, reg 3.046212e-01) Taking affine and deformation step Updating weights Finished iteration 83, energy 3.168568e+01 (match 3.137145e+01, reg 3.142356e-01) Taking affine and deformation step Updating weights Finished iteration 84, energy 3.155510e+01 (match 3.123130e+01, reg 3.238005e-01) Taking affine and deformation step Updating weights Finished iteration 85, energy 3.142121e+01 (match 3.108789e+01, reg 3.333238e-01) Taking affine and deformation step Updating weights Finished iteration 86, energy 3.128745e+01 (match 3.094465e+01, reg 3.428041e-01) Taking affine and deformation step Updating weights Finished iteration 87, energy 3.115593e+01 (match 3.080369e+01, reg 3.522413e-01) Taking affine and deformation step Updating weights Finished iteration 88, energy 3.102697e+01 (match 3.066534e+01, reg 3.616371e-01) Taking affine and deformation step Updating weights Finished iteration 89, energy 3.090245e+01 (match 3.053145e+01, reg 3.709917e-01) Taking affine and deformation step Updating weights Finished iteration 90, energy 3.078159e+01 (match 3.040128e+01, reg 3.803069e-01) Taking affine and deformation step Updating weights Finished iteration 91, energy 3.066544e+01 (match 3.027586e+01, reg 3.895886e-01) Taking affine and deformation step Updating weights Finished iteration 92, energy 3.055293e+01 (match 3.015408e+01, reg 3.988484e-01) Taking affine and deformation step Updating weights Finished iteration 93, energy 3.044223e+01 (match 3.003414e+01, reg 4.080891e-01) Taking affine and deformation step Updating weights Finished iteration 94, energy 3.033567e+01 (match 2.991835e+01, reg 4.173176e-01) Taking affine and deformation step Updating weights Finished iteration 95, energy 3.023076e+01 (match 2.980422e+01, reg 4.265426e-01) Taking affine and deformation step Updating weights Finished iteration 96, energy 3.012772e+01 (match 2.969195e+01, reg 4.357659e-01) Taking affine and deformation step Updating weights Finished iteration 97, energy 3.002801e+01 (match 2.958302e+01, reg 4.449884e-01) Taking affine and deformation step Updating weights Finished iteration 98, energy 2.993061e+01 (match 2.947639e+01, reg 4.542161e-01) Taking affine and deformation step Updating weights Finished iteration 99, energy 2.983693e+01 (match 2.937348e+01, reg 4.634487e-01) Taking affine and deformation step Updating weights Finished iteration 100, energy 2.974665e+01 (match 2.927397e+01, reg 4.726881e-01) Taking affine and deformation step Updating weights Finished iteration 101, energy 2.966022e+01 (match 2.917828e+01, reg 4.819333e-01) Taking affine and deformation step Updating weights Finished iteration 102, energy 2.957689e+01 (match 2.908571e+01, reg 4.911852e-01) Taking affine and deformation step Updating weights Finished iteration 103, energy 2.949477e+01 (match 2.899433e+01, reg 5.004434e-01) Taking affine and deformation step Updating weights Finished iteration 104, energy 2.941571e+01 (match 2.890600e+01, reg 5.097059e-01) Taking affine and deformation step Updating weights Finished iteration 105, energy 2.934025e+01 (match 2.882128e+01, reg 5.189761e-01) Taking affine and deformation step Updating weights Finished iteration 106, energy 2.926759e+01 (match 2.873934e+01, reg 5.282537e-01) Taking affine and deformation step Updating weights Finished iteration 107, energy 2.919664e+01 (match 2.865910e+01, reg 5.375366e-01) Taking affine and deformation step Updating weights Finished iteration 108, energy 2.912711e+01 (match 2.858028e+01, reg 5.468261e-01) Taking affine and deformation step Updating weights Finished iteration 109, energy 2.906058e+01 (match 2.850445e+01, reg 5.561258e-01) Taking affine and deformation step Updating weights Finished iteration 110, energy 2.899517e+01 (match 2.842974e+01, reg 5.654366e-01) Taking affine and deformation step Updating weights Finished iteration 111, energy 2.893048e+01 (match 2.835572e+01, reg 5.747578e-01) Taking affine and deformation step Updating weights Finished iteration 112, energy 2.886599e+01 (match 2.828190e+01, reg 5.840889e-01) Taking affine and deformation step Updating weights Finished iteration 113, energy 2.880222e+01 (match 2.820879e+01, reg 5.934301e-01) Taking affine and deformation step Updating weights Finished iteration 114, energy 2.873893e+01 (match 2.813615e+01, reg 6.027792e-01) Taking affine and deformation step Updating weights Finished iteration 115, energy 2.867586e+01 (match 2.806372e+01, reg 6.121350e-01) Taking affine and deformation step Updating weights Finished iteration 116, energy 2.861278e+01 (match 2.799128e+01, reg 6.214942e-01) Taking affine and deformation step Updating weights Finished iteration 117, energy 2.854993e+01 (match 2.791908e+01, reg 6.308518e-01) Taking affine and deformation step Updating weights Finished iteration 118, energy 2.848644e+01 (match 2.784623e+01, reg 6.402046e-01) Taking affine and deformation step Updating weights Finished iteration 119, energy 2.842292e+01 (match 2.777338e+01, reg 6.495476e-01) Taking affine and deformation step Updating weights Finished iteration 120, energy 2.836109e+01 (match 2.770222e+01, reg 6.588718e-01) Taking affine and deformation step Updating weights Finished iteration 121, energy 2.830049e+01 (match 2.763232e+01, reg 6.681770e-01) Taking affine and deformation step Updating weights Finished iteration 122, energy 2.824021e+01 (match 2.756274e+01, reg 6.774640e-01) Taking affine and deformation step Updating weights Finished iteration 123, energy 2.818203e+01 (match 2.749530e+01, reg 6.867329e-01) Taking affine and deformation step Updating weights Finished iteration 124, energy 2.812459e+01 (match 2.742860e+01, reg 6.959893e-01) Taking affine and deformation step Updating weights Finished iteration 125, energy 2.806826e+01 (match 2.736302e+01, reg 7.052354e-01) Taking affine and deformation step Updating weights Finished iteration 126, energy 2.801309e+01 (match 2.729861e+01, reg 7.144741e-01) Taking affine and deformation step Updating weights Finished iteration 127, energy 2.795904e+01 (match 2.723533e+01, reg 7.237094e-01) Taking affine and deformation step Updating weights Finished iteration 128, energy 2.790606e+01 (match 2.717312e+01, reg 7.329445e-01) Taking affine and deformation step Updating weights Finished iteration 129, energy 2.785424e+01 (match 2.711206e+01, reg 7.421809e-01) Taking affine and deformation step Updating weights Finished iteration 130, energy 2.780225e+01 (match 2.705083e+01, reg 7.514211e-01) Taking affine and deformation step Updating weights Finished iteration 131, energy 2.774995e+01 (match 2.698929e+01, reg 7.606616e-01) Taking affine and deformation step Updating weights Finished iteration 132, energy 2.769870e+01 (match 2.692880e+01, reg 7.699018e-01) Taking affine and deformation step Updating weights Finished iteration 133, energy 2.764849e+01 (match 2.686934e+01, reg 7.791435e-01) Taking affine and deformation step Updating weights Finished iteration 134, energy 2.759892e+01 (match 2.681053e+01, reg 7.883901e-01) Taking affine and deformation step Updating weights Finished iteration 135, energy 2.755027e+01 (match 2.675262e+01, reg 7.976439e-01) Taking affine and deformation step Updating weights Finished iteration 136, energy 2.750250e+01 (match 2.669559e+01, reg 8.069042e-01) Taking affine and deformation step Updating weights Finished iteration 137, energy 2.745559e+01 (match 2.663942e+01, reg 8.161703e-01) Taking affine and deformation step Updating weights Finished iteration 138, energy 2.740867e+01 (match 2.658323e+01, reg 8.254416e-01) Taking affine and deformation step Updating weights Finished iteration 139, energy 2.736211e+01 (match 2.652739e+01, reg 8.347172e-01) Taking affine and deformation step Updating weights Finished iteration 140, energy 2.731576e+01 (match 2.647176e+01, reg 8.439959e-01) Taking affine and deformation step Updating weights Finished iteration 141, energy 2.727014e+01 (match 2.641687e+01, reg 8.532749e-01) Taking affine and deformation step Updating weights Finished iteration 142, energy 2.722517e+01 (match 2.636262e+01, reg 8.625541e-01) Taking affine and deformation step Updating weights Finished iteration 143, energy 2.718100e+01 (match 2.630917e+01, reg 8.718313e-01) Taking affine and deformation step Updating weights Finished iteration 144, energy 2.713726e+01 (match 2.625616e+01, reg 8.811063e-01) Taking affine and deformation step Updating weights Finished iteration 145, energy 2.709381e+01 (match 2.620344e+01, reg 8.903793e-01) Taking affine and deformation step Updating weights Finished iteration 146, energy 2.705097e+01 (match 2.615132e+01, reg 8.996491e-01) Taking affine and deformation step Updating weights Finished iteration 147, energy 2.700883e+01 (match 2.609991e+01, reg 9.089135e-01) Taking affine and deformation step Updating weights Finished iteration 148, energy 2.696730e+01 (match 2.604913e+01, reg 9.181717e-01) Taking affine and deformation step Updating weights Finished iteration 149, energy 2.692659e+01 (match 2.599916e+01, reg 9.274237e-01) Taking affine and deformation step Updating weights Finished iteration 150, energy 2.688672e+01 (match 2.595005e+01, reg 9.366695e-01) Taking affine and deformation step Updating weights Finished iteration 151, energy 2.684728e+01 (match 2.590137e+01, reg 9.459114e-01) Taking affine and deformation step Updating weights Finished iteration 152, energy 2.680840e+01 (match 2.585325e+01, reg 9.551509e-01) Taking affine and deformation step Updating weights Finished iteration 153, energy 2.677045e+01 (match 2.580606e+01, reg 9.643894e-01) Taking affine and deformation step Updating weights Finished iteration 154, energy 2.673316e+01 (match 2.575953e+01, reg 9.736270e-01) Taking affine and deformation step Updating weights Finished iteration 155, energy 2.669627e+01 (match 2.571341e+01, reg 9.828649e-01) Taking affine and deformation step Updating weights Finished iteration 156, energy 2.666013e+01 (match 2.566803e+01, reg 9.921033e-01) Taking affine and deformation step Updating weights Finished iteration 157, energy 2.662445e+01 (match 2.562310e+01, reg 1.001343e+00) Taking affine and deformation step Updating weights Finished iteration 158, energy 2.658919e+01 (match 2.557861e+01, reg 1.010582e+00) Taking affine and deformation step Updating weights Finished iteration 159, energy 2.655469e+01 (match 2.553487e+01, reg 1.019821e+00) Taking affine and deformation step Updating weights Finished iteration 160, energy 2.652100e+01 (match 2.549194e+01, reg 1.029058e+00) Taking affine and deformation step Updating weights Finished iteration 161, energy 2.648800e+01 (match 2.544971e+01, reg 1.038293e+00) Taking affine and deformation step Updating weights Finished iteration 162, energy 2.645573e+01 (match 2.540820e+01, reg 1.047527e+00) Taking affine and deformation step Updating weights Finished iteration 163, energy 2.642390e+01 (match 2.536714e+01, reg 1.056758e+00) Taking affine and deformation step Updating weights Finished iteration 164, energy 2.639267e+01 (match 2.532668e+01, reg 1.065988e+00) Taking affine and deformation step Updating weights Finished iteration 165, energy 2.636195e+01 (match 2.528674e+01, reg 1.075217e+00) Taking affine and deformation step Updating weights Finished iteration 166, energy 2.633161e+01 (match 2.524716e+01, reg 1.084444e+00) Taking affine and deformation step Updating weights Finished iteration 167, energy 2.630169e+01 (match 2.520802e+01, reg 1.093671e+00) Taking affine and deformation step Updating weights Finished iteration 168, energy 2.627223e+01 (match 2.516933e+01, reg 1.102897e+00) Taking affine and deformation step Updating weights Finished iteration 169, energy 2.624346e+01 (match 2.513134e+01, reg 1.112124e+00) Taking affine and deformation step Updating weights Finished iteration 170, energy 2.621519e+01 (match 2.509384e+01, reg 1.121351e+00) Taking affine and deformation step Updating weights Finished iteration 171, energy 2.618741e+01 (match 2.505684e+01, reg 1.130578e+00) Taking affine and deformation step Updating weights Finished iteration 172, energy 2.616039e+01 (match 2.502058e+01, reg 1.139807e+00) Taking affine and deformation step Updating weights Finished iteration 173, energy 2.613396e+01 (match 2.498492e+01, reg 1.149038e+00) Taking affine and deformation step Updating weights Finished iteration 174, energy 2.610801e+01 (match 2.494974e+01, reg 1.158270e+00) Taking affine and deformation step Updating weights Finished iteration 175, energy 2.608243e+01 (match 2.491493e+01, reg 1.167503e+00) Taking affine and deformation step Updating weights Finished iteration 176, energy 2.605730e+01 (match 2.488056e+01, reg 1.176737e+00) Taking affine and deformation step Updating weights Finished iteration 177, energy 2.603227e+01 (match 2.484630e+01, reg 1.185973e+00) Taking affine and deformation step Updating weights Finished iteration 178, energy 2.600733e+01 (match 2.481212e+01, reg 1.195211e+00) Taking affine and deformation step Updating weights Finished iteration 179, energy 2.598280e+01 (match 2.477835e+01, reg 1.204451e+00) Taking affine and deformation step Updating weights Finished iteration 180, energy 2.595868e+01 (match 2.474498e+01, reg 1.213692e+00) Taking affine and deformation step Updating weights Finished iteration 181, energy 2.593522e+01 (match 2.471229e+01, reg 1.222932e+00) Taking affine and deformation step Updating weights Finished iteration 182, energy 2.591242e+01 (match 2.468025e+01, reg 1.232172e+00) Taking affine and deformation step Updating weights Finished iteration 183, energy 2.588981e+01 (match 2.464840e+01, reg 1.241412e+00) Taking affine and deformation step Updating weights Finished iteration 184, energy 2.586752e+01 (match 2.461687e+01, reg 1.250653e+00) Taking affine and deformation step Updating weights Finished iteration 185, energy 2.584557e+01 (match 2.458568e+01, reg 1.259895e+00) Taking affine and deformation step Updating weights Finished iteration 186, energy 2.582382e+01 (match 2.455468e+01, reg 1.269139e+00) Taking affine and deformation step Updating weights Finished iteration 187, energy 2.580238e+01 (match 2.452399e+01, reg 1.278384e+00) Taking affine and deformation step Updating weights Finished iteration 188, energy 2.578111e+01 (match 2.449348e+01, reg 1.287632e+00) Taking affine and deformation step Updating weights Finished iteration 189, energy 2.575997e+01 (match 2.446309e+01, reg 1.296883e+00) Taking affine and deformation step Updating weights Finished iteration 190, energy 2.573908e+01 (match 2.443295e+01, reg 1.306136e+00) Taking affine and deformation step Updating weights Finished iteration 191, energy 2.571862e+01 (match 2.440323e+01, reg 1.315390e+00) Taking affine and deformation step Updating weights Finished iteration 192, energy 2.569839e+01 (match 2.437375e+01, reg 1.324646e+00) Taking affine and deformation step Updating weights Finished iteration 193, energy 2.567807e+01 (match 2.434417e+01, reg 1.333901e+00) Taking affine and deformation step Updating weights Finished iteration 194, energy 2.565795e+01 (match 2.431480e+01, reg 1.343159e+00) Taking affine and deformation step Updating weights Finished iteration 195, energy 2.563804e+01 (match 2.428562e+01, reg 1.352417e+00) Taking affine and deformation step Updating weights Finished iteration 196, energy 2.561828e+01 (match 2.425661e+01, reg 1.361677e+00) Taking affine and deformation step Updating weights Finished iteration 197, energy 2.559882e+01 (match 2.422789e+01, reg 1.370938e+00) Taking affine and deformation step Updating weights Finished iteration 198, energy 2.557937e+01 (match 2.419917e+01, reg 1.380199e+00) Taking affine and deformation step Updating weights Finished iteration 199, energy 2.556011e+01 (match 2.417065e+01, reg 1.389462e+00)
# go to higher resolution
# downsample data
ndown = 1
dxId = np.array(dxI)
dxJd = np.array(dxJ)
Id = np.array(Ic)
Jd = np.array(Jc)
for d in range(ndown):
# downsample
Id = lddmm.down2(Id.astype(float))
dxId = dxId*2.0
Jd = lddmm.down2(Jd.astype(float))
dxJd = dxJd*2.0
nxId = Id.shape
down = 2**ndown
xId = [xIc[0][::down] + dxId[0]/2.0, xIc[1][::down] + dxId[1]/2.0, xIc[2][::down] + dxId[2]/2.0]
nxJd = Jd.shape
xJd = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxJd,dxJd)]
down = 2**ndown
niter = 200
naffine = 0
outd1 = lddmm.lddmm(Id,Jd,
xI=xId,xJ=xJd,
A0=outd2['A'],
vt00=outd2['vt0'], vt10=outd2['vt1'], vt20=outd2['vt2'],
niter=niter, naffine=naffine,
eT=eT*down, eL=eL*down,
nMstep=nMstep, nMstep_affine=nMstep_affine,
sigmaM=sigmaM,sigmaA=sigmaA,
sigmaR=sigmaR, eV=eV*down, a=a, nt=nt
)
Set default parameters Initial affine transform [[ 0.00336063 -0.94581866 -0.00693383 3.0993996 ] [ 0.0111187 -0.05948252 -0.8227812 1.6955974 ] [ 0.95140344 0.02051597 -0.01633557 -2.4449315 ] [ 0. 0. 0. 1. ]] Upsampling velocity time 0 of 5
/cis/home/dtward/Documents/image_lddmm_tensorflow/lddmm.py:329: UserWarning: upsampling initial guess of velocity field warnings.warn('upsampling initial guess of velocity field')
Upsampling velocity time 1 of 5 Upsampling velocity time 2 of 5 Upsampling velocity time 3 of 5 Upsampling velocity time 4 of 5 Got parameters
Built energy operators Built tensorflow variables Computation graph defined
/cis/home/dtward/python-theta/ENV/lib/python3.6/site-packages/matplotlib/pyplot.py:514: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). max_open_warning, RuntimeWarning)
Taking affine and deformation step Updating weights Finished iteration 0, energy 4.976790e+01 (match 4.838699e+01, reg 1.380915e+00) Taking affine and deformation step Updating weights Finished iteration 1, energy 3.315921e+01 (match 3.176392e+01, reg 1.395290e+00) Taking affine and deformation step Updating weights Finished iteration 2, energy 3.292584e+01 (match 3.152233e+01, reg 1.403508e+00) Taking affine and deformation step Updating weights Finished iteration 3, energy 3.284413e+01 (match 3.143274e+01, reg 1.411382e+00) Taking affine and deformation step Updating weights Finished iteration 4, energy 3.278185e+01 (match 3.136285e+01, reg 1.419003e+00) Taking affine and deformation step Updating weights Finished iteration 5, energy 3.272946e+01 (match 3.130306e+01, reg 1.426404e+00) Taking affine and deformation step Updating weights Finished iteration 6, energy 3.268428e+01 (match 3.125067e+01, reg 1.433618e+00) Taking affine and deformation step Updating weights Finished iteration 7, energy 3.264305e+01 (match 3.120237e+01, reg 1.440677e+00) Taking affine and deformation step Updating weights Finished iteration 8, energy 3.260516e+01 (match 3.115755e+01, reg 1.447605e+00) Taking affine and deformation step Updating weights Finished iteration 9, energy 3.257001e+01 (match 3.111558e+01, reg 1.454424e+00) Taking affine and deformation step Updating weights Finished iteration 10, energy 3.253677e+01 (match 3.107561e+01, reg 1.461153e+00) Taking affine and deformation step Updating weights Finished iteration 11, energy 3.250523e+01 (match 3.103742e+01, reg 1.467807e+00) Taking affine and deformation step Updating weights Finished iteration 12, energy 3.247502e+01 (match 3.100062e+01, reg 1.474401e+00) Taking affine and deformation step Updating weights Finished iteration 13, energy 3.244612e+01 (match 3.096518e+01, reg 1.480944e+00) Taking affine and deformation step Updating weights Finished iteration 14, energy 3.241842e+01 (match 3.093098e+01, reg 1.487446e+00) Taking affine and deformation step Updating weights Finished iteration 15, energy 3.239194e+01 (match 3.089803e+01, reg 1.493912e+00) Taking affine and deformation step Updating weights Finished iteration 16, energy 3.236653e+01 (match 3.086618e+01, reg 1.500353e+00) Taking affine and deformation step Updating weights Finished iteration 17, energy 3.234182e+01 (match 3.083505e+01, reg 1.506772e+00) Taking affine and deformation step Updating weights Finished iteration 18, energy 3.231776e+01 (match 3.080459e+01, reg 1.513173e+00) Taking affine and deformation step Updating weights Finished iteration 19, energy 3.229425e+01 (match 3.077469e+01, reg 1.519562e+00) Taking affine and deformation step Updating weights Finished iteration 20, energy 3.227139e+01 (match 3.074545e+01, reg 1.525941e+00) Taking affine and deformation step Updating weights Finished iteration 21, energy 3.224909e+01 (match 3.071677e+01, reg 1.532313e+00) Taking affine and deformation step Updating weights Finished iteration 22, energy 3.222731e+01 (match 3.068862e+01, reg 1.538680e+00) Taking affine and deformation step Updating weights Finished iteration 23, energy 3.220604e+01 (match 3.066100e+01, reg 1.545043e+00) Taking affine and deformation step Updating weights Finished iteration 24, energy 3.218554e+01 (match 3.063414e+01, reg 1.551405e+00) Taking affine and deformation step Updating weights Finished iteration 25, energy 3.216535e+01 (match 3.060758e+01, reg 1.557766e+00) Taking affine and deformation step Updating weights Finished iteration 26, energy 3.214546e+01 (match 3.058133e+01, reg 1.564127e+00) Taking affine and deformation step Updating weights Finished iteration 27, energy 3.212611e+01 (match 3.055562e+01, reg 1.570488e+00) Taking affine and deformation step Updating weights Finished iteration 28, energy 3.210695e+01 (match 3.053010e+01, reg 1.576852e+00) Taking affine and deformation step Updating weights Finished iteration 29, energy 3.208799e+01 (match 3.050478e+01, reg 1.583217e+00) Taking affine and deformation step Updating weights Finished iteration 30, energy 3.206945e+01 (match 3.047986e+01, reg 1.589586e+00) Taking affine and deformation step Updating weights Finished iteration 31, energy 3.205114e+01 (match 3.045518e+01, reg 1.595957e+00) Taking affine and deformation step Updating weights Finished iteration 32, energy 3.203309e+01 (match 3.043076e+01, reg 1.602330e+00) Taking affine and deformation step Updating weights Finished iteration 33, energy 3.201517e+01 (match 3.040646e+01, reg 1.608705e+00) Taking affine and deformation step Updating weights Finished iteration 34, energy 3.199747e+01 (match 3.038238e+01, reg 1.615083e+00) Taking affine and deformation step Updating weights Finished iteration 35, energy 3.197986e+01 (match 3.035840e+01, reg 1.621464e+00) Taking affine and deformation step Updating weights Finished iteration 36, energy 3.196228e+01 (match 3.033444e+01, reg 1.627847e+00) Taking affine and deformation step Updating weights Finished iteration 37, energy 3.194479e+01 (match 3.031056e+01, reg 1.634234e+00) Taking affine and deformation step Updating weights Finished iteration 38, energy 3.192753e+01 (match 3.028690e+01, reg 1.640623e+00) Taking affine and deformation step Updating weights Finished iteration 39, energy 3.191044e+01 (match 3.026343e+01, reg 1.647015e+00) Taking affine and deformation step Updating weights Finished iteration 40, energy 3.189343e+01 (match 3.024002e+01, reg 1.653410e+00) Taking affine and deformation step Updating weights Finished iteration 41, energy 3.187659e+01 (match 3.021678e+01, reg 1.659808e+00) Taking affine and deformation step Updating weights Finished iteration 42, energy 3.185968e+01 (match 3.019348e+01, reg 1.666207e+00) Taking affine and deformation step Updating weights Finished iteration 43, energy 3.184289e+01 (match 3.017028e+01, reg 1.672607e+00) Taking affine and deformation step Updating weights Finished iteration 44, energy 3.182622e+01 (match 3.014721e+01, reg 1.679006e+00) Taking affine and deformation step Updating weights Finished iteration 45, energy 3.180978e+01 (match 3.012437e+01, reg 1.685405e+00) Taking affine and deformation step Updating weights Finished iteration 46, energy 3.179350e+01 (match 3.010170e+01, reg 1.691803e+00) Taking affine and deformation step Updating weights Finished iteration 47, energy 3.177718e+01 (match 3.007898e+01, reg 1.698201e+00) Taking affine and deformation step Updating weights Finished iteration 48, energy 3.176097e+01 (match 3.005637e+01, reg 1.704598e+00) Taking affine and deformation step Updating weights Finished iteration 49, energy 3.174503e+01 (match 3.003404e+01, reg 1.710995e+00) Taking affine and deformation step Updating weights Finished iteration 50, energy 3.172918e+01 (match 3.001178e+01, reg 1.717394e+00) Taking affine and deformation step Updating weights Finished iteration 51, energy 3.171340e+01 (match 2.998960e+01, reg 1.723795e+00) Taking affine and deformation step Updating weights Finished iteration 52, energy 3.169762e+01 (match 2.996742e+01, reg 1.730198e+00) Taking affine and deformation step Updating weights Finished iteration 53, energy 3.168196e+01 (match 2.994536e+01, reg 1.736604e+00) Taking affine and deformation step Updating weights Finished iteration 54, energy 3.166632e+01 (match 2.992331e+01, reg 1.743011e+00) Taking affine and deformation step Updating weights Finished iteration 55, energy 3.165082e+01 (match 2.990140e+01, reg 1.749419e+00) Taking affine and deformation step Updating weights Finished iteration 56, energy 3.163554e+01 (match 2.987971e+01, reg 1.755830e+00) Taking affine and deformation step Updating weights Finished iteration 57, energy 3.162047e+01 (match 2.985823e+01, reg 1.762242e+00) Taking affine and deformation step Updating weights Finished iteration 58, energy 3.160560e+01 (match 2.983695e+01, reg 1.768657e+00) Taking affine and deformation step Updating weights Finished iteration 59, energy 3.159097e+01 (match 2.981589e+01, reg 1.775073e+00) Taking affine and deformation step Updating weights Finished iteration 60, energy 3.157649e+01 (match 2.979499e+01, reg 1.781492e+00) Taking affine and deformation step Updating weights Finished iteration 61, energy 3.156204e+01 (match 2.977412e+01, reg 1.787912e+00) Taking affine and deformation step Updating weights Finished iteration 62, energy 3.154765e+01 (match 2.975331e+01, reg 1.794333e+00) Taking affine and deformation step Updating weights Finished iteration 63, energy 3.153335e+01 (match 2.973259e+01, reg 1.800757e+00) Taking affine and deformation step Updating weights Finished iteration 64, energy 3.151926e+01 (match 2.971208e+01, reg 1.807182e+00) Taking affine and deformation step Updating weights Finished iteration 65, energy 3.150535e+01 (match 2.969174e+01, reg 1.813609e+00) Taking affine and deformation step Updating weights Finished iteration 66, energy 3.149170e+01 (match 2.967166e+01, reg 1.820038e+00) Taking affine and deformation step Updating weights Finished iteration 67, energy 3.147812e+01 (match 2.965165e+01, reg 1.826470e+00) Taking affine and deformation step Updating weights Finished iteration 68, energy 3.146470e+01 (match 2.963179e+01, reg 1.832904e+00) Taking affine and deformation step Updating weights Finished iteration 69, energy 3.145142e+01 (match 2.961208e+01, reg 1.839340e+00) Taking affine and deformation step Updating weights Finished iteration 70, energy 3.143827e+01 (match 2.959249e+01, reg 1.845777e+00) Taking affine and deformation step Updating weights Finished iteration 71, energy 3.142522e+01 (match 2.957300e+01, reg 1.852216e+00) Taking affine and deformation step Updating weights Finished iteration 72, energy 3.141237e+01 (match 2.955372e+01, reg 1.858657e+00) Taking affine and deformation step Updating weights Finished iteration 73, energy 3.139965e+01 (match 2.953454e+01, reg 1.865101e+00) Taking affine and deformation step Updating weights Finished iteration 74, energy 3.138705e+01 (match 2.951550e+01, reg 1.871548e+00) Taking affine and deformation step Updating weights Finished iteration 75, energy 3.137456e+01 (match 2.949657e+01, reg 1.877999e+00) Taking affine and deformation step Updating weights Finished iteration 76, energy 3.136202e+01 (match 2.947757e+01, reg 1.884452e+00) Taking affine and deformation step Updating weights Finished iteration 77, energy 3.134945e+01 (match 2.945854e+01, reg 1.890910e+00) Taking affine and deformation step Updating weights Finished iteration 78, energy 3.133684e+01 (match 2.943947e+01, reg 1.897370e+00) Taking affine and deformation step Updating weights Finished iteration 79, energy 3.132412e+01 (match 2.942029e+01, reg 1.903835e+00) Taking affine and deformation step Updating weights Finished iteration 80, energy 3.131137e+01 (match 2.940107e+01, reg 1.910302e+00) Taking affine and deformation step Updating weights Finished iteration 81, energy 3.129866e+01 (match 2.938189e+01, reg 1.916772e+00) Taking affine and deformation step Updating weights Finished iteration 82, energy 3.128593e+01 (match 2.936269e+01, reg 1.923244e+00) Taking affine and deformation step Updating weights Finished iteration 83, energy 3.127312e+01 (match 2.934340e+01, reg 1.929719e+00) Taking affine and deformation step Updating weights Finished iteration 84, energy 3.126033e+01 (match 2.932413e+01, reg 1.936197e+00) Taking affine and deformation step Updating weights Finished iteration 85, energy 3.124759e+01 (match 2.930492e+01, reg 1.942679e+00) Taking affine and deformation step Updating weights Finished iteration 86, energy 3.123506e+01 (match 2.928589e+01, reg 1.949164e+00) Taking affine and deformation step Updating weights Finished iteration 87, energy 3.122283e+01 (match 2.926718e+01, reg 1.955651e+00) Taking affine and deformation step Updating weights Finished iteration 88, energy 3.121065e+01 (match 2.924851e+01, reg 1.962142e+00) Taking affine and deformation step Updating weights Finished iteration 89, energy 3.119854e+01 (match 2.922990e+01, reg 1.968636e+00) Taking affine and deformation step Updating weights Finished iteration 90, energy 3.118643e+01 (match 2.921130e+01, reg 1.975134e+00) Taking affine and deformation step Updating weights Finished iteration 91, energy 3.117433e+01 (match 2.919270e+01, reg 1.981635e+00) Taking affine and deformation step Updating weights Finished iteration 92, energy 3.116228e+01 (match 2.917414e+01, reg 1.988140e+00) Taking affine and deformation step Updating weights Finished iteration 93, energy 3.115032e+01 (match 2.915567e+01, reg 1.994651e+00) Taking affine and deformation step Updating weights Finished iteration 94, energy 3.113838e+01 (match 2.913722e+01, reg 2.001167e+00) Taking affine and deformation step Updating weights Finished iteration 95, energy 3.112645e+01 (match 2.911876e+01, reg 2.007687e+00) Taking affine and deformation step Updating weights Finished iteration 96, energy 3.111448e+01 (match 2.910027e+01, reg 2.014213e+00) Taking affine and deformation step Updating weights Finished iteration 97, energy 3.110245e+01 (match 2.908170e+01, reg 2.020743e+00) Taking affine and deformation step Updating weights Finished iteration 98, energy 3.109037e+01 (match 2.906310e+01, reg 2.027277e+00) Taking affine and deformation step Updating weights Finished iteration 99, energy 3.107827e+01 (match 2.904446e+01, reg 2.033812e+00) Taking affine and deformation step Updating weights Finished iteration 100, energy 3.106629e+01 (match 2.902594e+01, reg 2.040349e+00) Taking affine and deformation step Updating weights Finished iteration 101, energy 3.105441e+01 (match 2.900753e+01, reg 2.046886e+00) Taking affine and deformation step Updating weights Finished iteration 102, energy 3.104270e+01 (match 2.898928e+01, reg 2.053423e+00) Taking affine and deformation step Updating weights Finished iteration 103, energy 3.103099e+01 (match 2.897103e+01, reg 2.059963e+00) Taking affine and deformation step Updating weights Finished iteration 104, energy 3.101926e+01 (match 2.895276e+01, reg 2.066504e+00) Taking affine and deformation step Updating weights Finished iteration 105, energy 3.100761e+01 (match 2.893457e+01, reg 2.073046e+00) Taking affine and deformation step Updating weights Finished iteration 106, energy 3.099613e+01 (match 2.891654e+01, reg 2.079591e+00) Taking affine and deformation step Updating weights Finished iteration 107, energy 3.098471e+01 (match 2.889857e+01, reg 2.086136e+00) Taking affine and deformation step Updating weights Finished iteration 108, energy 3.097336e+01 (match 2.888068e+01, reg 2.092681e+00) Taking affine and deformation step Updating weights Finished iteration 109, energy 3.096204e+01 (match 2.886281e+01, reg 2.099228e+00) Taking affine and deformation step Updating weights Finished iteration 110, energy 3.095069e+01 (match 2.884491e+01, reg 2.105777e+00) Taking affine and deformation step Updating weights Finished iteration 111, energy 3.093947e+01 (match 2.882714e+01, reg 2.112327e+00) Taking affine and deformation step Updating weights Finished iteration 112, energy 3.092834e+01 (match 2.880946e+01, reg 2.118877e+00) Taking affine and deformation step Updating weights Finished iteration 113, energy 3.091732e+01 (match 2.879189e+01, reg 2.125429e+00) Taking affine and deformation step Updating weights Finished iteration 114, energy 3.090628e+01 (match 2.877430e+01, reg 2.131981e+00) Taking affine and deformation step Updating weights Finished iteration 115, energy 3.089519e+01 (match 2.875665e+01, reg 2.138534e+00) Taking affine and deformation step Updating weights Finished iteration 116, energy 3.088391e+01 (match 2.873883e+01, reg 2.145087e+00) Taking affine and deformation step Updating weights Finished iteration 117, energy 3.087259e+01 (match 2.872095e+01, reg 2.151639e+00) Taking affine and deformation step Updating weights Finished iteration 118, energy 3.086134e+01 (match 2.870315e+01, reg 2.158190e+00) Taking affine and deformation step Updating weights Finished iteration 119, energy 3.085025e+01 (match 2.868551e+01, reg 2.164741e+00) Taking affine and deformation step Updating weights Finished iteration 120, energy 3.083929e+01 (match 2.866800e+01, reg 2.171291e+00) Taking affine and deformation step Updating weights Finished iteration 121, energy 3.082858e+01 (match 2.865074e+01, reg 2.177839e+00) Taking affine and deformation step Updating weights Finished iteration 122, energy 3.081792e+01 (match 2.863354e+01, reg 2.184383e+00) Taking affine and deformation step Updating weights Finished iteration 123, energy 3.080742e+01 (match 2.861650e+01, reg 2.190926e+00) Taking affine and deformation step Updating weights Finished iteration 124, energy 3.079703e+01 (match 2.859956e+01, reg 2.197467e+00) Taking affine and deformation step Updating weights Finished iteration 125, energy 3.078682e+01 (match 2.858281e+01, reg 2.204005e+00) Taking affine and deformation step Updating weights Finished iteration 126, energy 3.077662e+01 (match 2.856608e+01, reg 2.210541e+00) Taking affine and deformation step Updating weights Finished iteration 127, energy 3.076648e+01 (match 2.854940e+01, reg 2.217075e+00) Taking affine and deformation step Updating weights Finished iteration 128, energy 3.075641e+01 (match 2.853281e+01, reg 2.223605e+00) Taking affine and deformation step Updating weights Finished iteration 129, energy 3.074639e+01 (match 2.851625e+01, reg 2.230134e+00) Taking affine and deformation step Updating weights Finished iteration 130, energy 3.073650e+01 (match 2.849984e+01, reg 2.236660e+00) Taking affine and deformation step Updating weights Finished iteration 131, energy 3.072664e+01 (match 2.848345e+01, reg 2.243184e+00) Taking affine and deformation step Updating weights Finished iteration 132, energy 3.071686e+01 (match 2.846715e+01, reg 2.249706e+00) Taking affine and deformation step Updating weights Finished iteration 133, energy 3.070714e+01 (match 2.845091e+01, reg 2.256227e+00) Taking affine and deformation step Updating weights Finished iteration 134, energy 3.069749e+01 (match 2.843475e+01, reg 2.262746e+00) Taking affine and deformation step Updating weights Finished iteration 135, energy 3.068791e+01 (match 2.841865e+01, reg 2.269262e+00) Taking affine and deformation step Updating weights Finished iteration 136, energy 3.067835e+01 (match 2.840258e+01, reg 2.275775e+00) Taking affine and deformation step Updating weights Finished iteration 137, energy 3.066888e+01 (match 2.838660e+01, reg 2.282285e+00) Taking affine and deformation step Updating weights Finished iteration 138, energy 3.065943e+01 (match 2.837064e+01, reg 2.288794e+00) Taking affine and deformation step Updating weights Finished iteration 139, energy 3.065012e+01 (match 2.835482e+01, reg 2.295300e+00) Taking affine and deformation step Updating weights Finished iteration 140, energy 3.064091e+01 (match 2.833910e+01, reg 2.301804e+00) Taking affine and deformation step Updating weights Finished iteration 141, energy 3.063169e+01 (match 2.832338e+01, reg 2.308307e+00) Taking affine and deformation step Updating weights Finished iteration 142, energy 3.062235e+01 (match 2.830755e+01, reg 2.314807e+00) Taking affine and deformation step Updating weights Finished iteration 143, energy 3.061310e+01 (match 2.829179e+01, reg 2.321305e+00) Taking affine and deformation step Updating weights Finished iteration 144, energy 3.060382e+01 (match 2.827602e+01, reg 2.327801e+00) Taking affine and deformation step Updating weights Finished iteration 145, energy 3.059457e+01 (match 2.826028e+01, reg 2.334295e+00) Taking affine and deformation step Updating weights Finished iteration 146, energy 3.058532e+01 (match 2.824453e+01, reg 2.340789e+00) Taking affine and deformation step Updating weights Finished iteration 147, energy 3.057613e+01 (match 2.822885e+01, reg 2.347283e+00) Taking affine and deformation step Updating weights Finished iteration 148, energy 3.056700e+01 (match 2.821322e+01, reg 2.353777e+00) Taking affine and deformation step Updating weights Finished iteration 149, energy 3.055798e+01 (match 2.819771e+01, reg 2.360272e+00) Taking affine and deformation step Updating weights Finished iteration 150, energy 3.054888e+01 (match 2.818211e+01, reg 2.366767e+00) Taking affine and deformation step Updating weights Finished iteration 151, energy 3.053974e+01 (match 2.816648e+01, reg 2.373263e+00) Taking affine and deformation step Updating weights Finished iteration 152, energy 3.053079e+01 (match 2.815103e+01, reg 2.379760e+00) Taking affine and deformation step Updating weights Finished iteration 153, energy 3.052196e+01 (match 2.813571e+01, reg 2.386257e+00) Taking affine and deformation step Updating weights Finished iteration 154, energy 3.051320e+01 (match 2.812045e+01, reg 2.392755e+00) Taking affine and deformation step Updating weights Finished iteration 155, energy 3.050455e+01 (match 2.810530e+01, reg 2.399251e+00) Taking affine and deformation step Updating weights Finished iteration 156, energy 3.049581e+01 (match 2.809006e+01, reg 2.405746e+00) Taking affine and deformation step Updating weights Finished iteration 157, energy 3.048711e+01 (match 2.807487e+01, reg 2.412239e+00) Taking affine and deformation step Updating weights Finished iteration 158, energy 3.047853e+01 (match 2.805980e+01, reg 2.418731e+00) Taking affine and deformation step Updating weights Finished iteration 159, energy 3.047005e+01 (match 2.804482e+01, reg 2.425222e+00) Taking affine and deformation step Updating weights Finished iteration 160, energy 3.046160e+01 (match 2.802989e+01, reg 2.431711e+00) Taking affine and deformation step Updating weights Finished iteration 161, energy 3.045321e+01 (match 2.801501e+01, reg 2.438200e+00) Taking affine and deformation step Updating weights Finished iteration 162, energy 3.044487e+01 (match 2.800018e+01, reg 2.444686e+00) Taking affine and deformation step Updating weights Finished iteration 163, energy 3.043676e+01 (match 2.798559e+01, reg 2.451170e+00) Taking affine and deformation step Updating weights Finished iteration 164, energy 3.042856e+01 (match 2.797091e+01, reg 2.457653e+00) Taking affine and deformation step Updating weights Finished iteration 165, energy 3.042053e+01 (match 2.795639e+01, reg 2.464134e+00) Taking affine and deformation step Updating weights Finished iteration 166, energy 3.041250e+01 (match 2.794189e+01, reg 2.470612e+00) Taking affine and deformation step Updating weights Finished iteration 167, energy 3.040433e+01 (match 2.792724e+01, reg 2.477090e+00) Taking affine and deformation step Updating weights Finished iteration 168, energy 3.039616e+01 (match 2.791260e+01, reg 2.483565e+00) Taking affine and deformation step Updating weights Finished iteration 169, energy 3.038804e+01 (match 2.789800e+01, reg 2.490038e+00) Taking affine and deformation step Updating weights Finished iteration 170, energy 3.038005e+01 (match 2.788354e+01, reg 2.496509e+00) Taking affine and deformation step Updating weights Finished iteration 171, energy 3.037212e+01 (match 2.786914e+01, reg 2.502978e+00) Taking affine and deformation step Updating weights Finished iteration 172, energy 3.036424e+01 (match 2.785480e+01, reg 2.509445e+00) Taking affine and deformation step Updating weights Finished iteration 173, energy 3.035641e+01 (match 2.784050e+01, reg 2.515908e+00) Taking affine and deformation step Updating weights Finished iteration 174, energy 3.034866e+01 (match 2.782629e+01, reg 2.522368e+00) Taking affine and deformation step Updating weights Finished iteration 175, energy 3.034117e+01 (match 2.781234e+01, reg 2.528826e+00) Taking affine and deformation step Updating weights Finished iteration 176, energy 3.033380e+01 (match 2.779852e+01, reg 2.535280e+00) Taking affine and deformation step Updating weights Finished iteration 177, energy 3.032654e+01 (match 2.778480e+01, reg 2.541733e+00) Taking affine and deformation step Updating weights Finished iteration 178, energy 3.031931e+01 (match 2.777113e+01, reg 2.548183e+00) Taking affine and deformation step Updating weights Finished iteration 179, energy 3.031206e+01 (match 2.775743e+01, reg 2.554629e+00) Taking affine and deformation step Updating weights Finished iteration 180, energy 3.030490e+01 (match 2.774383e+01, reg 2.561073e+00) Taking affine and deformation step Updating weights Finished iteration 181, energy 3.029784e+01 (match 2.773033e+01, reg 2.567516e+00) Taking affine and deformation step Updating weights Finished iteration 182, energy 3.029081e+01 (match 2.771685e+01, reg 2.573956e+00) Taking affine and deformation step Updating weights Finished iteration 183, energy 3.028379e+01 (match 2.770340e+01, reg 2.580394e+00) Taking affine and deformation step Updating weights Finished iteration 184, energy 3.027671e+01 (match 2.768988e+01, reg 2.586829e+00) Taking affine and deformation step Updating weights Finished iteration 185, energy 3.026961e+01 (match 2.767635e+01, reg 2.593262e+00) Taking affine and deformation step Updating weights Finished iteration 186, energy 3.026250e+01 (match 2.766280e+01, reg 2.599693e+00) Taking affine and deformation step Updating weights Finished iteration 187, energy 3.025524e+01 (match 2.764912e+01, reg 2.606120e+00) Taking affine and deformation step Updating weights Finished iteration 188, energy 3.024794e+01 (match 2.763540e+01, reg 2.612544e+00) Taking affine and deformation step Updating weights Finished iteration 189, energy 3.024062e+01 (match 2.762166e+01, reg 2.618963e+00) Taking affine and deformation step Updating weights Finished iteration 190, energy 3.023341e+01 (match 2.760803e+01, reg 2.625379e+00) Taking affine and deformation step Updating weights Finished iteration 191, energy 3.022626e+01 (match 2.759447e+01, reg 2.631790e+00) Taking affine and deformation step Updating weights Finished iteration 192, energy 3.021915e+01 (match 2.758096e+01, reg 2.638197e+00) Taking affine and deformation step Updating weights Finished iteration 193, energy 3.021209e+01 (match 2.756749e+01, reg 2.644601e+00) Taking affine and deformation step Updating weights Finished iteration 194, energy 3.020516e+01 (match 2.755416e+01, reg 2.651000e+00) Taking affine and deformation step Updating weights Finished iteration 195, energy 3.019828e+01 (match 2.754089e+01, reg 2.657395e+00) Taking affine and deformation step Updating weights Finished iteration 196, energy 3.019141e+01 (match 2.752762e+01, reg 2.663786e+00) Taking affine and deformation step Updating weights Finished iteration 197, energy 3.018464e+01 (match 2.751447e+01, reg 2.670171e+00) Taking affine and deformation step Updating weights Finished iteration 198, energy 3.017782e+01 (match 2.750127e+01, reg 2.676552e+00) Taking affine and deformation step Updating weights Finished iteration 199, energy 3.017102e+01 (match 2.748809e+01, reg 2.682930e+00)
# display images for overlap
f = plt.figure()
vis.imshow_slices(vis.RGB_from_pair(outd1['AphiI'],Jd),x=xJ,fig=f)
(<Figure size 640x480 with 15 Axes>, [[<matplotlib.axes._subplots.AxesSubplot at 0x7fa09414db38>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fac841c50>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7b9d8e80>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7bca33c8>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fd99a56a0>], [<matplotlib.axes._subplots.AxesSubplot at 0x7f9fd9396908>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fad06e7f0>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fac88fc88>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fd9f9d320>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f782fe128>], [<matplotlib.axes._subplots.AxesSubplot at 0x7f9f79be4828>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f78205ac8>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7874e7f0>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f767235f8>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fda2fe6d8>]])
# deform labels
nxL = L.shape
dxL = img_label.header['pixdim'][1:4]
xL = [np.arange(nxi)*dxi - np.mean(np.arange(nxi)*dxi) for nxi,dxi in zip(nxL,dxL)]
AphiL = lddmm.transform_data(*xL,L,
outd1['phiinvAinv0'],outd1['phiinvAinv1'],outd1['phiinvAinv2'],
y=xJ, # points to resample at
t=xJd, # points to define transform at
method=0,image_dtype=tf.int32)
f = plt.figure()
vis.imshow_slices(AphiL,fig=f)
(<Figure size 640x480 with 15 Axes>, [[<matplotlib.axes._subplots.AxesSubplot at 0x7f9f784c20b8>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fda142d68>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fabf6bf98>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f79464b00>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f785d3eb8>], [<matplotlib.axes._subplots.AxesSubplot at 0x7f9fd83d85c0>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fd8415358>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7a0581d0>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f776a6da0>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7b09ccc0>], [<matplotlib.axes._subplots.AxesSubplot at 0x7f9f7aee9828>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f764c6630>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fad2c8b70>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9fd834f358>, <matplotlib.axes._subplots.AxesSubplot at 0x7f9f7635b6a0>]])
AphiL.shape,Jd.shape,J.shape
((170, 144, 68), (85, 72, 34), (170, 144, 68))
f = plt.figure()
vis.imshow_slices(vis.RGB_from_labels(AphiL,J,alpha=0.2),x=xJ,fig=f)
f.suptitle('Deformed labels and target')
f.canvas.draw()
AphiI = lddmm.transform_data(*xL,I0,
outd1['phiinvAinv0'],outd1['phiinvAinv1'],outd1['phiinvAinv2'],
y=xJ, # points to resample at
t=xJd, # points to define transform at
)
climJ = np.percentile(J,(1,99))
climI = np.percentile(AphiI,(1,95))
f = plt.figure()
vis.imshow_slices(vis.RGB_from_pair(AphiI,J,climI=climI,climJ=climJ),x=xJ,fig=f)
f.suptitle('Deformed atlas (R) and target (G)')
f.canvas.draw()
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
f = plt.figure()
vis.imshow_slices(AphiI,x=xJ,fig=f)
f.suptitle('Deformed atlas')
Text(0.5, 0.98, 'Deformed atlas')
f = plt.figure()
vis.imshow_slices(J,x=xJ,fig=f)
f.suptitle('Target')
Text(0.5, 0.98, 'Target')
#np.savez(os.path.join())
#J.shape,Jd.shape
#import scipy.interpolate as spi
#test = spi.interpn(xJd,outd1['phiinvAinv0'],np.stack((X0J,X1J,X2J),axis=-1))
#outd1['phiinvAinv0'].shape,xId[0].shape,Id.shape