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: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; } }