The significant user-visible changes in each release of TractoR are documented below.
- Auxiliary binaries from the
bin/exec
andbin/extra
subdirectories have been moved tolibexec
to help with packaging TractoR for Homebrew according to its expectations.
- Dependency packages
jsonlite
,yaml
,Rcpp
andRNifti
have been updated for compatibility with the now-released R 4.4.0.
- Package unit tests have been moved from the
testthat
to thetinytest
framework. - Several tweaks have been made to improve compatibility with R 4.3.x and the upcoming R 4.4.0, as well as
divest
1.0 andigraph
2.0. - The minimum required version of R has been updated in the documentation to 3.5.0. This was already the case, but the documentation was out of date. TractoR's continuous integration tests now also run on old versions of R to help ensure the minimum version specified is accurate.
- Two spurious errors that could arise during an interactive run of the
dpreproc
script have been corrected.
- Several tweaks have been made to better support paths containing spaces, particularly for session paths in workflows. In support of this, two small new features have been added: the new
TRACTOR_WORKING_DIR
environment variable is now used as a default working directory bytractor
,plough
andfurrow
, if it is set, andfurrow
gains a-r
flag to request relative paths be substituted rather than absolute ones. This is used in certain workflows to work around third-party tools' own difficulties with paths containing spaces. - When writing an image to file, any existing "tags" file with the corresponding name is now always overwritten, to avoid the auxiliary file getting out of sync with the image file.
- Relative paths should now be correct when the reference path is a directory.
- The working directory should no longer be erroneously prepended to image paths beginning with a tilde (
~
), which indicates a home directory on Unix-like systems. - The
bids
script would sometimes attempt to copy an image file with no extension, leading to an error. This has been corrected. - Decomposition applied to a transformation object containing only one transform now works as expected.
- Heuristic neighbourhood tractography is defunct. All
hnt-
experiment scripts have been removed, along with the underlying functions. This approach has been deprecated since 2017, and has no remaining advantages compared to probabilistic neighbourhood tractography. - There is new interoperability with MRtrix3, including read support for the
mif
image format andtck
tractography format. These files can now be used as input to scripts likeimage
,trkinfo
andgraph-build
. - TractoR's tractography functions have been substantially refactored for better generality, partly to accommodate MRtrix
tck
files as input. As a result it is no longer necessary for streamlines to be written to file before being further used – they can be generated and processed entirely in memory. - MRtrix-format
tck
tractography files can be converted to TrackVistrk
format using the newtck2trk
script. - The MRtrix viewer, MRView, is now available as an external viewer through the
view
script. - The new
compare
script compares image values to check whether two images contain the same data. - A history of the TractoR scripts used to generate a given image is now stored in the
commandHistory
tag, and merged with the equivalent from MRtrix where relevant. - True RGB NIfTI files are now supported for reading and writing, and internal methods for the
tensorfit
script will now produce an RGB colour fractional anisotropy map. RGB images cannot yet be transformed between spaces, though. - A colour fractional anisotropy map is now additionally produced by the internal diffusion tensor fitting code.
- Complex-valued images are also now supported internally.
- When interpreting file paths,
furrow
will now leave any that are explicitly given (without requiring an extension to be added) as they are. This is partly becausetrk
andtck
files with the same base name can currently coexist. - It is now possible for more object types to be summarised by
peek
. - Workflow prerequisites are now checked more carefully.
- The
apply
script is now much more memory-efficient when combining many images. - Functions from
tractor.base
that were deprecated in the 3.0.0 release have now been removed.
- The eddy workflow now adds the argument
--data_is_shelled
when calling theeddy
executable, since the absence of this flag frequently caused confusion among users. This has no effect on the output from the workflow, except to silence an error fromeddy
which is often spurious. - The
dpreproc
script now also checks for theeddy_openmp
variant executable name before deciding not to run eddy. - A mistake in the self-documentation of the
workflow
script has been corrected.
- Small tweaks have been made for better compatibility with the Apple ARM64 platform (M1 chip). This is also the first release available through Homebrew for ARM64.
- Paths to images represented using the Windows Universal Naming Convention (e.g.
\\server\dir\image.nii.gz
) are now supported (issue #5). - Offline documentation no longer contains Google Analytics code (issue #4).
- Small corrections have been made for compatibility with R v4.0.0, which was recently released.
- The interface for selecting a T2-weighted reference volume in the
dpreproc
script mixed up volume indices in the original dataset and the low b-value subset, which could lead to spurious errors. This has been corrected. - The
graph-viz
script should no longer ask repeatedly about copying the figure to a PDF file. - Empty graphs are now summarised a little more clearly.
- The
slice
script now additionally accepts "peak" as shorthand for the slice containing the peak image intensity. Clearances can now properly be specified per-axis, and trimming should no longer cause problems when slice locations are not specified literally. - The internal DICOM reader could previously produce logically transposed diffusion gradient tables, for example in
dpreproc
, which would lead to spurious warnings and downstream errors. This has been corrected. - Missing matrix values are now handled more robustly when merging images.
- The
pnt-interpret
script could give incorrect results when session directories are specified as arguments and Mode:ratio is given, due to a mistake in the indexing logic. This has been corrected.
- The
gradcheck
script will now work with raw diffusion data, if there is no processed data in the specified session directory. - The gradient cache now explicitly only stores the unrotated gradient vectors.
- FSL-compatible
bvals
andbvecs
files should now always be created before thedtifit
workflow is run. - Workflow run-times are now reported.
- The self-documentation function called by
tractor -o
now works properly when the absolute path to a script is provided.
- This release introduces "workflows" as the primary means by which TractoR calls third-party programs. These are small shell scripts, stored in
share/tractor/workflows
, which make heavy use offurrow
to call external software in a way that is consistent with the TractoR session convention. They may be called implicitly or explicitly, the latter using the newworkflow
script. - TractoR now uses the
RNifti
package for NIfTI file handling, which is backed by the NIfTI reference C library. This should provide some performance improvements, but more importantly it makes NIfTI support much more complete. Image "xforms" and other metadata should now be better preserved through read/write cycles. - Diffusion gradient directions and b-values may now be included as image tags, and are more consistently written to .dirs auxiliary files.
- A new script, simply called
image
, allows images to be copied, moved or linked on the file system along with any auxiliary files. This is the first TractoR script to use a subcommand syntax, where the first argument specifies the operation required. - The new
bids
script helps with creating BIDS datasets. - The
clone
script can now be called withMap:true
, in which case the new session uses a map file to point to existing subdirectories within the old one, rather than copying their contents across. This functionally duplicates a session with almost no extra cost in terms of disk usage. Subdirectories that are subsequently added or replaced will cause the two sessions to diverge. - The
age
script will now work with tagged NIfTI files, if patient birthdate or age information is stored with them. - The
extract
script gains an option to exclude regions. This can be used, for example, to extract all grey matter apart from a particular subregion. fsleyes
, the new viewer in recent FSL releases, is now supported by theview
script.- The
divest
DICOM back-end can now be used by theimport
script. - There is now an option to write out the final face mask in the
deface
script. - It is now possible to run multiple replications of an experiment, using
plough
with the new "-R" flag. Compatibility between SGE andplough
has also been improved. - Session subdirectories, and files not aliased by TractoR, can now be referenced through
furrow
. - The
tractor.base
package now has a set of unit tests. - The reason for terminating each streamline is now stored, as a numeric code, in .trk files produced by the
track
script. - It is now possible to perform tractography in only one direction away from the seed point.
- Coloured output is now suppressed if the standard output or standard error streams appear not to be terminals (e.g. if the script's output is piped). It can also be suppressed by setting the
TRACTOR_NOCOLOUR
environment variable. - The
TRACTOR_FILETYPE
environment variable is deprecated, as is writing to Analyze format. Output format will always be NIfTI-1, although this can subsequently be changed where needed using thechfiletype
script. - The "Context" option to the
bedpost
script is deprecated. - The output from
tractor -o (script)
now reads "(no value)" instead of "NULL" for options with a null default value. - Logical values such as "yes" and "no" are now accepted by scripts, in addition to "true" and "false".
- Support for the session format from TractoR 1.x has been removed. This was deprecated in v3.1.0.
- Multiple image series read by
dpreproc
stage 1, withDicomReader:divest
, will now be reoriented to a common orientation before merging. - The
deface
script now checks whether the bottom edge of the face mask is within the image before trying to extend it downwards. In addition, slices containing no extended face mask voxels are now skipped over during subsequent processing. This should resolve some spurious errors. - Reading a non-axial 2D image could produce an error. This has been corrected.
- Attempting to calculate clustering coefficients for directed, weighted graphs is now a warning rather than an error.
- Failure to find a binary called
fslview_deprecated
will no longer produce an error, restoring compatibility with older builds of FSL. - The compatibility of
furrow
with external commands has been improved.
- The
Rcpp
package has been updated for compatibility with the recently released R 3.5.0. - Paths are now expanded by
dicomread
, so that filenames beginning with "._" are no longer created when reading from the current working directory. (Such files are generally invisible.) - The code behind
plough
is now more careful to avoid spurious errors when non-loop variables have length greater than one.
- Attempting to merge tags from more than two images, notably in
dpreproc
, should no longer produce an error. - FSLview has been deprecated in recent FSL builds, and the binary renamed to
fslview_deprecated
. TractoR now checks for this name, and so running theview
script withViewer:fslview
will work again. There is not yet any support for FSL's replacement viewer,fsleyes
, although it can be invoked throughfurrow
. - The
gradread
script no longer requires a data image to be present if a b-value file is provided as the third argument. - Calculation of graph modularity has been improved for the case where a node is in none of the communities.
- Further tweaks to unit tests have been made.
- The
reg-apply
script would produce an error if given multiple transforms in .xfmb format. That has been corrected. - Due to an oversight, vertex and principal network names disappeared from the output of
graph-decompose
in v3.2.0. They have now been reinstated. - The Homebrew distribution of TractoR now declares a dependency on JasPer.
- An occasional failure in the
tractor.graph
package's unit tests has been addressed.
- Running
dpreproc
withDicomReader:divest
on a session directory containing DICOM files from different series will now also combine metadata from those series (where appropriate), and write it to an auxiliary .tags file. - Recent minor updates to supporting packages
RNifti
,RNiftyReg
,mmand
,yaml
andcorpcor
have now been incorporated. - Infinite weights could rarely occur in
tensorfit
, when using the IWLS method. These are now detected and ignored. - A spurious error in
dpreproc
due to a typo has been corrected.
- The new
pnt-sample
script allows one to sample synthetic streamlines from a PNT model. There is a new paper with the full details. - There is now basic support for the BIDS format, a session-like hierarchy structure for multimodal acquisitions.
- The new top-level command
furrow
can be used to call any third-party program after substituting TractoR's session path shorthand for the canonical image paths. This is useful for compatibility with other software. - TractoR's graph-handling code has been substantially refactored, and detailed unit tests have been added.
- Streamline seed points and end points can now be mapped, using the new
trkmap
script. - The new
trkinfo
script provides basic information on the streamlines stored in a .trk file. - A new make target,
deeptest
, installs additional packages from CRAN and then runs package unit tests (currently only fortractor.graph
) before running the main integration tests. - The
dicomsort
script can now use the more robustdivest
back-end, and gains the ability to clean up empty subdirectories. Additional metadata is now extracted bydicomread
withMethod:divest
. - A partitioned graph object is now also produced by
graph-decompose
, which contains the original graph and information about the partition. This may also be used as a reference partition for new graphs. - Generation of colour scales is now handled by the
shades
package. Theslice
script now additionally supports the "viridis" colour scale, which is perceptually uniform and interpretable by viewers with a colour vision deficiency (colour blindness). - The
tensorfit
script now support FSLdtifit
's weighted-least squares option, asMethod:fsl-wls
. - The
extract
script now accepts named regions, for extraction from parcellations. - A file containing b-values may now be given as the third argument to the
gradread
script. - It is now possible to create a .trk file containing the streamlines selected by
pnt-prune
. - Streamlines stored in .trk files may now also be transformed between spaces by the
transform
script, although this is currently very slow for nonlinear transformations. - The
list
script now arranges its output into categories. - The
dicomtags
script now tries harder to read metadata from files using an unsupported transfer syntax. - The
status
script now examines raw data files if processed ones are not yet available. - A user-defined mask can now be passed to the
dirviz
script. - The
slice
script now offers some control over the interpolation kernel used. - The polar plots used by TractoR's internal image viewer for diffusion data now use different colour shades for each b-value shell.
- The loop-checking logic in the tractography code has been tweaked to correct the boundaries between logical blocks.
- Session paths stored in PNT data files should now always be interpreted as strings, avoiding potential errors.
- The median streamline used by default in
pnt-prune
when all individual streamlines are rejected could be incorrect. This has been fixed. - The
apply
script will no longer fail when used with more than 26 image arguments (although only the first 26 can be referred to in the function). - Images with a data size of 2 GiB or more can now be written to file by TractoR.
- The
graph-props
script should now properly respect the "DisconnectedVertices" option for all properties. The number of self-connections present in the graph is also reported separately for clarity. - Scripts which perform an operation on a subset of streamlines stored in a .trk file, notably
pnt-prune
, would often include one additional streamline that should not be in the selection. This has been corrected. - The slice script now fixes "Alpha" to "binary" for masking images that are themselves binary, to avoid masking out everything and producing an empty layer.
- The
view
script will no longer produce an error when multiple images from a session's diffusion directory are specified.
- A warning about a namespace clash will no longer be seen when starting the TractoR console. A side effect of this change is that the
RNiftyReg
package's functions are no longer directly visible. Thetractor.reg
interface can be used instead. - TractoR's diffusion tensor fitting routine, used by
tensorfit
, is now more robust. In particular, it will handle exact fits and impose a limit on the iteration count when using iterative weighted least-squares. - The trivial case for
plough
, where the design file contains no variables of length greater than one, now works as expected. - The
view
script will now use the time series plot type by default, for 4D volumes whose interpretation cannot be guessed. - Scripts using tractography other than
track
, such aspnt-data
, will no longer report the tractography run-time, to avoid producing overly verbose output.
- Tractography results could previously be wrong if a session used a mixture of images stored in different orientations. This has been corrected.
- The
track
script now reports the time spent tracking. - A disparity between TractoR and NiftyReg in the assumed orientation of ANALYZE-format files has been corrected. This should resolve failed registration of these files.
- Further package tests have been added, to check some recently added features.
- A more robust alternative to TractoR's internal DICOM-handling code is now available in the form of
divest
, a new first-party R package wrapped around the popular tooldcm2niix
. Although the internal method remains the default indicomread
for backwards compatibility, usingdivest
offers several advantages, such as removal of the need to pre-sort DICOM directories, interactive selection of series, and semi-automatic session construction. The internal code is still used bydicomtags
. - Tags, representing general and extensible image metadata, may now be written to auxiliary .tags files in YAML format -- and key metadata from DICOM files is now written out in this way by
dicomread
withMethod:divest
. These will automatically be read back in with the associated image, allowing acquisition parameters and other useful information to be kept with images. - A totally new set of reference tracts have been added for use with probabilistic neighbourhood tractography, based on manual selection of tracts from 80 healthy adults aged 25–64. In addition, a series of pretrained models for each tract are available, based on the same cohort, to simplify usage in new datasets. Further details may be found in a paper at MIUA 2017. To use these reference tracts, the
TRACTOR_REFTRACT_SET
environment variable should be set tomiua2017
. - Tractography may now be performed using the diffusion tensor as the underlying signal model. Although less sophisticated than FSL-BEDPOSTX, the tensor model is much quicker to fit, and may be of interest for comparison. The
track
script gains a "PreferredModel" option, which may be set todti
if required. - The
track
script also gains "StepLength" and "MaxLength" options. - The new
deface
script can be used to mask out the face area of high-resolution structural images to prevent face reconstruction and preserve anonymity. - The internal viewer accessed through the
view
script gains a polar plot panel for orientational data, notably diffusion data. This will be used by default for viewing 4D diffusion-weighted images in a session. The viewer now also ignores infinite values when calculating the intensity window. - The
slice
script now allows different colour scales to be used for each overlay, and allows out-of-window voxels to be masked out rather than clipped to the extremes. It is also less affected by nonfinite data values. - TractoR is now aware of masked (i.e., brain-extracted) and unmasked reference images in each space, and when performing implicit registration, it will attempt to register masked images to masked images and unmasked images to unmasked images. This should improve registration accuracy.
- Voxels with zero variance will now be ignored when performing PCA in
graph-build
. There is also tentative support for nuisance regressors when calculating functional connectivity matrices. - The
graph-props
script gains an option to normalise graph weights, fixing the maximum at 1 (as the Brain Connectivity Toolbox does for certain properties). A correction to weighted clustering coefficients has been added, and two weighted generalisations of the mean clustering coefficient are now available. - The
apply
script will now print out simple vectors as well as scalar results. - The performance of
pnt-prune
has been substantially improved. - The
platform
script now also lists the R packages installed in TractoR's package library, along with their version numbers. - The
loder
package is now used instead ofpng
for writing PNG files. As a result, no externallibpng
library is required. - The third-party
yaml
package now handles reading and writing YAML files. - TractoR may now be installed using Homebrew. Partly to support this, the TractoR directory structure now more closely follows the Filesystem Hierarchy Standard.
- Each test is now run in a separate temporary directory, which allows them to be run in parallel. Tests requiring FSL will now be skipped if it is not installed, rather than failing.
- Heuristic neighbourhood tractography is now deprecated in favour of probabilistic neighbourhood tractography.
- Support for the session directory format used in TractoR 1.x is now deprecated, and will be removed in a future release.
- The
hnt-viz
,pnt-viz
andpnt-prune
scripts would previously number their output incorrectly, using the argument index rather than the data file index. When called throughplough
, this could lead to a single output file being repeatedly overwritten. This has been corrected. - Spurious errors about non-numeric arguments should no longer arise when reading a DICOM series using an implicit VR transfer syntax.
- When reading from a .trk/.trkl file pair, the metadata is now checked to ensure that the two files agree on the number of streamlines present. This should avoid potential crashes when a .trk file is updated without its partner.
- The documentation has been updated to match the new style of the TractoR website.
- Support has been added for containerised builds of TractoR using Docker.
- Tractography operations could produce "bad allocation" errors on some platforms. This should now be fixed.
- Tests requiring FSL will now be skipped if FSL doesn't seem to be installed, rather than producing an error.
- The
plough
self-test should no longer fail with an error about a missing executable if theTRACTOR_HOME
environment variable is not set.
- The 3.0.x series of releases introduced a bug in the implementation of principal networks (accessed via
graph-decompose
), which could result in nonsense output. This has now been corrected. - Session map keys are now fully case-insensitive, as intended.
- The speed of the
dicomsort
script should now be a little better.
- Sulcus labels are allocated to some grey matter voxels by FreeSurfer, so they have been reinstated into the Destrieux parcellation lookup table.
- TractoR's own image viewer (the
view
script) could sometimes use incorrect colours when some regions were missing from a parcellation. This has been fixed. - The
dpreproc
script no longer produces errors when encountering DICOM files with no ASCII header. - Merging multiple related DICOM series into one image could sometimes fail. This has been corrected.
- The
compress
script previously interpreted all of its arguments as parts of a single file name. This has been corrected. - The mean clustering coefficient reported by
graph-props
now properly respects the "DisconnectedVertices" option. - Encountering an empty transform directory (with an .xfmb extension) should no longer lead to an error.
- A spurious error, arising when indexing into sparse images under certain conditions, has been fixed.
- The new
TRACTOR_NOSYMLINKS
environment variable may be set totrue
to turn symlinking operations into copies. This uses more disk space, but is required on certain file systems, notably on some network mounts. - A transformation strategy between T1-weighted structural space and FreeSurfer space has been added explicitly.
- A problem in the calculation of metadata when writing MGH/MGZ files has been fixed. This should address problems with the results of
freesurf
. - The
peek
script now also works with CSV files representing graphs. - Graphs without vertex names (notably CSV files from non-TractoR sources) should no longer be mislabelled when visualised using
graph-viz MatrixView:true
. - Directories containing only a single DICOM file, and pertaining to a diffusion acquisition, should no longer cause errors.
- The
dicomread
script now respects echo number when reconstructing images, thereby improving results from multiecho sequences. - Tractography pipelines (notably within
track
) can now be interrupted, using the standard Ctrl-C command. This can be useful to cancel a long-running operation. - The
track
andgraph-build
scripts are now consistent in their treatment of the "TargetRegions" option, allowing greater flexibility. Previously,graph-build
would only accept parcellation labels; now, named image files may also be used. - A mistake relating to internal indexing in sparse arrays has been corrected. This could previously have led to errors or incorrect results in
track
when target or seed regions overlapped, and possibly other scripts. - Attempting to
peek
at graph objects could fail under certain circumstances. This has been corrected.
- Guessing of phase-reversed volumes in
dpreproc
is now more robust. Reported volumes are also numbered relative to the whole series, not just the b=0 volumes, for consistency with the "ReversePEVolumes" option. - Remapping subdirectories within a session could lead to problems finding images. This has been corrected.
- The
dicomsort
script's ability to sort by series number or time has been reinstated, although sorting by UID remains the default. - An updated version of the TractoR paper is now provided online and within the
share/doc/paper
subdirectory of the package. There is also a more extensiveREADME.md
file, and an updatedINSTALL.md
file. - Building the
tractor
executable should no longer fail just because thebin/exec
subdirectory does not exist. - When running
make install
with theTRACTOR_HOME
environment variable pointing to a different TractoR installation, the packages would previously be installed there in error. This has been corrected. - Creating transformations on a different filesystem to the system's temporary directory should no longer fail.
- The package's requirements and dependencies have been simplified somewhat. A Fortran compiler should no longer be required to install R packages, and ImageMagick is no longer needed to create images.
- The tractography systems have been completely overhauled to make them much more efficient, especially when working with large numbers of streamlines, as in connectomics. A pipeline approach is now taken to limit memory requirements, and more work is done in compiled code for speed. The interface has also been consolidated, with the old
track
,rtrack
,mtrack
,ptrack
andxtrack
scripts being replaced by a single, flexibletrack
script, which also offers some new features such as random seeding and length thresholding. All support for tractography using FSLprobtrackx
has been removed. - The TrackVis file format is now used as TractoR's native format for streamlines, which allows paths to be easily visualised. Consequently, the
streamlines2trk
script has been removed. - A new top-level command,
plough
, allows a TractoR script to be called multiple times using different sets of arguments or configuration variables, optionally parallelising across cores or using a grid engine. This is a universal alternative to piecemeal vectorisation in a handful of specialised scripts such asgmean
andpnt-data-sge
. The latter two scripts have therefore been removed, while many others have been simplified by working on only one session or image at a time. - TractoR can now work with "multishell" diffusion-weighted data, and tries to choose appropriate parameters when preprocessing and fitting such data. The
dpreproc
script also provides an interface to FSL'stopup
andeddy
tools for correcting susceptibility and eddy current induced distortions, respectively. - It is now possible to refer to standard images within a session directory using a shorthand that incorporates the
@
symbol, as in/data/subject1@FA
for the FA map from session directorysubject1
, or/data/subject2@functional/data
for the functional data series fromsubject2
. Scripts such asmean
andmkroi
have been substantially generalised, without becoming more verbose, by taking advantage of this mechanism. - The MNI space reference brain has been updated to a newer, higher resolution and much sharper image, based on nonlinear coregistration of 152 individuals.
- Noninteractive visualisation of images, including overlays, is now handled by the
slice
script, which can create visualisations in one or more planes, including multiple views within the same image. This much-improved script subsumes the functionality of the oldproj
andcontact
scripts, which have been removed. - Probabilistic neighbourhood tractography is now much faster, often by 90% or more, and is in fact now appreciably faster than the older and much less robust heuristic neighbourhood tractography (although it typically involves more steps).
- Transformation information between images and spaces is now stored as a series of text matrices and NIfTI images within a directory with an .xfmb extension (for transform bundle), rather than a flat .Rdata file. This was necessary due to upstream changes in NiftyReg, but it also has the advantage of greater transparency. The new
reg-info
script can be used to obtain information about these directories. - The accuracy of a registration can be visualised using the new
reg-check
script. - The new
transform
script can be used to transform an image or point between named spaces as they relate to a particular session. - The new
components
script can be used to find connected components in images. - NIfTI files can be reduced in size, at the cost of some loss of precision, using the new
compress
script. - The
mkroi
script can now generate ROIs of different shapes, and with different widths in each dimension. - The LEMON C++ library is now used rather than the rather complex "igraph" R package, for calculating graph metrics.
- The "MaskingMethod" option to
dpreproc
once again defaults to using FSL-BET, but will fall back to k-means if thebet
executable is not found. The k-means method itself has been improved by first finding the largest connected component, which tends to result in the removal of more non-brain tissue. - TractoR's image viewer now shows parcellation labels when a lookup table file (.lut) is found.
- Graphs can now be read from CSV files in all scripts, although .Rdata files contain more complete information.
- The
reg-apply
script can now apply composite and half transforms to images. - Registration can now be initialised from a FLIRT transformation matrix file.
- The
apply
script gains a "Combine" mode which allows multiple images to be merged after applying the function to each in turn. This script, along withtransform
, can now do the job ofgmap
, which was very specialised and has been removed. - The
plotcorrections
script now plots all modes on the same device, and allows correction values to be written to a CSV file. The sense of its decomposition is now a little different, so results will differ from those in TractoR 2.x. - The
dicomsort
script now sorts by series UID by default. - Configuration variables are now matched in a case-insensitive manner, and variables which are supplied on the command line but not used are reported in a warning.
- TractoR can now read and parse Siemens ASCII headers from DICOM files, and these can be shown using the
dicomtags
script. - An improved method is now used for placing knot points along tracts in
pnt-data
. The output also contains the session path rather than an ID number, rendering theidentify
script unnecessary. Therefore, the results of this script are not completely consistent with TractoR 2.x. Old output files can be converted to the new format, but it is better not to mix output from the two versions in one study. - Default session maps are now explicitly stored within the
etc/session
subdirectory, and these may be used as templates for more specialised maps. - Diffusion directions read from DICOM files are now flipped along the Y-axis by default.
- Seed points for tractography are now jittered within the voxel by default.
- Voxels containing less than the required seven strictly positive values are now handled gracefully by
tensorfit
. In addition, an image calleddti_bad
is created, which maps the numbers of bad data points across the image volume. - NiftyReg is now the default linear registration method.
- Image origins are now always three-dimensional.
- Camino-specific scripts
fsl2camino
,camino2fsl
andcaminofiles
have been removed. They were poorly maintained, and largely redundant following Camino's support for NIfTI images. - The "-r" flag to the main
tractor
program is defunct. - Extensive low-level and upstream package improvements have been incorporated.
- The
Rcpp
package has been updated for compatibility with R 3.5.0 (in line with TractoR version 3.2.4). - An inconsistency between
pnt-data
andpnt-data-sge
prevented the latter from working as expected for multiple sessions, when seed points were specified for each case. This has been corrected. - The
pnt-interpret
script no longer strictly requires a session list, as long as subject and seed information are stored in the dataset.
- The
pnt-data-sge
script will no longer specify the wrong number of array jobs to SGE when theSessionNumbers
option is used. - Some minor issues with the
RNiftyReg
package have been patched.
- An error in the calculation of clustering coefficients has been corrected.
- Graphs containing only negative weights would previously be shown with an inverted colour scale. This has been corrected.
- A subtle difference between TrackVis's voxel grid and TractoR's is now corrected for in the
streamlines2trk
script. - Run times are now reported for tests.
- NIfTI format files which are endian-swapped, relative to the platform being used to read them, will now be handled correctly. Previously these would lead to a rather cryptic error.
- The
graph-build
script (withType:functional
) will now ignore voxels with totally flat time courses, rather than producing an error. These could arise as a result of masking during preprocessing.
- Spurious errors should no longer be produced when overwriting a session subdirectory.
- Zero-length streamlines are now usually retained. Discarding these could violate the assumptions of other code, and would sometimes lead to a test failure.
- Failure to install optional packages
RcppArmadillo
andmmand
, which generally require a Fortran compiler to build, no longer leads to outright failure to install TractoR. (More information on Fortran requirements has also been added to the documentation.) - The TractoR distribution version is now printed alongside the
tractor
program version whentractor -h
is run. This has been a recurring source of confusion.
- TractoR now requires R version 3.0.0 (released April 2013) or later.
- TractoR now has support for handling functional (BOLD) data, including functional connectivity analysis. However, fMRI preprocessing must currently be performed using other tools.
- The
graph-build
script gains the ability to create functional connectivity graphs. Regionwise time courses may be obtained by simple averaging or principal components analysis, and connectivity is quantified in terms of correlation, partial correlation, covariance or precision. An optional shrinkage approach is available to regularise these measures when the number of time points is limited. - Streamlines can now be ignored before they are stored if they do not reach targets of interest. This is used by the
xtrack
andptrack
scripts, and will also be used bymtrack
ifTruncateUnterminated:true
is given. Streamline files can be much smaller, and memory usage less, as a result. - Further DICOM improvements. A missing "pixel data" tag (0x7fe0, 0x0010) will no longer result in a DICOM file being treated as invalid. Slice gaps are now included in the through-plane voxel dimension. And the code tries to guess when a "mosaic" DICOM file contains the per-slice rather than per-volume TR (as some do), and correct to the latter.
- The new
graph-extract
script can be used to extract a subgraph containing some of the vertices from a larger graph. - TractoR is now more cautious about overwriting existing directories, and in particular, a directory mapped outside the session directory should never be deleted.
- The
view
script gains aTimeSeries
option, which can be used to visualise time series in 4D images. - The
graph2csv
script now writes vertex attributes into the CSV file, as comments. - The
graph-props
script gains anIgnoreSign
option. - Registration strategy files can now specify the use of FSL or NiftyReg for affine registration.
- Switching the
EddyCorrectionMethod
indpreproc
will now appropriately overwrite the result of a previous correction. - Self-connection weights are no longer included in the default weight limits when plotting graphs with
graph-viz
andMatrixView:false
. They are often large relative to other connections, but are not visible in these plots. - A test for reading NIfTI-2 format files has been added (the code already passed it).
- Indexing into sparse arrays is now more reliable.
- The
graph-build
script now accepts a comma-separated list of target regions, bringing it in line withxtrack
and intended behaviour. - Running
make check-md5
should no longer produce an error if notmp
directory exists.
- A mistake in the install script,
tractor_Rinstall
, has been corrected. - R's facilities for checking MD5 sums are now used in preference to system ones, for portability.
- The graph decomposition test has been made less stringent.
- Author and copyright information has been updated.
- TractoR now has facilities for working with graph representations of brain connectivity, including a reference implementation of the Principal Networks approach to graph decomposition. A set of new scripts has been added to support this, including
graph-build
,graph-reweight
,graph-decompose
,graph-props
,graph-viz
andgraph2csv
. Please see the new connectivity graphs tutorial for further information. - In support of the new graph capabilities, TractoR can now work with structural (particularly T1-weighted) images, as well as diffusion data. It can also work with anatomical parcellations of the brain, and transform them between spaces. A wrapper script for Freesurfer's
recon-all
tool is also provided. New TractoR scripts relevant to structural data areimport
,parcellate
andfreesurf
. Please see the new page on working with structural data for more information. - A new test data set, which includes structural data, has been introduced to replace the previous test data.
- Transformation strategies between different imaging spaces are now configurable, with defaults given by the
$TRACTOR_HOME/etc/session/transforms/strategy.yaml
file. - The new
xtrack
script can be used for tracking between parcellated regions, specified by name or type. - The
trim
script has been added for removing volumes from multivolume data sets. - The new
apply
script can be used to apply an arbitrary R expression to the contents of one or more images. - The
path
script has been added for identifying the path to an image within a managed session hierarchy. - The
split
script can be used to split a serialised list of objects into its components. - The
dpreproc
script now acceptsEddyCorrectionMethod:none
for data sets which are already well aligned and have minimal eddy current induced distortion. - The
mtrack
script now allows seed points to be subjected to random jitter, to move them off the regular grid. - The
tensorfit
script withMethod:ls
(the default) is now more statistically efficient in the presence of invalid or missing data. - The
imagestats
script now handles missing values in images gracefully. - The
dicomsort
script gains an option to use series time rather than series number as the identifier. This can be more reliable if DICOM files were acquired from multiple scan sessions. - TractoR's internal image viewer now fixes the black and white point across a whole image for consistency.
- R's raster plotting functionality is now used when plotting images, for speed.
- Textual output and messages should now use the full width of the terminal screen more effectively.
- Running
make install
from the main TractoR installation directory is now equivalent tomake install-local
after the latter has been run once. In other words, the initial preference for a local install is maintained even if the-local
suffix is missed in future invocations. - The output format for
tractor -o
has been tweaked, and their is now support for examples. - It should now be possible to coregister files stored in Freesurfer's MGH format with FSL-FLIRT.
- The first and last messages printed by the main
tractor
script are now output to the standard error stream. - Checksums for each file in the distribution are now included and can be checked using
make check-md5
. This is mainly intended for checking whether local modifications have been made.
- The binary front-end program should no longer misinterpret script arguments beginning with a dash (
-
). Previously it would try to interpret these as its own arguments, most likely leading to an error. - The DICOM reading code is now more flexible with regard to the orientation of Siemens mosaic images. Credit goes to Doug Greve, among others, for information on the some of the subtleties, both in this release and in 2.4.0.
- The
streamlines2trk
script should no longer produce a "could not find function" error. - The installation instructions have been updated to reflect the recent system requirement for a C/C++ compiler.
- There have been minor tweaks to the R documentation for the
tractor.base
package.
- The native tracker is now used in scripts which do not have an explicit
Tracker
option, such ashnt-ref
,hnt-eval
andpnt-viz
. This brings them into line with other scripts, and was the intention for TractoR 2.4 and above. - The new TractoR interface is now compiled in a more portable way, and should build successfully on a more diverse range of platforms. A couple of small memory allocation problems have also been corrected.
- The linear registration test has been made less stringent.
- The wording of an error message in the
reshape
script has been clarified.
- A C/C++ compiler, such as
gcc
/g++
, is now required to install TractoR. A suitable compiler can be installed using an appropriate package manager (aptitude
,yum
, etc.) on Linux, or with Xcode (from the Mac App Store) on OS X. R handles all the details of actually compiling code. - TractoR now offers tools for linear and nonlinear image registration, and the entire infrastructure for transforming images and points between different spaces has been totally reworked. A new family of scripts (
reg-linear
,reg-nonlinear
,reg-apply
andreg-viz
) has been added for direct registration. Implicit registration, whereby points or images are transformed between spaces as part of another operation such as neighbourhood tractography, behaves as before by default, but the new NiftyReg back-end can be used by setting theTRACTOR_REG_METHOD
environment variable toniftyreg
. The newtractor.reg
package supports all registration and transformation, and supporting packagesbitops
,oro.nifti
andRNiftyReg
have been added to the TractoR distribution. - The
dpreproc
script gains a newEddyCorrectionMethod
option, which allows NiftyReg to be used for volume-to-volume coregistration. - TractoR now uses its own command-line front-end, rather than the standard R interface. This allows for greater flexibility, and removes the need for ugly hacks to get R to behave as required. The main user-visible effect of this change is that error and warning messages will now appear in colour, if supported by your terminal emulator.
- A new
console
script has been added, which starts an interactive R session using TractoR's front-end, in a context where all TractoR-related R packages have been loaded. - The new
reshape
script can be used to reshape the data in an image. - The
Tracker
option is deprecated everywhere it occurs. Now that a compiler is required, the internal tracker should always be available. - The
tractor.native
package is now calledtractor.track
, to more specifically indicate its purpose. - Calls to scripts whose function is purely informative (
dicomtags
,imageinfo
,view
, etc.) are no longer recorded in the "tractor-history.log" file. - Further improvements have been made to DICOM processing. Transfer syntaxes, and slope and intercept values, are now respected; and image origins are now extracted from the metadata.
- TractoR R packages can now be installed within the TractoR file hierarchy using
make install-local
. This can be convenient to avoid permissions issues, or when running multiple versions of TractoR in parallel. - The
platform
script now additionally reports the main R package library in use. This will differ between "local" and "nonlocal" installs. - The main
tractor
program gains a "-f" option, which can be used to profile the performance of a script. Information on the time spent in each function will be written to a file named "(script name).Rprof" in the working directory. This is intended for advanced users only. - The data type of an image file is no longer stored internally, and instead a suitable type is chosen when the image is written to a file. The
TypeCode
option in thechfiletype
script is therefore defunct. - The
cal_max
andcal_min
fields of a NIfTI image are now written using appropriate values. - Image data can now be stored without reordering to LAS internally, and writing non-LAS images is supported for NIfTI format (only).
- There have been significant changes to
MriImage
, one of TractoR's key internal data structures, but this should only affect those who use TractoR packages from within R. - X11 should no longer be started as a side effect when a TractoR script is called on Mac OS X. This could cause a delay of several seconds.
- Voxel locations are now rounded after being converted to R indexing, rather than before, in the
slice
script. - Handling of sparse images has been improved slightly.
- The origin would sometimes be read incorrectly from MGH-format files. This has been corrected.
- The "dti_SSE" image created by
tensorfit
could sometimes contain large numbers ofNA
values. This has been corrected. - Empty DICOM tags no longer cause spurious errors.
- The debug-level message describing the orientation of an image being read should now always be accurate.
- The tests should no longer fail after a clean install of the package.
- TractoR now includes a simple interactive image viewer, which is used by default unless the
TRACTOR_VIEWER
environment variable is set tofslview
(for FSLview, as in earlier releases) orfreeview
(to use FreeSurfer's FreeView, for which a new interface has also been added). The new TractoR viewer remains work in progress, and FSLview is still favoured by scripts for showing 4D or vector-valued images. - The
dicomsort
script'sSortBySubjectFirst
option has been replaced by a more generalSortOn
option, which allows the files to be sorted by series, subject and/or date in any order. The script is also more careful to avoid deleting files which are not moved because they are already in the right place. - The
mtrack
script now allows the user to specify "termination" masks, which cause truncation of streamlines. It is possible to specify a single mask as both a waypoint and a termination mask. Likewise,ptrack
gains aTerminateAtTarget
option. - TractoR's internal tractography algorithm is now the default for
rtrack
andmtrack
. - If the
gradrotate
script is applied to a session, the original (unrotated) gradient directions are first copied to the filetractor/diffusion/directions-orig.txt
. This makes it much easier to tell whether rotation has been performed, and is used by the code to make sure that the gradients are not rotated twice. - The
gmap
script gains aUseReferencePlanes
option: if it is "false" then the plane of the maximum in the image is used for visualisation. In addition, the script should no longer produce an error when the reference seed point is not in the centre of a voxel. - The
dirviz
script gains aScaleFactor
option to control the size of the PNG image produced. - The
pnt-data-sge
script now captures SGE/OGE job numbers more robustly, thereby avoiding spurious errors. - PNT reference tracts (including those provided with TractoR) should now have smaller file sizes.
- Code which reads from DICOM files should no longer produce an error while checking if a very small file is a DICOM file or not, or when handling oblique images.
- The PNT reference tract test has been tweaked to avoid spurious failures.
- Using the FSL tracker with FSL versions containing more than three parts (e.g. 5.0.2.1) no longer fails.
- The
pnt-prune
script would sometimes misinterpret the median streamline which is used as a baseline, resulting in a far less tightly pruned final tract than expected for some data sets. This has now been corrected.
- TractoR now has the ability to perform kernel-based image processing operations. The new
smooth
andmorph
scripts can be used to smooth an image, or to apply a mathematical morphology operation such as erosion or dilation. - The masking stage of the
dpreproc
script (withMaskingMethod:kmeans
only) now uses a morphological closing operation to remove small "holes" in the segmentation. - The new
ptrack
script can be used to perform connectivity "profiling", generating a table of streamline counts connecting each voxel in a seed region to each of a set of target regions. - The
mtrack
script now supports the use of so-called "exclusion masks" (using the internal tracker only). Streamlines passing through any such exclusion region will be removed from the result. - The
track
andmtrack
scripts now allow the set of streamlines that they generate to be stored in a binary file. This may be converted to the format used by TrackVis for visualisation using the newstreamlines2trk
script. - The new
imagestats
script can be used to obtain a series of statistics about part or all of an image, such as volume, intensity range and mean intensity. - Experimental support for auto-updating a TractoR installation has been added, via the new
update
script. This attempts to check the project web site for new versions of the package. Seetractor -o update
for usage. - The newly-added
upgrade
script can be used to convert objects stored in ".Rdata" files from TractoR 1.x formats to their TractoR 2.x equivalents. - The code underlying the
dicomread
script has been substantially reworked to improve speed (in some cases substantially) and reliability in determining the orientation of the data. The script also gains an option to inhibit the untiling of DICOM files which appear to use the Siemens "mosaic" format. - The
view
script no longer requires the user to press Enter to quit, and does not spend time converting images to Analyze format when not necessary. - Substantial additions to the package's support for sparse images have been made, and the
values
script now takes advantage of these. - The
TRACTOR_HOME
environment variable is now guessed if it is not set, although routine reliance on this mechanism is not advised. - Support for scripts in
/etc/tractor
has been removed. These have been deprecated since TractoR 1.0.0. - Interrelationships between the various TractoR packages have now been more explicitly declared. This may avoid occasional problems when using them within R.
- Marginally invalid quaternion parameters in NIfTI headers are now handled more gracefully.
- The
dpreproc
script now warns if the diffusion subdirectory already exists within the session, rather than just if the session's root directory exists. - Spurious errors, about images not having been created yet, should no longer occur when TractoR updates the structure of a session directory created with version 1.x.
- An issue with installing the "tractor.native" package on some Linux systems has been addressed. The package's "configure" process has been somewhat simplified at the same time. (Reported by Mark Bastin.)
- A significant memory leak has been corrected in the new tracking code, which resulted in scripts which run lots of tractography (such as
pnt-data
) using very large amounts of memory. - The
mtrack
script allows multiple waypoint masks to be specified from the command line, comma separated, in line with the syntax used in various other scripts. TheShowSeedPoint
option is ignored when no seed mask is specified (i.e. when the seed region is the whole brain). - The
mtrack
script withTracker:tractor
no longer produces an error if no streamlines pass through all of the waypoints. - Occasional spurious errors, saying that "all seed points must be the same", should no longer be generated by the
pnt-data
script. (Reported by Clare Gibbard.) - The
dicomread
script now correctly uses the TR as the fourth voxel dimension when individual files represent slices, rather than volumes. - The HTML documentation has been updated to match the latest version of the TractoR web site. (This will be standard practice in future releases.)
- The internal tracking code has been substantially reworked, and can now be used in the
rtrack
andmtrack
scripts. (Results should, however, be comparable with previous versions.) Themtrack
script can now also be used to perform whole-brain tractography. - TractoR now properly handles temporal units in NIfTI files. The
dicomread
script will set the temporal resolution of a 4D image series to the repetition time (TR) stored in the DICOM metadata. (The voxel dimension for dimensions above three was previously fixed to 1, so this will result in some differences in output.) - A full set of HTML-based documentation is now included in the TractoR distribution, and can be found at
share/doc/home.html
. - HNT and PNT reference tracts for the ventral cingulum and inferior longitudinal fasciculus have been added.
- A top-level session directory map can now be used to redefine the location of subdirectories within the TractoR hierarchy. This mechanism can also be used to allow sessions to share some data. All session maps are now also cached internally.
- TractoR now tries harder to work with images stored in a rotated coordinate system (although warnings will be generated).
- The number of clusters used by the k-means algorithm in
dpreproc
can now be set using the newKMeansClusters
option. This option can be refined interactively, or the user can switch to using BET if required. - TractoR can now read only selected volumes from an image file. The
dpreproc
script takes advantage of this to reduce memory usage. - Stage 2 of
dpreproc
will now only visualise b=0 volumes, rather than all data. - The brain mask generated in stage 3 of
dpreproc
is now displayed semitransparently for ease of evaluation. - The
dicomsort
script can now sort a directory by subject as well as series. It also handles missing identifiers better. - The option to threshold seed points on metrics other than anisotropy in the
track
andrtrack
scripts is deprecated (meaning that it will still work, but a warning will be generated). - The
tensorfit
script now handles negative data values more gracefully. An sum of squared errors (SSE) image is now created irrespective of the fitting method used. - The
imageinfo
script can now be used with a directory of DICOM files as well as an Analyze/NIfTI/MGH image file. - The
gmap
script gains an option to create a colour bar. - The
plotcorrections
script now allowsMode:all
and can be run noninteractively. (Requested by Mark Bastin.) - The "fslview" viewer is now run quietly to suppress spurious warnings.
- TractoR now uses the "quartz" R device by default on Mac OS X systems. This should result in smoother on-screen graphics.
- TractoR run in debug mode will now print stack traces for warnings as well as errors.
- The
dicomsort
script now avoids copying files onto themselves. - The
tensorfit
script now handles negative data values more gracefully. - The
hnt-ref
test has been made a bit more robust (i.e. less likely to fail for spurious reasons).
- Fixes to TractoR's handling of images stored using nondiagonal xforms (or the equivalent) have been made.
- Thread-safe temporary files are now used more widely.
- Somewhat cryptic errors about an "incorrect number of dimensions" should no longer appear when performing tractography. These occurred rarely, when a tract was extremely short.
- An incompatibility between masks generated by
dpreproc
in its default mode and the internal tractography code has been corrected. - Running the
mtrack
script with one or more waypoint masks should no longer fail.
- The
mean
andgmean
scripts now handle "NaN" more sensibly, giving useful output even when they occur. - A bug related to reading Analyze-format image files has been fixed.
- The "reportr" R package has been upgraded to version 1.0.0.
- References to the TractoR JSS paper have been added in the package documentation.
- An error about a missing "dti_eigval1" image should no longer appear when calling
mean
orgmean
withMetric:axialdiff
on data originally preprocessed with TractoR 1.x. (Reported by Mark Bastin.) - Errors about "no loop to break from" should no longer be generated by
pnt-viz
orpnt-prune
when a data set with no match data is encountered. (Reported by Michael Yoong.) - The error "object 'nullPosterior' not found" should no longer appear when calling
pnt-interpret
withMode:null-posterior
.
- Further refinements for the upcoming R 2.14.0 have been made. All tests now pass on that platform.
- The TractoR R packages are now byte-compiled on versions of R which support this (2.13.0 and later). This should provide a general speed-up that should be more substantial in R 2.14.0 and later, in which the core packages are also byte-compiled by default.
- The voxel unit of an image is now correctly set to "unknown" where appropriate.
- A bug, which could result in spurious "image not found" errors when working with tractography on datasets processed for two fibre populations per voxel, has now been fixed. (Reported by Mark Bastin.)
- The
gradcheck
script gains an option to allow the user to circumvent use of the internal image viewer. - The "objects" subdirectory of a session is now deleted when updating the hierarchy to TractoR 2.x format. This avoids errors of the form "X is not a defined class" which were previously occurring due to the lack of forward-compability between stored objects in TractoR 1.x and 2.x.
- The
FlipGradientAxes
option todpreproc
now expects comma-separated axis letters, rather than unseparated numbers, for consistency withgradcheck
. - The wrapper function for FSL
probtrackx
has been made more "thread-safe", making parallelised code which uses it (such aspnt-data
withTracker:fsl
) more reliable. - The session status report test has been updated and should no longer fail.
- R packages are now installed more cleanly, leaving fewer intermediate files lying around.
- Various corrections have been made to script descriptions.
- Several other R-level tweaks and fixes have also been made, including some changes to the semantics of indexing and replacement for
MriImage
objects. - Support for changes upcoming in R 2.14.0 (expected 31 October 2011) has been added.
- The third and fourth stages of the
dpreproc
script have been swapped around. This was the intended order for version 2.0.x. - A test image file has been renamed for consistency with other similar files.
- This is a major new release with many significant changes. The main intention has been to broaden the scope of the package and make it more flexible, laying the foundations for future development. The package's dependence on FSL has also been lessened substantially. It is not fully backwards compatible with TractoR 1.x, so it is recommended that the two not be mixed within a single study.
- TractoR's internals have changed substantially, and make use of features relatively recently added to R. Therefore, R 2.12.1 (released December 2010) or later is required to install TractoR 2.0.
- The session hierarchy has been revamped. The primary directory for diffusion-weighted data is now called "diffusion", although an "fdt" directory will still be created for interoperability with FSL if needed. The image file names within the "diffusion" directory are also different by default, although greater flexibility on these names is now available through so-called "session maps". TractoR 2.0 will automatically update a session hierarchy created with TractoR 1.x when it first encounters it, but the image file names in the new "diffusion" (old "fdt") directory will be left alone, and a map file will be created to allow TractoR 2.0 find what it needs. NB: Using TractoR 1.x with a session directory updated in this way is not guaranteed to work correctly, and is not recommended.
- Two scripts have been renamed in light of the broader scope of the new version:
mkbvecs
is now calledgradread
; andpreproc
is now calleddpreproc
, since it is specific to diffusion-weighted data. - The functionality of the former
preproc
script (nowdpreproc
) has been split up for flexibility, and to avoid confusion. It now only handles functions which are truly preprocessing operations, so diffusion tensor fitting is now performed by the newtensorfit
script, gradient direction checking (and flipping if necessary) bygradcheck
, gradient rotation bygradrotate
, and FSL-BEDPOSTX bybedpost
. Run "tractor -o tensorfit", and so on, to see the options for these new scripts. DICOM to NIfTI conversion, eddy current distortion correction and brain extraction remain indpreproc
, and it now has four stages rather than five. The progress of that pipeline can be shown using the StatusOnly option. - Some script options have new defaults, in line with current best practices, or to use TractoR-internal functionality where possible. For example, MaskingMethod in
dpreproc
now defaults to "kmeans", while BetIntensityThreshold defaults to 0.3 because experience has suggested that this value produces more successful results. - The default value of any option in any script can now be overridden on a per-user basis by creating a config file corresponding to the script in ~/.tractor, and setting the default value there. For example,
dpreproc
will use FSL-BET for brain masking (as in TractoR 1.x) if you put the text "MaskingMethod: bet" into the file ~/.tractor/dpreproc.yaml. See the man page for details. - TractoR can now read and write the MGH image file format used by the FreeSurfer package. These files have extension ".mgh" (uncompressed) or ".mgz" (compressed).
- An iterative weighted least-squares fitting process for diffusion tensors is now available through the
tensorfit
script. - The
dicomsort
script now stops reading each file once the series number is encountered, producing a typical speedup of around 25%. Directory names created by this script now include leading zeroes to ensure that they are always displayed in the right order. - The
platform
script now additionally prints the TractoR home directory. - The
view
script now allows multiple files to be specified. - The default verbosity level is now 1, rather than 0. Users may therefore see much more output than before. The default can be switched back by setting up ~/.tractor/config appropriately: see the man page for details.
- A warning is now raised if series descriptions are not consistent when reading a DICOM directory.
- The "-r" flag to the main
tractor
program is deprecated. - The package installation process is now less verbose.
- Many R-level changes and enhancements have been made, including tweaks to support changes upcoming in R 2.14.0, due in October.
- The
pnt-prune
script would sometimes misinterpret the median streamline which is used as a baseline, resulting in a far less tightly pruned final tract than expected for some data sets. This has now been corrected. (Back-ported from version 2.2.1.) - A number of improvements have been made relating to TractoR's handling of very short tracts. (Partly back-ported from version 2.0.7.)
- A number of fixes have been back-ported from TractoR 2.x, specifically relating to compatibility with R 2.14.0 and thread safety.
- Citations to the TractoR JSS paper have been added.
- A bug causing problems when reading 2D NIfTI files has been corrected.
- A spurious warning was previously produced when reading a NIfTI file with more than 3 dimensions. This has been fixed.
- The simple "hello world" test should no longer fail on some platforms due to whitespace differences.
- The
platform
script now always displays its output, irrespective of the verbosity level set.
- The NIfTI file reading code in TractoR is now substantially more flexible, and supports images stored using conventions other than the LAS arrangement which is used internally.
- Read support for the proposed new NIfTI-2 file format has been added.
- Image origins are now adjusted appropriately when image data are flipped on reading, and negative and noninteger values are allowed for. The result of the
imageinfo
script may therefore differ from previous versions for some files, but the new output is more consistent with TractoR's conventions. - Any gradient flip specified with the FlipGradientAxes option is now performed during stage 2 of the
preproc
script, to avoid problems with doing it after rotating the directions.
- When installing the "tractor.native" package, a greater effort is now made to find "zlib" on the user's system. If it is not available, the package is compiled without support for reading gzipped NIfTI files. Previously the compilation would simply fail. (Reported by Mark Bastin.)
- TractoR now contains its own tractography algorithm, provided in the new "tractor.native" R package. The bulk of the tracker is written in C for speed, so this package requires compilation. Use of this tracker is optional and currently only supported in scripts which use one seed point at a time (i.e.
track
,pnt-data
,pnt-data-sge
,pnt-ref
andpnt-prune
). However, the speed gains can be considerable: in testing,track
ran up to 30% faster using the TractoR tracker, andpnt-data
ran 50-70% faster. Results from the FSL and TractoR trackers should be similar but will not be identical, so it may be wise not to mix the two within studies. FSL remains the default for now. - The main
tractor
program now supports a "-a" flag, which can be used to select between subarchitectures on R platforms that support them, such as Mac OS X. This allows users to select between, for example, 32-bit and 64-bit versions of R for running TractoR scripts. - In TractoR version 1.5.0 and later,
pnt-data
no longer collated its output into a single file. This was unintentional and has now been corrected: collation will now happen automatically unless the SessionNumbers option is used to select a subgroup of sessions to process. (Reported by Ping-Hong Yeh.) - The full data set image for the example session used by TractoR's self-tests is now included in the distribution.
- The
preproc
script now offers two alternatives to BET for masking in the region for further processing. These are selected using the new MaskingMethod option. The "kmeans" option will apply k-means clustering, which is faster than BET and requires no parameters to be set, but will usually leave some non-brain voxels within the mask. The "fill" option will simply mask in the whole image region, and therefore all voxels will undergo all subsequent processing. These alternatives are particularly useful to simplify the preprocessing, or when FSL is not available, or when processing non-brain data. - MNI standard space images representing the brain and regions of grey matter, white matter and CSF have been added to the distribution in the
share/mni
directory. TractoR therefore no longer relies on versions of these images supplied with FSL. We are grateful to the International Consortium for Brain Mapping (ICBM) for making these available. - New scripts have been added for cloning session hierarchies (
clone
), extracting the voxel values of an image within a mask (values
), and viewing an image infslview
in a way that avoids an incompatibility between that viewer and certain NIfTI data types (view
). - Mask-based tractography (using the
mtrack
script) now reports the number of nonzero voxels in the mask, and the number of streamlines retained after applying waypoint masks. (This output is produced at the "info" level, so-v1
must be given totractor
to see it.) - The
dicomsort
script will now handle data sets with duplicate file names within a series. In addition, this script's functionality is now available at the R level. - The
dicomtags
script will now look in subdirectories for a DICOM file if its argument is a directory, rather than just in the directory itself. - Tests that fail will now be rerun, rather than skipped, if
make test
is run again from the main TractoR directory. - The way that diffusion encoding schemes are handled within the core code of TractoR has been changed to improve consistency and portability. However, this change should not have any effect for those using only the
tractor
program to perform standard tasks. - 2D images written out to NIfTI files now have their "sform" and "qform" codes set to zero, since TractoR does not keep track of their orientations.
- An adjustment has been made to avoid problems with the gradient rotation part of the
preproc
script, which in some circumstances could try to read the brain-extracted b=0 image before it had been created. - The
xfmconvert
script is now defunct and has been removed. The new transformation storage format has been in place since TractoR 1.0. - A few other minor improvements and fixes have been implemented.
- TractoR now offers a simple method for parallelising code, which uses the "multicore" package for R by Simon Urbanek. Users can now take advantage of multicore systems by simply specifying the "-p" option (with a parallelisation factor) to the main "tractor" program. The man page has more details. This option is only supported by certain scripts: at present these are
hnt-eval
,hnt-viz
,pnt-data
,pnt-viz
andpnt-prune
. - In addition to lightweight multicore parallelisation, there is now a version of the
pnt-data
script which supports parallelisation on a grid using the Sun Grid Engine (SGE). This version of the script is calledpnt-data-sge
, and can be used likepnt-data
, with a few extra options specific to SGE. Another supporting script,pnt-collate
has also been added. - A new script,
dirviz
, can be used to visualise principal fibre orientations within each voxel of a data set. - The new
platform
script reports various details of the software platform that TractoR is being run on. - The
plotrotations
script has been replaced by the more generalplotcorrections
, which can display rotation angles, translations, scales or skews. - The text files produced by
pnt-data
now include the seed point associated with each row, for greater flexibility downstream. Scripts are still compatible with the old format however. - The DICOM reading code no longer immediately rejects non-MR images, although it has not been tested with CT or other data.
- The
preproc
script now lets the user know when the gradient cache has been updated. It also gains an option to force this update. - An adjustment has been made to allow for some Siemens DICOM files which report zero image slices.
- The
pnt-viz
script gains a NumberOfSamples option. - X11 libraries are no longer used to create images in the
pnt-viz
andpnt-prune
scripts. - The R package "tractor.base" has now been split into "tractor.base" and "tractor.utils".
- Gradient caching code used by the
preproc
script will no longer fail if no ".tractor" directory exists in the user's home directory. The directory will now be created if it is missing. - The TractoR NIfTI file reader now accepts files with negative qform elements, as intended.
- An incompatibility with FSL 4.1.5, due to a change in the behaviour of FSL
probtrackx
, has been corrected. - DICOM tests have been updated to work with the read code change introduced in TractoR version 1.4.2.
- The "tractor -o" test is now a bit more robust.
- An internal problem in some HNT reference tracts has been corrected, so spurious errors should no longer be generated when running
hnt-eval
. - An adjustment to the DICOM reading code has been made to avoid an incompatibility with the recently released R 2.11.0.
- The "avscale" test previously failed on some Linux installations due to a slight platform dependence in the FSL program's output. This issue has been avoided in this release, so the tests should run successfully on these platforms.
- Unneeded files which were accidentally included in the version 1.4.0 release ("filter.R" and the "multicore" directory) have been removed.
- TractoR now supports B-matrix/gradient vector rotation to compensate for the motion/eddy current distortion correction applied. Just set the RotateGradients option to "true" for stage 2 of the
preproc
script. The new experiment scriptplotrotations
can be used to get a set of how big the effect will be for a particular data set. - Gradient directions (before rotation) for diffusion MRI acquisitions are now cached in the user's ~/.tractor directory and automatically placed into a session directory if the series description matches and no gradient direction information is found in the DICOM files. This facility can save a lot of time manually copying bvals and bvecs files into session directories. Its use is determined by the UseGradientCache option to the
preproc
script. - Group mapping, in particular of tracts produced by
hnt-viz
,pnt-viz
andpnt-prune
, is now available through the newgmap
script. A set of images are transferred into standard (MNI) space and overlaid to visualise spatial consistency. Run "tractor -o gmap" for options. - Contact sheet style visualisation is now available for Analyze/NIfTI volumes, wherein all slices of an image along a particular direction are shown in a grid. The new
contact
script is the interface to this functionality. - The new
age
script can be used to determine a subject's age to the day from a DICOM file. - The new
binarise
script can be used to binarise Analyze/NIfTI volumes, with an optional threshold. - Options such as RunStages in
preproc
and SessionNumbers inpnt-prune
now allow number ranges (e.g. 1-10) as input, for convenience and conciseness. - The HowRunBedpost option in the
preproc
script now defaults to "fg" (running in the foreground). The use of "screen" was confusing for several users, but can be forced if required. The "auto" value is no longer used or supported. - The
pnt-ref
script gains a MaximumAngle option, to avoid sharp turns near the ends of the created reference tract. - The output file name in the
dicomread
script now defaults to the same as the name of the source directory. - The window limits (black and white points) for images produced by the
proj
,slice
,contact
andgmap
scripts can now be set using the new WindowLimits option. - The
dicomsort
script now creates subdirectories containing the relevant series descriptions in their names, for greater clarity. - Various improvements have been made to DICOM reading code for Philips and Siemens files, and for images acquired obliquely.
- The
rtrack
script unintentionally ignored the NumberOfSamples option. This has been corrected. - Various other minor enhancements.
- Support for a new approach to rejecting false positive connections in probabilistic neighbourhood tractography has been added through the
pnt-prune
experiment script. This script can be run instead ofpnt-viz
, and uses the PNT modelling framework to substantially clean up tract segmentations. Details can be found on the PNT tutorial page). Run "tractor -o pnt-prune" for options. - A set of tests have been added to the package, to ensure that installation went successfully and everything is working as expected. These can be run from the main TractoR directory with the command "make test".
- A specific PNT model can now be specified directly for the
pnt-eval
andpnt-interpret
scripts, allowing substantially greater flexibility. - The
pnt-ref
andhnt-eval
scripts now support a NumberOfSamples option, to set the number of streamlines used by the underlying tractography algorithm. - The
track
andmtrack
scripts now have a CreateVolumes option, for consistency with other similar scripts. The behaviour of thertrack
script has also been brought into line with other related scripts. - The
chfiletype
script can now be used with multiple files. - The
tractor
program now supports a "-i" flag to suppress the user's default configuration file. - Running "tractor -o (script)" no longer requires
ruby
. - The DICOM reading code should no longer incorrectly identify non-Siemens images as mosaic volumes.
- Duplicated stack traces were sometimes produced when
tractor
was run in debug mode. This has been corrected. - The
extract
script no longer fails when the CreateImages option is on and the OverlayOnBrain option is off. - Some minor adjustments to output messages have been made.
- HNT and PNT reference tracts have been added for the corpus callosum splenium (forceps posterior), arcuate fasciculi, uncinate fasciculi and anterior thalamic radiations. (Credit to Dr Susana Muñoz Maniega.)
- Significant performance improvements have been made to the DICOM reading code, decreasing read times by up to 50%. Users should find that performance is even better with R 2.9.2, which is planned for release on 2009-08-24.
- A new mechanism is now behind "tractor -o (script)", and as a result the program displays the available options for those configuration variables, like "PointType", which can only take certain values. This change finally closes issue #2.
- The
status
script defaults to the current directory if none is specified. It will also no longer create an empty camino subdirectory. - The
dicomtags
script now accepts a directory name instead of a file name, in which case it will look for a DICOM file in that directory and print the tags for that file. If nothing is specified, the current directory is used by default. - If an experiment script is not found, the
tractor
program now prints the name of the missing file. - Minor documentation changes.
- The TractoR implementation of probabilistic neighbourhood tractography now supports "asymmetric" models, which have more degrees of freedom than normal symmetric models, but potentially fit the data better. Use of this option is now recommended in medium and large data sets.
- The
caminofiles
script now creates version 2 Camino scheme files, and therefore there is no longer any need to specify a diffusion time. In addition, a spurious warning about an existing directory is no longer generated. - The
mean
andgmean
scripts now accept the new values "Lax" and "Lrad" for axial and radial diffusivity, respectively. These are passed to the "Metric" option. - DICOM code now handles images whose slices are slightly oblique, with a warning. No reslicing is performed.
- Error messages for missing and multiple image files are now different, to avoid confusion.
- The FSLOUTPUTTYPE environment variable is no longer used to set the internal default file type for TractoR. If the TRACTOR_FILETYPE environment variable is not set, the file type defaults to NIFTI_GZ. (Given that TractoR now supports more file types than FSL, this synchronisation makes less sense than it used to.)
- The data preprocessing script,
preproc
, no longer returns information about the state of the session. This information (and more) can be obtained using the newstatus
script. - The
imageinfo
anddicomtags
scripts now support filenames containing spaces (although these are generally not recommended). - All messages, including warnings, are now reported in the order that they are raised by the code.
- The tractor.base R package is now fully documented at the R level.
- The
dicomread
script now uses the FSLOUTPUTTYPE environment variable to decide on a file format to use if TRACTOR_FILETYPE is not set. This was always the intended behaviour. - Fixing an issue that would produce an error when reading a 2D NIfTI image file.
- The
pnt-eval
script will now find standard reference tracts as intended. - The
caminofiles
script would previously always ask for confirmation, even if the camino directory didn't previously exist.
- A set of standard reference tracts for five major pathways are now included with the TractoR distribution.
- New neighbourhood tractography functionality has been added, for "unsupervised" tract segmentation (using the new
pnt-em
experiment) and extracting parameters of interest from NT results (hnt-interpret
andpnt-interpret
). - The new
list
experiment lists all available TractoR experiment scripts. - The new
dicomread
experiment has been added to convert any directory of DICOM files into an Analyze/NIfTI volume. DICOM read support is now more flexible, and can read images with nonaxial slices. - The format and name of the file which stores the transform from MNI space to each session's diffusion space (in the tractor/objects directory) has changed. As a result the registration will be repeated the first time it is needed. The new
xfmconvert
script can be used to convert existing files to the new format (tractor -o xfmconvert
for usage information). - The
preproc
experiment now shows the principal directions of the diffusion tensor in FSLview during stage 4. It also interprets its DicomDirectory parameter as representing a full path if it begins with a "/" character. - The
chfiletype
experiment can now be used to change the datatype of an image as well as the file format. - Warning messages that occur multiple times are now generally shown only once -- along with the number of occurrences. Warnings from R core code are also reported in this way.
- Log files created with the "-l" flag are now named for the script that was run.
- Some scripts handle missing data or files more gracefully.
- The main
tractor
script now requires thebash
shell specifically (notsh
).
- A mistake in the
dicomsort
andpeek
experiment scripts meant that they produced errors about missing functions. This has been corrected. - Following the dropping of support for the Analyze file format by FSL 4.1, this beta provides some extra tools for those who wish to continue using the format. Specifically, the environment variable TRACTOR_FILETYPE can be set to ANALYZE if the user wishes TractoR to output Analyze files by default. (This is no longer a legal value for FSL's environment variable FSLOUTPUTTYPE, which was previously used for TractoR's default.) The
chfiletype
script has also been created for converting between formats as required: please runtractor -o chfiletype
for details.
- The way in which TractoR looks for its scripts has changed somewhat. This should make installation both simpler and more flexible in most cases.
- Three new utility scripts have been added. The
caminofiles
experiment converts a data set into file formats suitable for use with the Camino diffusion MRI toolkit;mkbvecs
assists with the creation of valid "bvals" and "bvecs" files for use with FSL; anddicomsort
sorts a directory of DICOM files into subdirectories by series number. The latter is useful for separating diffusion data from structural acquisitions. - The time-consuming
pnt-data
experiment script now writes partial output as it goes and supports resuming a partially completed run. This makes interruptions to this process, such as major errors or power loss, far less painful in terms of the time lost. The script also allows a single seed point to be specified on the command line with the new SeedPoint option. - The
preproc
experiment checks more robustly to make sure that its first stage has been completed properly. The script also more faithfully obeys its Interactive flag. - TractoR will now use R's batch mode if requested. This is not that useful under most usual circumstances, but can occasionally be helpful.
- More minor tweaks and fixes.
- Entities which are stored in ".Rdata" files are now saved in a different way. This means that objects such as reference tracts created with beta 1.0 will not directly work with beta 2.0. However, this new arrangement should generally be forward-compatible with future releases. The new
peek
experiment script can be used to inspect these stored R objects. - The main
tractor
script has had some tweaks. The log file, "tractor_output.log" will now receive output from the experiment script in real time rather than all at the end. Multiple configuration files (specified with the "-c" flag) are now permitted, and paths to these files are now relative to the current working directory rather than the experiment's working directory (which was a bit counterintuitive).tractor -o
now reports "None" if no options are available. - The user can set up default options for TractoR experiments using a ~/.tractor/config file. See the
tractor
man page for more details. - History log files ("tractor_history.log") now include the date and time that the experiment script completed.
- Added the
gmean
experiment script, a companion tomean
aimed at applying the same calculation to a group of images. Runtractor -o gmean
for details. - The interface of the
preproc
script has changed a little. It also supports a new option specifying a particular subdirectory to search for DICOM files. - The
mkroi
experiment no longer returns the names of the files it created. - The TractoR makefile now assumes that R is installed at /usr/local/bin/R by default.
- An adjustment to the NIfTI file reading code has been made for compatibility with R 2.7.0.
- Various minor changes and fixes.
- First public release.