Mercurial > repos > jcb-mpl > orbi_h5_to_dat
comparison src/mz_1_read_txt.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 [res]= mz_1_read_txt(xfichier, pas ) | |
2 | |
3 // lecture d'un fichier texte, obtenu par exportation d'un fichier .mzML | |
4 | |
5 // xfichier: le nom du fichier texte ex: xfichier -> '151123-vinrose_acet3%_T5h_cpl-pos.txt' | |
6 // pas: le pas d'acquisition des données: pas=10 -> 1/10, pas = 1 -> 1/1 = toutes | |
7 // pas est un multiple de 10 | |
8 // res: une structure | |
9 | |
10 // ex: res=mz_read_txt('151123-vinrose_acet3%_T5h_cpl-pos.txt',2); | |
11 | |
12 // compatibilité version 5.5.2 et 6.0.0 | |
13 version=getversion(); | |
14 version=strsplit(version,'-'); | |
15 version=version(2); | |
16 version=part(version,1); | |
17 version=strtod(version); | |
18 if version < 6 then | |
19 stacksize('max') | |
20 end | |
21 | |
22 // pas par défaut: pas =1 / on garde toutes les données | |
23 if argn(2)==1 then | |
24 pas=1; | |
25 end | |
26 | |
27 // ouverture du fichier: | |
28 id=mopen(xfichier,'rt'); | |
29 | |
30 // initialisation: | |
31 i=1; | |
32 x_out=list(); | |
33 x_masses=[]; | |
34 x_time=[]; | |
35 end_file=0; | |
36 list_index=1; | |
37 | |
38 // début de la boucle while, pour collecter les données de masse | |
39 while end_file==0; | |
40 | |
41 line=mgetl(id,1); | |
42 line=stripblanks(line) //enlève les blancs de début et fin, pas les blancs intermédiaires | |
43 | |
44 if meof(id)==0 & line~=[] then // on continue... | |
45 | |
46 // temps départ de l'acquisition: | |
47 if regexp(line,'/scan start time/')~=[] then | |
48 [a]=strsplit(line,','); | |
49 time=strtod(a(2)); | |
50 end | |
51 | |
52 // arrêt de boucle à la fin des spectres de masse: | |
53 if (i<=10*pas) | (x_time($-1)<x_time($)) then // 10*pas pour avoir des valeurs dans x_time | |
54 | |
55 // extraction des données: | |
56 if regexp(line,'/binary:/')~=[] then | |
57 | |
58 a=strsplit(line,']'); | |
59 xtemp=stripblanks(a(2)); // extrait les données (1 x 1) et enlève les blancs de début et de fin | |
60 xtemp=strsplit(xtemp,' '); // met xtemp sous forme d'un vecteur vectical de chaines de caractères | |
61 xtemp=strtod(xtemp); // mise en alpha-numérique | |
62 | |
63 xtemp=xtemp(isnan(xtemp)==%F); // suppression des nan rajoutés accidentellement en fin de fichier xtemp, 16mars17 | |
64 | |
65 if x_masses==[] then | |
66 x_masses=xtemp; | |
67 else | |
68 if size(x_masses,1)==size(xtemp,1) then | |
69 x_masses=[x_masses xtemp]; | |
70 else | |
71 disp('erreur de dimensions ligne 73 de mz_read_txt' ) | |
72 disp(size(x_masses),'size(x_masses)=') | |
73 disp(size(xtemp),'size(x_temp)=') | |
74 pause | |
75 clear x_masses | |
76 end | |
77 | |
78 end | |
79 end | |
80 | |
81 | |
82 // sélection d'un spectre de masse et d'une unité de temps par unité de pas: | |
83 if size(x_masses,2)==2 then | |
84 if floor(i/pas)==ceil(i/pas) then // on en garde 1/pas | |
85 if x_time==[] then | |
86 x_time=time; | |
87 else | |
88 x_time=[x_time;time]; | |
89 end | |
90 x_out(list_index)=x_masses; | |
91 //disp(size(x_out(list_index)),'size(x_out(list_index))=') | |
92 list_index=list_index+1; | |
93 end | |
94 //disp(i,'i=') | |
95 //disp(list_index,'list_index=') | |
96 x_masses=[]; | |
97 i=i+1; | |
98 end | |
99 else // ligne 53 | |
100 end_file=1; | |
101 end // ligne 53 | |
102 | |
103 else // ligne 44 | |
104 //end_file=meof(id) // on arrête la boucle while | |
105 end_file=1; | |
106 end // ligne 44 | |
107 | |
108 end // ligne 39 | |
109 | |
110 mclose(id) | |
111 | |
112 res.time=x_time; | |
113 if size(res.time,1)==1 then | |
114 res.time=res.time'; | |
115 end | |
116 res.mzdata=x_out; | |
117 | |
118 | |
119 | |
120 endfunction |