/** * Accumulate info for one read with a deletion */ public void addDeleted(final SAMRecord read, int previousPosition) { if (deletedInRecord == null) { deletedInRecord = new ArrayList<>(); } deletedInRecord.add(new RecordAndOffset(read, previousPosition)); }
/** * Accumulate info for one read with an insertion. * For this locus, the reads in the insertion are included also in recordAndOffsets */ public void addInserted(final SAMRecord read, int firstPosition) { if (insertedInRecord == null) { insertedInRecord = new ArrayList<>(); } insertedInRecord.add(new RecordAndOffset(read, firstPosition)); }
/** * Accumulate info for one read with an insertion. * For this locus, the reads in the insertion are included also in recordAndOffsets */ public void addInserted(final SAMRecord read, int firstPosition) { if (insertedInRecord == null) { insertedInRecord = new ArrayList<>(); } insertedInRecord.add(new RecordAndOffset(read, firstPosition)); }
SamLocusIterator.RecordAndOffset recordAndOffset1 = new SamLocusIterator.RecordAndOffset(samRecord1, i); SamLocusIterator.RecordAndOffset recordAndOffset2 = new SamLocusIterator.RecordAndOffset(samRecord2, i); locusInfo.add(recordAndOffset1); locusInfo.add(recordAndOffset2);
accumulator.get(refOffset).add(new RecordAndOffset(rec, readOffset));
accumulator.get(refOffset).add(new RecordAndOffset(rec, readOffset));
@Test public void testSimpleErrorCalculator() { final SAMSequenceRecord samSequenceRecord = new SAMSequenceRecord("chr1", 200); final SAMFileHeader samFileHeader = new SAMFileHeader(); samFileHeader.addSequence(samSequenceRecord); final SAMRecord samRecord = new SAMRecord(samFileHeader); samRecord.setReadBases("CgTGtGGAcAAAgAAA".getBytes()); final byte[] refBases = "CATGGGGAAAAAAAAA".getBytes(); final int n = refBases.length; samRecord.setReadUnmappedFlag(false); samRecord.setReadNegativeStrandFlag(true); samRecord.setAlignmentStart(1); samRecord.setReferenceIndex(0); final SimpleErrorCalculator baseErrorCalculator = new SimpleErrorCalculator(); for (int i = 0; i < n; i++) { SamLocusIterator.LocusInfo locusInfo = new SamLocusIterator.LocusInfo(samSequenceRecord, i + 1); final SAMLocusAndReference locusAndReference = new SAMLocusAndReference(locusInfo, refBases[i]); SamLocusIterator.RecordAndOffset recordAndOffset = new SamLocusIterator.RecordAndOffset(samRecord, i); baseErrorCalculator.addBase(recordAndOffset, locusAndReference); } final BaseErrorMetric metric = baseErrorCalculator.getMetric(); metric.calculateDerivedFields(); Assert.assertEquals(metric.TOTAL_BASES, n); Assert.assertEquals(metric.ERROR_BASES, 4L); }
private int getLengthAndAddBases(SAMSequenceRecord samSequenceRecord, SAMRecord samRecord1, SAMRecord samRecord2, byte[] refBases, BaseErrorAggregation<?> baseErrorAggregation) { final int length = refBases.length; for (int i = 0; i < length; i++) { SamLocusIterator.LocusInfo locusInfo = new SamLocusIterator.LocusInfo(samSequenceRecord, i + 1); SamLocusIterator.RecordAndOffset recordAndOffset1 = new SamLocusIterator.RecordAndOffset(samRecord1, i); SamLocusIterator.RecordAndOffset recordAndOffset2 = new SamLocusIterator.RecordAndOffset(samRecord2, i); locusInfo.add(recordAndOffset1); locusInfo.add(recordAndOffset2); final SAMLocusAndReference locusAndReference = new SAMLocusAndReference(locusInfo, refBases[i]); baseErrorAggregation.addBase(recordAndOffset1, locusAndReference); baseErrorAggregation.addBase(recordAndOffset2, locusAndReference); } return length; }
@Test(dataProvider = "homopolymerStratifierData") public void testHomopolymerLength(final int offset, final boolean readStrandPositive, final byte referenceBase, final Object expectedStratum, final ReadBaseStratification.RecordAndOffsetStratifier<?> recordAndOffsetStratifier) { final SAMSequenceRecord samSequenceRecord = new SAMSequenceRecord("chr1", 200); final SAMFileHeader samFileHeader = new SAMFileHeader(); final SAMRecord samRecord = new SAMRecord(samFileHeader); samRecord.setReadBases("CATGGGGAAAAAAAAA".getBytes()); samRecord.setReadUnmappedFlag(false); samRecord.setReadNegativeStrandFlag(!readStrandPositive); samRecord.setAlignmentStart(1); SamLocusIterator.RecordAndOffset recordAndOffset = new SamLocusIterator.RecordAndOffset(samRecord, offset); SamLocusIterator.LocusInfo locusInfo = new SamLocusIterator.LocusInfo(samSequenceRecord, 1); final SAMLocusAndReference locusAndReference = new SAMLocusAndReference(locusInfo, referenceBase); Assert.assertEquals(recordAndOffsetStratifier.stratify(recordAndOffset, locusAndReference), expectedStratum); }
/** * Accumulate info for one read with a deletion */ public void addDeleted(final SAMRecord read, int previousPosition) { if (deletedInRecord == null) { deletedInRecord = new ArrayList<>(); } deletedInRecord.add(new RecordAndOffset(read, previousPosition)); }
/** * @param rec aligned SamRecord * @param readOffset offset from start of read * @param length 1, as object represents only one aligned base * @param refPos -1, as this filed isn't used for this implementation * @param type null for this implementation * @return created RecordAndOffset */ @Override RecordAndOffset createRecordAndOffset(SAMRecord rec, int readOffset, int length, int refPos) { return new RecordAndOffset(rec, readOffset); }
/** * Accumulate info for one read at the locus. */ public void add(final SAMRecord read, final int position) { recordAndOffsets.add(new RecordAndOffset(read, position)); }
/** * @param rec aligned SamRecord * @param readOffset offset from start of read * @param length 1, as object represents only one aligned base * @param refPos -1, as this filed isn't used for this implementation * @param type null for this implementation * @return created RecordAndOffset */ @Override RecordAndOffset createRecordAndOffset(SAMRecord rec, int readOffset, int length, int refPos) { return new RecordAndOffset(rec, readOffset); }