DiffusionFdtNotes - MRC CBU Imaging Wiki

Revision 14 as of 2007-05-03 14:49:44

Clear message
location: DiffusionFdtNotes

Fdt diffusion analysis

For CBU data.

These are just notes of work in progress by MatthewBrett.

Extracting the bvals, bvecs values from Siemens data

See: http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI

Note that the B gradient=0 has no direction information.

So, for the example dataset I have been playing with, you can fetch the diffusion directions from the DICOM headers, by getting the DICOM file names from a diffusion dataset into the matlab string matrix input_files, and doing something like:

hdr = spm_dicom_headers(input_files);
n = length(hdr);
bvals = zeros(n, 1);
bvecs = zeros(n, 3);

for i = 1:n
  H = hdr{i};
  bvals(i) = str2num(H.CSAImageHeaderInfo(7).item(1).val);
  if bvals(i) == 0 % no gradient
    continue
  end
  d_info = H.CSAImageHeaderInfo(22).item;
  for D = 1:3
    bvecs(i,D)= str2num(d_info(D).val);
  end
end

I've implemented this as cbu_diffusion_params.m in the SPM common directory at the CBU. There is also a file to write out the bvals and bvecs files described below - cbu_write_fdt.m.

  • attachment:cbu_diffusion_params.m
  • attachment:cbu_write_fdt.m

We then have to write out the gradient values and directions in a format that FDT understands - see dtifit documentation in the FDT pages: http://www.fmrib.ox.ac.uk/fsl/fdt/index.html.

bvals

All one one line, one value per DWI acquisition, appears to be exponential format separated by 3 spaces per value, and needs new line at end of file. For example:

   0.0000000e+00   0.0000000e+00   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03  1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   0.0000000e+00   0.0000000e+00   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   0.0000000e+00l

(Note new line at end of file).

bvecs

One line per direction (one line for X direction, one line for Y direction, one line for Z direction). New line at end of each. Need to include zeros for no diffusion gradient acquisitions. E.G:

0  0.0000000e+00   7.6937618e-01   9.9999924e-01   4.0214920e-02   1.9526217e-01   5.1096926e-01   6.4449110e-01   1.1639260e-01  4.1472436e-01   6.8663556e-01   3.8949705e-01   5.0524772e-01   1.1717751e-01   7.6094012e-01   7.8334360e-01   4.4028061e-01   2.0589133e-01   1.3436626e-01   2.7000378e-01   4.4543086e-01   2.1816264e-01   3.6644717e-01   1.9651463e-01   5.6797954e-01   4.2364378e-01   4.8425159e-01   4.8837442e-01   7.1876309e-01   9.3607570e-02   1.7722160e-01 0 0.0000000e+00   5.1711309e-01   7.5808487e-01   8.0234240e-01   1.9735010e-02   3.3516758e-01   6.3448454e-01   8.1168960e-02   1.0445113e-01   2.6766319e-01   6.7016636e-01   1.5391958e-01   4.1367573e-01   8.8398617e-01   2.1753901e-01   9.3271228e-01   6.9488384e-01   8.8211118e-01   6.9509295e-01   8.7347998e-01   7.5283496e-01   8.8371946e-01   8.8840244e-01   5.5232725e-01   9.3679074e-01   9.4961311e-01   6.4277964e-01   3.4381087e-01   9.9971116e-01   9.9821503e-01   4.6606173e-01   1.3874523e-01 0
0  0.0000000e+00   6.6306062e-01   1.6707810e-02  -9.9903292e-01   7.6591725e-01   7.7929365e-01  -7.8747432e-01  -9.9961185e-01 -8.8677651e-01   3.4283814e-01  -4.8693386e-01   8.8074278e-01  -8.8352002e-01  -7.8999910e-02   2.6876947e-01   2.5290552e-01   9.3262713e-01  -3.3491810e-01   3.2593888e-01   7.5894353e-01  -2.6638000e-03  -9.4866592e-01   9.9998147e-01  -7.8726452e-01  -7.2459950e-01  -6.4709189e-01  -1.7825689e-01   5.5582022e-01   8.8285078e-01   4.8544349e-01 0  0.0000000e+00   4.7983043e-01  -4.9330514e-01  -6.0886478e-01  -4.8934133e-01   9.3013284e-01  -3.1901719e-01  -1.8293329e-01  -6.6242333e-01  -8.8671109e-01  -4.2004243e-01  -7.2580995e-01  -9.4553600e-02   4.6713278e-01   6.6282962e-01   3.7641775e-01  -6.4060372e-01  -4.9143385e-01   1.4877920e-02  -1.6054820e-01   5.4879866e-01  -2.8861432e-01   1.8916095e-01   1.5049253e-01   6.7304890e-02  -3.1584415e-01   7.6457665e-01  -4.3058758e-01  -1.6450303e-01   1.8210187e-01   5.8200226e-01   1.4422617e-01 0
0 -0.0000000e+00  -9.1990930e-02  -1.9943366e-01  -2.0091641e-01  -6.4443377e-01  -4.1432263e-01   6.7578430e-02   1.6516763e-01  2.8580159e-01  -6.7159887e-01   8.0699374e-01  -9.5227750e-02   4.9569470e-01   6.7437421e-01   5.9513629e-01  -8.8444514e-01  -3.5758470e-01   9.5384852e-01   9.2785410e-01   5.1541002e-01   9.9621754e-01  -7.6163460e-02  -3.8346860e-02  -3.1251438e-01   5.7925205e-01  -6.2195169e-01   8.7736329e-01   4.6313598e-01   5.0186008e-01  -8.7919767e-01 0  -0.0000000e+00   7.3648370e-01  -4.7117809e-01  -1.5994303e-01  -8.9454291e-01   2.5013402e-01  -7.3192133e-01  -9.9999922e-01   7.6833373e-01  -4.2679184e-01   6.4381118e-01  -6.9968571e-01  -9.2735292e-01   2.0101452e-01   7.4389858e-01  -1.6854941e-01   3.8316412e-01   1.4291280e-01  -7.4610714e-01  -5.0130672e-01  -4.1486259e-01   4.1927689e-01  -4.6369242e-01   8.4400121e-01   3.9742244e-01  -1.9628767e-01   2.0568982e-01  -8.5816073e-01   1.1648077e-01   1.0225989e-01  -6.9578104e-01  -1.0000000e+00 0

Y direction appears to be flipped in our acquisitions

The Y direction from our Siemens acquisitions seems to be inverted (so Tim Behrens tells me). We will have to work out why this is. For the moment, I've put an ugly hack into the script to write out bvecs, that just flips the Y direction.

Brain mask

FDT requires a binary brain mask in the same space as the diffusion data. This has to be really binary (value 1 for in brain, value 0 for outside). There are two obvious ways of getting there. One is to run FSL BET on the 0 gradient acquisition, or the structural. You'd have to reslice the structural mask to the same space as the diffusion afterwards. I could not get BET to work well on the structural, so I did the following:

  • Trimmed the structural image with trim_img utility to remove the neck tissue.

  • Segmented using SPM segment, writing out CSF partitions as well as default gray and white matter.
  • Make binary brain mask using imcalc on gray, white, csf images, with formula (i1 + i2 + i3) > 0.5

  • Resliced binary brain mask to space of DWI data with SPM coregister reslice.
  • Made the image true binary with avwmath++ rbrainmask -bin nodif_brain_mask

A recipe, therefore

You will need FSL version >= 3.3.11. See FslInformation for how to set this.

  1. Make diffusion analysis directory - e.g. fdt_analysis, and subdirectory spm_converted_files or similar.

  2. Use SPM5 to convert the diffusion data to dicom format, output to fdt_analysis/spm_converted_files

  3. Use (from unix shell) cd fdt_analysis; avwmerge -t data_raw spm_converted_files/f*.img or similar to put diffusion series into 4D file in diffusion analysis directory

  4. Create diffusion direction files from matlab with cbu_write_fdt - and select DICOM diffusion files. This creates a bvecs and bvals file in the current directory

  5. Open FSL
  6. Run the Eddy current correction on the data_raw.nii.gz file created with the avwmerge command above.

  7. Run the FSL dtifit utility to get fractional isotropy and other files
  8. Create the brain mask - see above
  9. Run FSL bedpost command (takes around 12 hours on new linux machines)
  10. Run probabilistic fiber tracking from FSL, after selecting a seed voxel
  11. Review in fslview, by opening, say FA map, and overlaying (adding) fiber track image.

Some thoughts

  • More averages less directions?
  • Cardiac gating?

Problems?

No doubt. Let MatthewBrett know.