comparison src/mz_hdf5tosci.sci @ 0:03c9a3b59377 draft

Uploaded
author jcb-mpl
date Mon, 26 Apr 2021 16:28:21 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:03c9a3b59377
1 function x_mz=mz_hdf5tosci(file_in,max_scans)
2
3 // entrees: -------------------------
4 // file_in: un fichier au format HDF5
5 // max_scans: valeur introduite pour accelerer la fonction de test
6
7 // sorties: ---------------------------
8 // x_mz: une variable avec deux champs:
9 // x_mz.time
10 // x_mz.mzdata une liste dont chaque élément est un vecteur de 2 colonnes: m/z et intensités de signal
11
12 // JCB 2 aout18
13
14 h5close()
15
16 // lecture du fichier HDF5 ----------------------------------
17 a=h5open(file_in,'r','stdio'); // que lecture 6jan20:stdio
18 //pause
19 spectrum_chromatogram_index=h5read(a.root.ChromatogramIndex);
20 spectrum_chromatogram_index=spectrum_chromatogram_index(1); // une valeur
21 spectrum_time=h5read(a.root.ChomatogramTime);
22 spectrum_intensity=h5read(a.root.SpectrumIntensity);
23 spectrum_mz=h5read(a.root.SpectrumMZ);
24 spectrum_index=h5read(a.root.SpectrumIndex);
25 //spectrum_index=spectrum_index(1:spectrum_chromatogram_index);
26 h5close(a)
27
28 // reconstruction du spectre -----------------
29 if argn(2)<2 then
30 nbr_scans=max(size(spectrum_index));
31 else
32 nbr_scans=max_scans;
33 end
34
35
36 // 1- extraction du temps
37 //25juin20
38 time=spectrum_time;
39 if size(time,1)==1 then
40 time=time';
41 end
42 //pas=(spectrum_time($)-spectrum_time(1))/(nbr_scans-1);
43 //time=[spectrum_time(1):pas:spectrum_time($)+pas]; // rajout de 1 par securite pour être sur d'arriver a nbr_scans
44 //time=time(1:nbr_scans); // nbr exact de RT
45
46 mzdata=list();
47
48 //disp(nbr_scans,'nbr_scans=')
49
50 for i=1:nbr_scans;
51 if i==1 then
52 plage_i=[1,double(spectrum_index(i))];
53 else
54 plage_i=[double(spectrum_index(i-1))+1,double(spectrum_index(i))];
55 end
56 //disp(plage_i,'plage_i=')
57 // 2- extraction et reconstruction des m/z
58 // dans le fichier HDF5, ne sont enregistrées que les différences de m/z entre 2 mesures
59 mz_i=spectrum_mz(plage_i(1):plage_i(2));
60
61 n=size(mz_i,2);
62 mz_i2=zeros(1,n);
63
64 mz_i2(1)=mz_i(1);
65 for j=2:n;
66 mz_i2(j)=mz_i2(j-1)+mz_i(j);
67 end
68
69 // 3- extraction des signaux
70 sig_i=spectrum_intensity(plage_i(1):plage_i(2));
71
72 // regroupement des m/z et signaux
73 sp_i=[mz_i2;sig_i];
74
75 mzdata(i)=sp_i';
76
77
78 end
79
80 // verif. que time est un vecteur colonne
81 if size(time,2)>1 then
82 time=time';
83 end
84
85
86 // amelioration de la coherence des donnees
87 index=time(2:$)-time(1:$-1);
88 index2=find(index<0);
89 if index2 ~=[] then
90 index3=min(index2);
91 else;
92 index3=max(size(time));
93 end
94
95 x_mz.time=time(1:index3);
96 mzdata2=list();
97 for i=1:min(index3,size(mzdata));
98 mzdata2(i)=mzdata(i);
99 end
100 x_mz.mzdata=mzdata2;
101
102
103 endfunction