function [CVA] = spm_cva_compare (Y,X,c)
% Model comparison for probabilistic CVA
% FORMAT [CVA] = spm_cva_compare (Y,X,c)
%
% Y  [N x d1] data matrix
% X  [N x d2] design matrix
% c  Contrast vector (if specified)
%
% CVA has fields:
%
% .order        number of canonical vectors (latent space dimension)
% .bic          BIC for each order
% .aic          AIC for each order
%
% and 
%
% .U1,.U2      Canonical vectors
% .W1,.W2      Factor matrices
%
% for the highest order model.
%
% See spm_cva_prob.m for more details
%__________________________________________________________________________

% Will Penny 
% Copyright (C) 2011-2022 Wellcome Centre for Human Neuroimaging


if nargin > 2
    % get null-space of contrast
    X0  = X - X*c*pinv(c);
    X   = full(X*c);
    X0  = spm_svd(X0);
    
    Y     = Y - X0*(X0'*Y);
    X     = X - X0*(X0'*X);
end

[N1,p1]=size(Y);
[N2,p2]=size(X);
if ~(N1==N2)
    disp('X and Y are of incompatible size');
    return
end

m=min([p1,p2]);
for i=1:m+1
    order(i)=i-1;
    CVA = spm_cva_prob (Y',X',order(i));
    bic(i)=CVA.bic;
    aic(i)=CVA.aic;
    L(i)=CVA.L;
end

CVA.order=order;
CVA.bic=bic;
CVA.aic=aic;
CVA.L=L;
