Mercurial > repos > jcb-mpl > eics_first_extraction
view src/mz_5_tr_matrix6bis.sci @ 0:245b2c2b3d75 draft
Uploaded
| author | jcb-mpl |
|---|---|
| date | Tue, 27 Apr 2021 14:13:47 +0000 |
| parents | |
| children |
line wrap: on
line source
function [xout,calculs_stats_tr_mz]=mz_5_tr_matrix6bis(xbary,allmz,thresh,signal_thresh) // entrées:------------ // xbary: une structure de type barycentrique avec les champs x.time et x.mzdata // all_mz: les valeurs de m/z identifiées avec mz_scan_mz_raw2; une matrice de deux colonnes, m/z et signaux // thresh: le seuil de regroupement, ex: 0,0024 // signal_thresh: un seuil mini de signal, ex: 30000 // xout: une matrice de type (TR x m/z) // xout.d: une matrice contenant les TR en ligne et les valeurs m/z en colonne // xout.i: les valeurs de TR // xout.v: les valeurs de m/z // calculs_stats_tr_mz: une matrice avec nbre lignes=nbre m/z et 7 colonnes contenant differents calculs, pour des statistiques ulterieures // une matrice avec les m/z en ligne et 7 colonnes: // nbre de TR / somme des TR / somme des TR**2 / somme des mz / somme des mz**2 / somme des mz*signal / somme des signaux // application d'un filtre sur le niveau minimum de signal tri=find(allmz(:,2)>signal_thresh); all_mz=allmz(tri,1); n=max(size(xbary.time)); // nombre de TR n_mz=max(size(all_mz)); // nombre de m/z // initialisation de xout: xout=div(0); xout.d=zeros(n,n_mz); xout.i=string(xbary.time); xout.v=string(all_mz); // initialisation de calcul_stats_tr_mz: calculs_stats_tr_mz=zeros(n_mz,7); //calcul_stats_tr_mz contient: 1=n; 2=somme des tr; 3=somme des carres des tri; 4=somme des m/z; 5=somme des carrés des mzi; // 6=somme des m/z*signaux; 7=somme des signaux // remplissage de xout et de calculs_stats_tr_mz: for i=1:n; //xi=xbary.mzdata(i); xbaryi=xbary.mzdata(i); //tous m/z remplacés par leurs barycentres avec mz_barycenter_adjust n_xi=size(xbaryi,1); // nbre de m/z for j=1:n_xi; abs_differ=abs(all_mz-xbaryi(j,1)); if min(abs_differ)<thresh then // 18avril18 on ne remplit que si différence faible indice=find(abs_differ==min(abs_differ)); imax=max(size(indice)); for k=1:imax; //9jan20 boucle rajoutee car il peut y avoir 2 solutions // remplissage de xout: xout.d(i,indice(k))=xout.d(i,indice(k))+ xbaryi(j,2); //26juil; possibilité de rajouter 2 valeurs dans 1 case // remplissage de calculs_stats_tr_mz: calculs_stats_tr_mz(indice(k),1)=calculs_stats_tr_mz(indice(k),1)+ 1; // rajout de +1 calculs_stats_tr_mz(indice(k),2)=calculs_stats_tr_mz(indice(k),2)+ xbary.time(i); // rajout de TR calculs_stats_tr_mz(indice(k),3)=calculs_stats_tr_mz(indice(k),3)+ xbary.time(i)**2; // rajout de TR**2 calculs_stats_tr_mz(indice(k),4)=calculs_stats_tr_mz(indice(k),4)+ xbaryi(j,1); // somme des m/z calculs_stats_tr_mz(indice(k),5)=calculs_stats_tr_mz(indice(k),5)+ xbaryi(j,1)**2; // somme des m/z**2 calculs_stats_tr_mz(indice(k),6)=calculs_stats_tr_mz(indice(k),6)+ xbaryi(j,1)*xbaryi(j,2); // somme des m/z * signal calculs_stats_tr_mz(indice(k),7)=calculs_stats_tr_mz(indice(k),7)+ xbaryi(j,2); // somme des signaux end end end end // ajustement des m/z 17mai18 stats_tr_mz_5= calculs_stats_tr_mz(:,6)./calculs_stats_tr_mz(:,7); xout.v= string(stats_tr_mz_5); // suppression des signaux trop faibles tri=find(calculs_stats_tr_mz(:,7)>signal_thresh); xout=xout(:,tri); // 31jan20 verif que ce tri marche 1000X+vite qu'enlever les colonnes calculs_stats_tr_mz= calculs_stats_tr_mz(tri,:); endfunction
