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

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

Introduction

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

Prototype

public static <C extends Comparable<?>> Range<C> closed(C lower, C upper) 

Source Link

Document

Returns a range that contains all values greater than or equal to lower and less than or equal to upper .

Usage

From source file:net.hydromatic.foodbench.Main.java

private static RangeSet<Integer> parseInts(String idsProperty) {
    RangeSet<Integer> idSet = TreeRangeSet.create();
    if (idsProperty == null) {
        idsProperty = "";
    }//from  ww w  .  ja  v  a  2  s .co  m
    if (idsProperty.isEmpty() || idsProperty.startsWith("-")) {
        idSet.add(Range.<Integer>all());
    }
    if (!idsProperty.isEmpty()) {
        for (String id : idsProperty.split(",")) {
            String[] split2 = id.split("-");
            if (split2.length != 2) {
                if (id.endsWith("-")) {
                    // 10- means "10 onwards"
                    idSet.add(Range.atLeast(Integer.parseInt(id.substring(0, id.length() - 1))));
                } else {
                    idSet.add(Range.singleton(Integer.parseInt(id)));
                }
            } else if (split2[0].equals("")) {
                // -10 means "not 10"
                idSet.remove(Range.singleton(Integer.parseInt(split2[1])));
            } else {
                int min = Integer.parseInt(split2[0]);
                int max = Integer.parseInt(split2[1]);
                idSet.add(Range.closed(min, max));
            }
        }
    }
    return idSet;
}

From source file:net.sf.mzmine.modules.peaklistmethods.alignment.ransac.RANSAC.java

/**
 * Take the initial points ramdoly. The points are divided by the initial
 * number of points. If the fractions contain enough number of points took
 * one point from each part./* ww w  .  j a v  a  2  s.c  om*/
 * 
 * @param data
 *            vector with the points which represent all possible
 *            alignments.
 * @return false if there is any problem.
 */
private boolean getInitN(List<AlignStructMol> data) {
    if (data.size() > n) {
        Collections.sort(data, new AlignStructMol());
        double min = data.get(0).RT;
        double max = data.get(data.size() - 1).RT;

        Range<Double> rtRange = Range.closed(min, ((max - min) / 2) + min);

        int cont = 0, bucle = 0;
        while (cont < n / 2 && bucle < 1000) {
            int index = (int) (data.size() * Math.random());
            if (!data.get(index).ransacMaybeInLiers && rtRange.contains(data.get(index).RT)) {
                data.get(index).ransacMaybeInLiers = true;
                cont++;

            }

            bucle++;
        }
        if (bucle >= 1000) {
            getN(data, (n / 2) - cont);
        }

        bucle = 0;
        rtRange = Range.closed(((max - min) / 2) + min, max);

        while (cont < n && bucle < 1000) {

            int index = (int) (data.size() * Math.random());
            if (!data.get(index).ransacMaybeInLiers && rtRange.contains(data.get(index).RT)) {
                data.get(index).ransacMaybeInLiers = true;
                cont++;
            }
            bucle++;
        }
        if (bucle >= 1000) {
            getN(data, n - cont);
        }
        return true;
    } else {
        return false;
    }
}

From source file:net.sf.mzmine.modules.peaklistmethods.peakpicking.deconvolution.minimumsearch.MinimumSearchPeakDetector.java

@Override
public Feature[] resolvePeaks(final Feature chromatogram, final int[] scanNumbers,
        final double[] retentionTimes, final double[] intensities, ParameterSet parameters,
        RSessionWrapper rSession) {/*from  w  ww  . ja  v  a2  s .co  m*/

    final int scanCount = scanNumbers.length;
    final int lastScan = scanCount - 1;

    assert scanCount > 0;

    final Range<Double> peakDuration = parameters.getParameter(PEAK_DURATION).getValue();
    final double searchRTRange = parameters.getParameter(SEARCH_RT_RANGE).getValue();
    final double minRatio = parameters.getParameter(MIN_RATIO).getValue();
    final double minHeight = Math.max(parameters.getParameter(MIN_ABSOLUTE_HEIGHT).getValue(),
            parameters.getParameter(MIN_RELATIVE_HEIGHT).getValue() * chromatogram.getHeight());

    final List<ResolvedPeak> resolvedPeaks = new ArrayList<ResolvedPeak>(2);

    // First, remove all data points below chromatographic threshold.
    final double chromatographicThresholdLevel = MathUtils.calcQuantile(intensities,
            parameters.getParameter(CHROMATOGRAPHIC_THRESHOLD_LEVEL).getValue());
    for (int i = 0; i < intensities.length; i++) {

        if (intensities[i] < chromatographicThresholdLevel) {

            intensities[i] = 0.0;
        }
    }

    // Current region is a region between two minima, representing a
    // candidate for a resolved peak.
    startSearch: for (int currentRegionStart = 0; currentRegionStart < lastScan - 2; currentRegionStart++) {

        // Find at least two consecutive non-zero data points
        if (intensities[currentRegionStart] != 0.0 && intensities[currentRegionStart + 1] != 0.0) {

            double currentRegionHeight = intensities[currentRegionStart];

            endSearch: for (int currentRegionEnd = currentRegionStart
                    + 1; currentRegionEnd < scanCount; currentRegionEnd++) {

                // Update height of current region.
                currentRegionHeight = Math.max(currentRegionHeight, intensities[currentRegionEnd]);

                // If we reached the end, or if the next intensity is 0, we
                // have to stop here.
                if (currentRegionEnd == lastScan || intensities[currentRegionEnd + 1] == 0.0) {

                    // Find the intensity at the sides (lowest data points).
                    final double peakMinLeft = intensities[currentRegionStart];
                    final double peakMinRight = intensities[currentRegionEnd];

                    // Check the shape of the peak.
                    if (currentRegionHeight >= minHeight && currentRegionHeight >= peakMinLeft * minRatio
                            && currentRegionHeight >= peakMinRight * minRatio && peakDuration.contains(
                                    retentionTimes[currentRegionEnd] - retentionTimes[currentRegionStart])) {

                        resolvedPeaks.add(new ResolvedPeak(chromatogram, currentRegionStart, currentRegionEnd));
                    }

                    // Set the next region start to current region end - 1
                    // because it will be immediately
                    // increased +1 as we continue the for-cycle.
                    currentRegionStart = currentRegionEnd - 1;
                    continue startSearch;
                }

                // Minimum duration of peak must be at least searchRTRange.
                if (retentionTimes[currentRegionEnd] - retentionTimes[currentRegionStart] >= searchRTRange) {

                    // Set the RT range to check
                    final Range<Double> checkRange = Range.closed(
                            retentionTimes[currentRegionEnd] - searchRTRange,
                            retentionTimes[currentRegionEnd] + searchRTRange);

                    // Search if there is lower data point on the left from
                    // current peak i.
                    for (int i = currentRegionEnd - 1; i > 0 && checkRange.contains(retentionTimes[i]); i--) {

                        if (intensities[i] < intensities[currentRegionEnd]) {

                            continue endSearch;
                        }
                    }

                    // Search on the right from current peak i.
                    for (int i = currentRegionEnd + 1; i < scanCount
                            && checkRange.contains(retentionTimes[i]); i++) {

                        if (intensities[i] < intensities[currentRegionEnd]) {

                            continue endSearch;
                        }
                    }

                    // Find the intensity at the sides (lowest data points).
                    final double peakMinLeft = intensities[currentRegionStart];
                    final double peakMinRight = intensities[currentRegionEnd];

                    // If we have reached a minimum which is non-zero, but
                    // the peak shape would not fulfill the
                    // ratio condition, continue searching for next minimum.
                    if (currentRegionHeight >= peakMinRight * minRatio) {

                        // Check the shape of the peak.
                        if (currentRegionHeight >= minHeight && currentRegionHeight >= peakMinLeft * minRatio
                                && currentRegionHeight >= peakMinRight * minRatio
                                && peakDuration.contains(retentionTimes[currentRegionEnd]
                                        - retentionTimes[currentRegionStart])) {

                            resolvedPeaks
                                    .add(new ResolvedPeak(chromatogram, currentRegionStart, currentRegionEnd));
                        }

                        // Set the next region start to current region end-1
                        // because it will be immediately
                        // increased +1 as we continue the for-cycle.
                        currentRegionStart = currentRegionEnd - 1;
                        continue startSearch;
                    }
                }
            }
        }
    }

    return resolvedPeaks.toArray(new Feature[resolvedPeaks.size()]);
}

From source file:com.yahoo.gondola.container.AdminClient.java

private Range<Integer> lookupSplitRange(String fromShardId, String toShardId) {
    // TODO: implement
    return Range.closed(0, 5);
}

From source file:org.waveprotocol.box.server.persistence.blocks.impl.BlockIndexImpl.java

@Override
public synchronized void update(Fragment fragment) {
    RangeMap<RangeValue, String> ranges = getRanges(fragment.getSegmentId());
    Map.Entry<Range<RangeValue>, String> entry = ranges.getEntry(RangeValue.of(fragment.getStartVersion()));
    if (entry != null) {
        Preconditions.checkArgument(entry.getValue().equals(fragment.getBlock().getBlockId()),
                "New range overlaps an existing by block Id");
        Preconditions.checkArgument(fragment.getStartVersion() == entry.getKey().lowerEndpoint().get(),
                "New range overlaps an existing by start version");
        entry.getKey().upperEndpoint()// w  w  w .  j  ava  2s. com
                .set(fragment.isLast() ? Long.MAX_VALUE : fragment.getLastModifiedVersion());
    } else {
        ranges.put(
                Range.closed(RangeValue.of(fragment.getStartVersion()),
                        RangeValue.of(fragment.isLast() ? Long.MAX_VALUE : fragment.getLastModifiedVersion())),
                fragment.getBlock().getBlockId());
    }
}

From source file:com.wandrell.tabletop.interval.util.IntervalArithmeticsUtils.java

/**
 * Indicates if two intervals overlap.//from   ww  w.  j a v a2s.  c o m
 * 
 * @param intervalA
 *            first interval for the check
 * @param intervalB
 *            second interval for the check
 * @return {@code true} if they overlap, {@code false} otherwise
 */
public static final Boolean isOverlapped(final Interval intervalA, final Interval intervalB) {
    final Range<Integer> rangeA;
    final Range<Integer> rangeB;

    checkNotNull(intervalA, "Received a null pointer as the first interval");
    checkNotNull(intervalB, "Received a null pointer as the second interval");

    checkArgument(isValid(intervalA), "Received an invalid interval as the first argument");
    checkArgument(isValid(intervalB), "Received an invalid interval as the second argument");

    rangeA = Range.closed(intervalA.getLowerLimit(), intervalA.getUpperLimit());
    rangeB = Range.closed(intervalB.getLowerLimit(), intervalB.getUpperLimit());

    return rangeA.isConnected(rangeB);
}

From source file:com.giaybac.traprange.extractor.PDFTableExtractor.java

/**
 * Texts in tableContent have been ordered by .getY() ASC
 *
 * @param pageIdx// w ww  .  j av  a  2s  .  com
 * @param tableContent
 * @param rowTrapRanges
 * @param columnTrapRanges
 * @return
 */
private Table buildTable(int pageIdx, List<TextPosition> tableContent, List<Range<Integer>> rowTrapRanges,
        List<Range<Integer>> columnTrapRanges) {
    Table retVal = new Table(pageIdx, columnTrapRanges.size());
    int idx = 0;
    int rowIdx = 0;
    List<TextPosition> rowContent = new ArrayList<>();
    while (idx < tableContent.size()) {
        TextPosition textPosition = tableContent.get(idx);
        Range<Integer> rowTrapRange = rowTrapRanges.get(rowIdx);
        Range<Integer> textRange = Range.closed((int) textPosition.getY(),
                (int) (textPosition.getY() + textPosition.getHeight()));
        if (rowTrapRange.encloses(textRange)) {
            rowContent.add(textPosition);
            idx++;
        } else {
            TableRow row = buildRow(rowIdx, rowContent, columnTrapRanges);
            retVal.getRows().add(row);
            //next row: clear rowContent
            rowContent.clear();
            rowIdx++;
        }
    }
    //last row
    if (!rowContent.isEmpty() && rowIdx < rowTrapRanges.size()) {
        TableRow row = buildRow(rowIdx, rowContent, columnTrapRanges);
        retVal.getRows().add(row);
    }
    //return
    return retVal;
}

From source file:org.sosy_lab.cpachecker.cpa.arg.ARGPathExport.java

private String tokensToText(Set<Integer> tokens) {
    StringBuilder result = new StringBuilder();
    RangeSet<Integer> tokenRanges = TreeRangeSet.create();
    for (Integer token : tokens) {
        tokenRanges.add(Range.closed(token, token));
    }//w  ww. j  a  v a  2s .c  om
    for (Range<Integer> range : tokenRanges.asRanges()) {
        if (result.length() > 0) {
            result.append(",");
        }
        Integer from = range.lowerEndpoint();
        Integer to = range.upperEndpoint();
        if (to - from == 0) {
            result.append(from);
        } else {
            result.append(from);
            result.append("-");
            result.append(to);
        }
    }

    return result.toString();
}

From source file:de.tum.bgu.msm.models.demography.DefaultMarriageModel.java

private MarriageMarket defineMarriageMarket(Collection<Person> persons) {

    LOGGER.info("Defining Marriage Market");

    final List<Person> activePartners = new ArrayList<>();
    final Table<Integer, Gender, List<Person>> partnersByAgeAndGender = ArrayTable.create(
            ContiguousSet.create(Range.closed(16, 100), DiscreteDomain.integers()),
            Arrays.asList(Gender.values()));

    for (final Person pp : persons) {
        if (ruleGetMarried(pp)) {
            final double marryProb = getMarryProb(pp);
            if (SiloUtil.getRandomNumberAsDouble() <= marryProb) {
                activePartners.add(pp);/*  w  w  w .j  a  v a2  s.c  om*/
            } else if (isQualifiedAsPossiblePartner(pp)) {
                final List<Person> entry = partnersByAgeAndGender.get(pp.getAge(), pp.getGender());
                if (entry == null) {
                    partnersByAgeAndGender.put(pp.getAge(), pp.getGender(), Lists.newArrayList(pp));
                } else {
                    entry.add(pp);
                }
            }
        }
    }
    LOGGER.info(activePartners.size() + " persons actively looking for partner");
    return new MarriageMarket(activePartners, partnersByAgeAndGender);
}

From source file:org.apache.calcite.adapter.druid.DruidDateTimeUtils.java

protected static List<Range<Calendar>> leafToRanges(RexCall call, boolean withNot) {
    switch (call.getKind()) {
    case EQUALS://from   w w  w. j a  va2s .  c o m
    case LESS_THAN:
    case LESS_THAN_OR_EQUAL:
    case GREATER_THAN:
    case GREATER_THAN_OR_EQUAL: {
        final Calendar value;
        if (call.getOperands().get(0) instanceof RexInputRef
                && literalValue(call.getOperands().get(1)) != null) {
            value = literalValue(call.getOperands().get(1));
        } else if (call.getOperands().get(1) instanceof RexInputRef
                && literalValue(call.getOperands().get(0)) != null) {
            value = literalValue(call.getOperands().get(0));
        } else {
            return null;
        }
        switch (call.getKind()) {
        case LESS_THAN:
            return ImmutableList.of(withNot ? Range.atLeast(value) : Range.lessThan(value));
        case LESS_THAN_OR_EQUAL:
            return ImmutableList.of(withNot ? Range.greaterThan(value) : Range.atMost(value));
        case GREATER_THAN:
            return ImmutableList.of(withNot ? Range.atMost(value) : Range.greaterThan(value));
        case GREATER_THAN_OR_EQUAL:
            return ImmutableList.of(withNot ? Range.lessThan(value) : Range.atLeast(value));
        default:
            if (!withNot) {
                return ImmutableList.of(Range.closed(value, value));
            }
            return ImmutableList.of(Range.lessThan(value), Range.greaterThan(value));
        }
    }
    case BETWEEN: {
        final Calendar value1;
        final Calendar value2;
        if (literalValue(call.getOperands().get(2)) != null
                && literalValue(call.getOperands().get(3)) != null) {
            value1 = literalValue(call.getOperands().get(2));
            value2 = literalValue(call.getOperands().get(3));
        } else {
            return null;
        }

        boolean inverted = value1.compareTo(value2) > 0;
        if (!withNot) {
            return ImmutableList.of(inverted ? Range.closed(value2, value1) : Range.closed(value1, value2));
        }
        return ImmutableList.of(Range.lessThan(inverted ? value2 : value1),
                Range.greaterThan(inverted ? value1 : value2));
    }
    case IN: {
        ImmutableList.Builder<Range<Calendar>> ranges = ImmutableList.builder();
        for (RexNode operand : Util.skip(call.operands)) {
            final Calendar element = literalValue(operand);
            if (element == null) {
                return null;
            }
            if (withNot) {
                ranges.add(Range.lessThan(element));
                ranges.add(Range.greaterThan(element));
            } else {
                ranges.add(Range.closed(element, element));
            }
        }
        return ranges.build();
    }
    default:
        return null;
    }
}