# Installation on macOS These instructions will help you install a working version of QuNex on a macOS system. The strategy employed is to: 1. Install QuNex in `/usr/local/qunex` 2. Install all the dependencies in their default locations and sym-link them to `/usr/local` to set up QuNex access 3. Edit the configuration files We are assuming your user has administration or `sudo` privileges and the default shell is bash. ## 1. Install QuNex Clone the latest QuNex repository to `/usr/local/qunex`: ``` bash sudo su cd /usr/local git clone git@gitlab.qunex.yale.edu:qunex/qunex.git cd qunex git submodule init git pull --recurse-submodules && git submodule update --recursive git submodule foreach git pull origin master ``` ## 2. Install all the dependencies ### Prerequisites #### X-code ``` bash xcode-select --install ``` #### XQuartz Download the `.dmg` package from and follow instructions to install. #### Homebrew ``` bash ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \ < /dev/null 2> /dev/null ``` #### wget ``` bash brew install wget ``` ### R Download and install the latest version of R from : ``` bash sudo r install.packages("ggplot2", dependencies=TRUE) ``` ### AFNI ``` bash # -- Prepare the target folder and download the installer sudo su cd /usr/local mkdir afni cd afni curl -O https://afni.nimh.nih.gov/pub/dist/bin/macosx_10.7_local/@update.afni.binaries # -- Run the installer # for macOS 10.12 or higher tcsh @update.afni.binaries -package macos_10.12_local -bindir /usr/local/afni/afni-latest # for macOS < 10.12 tcsh @update.afni.binaries -package macos_10.7_local -bindir /usr/local/afni/afni-latest # -- Add the following to your .bash_profile or /etc/profile export PATH=/usr/local/afni/afni-latest:$PATH # -- Install supporting apps and packages rPkgsInstall -pkgs ALL brew install netpbm ``` For additional up-to-date information consult . ### FSL Use the form at to register and download the fslinstaller.py script: ``` bash sudo python ``` If the above command returns `[SSL: CERTIFICATE_VERIFY_FAILED]` error, run: ``` bash sudo PYTHONHTTPSVERIFY=0 sudo python ``` ### FreeSurfer Download the following two packages: - Latest FreeSurfer 6.0.0: - FreeSurfer 5.3.0-HCP: Open the v6.0.0 `.dmg` file and run the installer. Once it finishes run: ``` bash sudo mkdir /usr/local/freesurfer sudo mv /Applications/freesurfer /Applications/freesurfer-6.0.0 sudo ln -s /Applications/freesurfer-6.0.0 /usr/local/freesurfer ``` Open the v5.3.0-HCP `.dmg` file and run the installer. Once it finishes run: ``` bash sudo mv /Applications/freesurfer /Applications/freesurfer-5.3-HCP sudo ln -s /Applications/freesurfer-5.3-HCP /usr/local/freesurfer ``` Get a licence file by filling out the form at: and follow instructions. Apply the licence to both installations. ### dcm2niix Get the latest copy of the MRIcroGL package at . Open the downloaded `.dmg` package and copy/drag the `MRIcroGL` folder to `/Applications`. Then run: ``` bash sudo mkdir /usr/local/dcm2niix sudo ln -s /Applications/MRIcroGL /usr/local/dcm2niix/dcm2niix-latest ``` ### dicm2nii To install dicm2nii run: ``` bash sudo su mkdir /usr/local/dicm2nii cd /usr/local/dicm2nii git clone https://github.com/xiangruili/dicm2nii mv dicm2nii dicm2nii-latest # -- To save json files by default sed -i -e "s|'dicm2nii_gui_para', 'save_json', false|'dicm2nii_gui_para', 'save_json', true|g" \ dicm2nii-latest/dicm2nii.m ``` Be aware that on the first run for each user, dicm2nii will generate the default parameter file and the first conversion might fail. If that happens, just run the command again. Also note that dicm2nii has only been tested with MATLAB and Octave might not be supported. ### fix To set up fix, run the following: ``` bash sudo su cd /usr/local/fsl wget http://www.fmrib.ox.ac.uk/~steve/ftp/fix.tar.gz tar xvfz fix.tar.gz rm fix.tar.gz # -- Link the latest fix version to fix if [ -d "fix" ]; then rm -r "fix" ; fi fixfolder=(`ls -d fix*`) ln -sF ${fixfolder[@]: -1} fix-latest # -- Install the needed R packages r install.packages("kernlab", dependencies=TRUE) install.packages("ROCR", dependencies=TRUE) install.packages("class", dependencies=TRUE) install.packages("party", dependencies=TRUE) install.packages("e1071", dependencies=TRUE) install.packages("randomForest", dependencies=TRUE) ``` ### Octave To install Octave and packages run: ``` bash sudo su brew install octave # -- Link the latest Octave version to the desired location mkdir /usr/local/Octave octdir=(`ls -d /usr/local/Cellar/octave/*`) octdir=${octdirs[@]: -1} ln -s octdir /usr/local/Octave/octave-latest # -- Install packages within octave mkdir /usr/local/octavepkg octave pkg prefix /usr/local/octavepkg pkg local_list /usr/local/octavepkg/packages pkg install -local -forge control pkg install -local -forge general pkg install -local -forge image pkg install -local -forge io pkg install -local -forge nan pkg install -local -forge signal pkg install -local -forge statistics pkg install -local -forge struct pkg install -local -forge optim pkg install -local -forge miscellaneous exit # -- Compile QuNex mex files cd /usr/local/qunex/matlab/qx_mri/img/@nimage # -- Prepare files for compilation cp img_read_nifti_mx_octave.cpp img_read_nifti_mx.cpp cp img_save_nifti_mx_octave.cpp img_save_nifti_mx.cpp # -- Compile .mex files within octave octave mkoctfile --mex -lz -std=c++11 img_read_nifti_mx.cpp qx_nifti.c znzlib.c mkoctfile --mex -lz -std=c++11 img_save_nifti_mx.cpp qx_nifti.c znzlib.c exit # -- Remove temporary files rm img_read_nifti_mx.cpp rm img_save_nifti_mx.cpp rm qx_nifti.o rm znzlib.o ``` ### Python libraries ``` bash sudo su pip install numpy pydicom scipy nose sphinx futures -t /usr/local/pylib # -- Setup pylib folder mkdir /usr/local/pylib cd /usr/local/pylib # -- Install nibabel wget https://github.com/downloads/ksubramz/gradunwarp/nibabel-1.2.0.dev.tar.gz tar xvfz nibabel-1.2.0.dev.tar.gz rm nibabel-1.2.0.dev.tar.gz mv nibabel-1.2.0.dev nibabel cd nibabel sudo python setup.py install # -- Install gradunwarp cd /usr/local/pylib wget https://github.com/Washington-University/gradunwarp/archive/v1.1.0.tar.gz tar xvfz v1.1.0.tar.gz rm v1.1.0.tar.gz mv gradunwarp-1.1.0 gradunwarp cd gradunwarp sudo python setup.py install ``` ### Connectome Workbench Download Connectome Workbench from , unzip it and move it to `/Applications`. Run: ``` bash sudo su mkdir /usr/local/workbench ln -s /Applications/workbench/bin_macosx64 /usr/local/workbench/workbench-latest ``` ## 3. Edit the configuration files Add the following lines to `/etc/profile` (and adjust when needed): ``` bash export TOOLS="/usr/local" export FSLFolder="${TOOLS}/fsl/fsl-latest" export FIXICAFolder="${TOOLS}/fsl/fix-latest" export FREESURFERDIR="${TOOLS}/freesurfer/freesurfer-5.3-HCP" export FSDIR53HCP="${TOOLS}/freesurfer/freesurfer-5.3-HCP" export FSDIRLATEST="${TOOLS}/freesurfer/freesurfer-6.0.0" export HCPWBDIR="${TOOLS}/workbench/workbench-latest" export AFNIDIR="${TOOLS}/afni/afni-latest" export DCMNII="${TOOLS}/dcm2niix/dcm2niix-latest" export DICMNII="${TOOLS}/dicm2nii/dicm2nii-latest" export OCTAVEDIR="${TOOLS}/Octave/octave-latest" export OCTAVEPKGDIR="${TOOLS}/octavepkg" export PYLIBDIR="${TOOLS}/pylib" export QUNEXREPO='qunexs' export QUNEXPATH="$TOOLS/$QUNEXREPO" # set up QuNex environment source $QUNEXPATH/env/qunex_environment.sh ```