Mercurial > repos > jcb-mpl > eics_synchronization
diff src/mz_4_extract_final_mz_v3.sci @ 0:b2d949399888 draft
Uploaded
author | jcb-mpl |
---|---|
date | Tue, 27 Apr 2021 14:20:13 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/mz_4_extract_final_mz_v3.sci Tue Apr 27 14:20:13 2021 +0000 @@ -0,0 +1,139 @@ +function [list_eic4_files,mz4_stats,mz3]=mz_4_extract_final_mz_v3(list_eic_files,delta_mz) + + + // list_eic_files: une liste de fichiers + // chaque fichier = (TR x mz); variable = x_tr_mz3 + // mz_uncertainty: l'incertitude sur les m/z utilisee pour calculer les matrices d'EICs; typiquement: 0,0024 + // mz3_stats: donne les moyennes min et max du même m/z obtenues sur les differents fichiers + // et calcule l'intervalle pour reconstruire les matrices d'EICs + // ------------------------------------------------------------------------- + + // regrouper tous les m/z dans un seul fichier + // colonne 1 = valeur de m/z + // colonne 2 = code du fichier; 1 à 6 si 6 fichiers + // colonne 3 = n° de ligne dans chaque fichier + + // ex de list_eic_files: + // list_eic_files=[ 'ID1_EICs-raw.mat'; 'ID2_EICs-raw.mat';'ID3_EICs-raw.mat';'AC-ID1_EICs-raw.mat';'AC-ID2_EICs-raw.mat';'AC-ID3_EICs-raw.mat']; + + if argn(2)<2 then + delta_mz=0.0024; + end + + n_files=max(size(list_eic_files)); + + mzs=[]; // mzs=compilation de tous les mz + + for i=1:n_files; + x_tr_mz3=list_eic_files(i); + + list_mz=strtod(x_tr_mz3.v); + n=size(list_mz,1); + if i==1 then + mzs=[list_mz ones(n,1) [1:n]' ]; + else + mzs=[mzs; [list_mz i*ones(n,1) [1:n]']]; + end + end + + // tri selon des valeurs croissantes + [nul, index]=gsort(mzs(:,1),'g','i'); + mzs=mzs(index,:); + + + n=size(mzs,1); + mz2=zeros(n,n_files,2); // 6 remplace par n_files échantillons 12dec19 + // 2 colonnes: mz et n° de pic + + // choix de l'incertitude + // delta_mz=0.0024; OK + // delta_mz=0.0012; essayé mais pas concluent: des m/z se trouvent décalés seuls sur une ligne + + index=1; + for i=1:n-1; + if mzs(i+1,1)-mzs(i,1)>delta_mz | (mzs(i+1,1)-mzs(i,1)<= delta_mz & mz2(index,mzs(i+1,2),1)~=0 ) then + index=index+1; + end + mz2(index,mzs(i+1,2),1)=mzs(i+1,1); + mz2(index,mzs(i+1,2),2)=mzs(i+1,3); + end + + mz2=mz2(1:index,:,:); // 10683 m/z + // visuellement: le fichier semble OK + + // tri des plus intéressants : 3 dans un groupe au moins + + // commente le 12dec19 => il faut retrouver dans toutes les répétitions + tri=mz2(:,1,1); + for k=2:n_files; + tri=tri.*mz2(:,k,1); + end + // tri1=mz2(:,1,1).*mz2(:,2,1).*mz2(:,3,1); + // tri2=mz2(:,4,1).*mz2(:,5,1).*mz2(:,6,1); + // tri=tri1+tri2; + + + indice=find(tri >0); + mz3.d=mz2(indice,:,:); // 8589 m/z + // visuellement: semble OK + + // rajout des statistiques + n=size(mz3.d,1); + mz3_min_max=zeros(n,5); + for i=1:n; + xtemp=mz3.d(i,1:n_files,1); + xtemp=matrix(xtemp,[n_files,1,1]); + index=find(xtemp~=0); + mztemp=xtemp(index); + mean_temp=mean(mztemp); + + n_temp=max(size(mztemp)); + std_temp=std(mztemp)*sqrt(n_temp/(n_temp-1)); + mz3_min_max(i,1)=min(xtemp(index)); + mz3_min_max(i,2)=max(xtemp(index)); + mz3_min_max(i,3)=mean_temp; + mz3_min_max(i,4)=mean_temp - 2*std_temp; + mz3_min_max(i,5)=mean_temp + 2*std_temp; + end + + // mise en div: + mz3.i=string(mz3_min_max(:,3)); + mz3.v.v1='file'+string([1:size(mz3.d,2)]'); + mz3.v.v2=['signal';'column']; +//pause + mz3=div(mz3); + + mz3_stats.d=mz3_min_max; + mz3_stats.i='M'+ string(mz3_min_max(:,3)); + mz3_stats.v=['mean min';'mean max';'mean mz';'mean -2std';'mean +2std']; + mz3_stats=div(mz3_stats); + + + // -------------------------------------------------------------------------- + // a ce stade on a : + // mz3 = une liste de m/z commune et interessante (8589 x 6 x 2) + // mean +/- 2std = la plage de recherche de ces m/z (8589 x 5) + // il ne reste plus qu'a reconstruire les EICs avec ces plages de m/z + // -------------------------------------------------------------------------- + + + list_eic4_files=list(); + + for i=1:n_files; + + no_colonnes=mz3.d(:,i,2); + tri=find(no_colonnes~=0); + colonnes_gardees=no_colonnes(tri); + + x_tr_mz3=list_eic_files(i); + + x_tr_mz4=x_tr_mz3(:,colonnes_gardees); + x_tr_mz4.v=mz3_stats.i(tri); + x_tr_mz4=div(x_tr_mz4); + + list_eic4_files(i)=x_tr_mz4; + end + + mz4_stats=mz3_stats; + +endfunction