diff src/mz_9_compares_peaks.sci @ 0:4660bf9c8059 draft

Uploaded
author jcb-mpl
date Tue, 27 Apr 2021 14:52:17 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mz_9_compares_peaks.sci	Tue Apr 27 14:52:17 2021 +0000
@@ -0,0 +1,111 @@
+function x_peaks_final=mz_9_compares_peaks(peaks_list,peaks_detail,x836,diff_mz,k)
+    
+    // peaks_list et peaks_detail: les pics obtenus avec: 2018_07_mz_eics_to_features_v2
+    // x836: les pics de référence ; un div avec 2 colonnes: mz puis RT 
+    // k:identification des k plus proches voisins; par défaut: 1 
+
+    // depuis le répertoire: tampon2020/projet_publi_eics/jan20
+
+
+    x836=div(x836);
+    
+    if argn(2) <4 then
+        diff_mz=0.0050;
+    end
+    
+    if argn(2)<5 then
+        k=1;
+    end
+
+    diff_mz2=diff_mz;
+
+    
+    // tri selon m/z croissant annule le 11fev20
+    //[nul,index]=gsort(x836.d(:,1),'g','i');
+    //x836_mz=x836(index,:);
+    x836_mz=x836;
+    
+    // bilan : ----------------
+    // peaks_list = 4434 x 5 TRmin /TRmax/TRmedian/mz/signal
+    // x836_mz: 836 x 2      mz/TR 
+    
+    // identification des proches voisins 
+    //diff_mz2=0.0050; 
+    n=size(x836_mz.d,1);
+    xout.d=[];
+    
+    for i=1:n;
+        peaks_list3=peaks_list.d(:,4);    // mz
+        diff_temp=abs(peaks_list3-x836_mz.d(i,1));
+        tri1=find(diff_temp<diff_mz2);
+        tri2=find(diff_temp>=diff_mz2);
+        //pause
+        peaks_list3(tri1)=0;      // distance nulle 
+        peaks_list3(tri2)=10;     // forte distance
+        //pause
+        d=(peaks_list.d(:,3)-x836_mz.d(i,2))**2 + (peaks_list3)**2;
+        //pause
+        d2=[[1:size(peaks_list.d,1)]' d];     // rajout des indices  
+        [d_trie,tri]=gsort(d,'g','i');             // choix des k premiers 
+        tri2=tri(1:k); 
+        d_trie2=sqrt(d_trie(1:k));                  // distances  
+        xout_d=[ones(k,1)*x836_mz.d(i,:) peaks_list.d(tri2,:)]; 
+        xout_d=[xout_d(:,[1 6 2 4 7]) tri2];
+        if xout.d==[] then           
+            xout.d=xout_d;
+        else    
+            xout.d=[xout.d; xout_d]; 
+        end
+        //disp(i,'i=')
+    end
+       
+    // mise en forme + rajout des différences 
+    xout2.d=[xout.d(:,1:2) abs(xout.d(:,1)-xout.d(:,2)) xout.d(:,3:4)  abs(xout.d(:,3)-xout.d(:,4)) xout.d(:,5:6)];
+    xout2.d(:,1:3)=0.0001*round(10000*xout2.d(:,1:3));
+    xout2.d(:,4:6)=0.01*round(100*xout2.d(:,4:6));
+    xout2.v=['mz-ref';'mz-obs';'diff_mz';'RT-ref';'RT-obs';'diff_RT';'signal';'n° in peak_list'];
+    
+    x_peaks_final=div(xout2);
+    
+    // même pic associé à plusieurs mz ref?
+    nrepet=ones(k*n,1);
+    for i=1:k*n;
+        tri=find(xout2.d(:,8)==xout2.d(i,8));
+        ntri=max(size(tri));
+        nrepet(i)=ntri;
+    end
+ 
+    // sorties    
+    label_temp=x836.i;
+    label_temp=repmat(label_temp,[1,k]);
+    label_temp=label_temp';
+    label_temp=matrix(label_temp,[k*n,1]);
+    x_peaks_final.d=[x_peaks_final.d nrepet]
+    x_peaks_final.v=[x_peaks_final.v;'nbr of identifications']
+    x_peaks_final.i=label_temp;
+    x_peaks_final=div(x_peaks_final);
+    
+    // rajout des no ref 
+    no_ref=[1:n]';
+    no_ref=no_ref*ones(1,k);
+    no_ref=no_ref';
+    no_ref=matrix(no_ref,[k*n,1]);
+    
+    x_peaks_final.d=[no_ref x_peaks_final.d];
+    x_peaks_final.v=['no_ref';x_peaks_final.v];
+
+    // remise en ordre
+    x_peaks_final=x_peaks_final(:,[1,9,10,2:8]);
+    
+    
+endfunction
+
+
+
+
+    
+    
+    
+    
+    
+