JAL-1894 update year/version in copyright
[jalview.git] / src / jalview / datamodel / Alignment.java
index 482df7f..ef961d0 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -147,7 +147,9 @@ public class Alignment implements AlignmentI
    */
   public static AlignmentI createAlignment(CigarArray compactAlignment)
   {
-    throw new Error(MessageManager.getString("error.alignment_cigararray_not_implemented"));
+    throw new Error(
+            MessageManager
+                    .getString("error.alignment_cigararray_not_implemented"));
     // this(compactAlignment.refCigars);
   }
 
@@ -236,8 +238,7 @@ public class Alignment implements AlignmentI
     }
     if (sequences == null)
     {
-      initAlignment(new SequenceI[]
-      { snew });
+      initAlignment(new SequenceI[] { snew });
     }
     else
     {
@@ -1588,38 +1589,37 @@ public class Alignment implements AlignmentI
     }
   }
 
+  private SequenceI seqrep = null;
 
- private SequenceI seqrep=null;
-
- /**
-  * 
-  * @return the representative sequence for this group
-  */
- public SequenceI getSeqrep()
- {
-   return seqrep;
- }
+  /**
+   * 
+   * @return the representative sequence for this group
+   */
+  public SequenceI getSeqrep()
+  {
+    return seqrep;
+  }
 
- /**
-  * set the representative sequence for this group. Note - this affects the
-  * interpretation of the Hidereps attribute.
-  * 
-  * @param seqrep
-  *          the seqrep to set (null means no sequence representative)
-  */
- public void setSeqrep(SequenceI seqrep)
- {
-   this.seqrep = seqrep;
- }
+  /**
+   * set the representative sequence for this group. Note - this affects the
+   * interpretation of the Hidereps attribute.
+   * 
+   * @param seqrep
+   *          the seqrep to set (null means no sequence representative)
+   */
+  public void setSeqrep(SequenceI seqrep)
+  {
+    this.seqrep = seqrep;
+  }
 
- /**
-  * 
-  * @return true if group has a sequence representative
-  */
- public boolean hasSeqrep()
- {
-   return seqrep != null;
- }
+  /**
+   * 
+   * @return true if group has a sequence representative
+   */
+  public boolean hasSeqrep()
+  {
+    return seqrep != null;
+  }
 
   @Override
   public int getEndRes()
@@ -1664,8 +1664,8 @@ public class Alignment implements AlignmentI
    * identically. If this is nucleotide and the other is protein, make 3 gaps
    * for each gap in the protein sequences. If this is protein and the other is
    * nucleotide, insert a gap for each 3 gaps (or part thereof) between
-   * nucleotide bases. Does nothing if alignment of protein from cDNA is
-   * requested (not yet implemented).
+   * nucleotide bases. If this is protein and the other is nucleotide, gaps
+   * protein to match the relative ordering of codons in the nucleotide.
    * 
    * Parameters control whether gaps in exon (mapped) and intron (unmapped)
    * regions are preserved. Gaps that connect introns to exons are treated
@@ -1678,7 +1678,7 @@ public class Alignment implements AlignmentI
    * @param preserveUnmappedGaps
    *          if true, gaps within and between unmapped codons are preserved
    */
-//  @Override
+  // @Override
   public int alignAs(AlignmentI al, boolean preserveMappedGaps,
           boolean preserveUnmappedGaps)
   {
@@ -1693,17 +1693,19 @@ public class Alignment implements AlignmentI
 
     char thisGapChar = this.getGapCharacter();
     String gap = thisIsNucleotide && thatIsProtein ? String
-            .valueOf(new char[]
-            { thisGapChar, thisGapChar, thisGapChar }) : String
-            .valueOf(thisGapChar);
+            .valueOf(new char[] { thisGapChar, thisGapChar, thisGapChar })
+            : String.valueOf(thisGapChar);
+
+    // TODO handle intron regions? Needs a 'holistic' alignment of dna,
+    // not just sequence by sequence. But how to 'gap' intron regions?
 
     /*
      * Get mappings from 'that' alignment's sequences to this.
      */
     for (SequenceI alignTo : getSequences())
     {
-      count += AlignmentUtils.alignSequenceAs(alignTo, al, gap, preserveMappedGaps,
-              preserveUnmappedGaps) ? 1 : 0;
+      count += AlignmentUtils.alignSequenceAs(alignTo, al, gap,
+              preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;
     }
     return count;
   }
@@ -1731,4 +1733,19 @@ public class Alignment implements AlignmentI
     }
     return names;
   }
+
+  @Override
+  public boolean hasValidSequence()
+  {
+    boolean hasValidSeq = false;
+    for (SequenceI seq : getSequences())
+    {
+      if ((seq.getEnd() - seq.getStart()) > 0)
+      {
+        hasValidSeq = true;
+        break;
+      }
+    }
+    return hasValidSeq;
+  }
 }