/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
*/
package jalview.datamodel;
-import java.util.*;
+import jalview.analysis.AlignSeq;
-import jalview.analysis.*;
+import java.util.Enumeration;
+import java.util.Vector;
/**
*
* to the residues of this sequence
*/
Vector annotation;
+
+ /**
+ * The index of the sequence in a MSA
+ */
+ int index = -1;
- /** array of seuqence features - may not be null for a valid sequence object */
+ /** array of sequence features - may not be null for a valid sequence object */
public SequenceFeature[] sequenceFeatures;
/**
void checkValidRange()
{
- if (end < 1)
+ // Note: JAL-774 : http://issues.jalview.org/browse/JAL-774?focusedCommentId=11239&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-11239
{
int endRes = 0;
for (int j = 0; j < sequence.length; j++)
endRes += start - 1;
}
- this.end = endRes;
+ if (end<endRes) {
+ end = endRes;
+ }
}
}
// returns the alignment position for a residue
int j = start;
int i = 0;
-
+ // Rely on end being at least as long as the length of the sequence.
while ((i < sequence.length) && (j <= end) && (j <= pos))
{
if (!jalview.util.Comparison.isGap(sequence[i]))
{
this.annotation = new Vector();
}
-
- this.annotation.addElement(annotation);
+ if (!this.annotation.contains(annotation))
+ {
+ this.annotation.addElement(annotation);
+ }
annotation.setSequenceRef(this);
}
}
}
+ /**
+ * @return The index (zero-based) on this sequence in the MSA.
+ * It returns {@code -1} if this information is not available.
+ */
+ public int getIndex() { return index; }
+
+ /**
+ * Defines the position of this sequence in the MSA.
+ * Use the value {@code -1} if this information is undefined.
+ *
+ * @param The position for this sequence. This value is zero-based (zero for this first sequence)
+ */
+ public void setIndex(int value) { index = value; }
}