diff --git a/src/main/java/cz/it4i/qcmp/DataCompressor.java b/src/main/java/cz/it4i/qcmp/DataCompressor.java index a266e1894b5ce1a12aaa1cfda464b03d827dd1e4..966bf6feefd6f279faa270b920ca693c3048839c 100644 --- a/src/main/java/cz/it4i/qcmp/DataCompressor.java +++ b/src/main/java/cz/it4i/qcmp/DataCompressor.java @@ -9,12 +9,9 @@ import cz.it4i.qcmp.cli.functions.EntropyCalculation; import cz.it4i.qcmp.compression.ImageCompressor; import cz.it4i.qcmp.compression.ImageDecompressor; import cz.it4i.qcmp.fileformat.FileExtensions; -import cz.it4i.qcmp.utilities.ColorConsole; -import cz.it4i.qcmp.utilities.Stopwatch; import org.apache.commons.cli.*; import java.io.IOException; -import java.util.concurrent.TimeUnit; public class DataCompressor { public static void main(final String[] args) { @@ -55,23 +52,28 @@ public class DataCompressor { case Compress: { final String label = compressionOptionsCLIParsed.getQuantizationType().toString() + " " + compressionOptionsCLIParsed.getQuantizationVector().toString(); - final Stopwatch stopwatch = Stopwatch.startNew(); + // final Stopwatch stopwatch = Stopwatch.startNew(); final ImageCompressor compressor = new ImageCompressor(compressionOptionsCLIParsed); if (!compressor.compress()) { System.err.println("Errors occurred during compression."); } - stopwatch.stop(); - ColorConsole.printf(ColorConsole.Color.Green, label); - ColorConsole.printf(ColorConsole.Color.Green, - "Compression completed in %d ms.", - stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS)); + // stopwatch.stop(); + // ColorConsole.printf(ColorConsole.Color.Green, label); + // ColorConsole.printf(ColorConsole.Color.Green, + // "Compression completed in %d ms.", + // stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS)); } break; case Decompress: { + // final Stopwatch stopwatch = Stopwatch.startNew(); final ImageDecompressor decompressor = new ImageDecompressor(compressionOptionsCLIParsed); if (!decompressor.decompressToFile()) { System.err.println("Errors occurred during decompression."); } + // stopwatch.stop(); + // ColorConsole.printf(ColorConsole.Color.Green, + // "Decompression completed in %d ms.", + // stopwatch.getElapsedInUnit(TimeUnit.MILLISECONDS)); } break; @@ -90,8 +92,9 @@ public class DataCompressor { // NOTE(Moravec): Custom function class here | // V //CustomFunctionBase customFunction = new MeasurePlaneErrorFunction(parsedCliOptions); - final CustomFunctionBase customFunction = new EntropyCalculation(compressionOptionsCLIParsed); - if (!customFunction.run()) { + // final CustomFunctionBase customFunction = new EntropyCalculation(compressionOptionsCLIParsed); + final CustomFunctionBase cf = new EntropyCalculation(compressionOptionsCLIParsed); + if (!cf.run()) { System.err.println("Errors occurred during custom function."); } } diff --git a/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java index d99e1b3a7372333d19beb3d0bc3b2000805a4938..d58a61e5ed7d53a13972f2f767fb1bbb8213dd95 100644 --- a/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java +++ b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java @@ -6,7 +6,9 @@ import cz.it4i.qcmp.io.loader.IPlaneLoader; import cz.it4i.qcmp.io.loader.PlaneLoaderFactory; import cz.it4i.qcmp.utilities.Utils; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStreamWriter; public class EntropyCalculation extends CustomFunctionBase { /** @@ -20,6 +22,7 @@ public class EntropyCalculation extends CustomFunctionBase { @Override public boolean run() { + System.out.println("Running EntropyCalculation for " + options.getInputDataInfo().getCacheFileName()); final IPlaneLoader loader; try { loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo()); @@ -28,19 +31,24 @@ public class EntropyCalculation extends CustomFunctionBase { return false; } - for (int planeIndex = 0; planeIndex < options.getInputDataInfo().getDimensions().getZ(); planeIndex++) { - final int[] planeData; - try { - planeData = loader.loadPlaneData(planeIndex); - } catch (final IOException e) { - System.err.printf("Failed to load plane %d data. %s", planeIndex, e.getMessage()); - return false; + try (final FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false); + final OutputStreamWriter reportWriter = new OutputStreamWriter(fos)) { + + reportWriter.write("Plane;Entropy\n"); + + for (int planeIndex = 0; planeIndex < options.getInputDataInfo().getDimensions().getZ(); planeIndex++) { + + final int[] planeData = loader.loadPlaneData(planeIndex); + final double planeEntropy = Utils.calculateEntropy(planeData); + reportWriter.write(String.format("%d;%.4f\n", planeIndex, planeEntropy)); } - final double planeEntropy = Utils.calculateEntropy(planeData); - System.out.printf("P: %d\tE: %.4f\n", planeIndex, planeEntropy); + } catch (final IOException e) { + e.printStackTrace(); + return false; } + return true; } }