/** Add any nodes that are above the neighbor threshold to our cluster */ public NodeCluster doFilter(List<CyNode> nodeList, Map<NodeCluster, List<CyNode>> addedNodeMap) { Set<CyNode> clusterNodes = new HashSet<CyNode>(nodeList); List<CyNode> newNodeList = new ArrayList<CyNode>(); newNodeList.addAll(nodeList); List<CyNode> nodesToAdd = new ArrayList<CyNode>(); for (CyNode node : nodeList) { for (CyNode neighbor : network.getNeighborList(node, CyEdge.Type.ANY)) { if (clusterNodes.contains(neighbor)) continue; double adjacency = getAdjacency(neighbor, clusterNodes); if (adjacency > context.threshold) { // Add this node to our list nodesToAdd.add(neighbor); } } } newNodeList.addAll(nodesToAdd); if (newNodeList.size() > 1) { NodeCluster newNodeCluster = new NodeCluster(newNodeList); if (nodesToAdd.size() > 0) addedNodeMap.put(newNodeCluster, nodesToAdd); return newNodeCluster; } return null; }
/** Will fail if it doesn't find the specified interaction. */ protected void findInteraction( CyNetwork net, String source, String target, String interaction, int count) { for (CyNode n : net.getNodeList()) { String sname = net.getRow(n).get(CyNetwork.NAME, String.class); assertNotNull("Source name is NULL", sname); if (source.equals(sname)) { List<CyNode> neigh = net.getNeighborList(n, CyEdge.Type.ANY); assertEquals("wrong number of neighbors", count, neigh.size()); for (CyNode nn : neigh) { String tname = net.getRow(nn).get(CyNetwork.NAME, String.class); assertNotNull("Target name is NULL", tname); if (tname.equals(target)) { List<CyEdge> con = net.getConnectingEdgeList(n, nn, CyEdge.Type.ANY); assertTrue("Connecting edge list is empty", con.size() > 0); for (CyEdge e : con) { String inter = net.getRow(e).get(CyEdge.INTERACTION, String.class); assertNotNull("Edge interaction is NULL", inter); if (inter.equals(interaction)) { return; } } } } } } fail("couldn't find interaction: " + source + " " + interaction + " " + target); }