Bonjour,
j'ai un problème avec mon script imagej:
Script:
voici la fenetre Debug:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213 // Ouverture du dossier contenant les images à traiter et ou les enregistrer input = getDirectory("Dossier à traiter?"); list = getFileList(input); output = getDirectory("Ou enregistrer?"); Dialog.create("operating system"); Dialog.addChoice("Type:", newArray("Linux", "Windows")); Dialog.show(); type = Dialog.getChoice(); if (type=="Linux") os="\/"; if (type=="Windows") os="\\"; // Liste des images for (i=0; i<list.length; i++) { image = list[i]; path = input + image; // Utilisation de Bio-Formats macro avec recuperation des données run("Bio-Formats Macro Extensions"); Ext.setId(path); Ext.getCurrentFile(file); Ext.getSeriesCount(seriesCount); // Importation de Bio-Formats (chemin du stack d'image, mode couleur,hyperstack, serie d'images) run("Bio-Formats Importer", "open=&path color_mode=Colorized view=Hyperstack stack_order=XYCZT series_"); // Titre de l'image t=getTitle(); // Creation d'un sous repertoire pour y stocker les images finales sub_output = output +t+" Bacteria"; File.makeDirectory(sub_output); close(); //Creation tableau csv table1=*"Results of "+t*; Table.create(table1)*; // Creation Array pour %Bacteria et %Area // Importation des differentes series du numero 4 au maximum for (s=4; s<=seriesCount; s++) { run("Bio-Formats Importer", "open=&path color_mode=Colorized split_channels view=Hyperstack stack_order=XYCZT series_"+s); run("Close"); // Titre de l'image subtitle=getTitle(); run("Duplicate...","title=["+ subtitle+" -Bacteria]"); run("32-bit"); run("Maximum...");//"radius=2" waitForUser; imageCalculator("Subtract create 32-bit", subtitle,subtitle+" -Bacteria"); selectWindow("Result of "+subtitle); setOption("BlackBackground", false); run("Make Binary"); run("Close-"); waitForUser; run("Set Measurements...", "area mean min centroid center perimeter fit median display redirect=None decimal=3"); run("Analyze Particles...", "size=0-Infinity circularity=0.0-1.0 display clear summarize add in_situ"); waitForUser; // Recuperation de la valeur %Area selectWindow("Summary")*; IJ.renameResults("Summary","Results"); pArea=getResult("%Area",0)*; pBacteria=pArea*; waitForUser; // Selection du tableau et insertion des valeurs (nom de l'image, %Area, % bacteria) selectWindow(*"Results of "+t)*; Table.set("Slice", s-4,subtitle)*; Table.set("% Area",s-4,pArea)*; Table.set("% Bacteria",s-4,pBacteria)*; Table.update; waitForUser; // Enregistrement du fichier csv Table.save(sub_output + os + t + " bacteria Summary.csv"); // Enregistrement de l'image et region d'interet selectWindow(subtitle); saveAs("Tiff", sub_output + os+ subtitle+ "+bacteria"); roiManager("Save", sub_output + os + subtitle+ " Bacteria Roi.zip"); waitForUser; } open(sub_output + os + t + " bacteria Summary.csv"); //selectWindow(t + " bacteria Summary.csv"); ValTab=Table.size(); ArrAr=newArray(ValTab); ArrBact=newArray(ValTab); for(i=0;i<=(ValTab-1);i++) { selectWindow( t + " bacteria Summary.csv"); print("tableau: ", t + " bacteria Summary.csv"); print("valeur :",i); ArrAr[i]=getResult("% Area",i); ArrBact[i]=getResult("% Bacteria",i); print("Area :",ArrAr[i]); print("Bacteria :",ArrBact[i]); } waitForUser; Array.sort(ArrAr); Array.sort(ArrBact); LAr=ArrAr.length; LBa=ArrBact.length; // calcul de la mediane if ((LAr % 2)==0){ print("Pair"); MAr1=ArrAr[((LAr/2)-1)]; MAr2=ArrAr[(LAr/2)]; MedArea=((MAr1+MAr2)/2); print(MAr1); print(MAr2); print(MedArea); } if ((LAr % 2)==1){ print("Impair"); MedArea=ArrAr[(LAr/2)]; print(MedArea); } waitForUser; if ((LBa % 2)==0){ print("Pair"); LBa1=ArrBact[((LBa/2)-1)]; LBa2=ArrBact[(LBa/2)]; MedBact=((LBa1+LBa2)/2); print(LBa1); print(LBa2); print(MedBact); } if ((LBa % 2)==1){ print("Impair"); MedBact=ArrBact[(LBa/2)]; print(MedBact); } waitForUser; selectWindow( t + " bacteria Summary.csv"); Array.getStatistics(ArrAr, minA, maxA, meanA, stdA); Table.set("Slice", ValTab,"Mean"); Table.set("% Area",ValTab, meanA); Table.set("Slice", ValTab+1,"Median"); Table.set("% Area",ValTab+1, MedArea); Table.set("Slice", ValTab+2,"Min"); Table.set("% Area",ValTab+2, minA); Table.set("Slice", ValTab+3,"Max"); Table.set("% Area",ValTab+3, maxA); Table.set("Slice", ValTab+4,"SD"); Table.set("% Area",ValTab+4, stdA); Table.update; Array.getStatistics(ArrBact, minB, maxB, meanB, stdB); Table.set("Slice",ValTab,"Mean"); Table.set("% Bacteria",ValTab, meanB); Table.set("Slice", ValTab+1,"Median"); Table.set("% Bacteria",ValTab+1, MedBact); Table.set("Slice", ValTab+2,"Min"); Table.set("% Bacteria",ValTab+2, minB); Table.set("Slice", ValTab+3,"Max"); Table.set("% Bacteria",ValTab+3, maxB); Table.set("Slice", ValTab+4,"SD"); Table.set("% Bacteria",ValTab+4, stdB); Table.update; Table.save(sub_output + os + t + " bacteria Summary.csv"); }
voici ce que retourne la fenetre log:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Memory * 185MB of 1820MB (10%) nImages() * 18 getTitle() * "image.lif - Image009 - C=0+bacteria.tif" input * "/home/user/Bureau/images/" list * array[1] output * "/home/user/Bureau/images/" type * "Linux" os * "/" i * 1 image * "image.lif" path * "/home/user/Bureau/images/image.lif" file * "/home/user/Bureau/images/image.lif" seriesCount * 9 t * "image.lif - Series001" sub_output * "/home/user/Bureau/images/image.lif - Series001 Bacteria" table1 * "Results of image.lif - Series001" s * 10 subtitle * "image.lif - Image009 - C=0" pArea * 28.7523 pBacteria * 28.7523 ValTab * 6 ArrAr * array[6] ArrBact * array[6] --- --- Error: Row (1) out of range in line 119: ArrAr [ i ] = getResult ( "% Area" , i <)> ;
voici ce que retourne mon tableau de valeurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 image: image.lif - Series001 bacteria Summary.csv valeur : 0 Area : NaN Bacteria : NaN image: image.lif - Series001 bacteria Summary.csv valeur : 1
Je ne sais pas à quoi cela est du.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Slice % Area %Bacteria image.lif - Image004 - C=0 31.155 31.155 image.lif - Image005 - C=0 33.537 33.537 image.lif - Image006 - C=0 32.691 32.691 image.lif - Image007 - C=0 29.726 29.726 image.lif - Image008 - C=0 30.546 30.546 image.lif - Image009 - C=0 28.752 28.752
Car si j'utilise ce script:
et voici ce que retourne mon tableau:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165 // Ouverture du dossier contenant les images � traiter et ou les enregistrer input = getDirectory("Dossier � traiter?"); list = getFileList(input); output = getDirectory("O� enregistrer?"); Dialog.create("operating system"); Dialog.addChoice("Type:", newArray("Linux", "Windows")); Dialog.show(); type = Dialog.getChoice(); if (type=="Linux") os="\/"; if (type=="Windows") os="\\"; // Liste des images for (i=0; i<list.length; i++) { image = list[i]; path = input + image; // Utilisation de Bio-Formats macro avec recuperation des donn�es run("Bio-Formats Macro Extensions"); Ext.setId(path); Ext.getCurrentFile(file); Ext.getSeriesCount(seriesCount); // Importation de Bio-Formats (chemin du stack d'image, mode couleur,hyperstack, serie d'images) run("Bio-Formats Importer", "open=&path color_mode=Colorized view=Hyperstack stack_order=XYCZT series_"); // Titre de l'image t=getTitle(); // Creation d'un sous repertoire pour y stocker les images finales sub_output = output +t+" Bacteria"; File.makeDirectory(sub_output); close(); //Creation tableau csv table1=*"Results of "+t*; Table.create(table1)*; // Creation Array pour %Bacteria et %Area // Importation des differentes series du numero 4 au maximum for (s=4; s<=seriesCount; s++) { run("Bio-Formats Importer", "open=&path color_mode=Colorized split_channels view=Hyperstack stack_order=XYCZT series_"+s); run("Close"); // Titre de l'image subtitle=getTitle(); print("Inserer ici le script"); waitForUser; } open(sub_output + os + t + " bacteria Summary.csv"); //selectWindow(t + " bacteria Summary.csv"); ValTab=Table.size(); ArrAr=newArray(ValTab); ArrBact=newArray(ValTab); for(i=0;i<=(ValTab-1);i++) { selectWindow( t + " bacteria Summary.csv"); print("image: ", t + " bacteria Summary.csv"); print("valeur :",i); ArrAr[i]=getResult("% Area",i); ArrBact[i]=getResult("% Bacteria",i); print("Area :",ArrAr[i]); print("Bacteria :",ArrBact[i]); } waitForUser; Array.sort(ArrAr); Array.sort(ArrBact); LAr=ArrAr.length; LBa=ArrBact.length; // calcul de la mediane if ((LAr % 2)==0){ print("Pair"); MAr1=ArrAr[((LAr/2)-1)]; MAr2=ArrAr[(LAr/2)]; MedArea=((MAr1+MAr2)/2); print(MAr1); print(MAr2); print(MedArea); } if ((LAr % 2)==1){ print("Impair"); MedArea=ArrAr[(LAr/2)]; print(MedArea); } waitForUser; if ((LBa % 2)==0){ print("Pair"); LBa1=ArrBact[((LBa/2)-1)]; LBa2=ArrBact[(LBa/2)]; MedBact=((LBa1+LBa2)/2); print(LBa1); print(LBa2); print(MedBact); } if ((LBa % 2)==1){ print("Impair"); MedBact=ArrBact[(LBa/2)]; print(MedBact); } waitForUser; selectWindow( t + " bacteria Summary.csv"); Array.getStatistics(ArrAr, minA, maxA, meanA, stdA); Table.set("Slice", ValTab,"Mean"); Table.set("% Area",ValTab, meanA); Table.set("Slice", ValTab+1,"Median"); Table.set("% Area",ValTab+1, MedArea); Table.set("Slice", ValTab+2,"Min"); Table.set("% Area",ValTab+2, minA); Table.set("Slice", ValTab+3,"Max"); Table.set("% Area",ValTab+3, maxA); Table.set("Slice", ValTab+4,"SD"); Table.set("% Area",ValTab+4, stdA); Table.update; Array.getStatistics(ArrBact, minB, maxB, meanB, stdB); Table.set("Slice",ValTab,"Mean"); Table.set("% Bacteria",ValTab, meanB); Table.set("Slice", ValTab+1,"Median"); Table.set("% Bacteria",ValTab+1, MedBact); Table.set("Slice", ValTab+2,"Min"); Table.set("% Bacteria",ValTab+2, minB); Table.set("Slice", ValTab+3,"Max"); Table.set("% Bacteria",ValTab+3, maxB); Table.set("Slice", ValTab+4,"SD"); Table.set("% Bacteria",ValTab+4, stdB); Table.update; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Slice % Area %Bacteria image.lif - Image004 - C=0 31.155 31.155 image.lif - Image005 - C=0 33.537 33.537 image.lif - Image006 - C=0 32.691 32.691 image.lif - Image007 - C=0 29.726 29.726 image.lif - Image008 - C=0 30.546 30.546 image.lif - Image009 - C=0 28.752 28.752 Mean 31.068 31.068 Median 30.851 30.851 Min 28.752 28.752 Max 33.537 33.537 SD 1.799 1.799 C'est ce que je doit obtenir a la fin
Merci pour votre aide.
Partager