|
|
| [quant]=quantile_norm(data,wiederholung)
|
function [quant]=quantile_norm(data,wiederholung)
%Usage
%Example
%normalized_data=quantile_norm(data,replicates)
%%data: is an 2 dimensional array that contains data that need to be
%normalized
%replicates: in case each datapoint represents and independent measurement
%and no replicate measurement than set this set this parameter to 1.
%In case you have replicate measurements and you want them to be averaged
%before the normalization as a data reduction procedure than supply the
%number of replicates in the dataset.
total1=data;
%Getting the dimensions of the array
[lange breite]=size(total1);
%Preallocating memory saves time
average=ones(size(lange/wiederholung,breite));
quantile_rank=ones(size(lange));
quant=ones(size(lange/wiederholung,breite));
%Starting the clock
%tic
%hier werden erst mal die Mittelwerte fur die Rohdaten berechnet damit das
%normalisieren etwas schneller lauft.
h = waitbar(0,'Please wait Averaging proteins in progress...');
for i=1 : breite
waitbar(100/breite)
dummy=0;
for ii=1 : lange/wiederholung
sum=0;
for iii=1 : wiederholung
dummy=dummy+1;
sum=sum+total1(dummy,i);
end
average(ii,i)=sum/wiederholung;
end
end
close(h);
% hier wird die quantile Normalisierung durch gefuhrt und dann an das
% programm ubergeben
total1=average(:,1);
totalrfu=total1;
rank=sort(total1);
lange=length(total1);
for x=1:lange
for xx=1 : lange
if rank(x)==total1(xx);
rank(x)=xx;
end
end
end
total1=rank;
for i=2 : breite
total=average(:,i);
rank=sort(total);
for x=1:lange
for xx=1 : lange
if total(x)==rank(xx);
total(x)=xx;
end
end
end
t=[total1 total];
total1=t;
end
rank=t;
%Hier wird der quantile Wert fur jeden Rank im normalsierten Daten feld
%berechnet.
testy=sort(average);
%for i=1 : lange
% dummy=0;
% for ii=1 : breite
% dummy=dummy+testy(i,ii);
% end
% quantile_rank(i)=dummy/breite;
%end
%quantile_rank;
quantile_rank=mean(testy,2);
for x=1 :lange
for y=1 : breite
quant(x,y)=quantile_rank(rank(x,y));
end
end
%h(1) = axes('Position',[0.1 0.6 0.8 0.4]);
%mesh(data)
%h(2) = axes('Position',[0.1 0.1 0.8 0.4]);
%mesh(quant)
%stop the watch and display
%toc
|
|
Contact us at files@mathworks.com