package picard.sam; import htsjdk.samtools.SAMRecord; import htsjdk.samtools.SAMRecordSetBuilder; import org.testng.Assert; import org.testng.annotations.Test; import java.util.List; /** * Tests related to code in AbstractAlignmentMerger */ public class AbstractAlignmentMergerTest { @Test public void tesOverlappedReadClippingWithNonOverlappedReads() { final SAMRecordSetBuilder set = new SAMRecordSetBuilder(); set.setReadLength(110); final List<SAMRecord> recs = set.addPair("q1", 0, 100, 200, false, false, "110M", "110M", false, true, 30); final SAMRecord r1 = recs.get(0); final SAMRecord r2 = recs.get(1); AbstractAlignmentMerger.clipForOverlappingReads(r1, r2); Assert.assertEquals(r1.getAlignmentStart(), 100); Assert.assertEquals(r1.getCigarString(), "110M"); Assert.assertEquals(r2.getAlignmentStart(), 200); Assert.assertEquals(r2.getCigarString(), "110M"); } @Test public void testBasicOverlappedReadClipping() { final SAMRecordSetBuilder set = new SAMRecordSetBuilder(); set.setReadLength(110); final List<SAMRecord> recs = set.addPair("q1", 0, 100, 90, false, false, "110M", "110M", false, true, 30); final SAMRecord r1 = recs.get(0); final SAMRecord r2 = recs.get(1); AbstractAlignmentMerger.clipForOverlappingReads(r1, r2); Assert.assertEquals(r1.getAlignmentStart(), 100); Assert.assertEquals(r1.getCigarString(), "100M10S"); Assert.assertEquals(r2.getAlignmentStart(), 100); Assert.assertEquals(r2.getCigarString(), "10S100M"); } @Test public void testOverlappedReadClippingWithExistingSoftClipping() { final SAMRecordSetBuilder set = new SAMRecordSetBuilder(); set.setReadLength(120); final List<SAMRecord> recs = set.addPair("q1", 0, 100, 95, false, false, "110M10S", "15S105M", false, true, 30); final SAMRecord r1 = recs.get(0); final SAMRecord r2 = recs.get(1); AbstractAlignmentMerger.clipForOverlappingReads(r1, r2); Assert.assertEquals(r1.getAlignmentStart(), 100); Assert.assertEquals(r1.getCigarString(), "100M20S"); Assert.assertEquals(r2.getAlignmentStart(), 100); Assert.assertEquals(r2.getCigarString(), "20S100M"); } @Test public void testOverlappedReadClippingWithExistingSoftClippingAndHardClipping() { final SAMRecordSetBuilder set = new SAMRecordSetBuilder(); set.setReadLength(120); final List<SAMRecord> recs = set.addPair("q1", 0, 100, 95, false, false, "110M10S5H", "5H15S105M", false, true, 30); final SAMRecord r1 = recs.get(0); final SAMRecord r2 = recs.get(1); AbstractAlignmentMerger.clipForOverlappingReads(r1, r2); Assert.assertEquals(r1.getAlignmentStart(), 100); Assert.assertEquals(r1.getCigarString(), "100M20S"); // Should ideally be 100M20S5H Assert.assertEquals(r2.getAlignmentStart(), 100); Assert.assertEquals(r2.getCigarString(), "20S100M"); // Should ideally be 5H20S100M } }