Amplitude of Low Frequency Fluctuations (ALFF) and fractional ALFF (f/ALFF)

Introduction & Background

Slow fluctuations in activity are a fundamental feature of the resting brain, and their presence is key to determining correlated activity between brain regions and defining resting state networks. The relative magnitude of these fluctuations can differ between brain regions and between subjects, and thus may act as a marker of individual differences or dysfunction. Amplitude of Low Frequency Fluctuations (ALFF) [1] and fractional Amplitude of Low Frequency Fluctuations (f/ALFF) [2] are related measures that quantify the amplitude of these low frequency oscillations (LFOs).

ALFF is defined as the total power within the frequency range between 0.01 and 0.1 Hz, and thus indexes the strength or intensity of LFO. f/ALFF is defined as the power within the low-frequency range (0.01-0.1 Hz) divided by the total power in the entire detectable frequency range, and represents the relative contribution of specific LFO to the whole frequency range [3].

Computation and Analysis Considerations

All computations are performed in a subject’s native space, template space, or both in parallel. After transforming voxel time series frequency information into the power domain, calculation of these measures is relatively simple. ALFF is calculated as the sum of amplitudes within a specific low frequency range. f/ALFF is calculated as a fraction of the sum of amplitudes across the entire frequency range detectable in a given signal. For both measures, amplitudes in subject-level maps are transformed into Z-scores to create standardized subject-level maps. For more detail on how CPAC computes these steps, please see the ALFF and f/ALFF page of the developer documentation.

Though both ALFF and f/ALFF are sensitive mostly to signal from gray matter, ALFF is more prone to noise from physiological sources, particularly near the ventricles and large blood vessels [2][3]. The figure below (from [3]) shows areas in which ALFF shows higher amplitude than f/ALFF, as well as the relative sensitivity of these measures to gray matter.


Both ALFF and f/ALFF show moderate to high test-retest reliability in gray matter regions, but reliability for ALFF tends to be higher than for fALFF [3]. As it is more reliable, ALFF may be more sensitive to differences between groups and individuals. The figure below (also from [3]) shows differences in test-retest reliability as measured by Intraclass Correlation (ICC) [4].


Finally, as these measures require a constant timecourse on which to do frequency and power analyses, they cannot be run on scrubbed data [5] in which volumes with excessive movement have been removed.

Applications and Recommendations

ALFF and f/ALFF have been used to uncover differences in amplitude power both between subjects and between conditions. Zang et al. [1] found that children with ADHD show reduced ALFF amplitude in some brain areas and increased amplitude in others compared to controls, while Yan and colleagues [6] saw increased amplitude in the Default Mode Network during Eyes Open vs. Eyes Closed resting periods. Changes in f/ALFF have also been observed with aging [7].

The increased specificity to the gray matter signal for f/ALFF compared to ALFF may suggest favoring the former, but doing so would come at the cost of reduced test-retest reliability. As such, in order to maximize the reliability across subjects while providing sufficient specificity to examine individual differences, reporting both measures is recommended [3].

Configuring CPAC to Run ALFF and f/ALFF

  1. ALFF / f/ALFF - [Off, On]: Calculate Amplitude of Low Frequency Fluctuations (ALFF) and and fractional ALFF (f/ALFF) for all voxels.

  2. f/ALFF High-Pass Cutoff - [decimal]: Frequency cutoff (in Hz) for the high-pass filter used when calculating f/ALFF.

  3. f/ALFF Low-Pass Cutoff - [decimal]: Frequency cutoff (in Hz) for the low-pass filter used when calculating f/ALFF

Configuration Without the GUI

The following nested key/value pairs will be set to these defaults if not defined in your pipeline configuration YAML.


  # ALFF & f/ALFF
  # Calculate Amplitude of Low Frequency Fluctuations (ALFF) and fractional ALFF (f/ALFF) for all voxels.
  run: On

  # space: Template or Native
  target_space: ['Native']

  # Frequency cutoff (in Hz) for the high-pass filter used when calculating f/ALFF.
  highpass_cutoff: [0.01]

  # Frequency cutoff (in Hz) for the low-pass filter used when calculating f/ALFF
  lowpass_cutoff: [0.1]

Surface-based f/ALFF

New in version 1.8.7.

C-PAC now offers the computation of surface-based ALFF and fALFF. This can be configured under surface_analysis in the pipeline file.


  # Run freesurfer_abcd_preproc to obtain preprocessed T1w for reconall
    run: Off

  # Will run Freesurfer for surface-based analysis. Will output traditional Freesurfer derivatives.
  # If you wish to employ Freesurfer outputs for brain masking or tissue segmentation in the voxel-based pipeline,
  # select those 'Freesurfer-' labeled options further below in anatomical_preproc.

    run_reconall: Off

    # Ingress freesurfer recon-all folder
    ingress_reconall: Off

    # Add extra arguments to recon-all command

  # Run ABCD-HCP post FreeSurfer and fMRISurface pipeline

    run: Off

    subcortical_gray_labels: /opt/dcan-tools/pipeline/global/config/FreeSurferSubcorticalLabelTableLut.txt

    freesurfer_labels: /opt/dcan-tools/pipeline/global/config/FreeSurferAllLut.txt

    surf_atlas_dir: /opt/dcan-tools/pipeline/global/templates/standard_mesh_atlases

    gray_ordinates_dir: /opt/dcan-tools/pipeline/global/templates/Greyordinates

    gray_ordinates_res: 2

    high_res_mesh: 164

    low_res_mesh: 32

    fmri_res: 2

    smooth_fwhm: 2

    run: Off
    surface_parcellation_template: /cpac_templates/Schaefer2018_200Parcels_17Networks_order.dlabel.nii


  # If you have multiple T1w's, you can generate your own run-specific custom
  # T1w template to serve as an intermediate to the standard template for
  # anatomical registration.

  # This runs before the main pipeline as it requires multiple T1w sessions
  # at once.
  run: Off

  # Freesurfer longitudinal template algorithm using FSL FLIRT
  # Method to average the dataset at each iteration of the template creation
  # Options: median, mean or std
  average_method: median

  # Degree of freedom for FLIRT in the template creation
  # Options: 12 (affine), 9 (traditional), 7 (global rescale) or 6 (rigid body)
  dof: 12

  # Interpolation parameter for FLIRT in the template creation
  # Options: trilinear, nearestneighbour, sinc or spline
  interp: trilinear

  # Cost function for FLIRT in the template creation
  # Options: corratio, mutualinfo, normmi, normcorr, leastsq, labeldiff or bbr
  cost: corratio

  # Number of threads used for one run of the template generation algorithm
  thread_pool: 2

  # Threshold of transformation distance to consider that the loop converged
  # (-1 means numpy.finfo(np.float64).eps and is the default)
  convergence_threshold: -1