/** * Initializes the tile grid * * @param params the stitching parameters * @param classType the class type */ public TileGrid(StitchingAppParams params, Class<?> classType) throws InvalidClassException { this( params.getInputParams().getStartRow(), params.getInputParams().getStartCol(), params.getInputParams().getExtentWidth(), params.getInputParams().getExtentHeight(), params.getInputParams().getTileGridLoader(), new File(params.getInputParams().getImageDir()), classType); }
private static void runFolder(boolean useMLE) { // get all folders in root folder File rootFolder = new File(validationRootFolder); if (!rootFolder.exists() && !rootFolder.isDirectory()) { System.out.println("Error: Unable to find root folder: " + validationRootFolder); System.exit(1); } File[] roots = rootFolder.listFiles(); CUDAPanel cudaPanel = new CUDAPanel(); // JFrame frame = new JFrame("Select CUDA Devices"); // JOptionPane.showMessageDialog(frame, cudaPanel); Log.setLogLevel(LogType.NONE); // Log.setLogLevel(LogType.MANDATORY); StitchingAppParams params; File runtimeResults; if (useMLE) { runtimeResults = new File(validationRootFolder + File.separator + "mle-runtimes.txt"); } else { runtimeResults = new File(validationRootFolder + File.separator + "runtimes.txt"); } try { FileWriter writer = new FileWriter(runtimeResults); writer.write("testCase, totalTime" + "\n"); for (File r : roots) { if (!r.isDirectory()) continue; params = new StitchingAppParams(); File paramFile = new File(r, STITCHING_PARAMS_FILE); if (!paramFile.exists()) continue; System.out.println("Running: " + r.getAbsolutePath()); params.loadParams(paramFile); List<CudaDeviceParam> cudaDevices = cudaPanel.getSelectedDevices(); params.getInputParams().setImageDir(r.getAbsolutePath()); params.getAdvancedParams().setNumCPUThreads(Runtime.getRuntime().availableProcessors()); params.getAdvancedParams().setPlanPath(fftwPlanPath); params.getAdvancedParams().setFftwLibraryPath(fftwLibraryPath); params.getAdvancedParams().setFftwPlanType(FftwPlanType.MEASURE); params.getAdvancedParams().setCudaDevices(cudaPanel.getSelectedDevices()); params.getOutputParams().setOutputMeta(false); params .getOutputParams() .setOutputPath(r.getAbsolutePath() + File.separator + "RunTimeResults"); // set the metadata path to the output path params.getOutputParams().setOutputFullImage(true); params.getOutputParams().setDisplayStitching(false); // params.getAdvancedParams().setNumCPUThreads(8); if (useMLE) { params.getAdvancedParams().setOverlapComputationType(OptimizationUtils.OverlapType.MLE); params .getAdvancedParams() .setTranslationFilterType(OptimizationUtils.TranslationFilterType.Outlier); } else { params .getAdvancedParams() .setOverlapComputationType(OptimizationUtils.OverlapType.Heuristic); params .getAdvancedParams() .setTranslationFilterType(OptimizationUtils.TranslationFilterType.StandardDeviation); } for (StitchingType t : StitchingType.values()) { String testCase = t.toString() + "-" + r.getName(); if (t == StitchingType.AUTO || t == StitchingType.JAVA || t == StitchingType.FFTW) continue; if (t == StitchingType.CUDA) { if (!cudaPanel.isCudaAvailable()) continue; } double totalRunTime = 0; for (int run = 0; run < NUM_RUNS; run++) { System.out.println("Run " + run + " Stitching Type: " + t + " " + testCase); // File metaDataPath = new File(r, t.name().toLowerCase()); // File metaDataPath = new File(r, "seq"); // params.getOutputParams().setMetadataPath(metaDataPath.getAbsolutePath()); params.getAdvancedParams().setProgramType(t); params.getAdvancedParams().setNumFFTPeaks(2); StitchingExecutor executor = new StitchingExecutor(params); try { executor.runStitching(false, false, false); } catch (StitchingException e) { Log.msg(LogType.MANDATORY, e.getMessage()); } StitchingStatistics stats = executor.getStitchingStatistics(); totalRunTime += stats.getDuration(StitchingStatistics.RunTimers.TotalStitchingTime); } double avgRunTime = totalRunTime / ((double) NUM_RUNS); writer.write(testCase + ", " + avgRunTime + "\n"); writer.flush(); } } writer.close(); } catch (IOException e) { e.printStackTrace(); } }