/* * This is the main class to execute the computation and get the GOID. */ import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.Vector; import weka.core.Instances; /** * * @author DTian */ public class ExecMain { public static void main(String[] args) { // SGD2AttrTable sgd = new SGD2AttrTable(); // Get clusters try { // Check the input arguments checkParameters(args.length); GetClusters myGetClusters = new GetClusters(); // To get the input file type Instances oriData = myGetClusters.input(args[0]); // Get the output files name String outputWholeCluster = args[0] + "-WholeTree.txt"; String outputFinalTable = args[0] + "-finalTable.csv"; String outputSummary = args[0] + "-summary.csv"; boolean fromFunction = true?false:args[4].trim().compareToIgnoreCase("true") == 0; // Create the root cluster name int round = 1; //for tree level int position = 0; // for node position in same level String rootName = (round-1)+"-"+position+"-"+0; // System.out.println("root cluster is:" + rootName); myGetClusters.printRootName(outputWholeCluster,rootName); // Create a vector for fianl table Vector vecFinalTable = new Vector(); Vector vecSummary = new Vector(); //get the variable name vecFinalTable.addElement(myGetClusters.printTableHead(oriData)); // Create the root node TreeNode root = new TreeNode(rootName,0.0,oriData,null); OutputStreamWriter xmlWriter = new OutputStreamWriter( new FileOutputStream(new File("tree.xml"), true)); xmlWriter.write(" \n \n \n \n"); xmlWriter.write(" \n \n"); xmlWriter.flush(); // Recursive clustering the data myGetClusters.clustering( root, round, ""+position, vecFinalTable, vecSummary, outputWholeCluster, xmlWriter, args[1], args[2], args[3], fromFunction ); xmlWriter.write(" \n"); xmlWriter.write("\n"); xmlWriter.close(); // Output final result myGetClusters.printVector(vecFinalTable,outputFinalTable); myGetClusters.printVector(vecSummary,outputSummary); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } /** * check the number of the arguments: * java GetCluster arg1 arg2 ... * * @param length the length of the arguments * in this program, length should be 1 */ private static void checkParameters(int length) { if(length != 5) { // there are 5 parameters, 1,file for clustering; 2, lookup table file; // 3, backgroud file; 4, repeat counts(an integer) 5, GoIDfromFunction (boolean) System.out.println("Usage: java ExecMain clusterFileName GoMatrixFilename backGroundFilename repeatTime true|false"); System.exit(1); } } }