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; }
public final static List<GATKSAMRecord> createPair(SAMFileHeader header, String name, int readLen, int leftStart, int rightStart, boolean leftIsFirst, boolean leftIsNegative) { GATKSAMRecord left = ArtificialSAMUtils.createArtificialRead(header, name, 0, leftStart, readLen); GATKSAMRecord right = ArtificialSAMUtils.createArtificialRead(header, name, 0, rightStart, readLen); left.setReadPairedFlag(true); right.setReadPairedFlag(true); left.setProperPairFlag(true); right.setProperPairFlag(true); left.setFirstOfPairFlag(leftIsFirst); right.setFirstOfPairFlag(!leftIsFirst); left.setReadNegativeStrandFlag(leftIsNegative); left.setMateNegativeStrandFlag(!leftIsNegative); right.setReadNegativeStrandFlag(!leftIsNegative); right.setMateNegativeStrandFlag(leftIsNegative); left.setMateAlignmentStart(right.getAlignmentStart()); right.setMateAlignmentStart(left.getAlignmentStart()); left.setMateReferenceIndex(0); right.setMateReferenceIndex(0); int isize = rightStart + readLen - leftStart; left.setInferredInsertSize(isize); right.setInferredInsertSize(-isize); return Arrays.asList(left, right); }
read.setReadNegativeStrandFlag(true); read.setMateNegativeStrandFlag(false); read.setMateAlignmentStart(start + nClips); read.setInferredInsertSize(readLength); tests.add(new Object[]{nClips, goodBases, 0, read}); read.setReadNegativeStrandFlag(false); read.setMateNegativeStrandFlag(true); read.setMateAlignmentStart(start - 1); read.setInferredInsertSize(goodBases); tests.add(new Object[]{0, goodBases, nClips, read});
@Test public void testSecondaryAlignmentsDoNotCauseAccidentalRemovalOfMate() { final List<GATKSAMRecord> properReads = ArtificialSAMUtils.createPair(header, "foo", 1, 530, 1594, true, false); final GATKSAMRecord read1 = properReads.get(0); read1.setFlags(99); // first in proper pair, mate negative strand final GATKSAMRecord read2Primary = properReads.get(1); read2Primary.setFlags(147); // second in pair, mate unmapped, not primary alignment read2Primary.setAlignmentStart(1596); // move the read final GATKSAMRecord read2NonPrimary = new GATKSAMRecord(read2Primary); read2NonPrimary.setReadName("foo"); read2NonPrimary.setFlags(393); // second in proper pair, on reverse strand read2NonPrimary.setAlignmentStart(451); read2NonPrimary.setMateAlignmentStart(451); final ConstrainedMateFixingManager manager = new ConstrainedMateFixingManager(null, genomeLocParser, 10000, 200, 10000); manager.addRead(read2NonPrimary, false, false); manager.addRead(read1, false, false); for ( int i = 0; i < ConstrainedMateFixingManager.EMIT_FREQUENCY; i++ ) manager.addRead(ArtificialSAMUtils.createArtificialRead(header, "foo" + i, 0, 1500, 10), false, false); Assert.assertTrue(manager.forMateMatching.containsKey("foo")); }
read2Supp.setFlags(2209); // second in pair, mate negative strand, supplementary read2Supp.setAlignmentStart(100); read2Supp.setMateAlignmentStart(1000);
readLeftAdapter.setReadNegativeStrandFlag(true); readLeftAdapter.setMateNegativeStrandFlag(false); readLeftAdapter.setMateAlignmentStart(readRightAdapter.getAlignmentStart()); readRightAdapter.setCigarString(common.length() + "M4S"); readRightAdapter.setProperPairFlag(true); readRightAdapter.setReadNegativeStrandFlag(false); readRightAdapter.setMateNegativeStrandFlag(true); readRightAdapter.setMateAlignmentStart(readLeftAdapter.getAlignmentStart());
read.setAlignmentStart(100); read.setCigarString("50M"); read.setMateAlignmentStart(130); read.setInferredInsertSize(80); read.setFirstOfPairFlag(true); bad.setReadNegativeStrandFlag(true); bad.setMateNegativeStrandFlag(false); bad.setMateAlignmentStart(1000); tests.add( new Object[]{ "negative strand read ends before mate starts", bad, false });
@Test(enabled = true) public void testHardClippingBeforeMergeResultingInCompletelyContainedSecondRead() { final String adapter = "NNNN"; final int minReadSize = 7; final GATKSAMRecord readLeftAdapter = makeOverlappingRead(adapter, 30, Utils.dupString("A", 10), Utils.dupBytes((byte)30, 10), "", 30, 10); final GATKSAMRecord readRightAdapter = makeOverlappingRead("", 30, Utils.dupString("A", minReadSize), Utils.dupBytes((byte)30, minReadSize), adapter, 30, 10); readLeftAdapter.setCigarString(adapter.length() + "S10M"); readLeftAdapter.setProperPairFlag(true); readLeftAdapter.setFirstOfPairFlag(true); readLeftAdapter.setReadNegativeStrandFlag(true); readLeftAdapter.setMateAlignmentStart(10); readRightAdapter.setCigarString(minReadSize + "M4S"); readRightAdapter.setProperPairFlag(true); readRightAdapter.setFirstOfPairFlag(false); readRightAdapter.setReadNegativeStrandFlag(false); final int insertSize = minReadSize; readLeftAdapter.setInferredInsertSize(insertSize); readRightAdapter.setInferredInsertSize(-insertSize); final GATKSAMRecord actual = FragmentUtils.mergeOverlappingPairedFragments(readLeftAdapter, readRightAdapter); Assert.assertNull(actual); }
emptyRead.setMateAlignmentStart(read.getMateAlignmentStart()); emptyRead.setInferredInsertSize(read.getInferredInsertSize());
read.setAlignmentStart(myStart); read.setInferredInsertSize(20); read.setMateAlignmentStart(980); read.setReadNegativeStrandFlag(false); boundary = get.getAdaptor(read);
private GATKSAMRecord createReadOffContig(final SAMFileHeader header, final boolean negStrand, final int pre, final int post) { final int contigLen = header.getSequence(0).getSequenceLength(); final int readLen = pre + contigLen + post; final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "read1", 0, 1, readLen); read.setAlignmentStart(1); read.setCigar(TextCigarCodec.decode(pre + "S" + contigLen + "M" + post + "S")); read.setBaseQualities(Utils.dupBytes((byte) 30, readLen)); read.setReadBases(Utils.dupBytes((byte)'A', readLen)); read.setMappingQuality(60); read.setMateAlignmentStart(1); read.setProperPairFlag(true); read.setReadPairedFlag(true); read.setInferredInsertSize(30); read.setReadNegativeStrandFlag(negStrand); read.setMateNegativeStrandFlag(! negStrand); read.setReadGroup(new GATKSAMReadGroupRecord("foo")); return read; }