0
|
1 function [list_eic4_files,mz4_stats,mz3]=mz_4_extract_final_mz_v3(list_eic_files,delta_mz)
|
|
2
|
|
3
|
|
4 // list_eic_files: une liste de fichiers
|
|
5 // chaque fichier = (TR x mz); variable = x_tr_mz3
|
|
6 // mz_uncertainty: l'incertitude sur les m/z utilisee pour calculer les matrices d'EICs; typiquement: 0,0024
|
|
7 // mz3_stats: donne les moyennes min et max du même m/z obtenues sur les differents fichiers
|
|
8 // et calcule l'intervalle pour reconstruire les matrices d'EICs
|
|
9 // -------------------------------------------------------------------------
|
|
10
|
|
11 // regrouper tous les m/z dans un seul fichier
|
|
12 // colonne 1 = valeur de m/z
|
|
13 // colonne 2 = code du fichier; 1 à 6 si 6 fichiers
|
|
14 // colonne 3 = n° de ligne dans chaque fichier
|
|
15
|
|
16 // ex de list_eic_files:
|
|
17 // 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'];
|
|
18
|
|
19 if argn(2)<2 then
|
|
20 delta_mz=0.0024;
|
|
21 end
|
|
22
|
|
23 n_files=max(size(list_eic_files));
|
|
24
|
|
25 mzs=[]; // mzs=compilation de tous les mz
|
|
26
|
|
27 for i=1:n_files;
|
|
28 x_tr_mz3=list_eic_files(i);
|
|
29
|
|
30 list_mz=strtod(x_tr_mz3.v);
|
|
31 n=size(list_mz,1);
|
|
32 if i==1 then
|
|
33 mzs=[list_mz ones(n,1) [1:n]' ];
|
|
34 else
|
|
35 mzs=[mzs; [list_mz i*ones(n,1) [1:n]']];
|
|
36 end
|
|
37 end
|
|
38
|
|
39 // tri selon des valeurs croissantes
|
|
40 [nul, index]=gsort(mzs(:,1),'g','i');
|
|
41 mzs=mzs(index,:);
|
|
42
|
|
43
|
|
44 n=size(mzs,1);
|
|
45 mz2=zeros(n,n_files,2); // 6 remplace par n_files échantillons 12dec19
|
|
46 // 2 colonnes: mz et n° de pic
|
|
47
|
|
48 // choix de l'incertitude
|
|
49 // delta_mz=0.0024; OK
|
|
50 // delta_mz=0.0012; essayé mais pas concluent: des m/z se trouvent décalés seuls sur une ligne
|
|
51
|
|
52 index=1;
|
|
53 for i=1:n-1;
|
|
54 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
|
|
55 index=index+1;
|
|
56 end
|
|
57 mz2(index,mzs(i+1,2),1)=mzs(i+1,1);
|
|
58 mz2(index,mzs(i+1,2),2)=mzs(i+1,3);
|
|
59 end
|
|
60
|
|
61 mz2=mz2(1:index,:,:); // 10683 m/z
|
|
62 // visuellement: le fichier semble OK
|
|
63
|
|
64 // tri des plus intéressants : 3 dans un groupe au moins
|
|
65
|
|
66 // commente le 12dec19 => il faut retrouver dans toutes les répétitions
|
|
67 tri=mz2(:,1,1);
|
|
68 for k=2:n_files;
|
|
69 tri=tri.*mz2(:,k,1);
|
|
70 end
|
|
71 // tri1=mz2(:,1,1).*mz2(:,2,1).*mz2(:,3,1);
|
|
72 // tri2=mz2(:,4,1).*mz2(:,5,1).*mz2(:,6,1);
|
|
73 // tri=tri1+tri2;
|
|
74
|
|
75
|
|
76 indice=find(tri >0);
|
|
77 mz3.d=mz2(indice,:,:); // 8589 m/z
|
|
78 // visuellement: semble OK
|
|
79
|
|
80 // rajout des statistiques
|
|
81 n=size(mz3.d,1);
|
|
82 mz3_min_max=zeros(n,5);
|
|
83 for i=1:n;
|
|
84 xtemp=mz3.d(i,1:n_files,1);
|
|
85 xtemp=matrix(xtemp,[n_files,1,1]);
|
|
86 index=find(xtemp~=0);
|
|
87 mztemp=xtemp(index);
|
|
88 mean_temp=mean(mztemp);
|
|
89
|
|
90 n_temp=max(size(mztemp));
|
|
91 std_temp=std(mztemp)*sqrt(n_temp/(n_temp-1));
|
|
92 mz3_min_max(i,1)=min(xtemp(index));
|
|
93 mz3_min_max(i,2)=max(xtemp(index));
|
|
94 mz3_min_max(i,3)=mean_temp;
|
|
95 mz3_min_max(i,4)=mean_temp - 2*std_temp;
|
|
96 mz3_min_max(i,5)=mean_temp + 2*std_temp;
|
|
97 end
|
|
98
|
|
99 // mise en div:
|
|
100 mz3.i=string(mz3_min_max(:,3));
|
|
101 mz3.v.v1='file'+string([1:size(mz3.d,2)]');
|
|
102 mz3.v.v2=['signal';'column'];
|
|
103 //pause
|
|
104 mz3=div(mz3);
|
|
105
|
|
106 mz3_stats.d=mz3_min_max;
|
|
107 mz3_stats.i='M'+ string(mz3_min_max(:,3));
|
|
108 mz3_stats.v=['mean min';'mean max';'mean mz';'mean -2std';'mean +2std'];
|
|
109 mz3_stats=div(mz3_stats);
|
|
110
|
|
111
|
|
112 // --------------------------------------------------------------------------
|
|
113 // a ce stade on a :
|
|
114 // mz3 = une liste de m/z commune et interessante (8589 x 6 x 2)
|
|
115 // mean +/- 2std = la plage de recherche de ces m/z (8589 x 5)
|
|
116 // il ne reste plus qu'a reconstruire les EICs avec ces plages de m/z
|
|
117 // --------------------------------------------------------------------------
|
|
118
|
|
119
|
|
120 list_eic4_files=list();
|
|
121
|
|
122 for i=1:n_files;
|
|
123
|
|
124 no_colonnes=mz3.d(:,i,2);
|
|
125 tri=find(no_colonnes~=0);
|
|
126 colonnes_gardees=no_colonnes(tri);
|
|
127
|
|
128 x_tr_mz3=list_eic_files(i);
|
|
129
|
|
130 x_tr_mz4=x_tr_mz3(:,colonnes_gardees);
|
|
131 x_tr_mz4.v=mz3_stats.i(tri);
|
|
132 x_tr_mz4=div(x_tr_mz4);
|
|
133
|
|
134 list_eic4_files(i)=x_tr_mz4;
|
|
135 end
|
|
136
|
|
137 mz4_stats=mz3_stats;
|
|
138
|
|
139 endfunction
|