/** * Lift over the given interval to the new genome build using the liftOverMinMatch set for this * LiftOver object. * @param interval Interval to be lifted over. * @return Interval in the output build coordinates, or null if it cannot be lifted over. */ public Interval liftOver(final Interval interval) { return liftOver(interval, liftOverMinMatch); }
@BeforeClass public void initLiftOver() { liftOver = new LiftOver(CHAIN_FILE); contigMap = liftOver.getContigMap(); }
@Test(dataProvider = "failingIntervals") public void testDiagnosticLiftover(final Interval fromInterval) { final List<LiftOver.PartialLiftover> partials = liftOver.diagnosticLiftover(fromInterval); System.out.println("Diagnosing " + fromInterval + " (len " + fromInterval.length() + ")"); for (final LiftOver.PartialLiftover partial : partials) { System.out.println(partial); } }
@Test(dataProvider = "testIntervalsSubset") public void testLiftoverCounter(final Interval in, final Interval expected) { liftOver.resetFailedIntervalsBelowThresholdCounter(); final Interval out = liftOver.liftOver(in); Assert.assertEquals(out, expected); Assert.assertEquals(liftOver.getFailedIntervalsBelowThreshold(), expected == null ? 1 : 0); }
if (REJECT != null) IOUtil.assertFileIsWritable(REJECT); final LiftOver liftOver = new LiftOver(CHAIN); liftOver.setLiftOverMinMatch(MIN_LIFTOVER_PCT); liftOver.validateToSequences(toHeader.getSequenceDictionary()); final IntervalList toIntervals = new IntervalList(toHeader); for (final Interval fromInterval : intervalList) { final Interval toInterval = liftOver.liftOver(fromInterval); if (toInterval != null) { toIntervals.add(toInterval); rejects.add(fromInterval); LOG.warn("Liftover failed for ", fromInterval, " (len ", fromInterval.length(), ")"); final List<LiftOver.PartialLiftover> partials = liftOver.diagnosticLiftover(fromInterval); for (final LiftOver.PartialLiftover partial : partials) { LOG.info(partial);
LiftOver liftOverTool = new LiftOver(new File(ARGS.liftOverChainPath)); oneBasedClosedEnd, !currRange.isPositiveStrand(), currRange.getName()); Interval liftedInterval = liftOverTool.liftOver(currInterval, ARGS.minMatch); if (liftedInterval == null) { logger.log(Level.FINE, "failed to liftover an interval");
final LiftOver liftOver = new LiftOver(CHAIN); liftOver.setShouldLogFailedIntervalsBelowThreshold(LOG_FAILED_INTERVALS); ++total; final Interval source = new Interval(ctx.getContig(), ctx.getStart(), ctx.getEnd(), false, ctx.getContig() + ":" + ctx.getStart() + "-" + ctx.getEnd()); final Interval target = liftOver.liftOver(source, LIFTOVER_MIN_MATCH);
public List<PartialLiftover> diagnosticLiftover(final Interval interval) { final List<PartialLiftover> ret = new ArrayList<PartialLiftover>(); if (interval.length() == 0) { throw new IllegalArgumentException("Zero-length interval cannot be lifted over. Interval: " + interval.getName()); } for (final Chain chain : chains.getOverlaps(interval)) { Interval intersectingChain = interval.intersect(chain.interval); final TargetIntersection targetIntersection = targetIntersection(chain, intersectingChain); if (targetIntersection == null) { ret.add(new PartialLiftover(intersectingChain, chain.id)); } else { Interval toInterval = createToInterval(interval.getName(), targetIntersection); float percentLiftedOver = targetIntersection.intersectionLength/(float)interval.length(); ret.add(new PartialLiftover(intersectingChain, toInterval, targetIntersection.chain.id, percentLiftedOver)); } } return ret; }
if (REJECT != null) IOUtil.assertFileIsWritable(REJECT); final LiftOver liftOver = new LiftOver(CHAIN); liftOver.setLiftOverMinMatch(MIN_LIFTOVER_PCT); liftOver.validateToSequences(toHeader.getSequenceDictionary()); final IntervalList toIntervals = new IntervalList(toHeader); for (final Interval fromInterval : intervalList) { final Interval toInterval = liftOver.liftOver(fromInterval); if (toInterval != null) { toIntervals.add(toInterval); rejects.add(fromInterval); LOG.warn("Liftover failed for ", fromInterval, " (len ", fromInterval.length(), ")"); final List<LiftOver.PartialLiftover> partials = liftOver.diagnosticLiftover(fromInterval); for (final LiftOver.PartialLiftover partial : partials) { LOG.info(partial);
@Test(dataProvider = "indelFlipData") public void testFlipIndel(final VariantContext source, final ReferenceSequence reference, final VariantContext result) { final LiftOver liftOver = new LiftOver(CHAIN_FILE); final Interval originalLocus = new Interval(source.getContig(), source.getStart(), source.getEnd()); final Interval target = liftOver.liftOver(originalLocus); if (target != null && !target.isNegativeStrand()) { throw new RuntimeException("not reversed"); } final VariantContext flipped = LiftoverUtils.liftVariant(source, target, reference, false, false); VcfTestUtils.assertEquals(flipped, result); }
final LiftOver liftOver = new LiftOver(CHAIN); liftOver.setShouldLogFailedIntervalsBelowThreshold(LOG_FAILED_INTERVALS); ++total; final Interval source = new Interval(ctx.getContig(), ctx.getStart(), ctx.getEnd(), false, ctx.getContig() + ":" + ctx.getStart() + "-" + ctx.getEnd()); final Interval target = liftOver.liftOver(source, LIFTOVER_MIN_MATCH);
public List<PartialLiftover> diagnosticLiftover(final Interval interval) { final List<PartialLiftover> ret = new ArrayList<PartialLiftover>(); if (interval.length() == 0) { throw new IllegalArgumentException("Zero-length interval cannot be lifted over. Interval: " + interval.getName()); } for (final Chain chain : chains.getOverlaps(interval)) { Interval intersectingChain = interval.intersect(chain.interval); final TargetIntersection targetIntersection = targetIntersection(chain, intersectingChain); if (targetIntersection == null) { ret.add(new PartialLiftover(intersectingChain, chain.id)); } else { Interval toInterval = createToInterval(interval.getName(), interval.isNegativeStrand(), targetIntersection); float percentLiftedOver = targetIntersection.intersectionLength/(float)interval.length(); ret.add(new PartialLiftover(intersectingChain, toInterval, targetIntersection.chain.id, percentLiftedOver)); } } return ret; }
final LiftOver liftOver = new LiftOver(TWO_INTERVAL_CHAIN_FILE);
@Test(dataProvider = "snpWithChangedRef") public void snpWithChangedRef(final VariantContext source, final ReferenceSequence reference, final VariantContext result) { final LiftOver liftOver = new LiftOver(POSITIVE_CHAIN_FILE); final Interval originalLocus = new Interval(source.getContig(), source.getStart(), source.getEnd()); final Interval target = liftOver.liftOver(originalLocus); final VariantContext flipped = LiftoverUtils.swapRefAlt(source, LiftoverUtils.DEFAULT_TAGS_TO_REVERSE, LiftoverUtils.DEFAULT_TAGS_TO_DROP); VcfTestUtils.assertEquals(flipped, result); }
/** * Lift over the given interval to the new genome build using the liftOverMinMatch set for this * LiftOver object. * @param interval Interval to be lifted over. * @return Interval in the output build coordinates, or null if it cannot be lifted over. */ public Interval liftOver(final Interval interval) { return liftOver(interval, liftOverMinMatch); }
public List<PartialLiftover> diagnosticLiftover(final Interval interval) { final List<PartialLiftover> ret = new ArrayList<PartialLiftover>(); if (interval.length() == 0) { throw new IllegalArgumentException("Zero-length interval cannot be lifted over. Interval: " + interval.getName()); } for (final Chain chain : chains.getOverlaps(interval)) { Interval intersectingChain = interval.intersect(chain.interval); final TargetIntersection targetIntersection = targetIntersection(chain, intersectingChain); if (targetIntersection == null) { ret.add(new PartialLiftover(intersectingChain, chain.id)); } else { Interval toInterval = createToInterval(interval.getName(), interval.isNegativeStrand(), targetIntersection); float percentLiftedOver = targetIntersection.intersectionLength/(float)interval.length(); ret.add(new PartialLiftover(intersectingChain, toInterval, targetIntersection.chain.id, percentLiftedOver)); } } return ret; }
@Test(dataProvider = "indelFlipDataWithOriginalAllele") public void testFlipIndelWithOriginalAlleles(final VariantContext source, final ReferenceSequence reference, final VariantContext result) { final LiftOver liftOver = new LiftOver(CHAIN_FILE); final Interval originalLocus = new Interval(source.getContig(), source.getStart(), source.getEnd()); final Interval target = liftOver.liftOver(originalLocus); if (target != null && !target.isNegativeStrand()) { throw new RuntimeException("not reversed"); } final VariantContext flipped = LiftoverUtils.liftVariant(source, target, reference, false, true); VcfTestUtils.assertEquals(flipped, result); }
/** * Lift over the given interval to the new genome build using the liftOverMinMatch set for this * LiftOver object. * @param interval Interval to be lifted over. * @return Interval in the output build coordinates, or null if it cannot be lifted over. */ public Interval liftOver(final Interval interval) { return liftOver(interval, liftOverMinMatch); }
final TargetIntersection candidateIntersection = targetIntersection(chain, interval); if (candidateIntersection != null && candidateIntersection.intersectionLength >= minMatchSize) { if (chainHit != null) { return createToInterval(interval.getName(), targetIntersection);