JAL-1705 compute peptide variants from dna; add "consequence" feature on
[jalview.git] / src / jalview / ext / ensembl / EnsemblSeqProxy.java
index e986ba8..b805417 100644 (file)
@@ -30,6 +30,10 @@ import java.util.List;
  */
 public abstract class EnsemblSeqProxy extends EnsemblRestClient
 {
+  protected static final String PARENT = "Parent";
+
+  protected static final String ID = "ID";
+
   public enum EnsemblSeqType
   {
     /**
@@ -104,6 +108,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
   @Override
   public AlignmentI getSequenceRecords(String query) throws Exception
   {
+    long now = System.currentTimeMillis();
     // TODO use a String... query vararg instead?
 
     // danger: accession separator used as a regex here, a string elsewhere
@@ -151,6 +156,8 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
     }
 
     inProgress = false;
+    System.out.println(getClass().getName() + " took "
+            + (System.currentTimeMillis() - now) + "ms to fetch");
     return alignment;
   }
 
@@ -520,7 +527,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
   protected void transferFeature(SequenceFeature sf,
           SequenceI targetSequence, MapList overlap)
   {
-    String parent = (String) sf.getValue("Parent");
+    String parent = (String) sf.getValue(PARENT);
     if (parent != null && !parent.contains(targetSequence.getName()))
     {
       // this genomic feature belongs to a different transcript
@@ -538,6 +545,21 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient
       copy.setBegin(offset + Math.min(mappedRange[0], mappedRange[1]));
       copy.setEnd(offset + Math.max(mappedRange[0], mappedRange[1]));
       targetSequence.addSequenceFeature(copy);
+
+      /*
+       * for sequence_variant, make an additional feature with consequence
+       */
+      if (SequenceOntology.getInstance().isSequenceVariant(sf.getType()))
+      {
+        String consequence = (String) sf.getValue("consequence_type");
+        if (consequence != null)
+        {
+          SequenceFeature sf2 = new SequenceFeature("consequence",
+                  consequence, copy.getBegin(), copy.getEnd(), 0f,
+                  null);
+          targetSequence.addSequenceFeature(sf2);
+        }
+      }
     }
   
   }