diff --git a/src/fr/inrialpes/exmo/align/util/GenPlot.java b/src/fr/inrialpes/exmo/align/util/GenPlot.java index 6e9d3489fd521afe11b4e571b78203b8aef70746..3d91f94a519e0a3a1c86e5196ef734d11ee1e018 100644 --- a/src/fr/inrialpes/exmo/align/util/GenPlot.java +++ b/src/fr/inrialpes/exmo/align/util/GenPlot.java @@ -1,6 +1,5 @@ /* * $Id$ - * MULT * * Copyright (C) 2003 The University of Manchester * Copyright (C) 2003 The University of Karlsruhe @@ -63,35 +62,40 @@ import gnu.getopt.Getopt; import fr.inrialpes.exmo.align.parser.AlignmentParser; /** A basic class for synthesizing the alignment results of an algorithm by a - precision recall graph. - - <pre> - java -cp procalign.jar fr.inrialpes.exmo.align.util.GenPlot [options] - </pre> - - where the options are: - <pre> - -o filename --output=filename - -d debug --debug=level - -l list of compared algorithms - -t output --type=output: xml/tex/html/ascii - </pre> - - The input is taken in the current directory in a set of subdirectories (one per - test) each directory contains a the alignment files (one per algorithm) for that test and the - reference alignment file. - - If output is - requested (<CODE>-o</CODE> flags), then output will be written to - <CODE>output</CODE> if present, stdout by default. - -<pre> -$Id$ -</pre> - -@author Sean K. Bechhofer -@author Jérôme Euzenat - */ + * precision recall graph. + * + * These graphs are however computed on averaging the precision recall/graphs + * on test directories instead of recording the actual precision recall graphs + * which would amount at recoding all the valid and invalid alignment cells and + * their level. + * + * <pre> + * java -cp procalign.jar fr.inrialpes.exmo.align.util.GenPlot [options] + * </pre> + * + * where the options are: + * <pre> + * -o filename --output=filename + * -d debug --debug=level + * -l list of compared algorithms + * -t output --type=output: xml/tex/html/ascii + * </pre> + * + * The input is taken in the current directory in a set of subdirectories (one per + * test) each directory contains a the alignment files (one per algorithm) for that test and the + * reference alignment file. + * + * If output is + * requested (<CODE>-o</CODE> flags), then output will be written to + * <CODE>output</CODE> if present, stdout by default. + * + * <pre> + * $Id$ + * </pre> + * + * @author Sean K. Bechhofer + * @author Jérôme Euzenat + */ public class GenPlot { @@ -167,7 +171,7 @@ public class GenPlot { /** * Iterate on each subdirectory * Returns a vector[ each algo ] of vector [ each point ] - * The points are computing by aggregating the values + * The points are computed by aggregating the values * (and in the end computing the average) */ public static double[][] iterateDirectories (){ @@ -254,7 +258,7 @@ public class GenPlot { params.setParameter( "debug", new Integer( nextdebug ) ); eval.eval( params ) ; - // Unload the ontologies. + // Unload the ontologies. for ( Enumeration e = loaded.elements() ; e.hasMoreElements(); ){ OWLOntology o = (OWLOntology)e.nextElement(); o.getOWLConnection().notifyOntologyDeleted( o ); diff --git a/src/fr/inrialpes/exmo/align/util/GroupAlign.java b/src/fr/inrialpes/exmo/align/util/GroupAlign.java index e4c4cf279d133ae3caccbcd27a65a5cabcbdaa22..d53cfc9ba19bf8ce66e351516b2bdcd5a71d7458 100644 --- a/src/fr/inrialpes/exmo/align/util/GroupAlign.java +++ b/src/fr/inrialpes/exmo/align/util/GroupAlign.java @@ -315,7 +315,10 @@ public class GroupAlign { if (debug > 1) System.err.println(" Alignment structure created"); // Compute alignment + long time = System.currentTimeMillis(); result.align(init, params); // add opts + long newTime = System.currentTimeMillis(); + //result.setTime( newTime - time ); if (debug > 1) System.err.println(" Alignment performed"); diff --git a/src/fr/inrialpes/exmo/align/util/GroupEval.java b/src/fr/inrialpes/exmo/align/util/GroupEval.java index c4cfc2dd2329e37b50637cc8dc76f9faaacdbd17..7e8e1334c22b6848a3c5e1099700cdc1c830c593 100644 --- a/src/fr/inrialpes/exmo/align/util/GroupEval.java +++ b/src/fr/inrialpes/exmo/align/util/GroupEval.java @@ -266,6 +266,7 @@ public class GroupEval { int expected = 0; // expected so far int foundVect[]; // found so far int correctVect[]; // correct so far + long timeVect[]; // time so far double hMeansPrec[]; // Precision H-means so far double hMeansRec[]; // Recall H-means so far PrintStream writer = null; @@ -306,6 +307,8 @@ public class GroupEval { writer.print("FMeas."); } else if ( format.charAt(i) == 'o' ) { writer.print("Over."); + } else if ( format.charAt(i) == 't' ) { + writer.print("Time"); } writer.println("</td>"); } @@ -314,11 +317,13 @@ public class GroupEval { writer.println("</tr></tbody><tbody>"); foundVect = new int[ listAlgo.size() ]; correctVect = new int[ listAlgo.size() ]; + timeVect = new long[ listAlgo.size() ]; hMeansPrec = new double[ listAlgo.size() ]; hMeansRec = new double[ listAlgo.size() ]; for( int k = listAlgo.size()-1; k >= 0; k-- ) { foundVect[k] = 0; correctVect[k] = 0; + timeVect[k] = 0; hMeansPrec[k] = 1.; hMeansRec[k] = 1.; } @@ -356,6 +361,7 @@ public class GroupEval { int ncorrect = eval.getCorrect(); int ocorrect = correctVect[k]; correctVect[k] = ocorrect + ncorrect; + timeVect[k] += eval.getTime(); for ( int i = 0 ; i < fsize; i++){ writer.print("<td>"); @@ -369,6 +375,12 @@ public class GroupEval { printFormat(writer,eval.getFmeasure()); } else if ( format.charAt(i) == 'o' ) { printFormat(writer,eval.getOverall()); + } else if ( format.charAt(i) == 't' ) { + if ( eval.getTime() == 0 ){ + writer.print("-"); + } else { + printFormat(writer,eval.getTime()); + } } writer.println("</td>"); } @@ -396,6 +408,12 @@ public class GroupEval { printFormat(writer,2 * precision * recall / (precision + recall)); } else if ( format.charAt(i) == 'o' ) { printFormat(writer,recall * (2 - (1 / precision))); + } else if ( format.charAt(i) == 't' ) { + if ( timeVect[k] == 0 ){ + writer.print("-"); + } else { + printFormat(writer,timeVect[k]); + } } writer.println("</td>"); }; @@ -430,7 +448,7 @@ public class GroupEval { public static void usage() { System.out.println("usage: GroupEval [options]"); System.out.println("options are:"); - System.out.println("\t--format=prfmo -r prfmo\tSpecifies the output order (precision/recall/fallout/f-measure/overall)"); + System.out.println("\t--format=prfmot -r prfmot\tSpecifies the output order (precision/recall/fallout/f-measure/overall/time)"); System.out.println("\t--dominant=algo -s algo\tSpecifies if dominant columns are algorithms or measure"); System.out.println("\t--type=html|xml|tex|ascii -t html|xml|tex|ascii\tSpecifies the output format"); System.out.println("\t--list=algo1,...,algon -l algo1,...,algon\tSequence of the filenames to consider");