@Test(dataProvider = "GetBasesCoveringRefIntervalData", enabled = true) public void testGetBasesCoveringRefInterval(final String basesString, final int refStart, final int refEnd, final String cigarString, final String expected) { final byte[] actualBytes = AlignmentUtils.getBasesCoveringRefInterval(refStart, refEnd, basesString.getBytes(), 0, TextCigarCodec.decode(cigarString)); if ( expected == null ) Assert.assertNull(actualBytes); else Assert.assertEquals(new String(actualBytes), expected); }
final int position = location - el.getKey().getAlignmentStart(); if (position >= 0 && position < bases.length) { final byte[] coveredBases = AlignmentUtils.getBasesCoveringRefInterval(position, position, bases, 0, el.getKey().getCigar()); if ( coveredBases != null && coveredBases.length != 0 ) { final int index = BaseUtils.simpleBaseToBaseIndex(coveredBases[0]);
protected boolean updateToBlockSubstitutionIfBetter(final List<VariantContext> neighbors) { if (neighbors.size() < MIN_NUMBER_OF_EVENTS_TO_COMBINE_INTO_BLOCK_SUBSTITUTION) return false; // TODO -- need more tests to decide if this is really so good final VariantContext first = neighbors.get(0); final int refStartOffset = first.getStart() - refLoc.getStart(); final int refEndOffset = neighbors.get(neighbors.size() - 1).getEnd() - refLoc.getStart(); final byte[] refBases = Arrays.copyOfRange(ref, refStartOffset, refEndOffset + 1); final byte[] hapBases = AlignmentUtils.getBasesCoveringRefInterval(refStartOffset, refEndOffset, haplotype.getBases(), haplotype.getAlignmentStartHapwrtRef(), haplotype.getCigar()); final VariantContextBuilder builder = new VariantContextBuilder(first); builder.stop(first.getStart() + refBases.length - 1); builder.alleles(Arrays.asList(Allele.create(refBases, true), Allele.create(hapBases))); final VariantContext block = builder.make(); // remove all merged events for ( final VariantContext merged : neighbors ) { if ( remove(merged.getStart()) == null ) throw new IllegalArgumentException("Expected to remove variant context from the event map but remove said there wasn't any element there: " + merged); } // note must be after we remove the previous events as the treeset only allows one key per start logger.info("Transforming into block substitution at " + block); addVC(block, false); return true; }
final byte[] newBases = AlignmentUtils.getBasesCoveringRefInterval(newStart, newStop, getBases(), 0, getCigar()); final Cigar newCigar = AlignmentUtils.trimCigarByReference(getCigar(), newStart, newStop);