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.

Reply via email to