--- title: "Working with Data in fslr" output: rmarkdown::html_vignette vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Working with Data in fslr} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} library(knitr) library(fslr) ``` ## Reading in Data `fslr` implicitly is partnered with the `nifti` format from `oro.nifti`. All functions use the `system` command to implement the FSL functions. All functions will check to see whether the file passed in a character path to a filename. If the object is a `nifti` object, the programs will create a temporary file using `tempfile()` and then return the name of this file with the `checkimg` command. If a character path is passed to the `file` argument into an `fslr` command, then this will run in FSL assuming that file exists. ## Checking if FSL exists If `R` is run using a GUI, then `fsl.path` must be set using `options(fsl.path='/path/to/fsl')`. `have.fsl()` checks to see if FSL is in the PATH or the options are correctly set and returns `TRUE` and returns `FALSE` otherwise. ### Printing out FSL Version For example, you can wrap example functions with a logical check for `have.fsl()` to have the execute if FSL exists: ```{r} if (have.fsl()) { print(fsl_version()) } ``` ## Returning Objects In functions where an image is the end result, the `outfile` and `retimg` arguments are present. If `outfile` is specified, the user wants a file to be saved to disk. If `outfile` is not specified, a temporary file (using `tempfile`) will be created for the result and deleted at the end of the `R` session. If `retimg=TRUE`, then the user specified that an object of class `nifti` will be returned to `R`. If both `retimg=TRUE` and `outfile` is specified, the image will be written to disk, read into `R` and the `nifti` object will be returned. If `retimg=FALSE` and `outfile` is not specified, the function will fail as `fslr` would be calculating an image and no result would be able to be obtained since the `outfile` is deleted. ## Main functions The main functions implemented are `fslmaths` and `fslstats`. `fslmaths` usually returns images as the result and `fslstats` usually returns a vector of information. Functions functions such as `fslmask`, `fslerode`, `fslsmooth`, and `fslfill` are implemented wrappers for ease of use, but are essentially calling `fslmaths` with specific options. Functions such as `fslrange` is an example of a wrapper for `fslstats`. As `fslstats` outputs are variable in their format, the results are returned simply as a character vector which needs to be parsed. [This GitHub repository](https://github.com/muschellij2/fslr) will be used for development and issues.