JAL-3297 pad gaps in alignment to ensure hmmalign runs
authortva <tva@10.205.251.175>
Mon, 10 Jun 2019 10:54:37 +0000 (11:54 +0100)
committertva <tva@10.205.251.175>
Mon, 10 Jun 2019 10:54:37 +0000 (11:54 +0100)
src/jalview/datamodel/HiddenMarkovModel.java
src/jalview/hmmer/HMMAlign.java

index e917474..975bacb 100644 (file)
@@ -520,18 +520,19 @@ public class HiddenMarkovModel
     int start = hasMap ? getNode(1).getResidueNumber() : 1;
     int endResNo = hasMap ? getNode(nodes.size() - 1).getResidueNumber()
             : (start + getLength() - 1);
-    char[] sequence = new char[endResNo + 1];
+    char[] sequence = new char[endResNo];
 
     int lastResNo = start - 1;
     int seqOffset = -1;
     int gapCount = 0;
 
+
     for (int seqN = 0; seqN < start; seqN++)
     {
       sequence[seqN] = GAP_DASH;
       seqOffset++;
     }
-
+    
     for (int nodeNo = 1; nodeNo < nodes.size(); nodeNo++)
     {
       HMMNode node = nodes.get(nodeNo);
index 57e35e7..4642034 100644 (file)
@@ -70,6 +70,9 @@ public class HMMAlign extends HmmerCommand
     af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
             msgId);
 
+    // ensure alignments are the same length
+    alignment.padGaps();
+
     AlignmentView msa = af.gatherSequencesForAlignment();
     SequenceI[][] subAlignments = msa.getVisibleContigs(alignment.getGapCharacter());