List of usage examples for com.google.common.collect Range upperEndpoint
public C upperEndpoint()
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); }