Running DWI analyses
Contents
Running DWI analyses#
The commands below prepare the data for a number of common DWI analyses including diffusion tensor imaging (DTI) and probabilistic tractography. Each command explicitly assumes the Human Connectome Project preprocessing folder structure. All of the listed steps are performed using the qunex
processing wrapper. These commands are:
Some DWI commands also support processing of post-mortem macaque data. See Post-mortem macaque tractography for details about how to process such data.
dwi_bedpostx_gpu#
dwi_bedpostx_gpu
models crossing fibers within each voxel using FSL's bedpostx. The probability of diffusion from each voxel in every direction versus all other directions is estimated, building the distributions that are necessary for running probabilistic tractography. Human Connectome Project minimal preprocessing diffusion results must be present before running the command. A GPU-enabled node is required.
dwi_bedpostx_gpu example#
qunex dwi_bedpostx_gpu \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--fibers="<number of fibers>" \
--burnin="<burnin period value>" \
--model="<deconvolution model>" \
--overwrite="no" \
--scheduler=<name_of_cluster_scheduler_and_options>
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
species
Set to "macaque" when processing macaque data.
fibers
Number of fibres per voxel; default is set to "3".
weight
ARD weight, more weight means less secondary fibres per voxel; default is set to "1".
burnin
Burnin period; default is set to "1000".
jumps
Number of jumps; default is set to "1250".
sample
Sample every; default is set to "25".
model
Deconvolution model; 1: with sticks, 2: with sticks with a range of diffusivities (default), 3: with zeppelins.
rician
Replacing the default Gaussian noise assumption with Rician noise; default is set to "yes".
gradnonlin
Consider gradient nonlinearities (yes/no). By default set automatically. Set to yes if the file
grad_dev.nii.gz
is present, set to no if it is not.overwrite
Set to "yes" to overwrite previous data; default is set to "no".
scheduler
A string for the cluster scheduler (e.g. PBS or SLURM) followed by relevant options. e.g. for SLURM the string would look like this:
--scheduler='SLURM,jobname=<name_of_job>,time=<job_duration>,cpus-per-task=<cpu_number>,mem-per-cpu=<memory_per_cpu>,partition=<queue_to_send_job_to>'
dwi_dtifit#
dwi_dtifit
carries out diffusion tensor fitting at each voxel using FSL's dtifit. Its outputs include mean diffusivity and fractional anisotropy. Note that dwi_dtifit
is not required for probabilistic tractography. Human Connectome Project minimal preprocessing diffusion results must be present before running the command.
dwi_dtifit example#
qunex dwi_dtifit \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--overwrite="no" \
--scheduler=<name_of_cluster_scheduler_and_options>
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
species
Set to "macaque" when processing macaque data.
overwrite
Set to "yes" to overwrite previous data; default is set to "no".
mask
Bet binary mask file [T1w/diffusion/nodif_brain_mask].
bvecs
b vectors file [T1w/diffusion/bvecs].
bvals
b values file [T1w/diffusion/bvals].
cni
Input confound regressors [not set by default].
sse
Output sum of squared errors [not set by default].
wls
Fit the tensor with weighted least squares [not set by default].
kurt
Output mean kurtosis map (for multi-shell data) [not set by default].
kurtdir
Output parallel/perpendicular kurtosis maps (for multi-shell data) [not set by default].
littlebit
Only process small area of brain [not set by default].
save_tensor
Save the elements of the tensor [not set by default].
zmin
Min z [not set by default].
zmax
Max z [not set by default].
ymin
Min y [not set by default].
ymax
Max y [not set by default].
xmin
Min x [not set by default].
xmax
Max x [not set by default].
gradnonlin
Gradient nonlinearity tensor file [not set by default].
scheduler
A string for the cluster scheduler (e.g. PBS or SLURM) followed by relevant options. e.g. for SLURM the string would look like this:
--scheduler='SLURM,jobname=<name_of_job>,time=<job_duration>,cpus-per-task=<cpu_number>,mem-per-cpu=<memory_per_cpu>,partition=<queue_to_send_job_to>'
.
dwi_pre_tractography#
dwi_pre_tractography
runs pretractography dense trajectory space generation. The command is very quick to run so no overwrite options exist (new outputs that overwrite old ones will be always generated).
dwi_pre_tractography - example#
qunex dwi_pre_tractography \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--scheduler="<name_of_cluster_scheduler_and_options>"
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
scheduler
A string for the cluster scheduler (e.g. PBS or SLURM) followed by relevant options. e.g. for SLURM the string would look like this:
--scheduler='SLURM,jobname=<name_of_job>,time=<job_duration>,cpus-per-task=<cpu_number>,mem-per-cpu=<memory_per_cpu>,partition=<queue_to_send_job_to>'
dwi_probtrackx_dense_gpu#
dwi_probtrackx_dense_gpu
samples the dwi_bedpostx_gpu
distribution results using FSL's probtrackx. A whole-brain dense connectome is generated showing the probability of streamline connections from every voxel to every other voxel. The QuNex suite is cluster-enabled by default and a GPU-enabled node is required. The command can produce two versions of the dense connectivity matrix based on different seeding strategies:
Matrix 1 computes probabilistic tractography between each grey matter point and every other grey matter point.
Matrix 3 starts with a white matter voxel and computes the tractography in both directions (along a given orientation) to the two grey matter points at either end. Whereas Matrix 1 is unidirectional surface-to-surface, Matrix 3 is bidirectional voxel-to-surface which better reflects long-range projections.
dwi_probtrackx_dense_gpu - example#
qunex dwi_probtrackx_dense_gpu \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--omatrix1="<matrix1_model>" \
--omatrix3="<matrix3_model>" \
--nsamplesmatrix1="<number of samples for Matrix1>" \
--nsamplesmatrix3="<number of samples for Matrix3>" \
--overwrite="no" \
--scheduler="<name_of_cluster_scheduler_and_options>"
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
omatrix1
Specify if you wish to run matrix 1 model; "yes" or omit flag.
omatrix3
Specify if you wish to run matrix 3 model; "yes" or omit flag.
nsamplesmatrix1
Number of samples; default is set to "10000".
nsamplesmatrix3
Number of samples; default is set to "3000".
distancecorrection
Use distance correction; default is set to "no".
storestreamlineslength
Store average length of the streamlines; default is set to "no".
overwrite
Set to "yes" to overwrite previous data; default is set to "no".
scheduler
A string for the cluster scheduler (e.g. PBS or SLURM) followed by relevant options. e.g. for SLURM the string would look like this:
--scheduler='SLURM,jobname=<name_of_job>,time=<job_duration>,cpus-per-task=<cpu_number>,mem-per-cpu=<memory_per_cpu>,partition=<queue_to_send_job_to>'
Note that:
Waytotal normalization is computed automatically as part of the run prior to any inter-session or group comparisons to account for individual differences in geometry and brain size. The command divides the dense connectome by the waytotal value, turning absolute streamline counts into relative proportions of the total streamline count in each session.
Next, a log transformation is computed on the waytotal normalized data, which will yield stronger connectivity values for long-range projections. Log-transformation accounts for algorithmic distance bias in tract generation (path probabilities drop with distance as uncertainty is accumulated). See Donahue et al. The Journal of Neuroscience, June 22, 2016, 36(25):6758–6770. DOI: https://doi.org/10.1523/JNEUROSCI.0493-16.2016.
The outputs for these files will be in:
<path_to_study_sessions_folder>/<session_id>/hcp/<session_id>/MNINonLinear/Results/Tractography/<MatrixName>_waytotnorm.dconn.nii
<path_to_study_sessions_folder>/<session_id>/hcp/<session_id>/MNINonLinear/Results/Tractography/<MatrixName>_waytotnorm_log.dconn.nii
dwi_parcellate#
dwi_parcellate
implements parcellation on the dense connectome using a whole-brain parcellation file, such as the Glasser parcellation with subcortical labels.
dwi_parcellate - example#
qunex dwi_parcellate \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--matrixversion="<use matrix version>" \
--waytotal="<use waytotal normalized version>" \
--parcellationfile="<file for parcellation>" \
--outname="<name of output pconn file>" \
--overwrite="no" \
--scheduler="<settings for scheduler>"
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
matrixversion
Matrix solution version to use as input; "1" or "3".
waytotal
Version of dense connectome to use as input; "none": without waytotal normalization, "standard": standard waytotal normalized, or "log": log-transformed waytotal normalized.
parcellationfile
Specify the absolute path of the file you want to use for parcellation.
outname
Specify the suffix output name of the pconn file.
overwrite
Set to "yes" to overwrite previous data; default is set to "no".
scheduler
Only use the scheduler if you have a large amount of sessions, otherwise this command can be run locally.
dwi_seed_tractography_dense#
dwi_seed_tractography_dense
reduces the dense connectome using a given 'seed' structure (e.g. thalamus). The files produced will contain streamline information for only those connections originating from the specific anatomical seed.
dwi_seed_tractography_dense - example#
qunex dwi_seed_tractography_dense \
--sessionsfolder="<path_to_study_sessions_folder>" \
--sessions="<comma_separated_list_of_cases>" \
--matrixversion="<use matrix version>" \
--waytotal="<use waytotal normalized version>" \
--seedfile="<file for seed reduction>" \
--outname="<name of output dscalar file>" \
--overwrite="no" \
--scheduler="<settings for scheduler>"
The breakdown of the parameters is as follows:
sessionsfolder
Path to sessions folder within the study folder.
sessions
List of sessions to run command on.
matrixversion
Matrix solution version to use as input; "1" or "3".
waytotal
Version of dense connectome to use as input; "none": without waytotal normalization, "standard": standard waytotal normalized, or "log": log-transformed waytotal normalized.
seedfile
Specify the absolute path of the seed file you want to use as a seed for dconn reduction.
outname
Specify the suffix output name of the dscalar file.
overwrite
Set to "yes" to overwrite previous data; default is set to "no".
scheduler
Only use the scheduler if you have a large amount of sessions, otherwise this command can be run locally.
dwi_xtract#
dwi_xtract
executes the FSL's XTRACT (cross-species tractography) command. It can be used to automatically extract a set of carefully dissected tracts in humans and macaques. It can also be used to define one's own tractography protocols where all the user needs to do is to define a set of masks in standard space (e.g. MNI152).
The breakdown of command specific parameters is as follows:
--species Species: human or macaque. [human]
--nogpu Do not use the GPU version, this flag is not set by
default.
--xtract_list Comma separated list of tract names. []
--xtract_structures Path to structures file (format: <tractName> per
line OR format: <tractName> [samples=1], 1 means
1000, '#' to skip lines). []
--xtract_protocols Protocols folder (all masks in same standard space)
[$FSLDIR/data/xtract_data/<species>].
--xtract_stdwarp Standard2diff and Diff2standard transforms.
Default for humans is set to the one used by session:
[acpc_dc2standard.nii.gz and standard2acpc_dc.nii.gz],
for macaques warp fields from F99 registration
command (dwi_f99) are used by default.
--xtract_resolution Output resolution in mm. Default is the same as in
the protocols folder unless --xtract_native is used.
--xtract_ptx_options Pass extra probtrackx2 options as a text file to
override defaults (e.g. --steplength=0.2).
[] for humans,
[qunex/templates/NHP/ptx_config] for macaques.
--xtract_native Run tractography in native (diffusion) space.
This flag is not set by default.
--xtract_ref Reference image ("<refimage> <diff2ref> <ref2diff>")
for running tractography in reference space,
Diff2Reference and Reference2Diff transforms. []
dwi_xtract - examples#
# xtract on macaques
qunex dwi_xtract \
--sessionsfolder=/data/macaque_study/sessions \
--sessions="jane,hilary" \
--species="macaque" \
--overwrite=yes \
--bash="module load CUDA/9.1.85" \
--scheduler="SLURM,time=12:00:00,cpus-per-task=1,mem-per-cpu=16000,gpus=2,jobname=qx_xtract"
# xtract on humans
qunex dwi_xtract \
--sessionsfolder=/data/test_study/sessions \
--sessions="/data/test_study/processing/batch.txt" \
--overwrite=yes \
--bash="module load CUDA/9.1.85" \
--scheduler="SLURM,time=12:00:00,cpus-per-task=1,mem-per-cpu=16000,gpus=1,jobname=qx_xtract"
dwi_f99#
dwi_f99
executes FSL's F99 script for registering your own diffusion
or structural data to the F99 atlas. This atlas is used when processing
macaque data. This command does not have any command specific parameters.
dwi_f99 - example#
qunex dwi_f99 \
--sessionsfolder=/gpfs/project/fas/n3/Studies/MBLab/HCPDev/jd_tests/macaque_study/sessions \
--sessions="jane,hilary"