JAL-1432 updated copyright notices
[jalview.git] / src / jalview / ws / jws2 / JabawsAlignCalcWorker.java
index 99fc8a3..c9c1ea8 100644 (file)
@@ -1,3 +1,21 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 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.
+ *  
+ * 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/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ws.jws2;
 
 import jalview.analysis.AlignSeq;
@@ -6,6 +24,7 @@ import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AnnotatedCollectionI;
 import jalview.datamodel.Annotation;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
@@ -132,7 +151,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
         return;
       }
       List<compbio.data.sequence.FastaSequence> seqs = getInputSequences(alignViewport
-              .getAlignment());
+              .getAlignment(), bySequence ? alignViewport.getSelectionGroup() : null);
 
       if (seqs == null)
       {
@@ -159,7 +178,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
         } catch (WrongParameterException x)
         {
           throw new JobSubmissionException(
-                  "Invalid paremeter set. Check Jalview implementation.", x);
+                  "Invalid parameter set. Check Jalview implementation.", x);
 
         }
       }
@@ -184,7 +203,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
             }
             else
             {
-              System.err.println("FAILED TO CANCELL AACon job: " + rslt);
+              System.err.println("FAILED TO CANCEL AACon job: " + rslt);
             }
 
           } catch (Exception x)
@@ -205,7 +224,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
             try
             {
               stats = aaservice.pullExecStatistics(rslt, rpos);
-            }  catch (Exception x)
+            } catch (Exception x)
             {
 
               if (x.getMessage().contains(
@@ -222,10 +241,16 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
                 if (--serverErrorsLeft > 0)
                 {
                   retry = true;
-                  try {
+                  try
+                  {
                     Thread.sleep(200);
-                  } catch (InterruptedException q) {};
-                } else {
+                  } catch (InterruptedException q)
+                  {
+                  }
+                  ;
+                }
+                else
+                {
                   throw x;
                 }
               }
@@ -250,7 +275,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
           ;
         }
       } while (!finished);
-      if (serverErrorsLeft>0)
+      if (serverErrorsLeft > 0)
       {
         try
         {
@@ -356,8 +381,10 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
   boolean[] gapMap;
 
   int realw;
+  
+  int start,end;
 
-  public List<FastaSequence> getInputSequences(AlignmentI alignment)
+  public List<FastaSequence> getInputSequences(AlignmentI alignment, AnnotatedCollectionI inputSeqs)
   {
     if (alignment == null || alignment.getWidth() <= 0
             || alignment.getSequences() == null
@@ -367,6 +394,11 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
     {
       return null;
     }
+    if (inputSeqs==null || inputSeqs.getWidth()<=0 || inputSeqs.getSequences()==null || inputSeqs.getSequences().size()<1)
+    {
+      inputSeqs = alignment;
+    }
+    
     List<compbio.data.sequence.FastaSequence> seqs = new ArrayList<compbio.data.sequence.FastaSequence>();
 
     int minlen = 10;
@@ -376,9 +408,12 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
       seqNames = new HashMap<String, SequenceI>();
     }
     gapMap = new boolean[0];
-    for (SequenceI sq : ((List<SequenceI>) alignment.getSequences()))
+    start=inputSeqs.getStartRes();
+    end=inputSeqs.getEndRes();
+    
+    for (SequenceI sq : (List<SequenceI>) inputSeqs.getSequences())
     {
-      if (sq.getEnd() - sq.getStart() > minlen - 1)
+      if (sq.findPosition(end+1) -sq.findPosition(start+1) > minlen - 1)
       {
         String newname = SeqsetUtils.unique_name(seqs.size() + 1);
         // make new input sequence with or without gaps
@@ -410,7 +445,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
         {
           seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
                   AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
-                          sq.getSequenceAsString())));
+                          sq.getSequenceAsString(start,end+1))));
         }
         if (seq.getSequence().length() > ln)
         {