private SAMRecord createUnmappedRead(String name) { return ArtificialSAMUtils.createArtificialRead( header, name, SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX, SAMRecord.NO_ALIGNMENT_START, ArtificialSAMUtils.DEFAULT_READ_LENGTH); }
public static GATKSAMRecord createRandomRead(int length) { List<CigarElement> cigarElements = new LinkedList<>(); cigarElements.add(new CigarElement(length, CigarOperator.M)); Cigar cigar = new Cigar(cigarElements); return ArtificialSAMUtils.createArtificialRead(cigar); }
public static GATKSAMRecord createRandomRead(int length, boolean allowNs) { byte[] quals = ReadUtils.createRandomReadQuals(length); byte[] bbases = ReadUtils.createRandomReadBases(length, allowNs); return ArtificialSAMUtils.createArtificialRead(bbases, quals, bbases.length + "M"); }
private GATKSAMRecord createRead(final boolean useGoodBases) { GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "foo", 0, 10, readBases.getBytes(), useGoodBases ? Arrays.copyOf(goodQuals, goodQuals.length) : Arrays.copyOf(badQuals, badQuals.length)); read.setCigarString("10M"); return read; }
@Test public void testNoDuplicatesNoPairs() { List<SAMRecord> list = new ArrayList<SAMRecord>(); for (int x = 0; x < 10; x++) { SAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "SWEET_READ" + x, 0, 1, 100); read.setDuplicateReadFlag(false); list.add(read); } Set<List<SAMRecord>> myPairing = obj.uniqueReadSets(list); Assert.assertEquals(myPairing.size(), 10); // unique }
@Test(enabled = true) public void testCheckSeqStored () { final GATKSAMRecord goodRead = ArtificialSAMUtils.createArtificialRead(new byte[]{(byte)'A'}, new byte[]{(byte)'A'}, "1M"); final GATKSAMRecord badRead = ArtificialSAMUtils.createArtificialRead(new byte[]{}, new byte[]{}, "1M"); badRead.setReadString("*"); Assert.assertTrue(MalformedReadFilter.checkSeqStored(goodRead, true)); Assert.assertFalse(MalformedReadFilter.checkSeqStored(badRead, true)); try { MalformedReadFilter.checkSeqStored(badRead, false); Assert.assertTrue(false, "We should have exceptioned out in the previous line"); } catch (UserException e) { } }
@Test(expectedExceptions = IllegalStateException.class) public void testStrandlessReadsFailSetStrand() { final byte [] bases = {'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'}; final byte [] quals = {20 , 20 , 20 , 20 , 20 , 20 , 20 , 20 }; GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(bases, quals, "6M"); read.setIsStrandless(true); read.setReadNegativeStrandFlag(true); } }
public static GATKSAMRecord createArtificialRead(Cigar cigar) { int length = cigar.getReadLength(); byte [] base = {'A'}; byte [] qual = {30}; byte [] bases = Utils.arrayFromArrayWithLength(base, length); byte [] quals = Utils.arrayFromArrayWithLength(qual, length); SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(); return ArtificialSAMUtils.createArtificialRead(header, "default_read", 0, 10000, bases, quals, cigar.toString()); }
@Test(enabled = !DEBUG, dataProvider = "NumAlignedBlocks") public void testNumAlignedBlocks(final Cigar cigar, final int expected) { final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "myRead", 0, 1, cigar == null ? 10 : cigar.getReadLength()); read.setCigar(cigar); Assert.assertEquals(AlignmentUtils.getNumAlignmentBlocks(read), expected, "Cigar " + cigar + " failed NumAlignedBlocks"); }
@Test public void testFilterReadGroup() { SAMRecord filteredRecord = ArtificialSAMUtils.createArtificialRead(getHeader(), "readUno", 0, 1, 20); filteredRecord.setAttribute("RG", getReadGroupId(1)); SAMRecord unfilteredRecord = ArtificialSAMUtils.createArtificialRead(getHeader(), "readDos", 0, 2, 20); unfilteredRecord.setAttribute("RG", getReadGroupId(2)); List<String> filterList = new ArrayList<String>(); filterList.add("RG:" + getReadGroupId(1)); ReadGroupBlackListFilter filter = new ReadGroupBlackListFilter(filterList); Assert.assertTrue(filter.filterOut(filteredRecord)); Assert.assertFalse(filter.filterOut(unfilteredRecord)); }
@Test public void testFilterPlatformUnit() { SAMRecord filteredRecord = ArtificialSAMUtils.createArtificialRead(getHeader(), "readUno", 0, 1, 20); filteredRecord.setAttribute("RG", getReadGroupId(1)); SAMRecord unfilteredRecord = ArtificialSAMUtils.createArtificialRead(getHeader(), "readDos", 0, 2, 20); unfilteredRecord.setAttribute("RG", getReadGroupId(2)); List<String> filterList = new ArrayList<String>(); filterList.add("PU:" + getPlatformUnit(1)); ReadGroupBlackListFilter filter = new ReadGroupBlackListFilter(filterList); Assert.assertTrue(filter.filterOut(filteredRecord)); Assert.assertFalse(filter.filterOut(unfilteredRecord)); }
private GATKSAMRecord makeRead() { final SAMReadGroupRecord rg = header.getReadGroups().get(0); final String readName = String.format("%s.%d.%s", "read", readI, rg.getId()); final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, readName, 0, 1, readLength); read.setReadGroup(new GATKSAMReadGroupRecord(rg)); if ( payloadInBytes > 0 ) // add a payload byte array to push memory use per read even higher read.setAttribute("PL", new byte[payloadInBytes]); return read; } }
@Test(dataProvider = "ClipDownstreamProvider", enabled = true) public void clipDownstreamTest(final int readStart, final int readLength, final int delLength) { final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "basicRead", 0, readStart, readLength); if ( delLength == 0 ) read.setCigarString(readLength + "M"); else read.setCigarString((readLength / 2) + "M" + delLength + "D" + (readLength / 2) + "M"); final boolean result = PairHMMIndelErrorModel.mustClipDownstream(read, refWindowEnd); Assert.assertEquals(result, read.getSoftStart() < refWindowEnd && read.getSoftStart() + readLength > refWindowEnd); }
@Test public void testSortedReadsBasic() { SAMRecord read1 = ArtificialSAMUtils.createArtificialRead(samFileHeader,"read1",getContig(0).getSequenceIndex(),1,10); SAMRecord read2 = ArtificialSAMUtils.createArtificialRead(samFileHeader,"read2",getContig(0).getSequenceIndex(),2,10); List<SAMRecord> reads = Arrays.asList(read1,read2); VerifyingSamIterator iterator = new VerifyingSamIterator(GATKSAMIteratorAdapter.adapt(reads.iterator())); Assert.assertTrue(iterator.hasNext(),"Insufficient reads"); Assert.assertSame(iterator.next(),read1,"Incorrect read in read 1 position"); Assert.assertTrue(iterator.hasNext(),"Insufficient reads"); Assert.assertSame(iterator.next(),read2,"Incorrect read in read 2 position"); Assert.assertFalse(iterator.hasNext(),"Too many reads in iterator"); }
@Test public void testSortedReadsAcrossContigs() { SAMRecord read1 = ArtificialSAMUtils.createArtificialRead(samFileHeader,"read1",getContig(0).getSequenceIndex(),2,10); SAMRecord read2 = ArtificialSAMUtils.createArtificialRead(samFileHeader,"read2",getContig(1).getSequenceIndex(),1,10); List<SAMRecord> reads = Arrays.asList(read1,read2); VerifyingSamIterator iterator = new VerifyingSamIterator(GATKSAMIteratorAdapter.adapt(reads.iterator())); Assert.assertTrue(iterator.hasNext(),"Insufficient reads"); Assert.assertSame(iterator.next(),read1,"Incorrect read in read 1 position"); Assert.assertTrue(iterator.hasNext(),"Insufficient reads"); Assert.assertSame(iterator.next(),read2,"Incorrect read in read 2 position"); Assert.assertFalse(iterator.hasNext(),"Too many reads in iterator"); }
@Test (enabled = true) public void testReadWithNsRefIndexInDeletion() throws FileNotFoundException { final ReferenceSequenceFile seq = new CachingIndexedFastaSequenceFile(new File(b37KGReference)); final SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(seq.getSequenceDictionary()); final int readLength = 76; final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "myRead", 0, 8975, readLength); read.setReadBases(Utils.dupBytes((byte) 'A', readLength)); read.setBaseQualities(Utils.dupBytes((byte)30, readLength)); read.setCigarString("3M414N1D73M"); final int result = ReadUtils.getReadCoordinateForReferenceCoordinateUpToEndOfRead(read, 9392, ReadUtils.ClippingTail.LEFT_TAIL); Assert.assertEquals(result, 2); }
private Cigar makeExpectedCigar2(final Cigar originalCigar, final char indelOp, final int indelStart, final int indelSize, final int readLength) { if ( indelStart < 17 || indelStart > (26 - (indelOp == 'D' ? indelSize : 0)) ) return originalCigar; final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "myRead", 0, 1, readLength); if ( indelOp == 'I' && (indelSize == 1 || indelSize == 3) && indelStart % 2 == 1 ) read.setCigarString(buildTestCigarString(indelOp, 0, Math.max(indelStart - indelSize, 16), indelSize, readLength)); else if ( (indelSize == 2 || indelSize == 4) && (indelOp == 'D' || indelStart % 2 == 0) ) read.setCigarString(buildTestCigarString(indelOp, 0, 16, indelSize, readLength)); else return originalCigar; return read.getCigar(); }
@Test( ) public void testCreationFromSAMRecordUnmappedButOnGenome() { final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "foo", 0, 1, 5); read.setReadUnmappedFlag(true); read.setCigarString("*"); final GenomeLoc loc = genomeLocParser.createGenomeLoc(read); Assert.assertEquals(loc.getContig(), read.getReferenceName()); Assert.assertEquals(loc.getContigIndex(), (int)read.getReferenceIndex()); Assert.assertEquals(loc.getStart(), read.getAlignmentStart()); Assert.assertEquals(loc.getStop(), read.getAlignmentStart()); }
public GATKSAMRecord makeRead() { GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "read", 0, locus, readLength); read.setReadBases(Utils.dupBytes((byte) 'A', readLength)); final byte[] quals = new byte[readLength]; for ( int i = 0; i < readLength; i++ ) quals[i] = (byte)(i % QualityUtils.MAX_SAM_QUAL_SCORE); read.setBaseQualities(quals); read.setCigarString(cigarString); return read; } }
private GATKSAMRecord makeRead(final int fragmentSize, final int mateStart) { final byte[] bases = {'A', 'C', 'G', 'T', 'A', 'C', 'G', 'T'}; final byte[] quals = {30, 30, 30, 30, 30, 30, 30, 30}; final String cigar = "8M"; GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(bases, quals, cigar); read.setProperPairFlag(true); read.setReadPairedFlag(true); read.setMateAlignmentStart(mateStart); read.setInferredInsertSize(fragmentSize); return read; }