% Matlab Script for gPPI  fMRI data using SPM12
% gPPI TOOLBOX (A Generalized Form of Context-Dependent Psychophysiological
% Interactions from DONALD G MCLAREN, PhD) must be installed
% in the folder must be the estimated 1st level SPM.mat file

% Marko Rajkovic, October 2021

function PS_Vis_gPPI_firstlvl_age_effects_analyses(resultsDir, firstlvlResDirFull, gPPIResDir, gPPISubDir, con_imageDir, subjects_full, subjects_naming_full)
    for i=1:length(subjects_full)
    
        disp(['Subject: ' subjects_full{i}]);

        mkdir(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'L_HCpost_-24_-37_0', filesep, 'gPPI_jobs'));  

        clear P

        path_to_SPM = [firstlvlResDirFull, subjects_full{i}, ];

        path_to_VOI = [firstlvlResDirFull, subjects_full{i}, 'VOI_Vis_Interact_L_HCpost_-24_-37_0_1.mat'];

        outputDir = [resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'L_HCpost_-24_-37_0']; 
        
        gPPI_con_images = [resultsDir, gPPIResDir, con_imageDir, 'Vis_Interact', filesep, 'L_HCpost_-24_-37_0']; 
        
        P.subject=subjects_naming_full{i};
        P.directory=path_to_SPM;                        
        P.VOI=path_to_VOI;                                
                                                            
        P.Region='left_posterior_parahippocampal_gyrus';                
        P.Estimate=1;                                             
        P.contrast=0;                                          
        P.Tasks={'1' 'aud_diff' 'aud_lure' 'aud_same' 'vis_diff' 'vis_lure' 'vis_same' 'x_False_Response'};
        P.Weights=[];                                      
        P.analysis='psy';                                  
        P.method='cond';                                    
        P.CompContrasts=1;                                  
        P.Weighted=0;
        P.ConcatR=0;
        P.preservevarcorr=0;
        P.outdir=outputDir;
        P.GroupDir=gPPI_con_images;
        %%
        %Contrast
        P.Contrasts(1).left={'vis_lure'};
        P.Contrasts(1).right={'vis_diff' 'vis_same'};
        P.Contrasts(1).STAT='T';
        P.Contrasts(1).Weighted=0;                         
        P.Contrasts(1).MinEvents=5;
        P.Contrasts(1).name='PS_Vis_Interaction';

        save(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'L_HCpost_-24_-37_0', filesep, 'gPPI_jobs', filesep, 'gPPI_on_L_HCpost_-24_-37_0_X_PS_Vis_Interaction'), 'P');
        cd(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'L_HCpost_-24_-37_0', filesep, 'gPPI_jobs'));
        PPPI(P);
    end
    %%
    for i=1:length(subjects_full)
    
        disp(['Subject: ' subjects_full{i}]);

        mkdir(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_HCpost_27_-34_-4', filesep, 'gPPI_jobs'));  

        clear P

        path_to_SPM = [firstlvlResDirFull, subjects_full{i}];

        path_to_VOI = [firstlvlResDirFull, subjects_full{i}, 'VOI_Vis_Interact_R_HCpost_27_-34_-4_1.mat'];

        outputDir = [resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_HCpost_27_-34_-4']; 
        
        
        gPPI_con_images = [resultsDir, gPPIResDir, con_imageDir, 'Vis_Interact', filesep, 'R_HCpost_27_-34_-4'];  

        P.subject=subjects_naming_full{i};
        P.directory=path_to_SPM;                 
        P.VOI=path_to_VOI;                            
                                                    
        P.Region='right_posterior_parahippocampal_gyrus';                 
        P.Estimate=1;                                     
        P.contrast=0;                                    
        P.Tasks={'1' 'aud_diff' 'aud_lure' 'aud_same' 'vis_diff' 'vis_lure' 'vis_same' 'x_False_Response'};
        P.Weights=[];                               
        P.analysis='psy';                           
        P.method='cond';                            
        P.CompContrasts=1;                          
        P.Weighted=0;
        P.ConcatR=0;
        P.preservevarcorr=0;
        P.outdir=outputDir;
        P.GroupDir=gPPI_con_images;
        %%
        %Contrast
        P.Contrasts(1).left={'vis_lure'};
        P.Contrasts(1).right={'vis_diff' 'vis_same'};
        P.Contrasts(1).STAT='T';
        P.Contrasts(1).Weighted=0;                  
        P.Contrasts(1).MinEvents=5;
        P.Contrasts(1).name='PS_Vis_Interaction';

        save(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_HCpost_27_-34_-4', filesep, 'gPPI_jobs', filesep, 'gPPI_on_L_R_HCpost_27_-34_-4_1_X_PS_Vis_Interaction'), 'P');
        cd(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_HCpost_27_-34_-4', filesep, 'gPPI_jobs'));
        PPPI(P);
    end
        %%
    for i=1:length(subjects_full)
    
        disp(['Subject: ' subjects_full{i}]);

        mkdir(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_PreSMA_10_20_44', filesep, 'gPPI_jobs'));  

        clear P

        path_to_SPM = [firstlvlResDirFull, subjects_full{i}];

        path_to_VOI = [firstlvlResDirFull, subjects_full{i}, 'VOI_Aud_Interact_R_PreSMA_10_20_44_1.mat'];

        outputDir = [resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_PreSMA_10_20_44']; 
       
        
        gPPI_con_images = [resultsDir, gPPIResDir, con_imageDir, 'Aud_Interact', filesep, 'R_PreSMA_10_20_44'];  

        P.subject=subjects_naming_full{i};
        P.directory=path_to_SPM;                      
        P.VOI=path_to_VOI;                            
                                                      
        P.Region='right_pre_supplementary_motorarea';  
        P.Estimate=1;                                         
        P.contrast=0;                                       
        P.Tasks={'1' 'aud_diff' 'aud_lure' 'aud_same' 'vis_diff' 'vis_lure' 'vis_same' 'x_False_Response'};
        P.Weights=[];                                 
        P.analysis='psy';                             
        P.method='cond';                              
        P.CompContrasts=1;                            
        P.Weighted=0;
        P.ConcatR=0;
        P.preservevarcorr=0;
        P.outdir=outputDir;
        P.GroupDir=gPPI_con_images;
        %%
        %Contrast
        P.Contrasts(1).left={'aud_lure'};
        P.Contrasts(1).right={'aud_diff' 'aud_same'};
        P.Contrasts(1).STAT='T';
        P.Contrasts(1).Weighted=0;                  
        P.Contrasts(1).MinEvents=5;
        P.Contrasts(1).name='PS_Vis_Interaction';

        save(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_PreSMA_10_20_44', filesep, 'gPPI_jobs', filesep, 'gPPI_on_R_PreSMA_10_20_44_1_X_PS_Aud_Interaction'), 'P');
        cd(strcat(resultsDir, gPPIResDir, gPPISubDir, subjects_full{i}, 'R_PreSMA_10_20_44', filesep, 'gPPI_jobs'));
        PPPI(P);
    end
end
