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.sf.mzmine.modules.rawdatamethods.peakpicking.msms.MsMsPeakPickingTask.java
public void run() { setStatus(TaskStatus.PROCESSING);//w ww. j av a 2 s . c o m final Scan scans[] = scanSelection.getMatchingScans(dataFile); totalScans = scans.length; for (Scan scan : scans) { if (isCanceled()) return; // Get the MS Scan Scan bestScan = null; Range<Double> rtWindow = Range.closed(scan.getRetentionTime() - (binTime / 2.0), scan.getRetentionTime() + (binTime / 2.0)); Range<Double> mzWindow = Range.closed(scan.getPrecursorMZ() - (binSize / 2.0), scan.getPrecursorMZ() + (binSize / 2.0)); DataPoint point; DataPoint maxPoint = null; int[] regionScanNumbers = dataFile.getScanNumbers(1, rtWindow); for (int regionScanNumber : regionScanNumbers) { Scan regionScan = dataFile.getScan(regionScanNumber); point = ScanUtils.findBasePeak(regionScan, mzWindow); // no datapoint found if (point == null) { continue; } if (maxPoint == null) { maxPoint = point; } int result = Double.compare(maxPoint.getIntensity(), point.getIntensity()); if (result <= 0) { maxPoint = point; bestScan = regionScan; } } // if no representative dataPoint if (bestScan == null) { continue; } assert maxPoint != null; SimpleFeature c = new SimpleFeature(dataFile, scan.getPrecursorMZ(), bestScan.getRetentionTime(), maxPoint.getIntensity(), maxPoint.getIntensity(), new int[] { bestScan.getScanNumber() }, new DataPoint[] { maxPoint }, FeatureStatus.DETECTED, bestScan.getScanNumber(), scan.getScanNumber(), Range.singleton(bestScan.getRetentionTime()), Range.singleton(scan.getPrecursorMZ()), Range.singleton(maxPoint.getIntensity())); PeakListRow entry = new SimplePeakListRow(scan.getScanNumber()); entry.addPeak(dataFile, c); newPeakList.addRow(entry); processedScans++; } project.addPeakList(newPeakList); // Add quality parameters to peaks QualityParameters.calculateQualityParameters(newPeakList); logger.info("Finished MS/MS peak builder on " + dataFile + ", " + processedScans + " scans processed"); setStatus(TaskStatus.FINISHED); }
From source file:org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.java
public static Predicate<Firewall> providesIpPermission(final IpPermission permission) { return new Predicate<Firewall>() { @Override/*from w ww .j ava2 s . c o m*/ public boolean apply(Firewall input) { boolean groupsMatchTags = (permission.getGroupIds().isEmpty() && input.getSourceTags().isEmpty()) || !Sets.intersection(permission.getGroupIds(), input.getSourceTags()).isEmpty(); boolean cidrsMatchRanges = (permission.getCidrBlocks().isEmpty() && input.getSourceRanges().isEmpty()) || !Sets.intersection(permission.getCidrBlocks(), input.getSourceRanges()).isEmpty(); boolean firewallHasPorts = hasProtocol(permission.getIpProtocol()).apply(input) && ((permission.getFromPort() == 0 && permission.getToPort() == 0) || hasPortRange(Range.closed(permission.getFromPort(), permission.getToPort())) .apply(input)); return groupsMatchTags && cidrsMatchRanges && firewallHasPorts; } }; }
From source file:com.comphenix.protocol.RangeParser.java
/** * Simplify a list of ranges by assuming a maximum value. * @param ranges - the list of ranges to simplify. * @param maximum - the maximum value (minimum value is always 0). * @return A simplified list of ranges./* w w w.j av a 2 s .co m*/ */ private static List<Range<Integer>> simplify(List<Range<Integer>> ranges, int maximum) { List<Range<Integer>> result = new ArrayList<Range<Integer>>(); boolean[] set = new boolean[maximum + 1]; int start = -1; // Set every ID for (Range<Integer> range : ranges) { for (int id : ContiguousSet.create(range, DiscreteDomain.integers())) { set[id] = true; } } // Generate ranges from this set for (int i = 0; i <= set.length; i++) { if (i < set.length && set[i]) { if (start < 0) { start = i; } } else { if (start >= 0) { result.add(Range.closed(start, i - 1)); start = -1; } } } return result; }
From source file:org.robotframework.ide.eclipse.main.plugin.project.library.ArgumentsDescriptor.java
public Range<Integer> getPossibleNumberOfArguments() { int min = 0;/*from w w w.j ava 2 s .co m*/ boolean isUnbounded = false; for (final Argument argument : arguments) { if (argument.isRequired()) { min++; } isUnbounded |= argument.isVarArg() || argument.isKwArg(); } return isUnbounded ? Range.atLeast(min) : Range.closed(min, arguments.size()); }
From source file:com.nimbits.server.process.BlobStoreImpl.java
@Override public List<Value> getSeries(final ValueService valueService, final Entity entity, final Optional<Range<Date>> timespan, final Optional<Range<Integer>> range, final Optional<String> mask) { //TODO - some way to test if a count has been reached before reading all files if no timespan is give - like test the list by processing it to see if it's complete //enough to return while reading other files. String root = settingsService.getSetting(ServerSetting.storeDirectory); String path = root + "/" + entity.getKey(); List<Value> allvalues = new ArrayList<>(INITIAL_CAPACITY); List<String> allReadFiles = new ArrayList<>(INITIAL_CAPACITY); File file = new File(path); Range<Date> maxRange = timespan.isPresent() ? Range.closed(defragmenter.zeroOutDateToStart(timespan.get().lowerEndpoint()), defragmenter.zeroOutDateToStart(timespan.get().upperEndpoint())) : Range.closed(defragmenter.zeroOutDateToStart(new Date(0)), defragmenter.zeroOutDateToStart(new Date())); // all dates if (file.exists()) { List<String> dailyFolderPaths = new ArrayList<>(); for (String dailyFolderPath : file.list()) { File node = new File(dailyFolderPath); if (!node.getName().endsWith(SNAPSHOT)) { Long timestamp = Long.valueOf(dailyFolderPath); if (maxRange.contains(new Date(timestamp))) { dailyFolderPaths.add(root + "/" + entity.getKey() + "/" + dailyFolderPath); }/* w w w . j a v a 2s. co m*/ } } if (!dailyFolderPaths.isEmpty()) { Collections.sort(dailyFolderPaths); Collections.reverse(dailyFolderPaths); for (String sortedDayPath : dailyFolderPaths) { Iterator result2 = FileUtils.iterateFiles(new File(sortedDayPath), null, false); List<String> filePaths = new ArrayList<>(); while (result2.hasNext()) { File listItem = (File) result2.next(); String filePath = listItem.getName(); if (!filePath.endsWith(SNAPSHOT)) { filePaths.add(sortedDayPath + "/" + filePath); } } Collections.sort(filePaths); Collections.reverse(filePaths); for (String sortedFilePath : filePaths) { List<Value> values = readValuesFromFile(sortedFilePath); allvalues.addAll(values); allReadFiles.add(sortedFilePath); } } } List<Value> filtered = storageIO.filterValues(allvalues, timespan, range, mask); if (allReadFiles.size() > INITIAL_CAPACITY) { //TODO will break if # of days = initial capacity // logger.info("Defragmenting " + allReadFiles.size()); deleteAndRestore(this, valueService, entity, allvalues, allReadFiles); } // logger.info("****** returning " + filtered.size()); return ImmutableList.copyOf(filtered); } else { logger.info("file not found"); return Collections.emptyList(); } }
From source file:net.sf.mzmine.modules.visualization.histogram.HistogramRangeParameter.java
@Override public void loadValueFromXML(Element xmlElement) { String typeAttr = xmlElement.getAttribute("selected"); if (typeAttr.length() == 0) return;/* www .j a v a 2 s. c o m*/ this.selectedType = HistogramDataType.valueOf(typeAttr); NodeList minNodes = xmlElement.getElementsByTagName("min"); if (minNodes.getLength() != 1) return; NodeList maxNodes = xmlElement.getElementsByTagName("max"); if (maxNodes.getLength() != 1) return; String minText = minNodes.item(0).getTextContent(); String maxText = maxNodes.item(0).getTextContent(); double min = Double.valueOf(minText); double max = Double.valueOf(maxText); value = Range.closed(min, max); }
From source file:org.ow2.proactive.scheduler.common.job.factories.spi.model.factory.RangeParserValidator.java
protected Range<T> extractRange(String value, Converter<T> converter) throws ModelSyntaxException { String rangeRegexp = "^([^),]+)$|^([^),]+),([^),]+)$"; try {// w ww. j a v a2 s . co m List<String> modelArguments = parseAndGetRegexGroups(value, rangeRegexp); if (modelArguments.size() == 1) { T minValue = converter.convert(modelArguments.get(0)); return Range.atLeast(minValue); } else if (modelArguments.size() == 2) { T minValue = converter.convert(modelArguments.get(0)); T maxValue = converter.convert(modelArguments.get(1)); return Range.closed(minValue, maxValue); } else { throw new ModelSyntaxException("Internal error, regular expression for " + getType() + " '" + rangeRegexp + "' is invalid."); } } catch (ConversionException | IllegalArgumentException e) { throw new ModelSyntaxException( "Illegal " + getType() + " range expression '" + value + "', " + e.getMessage(), e); } }
From source file:jetbrains.jetpad.grammar.parser.LRParser.java
public Object parse(List<Lexeme> input, Function<Rule, RuleHandler> handlerProvider) { Stack<ParseStackItem> stack = new Stack<>(); stack.push(new ParseStackItem(myTable.getInitialState(), -1, -1, null, null)); int pos = 0;// w w w . ja v a 2 s . co m while (true) { Lexeme lexeme = pos < input.size() ? input.get(pos) : null; Terminal current = lexeme != null ? lexeme.getTerminal() : myTable.getGrammar().getEnd(); LRParserState state = stack.peek().state; LRParserAction<LRParserState> action = state.getAction(current); if (action instanceof LRParserAction.Shift) { LRParserAction.Shift<LRParserState> shift = (LRParserAction.Shift<LRParserState>) action; stack.push(new ParseStackItem(shift.getState(), pos, pos + 1, current, lexeme)); pos++; } else if (action instanceof LRParserAction.Reduce) { LRParserAction.Reduce<LRParserState> reduce = (LRParserAction.Reduce<LRParserState>) action; List<Object> handlerInput = new ArrayList<>(); int startOffset = pos; List<Symbol> symbols = reduce.getRule().getSymbols(); for (int i = 0; i < symbols.size(); i++) { ParseStackItem top = stack.pop(); if (i == symbols.size() - 1) { startOffset = top.start; } handlerInput.add(top.result); } Collections.reverse(handlerInput); LRParserState nextState = stack.peek().state.getNextState(reduce.getRule().getHead()); RuleContext ruleContext = new MyRuleContext(Range.closed(startOffset, pos), handlerInput, input); RuleHandler handler = handlerProvider.apply(reduce.getRule()); Object result = handler != null ? handler.handle(ruleContext) : handlerInput; stack.push(new ParseStackItem(nextState, startOffset, pos, reduce.getRule().getHead(), result)); } else if (action instanceof LRParserAction.Accept) { return stack.peek().result; } else { return null; } } }
From source file:google.registry.model.common.TimeOfYear.java
/** * Returns an {@link Iterable} of {@link DateTime}s of every recurrence of this particular * time of year within a given {@link Range} (usually one spanning many years). * * <p>WARNING: This can return a potentially very large {@link Iterable} if {@code END_OF_TIME} * is used as the upper endpoint of the range. *///from w w w . j a v a 2s .c o m public Iterable<DateTime> getInstancesInRange(Range<DateTime> range) { // In registry world, all dates are within START_OF_TIME and END_OF_TIME, so restrict any // ranges without bounds to our notion of zero-to-infinity. Range<DateTime> normalizedRange = range.intersection(Range.closed(START_OF_TIME, END_OF_TIME)); Range<Integer> yearRange = Range.closed(normalizedRange.lowerEndpoint().getYear(), normalizedRange.upperEndpoint().getYear()); return FluentIterable.from(ContiguousSet.create(yearRange, integers())) .transform(new Function<Integer, DateTime>() { @Override public DateTime apply(Integer year) { return getDateTimeWithYear(year); } }).filter(normalizedRange); }
From source file:dollar.api.types.DollarRange.java
public DollarRange(boolean lowerBounds, boolean upperBounds, boolean closedLeft, boolean closedRight, @Nullable Value lower, @Nullable Value upper) { super();/*from ww w . j ava2 s . c o m*/ Value lowerBound; Value upperBound; if ((lower != null) && (upper != null) && (lower.compareTo(upper) > 0)) { lowerBound = upper; upperBound = lower; reversed = true; } else { lowerBound = lower; upperBound = upper; } if (!lowerBounds && !upperBounds) { range = Range.all(); } else if (!lowerBounds) { if (closedRight) { range = Range.atMost(upperBound); } else { range = Range.lessThan(upperBound); } } else if (!upperBounds) { if (closedLeft) { range = Range.atLeast(lowerBound); } else { range = Range.greaterThan(lowerBound); } } else if (closedLeft) { if (closedRight) { range = Range.closed(lowerBound, upperBound); } else { //openRight range = Range.closedOpen(lowerBound, upperBound); } } else if (!closedLeft) { //openLeft if (closedRight) { range = Range.openClosed(lowerBound, upperBound); } else { //openRight if (lowerBound.equals(upperBound)) { throw new IllegalArgumentException( "Cannot have an open range with lower bounds being the same as upper " + "bounds"); } else { range = Range.open(lowerBound, upperBound); } } } else { throw new IllegalStateException(); } }