@Override public String getCigarString() { return record.getCigarString(); }
/** * Force all lazily-initialized data members to be initialized. If a subclass overrides this method, * typically it should also call super method. */ protected void eagerDecode() { getCigar(); getCigarString(); }
/** * Force all lazily-initialized data members to be initialized. If a subclass overrides this method, * typically it should also call super method. */ protected void eagerDecode() { getCigar(); getCigarString(); }
/** * Force all lazily-initialized data members to be initialized. If a subclass overrides this method, * typically it should also call super method. */ protected void eagerDecode() { getCigar(); getCigarString(); }
@Override public String getCigarString() { if (!initializedFields.contains(LazyField.CIGAR_STRING)) { setCigarString(getCigarStringImpl()); } return super.getCigarString(); }
private void updateCounts(SamReader reader) { for (SAMRecord read : reader) { if (read.getCigarString().contains("N")) { for (SpliceJunction junc : getJunctions(read)) { incrementCount(junc, read); } } } }
@Override public String getCigarString() { if (!initializedFields.contains(LazyField.CIGAR_STRING)) { setCigarString(getCigarStringImpl()); } return super.getCigarString(); }
@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 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 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 } }
@Test(dataProvider = "deepCopyTestData") public void testDeepCopyGetCigarString(SAMRecord sam) { sam.setCigarString(sam.getCigarString()); final SAMRecord deepCopy = sam.deepCopy(); Assert.assertTrue(sam.equals(deepCopy)); }
@Test public void testIteratorConsolidatesCigars() { final Cigar unconsolidatedCigar = TextCigarCodec.decode("3M0M5M0M"); final SAMRecord unconsolidatedRead = ArtificialSAMUtils.createArtificialRead(unconsolidatedCigar); final GATKSAMIterator readIterator = GATKSAMIteratorAdapter.adapt(Arrays.asList(unconsolidatedRead).iterator()); final ReadFormattingIterator formattingIterator = new ReadFormattingIterator(readIterator, false, (byte)-1); final SAMRecord postIterationRead = formattingIterator.next(); Assert.assertEquals(postIterationRead.getCigarString(), "8M", "Cigar 3M0M5M0M not consolidated correctly by ReadFormattingIterator"); } }
@Test(dataProvider = "testSetMateInfoMateCigar") public void testSetMateInfoMateCigar(final String testName, final int read1Start, final boolean read1Reverse, final String read1Cigar, final int read2Start, final boolean read2Reverse, final String read2Cigar) { final SAMFileHeader header = new SAMFileHeader(); header.addSequence(new SAMSequenceRecord("chr1", 100000000)); final SAMRecord rec1 = makeSamRecord2(header, read1Start, read1Reverse, read1Cigar, true); final SAMRecord rec2 = makeSamRecord2(header, read2Start, read2Reverse, read2Cigar, false); SamPairUtil.setMateInfo(rec1, rec2, true); Assert.assertEquals(SAMUtils.getMateCigarString(rec1), rec2.getCigarString(), testName + " first end"); Assert.assertEquals(SAMUtils.getMateCigarString(rec2), rec1.getCigarString(), testName + " second end"); }
@Test(dataProvider = "deepCopyTestData") public void testDeepCopyGetCigar(final SAMRecord sam) { testDeepCopy(sam); sam.setCigarString(sam.getCigarString()); sam.getCigar(); // force cigar elements to be resolved for equals testDeepCopy(sam); }
private void assertMate(final SAMRecord rec, final SAMRecord mate) { Assert.assertNotNull(mate); Assert.assertEquals(mate.getReadName(), rec.getReadName()); Assert.assertEquals(mate.getReferenceIndex(), rec.getMateReferenceIndex()); if (SAMUtils.getMateCigarString(rec) != null) { Assert.assertEquals(mate.getCigarString(), SAMUtils.getMateCigarString(rec)); } Assert.assertEquals(mate.getAlignmentStart(), rec.getMateAlignmentStart()); Assert.assertFalse(mate.getFirstOfPairFlag() == rec.getFirstOfPairFlag()); }
private void compare(SAMRecord r1, SAMRecord r2) { assertThat(r1.getReadName(), equalTo(r2.getReadName())); assertThat(r1.getFlags(), equalTo(r2.getFlags())); assertThat(r1.getReferenceIndex(), equalTo(r2.getReferenceIndex())); assertThat(r1.getAlignmentStart(), equalTo(r2.getAlignmentStart())); assertThat(r1.getMappingQuality(), equalTo(r2.getMappingQuality())); assertThat(r1.getCigarString(), equalTo(r2.getCigarString())); assertThat(r1.getMateReferenceIndex(), equalTo(r2.getMateReferenceIndex())); assertThat(r1.getMateAlignmentStart(), equalTo(r2.getMateAlignmentStart())); assertThat(r1.getInferredInsertSize(), equalTo(r2.getInferredInsertSize())); assertArrayEquals(r1.getReadBases(), r2.getReadBases()); assertArrayEquals(r1.getBaseQualities(), r2.getBaseQualities()); }
/** * Strip mapping information from a SAMRecord, but preserve it in the 'O' tags if it isn't already set. */ public static void makeReadUnmappedWithOriginalTags(final SAMRecord rec) { if (!hasOriginalMappingInformation(rec)) { rec.setAttribute(SAMTag.OP.name(), rec.getAlignmentStart()); rec.setAttribute(SAMTag.OC.name(), rec.getCigarString()); rec.setAttribute(SAMTag.OF.name(), rec.getFlags()); rec.setAttribute(SAMTag.OR.name(), rec.getReferenceName()); } makeReadUnmapped(rec); }
/** * Strip mapping information from a SAMRecord, but preserve it in the 'O' tags if it isn't already set. */ public static void makeReadUnmappedWithOriginalTags(final SAMRecord rec) { if (!hasOriginalMappingInformation(rec)) { rec.setAttribute(SAMTag.OP.name(), rec.getAlignmentStart()); rec.setAttribute(SAMTag.OC.name(), rec.getCigarString()); rec.setAttribute(SAMTag.OF.name(), rec.getFlags()); rec.setAttribute(SAMTag.OR.name(), rec.getReferenceName()); } makeReadUnmapped(rec); }
/** * Strip mapping information from a SAMRecord, but preserve it in the 'O' tags if it isn't already set. */ public static void makeReadUnmappedWithOriginalTags(final SAMRecord rec) { if (!hasOriginalMappingInformation(rec)) { rec.setAttribute(SAMTag.OP.name(), rec.getAlignmentStart()); rec.setAttribute(SAMTag.OC.name(), rec.getCigarString()); rec.setAttribute(SAMTag.OF.name(), rec.getFlags()); rec.setAttribute(SAMTag.OR.name(), rec.getReferenceName()); } makeReadUnmapped(rec); }