Skip to content

Commit 5445b90

Browse files
authored
SamSequenceRecord implements Locatable (#1459)
* Make SamSequenceRecord implement Locatable so it can be used with overlaps checks and in utilities that use locatable.
1 parent 4e1363f commit 5445b90

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

src/main/java/htsjdk/samtools/SAMSequenceRecord.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,20 @@
2424
package htsjdk.samtools;
2525

2626

27-
import htsjdk.variant.variantcontext.VariantContext;
2827

2928
import java.math.BigInteger;
30-
import java.net.URI;
31-
import java.net.URISyntaxException;
3229
import java.util.Arrays;
3330
import java.util.HashSet;
3431
import java.util.Map;
3532
import java.util.Set;
3633
import java.util.regex.Pattern;
34+
import htsjdk.samtools.util.Locatable;
3735

3836
/**
3937
* Header information about a reference sequence. Corresponds to @SQ header record in SAM text header.
4038
*/
4139

42-
public class SAMSequenceRecord extends AbstractSAMHeaderRecord implements Cloneable
40+
public class SAMSequenceRecord extends AbstractSAMHeaderRecord implements Cloneable, Locatable
4341
{
4442
public static final long serialVersionUID = 1L; // AbstractSAMHeaderRecord implements Serializable
4543
public final static int UNAVAILABLE_SEQUENCE_INDEX = -1;
@@ -228,5 +226,26 @@ public String toString() {
228226
public String getSAMString() {
229227
return new SAMTextHeaderCodec().getSQLine(this);
230228
}
229+
/** always returns <code>getSequenceName()</code>
230+
* @see #getSequenceName()
231+
* */
232+
@Override
233+
public final String getContig() {
234+
return this.getSequenceName();
235+
}
236+
237+
/** always returns 1 */
238+
@Override
239+
public final int getStart() {
240+
return 1;
241+
}
242+
243+
/** always returns <code>getSequenceLength()</code>
244+
* @see #getSequenceLength()
245+
* */
246+
@Override
247+
public final int getEnd() {
248+
return this.getSequenceLength();
249+
}
231250
}
232251

src/test/java/htsjdk/samtools/SAMSequenceRecordTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
package htsjdk.samtools;
2525

2626
import htsjdk.HtsjdkTest;
27+
import htsjdk.samtools.util.Interval;
2728
import org.testng.Assert;
2829
import org.testng.annotations.DataProvider;
2930
import org.testng.annotations.Test;
@@ -44,6 +45,17 @@ public void testGetSAMString() {
4445
Assert.assertEquals("@SQ\tSN:chr5_but_without_a_prefix\tLN:271828\tSP:Psephophorus terrypratchetti\tAS:GRCt01\tM5:7a6dd3d307de916b477e7bf304ac22bc", r.getSAMString());
4546
}
4647

48+
@Test
49+
public void testLocatable() {
50+
final SAMSequenceRecord r = new SAMSequenceRecord("1", 100);
51+
Assert.assertTrue(r.overlaps(r));
52+
Assert.assertEquals(r.getStart(),1);
53+
Assert.assertEquals(r.getEnd(),r.getSequenceLength());
54+
Assert.assertEquals(r.getLengthOnReference(),r.getSequenceLength());
55+
Assert.assertTrue(r.overlaps(new Interval(r.getContig(), 50, 150)));
56+
Assert.assertFalse(r.overlaps(new Interval(r.getContig(), 101, 101)));
57+
}
58+
4759
@DataProvider
4860
public Object[][] testIsSameSequenceData() {
4961
final SAMSequenceRecord rec1 = new SAMSequenceRecord("chr1", 100);

0 commit comments

Comments
 (0)