{
SequenceI sequence;
- /*
+ /**
* Start position of match in sequence (base 1)
*/
int start;
- /*
+ /**
* End position (inclusive) (base 1)
*/
int end;
+ /**
+ * Constructor
+ *
+ * @param seq
+ * a sequence
+ * @param start
+ * start position of matched range (base 1)
+ * @param end
+ * end of matched range (inclusive, base 1)
+ */
public Match(SequenceI seq, int start, int end)
{
sequence = seq;
public String toString()
{
char[] chars = sequence.getSequence();
- return String.valueOf(Arrays.copyOfRange(chars, start - 1, end));
+ // convert start/end to base 0 (with bounds check)
+ final int from = Math.max(start - 1, 0);
+ final int to = Math.min(end, chars.length + 1);
+ return String.valueOf(Arrays.copyOfRange(chars, from, to));
}
}