Author: kono
Date: 2011-04-11 11:56:27 -0700 (Mon, 11 Apr 2011)
New Revision: 24738
Removed:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/attrs/
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
Log:
Fixed some performance issues related to rowSet events.
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/gml/GMLNetworkViewReader.java
2011-04-11 18:56:27 UTC (rev 24738)
@@ -294,6 +294,8 @@
if (nodeNameSet.add(label)) {
CyNode node = network.addNode();
+
+ //FIXME this fires too many events!!
node.getCyRow().set(CyTableEntry.NAME, label);
nodeIDMap.put(label, node);
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
2011-04-11 18:56:27 UTC (rev 24738)
@@ -392,6 +392,7 @@
// set attr values based on ids
while (it.hasNext()) {
final Node nodeObject = (Node) it.next();
+ // FIXME this fires too many events
nodeMap.get(nodeObject.getId()).getCyRow().set(attrName,true);
}
}
@@ -408,6 +409,7 @@
// set attr values based on ids
while (it.hasNext()) {
final Edge edgeObject = (Edge) it.next();
+ // FIXME this fires too many events
edgeMap.get(edgeObject.getId()).getCyRow().set(attrName,true);
}
}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReader.java
2011-04-11 18:56:27 UTC (rev 24738)
@@ -27,7 +27,6 @@
*/
package org.cytoscape.io.internal.read.sif;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
@@ -35,144 +34,160 @@
import java.util.Map;
import java.util.Set;
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.io.internal.read.AbstractNetworkViewReader;
import org.cytoscape.io.internal.util.ReadUtils;
-import org.cytoscape.io.internal.read.AbstractNetworkViewReader;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyTable;
import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.events.RowsAboutToChangeEvent;
+import org.cytoscape.model.events.RowsFinishedChangingEvent;
+import org.cytoscape.view.layout.CyLayouts;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.work.Task;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskIterator;
import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.view.layout.CyLayouts;
-
/**
* Reader for graphs in the interactions file format. Given the filename,
* provides the graph and attributes objects constructed from the file.
*/
public class SIFNetworkViewReader extends AbstractNetworkViewReader {
- private static final String DEF_DELIMITER = " ";
- private static final String LINE_SEP =
System.getProperty("line.separator");
- private static final String INTERACTION = "interaction";
- private final Set<Interaction> interactions = new
HashSet<Interaction>();
- private final ReadUtils readUtil;
- private final CyLayouts layouts;
- private boolean cancelled = false;
+ private static final String DEF_DELIMITER = " ";
+ private static final String LINE_SEP =
System.getProperty("line.separator");
+ private static final String INTERACTION = "interaction";
- public SIFNetworkViewReader(InputStream is, ReadUtils readUtil,
CyLayouts layouts, CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory
cyNetworkFactory) {
- super(is,cyNetworkViewFactory, cyNetworkFactory);
- this.readUtil = readUtil;
- this.layouts = layouts;
+ private final CyEventHelper eventHelper;
+
+ private final Set<Interaction> interactions = new HashSet<Interaction>();
+ private final ReadUtils readUtil;
+ private final CyLayouts layouts;
+
+ private boolean cancelled = false;
+
+ public SIFNetworkViewReader(InputStream is, ReadUtils readUtil, CyLayouts
layouts,
+ CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory
cyNetworkFactory,
+ final CyEventHelper eventHelper) {
+ super(is, cyNetworkViewFactory, cyNetworkFactory);
+ this.readUtil = readUtil;
+ this.layouts = layouts;
+ this.eventHelper = eventHelper;
+ }
+
+ @Override
+ public void run(TaskMonitor tm) throws IOException {
+ try {
+ readInput(tm);
+ createNetwork(tm);
+ } finally {
+ if (inputStream != null) {
+ inputStream.close();
+ inputStream = null;
+ }
}
+ }
- @Override
- public void run(TaskMonitor tm) throws IOException {
- try {
- readInput(tm);
- createNetwork(tm);
- } finally {
- if (inputStream != null) {
- inputStream.close();
- inputStream = null;
- }
- }
+ private void readInput(TaskMonitor tm) throws IOException {
+ tm.setProgress(0.00);
+ String delimiter = DEF_DELIMITER;
+
+ final String rawText = readUtil.getInputString(inputStream);
+
+ tm.setProgress(0.10);
+ if (rawText.indexOf("\t") >= 0)
+ delimiter = "\t";
+
+ final String[] lines = rawText.split(LINE_SEP);
+
+ tm.setProgress(0.15);
+ final int size = lines.length;
+ for (int i = 0; i < size; i++) {
+ if (lines[i].length() <= 0)
+ continue;
+ interactions.add(new Interaction(lines[i], delimiter));
}
+ tm.setProgress(0.20);
+ }
- private void readInput(TaskMonitor tm) throws IOException {
- tm.setProgress(0.00);
- String delimiter = DEF_DELIMITER;
+ private void createNetwork(TaskMonitor tm) {
- final String rawText = readUtil.getInputString(inputStream);
+ // Create network model. At this point, there are no nodes/edges.
+ final CyNetwork network = cyNetworkFactory.getInstance();
- tm.setProgress(0.10);
- if (rawText.indexOf("\t") >= 0)
- delimiter = "\t";
+ Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
- final String[] lines = rawText.split(LINE_SEP);
+ // put all node names in the Set
+ for (final Interaction interaction : interactions) {
+ nodeMap.put(interaction.getSource(), null);
+ for (String target : interaction.getTargets())
+ nodeMap.put(target, null);
+ }
- tm.setProgress(0.15);
- final int size = lines.length;
- for (int i = 0; i < size; i++) {
- if (lines[i].length() <= 0)
- continue;
- interactions.add(new Interaction(lines[i], delimiter));
- }
- tm.setProgress(0.20);
+ tm.setProgress(0.25);
+
+ final CyTable table = network.getDefaultNodeTable();
+ try {
+ eventHelper.fireSynchronousEvent(new RowsAboutToChangeEvent(this,
table));
+
+ for (final String nodeName : nodeMap.keySet()) {
+ if (cancelled)
+ return;
+
+ // tm.setProgress(progress);
+
+ final CyNode node = network.addNode();
+ node.getCyRow().set(CyTableEntry.NAME, nodeName);
+ nodeMap.put(nodeName, node);
+ }
+
+ } finally {
+ eventHelper.fireSynchronousEvent(new
RowsFinishedChangingEvent(this, table));
}
- private void createNetwork(TaskMonitor tm) {
-
- // Create network model. At this point, there are no
nodes/edges.
- final CyNetwork network = cyNetworkFactory.getInstance();
-
- Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
+ tm.setProgress(0.65);
- // put all node names in the Set
- for (Interaction interaction : interactions) {
- nodeMap.put(interaction.getSource(), null);
- for (String target : interaction.getTargets())
- nodeMap.put(target, null);
- }
+ // Now loop over the interactions again, this time creating edges
+ // between
+ // all sources and each of their respective targets.
+ String srcName;
+ String interactionType;
+ CyEdge edge;
- tm.setProgress(0.25);
-
- for (String nodeName : nodeMap.keySet()) {
- if (cancelled)
- return;
+ for (Interaction interaction : interactions) {
+ if (cancelled)
+ return;
- //tm.setProgress(progress);
-
- final CyNode node = network.addNode();
- node.getCyRow().set(CyTableEntry.NAME, nodeName);
- nodeMap.put(nodeName, node);
- }
+ srcName = interaction.getSource();
+ interactionType = interaction.getType();
- tm.setProgress(0.65);
-
- // Now loop over the interactions again, this time creating
edges
- // between
- // all sources and each of their respective targets.
- String srcName;
- String interactionType;
- CyEdge edge;
-
- for (Interaction interaction : interactions) {
- if (cancelled)
- return;
+ for (String tgtName : interaction.getTargets()) {
+ edge = network.addEdge(nodeMap.get(srcName),
nodeMap.get(tgtName), true);
+ edge.getCyRow().set(CyTableEntry.NAME, srcName + " (" +
interactionType + ") " + tgtName);
+ edge.getCyRow().set(INTERACTION, interactionType);
+ }
+ }
- srcName = interaction.getSource();
- interactionType = interaction.getType();
+ tm.setProgress(0.90);
- for (String tgtName : interaction.getTargets()) {
- edge = network.addEdge(nodeMap.get(srcName),
nodeMap
- .get(tgtName), true);
- edge.getCyRow().set(CyTableEntry.NAME,
- srcName + " (" +
interactionType + ") " + tgtName);
- edge.getCyRow().set(INTERACTION,
interactionType);
- }
- }
+ final CyNetworkView view = cyNetworkViewFactory.getNetworkView(network);
- tm.setProgress(0.90);
-
- final CyNetworkView view =
cyNetworkViewFactory.getNetworkView(network);
-
- TaskFactory tf = layouts.getDefaultLayout(view);
- TaskIterator ti = tf.getTaskIterator();
- Task task = ti.next();
- insertTasksAfterCurrentTask(task);
-
- // SIF always creates only one network.
- this.cyNetworkViews = new CyNetworkView[] { view };
-
- nodeMap.clear();
- nodeMap = null;
+ TaskFactory tf = layouts.getDefaultLayout(view);
+ TaskIterator ti = tf.getTaskIterator();
+ Task task = ti.next();
+ insertTasksAfterCurrentTask(task);
- tm.setProgress(1.0);
- }
+ // SIF always creates only one network.
+ this.cyNetworkViews = new CyNetworkView[] { view };
+
+ nodeMap.clear();
+ nodeMap = null;
+
+ tm.setProgress(1.0);
+ }
}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderFactory.java
2011-04-11 18:56:27 UTC (rev 24738)
@@ -27,6 +27,7 @@
*/
package org.cytoscape.io.internal.read.sif;
+import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.CyFileFilter;
import org.cytoscape.io.internal.read.AbstractNetworkViewReaderFactory;
import org.cytoscape.io.internal.util.ReadUtils;
@@ -35,22 +36,23 @@
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.work.TaskIterator;
-public class SIFNetworkViewReaderFactory extends
- AbstractNetworkViewReaderFactory {
+public class SIFNetworkViewReaderFactory extends
AbstractNetworkViewReaderFactory {
- private final ReadUtils readUtil;
- private final CyLayouts layouts;
+ private final ReadUtils readUtil;
+ private final CyLayouts layouts;
+ private final CyEventHelper eventHelper;
- public SIFNetworkViewReaderFactory(ReadUtils readUtil, CyFileFilter
filter,
- CyLayouts layouts, CyNetworkViewFactory
cyNetworkViewFactory,
- CyNetworkFactory cyNetworkFactory) {
- super(filter, cyNetworkViewFactory, cyNetworkFactory);
- this.readUtil = readUtil;
- this.layouts = layouts;
- }
+ public SIFNetworkViewReaderFactory(ReadUtils readUtil, CyFileFilter
filter, CyLayouts layouts,
+ CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory
cyNetworkFactory,
+ final CyEventHelper eventHelper) {
+ super(filter, cyNetworkViewFactory, cyNetworkFactory);
+ this.readUtil = readUtil;
+ this.layouts = layouts;
+ this.eventHelper = eventHelper;
+ }
- public TaskIterator getTaskIterator() {
- return new TaskIterator(new SIFNetworkViewReader(inputStream,
readUtil,
- layouts, cyNetworkViewFactory,
cyNetworkFactory));
- }
+ public TaskIterator getTaskIterator() {
+ return new TaskIterator(new SIFNetworkViewReader(inputStream, readUtil,
layouts, cyNetworkViewFactory,
+ cyNetworkFactory, eventHelper));
+ }
}
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2011-04-11 18:56:27 UTC (rev 24738)
@@ -7,6 +7,8 @@
<!-- Import services -->
+ <osgi:reference id="cyEventHelperRef"
interface="org.cytoscape.event.CyEventHelper" />
+
<osgi:reference id="cyLayoutsServiceRef"
interface="org.cytoscape.view.layout.CyLayouts" />
<osgi:reference id="cyNetworkFactoryServiceRef"
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-04-11 18:12:07 UTC (rev 24737)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-04-11 18:56:27 UTC (rev 24738)
@@ -259,6 +259,7 @@
<constructor-arg ref="cyLayoutsServiceRef" />
<constructor-arg ref="cyNetworkViewFactoryServiceRef" />
<constructor-arg ref="cyNetworkFactoryServiceRef" />
+ <constructor-arg ref="cyEventHelperRef" />
</bean>
<bean id="gmlNetworkViewReaderFactory"
class="org.cytoscape.io.internal.read.gml.GMLNetworkViewReaderFactory">
Modified:
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
===================================================================
---
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
2011-04-11 18:12:07 UTC (rev 24737)
+++
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
2011-04-11 18:56:27 UTC (rev 24738)
@@ -17,6 +17,7 @@
import org.cytoscape.test.support.NetworkTestSupport;
import org.cytoscape.test.support.NetworkViewTestSupport;
+import org.cytoscape.event.CyEventHelper;
import org.cytoscape.io.internal.util.ReadUtils;
import org.cytoscape.io.internal.util.StreamUtilImpl;
@@ -94,8 +95,9 @@
private CyNetworkView[] getViews(String file) throws Exception {
File f = new File("./src/test/resources/testData/sif/" + file);
+ final CyEventHelper eventHelper = mock(CyEventHelper.class);
SIFNetworkViewReader snvp = new SIFNetworkViewReader(new
FileInputStream(f),
- readUtil,
layouts, viewFactory, netFactory);
+ readUtil,
layouts, viewFactory, netFactory, eventHelper);
new TaskIterator(snvp);
snvp.run(taskMonitor);
--
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.