Added source Matlab code for reference
This commit is contained in:
parent
b8af977117
commit
b5d99903d2
186 changed files with 61405 additions and 1 deletions
90
matlab/graph/allfreqsnew2.m
Normal file
90
matlab/graph/allfreqsnew2.m
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
function [counts,noalle_est,prior,adjprior,rawalleles] = allfreqsnew2(rawdata, noalle_est)
|
||||
% Filename: allfreqsnew2.m
|
||||
% [counts,noalle,prior,adjprior,rawalleles] = allfreqsnew(rawdata)
|
||||
%
|
||||
% Description:
|
||||
% rawdata has n rows (2 x #individuals) and n(l) first
|
||||
% colums are the loci. The last column is the subpopindex
|
||||
% prior is a created matrix of positive Dirichlet hyperparameters
|
||||
% missing data is filtered out
|
||||
% !!!NEW!!!zeros are accepted as allele codes and any negative numbers as missing data.
|
||||
|
||||
% Modified by: Jing Tang
|
||||
SCALE = 1;
|
||||
dime=size(rawdata);
|
||||
noalle=zeros(dime(2)-1,1);
|
||||
rawalleles=cell(1,dime(2)-1);
|
||||
for i=1:dime(2)-1
|
||||
noalle(i)=length(unique(rawdata(:,i)));
|
||||
end
|
||||
for i=1:dime(2)-1
|
||||
if length(find(rawdata(:,i)<=0))>0
|
||||
noalle(i)=noalle(i)-1;
|
||||
end
|
||||
end
|
||||
|
||||
% Fomulate the raw data such that the value i in a entry denotes the ith
|
||||
% alleles.
|
||||
for i=1:dime(2)-1
|
||||
rawalles=unique(rawdata(:,i));
|
||||
% rawalles = [1:noalle(i)]';
|
||||
if rawalles(1)<=0
|
||||
rawalles(1)=-999;
|
||||
end
|
||||
rawalleles{i} = rawalles; %rawalleles!!!
|
||||
if rawalles(1)<0
|
||||
for j=2:noalle(i)+1
|
||||
%rawdata(find(rawdata(:,i)==rawalles(j)),i)=ones(length(find(rawdata(:,i)==rawalles(j))),1)*(j-1);
|
||||
rawdata(logical(rawdata(:,i)==rawalles(j)),i)=ones(length(find(rawdata(:,i)==rawalles(j))),1)*(j-1);
|
||||
end
|
||||
else
|
||||
for j=1:noalle(i)
|
||||
% rawdata(find(rawdata(:,i)==rawalles(j)),i)=ones(length(find(rawdata(:,i)==rawalles(j))),1)*j;
|
||||
rawdata(logical(rawdata(:,i)==rawalles(j)),i)=ones(length(find(rawdata(:,i)==rawalles(j))),1)*j;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
% ALLOWED_MEMORY = 50; % in unit of megabyte.
|
||||
% n1 = max(noalle_est);
|
||||
% n2 = dime(2)-1;
|
||||
% n3 = double(max(rawdata(:,dime(2))));
|
||||
% ncells = n1*n2*n3;
|
||||
% memory_used = ncells/(1024*1024); % using uint8 format.
|
||||
% if memory_used < ALLOWED_MEMORY
|
||||
% counts=zeros(n1,n2,n3,'uint8');
|
||||
% else
|
||||
% nbatches = ceil(memory_used/ALLOWED_MEMORY);
|
||||
% n3_in_batch = ceil(n3/nbatches);
|
||||
% counts = cell(nbatches,1);
|
||||
% for i=1:nbatches-1
|
||||
% % counts = cat(3,counts,uint16(zeros(n1,n2,n3_in_batch)));
|
||||
% counts{i} = zeros(n1,n2,n3_in_batch,'uint8');
|
||||
% end
|
||||
% % counts = cat(3, counts, uint16(zeros(n1,n2,n3-n3_in_batch*(nbatches-1))));
|
||||
% counts{i} = zeros(n1,n2,n3-n3_in_batch*(nbatches-1),'uint8');
|
||||
% end
|
||||
|
||||
|
||||
|
||||
counts = zeros(max(noalle_est),dime(2)-1,max(rawdata(:,dime(2))),'uint8');
|
||||
for i=1:dime(1)
|
||||
for j=1:dime(2)-1
|
||||
if rawdata(i,j)>0
|
||||
counts(rawdata(i,j),j,rawdata(i,dime(2)))=...
|
||||
counts(rawdata(i,j),j,rawdata(i,dime(2)))+1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
maxnoalle = max(noalle_est);
|
||||
% prior = [];
|
||||
prior=zeros(maxnoalle,dime(2)-1);
|
||||
for i=1:dime(2)-1
|
||||
prior(:,i) = [SCALE*ones(noalle_est(i),1)/noalle_est(i);zeros(maxnoalle-noalle_est(i),1)];
|
||||
end
|
||||
|
||||
adjprior=prior;
|
||||
for i=1:dime(2)-1
|
||||
adjprior(:,i)=adjprior(:,i)+[zeros(noalle_est(i),1);ones(maxnoalle-noalle_est(i),1)];
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue