Search in sources :

Example 1 with IParameters

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

the class ClusterPostProcessingTask method runClustering.

private void runClustering(ConnectedComponent cc) {
    ConnectedComponent ccCopy = cc.copy(true);
    // ccCopy.setClusteringScore(Double.MAX_VALUE);
    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 = this.allparameters[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) {
                    // else positions already set for training mode
                    layouter.initLayouter(cc, param);
                    layouter.run();
                    previousLayouter = layouter;
                }
            } 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) {
        IPostProcessing pp = PostProcessingFactory.EnumPostProcessingClass.PP_REARRANGE_AND_MERGE_BEST.createPostProcessor();
        pp.initPostProcessing(cc);
        /* run post processing */
        pp.run();
    }
    if (TaskConfig.doPostProcessing && ccCopy.getClusteringScore() != Double.MAX_VALUE) {
        IPostProcessing pp = PostProcessingFactory.EnumPostProcessingClass.PP_REARRANGE_AND_MERGE_BEST.createPostProcessor();
        pp.initPostProcessing(ccCopy);
        /* run post processing */
        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 if(ccCopy2.getClusteringScore()<cc.getClusteringScore()&&ccCopy.getClusteringScore()>ccCopy2.getClusteringScore()){
// cc.initialiseClusterInfo(ccCopy2.getNumberOfClusters());
// cc.setClusters(ccCopy2.getClusters());
// cc.calculateClusterDistribution();
// cc.setClusteringScore(ccCopy2.getClusteringScore());
// }else{
// }
}
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) 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 2 with IParameters

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

the class ClusterTrainingTask method runClustering.

private void runClustering(ConnectedComponent cc) {
    /* ====LAYOUTING PHASE ==== */
    ILayouter layouter = layoutEnum.createLayouter();
    layouter.initLayouter(cc, this.parameters);
    layouter.run();
    /* ==== CLUSTERING PHASE ==== */
    IGeometricClusterer geocluster = TaskConfig.geometricClusteringEnum.createGeometricClusterer();
    geocluster.initGeometricClusterer(cc);
    geocluster.run();
    /* ====POST-PROCESSING PHASE ==== */
    if (TaskConfig.doPostProcessing) {
        PostProcessingFactory.EnumPostProcessingClass ppEnum = TaskConfig.postProcessingEnum;
        IPostProcessing pp = ppEnum.createPostProcessor();
        pp.initPostProcessing(cc);
        /* note: training can only be done for one layouter at a time! */
        LayoutFactory.EnumLayouterClass[] layouterTypes = { this.layoutEnum };
        IParameters[] params = { this.parameters };
        if (ppEnum == PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER) {
            ((PP_DivideAndRecluster) pp).setLayoutingInfo(params, layouterTypes);
        } else if (ppEnum == PostProcessingFactory.EnumPostProcessingClass.PP_DIVIDE_AND_RECLUSTER_RECURSIVELY) {
            ((PP_DivideAndReclusterRecursively) pp).setLayoutingInfo(params, layouterTypes);
        }
        pp.run();
    }
}
Also used : IParameters(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.IParameters) IGeometricClusterer(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.geometric_clustering.IGeometricClusterer) 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)

Example 3 with IParameters

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

the class FORCEnDLayouter method initLayouter.

/**
 * This Constructor is for the parameter training. Here the positions should
 * have already been initialised. If this is not so, then the positions are
 * initialised with the correct {@link ILayoutInitialiser} implementation.
 *
 * @param cc
 *            The connected Component.
 * @param parameters
 *            The parameters for FORCEnD.
 */
public void initLayouter(ConnectedComponent cc, IParameters parameters) {
    this.dim = TaskConfig.dimension;
    this.cc = cc;
    this.parameters = (FORCEnDParameters) parameters;
    if (cc.getCCPositions() == null) {
        log.warning("Positions have not been initialised, perhaps" + "wrong use of this constructor!");
        ILayoutInitialiser li;
        li = LayoutFactory.EnumLayouterClass.FORCEND.createLayoutInitialiser();
        li.initLayoutInitialiser(cc);
        li.run();
    }
}
Also used : ILayoutInitialiser(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.layout.ILayoutInitialiser)

Example 4 with IParameters

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

the class ParameterTraining_SE method runOneGeneration.

private void runOneGeneration(IParameters[] generationParameterSet, ConnectedComponent cc, int gen) {
    int size = generationParameterSet.length;
    // List<Semaphore> parallelSem = new ArrayList<Semaphore>();
    for (int i = 0; i < size; i++) {
        /* copy the cc (ConnectedComponent) - shares same resources! */
        ConnectedComponent newCC = cc.copy();
        /* sets a new positions array for the copy */
        newCC.setCCPositions(cc.copyCCPositions());
        /* start clustering */
        ClusterTrainingTask clusteringTask = new ClusterTrainingTask(newCC, generationParameterSet[i], layouterEnum);
        /*check whether threads are being used and do things related to this */
        // if(TaskConfig.useThreads){
        // Semaphore semaphore = new Semaphore(1, true);
        // clusteringTask.setSemaphore(semaphore);
        // parallelSem.add(semaphore);
        // Thread t = new Thread(clusteringTask);
        // clusteringTask.setMaxThreadSemaphore(maxThreadSemaphore, this.allThreads, t);
        // t.start();
        // }else{
        clusteringTask.run();
    // }
    }
/* wait until all threads are done! */
// if (TaskConfig.useThreads) {
// 
// /*
// * For each semaphore it is tested if a permit can be aquired.
// * This forces the main program thread to wait until all threads
// * are finished.
// */
// for (Semaphore sem : parallelSem) {
// sem.acquire();
// }
// }
// 
// } catch (InterruptedException e) {
// /*
// * Exception created by Semaphore.aquire() - if the thread is
// * interrupted
// */
// log.severe(e.getMessage());
// e.printStackTrace();
// }
}
Also used : ConnectedComponent(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.datastructure.ConnectedComponent) ClusterTrainingTask(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.networkClusterers.TransClust.de.layclust.taskmanaging.ClusterTrainingTask)

Example 5 with IParameters

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

the class ParameterTraining_SE method createParameterGeneration.

private IParameters[] createParameterGeneration() {
    IParameters[] paramsGen = new IParameters[this.generationSize];
    IParameters param;
    /* convert best configurations vector to array */
    IParameters[] bestConfigsArray = new IParameters[bestConfigs.size()];
    for (int i = 0; i < bestConfigs.size(); i++) {
        bestConfigsArray[i] = bestConfigs.get(i);
    }
    /* add mean of best configs */
    param = layouterEnum.createIParameters();
    param.combineConfigurationsRandomly(bestConfigsArray);
    paramsGen[0] = param;
    int currentPosition = 1;
    int third = (this.generationSize - 1) / 3;
    /* add combinations of the best configurations for first third */
    for (int i = currentPosition; i < currentPosition + third; i++) {
        param = layouterEnum.createIParameters();
        param.combineConfigurationsRandomly(bestConfigsArray);
        paramsGen[i] = param;
    }
    currentPosition += third;
    /* add combinations of best half plus new random parameters */
    for (int i = currentPosition; i < currentPosition + third; i++) {
        param = layouterEnum.createIParameters();
        param.combineParametersRandomlyAndGetNewRandom(bestConfigsArray);
        paramsGen[i] = param;
    }
    currentPosition += third;
    /* fill the rest with random configuratons */
    for (int i = currentPosition; i < this.generationSize; i++) {
        param = layouterEnum.createIParameters();
        param.createRandomConfiguration();
        paramsGen[i] = param;
    }
    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