IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ImageJ Java Discussion :

probleme script enregistrement de valeurs dans un fichier csv


Sujet :

ImageJ Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 45
    Points
    45
    Par défaut probleme script enregistrement de valeurs dans un fichier csv
    Bonjour,

    j'ai un problème avec mon script imagej:

    Script:
    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 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
     
    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 la fenetre log:

    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
    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
     
    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
    Je ne sais pas à quoi cela est du.

    Car si j'utilise ce script:

    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;
    }
    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
     
    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.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    J'ai resolu mon probleme:

    dans les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ArrAr[i]=getResult("% Area",i);
    ArrBact[i]=getResult("% Bacteria",i);
    il faut les remplacer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ArrAr[i]=Table.get("% Area",i);
    ArrBact[i]=Table.get("% Bacteria",i);
    Bien cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ajouter des valeurs dans un fichier CSV avec PERL?
    Par GandalfLeGris1 dans le forum Langage
    Réponses: 9
    Dernier message: 06/06/2018, 20h24
  2. [WM18] Comment enregistrer des valeurs dans un fichier texte sous IOS
    Par nico78 dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 26/08/2013, 15h13
  3. Réponses: 4
    Dernier message: 07/07/2011, 11h17
  4. Scanner une valeur dans un fichier CSV
    Par Pierre.B dans le forum Général Java
    Réponses: 2
    Dernier message: 26/05/2010, 16h50
  5. Enregistrement des valeurs dans un fichier
    Par jprl12 dans le forum Langage
    Réponses: 3
    Dernier message: 05/09/2007, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo