/* * Method to write to file */ public void write(File baseFile) { // Cross platform new line character String newLine = System.getProperty("line.separator"); String fileName = baseFile.getName(); if (fileName.endsWith("." + Utils.MODEL_EXT)) fileName = Utils.removeExtension(fileName); File file = new File(baseFile.getParent(), fileName + "_" + label + "." + Utils.MODEL_EXT); try { // FileWriter baseFileWriter = new FileWriter(baseFile); // baseFileWriter.write(file.getPath() + newLine + "EOF"); // baseFileWriter.flush(); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); // Write comment section writer.write("# Image Set: " + imageSet + newLine); if (this.testingSet != null) { writer.write("# Testing Set: " + testingSet + newLine); } writer.write("# Image Size: " + imageSize + newLine); writer.write("# Mode: " + mode + newLine); writer.write("# Channel: " + channel + newLine); writer.write("# Result: " + result * 100 + "%" + newLine); writer.write("# Label: " + label + newLine); if (classNames != null && classNames.size() > 0) { writer.write("# Classes: "); for (String key : classNames.keySet()) { writer.write(key + ":" + classNames.get(key) + " "); } writer.newLine(); } writer.newLine(); setProgress(5); // Write feature extractor for (Extractor ex : extractors) { writer.write("[FEATURE_EXTRACTOR]" + newLine); writer.write("Name=" + ex.getName() + newLine); writer.write("ClassName=" + ex.getClassName() + newLine); writer.write("Path=" + ex.getExternalPath() + newLine); writer.write("[PARAMETER_START]" + newLine); for (String parameter : ex.getParams().keySet()) { writer.write(parameter + "=" + ex.getParams().get(parameter) + newLine); } writer.write("[PARAMETER_END]" + newLine); } setProgress(15); // Write feature selector for (Selector sel : selectors) { writer.write("[FEATURE_SELECTOR]" + newLine); writer.write("Name=" + sel.getName() + newLine); int[] selectedIndices = sel.getSelectedIndices(); if (selectedIndices != null) { writer.write("[SELECTED_INDICES_START]" + newLine); for (int i = 0; i < selectedIndices.length; i++) { writer.write(selectedIndices[i] + newLine); } writer.write("[SELECTED_INDICES_END]" + newLine); } } setProgress(30); // Write classifier for (ClassifierInfo classifierInfo : classifiersInfo) { writer.write("[CLASSIFIER]" + newLine); writer.write("Name=" + classifierInfo.getName() + newLine); writer.write("ClassName=" + classifierInfo.getClassName() + newLine); writer.write( "Path=" + classifierInfo.getExternalPath() + newLine); // External classifier (i.e. plugin) or null // Write classifier parameters writer.write("[PARAMETER_START]" + newLine); for (String parameter : classifierInfo.getParams().keySet()) { writer.write(parameter + "=" + classifierInfo.getParams().get(parameter) + newLine); } writer.write("[PARAMETER_END]" + newLine); } String modelfileName = getUniqueFileName(file.getParent(), fileName + "_" + label + "_model"); String modelPath = file.getParent() + File.separatorChar + modelfileName; ((SavableClassifier) classifier) .saveModel(((SavableClassifier) classifier).getModel(), modelPath); writer.write("Path=" + modelfileName + newLine); /* //Write Ensemble writer.write("[Ensemble]" + newLine); writer.write("Name=" + ensembleName + newLine); writer.write("EnsName=" + ensembleClass + newLine); writer.write("Path=" + ensemblePath + newLine); //External Ensemble (i.e. plugin) or null //Write classifier parameters writer.write("[PARAMETER_START]" + newLine); for (String parameter : ensParams.keySet()) { writer.write(parameter + "=" + ensParams.get(parameter) + newLine); } writer.write("[PARAMETER_END]" + newLine); */ /* Removed 1/16/2014 //Write classifier writer.write("[CLASSIFIER]" + newLine); writer.write("Name=" + classifierName + newLine); writer.write("ClassName=" + classifierClass + newLine); writer.write("Path=" + classifierPath + newLine); //External classifier (i.e. plugin) or null //Write classifier parameters writer.write("[PARAMETER_START]" + newLine); for (String parameter : classParams.keySet()) { writer.write(parameter + "=" +classParams.get(parameter) + newLine); } writer.write("[PARAMETER_END]" + newLine); //Save trained model of the classifier if(classifier != null) { if(classifier instanceof SavableClassifier) { String modelfileName = getUniqueFileName(file.getParent(), fileName + "_" + label + "_model"); String modelPath = file.getParent() + File.separatorChar + modelfileName; ((SavableClassifier)classifier).saveModel(((SavableClassifier)classifier).getModel(), modelPath); writer.write("Path=" + modelfileName + newLine); } } */ setProgress(80); writer.flush(); writer.close(); setProgress(100); } catch (IOException ex) { System.out.println("Exception occured while writing file: " + file.getName()); System.out.println("Exception: " + ex.getMessage()); ex.printStackTrace(); } }