Example usage for com.google.common.collect Range upperEndpoint

List of usage examples for com.google.common.collect Range upperEndpoint

Introduction

In this page you can find the example usage for com.google.common.collect Range upperEndpoint.

Prototype

public C upperEndpoint() 

Source Link

Document

Returns the upper endpoint of this range.

Usage

From source file:it.units.malelab.ege.benchmark.KLandscapes.java

private static FitnessComputer<String, NumericFitness> getFitnessComputer(final int k, final int nTerminals,
        final int nNonTerminals, final int arity, Range<Double> vRange, Range<Double> wRange) {
    Random random = new Random(1l);
    final Map<String, Double> v = new LinkedHashMap<>();
    final Map<Pair<String, String>, Double> w = new LinkedHashMap<>();
    //fill v map//www.  ja  v a2  s . com
    for (int i = 0; i < nTerminals; i++) {
        v.put("t" + i, random.nextDouble() * (vRange.upperEndpoint() - vRange.lowerEndpoint())
                + vRange.lowerEndpoint());
    }
    for (int i = 0; i < nNonTerminals; i++) {
        v.put("n" + i, random.nextDouble() * (vRange.upperEndpoint() - vRange.lowerEndpoint())
                + vRange.lowerEndpoint());
    }
    //fill w map
    for (int j = 0; j < nNonTerminals; j++) {
        for (int i = 0; i < nTerminals; i++) {
            w.put(new Pair<>("n" + j, "t" + i),
                    random.nextDouble() * (wRange.upperEndpoint() - wRange.lowerEndpoint())
                            + wRange.lowerEndpoint());
        }
        for (int i = 0; i < nNonTerminals; i++) {
            w.put(new Pair<>("n" + j, "n" + i),
                    random.nextDouble() * (wRange.upperEndpoint() - wRange.lowerEndpoint())
                            + wRange.lowerEndpoint());
        }
    }
    //prepare fitness
    final double optimumFitness = f(optimum(k, nTerminals, nNonTerminals, arity, v, w), k, v, w);
    return new FitnessComputer<String, NumericFitness>() {
        @Override
        public NumericFitness compute(Node<String> phenotype) {
            Node<String> tree = transform(phenotype);
            return new NumericFitness(1 - f(tree, k, v, w) / optimumFitness);
        }

        @Override
        public NumericFitness worstValue() {
            return new NumericFitness(Double.POSITIVE_INFINITY);
        }

        @Override
        public NumericFitness bestValue() {
            return new NumericFitness(0);
        }
    };
}

From source file:net.sf.mzmine.util.XMLUtils.java

public static void appendRange(Element xmlElement, String tagName, Range<?> range) {
    if (range == null)
        return;/* w w w.  j a va2s  .c  o m*/
    Document parentDocument = xmlElement.getOwnerDocument();
    Element newElement = parentDocument.createElement(tagName);
    Element minElement = parentDocument.createElement("min");
    minElement.setTextContent(String.valueOf(range.lowerEndpoint()));
    newElement.appendChild(minElement);
    Element maxElement = parentDocument.createElement("max");
    maxElement.setTextContent(String.valueOf(range.upperEndpoint()));
    newElement.appendChild(maxElement);
    xmlElement.appendChild(newElement);

}

From source file:io.druid.sql.calcite.filtration.RangeSets.java

public static List<Interval> toIntervals(final RangeSet<Long> rangeSet) {
    final List<Interval> retVal = Lists.newArrayList();

    for (Range<Long> range : rangeSet.asRanges()) {
        final long start;
        final long end;

        if (range.hasLowerBound()) {
            final long millis = range.lowerEndpoint();
            start = millis + (range.lowerBoundType() == BoundType.OPEN ? 1 : 0);
        } else {//from w  ww .jav a2 s.c  o  m
            start = Filtration.eternity().getStartMillis();
        }

        if (range.hasUpperBound()) {
            final long millis = range.upperEndpoint();
            end = millis + (range.upperBoundType() == BoundType.OPEN ? 0 : 1);
        } else {
            end = Filtration.eternity().getEndMillis();
        }

        retVal.add(Intervals.utc(start, end));
    }

    return retVal;
}

From source file:com.zulily.omicron.crontab.CrontabExpression.java

/**
 * Does the actual work of tearing apart the schedule expression and making them
 * into numerical sets of runtime whitelists
 *
 * @param expressionPart The current part we're working on
 * @param expression     The text expression to evaluate
 * @return A set within the expression's possible execution range
 *//*w ww.jav  a 2  s.  c  om*/
private static ImmutableSortedSet<Integer> evaluateExpressionPart(final ExpressionPart expressionPart,
        final String expression) {
    // Order of operations ->
    // 1) Split value by commas (lists) and for each csv.n:
    // 2) Split value by slashes (range/rangeStep)
    // 3) Match all for '*' or split hyphenated range for rangeStart and rangeEnd
    //
    // Converts sun==7 -> sun==0 to make schedule interpretation logic easier in timeInSchedule() evaluation
    // NOTE: this breaks week spanning ranges such as fri-tue, which instead must
    //       be handled as a list of ranges fri-sat,sun-tue

    final List<String> csvParts = Utils.COMMA_SPLITTER.splitToList(expression);

    final TreeSet<Integer> results = Sets.newTreeSet();

    for (final String csvPart : csvParts) {

        final List<String> slashParts = Utils.FORWARD_SLASH_SPLITTER.splitToList(csvPart);

        // Range step of expression i.e. */2 (none is 1 obviously)
        int rangeStep = 1;

        checkArgument(!slashParts.isEmpty() && slashParts.size() <= 2, "Invalid cron expression for %s: %s",
                expressionPart.name(), expression);

        if (slashParts.size() == 2) {
            // Ordinal definition: 0 = rangeExpression, 1 = stepExpression
            final Integer rangeStepInteger = expressionPart.textUnitToInt(slashParts.get(1));

            checkNotNull(rangeStepInteger,
                    "Invalid cron expression for %s (rangeStep is not a positive int): %s",
                    expressionPart.name(), expression);

            checkArgument(rangeStepInteger > 0, "Invalid cron expression for %s (rangeStep is not valid): %s",
                    expressionPart.name(), expression);

            rangeStep = rangeStepInteger;
        }

        final String rangeExpression = slashParts.get(0);

        final Range<Integer> allowedRange = expressionPart.getAllowedRange();

        int rangeStart = allowedRange.lowerEndpoint();
        int rangeEnd = allowedRange.upperEndpoint();

        // either * or 0 or 0-6, etc
        if (!"*".equals(rangeExpression)) {

            final List<String> hyphenParts = Utils.HYPHEN_SPLITTER.splitToList(rangeExpression);

            checkArgument(!hyphenParts.isEmpty() && hyphenParts.size() <= 2,
                    "Invalid cron expression for %s: %s", expressionPart.name(), expression);

            Integer rangeStartInteger = expressionPart.textUnitToInt(hyphenParts.get(0));

            checkNotNull(rangeStartInteger, "Invalid cron expression for %s (rangeStart is not an int): %s",
                    expressionPart.name(), expression);

            //correct terrible "sunday can be either 0 or 7" bug/feature in crond
            if (expressionPart == ExpressionPart.DaysOfWeek && rangeStartInteger == 7) {
                rangeStartInteger = 0;
            }

            checkArgument(allowedRange.contains(rangeStartInteger),
                    "Invalid cron expression for %s (valid range is %s): %s", expressionPart.name(),
                    expressionPart.getAllowedRange(), expression);

            rangeStart = rangeStartInteger;

            if (hyphenParts.size() == 2) {

                Integer rangeEndInteger = expressionPart.textUnitToInt(hyphenParts.get(1));

                checkNotNull(rangeEndInteger, "Invalid cron expression for %s (rangeEnd is not an int): %s",
                        expressionPart.name(), expression);

                //correct terrible "sunday can be either 0 or 7" bug/feature in crond
                if (expressionPart == ExpressionPart.DaysOfWeek && rangeEndInteger == 7) {
                    rangeEndInteger = 0;
                }

                checkArgument(allowedRange.contains(rangeEndInteger),
                        "Invalid cron expression for %s (valid range is %s): %s", expressionPart.name(),
                        expressionPart.getAllowedRange(), expression);

                rangeEnd = rangeEndInteger;

            } else {
                // Single value specified
                rangeEnd = rangeStart;

            }

        }

        checkArgument(rangeStart <= rangeEnd,
                "Invalid cron expression for %s (range start must not be greater than range end): %s",
                expressionPart.name(), expression);

        for (int runTime = rangeStart; runTime <= rangeEnd; runTime += rangeStep) {
            results.add(runTime);
        }

    }

    return ImmutableSortedSet.copyOf(results);
}

From source file:com.google.googlejavaformat.java.Formatter.java

/**
 * Converts zero-indexed, [closed, open) line ranges in the given source file to character ranges.
 *//*w w  w  .j  a  va  2  s . com*/
public static RangeSet<Integer> lineRangesToCharRanges(String input, RangeSet<Integer> lineRanges) {
    List<Integer> lines = new ArrayList<>();
    Iterators.addAll(lines, Newlines.lineOffsetIterator(input));
    lines.add(input.length() + 1);

    final RangeSet<Integer> characterRanges = TreeRangeSet.create();
    for (Range<Integer> lineRange : lineRanges.subRangeSet(Range.closedOpen(0, lines.size() - 1)).asRanges()) {
        int lineStart = lines.get(lineRange.lowerEndpoint());
        // Exclude the trailing newline. This isn't strictly necessary, but handling blank lines
        // as empty ranges is convenient.
        int lineEnd = lines.get(lineRange.upperEndpoint()) - 1;
        Range<Integer> range = Range.closedOpen(lineStart, lineEnd);
        characterRanges.add(range);
    }
    return characterRanges;
}

From source file:ec.util.grid.swing.ext.TableGridCommand.java

private static Table<?> copy2(GridModel model, Range<Integer> r, Range<Integer> c, boolean rowHeader,
        boolean columnHeader) {
    if (model.getRowCount() == 0 || model.getColumnCount() == 0) {
        return new Table<>(0, 0);
    }/*from ww w . j  a  v  a2  s  .  c om*/
    int firstRow = r.hasLowerBound()
            ? (r.lowerBoundType().equals(BoundType.CLOSED) ? r.lowerEndpoint() : (r.lowerEndpoint() + 1))
            : 0;
    int lastRow = r.hasUpperBound()
            ? (r.upperBoundType().equals(BoundType.CLOSED) ? r.upperEndpoint() : (r.upperEndpoint() - 1))
            : (model.getRowCount() - 1);
    int firstColumn = c.hasLowerBound()
            ? (c.lowerBoundType().equals(BoundType.CLOSED) ? c.lowerEndpoint() : (c.lowerEndpoint() + 1))
            : 0;
    int lastColumn = c.hasUpperBound()
            ? (c.upperBoundType().equals(BoundType.CLOSED) ? c.upperEndpoint() : (c.upperEndpoint() - 1))
            : (model.getColumnCount() - 1);
    return copy(model, firstRow, firstColumn, lastRow, lastColumn, rowHeader, columnHeader);
}

From source file:net.sf.mzmine.modules.visualization.peaklisttable.PeakListTablePopupMenu.java

/**
 * Get a peak's RT range./*from www .jav a2s  .c o  m*/
 * 
 * @param peak
 *            the peak.
 * @return The peak's RT range.
 */
private static Range<Double> getPeakRTRange(final Feature peak) {

    final Range<Double> range = peak.getRawDataPointsRTRange();
    final double rtLen = range.upperEndpoint() - range.lowerEndpoint();
    return Range.closed(Math.max(0.0, range.lowerEndpoint() - rtLen), range.upperEndpoint() + rtLen);
}

From source file:it.units.malelab.ege.util.Utils.java

public static List<Range<Integer>> slices(Range<Integer> range, List<Integer> sizes) {
    int length = range.upperEndpoint() - range.lowerEndpoint();
    int sumOfSizes = 0;
    for (int size : sizes) {
        sumOfSizes = sumOfSizes + size;/* w  w  w .ja va2 s. c om*/
    }
    if (sumOfSizes > length) {
        List<Integer> originalSizes = new ArrayList<>(sizes);
        sizes = new ArrayList<>(sizes.size());
        int oldSumOfSizes = sumOfSizes;
        sumOfSizes = 0;
        for (int originalSize : originalSizes) {
            int newSize = (int) Math.round((double) originalSize / (double) oldSumOfSizes);
            sizes.add(newSize);
            sumOfSizes = sumOfSizes + newSize;
        }
    }
    int minSize = (int) Math.floor((double) length / (double) sumOfSizes);
    int missing = length - minSize * sumOfSizes;
    int[] rangeSize = new int[sizes.size()];
    for (int i = 0; i < rangeSize.length; i++) {
        rangeSize[i] = minSize * sizes.get(i);
    }
    int c = 0;
    while (missing > 0) {
        rangeSize[c % rangeSize.length] = rangeSize[c % rangeSize.length] + 1;
        c = c + 1;
        missing = missing - 1;
    }
    List<Range<Integer>> ranges = new ArrayList<>(sizes.size());
    int offset = range.lowerEndpoint();
    for (int i = 0; i < rangeSize.length; i++) {
        ranges.add(Range.closedOpen(offset, offset + rangeSize[i]));
        offset = offset + rangeSize[i];
    }
    return ranges;
}

From source file:org.nmdp.ngs.range.rtree.RangeGeometries.java

/**
 * Create and return a new rectangle geometry from the specified range.
 *
 * @param range range, must not be null, must not be empty, and must have lower and upper bounds
 * @return a new rectangle geometry from the specified range
 *///from  w  ww  . ja v a  2 s.  c o m
public static <N extends Number & Comparable<? super N>> Rectangle range(final Range<N> range) {
    checkNotNull(range);
    if (range.isEmpty()) {
        throw new IllegalArgumentException("range must not be empty");
    }
    if (!range.hasLowerBound() || !range.hasUpperBound()) {
        throw new IllegalArgumentException("range must have lower and upper bounds");
    }
    Number lowerEndpoint = range.lowerEndpoint();
    BoundType lowerBoundType = range.lowerBoundType();
    Number upperEndpoint = range.upperEndpoint();
    BoundType upperBoundType = range.upperBoundType();

    /*
            
      Since we are representing genomic coordinate systems, the expectation is
      that endpoints are instance of Integer, Long, or BigInteger; thus for open
      lower and upper bounds we can safely add or substract 1.0 respectively.
            
      Then by convention a rectangle with y1 0.0 and height of 1.0 is used.
            
      closed(10, 20) --> (10.0, 0.0, 20.0, 1.0)
      closedOpen(10, 20) --> (10.0, 0.0, 19.0, 1.0)
      openClosed(10, 20) --> (11.0, 0.0, 20.0, 1.0)
      open(10, 20) --> (11.0, 0.0, 19.0, 1.0);
            
      closed(10, 11) --> (10.0, 0.0, 11.0, 1.0)
      closedOpen(10, 11) --> (10.0, 0.0, 10.0, 1.0)
      openClosed(10, 11) --> (11.0, 0.0, 11.0, 1.0)
      open(10, 11) --> empty, throw exception
            
      closed(10, 10) --> (10.0, 0.0, 10.0, 1.0)
      closedOpen(10, 10) --> empty, throw exception
      openClosed(10, 10) --> empty, throw exception
      open(10, 10) --> empty, throw exception
            
    */
    double x1 = lowerBoundType == BoundType.OPEN ? lowerEndpoint.doubleValue() + 1.0d
            : lowerEndpoint.doubleValue();
    double y1 = 0.0d;
    double x2 = upperBoundType == BoundType.OPEN ? upperEndpoint.doubleValue() - 1.0d
            : upperEndpoint.doubleValue();
    double y2 = 1.0d;
    return Geometries.rectangle(x1, y1, x2, y2);
}

From source file:org.dishevelled.bio.range.rtree.RangeGeometries.java

/**
 * Create and return a new rectangle geometry from the specified range.
 *
 * @param <N> value type//from  w  w w.ja v  a  2 s  .  c o  m
 * @param range range, must not be null, must not be empty, and must have lower and upper bounds
 * @return a new rectangle geometry from the specified range
 */
public static <N extends Number & Comparable<? super N>> Rectangle range(final Range<N> range) {
    checkNotNull(range);
    if (range.isEmpty()) {
        throw new IllegalArgumentException("range must not be empty");
    }
    if (!range.hasLowerBound() || !range.hasUpperBound()) {
        throw new IllegalArgumentException("range must have lower and upper bounds");
    }
    Number lowerEndpoint = range.lowerEndpoint();
    BoundType lowerBoundType = range.lowerBoundType();
    Number upperEndpoint = range.upperEndpoint();
    BoundType upperBoundType = range.upperBoundType();

    /*
            
      Since we are representing genomic coordinate systems, the expectation is
      that endpoints are instance of Integer, Long, or BigInteger; thus for open
      lower and upper bounds we can safely add or subtract 1.0 respectively.
            
      Then by convention a rectangle with y1 0.0 and height of 1.0 is used.
            
      closed(10, 20) --> (10.0, 0.0, 20.0, 1.0)
      closedOpen(10, 20) --> (10.0, 0.0, 19.0, 1.0)
      openClosed(10, 20) --> (11.0, 0.0, 20.0, 1.0)
      open(10, 20) --> (11.0, 0.0, 19.0, 1.0);
            
      closed(10, 11) --> (10.0, 0.0, 11.0, 1.0)
      closedOpen(10, 11) --> (10.0, 0.0, 10.0, 1.0)
      openClosed(10, 11) --> (11.0, 0.0, 11.0, 1.0)
      open(10, 11) --> empty, throw exception
            
      closed(10, 10) --> (10.0, 0.0, 10.0, 1.0)
      closedOpen(10, 10) --> empty, throw exception
      openClosed(10, 10) --> empty, throw exception
      open(10, 10) --> empty, throw exception
            
    */
    double x1 = lowerBoundType == BoundType.OPEN ? lowerEndpoint.doubleValue() + 1.0d
            : lowerEndpoint.doubleValue();
    double y1 = 0.0d;
    double x2 = upperBoundType == BoundType.OPEN ? upperEndpoint.doubleValue() - 1.0d
            : upperEndpoint.doubleValue();
    double y2 = 1.0d;
    return Geometries.rectangle(x1, y1, x2, y2);
}