image thumbnail
[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