/** * Gets #getGenomePosition but as a 1 bp GenomeLoc * @param genomeLocParser the parser to use to create the genome loc * @return a non-null genome location with start position of getGenomePosition */ @Requires("genomeLocParser != null") @Ensures("result != null") public GenomeLoc getLocation(final GenomeLocParser genomeLocParser) { // TODO -- may return wonky results if on an edge (could be 0 or could be beyond genome location) return genomeLocParser.createGenomeLoc(read.getReferenceName(), getGenomePosition()); }
public void add(GATKSAMRecord read) { final int readStart = read.getSoftStart(); final int readStop = read.getSoftEnd(); if ( loc == null ) loc = parser.createGenomeLoc(read.getReferenceName(), readStart, Math.max(readStop, readStart)); // in case it's all an insertion else if ( readStop > loc.getStop() ) loc = parser.createGenomeLoc(loc.getContig(), loc.getStart(), readStop); reads.add(read); }
public void setCigar(Cigar cigar, boolean fixClippedCigar) { if ( cigar == null ) { newCigar = null; return; } if ( fixClippedCigar && getReadBases().length < read.getReadLength() ) cigar = reclipCigar(cigar); // no change? if ( read.getCigar().equals(cigar) ) { newCigar = null; return; } // no indel? String str = cigar.toString(); if ( !str.contains("D") && !str.contains("I") ) { logger.debug("Modifying a read with no associated indel; although this is possible, it is highly unlikely. Perhaps this region should be double-checked: " + read.getReadName() + " near " + read.getReferenceName() + ":" + read.getAlignmentStart()); // newCigar = null; // return; } newCigar = cigar; }
public void setRead(final GATKSAMRecord read) { if ( !read.isEmpty() ) { this.read = read; if ( ! read.getReadUnmappedFlag() ) loc = genomeLocParser.createGenomeLoc(read.getReferenceName(), read.getSoftStart(), read.getSoftEnd()); } } }
sb.append(reads.get(0).getRead().getReferenceName()).append(":").append(leftmostIndex + i); if ( stillMismatches ) sb.append(" SAME_SNP\n");
@Test( ) public void testCreationFromSAMRecord() { final GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "foo", 0, 1, 5); 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.getAlignmentEnd()); }
/** * Tests the GenomeLoc variable in the ReadBin after adding arbitrary reads * * @param cigarString the read's cigar string * @param alignmentStart the read's alignment start */ @Test(enabled = true, dataProvider = "reads") public void testAddingReads(String cigarString, int alignmentStart) { final GATKSAMRecord read = createReadAndAddToBin(cigarString, alignmentStart); final GenomeLoc readLoc = parser.createGenomeLoc(read.getReferenceName(), read.getReferenceIndex(), read.getSoftStart(), Math.max(read.getSoftStart(), read.getSoftEnd())); Assert.assertEquals(readBin.getLocation(), readLoc); readBin.clear(); }
@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()); }
str.append(reads.get(0).getReferenceName()); int position = bestConsensus.positionOnReference + bestConsensus.cigar.getCigarElement(0).getLength(); str.append("\t").append(leftmostIndex + position - 1);
private void AssertWellOrderedPileup(final ReadBackedPileup pileup) { if ( ! pileup.isEmpty() ) { int leftMostPos = -1; for ( final PileupElement pe : pileup ) { Assert.assertTrue(pileup.getLocation().getContig().equals(pe.getRead().getReferenceName()), "ReadBackedPileup contains an element " + pe + " that's on a different contig than the pileup itself"); Assert.assertTrue(pe.getRead().getAlignmentStart() >= leftMostPos, "ReadBackedPileup contains an element " + pe + " whose read's alignment start " + pe.getRead().getAlignmentStart() + " occurs before the leftmost position we've seen previously " + leftMostPos); } } }
int uStop = read.getUnclippedEnd(); if ( !read.getReferenceName().equals(interval.getContig()) ) return ReadAndIntervalOverlap.NO_OVERLAP_CONTIG;
returnRead.setBaseQualities( quals ); returnRead.setReadGroup( firstRead.getReadGroup() ); returnRead.setReferenceName( firstRead.getReferenceName() ); returnRead.setReadName( firstRead.getReadName() ); final CigarElement c = new CigarElement(bases.length, CigarOperator.M);
final String contig = read.getReferenceName(); final int splitStart = startRefIndex + CigarUtils.countRefBasesBasedOnCigar(read,cigarFirstIndex,cigarEndIndex); //we use cigarEndIndex instead of cigarSecondIndex so we won't take into account the D's at the end. final int splitEnd = splitStart + read.getCigar().getCigarElement(cigarEndIndex).getLength() - 1;