// (c) 2000 Benjamin Fry, MIT Media Laboratory, fry@media.mit.edu
// Aesthetics + Computation Group, Massachussetts Institute of Technology


import java.awt.*; 
import java.awt.event.*;


public class EisenCAST {
  static public void main(String args[]) {
    try {
      System.out.println("loading microarray data...");
      //MicroArray array = MicroArray.fromCdtFile("cdt/yeast-demo.cdt");
      //MicroArray array = MicroArray.fromCdtFile("cdt/gasch-figure3.cdt");
      MicroArray array = MicroArray.fromCdtFile("cdt/eisen-figure2.cdt");
      System.out.println("building similarity matrix...");
      SimilarityMatrix matrix = 
	//new SimilarityMatrixCache(array, SimilarityMatrix.CORRELATION_COEFF);
	new SimilarityMatrixCache("cdt/eisen-figure2.sim");
      matrix.array = array;

      System.out.println("setting up output environment...");
      Frame frame = new Frame("similarity");
      frame.setLayout(new FlowLayout());
      OutputEnvironment output = new OutputEnvironment(array, matrix);
      frame.add(output);

      ArrayOutputEnvironment aoutput = null;
      if (array != null) {
	aoutput = new ArrayOutputEnvironment(array, matrix);
	frame.add(aoutput);
	output.aoutput = aoutput;
      }

      frame.pack();
      frame.setLocation(100, 50);
      frame.show();

      WindowAdapter windowListener = new WindowAdapter() {
	  public void windowClosing(WindowEvent e) {
	    System.exit(0);
	  }
	};
      frame.addWindowListener(windowListener);

      System.out.println("starting cast algorithm...");
      ClusterMethodCAST method = 
	new ClusterMethodCAST(matrix, output, aoutput, 
			      new Float(args[0]).floatValue());
      output.method = method;
      if (output.aoutput != null) output.aoutput.method = method;
      method.start();

    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}

