Search in sources :

Example 16 with AbstractClusterResults

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults in project clusterMaker2 by RBVI.

the class FCMCluster method run.

/**
 * The method run creates an instance of the RunFCM and creates the fuzzy clusters by applying the fuzzy c means algorithm.
 * Also creates fuzzy groups and the Fuzzy Cluster Table
 *
 * @param Task Monitor
 */
public void run(TaskMonitor taskmonitor) {
    this.monitor = taskmonitor;
    monitor.setTitle("Performing FCM cluster");
    if (network == null)
        network = clusterManager.getNetwork();
    // Make sure to update the context
    context.setNetwork(network);
    Long networkID = network.getSUID();
    CyTable netAttributes = network.getDefaultNetworkTable();
    CyTable nodeAttributes = network.getDefaultNodeTable();
    CyTable edgeAttributes = network.getDefaultEdgeTable();
    distanceMatrix = context.edgeAttributeHandler.getMatrix();
    if (distanceMatrix == null) {
        monitor.showMessage(TaskMonitor.Level.ERROR, "Can't get distance matrix: no attribute value?");
        return;
    }
    createGroups = context.advancedAttributes.createGroups;
    // Update our tunable results
    clusterAttributeName = "CnC_Bicluster";
    // distanceDataMatrix = new Matrix(network,0,0);
    // distanceDataMatrix.buildDistanceMatrix(distanceMatrix);
    distanceDataMatrix = distanceMatrix.copy();
    if (context.estimateClusterNumber && context.cNumber < 0) {
        // System.out.println("Estimated number of Clusters: "+ cEstimate);
        context.cNumber = cEstimate();
    }
    int[] mostRelevantCluster = new int[network.getNodeList().size()];
    FuzzyNodeCluster.fuzzyClusterCount = 0;
    runFCM = new RunFCM(distanceMatrix, context.iterations, context.cNumber, context.fIndex, context.beta, context.membershipThreshold.getValue(), context.maxThreads, this.monitor);
    runFCM.setDebug(debug);
    if (canceled)
        return;
    monitor.showMessage(TaskMonitor.Level.INFO, "Clustering...");
    List<FuzzyNodeCluster> clusters = runFCM.run(network, monitor, mostRelevantCluster);
    // Canceled?
    if (clusters == null)
        return;
    monitor.showMessage(TaskMonitor.Level.INFO, "Removing groups");
    // Remove any leftover groups from previous runs
    removeGroups(network, GROUP_ATTRIBUTE);
    monitor.showMessage(TaskMonitor.Level.INFO, "Creating groups");
    params = new ArrayList<String>();
    context.edgeAttributeHandler.setParams(params);
    List<List<CyNode>> nodeClusters = createFuzzyGroups(network, clusters, GROUP_ATTRIBUTE);
    results = new AbstractClusterResults(network, clusters);
    monitor.showMessage(TaskMonitor.Level.INFO, "Done.  FCM results:\n" + results);
    if (context.vizProperties.showUI) {
        monitor.showMessage(TaskMonitor.Level.INFO, "Creating network");
        insertTasksAfterCurrentTask(new NewNetworkView(network, clusterManager, true, context.vizProperties.restoreEdges, !selectedOnly));
    } else {
        monitor.showMessage(TaskMonitor.Level.INFO, "Done.  FCM results:\n" + results);
    }
    createFuzzyTable(clusters);
}
Also used : CyTable(org.cytoscape.model.CyTable) NewNetworkView(edu.ucsf.rbvi.clusterMaker2.internal.ui.NewNetworkView) ArrayList(java.util.ArrayList) List(java.util.List) AbstractClusterResults(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults) FuzzyNodeCluster(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.FuzzyNodeCluster)

Example 17 with AbstractClusterResults

use of edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults in project clusterMaker2 by RBVI.

the class AbstractNetworkFilter method run.

public void run(TaskMonitor monitor) {
    monitor.setTitle("Filtering using " + getName());
    this.monitor = monitor;
    if (network == null)
        network = clusterManager.getNetwork();
    clusterAttributeName = getClusterAttributeName();
    // get the cluster list
    List<NodeCluster> clusterList = AbstractNetworkClusterer.getNodeClusters(network, getClusterAttribute());
    List<NodeCluster> newClusterList = new ArrayList<NodeCluster>();
    Map<NodeCluster, List<CyNode>> addedNodeMap = new HashMap<NodeCluster, List<CyNode>>();
    // Iterate over clusters and build a new clusterList
    for (NodeCluster nodeList : clusterList) {
        NodeCluster newCluster = doFilter(nodeList, addedNodeMap);
        if (newCluster != null && newCluster.size() > 0)
            newClusterList.add(newCluster);
    }
    // Fixup our clusters
    if (addedNodeMap.size() > 0) {
        // until this stabelized...
        for (NodeCluster addedCluster : addedNodeMap.keySet()) {
            for (NodeCluster cluster : newClusterList) {
                if (cluster.equals(addedCluster))
                    continue;
                removeNodes(cluster, addedNodeMap.get(addedCluster));
            }
        }
    }
    monitor.showMessage(TaskMonitor.Level.INFO, "Removing groups");
    // Remove any leftover groups from previous runs
    removeGroups(network, groupAttribute);
    monitor.showMessage(TaskMonitor.Level.INFO, "Creating groups");
    List<List<CyNode>> nodeClusters = createGroups(network, newClusterList, groupAttribute);
    results = new AbstractClusterResults(network, clusterList);
    ClusterResults results2 = new AbstractClusterResults(network, newClusterList);
    monitor.showMessage(TaskMonitor.Level.INFO, "Done.  Results:\n\nBefore Filter:\n" + results + "\n\nAfter Filter:\n" + results2);
    if (showUI()) {
        monitor.showMessage(TaskMonitor.Level.INFO, "Creating network");
        insertTasksAfterCurrentTask(new NewNetworkView(network, clusterManager, true, restoreEdges(), false));
    }
}
Also used : FuzzyNodeCluster(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.FuzzyNodeCluster) NodeCluster(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.NodeCluster) NewNetworkView(edu.ucsf.rbvi.clusterMaker2.internal.ui.NewNetworkView) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) CyNode(org.cytoscape.model.CyNode) AbstractClusterResults(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults) AbstractClusterResults(edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults) ClusterResults(edu.ucsf.rbvi.clusterMaker2.internal.api.ClusterResults)

Aggregations

AbstractClusterResults (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.AbstractClusterResults)17 NodeCluster (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.NodeCluster)14 ArrayList (java.util.ArrayList)12 List (java.util.List)12 NewNetworkView (edu.ucsf.rbvi.clusterMaker2.internal.ui.NewNetworkView)11 CyMatrix (edu.ucsf.rbvi.clusterMaker2.internal.api.CyMatrix)6 FuzzyNodeCluster (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.FuzzyNodeCluster)3 PREdge (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.ranking.units.PREdge)3 PRNode (edu.ucsf.rbvi.clusterMaker2.internal.algorithms.ranking.units.PRNode)3 HashMap (java.util.HashMap)3 CyNode (org.cytoscape.model.CyNode)3 CyTable (org.cytoscape.model.CyTable)2 ClusterResults (edu.ucsf.rbvi.clusterMaker2.internal.api.ClusterResults)1 KnnView (edu.ucsf.rbvi.clusterMaker2.internal.ui.KnnView)1 NumberFormat (java.text.NumberFormat)1