Search in sources :

Example 11 with IParameters

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters in project clusterMaker2 by RBVI.

the class ClusteringManagerTask method run.

public void run() {
    try {
        TaskConfig.monitor.setStatusMessage("-----------------------------------");
        TaskConfig.monitor.setStatusMessage("Running ... " + TaskConfig.NAME + " v" + TaskConfig.VERSION);
        Date date = new Date(System.currentTimeMillis());
        TaskConfig.monitor.setStatusMessage(date.toString());
        TaskConfig.monitor.setStatusMessage("-----------------------------------");
        if (TaskConfig.mode == TaskConfig.CLUSTERING_MODE) {
            long time = System.currentTimeMillis();
            this.clusterManager = new ClusteringManager(TaskConfig.cmPath);
            try {
                this.clusterManager.initParametersAndCCs();
                this.clusterManager.runClustering();
                // System.out.println(this.clusterManager.getConnectedComponents().size());
                time = System.currentTimeMillis() - time;
                TaskConfig.monitor.setStatusMessage("Time taken for complete clustering process: " + TaskUtility.convertTime(time));
            } catch (InvalidInputFileException e) {
                TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, e.getMessage());
                // e.printStackTrace();
                System.exit(-1);
            } catch (InvalidTypeException e) {
                TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, e.getMessage());
                // e.printStackTrace();
                System.exit(-1);
            }
        } else /* start general training */
        if (TaskConfig.mode == TaskConfig.GENERAL_TRAINING_MODE) {
            try {
                long time = System.currentTimeMillis();
                ClusteringManager clustermanage = new ClusteringManager(TaskConfig.cmPath);
                GeneralParameterTraining generalParameterTraining = new GeneralParameterTraining(clustermanage);
                IParameters[] layoutParams = generalParameterTraining.runGeneralTraining();
                /* save newly found parameters to config file */
                TaskConfig.saveConfigurationsToConfigFile(TaskConfig.outConfigPath);
                /* print out information about training */
                TaskConfig.monitor.setStatusMessage(TaskConfig.NL + "###### Best Parameter Configurations Found ######");
                for (int i = 0; i < layoutParams.length; i++) {
                    TaskConfig.monitor.setStatusMessage(layoutParams[i].toString());
                    InfoFile.appendLnProjectResults(layoutParams[i].toString());
                }
                time = System.currentTimeMillis() - time;
                TaskConfig.monitor.setStatusMessage("Time taken for complete general training: " + TaskUtility.convertTime(time));
            } catch (InvalidInputFileException e) {
                TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, e.getMessage());
            // e.printStackTrace();
            } catch (InvalidTypeException e) {
                TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, e.getMessage());
            // e.printStackTrace();
            }
        } else if (TaskConfig.mode == TaskConfig.COMPARISON_MODE || TaskConfig.mode == TaskConfig.HIERARICHAL_MODE) {
            Thread t = new IteratorThread();
            t.start();
        } else /* no such mode */
        {
            TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, "ERROR: This mode does not exist: " + TaskConfig.mode);
        }
        /* create info file */
        if (TaskConfig.info) {
            InfoFile info = new InfoFile();
            info.instantiateFile(TaskConfig.infoPath);
            info.createAndCloseInfoFile();
            /* clear information from StringBuffers in InfoFile */
            InfoFile.clearData();
        }
    // /* ====== CLEAN UP AT END ====== */
    } catch (Exception e) {
        TaskConfig.monitor.showMessage(TaskMonitor.Level.ERROR, "ERROR occured in run with the following message: " + e.getMessage());
    // e.printStackTrace();
    }
    /* release permit in semaphore if necessary */
    if (semaphore != null) {
        semaphore.release();
    }
/* reset the run button back to "RUN" and reset action command */
}
Also used : InfoFile(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.taskmanaging.io.InfoFile) IteratorThread(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.iterativeclustering.IteratorThread) Date(java.util.Date) IteratorThread(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.iterativeclustering.IteratorThread)

Example 12 with IParameters

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters in project clusterMaker2 by RBVI.

the class ClusteringTask method runClustering.

private void runClustering(ConnectedComponent cc) {
    ConnectedComponent ccCopy = cc.copy(true);
    new GreedyClusterer(ccCopy);
    if (!TaskConfig.fixedParameter || cc.getNodeNumber() >= TaskConfig.fixedParameterMax)
        TaskConfig.fpStopped = true;
    if (TaskConfig.fixedParameter && cc.getNodeNumber() < TaskConfig.fixedParameterMax) {
        new FixedParameterClusterer(cc, ccCopy.getClusteringScore());
    }
    if (TaskConfig.greedy && TaskConfig.fpStopped) {
        cc.setClusteringScore(Double.MAX_VALUE);
        TaskConfig.fpStopped = false;
    } else if (TaskConfig.fpStopped) {
        // cc.initialiseClusterInfo(ccCopy.getNumberOfClusters());
        // cc.setClusters(ccCopy.getClusters());
        /* ====== LAYOUTING PHASE ====== */
        TaskConfig.fpStopped = false;
        /* iterate over layouters */
        ILayouter previousLayouter = null;
        for (int i = 0; i < this.layouterEnumTypes.length; i++) {
            IParameters param = parameters[i];
            /* create correct layouter */
            ILayouter layouter = this.layouterEnumTypes[i].createLayouter();
            if (previousLayouter == null) {
                /* initialise cc positions if in clustering mode */
                if (TaskConfig.mode == TaskConfig.CLUSTERING_MODE || TaskConfig.mode == TaskConfig.COMPARISON_MODE || TaskConfig.mode == TaskConfig.HIERARICHAL_MODE) {
                    ILayoutInitialiser li = this.layouterEnumTypes[i].createLayoutInitialiser();
                    li.initLayoutInitialiser(cc);
                    /* initialise and run layouter */
                    layouter.initLayouter(cc, li, param);
                    layouter.run();
                    previousLayouter = layouter;
                } else if (TaskConfig.mode == TaskConfig.GENERAL_TRAINING_MODE) {
                    ILayoutInitialiser li = this.layouterEnumTypes[i].createLayoutInitialiser();
                    li.initLayoutInitialiser(cc);
                    /* initialise and run layouter */
                    layouter.initLayouter(cc, li, param);
                    layouter.run();
                    previousLayouter = layouter;
                // // else positions already set for training mode
                // layouter.initLayouter(cc, param);
                // layouter.run();
                // previousLayouter = layouter;
                } else {
                }
            } else {
                /*
					 * initialise and run layouter with previous calculated
					 * positions
					 */
                layouter.initLayouter(cc, previousLayouter, param);
                layouter.run();
            }
        }
        /* ====== GEOMETRIC CLUSTERING */
        IGeometricClusterer geoClust = TaskConfig.geometricClusteringEnum.createGeometricClusterer();
        geoClust.initGeometricClusterer(cc);
        geoClust.run();
    }
    /* ====== POST-PROCESSING ====== */
    if (TaskConfig.doPostProcessing && cc.getClusteringScore() != Double.MAX_VALUE) {
        PostProcessingFactory.EnumPostProcessingClass ppEnum = TaskConfig.postProcessingEnum;
        IPostProcessing pp = ppEnum.createPostProcessor();
        pp.initPostProcessing(cc);
        // additional parameters.
        if (ppEnum.equals(PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER)) {
            ((PP_DivideAndRecluster) pp).setLayoutingInfo(this.parameters, this.layouterEnumTypes);
        } else if (ppEnum.equals(PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER_RECURSIVELY)) {
            ((PP_DivideAndReclusterRecursively) pp).setLayoutingInfo(this.parameters, this.layouterEnumTypes);
        }
        /* run post processing */
        pp.run();
    // ppEnum = PostProcessingFactory.EnumPostProcessingClass.PP_REARRANGE_AND_MERGE_BEST;
    // pp = ppEnum.createPostProcessor();
    // pp.initPostProcessing(cc);
    // pp.run();
    }
    if (TaskConfig.doPostProcessing && ccCopy.getClusteringScore() != Double.MAX_VALUE) {
        PostProcessingFactory.EnumPostProcessingClass ppEnum = TaskConfig.postProcessingEnum;
        IPostProcessing pp = ppEnum.createPostProcessor();
        pp.initPostProcessing(ccCopy);
        // additional parameters.
        if (ppEnum.equals(PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER)) {
            ((PP_DivideAndRecluster) pp).setLayoutingInfo(this.parameters, this.layouterEnumTypes);
        } else if (ppEnum.equals(PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER_RECURSIVELY)) {
            ((PP_DivideAndReclusterRecursively) pp).setLayoutingInfo(this.parameters, this.layouterEnumTypes);
        }
        /* run post processing */
        pp.run();
    // ppEnum = PostProcessingFactory.EnumPostProcessingClass.PP_REARRANGE_AND_MERGE_BEST;
    // pp = ppEnum.createPostProcessor();
    // pp.initPostProcessing(cc);
    // pp.run();
    }
    // if(ccCopy.getClusteringScore()<cc.getClusteringScore()&&ccCopy.getClusteringScore()<=ccCopy2.getClusteringScore()){
    if (ccCopy.getClusteringScore() < cc.getClusteringScore()) {
        cc.initialiseClusterInfo(ccCopy.getNumberOfClusters());
        cc.setClusters(ccCopy.getClusters());
        cc.calculateClusterDistribution();
        cc.setClusteringScore(ccCopy.getClusteringScore());
    } else // else if(ccCopy2.getClusteringScore()<cc.getClusteringScore()&&ccCopy.getClusteringScore()>ccCopy2.getClusteringScore()){
    // cc.initialiseClusterInfo(ccCopy2.getNumberOfClusters());
    // cc.setClusters(ccCopy2.getClusters());
    // cc.calculateClusterDistribution();
    // cc.setClusteringScore(ccCopy2.getClusteringScore());
    // }
    {
    }
}
Also used : IParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters) GreedyClusterer(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.greedy.GreedyClusterer) IGeometricClusterer(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.geometric_clustering.IGeometricClusterer) ConnectedComponent(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.datastructure.ConnectedComponent) ILayouter(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayouter) IPostProcessing(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.IPostProcessing) PostProcessingFactory(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.PostProcessingFactory) PP_DivideAndRecluster(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.PP_DivideAndRecluster) ILayoutInitialiser(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayoutInitialiser) FixedParameterClusterer(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.fixedparameterclustering.FixedParameterClusterer)

Example 13 with IParameters

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters in project clusterMaker2 by RBVI.

the class GeneralParameterTraining method createInitialParameterGeneration.

private IParameters[][] createInitialParameterGeneration() {
    // create enough random configurations to start with
    ArrayList<FORCEnDParameters> parameters = new ArrayList<FORCEnDParameters>();
    for (double attraction = 1; attraction <= 100; attraction += 5) {
        // if((attraction*10)<=repulsion||(repulsion*10)<=attraction) continue;
        for (float temperature = 100; temperature <= 1000; temperature += 100) {
            for (int iterations = 50; iterations < 500; iterations += 50) {
                FORCEnDParameters fndparam = new FORCEnDParameters();
                fndparam.setAttractionFactor(attraction);
                fndparam.setRepulsionFactor(attraction);
                fndparam.setTemperature(temperature);
                fndparam.setIterations(iterations);
                parameters.add(fndparam);
            // System.out.println(" iterations " + iterations);
            }
        // System.out.println(" temperature " + temperature);
        }
    // System.out.println(" repulsion " + repulsion);
    // }
    // System.out.println(" attraction " + attraction);
    }
    // int initialSize = this.generationSize + 10;
    IParameters[][] paramsGen = new IParameters[parameters.size()][TaskConfig.layouterEnumTypes.length];
    // }
    for (int i = 0; i < paramsGen.length; i++) {
        paramsGen[i][0] = parameters.get(i);
    }
    return paramsGen;
}
Also used : FORCEnDParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.forcend.FORCEnDParameters) IParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters) ArrayList(java.util.ArrayList)

Example 14 with IParameters

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters in project clusterMaker2 by RBVI.

the class GeneralParameterTraining method runGeneralTraining.

/**
 * Starts the general parameter training using a simple evolutionary method
 * for the whole input directory (or just one file if
 * this was given). Saves the best found parameters of each layout algorithm to the
 * respective config classes. But does not create a config file.
 *
 * @return The best set of IParameters as an Array.
 * @throws InvalidInputFileException If the input file/directory is somehow
 * 					incorrect or cannot be read.
 * @throws InvalidTypeException If an method type does not exist or hasn't
 * 					been included properly.
 */
public IParameters[] runGeneralTraining() throws InvalidInputFileException, InvalidTypeException {
    /* initialise connected components and parameters */
    this.clusteringManager.initParametersAndCCs();
    ArrayList<File> connectedComponents = clusteringManager.getConnectedComponents();
    /*
		 * initialise positions of the cc with respect to the FIRST layouter - the same 
		 * initial positions are used for all training rounds
		 */
    for (File cc : connectedComponents) {
        ILayoutInitialiser li = TaskConfig.layouterEnumTypes[0].createLayoutInitialiser();
        li.initLayoutInitialiser(new CostMatrixReader(cc).getConnectedComponent());
        li.run();
    }
    boolean terminateTraining = false;
    /* run initial generation */
    IParameters[][] initialGeneration = createInitialParameterGeneration();
    runOneGeneration(initialGeneration, connectedComponents, 0);
    terminateTraining = terminateTraining(initialGeneration);
    /* add the best 10 random configs to the bestConfigs collection Vector */
    for (int i = 0; i < initialGeneration.length; i++) {
        this.bestConfigs.add(initialGeneration[i]);
    }
    /* run all following generations */
    IParameters[][] generation;
    for (int i = 1; i <= this.noOfGenerations; i++) {
        if (terminateTraining) {
            break;
        }
        generation = createParameterGeneration();
        runOneGeneration(generation, connectedComponents, i);
        terminateTraining = terminateTraining(generation);
        for (int j = 0; j < this.generationSize / 2; j++) {
            this.bestConfigs.add(initialGeneration[j]);
        }
    }
    /* convert best configurations vector to array */
    IParameters[][] bestConfigsArray = new IParameters[bestConfigs.size()][TaskConfig.layouterEnumTypes.length];
    for (int i = 0; i < bestConfigs.size(); i++) {
        bestConfigsArray[i] = bestConfigs.get(i);
    }
    /*
		 * sort the IParameters array according to their score and return the
		 * best parameter set.
		 */
    Arrays.sort(bestConfigsArray, this.paramComparator);
    this.bestPreviousIParameters = bestConfigsArray[0];
    for (int i = 0; i < bestConfigsArray[0].length; i++) {
        bestConfigsArray[0][i].saveParametersToConfig();
    }
    for (int i = 0; i < 30; i++) {
        FORCEnDParameters ip = (FORCEnDParameters) bestConfigsArray[i][0];
        ip.printParamters();
    }
    return bestConfigsArray[0];
}
Also used : IParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters) FORCEnDParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.forcend.FORCEnDParameters) CostMatrixReader(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.datastructure.CostMatrixReader) ILayoutInitialiser(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayoutInitialiser) File(java.io.File)

Example 15 with IParameters

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters in project clusterMaker2 by RBVI.

the class GeneralParameterTraining method createParameterGeneration.

private IParameters[][] createParameterGeneration() {
    IParameters[][] paramsGen = new IParameters[this.generationSize][TaskConfig.layouterEnumTypes.length];
    /* add mean of best configs */
    IParameters param = null;
    for (int i = 0; i < TaskConfig.layouterEnumTypes.length; i++) {
        /* get array of best configurations for one layouter */
        IParameters[] bestConfigsArray = new IParameters[bestConfigs.size()];
        for (int j = 0; j < bestConfigs.size(); j++) {
            bestConfigsArray[j] = bestConfigs.get(j)[i];
        }
        param = TaskConfig.layouterEnumTypes[i].createIParameters();
        param.combineConfigurationsRandomly(bestConfigsArray);
        paramsGen[0][i] = param;
    }
    int currentPosition = 0;
    int third = (this.generationSize - 1) / 3;
    /* add combinations of the best configurations for first third */
    for (int i = currentPosition; i < currentPosition + third; i++) {
        for (int j = 0; j < TaskConfig.layouterEnumTypes.length; j++) {
            /* get array of best configurations for one layouter */
            IParameters[] bestConfigsArray = new IParameters[bestConfigs.size()];
            for (int k = 0; k < bestConfigs.size(); k++) {
                bestConfigsArray[k] = bestConfigs.get(k)[j];
            }
            param = TaskConfig.layouterEnumTypes[j].createIParameters();
            param.combineConfigurationsRandomly(bestConfigsArray);
            paramsGen[i][j] = param;
        }
    }
    currentPosition += third;
    /* add combinations of best half plus new random parameters */
    for (int i = currentPosition; i < currentPosition + third; i++) {
        for (int j = 0; j < TaskConfig.layouterEnumTypes.length; j++) {
            /* get array of best configurations for one layouter */
            IParameters[] bestConfigsArray = new IParameters[bestConfigs.size()];
            for (int k = 0; k < bestConfigs.size(); k++) {
                bestConfigsArray[k] = bestConfigs.get(k)[j];
            }
            param = TaskConfig.layouterEnumTypes[j].createIParameters();
            param.combineParametersRandomlyAndGetNewRandom(bestConfigsArray);
            paramsGen[i][j] = param;
        }
    }
    currentPosition += third;
    /* fill the rest with random configuratons */
    for (int i = currentPosition; i < this.generationSize; i++) {
        paramsGen[i] = this.createRandomParametersForLayouters();
    }
    return paramsGen;
}
Also used : IParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters)

Aggregations

IParameters (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters)12 ConnectedComponent (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.datastructure.ConnectedComponent)5 ILayoutInitialiser (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayoutInitialiser)5 IGeometricClusterer (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.geometric_clustering.IGeometricClusterer)3 ILayouter (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayouter)3 FORCEnDParameters (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.forcend.FORCEnDParameters)3 IPostProcessing (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.IPostProcessing)3 ArrayList (java.util.ArrayList)3 CostMatrixReader (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.datastructure.CostMatrixReader)2 FixedParameterClusterer (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.fixedparameterclustering.FixedParameterClusterer)2 GreedyClusterer (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.greedy.GreedyClusterer)2 PP_DivideAndRecluster (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.PP_DivideAndRecluster)2 PostProcessingFactory (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.postprocessing.PostProcessingFactory)2 ClusterFile (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.taskmanaging.io.ClusterFile)2 InfoFile (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.taskmanaging.io.InfoFile)2 File (java.io.File)2 IteratorThread (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.iterativeclustering.IteratorThread)1 IParameterTraining (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.parameter_training.IParameterTraining)1 ClusterTrainingTask (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.taskmanaging.ClusterTrainingTask)1 Date (java.util.Date)1