/** Returns a new Interval that represents the intersection between the two intervals. */ public Interval intersect(final Interval that) { if (!intersects(that)) throw new IllegalArgumentException(that + " does not intersect " + this); return new Interval(this.sequence, Math.max(this.start, that.start), Math.min(this.end, that.end), this.negativeStrand, this.name + " intersection " + that.name); }
/** * Returns a new Interval that represents the intersection between the two intervals. */ public Interval intersect(final Interval that) { if (!intersects(that)) throw new IllegalArgumentException(that + " does not intersect " + this); return new Interval(this.getContig(), Math.max(this.getStart(), that.getStart()), Math.min(this.getEnd(), that.getEnd()), this.negativeStrand, this.name + " intersection " + that.name); }
/** * Returns a new Interval that represents the intersection between the two intervals. */ public Interval intersect(final Interval that) { if (!intersects(that)) throw new IllegalArgumentException(that + " does not intersect " + this); return new Interval(this.getContig(), Math.max(this.getStart(), that.getStart()), Math.min(this.getEnd(), that.getEnd()), this.negativeStrand, this.name + " intersection " + that.name); }
/** * Throws RuntimeException if the given intervals are not locus ordered and non-overlapping * * @param intervals * @param sequenceDictionary used to determine order of sequences */ public static void assertOrderedNonOverlapping(final Iterator<Interval> intervals, final SAMSequenceDictionary sequenceDictionary) { if (!intervals.hasNext()) { return; } Interval prevInterval = intervals.next(); int prevSequenceIndex = sequenceDictionary.getSequenceIndex(prevInterval.getContig()); while (intervals.hasNext()) { final Interval interval = intervals.next(); if (prevInterval.intersects(interval)) { throw new SAMException("Intervals should not overlap: " + prevInterval + "; " + interval); } final int thisSequenceIndex = sequenceDictionary.getSequenceIndex(interval.getContig()); if (prevSequenceIndex > thisSequenceIndex || (prevSequenceIndex == thisSequenceIndex && prevInterval.compareTo(interval) >= 0)) { throw new SAMException("Intervals not in order: " + prevInterval + "; " + interval); } prevInterval = interval; prevSequenceIndex = thisSequenceIndex; } } }
current = next; else if (current.intersects(next) || current.abuts(next)) { toBeMerged.add(next); current = new Interval(current.getSequence(), current.getStart(), Math.max(current.getEnd(), next.getEnd()), false , "");
/** * Throws RuntimeException if the given intervals are not locus ordered and non-overlapping * @param intervals * @param sequenceDictionary used to determine order of sequences */ public static void assertOrderedNonOverlapping(final Iterator<Interval> intervals, final SAMSequenceDictionary sequenceDictionary) { if (!intervals.hasNext()) { return; } Interval prevInterval = intervals.next(); int prevSequenceIndex = sequenceDictionary.getSequenceIndex(prevInterval.getSequence()); while (intervals.hasNext()) { final Interval interval = intervals.next(); if (prevInterval.intersects(interval)) { throw new SAMException("Intervals should not overlap: " + prevInterval + "; " + interval); } final int thisSequenceIndex = sequenceDictionary.getSequenceIndex(interval.getSequence()); if (prevSequenceIndex > thisSequenceIndex || (prevSequenceIndex == thisSequenceIndex && prevInterval.compareTo(interval) >= 0)) { throw new SAMException("Intervals not in order: " + prevInterval + "; " + interval); } prevInterval = interval; prevSequenceIndex = thisSequenceIndex; } } }
/** * Throws RuntimeException if the given intervals are not locus ordered and non-overlapping * * @param intervals * @param sequenceDictionary used to determine order of sequences */ public static void assertOrderedNonOverlapping(final Iterator<Interval> intervals, final SAMSequenceDictionary sequenceDictionary) { if (!intervals.hasNext()) { return; } Interval prevInterval = intervals.next(); int prevSequenceIndex = sequenceDictionary.getSequenceIndex(prevInterval.getContig()); while (intervals.hasNext()) { final Interval interval = intervals.next(); if (prevInterval.intersects(interval)) { throw new SAMException("Intervals should not overlap: " + prevInterval + "; " + interval); } final int thisSequenceIndex = sequenceDictionary.getSequenceIndex(interval.getContig()); if (prevSequenceIndex > thisSequenceIndex || (prevSequenceIndex == thisSequenceIndex && prevInterval.compareTo(interval) >= 0)) { throw new SAMException("Intervals not in order: " + prevInterval + "; " + interval); } prevInterval = interval; prevSequenceIndex = thisSequenceIndex; } } }
public int getIntersectionLength(final Interval other) { if (this.intersects(other)) { return (int) CoordMath.getOverlap(this.getStart(), this.getEnd(), other.getStart(), other.getEnd()); } return 0; }
public int getIntersectionLength(final Interval other) { if (this.intersects(other)) { return (int)CoordMath.getOverlap(this.getStart(), this.getEnd(), other.getStart(), other.getEnd()); } return 0; }
public int getIntersectionLength(final Interval other) { if (this.intersects(other)) { return (int) CoordMath.getOverlap(this.getStart(), this.getEnd(), other.getStart(), other.getEnd()); } return 0; }
toBeMerged.add(next); current = next; } else if (current.intersects(next) || current.abuts(next)) { if (enforceSameStrands && current.isNegativeStrand() != next.isNegativeStrand()) { throw new SAMException("Strands were not equal for: " + current.toString() + " and " + next.toString());
toBeMerged.add(next); current = next; } else if (current.intersects(next) || current.abuts(next)) { if (enforceSameStrands && current.isNegativeStrand() != next.isNegativeStrand()) { throw new SAMException("Strands were not equal for: " + current.toString() + " and " + next.toString());
if (interval.intersects(samRecordInterval)) { samRecordIntervalOverlaps = true;
final Interval bedItv = new Interval(bedFeature.getContig(), bedFeature.getStart(), bedFeature.getEnd()); if (vcInterval.intersects(bedItv)) { if (options.getColNo() == -1) { overlaps.add("true"); // marker is enough