Mercurial > repos > jcb-mpl > orbi_h5_to_dat
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 |