Author: kono
Date: 2011-06-14 13:38:32 -0700 (Tue, 14 Jun 2011)
New Revision: 25754
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/InteractionDocNodeProcessor.java
Log:
Bug in network building process had been fixed.
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
2011-06-14 20:11:56 UTC (rev 25753)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/EntrezRestClient.java
2011-06-14 20:38:32 UTC (rev 25754)
@@ -4,7 +4,10 @@
import java.io.InputStream;
import java.net.URL;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -15,6 +18,7 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
@@ -30,9 +34,6 @@
static final String FETCH_URL = BASE_URL +
"efetch.fcgi?db=gene&retmode=xml&id=";
private static final String SEARCH_URL = BASE_URL +
"esearch.fcgi?db=gene&retmax=100000&term=";
-
-
-
private final String regex = "\\s+";
private static final String ID = "Id";
@@ -76,9 +77,12 @@
final ExecutorService executer =
Executors.newFixedThreadPool(4);
- System.out.println("Thread Pool Initialized.");
+ logger.debug("Executor initialized.");
final CyNetwork newNetwork = networkFactory.getInstance();
-
+
+
+ final ConcurrentMap<String, CyNode> nodeName2CyNodeMap = new
ConcurrentHashMap<String, CyNode>();
+
int group = 0;
int buketNum = 10;
String[] box = new String[buketNum];
@@ -89,7 +93,7 @@
group++;
if (group == buketNum) {
- executer.submit(new EntryProcessor<String>(new
ImportNetworkTask<String>(box, newNetwork)));
+ executer.submit(new EntryProcessor<String>(new
ImportNetworkTask<String>(box, newNetwork, nodeName2CyNodeMap)));
group = 0;
box = new String[buketNum];
}
@@ -100,7 +104,7 @@
for (int i = 0; i < group; i++)
newbox[i] = box[i];
- executer.submit(new EntryProcessor<String>(new
ImportNetworkTask<String>(box, newNetwork)));
+ executer.submit(new EntryProcessor<String>(new
ImportNetworkTask<String>(box, newNetwork, nodeName2CyNodeMap)));
try {
executer.shutdown();
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
2011-06-14 20:11:56 UTC (rev 25753)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/ImportNetworkTask.java
2011-06-14 20:38:32 UTC (rev 25754)
@@ -4,9 +4,12 @@
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentMap;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -36,13 +39,20 @@
final String[] ids;
private final CyNetwork network;
+
+
+ private final ConcurrentMap<String, CyNode> nodeName2CyNodeMap;
+ private final Map<String, CyEdge> nodeName2CyEdgeMap;
- public ImportNetworkTask(final String[] ids, final CyNetwork network) {
+ public ImportNetworkTask(final String[] ids, final CyNetwork network,
final ConcurrentMap<String, CyNode> nodeName2CyNodeMap) {
this.ids = ids;
this.network = network;
this.processor = new InteractionDocNodeProcessor();
+ this.nodeName2CyNodeMap = nodeName2CyNodeMap;
+ this.nodeName2CyEdgeMap = new HashMap<String, CyEdge>();
}
+
@Override
public V call() throws Exception {
final URL url = createURL();
@@ -62,8 +72,10 @@
if(geneIDString == null)
throw new NullPointerException("Could not find NCBI
Gene ID for the entry.");
+ // This is the center of spokes
final CyNode centerNode = network.addNode();
centerNode.getCyRow().set(CyTableEntry.NAME, geneIDString);
+ this.nodeName2CyNodeMap.put(geneIDString, centerNode);
final Set<String> idSet = new HashSet<String>();
final NodeList ids =
result.getElementsByTagName("Gene-commentary");
@@ -76,9 +88,6 @@
// ids.item(i).getChildNodes().getLength());
NodeList children = ids.item(i).getChildNodes();
for (int j = 0; j < children.getLength(); j++) {
- // logger.debug(" Node name = " +
- // children.item(j).getNodeName() + " ====> " +
- // children.item(j).getTextContent());
if
(children.item(j).getNodeName().equals("Gene-commentary_heading")) {
//logger.debug("HEADING = " +
children.item(j).getTextContent());
@@ -132,12 +141,18 @@
processor.process(item);
final String id = processor.getTargetID();
if (id != null) {
- final CyNode targetNode =
network.addNode();
+ // Create actual nodes and edges here.
+ CyNode targetNode =
this.nodeName2CyNodeMap.get(id);;
+ if(targetNode == null) {
+ targetNode = network.addNode();
+ nodeName2CyNodeMap.put(id,
targetNode);
+ }
+
targetNode.getCyRow().set(CyTableEntry.NAME, id);
logger.debug("New Node Name = " + id);
final CyEdge newEdge =
network.addEdge(centerNode, targetNode, false);
newEdge.getCyRow().set(CyTableEntry.NAME,
-
centerNode.getCyRow().get(CyTableEntry.NAME, String.class) + " (" + "pp" + ") "
+
centerNode.getCyRow().get(CyTableEntry.NAME, String.class) + " (" +
processor.getInteractionType() + ") "
+
targetNode.getCyRow().get(CyTableEntry.NAME, String.class));
}
}
Modified:
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/InteractionDocNodeProcessor.java
===================================================================
---
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/InteractionDocNodeProcessor.java
2011-06-14 20:11:56 UTC (rev 25753)
+++
core3/webservice-ncbi-client-impl/trunk/src/main/java/org/cytoscape/webservice/ncbi/rest/InteractionDocNodeProcessor.java
2011-06-14 20:38:32 UTC (rev 25754)
@@ -25,20 +25,27 @@
static final String targetSource = "DB Name";
static final String targetSourceID = "Target ID";
static final String targetOtherName = "Other Name";
+ static final String interaction = "Interaction Type";
private static final String NCBI_GENE_ID_TAG = "GeneID";
+ private static final String DEF_INTERACTION_TYPE = "protein-protein";
private Map<String, String> idMap;
private Map<String, String> resultMap;
protected String getTargetID() {
+ // Use NCBI ID if available
String geneID = idMap.get(NCBI_GENE_ID_TAG);
if(geneID == null)
geneID = idMap.values().iterator().next();
return geneID;
}
+ protected String getInteractionType() {
+ return resultMap.get(interaction);
+ }
+
protected String getTargetAltName() {
return null;
}
@@ -53,10 +60,17 @@
for (int i = 0; i < length; i++) {
final Node node = children.item(i);
+ if(node.getNodeType() != Node.ELEMENT_NODE)
+ continue;
+
final String nodeName = node.getNodeName();
if (nodeName.equals(GC_TEXT)) {
final String interactionTypeText =
node.getTextContent();
logger.debug("Interaction type = " +
interactionTypeText);
+ if(interactionTypeText != null &&
interactionTypeText.trim().length() != 0)
+ resultMap.put(interaction,
interactionTypeText);
+ else
+ resultMap.put(interaction,
DEF_INTERACTION_TYPE);
} else if (nodeName.equals(GC_REFS))
processReference(node);
else if (nodeName.equals(GC_SOURCE))
@@ -94,7 +108,6 @@
for(String key: idBlock.keySet()) {
logger.debug(key + " ======= "
+ idBlock.get(key));
-
}
idMap.put(idBlock.get(DB_TAG),
idBlock.get(ID_TAG));
--
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.