Jalview.isJS() --> Platform.isJS(), DBRefEntry[] --> List<DBRefEntry>
[jalview.git] / src / jalview / ext / ensembl / EnsemblSeqProxy.java
index 7bf2563..1d6b354 100644 (file)
@@ -209,18 +209,28 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
       SequenceI genomicSequence = null;
       EnsemblFeatures gffFetcher = new EnsemblFeatures(getDomain());
       EnsemblFeatureType[] features = getFeaturesToFetch();
+      
+      Platform.timeCheck("ESP.getsequencerec1", Platform.TIME_MARK);     
+
+      
       AlignmentI geneFeatures = gffFetcher.getSequenceRecords(accId,
               features);
       if (geneFeatures != null && geneFeatures.getHeight() > 0)
       {
         genomicSequence = geneFeatures.getSequenceAt(0);
       }
+      
+      Platform.timeCheck("ESP.getsequencerec2", Platform.TIME_MARK);     
+      
       if (genomicSequence != null)
       {
         /*
          * transfer features to the query sequence
          */
         SequenceI querySeq = alignment.findName(accId, true);
+        
+        Platform.timeCheck("ESP.transferfeat", Platform.TIME_MARK);      
+
         if (transferFeatures(accId, genomicSequence, querySeq))
         {
 
@@ -228,6 +238,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
            * fetch and map protein product, and add it as a cross-reference
            * of the retrieved sequence
            */
+            Platform.timeCheck("ESP.addprotein", Platform.TIME_MARK);    
           addProteinProduct(querySeq);
         }
       }
@@ -236,6 +247,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
       System.err.println(
               "Error transferring Ensembl features: " + e.getMessage());
     }
+    Platform.timeCheck("ESP.addfeat done", Platform.TIME_MARK);          
   }
 
   /**
@@ -284,10 +296,10 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
         DBRefEntry dbr = new DBRefEntry(getDbSource(),
                 getEnsemblDataVersion(), proteinSeq.getName(), map);
         querySeq.getDatasetSequence().addDBRef(dbr);
-        DBRefEntry[] uprots = DBRefUtils.selectRefs(ds.getDBRefs(),
+        List<DBRefEntry> uprots = DBRefUtils.selectRefs(ds.getDBRefs(),
                 new String[]
                 { DBRefSource.UNIPROT });
-        DBRefEntry[] upxrefs = DBRefUtils.selectRefs(querySeq.getDBRefs(),
+        List<DBRefEntry> upxrefs = DBRefUtils.selectRefs(querySeq.getDBRefs(),
                 new String[]
                 { DBRefSource.UNIPROT });
         if (uprots != null)
@@ -348,25 +360,47 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
    */
   protected void getCrossReferences(SequenceI seq)
   {
+         
+      Platform.timeCheck("ESP. getdataseq ", Platform.TIME_MARK);        
+
+         
     while (seq.getDatasetSequence() != null)
     {
       seq = seq.getDatasetSequence();
     }
 
+    Platform.timeCheck("ESP. getxref ", Platform.TIME_MARK);     
+
     EnsemblXref xrefFetcher = new EnsemblXref(getDomain(), getDbSource(),
             getEnsemblDataVersion());
     List<DBRefEntry> xrefs = xrefFetcher.getCrossReferences(seq.getName());
-    for (DBRefEntry xref : xrefs)
+    
+    for (int i = 0, n = xrefs.size(); i < n; i++)
     {
-      seq.addDBRef(xref);
+        Platform.timeCheck("ESP. getxref + " + (i) + "/" + n, Platform.TIME_MARK);       
+        // BH 2019.01.25 this next method was taking 174 ms PER addition for a 266-reference example.
+        //    DBRefUtils.ensurePrimaries(seq) 
+        //        was at the end of seq.addDBRef, so executed after ever addition!
+        //        This method was moved to     seq.getPrimaryDBRefs()
+      seq.addDBRef(xrefs.get(i));
     }
 
+    System.out.println("primaries are " + seq.getPrimaryDBRefs().toString());
     /*
      * and add a reference to itself
      */
+    
+    Platform.timeCheck("ESP. getxref self ", Platform.TIME_MARK);        
+
     DBRefEntry self = new DBRefEntry(getDbSource(), getEnsemblDataVersion(),
             seq.getName());
+
+    Platform.timeCheck("ESP. getxref self add ", Platform.TIME_MARK);    
+
     seq.addDBRef(self);
+    
+    Platform.timeCheck("ESP. seqprox done ", Platform.TIME_MARK);        
+
   }
 
   /**
@@ -454,6 +488,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
        * for now, assumes only one sequence returned; refactor if needed
        * in future to handle a JSONArray with more than one
        */
+       
+       Platform.timeCheck("ENS seqproxy", Platform.TIME_MARK);
       Map<String, Object> val = (Map<String, Object>) getJSON(null, ids, -1, MODE_MAP, null);
       if (val == null)
          return null;
@@ -479,6 +515,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
       System.err.println("Error processing JSON response: " + e.toString());
       // ignore
     }
+       Platform.timeCheck("ENS seqproxy2", Platform.TIME_MARK);
     return result;
   }