@Override public void setCigarString(final String value) { super.setCigarString(value); mBinaryDataStale = true; mCigarLengthValid = false; mCigarDecoded = true; }
@Override public void setCigarString(final String value) { super.setCigarString(value); mBinaryDataStale = true; mCigarLengthValid = false; mCigarDecoded = true; }
@Override public void setCigarString(final String value) { super.setCigarString(value); mBinaryDataStale = true; mCigarLengthValid = false; mCigarDecoded = true; }
@Override public void setCigarString(final String value) { if (!initializedFields.contains(LazyField.CIGAR_STRING)) { initializedFields.add(LazyField.CIGAR_STRING); } super.setCigarString(value); }
@Override public void setCigarString(final String value) { if (!initializedFields.contains(LazyField.CIGAR_STRING)) { initializedFields.add(LazyField.CIGAR_STRING); } super.setCigarString(value); }
public SAMRecord createRead() { SAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "foo", 0, pos > 0 ? pos + (refOffset > 0 ? refOffset : 0): 1, readBases.getBytes(), quals); //if ( cigar != null ) read.setAlignmentEnd(readBases.getBytes().length + pos); read.setCigarString( cigar == null ? String.format("%dM", quals.length) : cigar); return read; } }
@Test public void testValidateNonsenseCigar(){ // Create nonsense record SAMRecord rec = createTestRecordHelper(); rec.setCigarString("nonsense"); //The default validationStringency of a sam record is SILENT. rec.setValidationStringency(ValidationStringency.STRICT); // Validate record List<SAMValidationError> err = rec.validateCigar(-1); Assert.assertNotNull(err); Assert.assertEquals(err.size(), 1); Assert.assertEquals(err.get(0).getType(), SAMValidationError.Type.INVALID_CIGAR); }
@Test(dataProvider = "testNmFromCigarProvider") public void testNmTagFromCigar(final String cigarString, final int expectedNmValue) { final SAMRecord rec = new SAMRecord(null); rec.setReadName("test"); rec.setCigarString(cigarString); Assert.assertEquals(SequenceUtil.calculateSamNmTagFromCigar(rec),expectedNmValue); }
@Test(dataProvider = "deepCopyTestData") public void testDeepCopyGetCigarString(SAMRecord sam) { sam.setCigarString(sam.getCigarString()); final SAMRecord deepCopy = sam.deepCopy(); Assert.assertTrue(sam.equals(deepCopy)); }
@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); }
@Test public void canShadeBaseQuality() throws InvalidGenomicCoordsException, IOException, InvalidColourException { GenomicCoords gc= new GenomicCoords("chr7:1-80", 80, null, null); SAMRecord rec= new SAMRecord(null); rec.setAlignmentStart(1); rec.setCigarString("2M3D8M"); rec.setMappingQuality(30); rec.setReadBases("AAAAATTTTT".getBytes()); rec.setBaseQualities("!!!!!IIIII".getBytes()); System.err.println(rec.getSAMString()); TextRead tr= new TextRead(rec, gc, false); System.err.println(Splitter.on("m").omitEmptyStrings().splitToList(tr.getPrintableTextRead(false, false, false))); }
@Test(dataProvider = "makeReferenceFromAlignment") public void testMakeReferenceFromAlignment(final String seq, final String cigar, final String md, boolean includeReferenceBasesForDeletions, final String expectedReference) { final SAMRecord rec = new SAMRecord(null); rec.setReadName("test"); rec.setReadString(seq); rec.setCigarString(cigar); rec.setAttribute(SAMTag.MD.name(), md); final byte[] refBases = SequenceUtil.makeReferenceFromAlignment(rec, includeReferenceBasesForDeletions); Assert.assertEquals(StringUtil.bytesToString(refBases), expectedReference); }
@Test(dataProvider = "longCigarsData") public void testSetCigarRemovesCgTagWhenNoLongerLong(final int numOps) throws Exception { final SAMRecordSetBuilder builder = new SAMRecordSetBuilder(true, SAMFileHeader.SortOrder.coordinate); final Cigar cigar = Cigar.fromCigarOperators(getCigarOperatorsForTest(numOps)); final SAMRecord frag1 = builder.addFrag("frag1", 0, 1, false, false, cigar.toString(), null, 30); frag1.setCigarString(String.format("%dM", cigar.getReadLength())); testHelper(builder, SAMFileHeader.SortOrder.coordinate, true); }
@Test(dataProvider = "longCigarsData") public void testSetCigarStringRemovesCgTagWhenNoLongerLong(final int numOps) throws Exception { final SAMRecordSetBuilder builder = new SAMRecordSetBuilder(true, SAMFileHeader.SortOrder.coordinate); final Cigar cigar = Cigar.fromCigarOperators(getCigarOperatorsForTest(numOps)); final SAMRecord frag1 = builder.addFrag("frag1", 0, 1, false, false, cigar.toString(), null, 30); frag1.setCigarString(String.format("%dM", cigar.getReadLength())); testHelper(builder, SAMFileHeader.SortOrder.coordinate, true); }
@Test public void testUnmappedRecords() throws IOException { final SAMRecordSetBuilder samBuilder = new SAMRecordSetBuilder(); for (int i = 0; i < 4; i++) { samBuilder.addUnmappedFragment(String.valueOf(i)); } final Iterator<SAMRecord> records = samBuilder.iterator(); records.next().setReadNegativeStrandFlag(true); records.next().setSecondaryAlignment(true); records.next().setMappingQuality(10); records.next().setCigarString("36M"); final Histogram<String> results = executeValidation(samBuilder.getSamReader(), null, IndexValidationStringency.EXHAUSTIVE); Assert.assertEquals(results.get(SAMValidationError.Type.INVALID_FLAG_NOT_PRIM_ALIGNMENT.getHistogramString()).getValue(), 1.0); Assert.assertEquals(results.get(SAMValidationError.Type.INVALID_MAPPING_QUALITY.getHistogramString()).getValue(), 1.0); }
@Test(dataProvider = "longCigarsData") public void testSetCigarStringRemovesCgTagWhenStillLong(final int numOps) throws Exception { final SAMRecordSetBuilder builder = new SAMRecordSetBuilder(true, SAMFileHeader.SortOrder.coordinate); final Cigar cigar = Cigar.fromCigarOperators(getCigarOperatorsForTest(numOps)); final SAMRecord frag1 = builder.addFrag("frag1", 0, 1, false, false, cigar.toString(), null, 30); final List<CigarOperator> cigarOperatorsForTest = getCigarOperatorsForTest(numOps); cigarOperatorsForTest.add(CigarOperator.H); final Cigar cigar2 = Cigar.fromCigarOperators(cigarOperatorsForTest); frag1.setCigarString(cigar2.toString()); testHelper(builder, SAMFileHeader.SortOrder.coordinate, true); }
@Test public void testMappedRecords() throws IOException { final SAMRecordSetBuilder samBuilder = new SAMRecordSetBuilder(); for (int i = 0; i < 2; i++) { samBuilder.addFrag(String.valueOf(i), i, i, false); } final Iterator<SAMRecord> records = samBuilder.iterator(); records.next().setCigarString("25M3S25M"); records.next().setReferenceName("*"); final Histogram<String> results = executeValidation(samBuilder.getSamReader(), null, IndexValidationStringency.EXHAUSTIVE); Assert.assertEquals(results.get(SAMValidationError.Type.INVALID_CIGAR.getHistogramString()).getValue(), 1.0); Assert.assertEquals(results.get(SAMValidationError.Type.INVALID_FLAG_READ_UNMAPPED.getHistogramString()).getValue(), 1.0); Assert.assertEquals(results.get(SAMValidationError.Type.MISSING_TAG_NM.getHistogramString()).getValue(), 1.0); Assert.assertEquals(results.get(SAMValidationError.Type.MISMATCH_CIGAR_SEQ_LENGTH.getHistogramString()).getValue(), 1.0); }
@Test public void canPrintFormattedRead() throws InvalidGenomicCoordsException, IOException, InvalidColourException { GenomicCoords gc= new GenomicCoords("chr7:5566778-5566798", 80, null, null); SAMRecord rec= new SAMRecord(null); rec.setAlignmentStart(5566780); rec.setCigarString("24M"); rec.setReadBases("AACCGGTTAACCGGTTAACCGGTT".getBytes()); TextRead textRead= new TextRead(rec, gc, false); rec.setSecondOfPairFlag(false); assertTrue( ! textRead.getPrintableTextRead(true, false, false).contains("4;")); // '4': Underline rec.setSecondOfPairFlag(true); assertTrue( textRead.getPrintableTextRead(true, false, false).contains("4;")); // '4': Underline }
@Test(enabled = true) public void testBAQOverwritesExistingTagWithNull() { // create a read with a single base off the end of the contig, which cannot be BAQed final SAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "foo", 0, fasta.getSequenceDictionary().getSequence("chr1").getSequenceLength() + 1, 1); read.setReadBases(new byte[] {(byte) 'A'}); read.setBaseQualities(new byte[] {(byte) 20}); read.setCigarString("1M"); read.setAttribute("BQ", "A"); // try to BAQ and tell it to RECALCULATE AND ADD_TAG BAQ baq = new BAQ(1e-3, 0.1, 7, (byte)4, false); baq.baqRead(read, fasta, BAQ.CalculationMode.RECALCULATE, BAQ.QualityMode.ADD_TAG); // did we remove the existing tag? Assert.assertTrue(read.getAttribute("BQ") == null); }
@Test public void canPrintSquashedRead() throws InvalidGenomicCoordsException, IOException, InvalidColourException{ GenomicCoords gc= new GenomicCoords("chr7:5566778-5566978", 80, samSeqDict, fastaFile); SAMRecord rec= new SAMRecord(null); rec.setAlignmentStart(5566780); rec.setCigarString("24M"); rec.setReadBases("AACCGGTTAACCGGTTAACCGGTT".getBytes()); TextRead textRead= new TextRead(rec, gc, false); assertEquals(2, textRead.getTextStart()); assertEquals(11, textRead.getTextEnd()); assertEquals(textRead.getTextEnd() - textRead.getTextStart() + 1, ">>>>>>>>>>".length()); assertEquals(textRead.getPrintableTextRead(false, true, false), ">>>>>>>>>>"); // System.out.println(textRead); }