physimals / oxford_asl

A command line tool for quantification of perfusion from ASL data
Apache License 2.0
8 stars 7 forks source link

FSL 6.0.3 compatibility #8

Closed neurolabusc closed 1 year ago

neurolabusc commented 4 years ago

I upgraded my MacOS and Ubuntu systems to FSL 6.0.3. The 'asl_gui' tool included with that install as well as from this repository are no longer functional. Specifically, I am never shown the simple subtraction image that ensures the control-label pairing order is correct. Below is a sample of the error that is generated whenever the 'update' button is selected.

Traceback (most recent call last):
  File "/usr/local/fsl/python/asl/gui/run_box.py", line 183, in get_preview_data
    img = nib.load(meanfile)
  File "/usr/local/lib/python2.7/site-packages/nibabel/loadsave.py", line 42, in load
    raise FileNotFoundError("No such file or no access: '%s'" % filename)
FileNotFoundError: No such file or no access: '/var/folders/c1/dtx9k_rj1mx5c5c3l92gqmk00000gn/T/tmpk3J8KG/mean.nii.gz'

I notice there have been no responses to Github issues for a while,. Is this tool still being maintained, and if not can any one suggest the successor?

mcraig-ibme commented 4 years ago

HI, apologies for the lack of response, I have not been getting GitHub notifications for issues for some time now!

I will investigate this on FSL 6.0.3 - my first thought is an issue with asl_file - are you able to see if the asl_file program exists and is executable in FSL 6.0.3?

mcraig-ibme commented 4 years ago

I've just tried on a freshly installed FSL 6.0.3 using the multi-PLD data from the FSL course and didn't get the same error.

There is a known issue that sometimes the preview does not display until you resize the window slightly - but this should not produce the error you're seeing above.

Could you try the following:

  1. Load the multi-PLD ASL data from https://fsl.fmrib.ox.ac.uk/fslcourse/
  2. Set the number of PLDs to 6
  3. Click 'Update' on the preview window
  4. Resize the GUI window slightly if no preview appears

Thanks

neurolabusc commented 4 years ago

Thanks for the quick response.

I have the same issue with ASL data for practical 8 . I have the same issue with MacOS (10.14.6) where I upgraded an old version of FSL and a clean install of both the Ubuntu 20.04 daily OS and the FSL 6.0.3. Resizing the window does not help. I am attaching a simple Python script that computes the subtraction image internally using RAM. This approach might save having to save a temp file to disk.

As an aside, when running the fsl_anat/oxford_asl using a default install of Ubuntu 20.04, the user will get a lot of errors as some of the scripts use #!/usr/bin/env python. By default, Ubuntu 20.04 provides python3 only, and does set 'python' to avoid issues with python2 scripts. With the current fsl 6.0.3 release, users will need to create a symbolic link for python -> python3 (which seems to work fine). Another solution that is adopted with other fsl scripts including asl_gui is to use #!/usr/bin/env fslpythonw. Of particular concern, while warnings are generated if python is not set, the scripts still run, albeit missing some of the expected files. Therefore, unobservant users may not realize that the results are not complete.

asl_gui

#!/usr/bin/env python3

import sys
import os
import numpy as np
import nibabel as nib

def odd_minus_even_image (fnm, save_img = True):
    """Detetermine order of contrast and label images

        Contrast images: both blood and static are bright
        Label images: blood is dark, static is bright
        So mean of C-L image should be >0

        Some ASL sequences acquire CLCLCL... others LCLCLC

    Parameters
    ----------
    fnm : str
        NIfTI image for subtraction

    save_img : boolean
        If True, saves contrast image to disk

    Returns True if order is CLCL... and False if order is LCLC...

    """

    nii = nib.load(fnm)
    img = nii.get_fdata()
    nvol = img.shape[3]
    if nvol % 2 != 0:
        sys.exit("Error: '%s' has an odd number of volumes (%d)" % (fnm, nvol))
    print("%s has an even number of volumes (%d)" % (fnm, nvol))
    imgA = np.zeros((img.shape[0], img.shape[1], img.shape[2]))
    imgB = np.zeros((img.shape[0], img.shape[1], img.shape[2]))
    for vol in range(nvol):
        if vol % 2 == 0:
            #print("1,3... (%d)" % (vol))
            imgA += img[:,:,:,vol]
        else:
            #print("2,4,... (%d)" % (vol)) 
            imgB += img[:,:,:,vol]
    imgAsubB = imgA - imgB
    print('Blood dark in LABEL, bright in CONTROL')
    orderCLCL = True
    if np.mean(imgAsubB) > 0.0:
        print(' Order CLCLCL...')
    else:
        print(' Order LCLCLCL...')
        orderCLCL = False
    niiAsubB = nib.Nifti1Image(imgAsubB, nii.get_sform(), nii.header)
    outnm = os.path.dirname(os.path.abspath(fnm)) + os.path.sep + 'AsubB' + os.path.basename(fnm)
    nib.save(niiAsubB, outnm)
    return orderCLCL

if __name__ == '__main__':
    """Detetermine order of contrast and label images

        Contrast images: both blood and static are bright
        Label images: blood is dark, static is bright
        So mean of C-L image should be >0

        Some ASL sequences acquire CLCLCL... others LCLCLC

    Parameters
    ----------
    fnm : str
        NIfTI image for subtraction

    """

    if len(sys.argv) < 2:
        sys.exit('NIfTI filename required')      
    fnm = sys.argv[1] 
    odd_minus_even_image (fnm, False)
mcraig-ibme commented 4 years ago

Thanks - you're right it's pretty easy to get the averaged subtracted image manually, but I'm keen to make sure asl_file is functioning out of the box. Can you try the following on some ASL data:

asl_file --data= --ntis= --mean=mean.nii.gz --iaf=tc --diff

It should generate mean.nii.gz containing the mean differenced image.

mcraig-ibme commented 4 years ago

I'm also interested in your comment about scripts using #!/usr/bin/env python. Executable python scripts in FSL should reference fslpython directly - which scripts in particular have you found which do not do this? asl_gui is the only executable Python script in oxford_asl as it stands now and should be pointing at fslpythonw.

neurolabusc commented 4 years ago

This woks fine, so perhaps the issue is with temporary files and folders.

asl_file --data=mpld_asltc.nii.gz --ntis=1 --mean=mean.nii.gz --iaf=tc --diff
Number of voxels is:98304
Number of repeats in data is:48
Outputting ASL data mean at each TI
Done.
neurolabusc commented 4 years ago

It seems the issue with /usr/bin/env: 'python': No such file or directory is seen when a user runs oxford_asl with output from fsl_anat. For example, consider

fsl_anat -i "/home/chris/Ref/In/rrT1.nii" -o /home/chris/Ref/Out6/struc
oxford_asl -i "/home/chris/Ref/Out6/asl_3_pasl_2d.nii"  --ibf=rpt --iaf=tc --tis 1.8, --bolus 0.8 --slicedt 0.046579 --fslanat="/home/chris/Ref/Out6/struc.anat" -c "/home/chris/Ref/Out6/m0_3_pasl_2d.nii" --tr 3.1 --cgain 1.00 --cmethod voxel  --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/chris/Ref/Out6"

In the calls below fsl_anat runs without errors. The first error from oxford_asl occurs regardless of whether or not I have a sym-link for python -> python3. It appears the tmp folder has a file named asl2struct.mat but not one named asl2struc.mat.

Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2struc.mat
Cannot read input-matrix

but this is followed by a host of additional errors.

$ oxford_asl -i "/home/chris/Ref/Out6/asl_3_pasl_2d.nii"  --ibf=rpt --iaf=tc --tis 1.8, --bolus 0.8 --slicedt 0.046579 --fslanat="/home/chris/Ref/Out6/struc.anat" -c "/home/chris/Ref/Out6/m0_3_pasl_2d.nii" --tr 3.1 --cgain 1.00 --cmethod voxel  --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/chris/Ref/Out6"
OXFORD_ASL - running
Version: v4.0.6-dirty Thu Jul 11 15:08:11 2019
Saving results in natve (ASL aquisition) space to /home/chris/Ref/Out6/native_space
Saving results in structural space to /home/chris/Ref/Out6/struct_space
Pre-processing
Motion Correction
Number of voxels is:103680
Number of repeats in data is:42
Outputting ASL data mean at each TI
Done.
Number of inversion times: 1
Number of timepoints in data:       42
Number of repeats in data: 42
1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8
Performing registration
ASL_REG
Input file is: /tmp/fsl_rkwzXD_ox_asl/meanasl_brain
Registration MAIN stage (FLIRT)
Tidying up
ASL_REG - Done.
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2struc.mat
Cannot read input-matrix
Creating mask
Setting up BASIL
Instructing BASIL to use automated spatial smoothing
Calling BASIL on data - conventional perusion image
Creating output directory: /tmp/fsl_rkwzXD_ox_asl/init/basil
here
STEP 1: VB - Tissue
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/init/basil/step1/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/init/basil/step1/logfile
STEP 2: Spatial VB Tissue - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/init/basil/step2/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/init/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_rkwzXD_ox_asl/init/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/init/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/init/basil/step2/finalMVN mean value=533204
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/init/basil/step2/var_ftiss
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/init/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/init/basil/step2/finalMVN mean value=533204
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/init/basil/step2/var_delttiss
Done.
Creating output directory: /tmp/fsl_rkwzXD_ox_asl/basil
here
STEP 1: VB - Tissue - init with STEP 0
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/basil/step1/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/basil/step1/logfile
STEP 2: Spatial VB Tissue - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/basil/step2/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_rkwzXD_ox_asl/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/basil/step2/finalMVN mean value=0.676709
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/basil/step2/var_ftiss
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/basil/step2/finalMVN mean value=0.676709
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/basil/step2/var_delttiss
Done.
Performing final registration
Performing registration
ASL_REG
Input file is: /tmp/fsl_rkwzXD_ox_asl/ftiss
Registration FINAL stage (BBR)
'/tmp/fsl_rkwzXD_ox_asl/mask.nii' and '/tmp/fsl_rkwzXD_ox_asl/mask.nii' are the same file
/usr/bin/env: 'python': No such file or directory
cp: missing destination file operand after '/tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg.nii'
Try 'cp --help' for more information.
Image Exception : #63 :: No image files match: /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
/usr/local/fsl/bin/epi_reg: line 329: 320801 Aborted                 (core dumped) $FSLDIR/bin/fslmaths ${vout}_fast_wmseg -edge -bin -mas ${vout}_fast_wmseg ${vout}_fast_wmedge
Running BBR
Image Exception : #63 :: No image files match: /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
Image Exception : #22 :: Failed to read volume /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
Error : No image files match: /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
Failed to read volume /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
Error : No image files match: /tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmseg
Could not open matrix file /tmp/fsl_3AzH9Q_asl_reg/low2high_final.mat
/usr/local/fsl/bin/epi_reg: line 399: 320805 Segmentation fault      (core dumped) $FSLDIR/bin/applywarp -i ${vepi} -r ${vrefhead} -o ${vout} --premat=${vout}.mat --interp=spline
BBR end
Saving FINAL output
cp: cannot stat '/tmp/fsl_3AzH9Q_asl_reg/low2high_final.mat': No such file or directory
Could not find a supported file with prefix "/tmp/fsl_3AzH9Q_asl_reg/low2high_final"
'/tmp/fsl_rkwzXD_ox_asl/tissseg.nii' and '/tmp/fsl_rkwzXD_ox_asl/tissseg.nii' are the same file
Could not find a supported file with prefix "/tmp/fsl_3AzH9Q_asl_reg/low2high_final_fast_wmedge"
Tidying up
ASL_REG - Done.
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2struc.mat
Cannot read input-matrix
Number of voxels is:27758
Number of repeats in data is:1
Start extrapolation!
Done.
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Image Exception : #63 :: No image files match: /home/chris/Ref/Out6/std_space///perfusion
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /home/chris/Ref/Out6/std_space///perfusion
/usr/local/fsl/bin/oxford_asl: line 304: 320971 Aborted                 (core dumped) fslmaths $outdir/std_space/$subdir/$parname -div $normval $outdir/std_space/$subdir/${parname}_norm
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Image Exception : #63 :: No image files match: /home/chris/Ref/Out6/std_space///perfusion_var
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /home/chris/Ref/Out6/std_space///perfusion_var
/usr/local/fsl/bin/oxford_asl: line 328: 320992 Aborted                 (core dumped) fslmaths $outdir/std_space/$subdir/${parname}_var -div $normval $outdir/std_space/$subdir/${parname}_var_norm
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
/usr/local/fsl/bin/oxford_asl: line 2197: [: argument expected
Could not find a supported file with prefix "/home/chris/Ref/Out6/native_space/sensitivity"
Creating output directory: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil
here
STEP 1: VB - Tissue
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step1/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step1/logfile
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp mean value=1.49824
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp_ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp mean value=1.49824
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/gmcbf_init'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: valim=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/gmcbf_init mean value=7.32716
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp mean value=0.274
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/wmcbf_init'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: valim=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/wmcbf_init mean value=2.93086
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/temp
STEP 2: Spatial VB Tissue PVE - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/logfile
100%

Final logfile: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_ftiss
Calculating variance for: fwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_fwm
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_delttiss
Calculating variance for: deltwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_deltwm
Calculating variance for: pvgm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_pvgm
Calculating variance for: pvwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_rkwzXD_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_rkwzXD_ox_asl/pvcorr/basil/step2/var_pvwm
Done.
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Image Exception : #63 :: No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion
/usr/local/fsl/bin/oxford_asl: line 304: 321200 Aborted                 (core dumped) fslmaths $outdir/std_space/$subdir/$parname -div $normval $outdir/std_space/$subdir/${parname}_norm
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Image Exception : #63 :: No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion_wm
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion_wm
/usr/local/fsl/bin/oxford_asl: line 304: 321217 Aborted                 (core dumped) fslmaths $outdir/std_space/$subdir/$parname -div $normval $outdir/std_space/$subdir/${parname}_norm
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Image Exception : #63 :: No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion_var
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /home/chris/Ref/Out6/std_space/pvcorr/perfusion_var
/usr/local/fsl/bin/oxford_asl: line 328: 321240 Aborted                 (core dumped) fslmaths $outdir/std_space/$subdir/${parname}_var -div $normval $outdir/std_space/$subdir/${parname}_var_norm
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Could not open matrix file /tmp/fsl_rkwzXD_ox_asl/asl2std.mat
matrix multiplication: incompatible matrix dimensions: 4x4 and 0x0
Output is /home/chris/Ref/Out6/
OXFORD_ASL - done.
mcraig-ibme commented 4 years ago

Many thanks for the detailed account - this will be really useful in tracking down what's going on. I'll go through the same process and see if I can figure it out.

neurolabusc commented 4 years ago

changing asl2struc.mat to read asl2struct.mat in this line of code

  convert_xfm -omat $tempdir/asl2std.mat -concat $trans $tempdir/asl2struc.mat

allows a reasonable result for a system where python -> python3. However, if an executable named python does not exist, one gets the following cascade with the first error /usr/bin/env: 'python': No such file or directory:

$ oxford_asl -i "/home/chris/Ref/Out6/asl_3_pasl_2d.nii"  --ibf=rpt --iaf=tc --tis 1.8, --bolus 0.8 --slicedt 0.046579 --fslanat="/home/chris/Ref/Out6/struc.anat" -c "/home/chris/Ref/Out6/m0_3_pasl_2d.nii" --tr 3.1 --cgain 1.00 --cmethod voxel  --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/chris/Ref/Out6"
OXFORD_ASL - running
Version: v4.0.6-dirty Thu Jul 11 15:08:11 2019
Saving results in natve (ASL aquisition) space to /home/chris/Ref/Out6/native_space
Saving results in structural space to /home/chris/Ref/Out6/struct_space
Pre-processing
Motion Correction
Number of voxels is:103680
Number of repeats in data is:42
Outputting ASL data mean at each TI
Done.
Number of inversion times: 1
Number of timepoints in data:       42
Number of repeats in data: 42
1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8
Performing registration
ASL_REG
Input file is: /tmp/fsl_BwcaWg_ox_asl/meanasl_brain
Registration MAIN stage (FLIRT)
Tidying up
ASL_REG - Done.
Creating mask
Setting up BASIL
Instructing BASIL to use automated spatial smoothing
Calling BASIL on data - conventional perusion image
Creating output directory: /tmp/fsl_BwcaWg_ox_asl/init/basil
here
STEP 1: VB - Tissue
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/init/basil/step1/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/init/basil/step1/logfile
STEP 2: Spatial VB Tissue - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/init/basil/step2/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/init/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_BwcaWg_ox_asl/init/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/init/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/init/basil/step2/finalMVN mean value=533204
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/init/basil/step2/var_ftiss
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/init/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/init/basil/step2/finalMVN mean value=533204
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/init/basil/step2/var_delttiss
Done.
Creating output directory: /tmp/fsl_BwcaWg_ox_asl/basil
here
STEP 1: VB - Tissue - init with STEP 0
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/basil/step1/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/basil/step1/logfile
STEP 2: Spatial VB Tissue - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/basil/step2/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_BwcaWg_ox_asl/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/basil/step2/finalMVN mean value=0.676709
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/basil/step2/var_ftiss
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=10
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/basil/step2/finalMVN mean value=0.676709
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/basil/step2/var_delttiss
Done.
Performing final registration
Performing registration
ASL_REG
Input file is: /tmp/fsl_BwcaWg_ox_asl/ftiss
Registration FINAL stage (BBR)
'/tmp/fsl_BwcaWg_ox_asl/mask.nii' and '/tmp/fsl_BwcaWg_ox_asl/mask.nii' are the same file
/usr/bin/env: 'python': No such file or directory
cp: missing destination file operand after '/tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg.nii'
Try 'cp --help' for more information.
Image Exception : #63 :: No image files match: /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
terminate called after throwing an instance of 'std::runtime_error'
  what():  No image files match: /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
/usr/local/fsl/bin/epi_reg: line 329: 335751 Aborted                 (core dumped) $FSLDIR/bin/fslmaths ${vout}_fast_wmseg -edge -bin -mas ${vout}_fast_wmseg ${vout}_fast_wmedge
Running BBR
Image Exception : #63 :: No image files match: /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
Image Exception : #22 :: Failed to read volume /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
Error : No image files match: /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
Failed to read volume /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
Error : No image files match: /tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmseg
Could not open matrix file /tmp/fsl_RELHj9_asl_reg/low2high_final.mat
/usr/local/fsl/bin/epi_reg: line 399: 335755 Segmentation fault      (core dumped) $FSLDIR/bin/applywarp -i ${vepi} -r ${vrefhead} -o ${vout} --premat=${vout}.mat --interp=spline
BBR end
Saving FINAL output
cp: cannot stat '/tmp/fsl_RELHj9_asl_reg/low2high_final.mat': No such file or directory
Could not find a supported file with prefix "/tmp/fsl_RELHj9_asl_reg/low2high_final"
'/tmp/fsl_BwcaWg_ox_asl/tissseg.nii' and '/tmp/fsl_BwcaWg_ox_asl/tissseg.nii' are the same file
Could not find a supported file with prefix "/tmp/fsl_RELHj9_asl_reg/low2high_final_fast_wmedge"
Tidying up
ASL_REG - Done.
Number of voxels is:27758
Number of repeats in data is:1
Start extrapolation!
Done.
/usr/local/fsl/bin/oxford_asl: line 2197: [: argument expected
Could not find a supported file with prefix "/home/chris/Ref/Out6/native_space/sensitivity"
Creating output directory: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil
here
STEP 1: VB - Tissue
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step1/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step1/logfile
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp mean value=1.49824
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp_ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp mean value=1.49824
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/gmcbf_init'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: valim=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/gmcbf_init mean value=7.32716
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp mean value=0.274
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/wmcbf_init'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: valim=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/wmcbf_init mean value=2.93086
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/temp
STEP 2: Spatial VB Tissue PVE - init with STEP 1
----------------------
Welcome to FABBER v4.0.5-dirty
----------------------
Last commit: Thu Jul 11 14:55:43 2019
Logfile started: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/logfile
100%

Final logfile: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/logfile
End.
Fabber variance calculator
Working in /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2
Calculating variance for: ftiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_ftiss
Calculating variance for: fwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_fwm
Calculating variance for: delttiss
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_delttiss
Calculating variance for: deltwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_deltwm
Calculating variance for: pvgm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_pvgm
Calculating variance for: pvwm
FABBER: MVNtool
FabberRunDataNewimage::Loading mask data from '/tmp/fsl_BwcaWg_ox_asl/mask'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=1
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=1 sec
FabberRunDataNewimage::Intents: 0, 0, 0, 0
FabberRunDataNewimage::Setting coordinates from extent
FabberRunDataNewimage::Loading data from '/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN'
FabberRunDataNewimage::Dimensions: x=72, y=72, z=20, vols=36
FabberRunDataNewimage::Voxel size: x=3mm, y=3mm, z=6mm, TR=3.1 sec
FabberRunDataNewimage::Intents: 1005, 0, 0, 0
FabberRunDataNewimage::Applying mask to data...
FabberRunData::GetVoxelData: input=/tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/finalMVN mean value=0.653131
FabberRunDataNewimage::Saving to nifti: /tmp/fsl_BwcaWg_ox_asl/pvcorr/basil/step2/var_pvwm
Done.
Output is /home/chris/Ref/Out6/
OXFORD_ASL - done.
neurolabusc commented 4 years ago

Fixing the first line (e.g. to #!/bin/env fslpythonw) of the following files allows oxford_asl to run on machines where python is not defined:

${FSLDIR}/bin/fsl_abspath
${FSLDIR}/python/asl/reg.py
${FSLDIR}/python/asl/fslwrap.py
${FSLDIR}/python/asl/fslhelpers.py

Regardless of whether python is defined, the bash script oxford_asl has an issue if the user does not explicitly specify a mask. The error is

/usr/local/fsl/bin/oxford_asl: line 2160: [: argument expected

I believe the intention is to use the name "mask" if the variable $mask is not set.Therefore, the fix is to change

### Partial Volume Correction BASIL

to read

if [ -z "$mask" ]; then
      echo "\$mask is empty"
      mask=mask
fi
### Partial Volume Correction BASIL
neurolabusc commented 4 years ago

My original issue can be replicated by changing the FSL environment variable from the default NIFTI_GZ to any other value. For example, in my case

export FSLOUTPUTTYPE=NIFTI

prior to running asl_gui.

You can fix this by changing run_box.py. Specifically, changing the line

            meanfile = "%s/mean.nii.gz" % tempdir

to read

            meanfile = "%s/mean.nii.gz" % tempdir
            if not os.path.exists(meanfile):
                meanfile = "%s/mean.nii" % tempdir
            if not os.path.exists(meanfile):
                meanfile = "%s/mean.nii.gz" % tempdir
                print('Odd FSLOUTPUTTYPE? Unable to find '+meanfile)

Alternatively, it might be worth considering a more global way to detect FSL's image name extension. In my case, the benefit of FSLOUTPUTTYPE=NIFTI is massive. With modern GPUs the CUDA version of probtrackx is rate-limited by the CPU's ability to feed the GPUs with image data (a single core of the CPU runs at 100%, while the GTX 1080 Ti averages ~28%). For our scripts, the entire DWI stage of processing is x1.8 faster if we use FSLOUTPUTTYPE=NIFTI instead of FSLOUTPUTTYPE=NIFTI_GZ.

Once this change is made, we can close the issue.

mcraig-ibme commented 4 years ago

I've just pushed a fix to handle FSLOUTPUTTYPE=NIFTI, similar to your suggestion.

I'm a little confused about a couple of the other issues:

  1. For the mask issue could you let me know how you're reproducing this and which version of oxford_asl it occurs in (stock FSL 6.0.3 or the latest GitHub code as they differ in this part of the script). This section of the code is designed to re-register the auto-generated mask based on the final stage registration, which is important for PVC, but only if it was auto-generated and not specified by the user (the latter condition is a more recent fix and is not in FSL 6.0.3). Oxford_asl should definitely be fine without a user-specified mask- this is the usual way to run it.

  2. For the #!/bin/env python issue, I don't think the files in $FSLDIR/python/asl should cause a problem because these files should not be being treated as executables (in fact I'm not sure they're used at all - they were the preliminary steps to a better FSL abstraction but I stopped development in favour of using fslpy which is the official (and better) library. Really these files don't need a #! at all and could potentially be deleted.

The fsl_abspath program is an issue and I will need to direct that to the core FSL team as it's not part of oxford_asl (I found a couple of others that are similar too).

I'll wait to hear back from you on these, and I may at that point close this issue and maybe open a new one for the mask error.

Thanks again for all the detailed debugging.

neurolabusc commented 4 years ago

I have been trying to use the version with FSL 6.0.3 (which is what is installed on our supercomputer). Here are sample images and a simple Matlab script. I am happy to adapt the script to Python if it helps. It simply reads the json files created by dcm2niix and set the appropriate values. It also separates the initial M=0 volume from sequences that insert the M=0 at the start of the series prior to the Control/Label pairs.

I would be grateful for any other advice you can provide. The data is from my own brain, so happy to share.

The goal would be a way to autodetect common ASL sequences and set the ASL parameters correctly. This of course could be implemented in asl_gui where the values would be auto-populated when a user selects a NIfTI volume with a compatible JSON file. ========= 20_jw_tgse_PCASL_singleShot_6PLDs_8Averages.nii :: jw_tgse_VEPCASL

fsl_anat -i "/home/c/asl/In/T1.nii" -o /home/c/asl/Out1/struc oxford_asl -i "/home/c/asl/In/20_jw_tgse_PCASL_singleShot_6PLDs_8Averages.nii" --casl --ibf=tis --iaf=tc --tis 0.95,1.2,1.45,1.7,1.95,2.2 --bolus 0.7 --fslanat="/home/c/asl/Out1/struc.anat" --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/c/asl/Out1"

========= 11_pasl_3d.nii :: tgse_pasl

fsl_anat -i "/home/c/asl/In/T1.nii" -o /home/c/asl/Out2/struc oxford_asl -i "/home/c/asl/In/11_pasl_3d.nii" --ibf=rpt --iaf=ct --tis 2.69, --bolus 0.7 --fslanat="/home/c/asl/Out2/struc.anat" -c "asl_3d_m0_13.nii" --tr 3.6 --cgain 1.00 --cmethod voxel --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/c/asl/Out2" ========= 9_pcasl_2d.nii :: ep2d_pcasl_ve11c

fsl_anat -i "/home/c/asl/In/T1.nii" -o /home/c/asl/Out3/struc oxford_asl -i "/home/c/asl/In/9_pcasl_2d.nii" --casl --ibf=rpt --iaf=tc --tis 1.717, --bolus 1.517 --slicedt 0.038947 --fslanat="/home/c/asl/Out3/struc.anat" --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/c/asl/Out3"

========= 3_pasl_2d.nii :: ep2d_pasl

fsl_anat -i "/home/c/asl/In/T1.nii" -o /home/c/asl/Out4/struc oxford_asl -i "/home/c/asl/Out4/asl_3_pasl_2d.nii" --ibf=rpt --iaf=tc --tis 1.8, --bolus 0.8 --slicedt 0.046579 --fslanat="/home/c/asl/Out4/struc.anat" -c "/home/c/asl/Out4/m0_3_pasl_2d.nii" --tr 3.1 --cgain 1.00 --cmethod voxel --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/c/asl/Out4"

========= 11_to_ep2d_PCASL.nii :: ep2d_VEPCASL

fsl_anat -i "/home/c/asl/In/T1.nii" -o /home/c/asl/Out5/struc oxford_asl -i "/home/c/asl/Out5/asl_11_to_ep2d_PCASL.nii" --casl --ibf=rpt --iaf=tc --tis 0.95,1.2,1.45,1.7,1.95,2.2 --bolus 0.7 --slicedt 0.046522 --fslanat="/home/c/asl/Out5/struc.anat" -c "/home/c/asl/Out5/m0_11_to_ep2d_PCASL.nii" --tr 4.1 --cgain 1.00 --cmethod voxel --wp --t1b 1.65 --alpha 0.85 --fixbolus --spatial --artoff --pvcorr --mc -o "/home/c/asl/Out5"

mcraig-ibme commented 4 years ago

Ok, can't believe I didn't spot it sooner - it's missing quotes round $mask which was already fixed in GitHub but isn't in FSL 6.0.3.

You can manually patch it by changing the relevant line to:

if [ -f $tempdir/struc_bet.* -a -z "$mask" ]; then

(i.e. $mask -> "$mask")

neurolabusc commented 4 years ago

Thanks. Can you fix the typo asl2struc.mat-> asl2struc.matand I can close this issue. convert_xfm -omat $tempdir/asl2std.mat -concat $trans $tempdir/asl2struc.mat

mcraig-ibme commented 4 years ago

Ok, this has been fixed.

mcraig-ibme commented 4 years ago

Marked as fixed, will close when released into FSL (hopefully 6.0.4)