List of usage examples for com.google.common.collect Range closed
public static <C extends Comparable<?>> Range<C> closed(C lower, C upper)
From source file:io.github.mzmine.util.jfreechart.IntelligentItemLabelGenerator.java
/** * @see org.jfree.chart.labels.XYItemLabelGenerator#generateLabel(org.jfree.data.xy.XYDataset, * int, int)// ww w.java2s . c o m */ public String generateLabel(XYDataset currentDataset, int currentSeries, int currentItem) { XYPlot plot = chartNode.getChart().getXYPlot(); // X and Y values of the current data point final double currentXValue = currentDataset.getXValue(currentSeries, currentItem); final double currentYValue = currentDataset.getYValue(currentSeries, currentItem); // Calculate X axis span of 1 screen pixel final double xLength = plot.getDomainAxis().getRange().getLength(); final double pixelX = xLength / chartNode.getWidth(); // Calculate the distance from the current point where labels might // overlap final double dangerZoneX = (reservedPixels / 2) * pixelX; // Range on X axis that we're going to check for higher data points. If // a higher data point is found, we don't place a label on this one. final Range<Double> dangerZoneRange = Range.closed(currentXValue - dangerZoneX, currentXValue + dangerZoneX); // Iterate through data sets for (int datasetIndex = 0; datasetIndex < plot.getDatasetCount(); datasetIndex++) { XYDataset dataset = plot.getDataset(datasetIndex); // Some data sets could have been removed if (dataset == null) continue; final int seriesCount = dataset.getSeriesCount(); // Iterate through series for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) { final int itemCount = dataset.getItemCount(seriesIndex); // Find the index of a data point that is closest to // currentXValue int closestValueIndex; if (dataset == currentDataset && seriesIndex == currentSeries) { closestValueIndex = currentItem; } else { closestValueIndex = findClosestXIndex(dataset, seriesIndex, currentXValue, 0, itemCount - 1); } // Search to the left of the closest data point for (int i = closestValueIndex; (i >= 0) && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i--) { if (dataset.getYValue(seriesIndex, i) > currentYValue) return null; // In the case there are equal values, only place the label // on the leftmost value if (dataset.getYValue(seriesIndex, i) == currentYValue && (dataset.getXValue(seriesIndex, i) < currentXValue)) return null; } // Search to the right of the closest data point for (int i = closestValueIndex + 1; (i < itemCount) && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i++) { if (dataset.getYValue(seriesIndex, i) > currentYValue) return null; } } } // If no higher data point was found, create the label String label = underlyingGenerator.generateLabel(currentDataset, currentSeries, currentItem); return label; }
From source file:org.mskcc.shenkers.view.GenericStackedIntervalView.java
public void setData(List<Pair<Integer, Integer>> intervals, List<T> content) { rows.clear();//from w w w . j a va2 s .co m rowNodes.clear(); rows.add(TreeRangeSet.create()); rowNodes.add(new ArrayList<>()); List<IntervalNode<T>> nodes = Stream.iterate(0, i -> i + 1).limit(intervals.size()) .map(i -> new IntervalNode<T>(intervals.get(i), content.get(i))).collect(Collectors.toList()); Collections.sort(nodes, new Comparator<IntervalNode<T>>() { @Override public int compare(IntervalNode<T> o1, IntervalNode<T> o2) { return o1.interval.getKey() - o2.interval.getKey(); } }); for (IntervalNode inode : nodes) { Pair<Integer, Integer> interval = inode.interval; Range<Integer> range = Range.closed(interval.getKey(), interval.getValue()); logger.info("stacking {}", interval); int i = 0; added: { // add the interval to the first row that doesn't intersect with while (i < rows.size()) { TreeRangeSet<Integer> set = rows.get(i); List<IntervalNode<T>> rowContent = rowNodes.get(i); RangeSet<Integer> intersection = set.subRangeSet( Range.closed(interval.getKey() - minSpace, interval.getValue() + minSpace)); if (intersection.isEmpty()) { set.add(range); rowContent.add(inode); logger.info("no intersections in row {}", i); break added; } logger.info("intersects in row {} {}", i, set); i++; } TreeRangeSet<Integer> row = TreeRangeSet.create(); row.add(range); rows.add(row); List<IntervalNode<T>> rowContent = new ArrayList<>(); rowContent.add(inode); rowNodes.add(rowContent); } } // { // Rectangle background = new Rectangle(); // background.setFill(Color.WHITE); // background.widthProperty().bind(widthProperty()); // background.heightProperty().bind(heightProperty()); // getChildren().add(background); // } List<T> children = new ArrayList<>(); for (List<IntervalNode<T>> row : rowNodes) { GenericIntervalView<T> rowView = new GenericIntervalView<>(min, max); List<Pair<Integer, Integer>> rowIntervals = new ArrayList<>(row.size()); List<T> rowContent = new ArrayList<>(row.size()); row.stream().forEach(i -> { rowIntervals.add(i.interval); rowContent.add(i.content); }); rowView.setData(rowIntervals, rowContent); rowView.flipDomainProperty().bind(flipDomain); children.add((T) rowView); } getChildren().addAll(children); }
From source file:jetbrains.jetpad.geometry.Rectangle.java
public Range<Integer> yRange() { return Range.closed(origin.y, origin.y + dimension.y); }
From source file:io.druid.timeline.partition.SingleDimensionShardSpec.java
@Override public Map<String, Range<String>> getDomain() { Range<String> range;//from ww w . j a va 2 s . co m if (start == null && end == null) { range = Range.all(); } else if (start == null) { range = Range.atMost(end); } else if (end == null) { range = Range.atLeast(start); } else { range = Range.closed(start, end); } return ImmutableMap.of(dimension, range); }
From source file:net.joala.data.random.AbstractRandomNumberProvider.java
@Override public T get() throws DataProvidingException { try {/* w w w. java 2 s . c om*/ return nextRandom(Range.closed(minValue, maxValue)); } catch (IllegalArgumentException e) { throw new DataProvidingException("Illegal range.", e); } }
From source file:net.sf.mzmine.parameters.parametertypes.ranges.IntRangeParameter.java
@Override public void loadValueFromXML(Element xmlElement) { NodeList minNodes = xmlElement.getElementsByTagName("min"); if (minNodes.getLength() != 1) return;//from w w w . j av a 2s . co m NodeList maxNodes = xmlElement.getElementsByTagName("max"); if (maxNodes.getLength() != 1) return; String minText = minNodes.item(0).getTextContent(); String maxText = maxNodes.item(0).getTextContent(); Integer min = Integer.valueOf(minText); Integer max = Integer.valueOf(maxText); value = Range.closed(min, max); }
From source file:org.apache.druid.timeline.partition.SingleDimensionShardSpec.java
private Range<String> getRange() { Range<String> range;/* w w w. ja v a 2s . c o m*/ if (start == null && end == null) { range = Range.all(); } else if (start == null) { range = Range.atMost(end); } else if (end == null) { range = Range.atLeast(start); } else { range = Range.closed(start, end); } return range; }
From source file:eu.interedition.collatex.medite.MediteAlgorithm.java
@Override public void collate(VariantGraph graph, Iterable<Token> witness) { final VariantGraph.Vertex[][] vertices = VariantGraphRanking.of(graph).asArray(); final Token[] tokens = Iterables.toArray(witness, Token.class); final SuffixTree<Token> suffixTree = SuffixTree.build(comparator, tokens); final MatchEvaluatorWrapper matchEvaluator = new MatchEvaluatorWrapper(this.matchEvaluator, tokens); final Matches matchCandidates = Matches.between(vertices, suffixTree, matchEvaluator); final SortedSet<SortedSet<VertexMatch.WithTokenIndex>> matches = Sets .newTreeSet(VertexMatch.<VertexMatch.WithTokenIndex>setComparator()); while (true) { final SortedSet<SortedSet<VertexMatch.WithTokenIndex>> maximalUniqueMatches = matchCandidates .findMaximalUniqueMatches(); if (maximalUniqueMatches.isEmpty()) { break; }// w w w .jav a 2 s . c o m final IntegerRangeSet rankFilter = new IntegerRangeSet(); final IntegerRangeSet tokenFilter = new IntegerRangeSet(); for (SortedSet<VertexMatch.WithTokenIndex> phrase : AlignmentDecisionGraph.filter(maximalUniqueMatches, matchEvaluator)) { final VertexMatch.WithTokenIndex firstMatch = phrase.first(); final VertexMatch.WithTokenIndex lastMatch = phrase.last(); matches.add(phrase); rankFilter.add(Range.closed(firstMatch.vertexRank, lastMatch.vertexRank)); tokenFilter.add(Range.closed(firstMatch.token, lastMatch.token)); } Iterables.removeIf(matchCandidates, VertexMatch.filter(rankFilter, tokenFilter)); } merge(graph, vertices, tokens, matches); }
From source file:com.google.errorprone.refaster.UBlank.java
@Override public Choice<UnifierWithUnconsumedStatements> apply(final UnifierWithUnconsumedStatements state) { int goodIndex = 0; while (goodIndex < state.unconsumedStatements().size()) { StatementTree stmt = state.unconsumedStatements().get(goodIndex); if (firstNonNull(FORBIDDEN_REFERENCE_SCANNER.scan(stmt, state.unifier()), false) && ControlFlowVisitor.INSTANCE.visitStatement(stmt) == ControlFlowVisitor.Result.NEVER_EXITS) { break; } else {//from w w w . ja va 2 s . co m goodIndex++; } } Collection<Integer> breakPoints = ContiguousSet.create(Range.closed(0, goodIndex), DiscreteDomain.integers()); return Choice.from(breakPoints).transform(new Function<Integer, UnifierWithUnconsumedStatements>() { @Override public UnifierWithUnconsumedStatements apply(Integer k) { Unifier unifier = state.unifier().fork(); unifier.putBinding(key(), state.unconsumedStatements().subList(0, k)); List<? extends StatementTree> remaining = state.unconsumedStatements().subList(k, state.unconsumedStatements().size()); return UnifierWithUnconsumedStatements.create(unifier, remaining); } }); }
From source file:org.caleydo.view.crossword.api.ui.band.Route.java
private Iterable<Vec2f> shiftCurve(final IDoubleFunction radius) { final int last = curve.length - 1; final float distanceFactor = 1.f / distances[last]; return Iterables.transform(ContiguousSet.create(Range.closed(0, last), DiscreteDomain.integers()), new Function<Integer, Vec2f>() { @Override//from w ww.j av a 2s . c o m public Vec2f apply(Integer input) { int i = input.intValue(); final float t = distances[i] * distanceFactor; final float r = (float) radius.apply(t); Vec2f p = curve[i].addScaled(r, normals[i]); return p; } }); }