https://github.com/tansey/smoothfdr
Raw File
Tip revision: c5b693d0a66e83c9387433b33c0eab481bd4a763 authored by Wesley Tansey on 08 May 2020, 15:42:20 UTC
Fixed bug in easy that created too large a support for the alternative distribution
Tip revision: c5b693d
initialvalue.m
function initials=initialvalue(signalfile,zvaluefile,reglocafile,L)
%%L is number of the components in the normal mixture



signal=load(signalfile);%%%% signals, of the brain region of interest (ROI), gotten by BH procedure 
zvalue=load(zvaluefile);%%%% observed data on the whole image grid including the brain part and the non-brain part
regloca=load(reglocafile);%%%%% location of the ROI on the LX*LY*LZ image grid
 


n_reg=length(regloca);% the number of voxels in the ROI
zvalue_1=zeros(n_reg,1);% to store the z-value of the signals by BH procedure
num=0;
for i=1:n_reg
   pi=regloca(i);
   if signal(i)==1
     num=num+1;
     zvalue_1(num)=zvalue(pi);
     
   end
end
prop=1-num/n_reg;

%%%%%%%%%%%always use set the initial values for beta and h to be zeros
beta=0;
h=0;

initials=[beta,h];


temp=0;



try
  obj=gmdistribution.fit(zvalue_1(1:num,1),L);%% gmdistribution.fit is a Matlab built-in function, see http://www.mathworks.com/help/stats/gmdistribution.fit.html
  for j=1:L
      initials=[initials,obj.mu(j),obj.Sigma(j),obj.PComponents(j)];
  end
  
  
catch err %%%%%%% if gmdistribution.fit is divergent 
  mu=zeros(L,1);

  if L==1
     mu(1)=1;

  elseif mod(L,2)==0 %%%%%%if L is divisible by 2, then let mu_i be [-L,-L/2,-L/4,...,L/4,L/2,L] and thus symmetric around 0.
    temp=L/2;
    for mu_i=1:temp
      mu(mu_i)=mu_i*2;
      mu(L-mu_i+1)=-mu(mu_i);
    end
  else  %%%%%%%if L is not divisible by 2, then let mu_i be [-floor(L/2),-floor(L/2)+1,...,0,floor(L/2)-1,floor(L/2)] and thus symmetric around 0.
    temp=ceil(L/2);
      for mu_i=1:L
        mu(mu_i)=mu_i-temp;
      end

  end



  Sigma=ones(L,1);
  PComponents=(1/L)*ones(L,1);
  
  for j=1:L
      initials=[initials,mu(j),Sigma(j),PComponents(j)];
  end

end
back to top