Author: kono
Date: 2011-12-06 14:55:50 -0800 (Tue, 06 Dec 2011)
New Revision: 27719
Modified:
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/PSICQUICRestClient.java
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/CyNetworkBuilder.java
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/task/ImportNetworkFromPSICQUICTask.java
Log:
Progress bar problem fixed.
Modified:
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/PSICQUICRestClient.java
===================================================================
---
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/PSICQUICRestClient.java
2011-12-06 22:18:04 UTC (rev 27718)
+++
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/PSICQUICRestClient.java
2011-12-06 22:55:50 UTC (rev 27719)
@@ -6,13 +6,16 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
+import java.util.concurrent.CompletionService;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -57,7 +60,7 @@
// Timeout for search
private static final long SEARCH_TIMEOUT = 20000;
- private static final long IMPORT_TIMEOUT = 1200000;
+ private static final long IMPORT_TIMEOUT = 1000;
private final CyNetworkFactory factory;
private final CyNetworkViewFactory viewFactory;
@@ -73,53 +76,51 @@
public Map<String, CyNetwork> importNetwork(final String query, final
Collection<String> targetServices,
final SearchMode mode, final TaskMonitor tm) throws
InterruptedException {
final Map<String, CyNetwork> resultMap = new
ConcurrentHashMap<String, CyNetwork>();
- final ExecutorService exe = Executors.newCachedThreadPool();
+ final ExecutorService exe = Executors.newFixedThreadPool(20);
+ final CompletionService<Map<CyNetwork, String>>
completionService = new ExecutorCompletionService<Map<CyNetwork, String>>(exe);
+
final long startTime = System.currentTimeMillis();
// Submit the query for each active service
+ double completed = 0.0d;
+ final double increment = 1.0d / (double) targetServices.size();
final List<ImportNetworkTask> tasks = new
ArrayList<ImportNetworkTask>();
for (final String serviceURL : targetServices)
- tasks.add(new ImportNetworkTask(serviceURL, query,
mode));
+ completionService.submit(new
ImportNetworkTask(serviceURL, query, mode));
- final List<Future<CyNetwork>> futures = exe.invokeAll(tasks,
IMPORT_TIMEOUT, TimeUnit.MILLISECONDS);
- logger.debug("Task submitted!");
-
- double completed = 0.0d;
- final double increment = 1.0d / (double) futures.size();
- final Iterator<ImportNetworkTask> taskItr = tasks.iterator();
- for (final Future<CyNetwork> future : futures) {
- final ImportNetworkTask task = taskItr.next();
- final String source = task.getURL();
+
+ for (int i = 0; i < targetServices.size(); i++) {
try {
- final CyNetwork network = future.get();
- //createView(network);
+ Future<Map<CyNetwork, String>> future =
completionService.take();
+ final Map<CyNetwork, String> ret = future.get();
+ final CyNetwork network =
ret.keySet().iterator().next();
+ final String source = ret.get(network);
resultMap.put(source, network);
- logger.debug(source + " : Got response = " +
resultMap.get(source));
+ completed = completed + increment;
+ tm.setProgress(completed);
+ } catch (InterruptedException ie) {
+ logger.warn("Interrupted: network import", ie);
+ continue;
} catch (ExecutionException e) {
- logger.warn("Error occured in network import
from: " + source, e);
+ logger.warn("Error occured in network import",
e);
continue;
- } catch (CancellationException ce) {
- logger.warn("Import operation timeout for " +
source, ce);
- continue;
}
- completed += increment;
- tm.setProgress(completed);
}
- long endTime = System.currentTimeMillis();
- double sec = (endTime - startTime) / (1000.0);
- logger.info("PSICQUIC import finished in " + sec + " sec.");
+
+ try {
+ exe.shutdown();
+ exe.awaitTermination(IMPORT_TIMEOUT, TimeUnit.SECONDS);
+
+ long endTime = System.currentTimeMillis();
+ double sec = (endTime - startTime) / (1000.0);
+ logger.info("PSICUQIC Import Finished in " + sec + "
sec.");
+ } catch (Exception ex) {
+ logger.warn("Import operation timeout", ex);
+ }
- tm.setProgress(1.0d);
-
return resultMap;
}
- private void createView(final CyNetwork network) {
- final CyNetworkView view =
viewFactory.createNetworkView(network);
- viewManager.addNetworkView(view);
- //view.fitContent();
- }
-
public Map<String, Long> search(final String query, final
Collection<String> targetServices, final SearchMode mode,
final TaskMonitor tm) throws InterruptedException {
final Map<String, Long> resultMap = new
ConcurrentHashMap<String, Long>();
@@ -193,18 +194,21 @@
}
}
- private final class ImportNetworkTask implements Callable<CyNetwork> {
+ private final class ImportNetworkTask implements
Callable<Map<CyNetwork, String>> {
private final String serviceURL;
private final String query;
private final SearchMode mode;
+
+ private final Map<CyNetwork, String> returnThis;
private ImportNetworkTask(final String serviceURL, final String
query, final SearchMode mode) {
this.serviceURL = serviceURL;
this.query = query;
this.mode = mode;
+ this.returnThis = new HashMap<CyNetwork, String>();
}
- public CyNetwork call() throws Exception {
+ public Map<CyNetwork, String> call() throws Exception {
final PSICQUICSimpleClient simpleClient = new
PSICQUICSimpleClient(serviceURL);
InputStream is = null;
if (mode == SearchMode.INTERACTOR)
@@ -217,12 +221,9 @@
is.close();
is = null;
- return network;
+ returnThis.put(network, serviceURL);
+ return returnThis;
}
-
- String getURL() {
- return serviceURL;
- }
}
}
Modified:
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/CyNetworkBuilder.java
===================================================================
---
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/CyNetworkBuilder.java
2011-12-06 22:18:04 UTC (rev 27718)
+++
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/CyNetworkBuilder.java
2011-12-06 22:55:50 UTC (rev 27719)
@@ -7,6 +7,7 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.work.TaskMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,6 +32,7 @@
mapper.parse(line);
br.close();
+ logger.info("Import Done: " + network.getSUID());
return network;
}
}
Modified:
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
===================================================================
---
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
2011-12-06 22:18:04 UTC (rev 27718)
+++
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
2011-12-06 22:55:50 UTC (rev 27719)
@@ -29,6 +29,7 @@
private static final String TAB = "\t";
// Attr Names
+ private static final String DATABASE_UNIQUE_ID = ATTR_PREFIX +
"database-unique ID";
private static final String DETECTION_METHOD = ATTR_PREFIX +
"interaction detection method";
private static final String INTERACTION_TYPE = ATTR_PREFIX +
"interaction type";
private static final String SOURCE_DB = ATTR_PREFIX + "source database";
@@ -55,44 +56,13 @@
public Mitab25Mapper(final CyNetwork network) {
this.network = network;
this.nodeMap = new HashMap<String, CyNode>();
+
+ // Create Columns
+ network.getDefaultNodeTable().createColumn(INTERACTOR_TYPE,
String.class, true);
+ network.getDefaultNodeTable().createColumn(DATABASE_UNIQUE_ID,
String.class, true);
+ network.getDefaultEdgeTable().createColumn(INTERACTION_ID,
String.class, true);
}
-// public CyNetwork map(String mitab, String networkName, CyNetwork
parentNetwork) {
-//
-// // Read the long string of MITAB
-// String[] lines = mitab.split("\n");
-//
-// parse(lines);
-//
-// // Create top attribues for important keys
-// List<String> currentAttr;
-// for (CyNode node : nodes) {
-// currentAttr =
nodeAttr.getListAttribute(node.getIdentifier(), ATTR_PREFIX + UNIPROT);
-// if (currentAttr != null && currentAttr.size() != 0) {
-// nodeAttr.setAttribute(node.getIdentifier(),
ATTR_PREFIX + UNIPROT + ".top", currentAttr.get(0));
-// }
-// currentAttr =
nodeAttr.getListAttribute(node.getIdentifier(), ATTR_PREFIX + ENTREZ_GENE);
-// if (currentAttr != null && currentAttr.size() != 0) {
-// nodeAttr.setAttribute(node.getIdentifier(),
ATTR_PREFIX + ENTREZ_GENE + ".top", currentAttr.get(0));
-// }
-//
-// currentAttr =
nodeAttr.getListAttribute(node.getIdentifier(), ATTR_PREFIX + ENTREZ_GENE_SYN);
-// if (currentAttr != null && currentAttr.size() != 0) {
-// nodeAttr.setAttribute(node.getIdentifier(),
ATTR_PREFIX + ENTREZ_GENE + ".top", currentAttr.get(0));
-// }
-// }
-//
-// if (edges.size() != 0) {
-// final CyNetwork network =
Cytoscape.createNetwork(nodes, edges, networkName, parentNetwork);
-//
-// nodes.clear();
-// edges.clear();
-// return network;
-// } else {
-// return null;
-// }
-// }
-
public void parse(final String line) {
String[] sourceID;
@@ -117,29 +87,32 @@
return;
sourceID = entry[0].split(SEPARATOR);
+ final String sourceIDHalf = sourceID[0].split(":")[1];
targetID = entry[1].split(SEPARATOR);
+ final String targetIDHalf = targetID[0].split(":")[1];
+ // Create source and target node if necessary.
source = nodeMap.get(sourceID[0]);
if(source == null) {
source = network.addNode();
- source.getCyRow().set(CyTableEntry.NAME, sourceID[0]);
+ source.getCyRow().set(CyTableEntry.NAME, sourceIDHalf);
+ source.getCyRow().set(DATABASE_UNIQUE_ID, sourceID[0]);
nodeMap.put(sourceID[0], source);
}
-
target = nodeMap.get(targetID[0]);
if (target == null) {
target = network.addNode();
- target.getCyRow().set(CyTableEntry.NAME, targetID[0]);
+ target.getCyRow().set(CyTableEntry.NAME, targetIDHalf);
+ target.getCyRow().set(DATABASE_UNIQUE_ID, targetID[0]);
nodeMap.put(targetID[0], target);
}
+ // Set type if not protein
+ if (sourceID[0].contains(CHEBI))
+ source.getCyRow().set(INTERACTOR_TYPE, COMPOUND);
+ if (targetID[0].contains(CHEBI))
+ target.getCyRow().set(INTERACTOR_TYPE, COMPOUND);
-// // Set type if not protein
-// if (source.getIdentifier().contains(CHEBI))
-// nodeAttr.setAttribute(source.getIdentifier(),
INTERACTOR_TYPE, COMPOUND);
-// if (target.getIdentifier().contains(CHEBI))
-// nodeAttr.setAttribute(target.getIdentifier(),
INTERACTOR_TYPE, COMPOUND);
-//
// // Aliases
// setAliases(nodeAttr, source.getIdentifier(),
entry[0].split(SEPARATOR));
// setAliases(nodeAttr, target.getIdentifier(),
entry[1].split(SEPARATOR));
@@ -151,7 +124,7 @@
// // Tax ID (pick first one only)
// setTaxID(nodeAttr, source.getIdentifier(),
entry[9].split(SEPARATOR)[0]);
// setTaxID(nodeAttr, target.getIdentifier(),
entry[10].split(SEPARATOR)[0]);
-//
+
// sourceDB = entry[12].split(SEPARATOR);
interactionID = entry[13].split(SEPARATOR);
edgeScore = entry[14].split(SEPARATOR);
@@ -172,14 +145,14 @@
// // Map scores
// setEdgeScoreListAttribute(edgeAttr, e.getIdentifier(),
edgeScore, EDGE_SCORE);
//
-// edgeAttr.setAttribute(e.getIdentifier(), INTERACTION_ID,
interactionID[0]);
+ e.getCyRow().set(INTERACTION_ID, interactionID[0]);
//
// setPublication(edgeAttr, e.getIdentifier(),
entry[8].split(SEPARATOR), entry[7].split(SEPARATOR));
}
-// private void setTaxID(CyAttributes attr, String id, String value) {
+// private void setTaxID(String id, String value) {
// String[] buf = value.split(":", 2);
// String attrName;
// String taxonName;
@@ -216,7 +189,7 @@
// }
// }
//
-// private void setAliases(CyAttributes attr, String id, String[] entry) {
+// private void setAliases(final String id, final String[] entry) {
// String key = null;
// String[] temp;
// String value;
@@ -272,20 +245,8 @@
// }
// }
//
-// private void listAttrMapper(CyAttributes attr, String attrName, String
id, String value) {
-// List currentAttr;
+
//
-// currentAttr = attr.getListAttribute(id, attrName);
-// if (currentAttr == null) {
-// currentAttr = new ArrayList<String>();
-// currentAttr.add(value);
-// attr.setListAttribute(id, attrName, currentAttr);
-// } else if (currentAttr.contains(value) == false) {
-// currentAttr.add(value);
-// attr.setListAttribute(id, attrName, currentAttr);
-// }
-// }
-//
// private String trimPSITerm(String original) {
// String miID = null;
//
Modified:
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/task/ImportNetworkFromPSICQUICTask.java
===================================================================
---
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/task/ImportNetworkFromPSICQUICTask.java
2011-12-06 22:18:04 UTC (rev 27718)
+++
core3/impl/trunk/webservice-psicquic-client-impl/src/main/java/org/cytoscape/webservice/psicquic/task/ImportNetworkFromPSICQUICTask.java
2011-12-06 22:55:50 UTC (rev 27719)
@@ -103,7 +103,6 @@
manager.addNetwork(network);
networks.add(network);
}
- taskMonitor.setProgress(1.0d);
int retValue = JOptionPane.showConfirmDialog(null, "Do you want
to create view?");
--
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.