JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / ws / DBRefFetcher.java
index a156b2c..7693142 100644 (file)
@@ -1,19 +1,21 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
  *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ws;
@@ -79,9 +81,10 @@ public class DBRefFetcher implements Runnable
   private SequenceI[] alseqs;
 
   /**
-   * when true - retrieved sequences will be trimmed to cover longest derived alignment sequence 
+   * when true - retrieved sequences will be trimmed to cover longest derived
+   * alignment sequence
    */
-  private boolean trimDsSeqs=true;
+  private boolean trimDsSeqs = true;
 
   public DBRefFetcher()
   {
@@ -129,7 +132,8 @@ public class DBRefFetcher implements Runnable
     this.dataset = ds;
     // TODO Jalview 2.5 lots of this code should be in the gui package!
     sfetcher = jalview.gui.SequenceFetcher.getSequenceFetcherSingleton(af);
-    // set default behaviour for transferring excess sequence data to the dataset 
+    // set default behaviour for transferring excess sequence data to the
+    // dataset
     trimDsSeqs = Cache.getDefault("TRIM_FETCHED_DATASET_SEQS", true);
     if (sources == null)
     {
@@ -279,11 +283,14 @@ public class DBRefFetcher implements Runnable
   {
     if (dbSources == null)
     {
-      throw new Error("Implementation error. Must initialise dbSources");
+      throw new Error(
+              MessageManager
+                      .getString("error.implementation_error_must_init_dbsources"));
     }
     running = true;
     long startTime = System.currentTimeMillis();
-    af.setProgressBar("Fetching db refs", startTime);
+    af.setProgressBar(MessageManager.getString("status.fetching_db_refs"),
+            startTime);
     try
     {
       if (Cache.getDefault("DBREFFETCH_USEPICR", false))
@@ -379,7 +386,7 @@ public class DBRefFetcher implements Runnable
             if (retrieved != null)
             {
               transferReferences(sdataset, dbsource.getDbSource(),
-                      retrieved,trimDsSeqs);
+                      retrieved, trimDsSeqs);
             }
           }
           else
@@ -389,8 +396,8 @@ public class DBRefFetcher implements Runnable
             {
               SequenceI sequence = dataset[seqIndex];
               DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(
-                      sequence.getDBRef(), new String[]
-                      { dbsource.getDbSource() }); // jalview.datamodel.DBRefSource.UNIPROT
+                      sequence.getDBRef(),
+                      new String[] { dbsource.getDbSource() }); // jalview.datamodel.DBRefSource.UNIPROT
               // });
               // check for existing dbrefs to use
               if (uprefs != null && uprefs.length > 0)
@@ -458,15 +465,20 @@ public class DBRefFetcher implements Runnable
     } // all databases have been queries.
     if (sbuffer.length() > 0)
     {
-      output.setText(MessageManager.getString("label.your_sequences_have_been_verified")
+      output.setText(MessageManager
+              .getString("label.your_sequences_have_been_verified")
               + sbuffer.toString());
-      Desktop.addInternalFrame(output, MessageManager.getString("label.sequence_names_updated"), 600, 300);
+      Desktop.addInternalFrame(output,
+              MessageManager.getString("label.sequence_names_updated"),
+              600, 300);
       // The above is the dataset, we must now find out the index
       // of the viewed sequence
 
     }
 
-    af.setProgressBar(MessageManager.getString("label.dbref_search_completed"), startTime);
+    af.setProgressBar(
+            MessageManager.getString("label.dbref_search_completed"),
+            startTime);
     // promptBeforeBlast();
 
     running = false;
@@ -476,14 +488,15 @@ public class DBRefFetcher implements Runnable
   /**
    * Verify local sequences in seqRefs against the retrieved sequence database
    * records.
-   * @param trimDatasetSeqs 
+   * 
+   * @param trimDatasetSeqs
    * 
    */
   void transferReferences(Vector sdataset, String dbSource,
           AlignmentI retrievedAl, boolean trimDatasetSeqs) // File
   // file)
   {
-    System.out.println("trimming ? "+trimDatasetSeqs);
+    System.out.println("trimming ? " + trimDatasetSeqs);
     if (retrievedAl == null || retrievedAl.getHeight() == 0)
     {
       return;
@@ -507,8 +520,7 @@ public class DBRefFetcher implements Runnable
       Vector sequenceMatches = new Vector();
       // look for corresponding accession ids
       DBRefEntry[] entryRefs = jalview.util.DBRefUtils.selectRefs(
-              entry.getDBRef(), new String[]
-              { dbSource });
+              entry.getDBRef(), new String[] { dbSource });
       if (entryRefs == null)
       {
         System.err
@@ -577,6 +589,7 @@ public class DBRefFetcher implements Runnable
         // mappings are made (but content matches retrieved set)
         boolean updateRefFrame = sequence.getDBRef() == null
                 || sequence.getDBRef().length == 0;
+        // TODO:
         // verify sequence against the entry sequence
 
         String nonGapped = AlignSeq.extractGaps("-. ",
@@ -605,11 +618,10 @@ public class DBRefFetcher implements Runnable
           // absStart = 0;
           // create valid mapping between matching region of local sequence and
           // the mapped sequence
-          mp = new Mapping(null, new int[]
-          { sequence.getStart() + absStart,
+          mp = new Mapping(null, new int[] {
+              sequence.getStart() + absStart,
               sequence.getStart() + absStart + entrySeq.length() - 1 },
-                  new int[]
-                  { entry.getStart(),
+                  new int[] { entry.getStart(),
                       entry.getStart() + entrySeq.length() - 1 }, 1, 1);
           updateRefFrame = false; // mapping is based on current start/end so
           // don't modify start and end
@@ -657,11 +669,21 @@ public class DBRefFetcher implements Runnable
         // unknownSequences.remove(sequence);
         int absEnd = absStart + nonGapped.length();
         absStart += 1;
+        if (!trimDatasetSeqs)
+        {
+          // insert full length sequence from record
+          sequence.setSequence(entry.getSequenceAsString());
+          sequence.setStart(entry.getStart());
+        }
         if (updateRefFrame)
         {
           // finally, update local sequence reference frame if we're allowed
-          sequence.setStart(absStart);
-          sequence.setEnd(absEnd);
+          if (trimDatasetSeqs)
+          {
+            // just fix start/end
+            sequence.setStart(absStart);
+            sequence.setEnd(absEnd);
+          }
           // search for alignment sequences to update coordinate frame for
           for (int alsq = 0; alsq < alseqs.length; alsq++)
           {