Hi - I know what ‘they’ are doing as I wrote that bit of code :)

I just tried and I get identical results (except for a few voxels at the edge of the brain like I said).  Here are the steps I suggested:

In a terminal:
dtigen -t dti_tensor.nii.gz --s0=dti_S0 -o dti_pred -r bvecs -b bvals -m nodif_brain_mask

In matlab
sse=read_avw('dti_sse');
pred=read_avw('dti_pred');
data=read_avw('data');
mask=read_avw('nodif_brain_mask');
mask=~~mask;

data=reshape(data,numel(mask),size(data,4));
pred=reshape(pred,numel(mask),size(pred,4));

data=data(mask,:);
pred=pred(mask,:);

x=sum((log(data)-log(pred)).^2,2);


figure,plot(x,sse(mask),'o')


You should see that most voxels give identical results.

Cheers
Saad







On 29 Sep 2016, at 11:59, Ana Maria Escorza <[log in to unmask]> wrote:

It remains different from that obtained with dtifit. The values are higher with that formula
Maybe they do something like this:


What do you think?

2016-09-29 12:52 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
It’s good enough for most uses. Also you probably only have negative values at the edge of the brain probably caused by spline interpolation during resampling.

Cheers
Saad




On 29 Sep 2016, at 11:50, Ana Maria Escorza <[log in to unmask]> wrote:

but is it correct ignore values negatives in order to obtain sse?

2016-09-29 12:47 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
data(data<0)=0





On 29 Sep 2016, at 11:41, Ana Maria Escorza <[log in to unmask]> wrote:

Thanks, that is for 0 values.

But my sse has complex values after that. And it is different from sse obtain from dtifii


Cheers,
Ana.

2016-09-29 12:35 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
An easy way to do this in matlab:

SSE = sum ( (log(data+~data) - log(pred+~pred)).^2, 4 )

The trick of doing x+~x  means when x=0, then x+~x=1 and the log is zero, so doesn’t count in the sum.

Cheers
Saad






On 29 Sep 2016, at 11:08, Ana Maria Escorza <[log in to unmask]> wrote:

You mean do not do the logarithm of negative values? 

Remove negative values and put in after do the log?

2016-09-29 12:02 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
In matlab, log is ln

Just remove negative values before you calculate the sse





On 29 Sep 2016, at 10:49, Ana Maria Escorza <[log in to unmask]> wrote:

Hi,

with log you mean log10 or ln?

what you mean with safeguards?

I do that I obtain complex numbers in sse.

Cheers

2016-09-29 10:51 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
Hi - I believe DTIFIT outputs the sum squared error in log-space, i.e.  sum( { log(data) - log(prediction) }^2 )

There are also a couple of safeguards inside DTIFIT to make sure it can take the log.  

Cheers
Saad








On 29 Sep 2016, at 08:21, Ana Maria Escorza <[log in to unmask]> wrote:

Once I have got the original DWIs and 'DWIs from DTs' exported (with dtigen)  and load into matlab, I try to calculate the sse of tensor estimation that is calculated by sum((orDWI-DWI_DT).^2,4) 

But I didn't obtain the same that with --sse in dtifit, why?

2016-09-28 18:22 GMT+02:00 Ana Maria Escorza <[log in to unmask]>:
How Can I subtract? with fslmaths from both .nii?

2016-09-28 18:18 GMT+02:00 Saad Jbabdi <[log in to unmask]>:
Hi - you can use ‘dtigen’ to generate predictions given the DTI tensor (which you can save in DTIFIT with —save_tensor) and then substract that prediction from the data.

Cheers
Saad






On 28 Sep 2016, at 14:42, Ana E. <[log in to unmask]> wrote:

Hello,

I am looking for a function to obtain the residual DWI from the diffusion tensor.

I see that I can use --sse in dtifit, but this is for 3D volume. I would like 4D.

Thanks

Ana.