package uk.ac.leeds.ccg.cluster; import java.awt.*; import java.awt.event.*; import java.util.*; import uk.ac.leeds.ccg.geotools.*; /** A class that implements Knn_ST test */ public class Knn_ST extends SimpleMethod implements Method, Runnable { // Members Knn_STTimeParameters parameters; Knn_STTimeParametersViewer parametersViewer; Database database; Results results; GeoRectangle geoRectangle = null; // Geotools geoRectangle // Methods public static void main(String args[]){ Knn_ST knn_st = new Knn_ST(); knn_st.run(); } public Knn_ST(){ parameters = new Knn_STTimeParameters(); parametersViewer = new Knn_STTimeParametersViewer(parameters); } public String toString() {return "Knn_ST";} public Parameters getParameters() {return parameters;} public ParametersViewer getParametersViewer() {return parametersViewer;} public void setData(Database d) {database=d;} public SignificanceTest getSignificanceTest(){return significanceTest;} public void setSearch(GeoRectangle r) {geoRectangle=r;} public Results getResults(){return results;} public void run(){ double to, from, x, y; double to1, from1, x1, y1; int J_k = 0, J_k2 = 0; int nge = 0; results = new Results(); int k = parameters.getK(); int numRuns = parameters.getNumRuns(); MyPoint p; double stat = (double) 0.0; System.out.println(""+this+" "+significanceTest); if(geoRectangle==null) geoRectangle=database.getBounds(); GeoData gcases = database.getCaseVals(); Vector points = database.getPoints(); int no_points = gcases.getSize(); // double space[][] = new double[no_points][no_points]; double space[] = new double[no_points]; // double time[][] = new double[no_points][no_points]; double time[] = new double[no_points]; int s[][] = new int[no_points][no_points]; int t[][] = new int[no_points][no_points]; int t2[][] = new int[no_points][no_points]; double dist_s[] = new double[no_points]; double dist_t[] = new double[no_points]; int indic[] = new int[no_points]; int perm[] = new int[no_points]; int ntimes, mm; // find the k shortest distances for (int i=0; idist_s[j]){ top_s[kk]=dist_s[j]; index=j; } } dist_s[index]=Double.POSITIVE_INFINITY; // System.out.println("Top " + i +" "+ kk +" "+ top_s[kk]); } for(int kk=0;kkdist_t[j]){ top_t[kk]=dist_t[j]; index=j; } } dist_t[index]=Double.POSITIVE_INFINITY; // System.out.println("Top " + i +" "+ kk +" "+ top_t[kk]); } for (int j=i+1; j