annotate src/mz_1_read_txt.sci @ 0:03c9a3b59377 draft

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