3dLMEr WARNING: mri_fdrize due to poly function

AFNI version info (AFNI_23.2.04):

Hello AFNI experts

I'm relatively new afni-user. I am noticing some warning messages regarding processing with 0 values using a non-linear approach: poly(Age,2)*Intake*Sex+Batch+(1|Subj). In my laboratory, we conducted an experiment to explore brain differences due to alcohol amount of consumption in rodents (Intake) through a longitudinal approach (Age). We want to explore functional connectivity differences on networks extracted by ICA. Based on previous studies, we think the best approach is to through non-linear modelling, in R, the model we have been applying is by using poly() function, however the 3dLMEr functions is showing me warnings in the contrasts: "WARNING: mri_fdrize: will not process only 0 values (min=20)".

I'm using the following command:

 3dLMEr -prefix ${path}/M4H_${rois}.nii.gz -jobs 20 \
        -model 'poly(Age,2)*Intake*Sex+Batch+(1|Subj)' \
        -qVars 'Age' \
        -gltCode HvC 'Intake : 1*High -1*Ctrl' \
        -gltCode LvC 'Intake : 1*Low -1*Ctrl' \
        -gltCode HvL 'Intake : 1*High -1*Low' \
        -gltCode HvC 'Intake : 1*High -1*Ctrl' \
        -gltCode LvC 'Intake : 1*Low -1*Ctrl' \
        -gltCode HvL 'Intake : 1*High -1*Low' \
        -dataTable @data.txt

When I run this script, I have been getting the following warnings, seems poly function doesn't like to 3dLMEr

++ Smallest FDR q [0 poly(Age, 2) Chi-sq] = 0.0373149
*+ WARNING: Smallest FDR q [1 Intake Chi-sq] = 0.186391 ==> few true single voxel detections
*+ WARNING: Smallest FDR q [2 Sex Chi-sq] = 0.999606 ==> few true single voxel detections
++ Smallest FDR q [3 Batch Chi-sq] = 0.036174
++ Smallest FDR q [4 poly(Age, 2):Intake Chi-sq] = 0.000291465
++ Smallest FDR q [5 poly(Age, 2):Sex Chi-sq] = 0.049503
*+ WARNING: Smallest FDR q [6 Intake:Sex Chi-sq] = 0.999794 ==> few true single voxel detections
++ Smallest FDR q [7 poly(Age, 2):Intake:Sex Chi-sq] = 0.0012293
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [9 HvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [11 LvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [13 HvL Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [15 HvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [17 LvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [19 HvL Z] = 0
[1] "Congratulations! You've got an output ${path}/M4H_fc_dataset_0002.nii.gz"

This is the data structure:

***** Summary information of data structure *****
320 response values
2 levels for factor Group : Alc Ctrl 
3 levels for factor Intake : Ctrl High Low 
6 levels for factor Batch : B1 B2 B3 B4 B5 B6 
2 levels for factor Sex : female male 
320 centered values for numeric variable Age : -34.00625 -34.00625 -34.00625

What i'm doing wrong? and how i could solve this?
I'm still exploring the possibility of using 3dMSS instead. But i'm not sure about how to transform the model we have.

Thank you for the assistance.

Welcome to the AFNI Community!

To provide further clarity, could you share the following information regarding your experiment?

  1. Number of Rodents: How many rodents are included in the experiment?

  2. Factors Intake and Batch:

    • Are the factors Intake and Batch considered between-animal variables or within-animal variables?
  3. Age Values:

    • How many age values are associated with each rodent?
    • What is the range of these age values?

Gang Chen

Thanks for the quick response. The experiment is longitudinal, with 4 MRI scanning sessions (4 time points: Postnatal day ~46, ~69, ~91, ~138), although for histological reasons, some of the rats only have 1 (n=8), 2 (n=16) or only 3 (n=16) scanning sessions. We obtained the data during 3 years in 6 different batches (~18 rats per batch)

  1. Total amount of Rats: 106 (divided in 3 groups based on their alcohol intake: high=20, low=43, Ctrl=43)
  2. Intake = between, Batch = between
  3. Four age values per rat,
    1st time point: 44-48
    2nd time point: 67-70
    3rd time point: 90-92
    4th time point: 132-145

Thanks in advance,

I just realized that I copied the wrong command (errors in the contrasts). This was the code i ran:

 3dLMEr -prefix /scratch/m/mchakrav/jrasgado/sudmex_alcohol_rat/analysis/fmri/Dual_reg/models/M4H_${rois}.nii.gz -jobs 20 \
        -model 'poly(Age,2)*Intake*Sex+Batch+(1|Subj)' \
        -qVars 'Age' \
        -gltCode HvC 'Intake : 1*High -1*Ctrl' \
        -gltCode LvC 'Intake : 1*Low -1*Ctrl' \
        -gltCode HvL 'Intake : 1*High -1*Low' \
        -glfCode HvC_MvF 'Intake : 1*High -1*Ctrl Sex : 1*male -1*female' \
        -glfCode LvC_MvF 'Intake : 1*Low -1*Ctrl Sex : 1*male -1*female' \
        -glfCode HvL_MvF 'Intake : 1*High -1*Low Sex : 1*male -1*female' \
        -dataTable @/scratch/m/mchakrav/jrasgado/sudmex_alcohol_rat/analysis/fmri/code/LME_DR/${rois}.txt

Given potential variations in age effects across rats, consider the following model:

-model 'poly(Age,2)*Intake*Sex+Batch+(poly(Age,2)|Subj)' \

In addition, note that the variable Age is centered using poly(Age,2). Therefore, add the following line to your 3dLMEr script:

-qVarCenters 0

Let us know if this improves the model.

I'm still exploring the possibility of using 3dMSS instead. But i'm not sure about how to transform the model we have.

Pending the results from 3dLMEr, it would be intriguing to explore the smooth spline approach with 3dMSS.

Gang Chen

Thanks for the response

I re-ran the command using the new model:

 3dLMEr -prefix /scratch/m/mchakrav/jrasgado/sudmex_alcohol_rat/analysis/fmri/Dual_reg/models/M4H_${rois}.nii.gz -jobs 25 \
        -model 'poly(Age,2)*Intake*Sex+Batch+(poly(Age,2)|Subj)' \
        -qVars 'Age' \
        -qVarCenters 0 \
	-gltCode HvC 'Intake : 1*High -1*Ctrl' \
	-gltCode LvC 'Intake : 1*Low -1*Ctrl' \
	-gltCode HvL 'Intake : 1*High -1*Low' \
        -glfCode HvC_MvF 'Intake : 1*High -1*Ctrl Sex : 1*male -1*female' \
        -glfCode LvC_MvF 'Intake : 1*Low -1*Ctrl Sex : 1*male -1*female' \
        -glfCode HvL_MvF 'Intake : 1*High -1*Low Sex : 1*male -1*female' \
        -dataTable @/scratch/m/mchakrav/jrasgado/sudmex_alcohol_rat/analysis/fmri/code/LME_DR/${rois}.txt

Data structure:

++++++++++++++++++++++++++++++++++++++++++++++++++++
***** Summary information of data structure *****
320 response values
2 levels for factor Group : Alc Ctrl 
3 levels for factor Intake : Ctrl High Low 
6 levels for factor Batch : B1 B2 B3 B4 B5 B6 
2 levels for factor Sex : female male 
320 centered values for numeric variable Age : 45 45 45 45 45 45 45 45 45 45 45 46 45 45 45 45 46 46 46 44 44 44 47 44 44 44 44 44 45 47 45 45 45 45 45 45 45 45 45 45 45 45 45 45 47 45 45 44 44 44 44 47 44 44 48 45 45 48 45 45 45 48 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 44 44 45 47 46 46 46 45 44 44 47 45 45 44 44 45 45 45 45 45 45 45 45 45 45 68 68 68 68 68 68 68 68 68 68 68 69 68 68 68 68 69 69 69 68 68 68 70 68 68 68 68 68 68 70 68 68 68 69 68 68 68 68 68 68 68 68 68 68 70 69 69 67 70 67 67 70 68 68 70 68 68 68 69 68 68 68 68 68 68 68 68 68 68 68 69 68 68 68 68 68 70 69 69 69 69 70 67 67 68 68 68 68 68 68 90 90 90 90 90 90 90 90 90 90 90 90 91 91 91 91 91 91 90 91 91 91 91 91 91 90 91 91 91 91 91 91 91 91 92 91 91 91 91 91 90 91 91 90 90 90 90 90 91 90 90 90 90 90 90 90 90 90 91 91 91 91 91 92 90 92 91 91 91 90 90 90 90 90 145 145 133 133 132 132 132 132 132 132 132 173 173 173 173 173 173 174 132 174 174 142 142 142 143 145 132 145 145 132 146 132 132 133 132 132 132 132 173 132 173 174 174 174 142 142 132 142 142 145 145 145 146 

Contingency tables of subject distributions among the categorical variables:

***** End of data structure information *****
++++++++++++++++++++++++++++++++++++++++++++++++++++

Range of input data: [-62.697, 73.055]

Results:

++ Smallest FDR q [0 poly(Age, 2) Chi-sq] = 0.0784872
++ Smallest FDR q [1 Intake Chi-sq] = 0.0890712
*+ WARNING: Smallest FDR q [2 Sex Chi-sq] = 0.999806 ==> few true single voxel detections
++ Smallest FDR q [3 Batch Chi-sq] = 0.0276515
++ Smallest FDR q [4 poly(Age, 2):Intake Chi-sq] = 0.0741713
*+ WARNING: Smallest FDR q [5 poly(Age, 2):Sex Chi-sq] = 0.999877 ==> few true single voxel detections
*+ WARNING: Smallest FDR q [6 Intake:Sex Chi-sq] = 0.999725 ==> few true single voxel detections
++ Smallest FDR q [7 poly(Age, 2):Intake:Sex Chi-sq] = 0.00851252
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [9 HvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [11 LvC Z] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [12 HvL] = 0
*+ WARNING: mri_fdrize: will not process only 0 values (min=20)
++ Smallest FDR q [13 HvL Z] = 0
[1] "Congratulations! You've got an output /scratch/m/mchakrav/jrasgado/sudmex_alcohol_rat/analysis/fmri/Dual_reg/models/M4H_fc_dataset_0002.nii.gz"

I still have the same warnings.

Any thoughts?

Thanks,

Do the results seem reasonable to you? Are sub-bricks 8 through 13 all zeros?

Gang Chen

Sorry for the delay to respond this.

I'm not pretty sure how to interpretate it, if the contrast are significant or not given that the model is significant or what the 0 values mean.

Here's the 3dinfo -verb results:

Number of values stored at each pixel = 17
  -- At sub-brick #0 'poly(Age, 2) Chi-sq' datum type is float:            0 to       27.2641
     statcode = fict;  statpar = 2
  -- At sub-brick #1 'Intake Chi-sq' datum type is float:            0 to       26.2473
     statcode = fict;  statpar = 2
  -- At sub-brick #2 'Sex Chi-sq' datum type is float:            0 to       17.2315
     statcode = fict;  statpar = 2
  -- At sub-brick #3 'Batch Chi-sq' datum type is float:            0 to       29.1019
     statcode = fict;  statpar = 2
  -- At sub-brick #4 'poly(Age, 2):Intake Chi-sq' datum type is float:            0 to       27.0271
     statcode = fict;  statpar = 2
  -- At sub-brick #5 'poly(Age, 2):Sex Chi-sq' datum type is float:            0 to       21.8046
     statcode = fict;  statpar = 2
  -- At sub-brick #6 'Intake:Sex Chi-sq' datum type is float:            0 to       20.6248
     statcode = fict;  statpar = 2
  -- At sub-brick #7 'poly(Age, 2):Intake:Sex Chi-sq' datum type is float:            0 to       32.4328
     statcode = fict;  statpar = 2
  -- At sub-brick #8 'HvC' datum type is float:            0 to             0
  -- At sub-brick #9 'HvC Z' datum type is float:            0 to             0
     statcode = fizt
  -- At sub-brick #10 'LvC' datum type is float:            0 to             0
  -- At sub-brick #11 'LvC Z' datum type is float:            0 to             0
     statcode = fict;  statpar = 2
  -- At sub-brick #12 'HvL' datum type is float:            0 to             0
     statcode = fict;  statpar = 2
  -- At sub-brick #13 'HvL Z' datum type is float:            0 to             0
     statcode = fict;  statpar = 2
  -- At sub-brick #14 'HvC_MvF Chi-sq' datum type is float:            0 to             0
  -- At sub-brick #15 'LvC_MvF Chi-sq' datum type is float:            0 to             0
  -- At sub-brick #16 'HvL_MvF Chi-sq' datum type is float:            0 to             0

Thanks for your quick responses.