Author: clopes
Date: 2012-07-27 11:55:57 -0700 (Fri, 27 Jul 2012)
New Revision: 30020
Modified:
csplugins/trunk/toronto/clopes/mcode/build.xml
csplugins/trunk/toronto/clopes/mcode/default.properties
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/model/MCODEAlgorithm.java
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/util/MCODEUtil.java
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/view/MCODEResultsPanel.java
Log:
MCODE's cluster subnetworks are now created with "DO_NOT_SAVE" save policy.
The algorithm ignores multiple edges when calculating the network density.
Modified: csplugins/trunk/toronto/clopes/mcode/build.xml
===================================================================
--- csplugins/trunk/toronto/clopes/mcode/build.xml 2012-07-27 18:33:30 UTC
(rev 30019)
+++ csplugins/trunk/toronto/clopes/mcode/build.xml 2012-07-27 18:55:57 UTC
(rev 30020)
@@ -14,7 +14,7 @@
<property environment="env"/>
<property name="build.dir" value="target"/>
- <property name="cytoscape.app.dir" value="${cytoscape.home}/deploy"/>
+ <property name="cytoscape.app.dir"
value="${cytoscape.home}/apps/installed"/>
<target name="install">
<copy todir="${cytoscape.app.dir}" overwrite="true">
Modified: csplugins/trunk/toronto/clopes/mcode/default.properties
===================================================================
--- csplugins/trunk/toronto/clopes/mcode/default.properties 2012-07-27
18:33:30 UTC (rev 30019)
+++ csplugins/trunk/toronto/clopes/mcode/default.properties 2012-07-27
18:55:57 UTC (rev 30020)
@@ -1,2 +1,2 @@
# Overwrite it in your local.properties file
-cytoscape.home=/Applications/Cytoscape_v3.0
\ No newline at end of file
+cytoscape.home=${user.home}/.cytoscape/3.0
\ No newline at end of file
Modified:
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/model/MCODEAlgorithm.java
===================================================================
---
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/model/MCODEAlgorithm.java
2012-07-27 18:33:30 UTC (rev 30019)
+++
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/model/MCODEAlgorithm.java
2012-07-27 18:55:57 UTC (rev 30020)
@@ -16,6 +16,7 @@
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
+import org.cytoscape.model.SavePolicy;
import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.work.TaskMonitor;
import org.slf4j.Logger;
@@ -499,7 +500,7 @@
nodes.add(n);
}
- CySubNetwork outputNetwork =
mcodeUtil.createSubNetwork(inputNetwork, nodes);
+ CySubNetwork outputNetwork =
mcodeUtil.createSubNetwork(inputNetwork, nodes, SavePolicy.DO_NOT_SAVE);
return outputNetwork;
}
@@ -596,7 +597,7 @@
}
// extract neighborhood subgraph
- CySubNetwork neighborhoodNet =
mcodeUtil.createSubNetwork(inputNetwork, neighbors);
+ CySubNetwork neighborhoodNet =
mcodeUtil.createSubNetwork(inputNetwork, neighbors, SavePolicy.DO_NOT_SAVE);
if (neighborhoodNet == null) {
// this shouldn't happen
@@ -821,9 +822,6 @@
* @return The density of the network
*/
public double calcDensity(CySubNetwork network, boolean includeLoops) {
- int possibleEdgeNum = 0, actualEdgeNum = 0, loopCount = 0;
- double density = 0;
-
String callerID = "MCODEAlgorithm.calcDensity";
if (network == null) {
@@ -832,31 +830,36 @@
}
int nodeCount = network.getNodeCount();
- int edgeCount = network.getEdgeCount();
-
- if (!includeLoops) {
- //count loops
- List<CyNode> nodes = network.getNodeList();
-
- for (CyNode n : nodes) {
- List<CyEdge> loopEdges =
network.getConnectingEdgeList(n, n, CyEdge.Type.ANY);
-
- if (loopEdges != null && loopEdges.size() > 0)
- loopCount++;
- }
-
+ int actualEdgeNum = getMergedEdgeCount(network, includeLoops);
+ int possibleEdgeNum = 0;
+
+ if (includeLoops)
+ possibleEdgeNum = (nodeCount * (nodeCount + 1)) / 2;
+ else
possibleEdgeNum = (nodeCount * (nodeCount - 1)) / 2;
- actualEdgeNum = edgeCount - loopCount;
- } else {
- possibleEdgeNum = (nodeCount * (nodeCount + 1)) / 2;
- actualEdgeNum = edgeCount;
- }
- density = (double) actualEdgeNum / (double) possibleEdgeNum;
+ double density = (double) actualEdgeNum / (double)
possibleEdgeNum;
return density;
}
+ private int getMergedEdgeCount(CySubNetwork network, boolean
includeLoops) {
+ Set<String> suidPairs = new HashSet<String>();
+
+ for (CyEdge e : network.getEdgeList()) {
+ Long id1 = e.getSource().getSUID();
+ Long id2 = e.getTarget().getSUID();
+
+ if (!includeLoops && id1 == id2)
+ continue;
+
+ String pair = id1 < id2 ? id1+"_"+id2 : id2+"_"+id1;
+ suidPairs.add(pair);
+ }
+
+ return suidPairs.size();
+ }
+
/**
* Find a k-core of a network. A k-core is a subgraph of minimum degree
k
*
@@ -899,7 +902,8 @@
outputNodes.add(n);
}
- outputNetwork =
mcodeUtil.createSubNetwork(inputNetwork.getRootNetwork(), outputNodes);
+ outputNetwork =
mcodeUtil.createSubNetwork(inputNetwork.getRootNetwork(), outputNodes,
+ SavePolicy.DO_NOT_SAVE);
if (outputNetwork.getNodeCount() == 0) {
return null;
Modified:
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/util/MCODEUtil.java
===================================================================
---
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/util/MCODEUtil.java
2012-07-27 18:33:30 UTC (rev 30019)
+++
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/util/MCODEUtil.java
2012-07-27 18:55:57 UTC (rev 30020)
@@ -69,6 +69,7 @@
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTable;
+import org.cytoscape.model.SavePolicy;
import org.cytoscape.model.subnetwork.CyRootNetwork;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.model.subnetwork.CySubNetwork;
@@ -476,7 +477,7 @@
return image;
}
- public CySubNetwork createSubNetwork(final CyNetwork net,
Collection<CyNode> nodes) {
+ public CySubNetwork createSubNetwork(final CyNetwork net, final
Collection<CyNode> nodes, final SavePolicy policy) {
final CyRootNetwork root = rootNetworkMgr.getRootNetwork(net);
final Set<CyEdge> edges = new HashSet<CyEdge>();
@@ -491,7 +492,7 @@
}
}
- final CySubNetwork subNet = root.addSubNetwork(nodes, edges);
+ final CySubNetwork subNet = root.addSubNetwork(nodes, edges,
policy);
subNetworks.add(subNet);
return subNet;
Modified:
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/view/MCODEResultsPanel.java
===================================================================
---
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/view/MCODEResultsPanel.java
2012-07-27 18:33:30 UTC (rev 30019)
+++
csplugins/trunk/toronto/clopes/mcode/src/main/java/org/cytoscape/mcode/internal/view/MCODEResultsPanel.java
2012-07-27 18:55:57 UTC (rev 30020)
@@ -68,6 +68,7 @@
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTable;
+import org.cytoscape.model.SavePolicy;
import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
@@ -488,7 +489,8 @@
@Override
protected CyNetworkView doInBackground() throws
Exception {
- CySubNetwork newNetwork =
mcodeUtil.createSubNetwork(clusterNetwork, clusterNetwork.getNodeList());
+ CySubNetwork newNetwork =
mcodeUtil.createSubNetwork(clusterNetwork, clusterNetwork.getNodeList(),
+
SavePolicy.SESSION_FILE);
newNetwork.getRow(newNetwork).set(CyNetwork.NAME, title);
mcodeUtil.addVirtualColumns(newNetwork,
network);
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.