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

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

Introduction

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

Prototype

public C lowerEndpoint() 

Source Link

Document

Returns the lower endpoint of this range.

Usage

From source file:it.units.malelab.ege.ge.mapper.HierarchicalMapper.java

public Node<T> mapIteratively(BitsGenotype genotype, int[] bitUsages) throws MappingException {
    Node<EnhancedSymbol<T>> enhancedTree = new Node<>(
            new EnhancedSymbol<>(grammar.getStartingSymbol(), Range.closedOpen(0, genotype.size())));
    while (true) {
        Node<EnhancedSymbol<T>> nodeToBeReplaced = null;
        for (Node<EnhancedSymbol<T>> node : enhancedTree.leafNodes()) {
            if (grammar.getRules().keySet().contains(node.getContent().getSymbol())) {
                nodeToBeReplaced = node;
                break;
            }/*from www.j  av  a 2  s.co  m*/
        }
        if (nodeToBeReplaced == null) {
            break;
        }
        //get genotype
        T symbol = nodeToBeReplaced.getContent().getSymbol();
        Range<Integer> symbolRange = nodeToBeReplaced.getContent().getRange();
        List<List<T>> options = grammar.getRules().get(symbol);
        //get option
        List<T> symbols;
        if ((symbolRange.upperEndpoint() - symbolRange.lowerEndpoint()) < options.size()) {
            int count = (symbolRange.upperEndpoint() - symbolRange.lowerEndpoint() > 0)
                    ? genotype.slice(symbolRange).count()
                    : genotype.count();
            int index = shortestOptionIndexesMap.get(symbol)
                    .get(count % shortestOptionIndexesMap.get(symbol).size());
            symbols = options.get(index);
        } else {
            symbols = chooseOption(genotype, symbolRange, options);
            for (int i = symbolRange.lowerEndpoint(); i < symbolRange.upperEndpoint(); i++) {
                bitUsages[i] = bitUsages[i] + 1;
            }
        }
        //add children
        List<Range<Integer>> childRanges = getChildrenSlices(symbolRange, symbols);
        for (int i = 0; i < symbols.size(); i++) {
            Range<Integer> childRange = childRanges.get(i);
            if (childRanges.get(i).equals(symbolRange)
                    && (childRange.upperEndpoint() - childRange.lowerEndpoint() > 0)) {
                childRange = Range.closedOpen(symbolRange.lowerEndpoint(), symbolRange.upperEndpoint() - 1);
            }
            Node<EnhancedSymbol<T>> newChild = new Node<>(new EnhancedSymbol<>(symbols.get(i), childRange));
            nodeToBeReplaced.getChildren().add(newChild);
        }
    }
    //convert
    return extractFromEnhanced(enhancedTree);
}

From source file:edu.cmu.lti.oaqa.framework.eval.passage.PassageMAPEvalAggregator.java

private float getAvgPsg2MAP(List<Passage> docs, List<Passage> gs) {
    if (gs.size() == 0) {
        return 0;
    }//from   ww w  . j a v  a 2  s  .c  om
    Map<String, RangeSet<Integer>> gsId2Spans = Maps.newHashMap();
    Map<String, RangeSet<Integer>> trackGsId2Spans = Maps.newHashMap();
    for (Passage g : gs) {
        String id = g.getUri();
        if (!gsId2Spans.containsKey(id)) {
            gsId2Spans.put(id, TreeRangeSet.<Integer>create());
            trackGsId2Spans.put(id, TreeRangeSet.<Integer>create());
        }
        gsId2Spans.get(g.getUri()).add(Range.closedOpen(g.getBegin(), g.getEnd()));
        trackGsId2Spans.get(g.getUri()).add(Range.closedOpen(g.getBegin(), g.getEnd()));
    }
    int totalChars = 0;
    int overlapLength = 0;
    float sumPrecision = 0;
    for (Passage doc : docs) {
        Range<Integer> docRange = Range.closedOpen(doc.getBegin(), doc.getEnd());
        String docId = doc.getUri();
        if (!gsId2Spans.containsKey(docId) || gsId2Spans.get(docId).encloses(docRange)) {
            totalChars += docRange.upperEndpoint() - docRange.lowerEndpoint();
            continue;
        }
        for (int offset = docRange.lowerEndpoint(); offset < docRange.upperEndpoint(); offset++) {
            if (gsId2Spans.containsKey(docId) && gsId2Spans.get(docId).contains(offset)) {
                if (trackGsId2Spans.get(docId).contains(offset)) {
                    trackGsId2Spans.get(docId).remove(Range.singleton(offset));
                    // +1
                    totalChars++;
                    overlapLength++;
                    sumPrecision += (float) overlapLength / (float) totalChars;
                }
            } else {
                // -1
                totalChars++;
            }
        }
    }
    int count = 0;
    for (RangeSet<Integer> spans : gsId2Spans.values()) {
        for (Range<Integer> span : spans.asRanges()) {
            count += span.upperEndpoint() - span.lowerEndpoint();
        }
    }
    return (float) sumPrecision / (float) count;
}

From source file:net.sf.mzmine.datamodel.impl.SimpleScan.java

/**
 * @return Returns scan datapoints within a given range
 *//*w w  w .  j a  va  2s.c  o  m*/
public @Nonnull DataPoint[] getDataPointsByMass(@Nonnull Range<Double> mzRange) {

    int startIndex, endIndex;
    for (startIndex = 0; startIndex < dataPoints.length; startIndex++) {
        if (dataPoints[startIndex].getMZ() >= mzRange.lowerEndpoint())
            break;
    }

    for (endIndex = startIndex; endIndex < dataPoints.length; endIndex++) {
        if (dataPoints[endIndex].getMZ() > mzRange.upperEndpoint())
            break;
    }

    DataPoint pointsWithinRange[] = new DataPoint[endIndex - startIndex];

    // Copy the relevant points
    System.arraycopy(dataPoints, startIndex, pointsWithinRange, 0, endIndex - startIndex);

    return pointsWithinRange;
}

From source file:com.google.android.apps.forscience.whistlepunk.sensordb.SensorDatabaseImpl.java

/**
 * Gets the selection string and selectionArgs based on the tag, range and resolution tier.
 *
 * @return a pair where the first element is the selection string and the second element is the
 * array of selectionArgs.//  w w  w  .  j  a  va  2s . co m
 */
private Pair<String, String[]> getSelectionAndArgs(String sensorTag, TimeRange range, int resolutionTier) {
    List<String> clauses = new ArrayList<>();
    List<String> values = new ArrayList<>();

    clauses.add(ScalarSensorsTable.Column.TAG + " = ?");
    values.add(sensorTag);

    if (resolutionTier >= 0) {
        clauses.add(ScalarSensorsTable.Column.RESOLUTION_TIER + " = ?");
        values.add(String.valueOf(resolutionTier));
    }

    Range<Long> times = range.getTimes();
    Range<Long> canonicalTimes = times.canonical(DiscreteDomain.longs());
    if (canonicalTimes.hasLowerBound()) {
        String comparator = (canonicalTimes.lowerBoundType() == BoundType.CLOSED) ? " >= ?" : " > ?";
        clauses.add(ScalarSensorsTable.Column.TIMESTAMP_MILLIS + comparator);
        values.add(String.valueOf(canonicalTimes.lowerEndpoint()));
    }
    if (canonicalTimes.hasUpperBound()) {
        String comparator = (canonicalTimes.upperBoundType() == BoundType.CLOSED) ? " =< ?" : " < ?";
        clauses.add(ScalarSensorsTable.Column.TIMESTAMP_MILLIS + comparator);
        values.add(String.valueOf(canonicalTimes.upperEndpoint()));
    }

    return new Pair<>(Joiner.on(" AND ").join(clauses), values.toArray(new String[values.size()]));
}

From source file:net.sf.mzmine.modules.peaklistmethods.identification.onlinedbsearch.databases.PubChemGateway.java

/**
 * Searches for CIDs of PubChem compounds based on their exact
 * (monoisotopic) mass. Returns maximum numOfResults results sorted by the
 * CID. If chargedOnly parameter is set, returns only molecules with
 * non-zero charge.//  w w  w  .  j a  v  a2 s  .  com
 */
public String[] findCompounds(double mass, MZTolerance mzTolerance, int numOfResults, ParameterSet parameters)
        throws IOException {

    Range<Double> toleranceRange = mzTolerance.getToleranceRange(mass);

    StringBuilder pubchemUrl = new StringBuilder();

    pubchemUrl.append(
            "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?usehistory=n&db=pccompound&sort=cida&retmax=");
    pubchemUrl.append(numOfResults);
    pubchemUrl.append("&term=");
    pubchemUrl.append(toleranceRange.lowerEndpoint());
    pubchemUrl.append(":");
    pubchemUrl.append(toleranceRange.upperEndpoint());
    pubchemUrl.append("[MonoisotopicMass]");

    NodeList cidElements;

    try {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dbf.newDocumentBuilder();
        Document parsedResult = builder.parse(pubchemUrl.toString());

        XPathFactory factory = XPathFactory.newInstance();
        XPath xpath = factory.newXPath();
        XPathExpression expr = xpath.compile("//eSearchResult/IdList/Id");
        cidElements = (NodeList) expr.evaluate(parsedResult, XPathConstants.NODESET);

    } catch (Exception e) {
        throw (new IOException(e));
    }

    String cidArray[] = new String[cidElements.getLength()];
    for (int i = 0; i < cidElements.getLength(); i++) {
        Element cidElement = (Element) cidElements.item(i);
        cidArray[i] = cidElement.getTextContent();
    }

    return cidArray;

}

From source file:com.cubeia.games.poker.handler.ActionTransformer.java

public RequestAction transform(ActionRequest request, int sequenceNumber) {
    RequestAction packet = new RequestAction();
    packet.timeToAct = (int) request.getTimeToAct();
    packet.player = request.getPlayerId();
    packet.seq = sequenceNumber;//from  w w w.j a  v a2  s  . c o m
    packet.currentPotSize = request.getTotalPotSize().toPlainString();

    List<PlayerAction> allowed = new LinkedList<PlayerAction>();
    for (PossibleAction option : request.getOptions()) {
        if (option instanceof DiscardRequest) {
            DiscardRequest discardRequest = (DiscardRequest) option;
            PlayerAction playerOption = createPlayerAction(PokerActionType.DISCARD);
            Range<Integer> cardsToDiscard = discardRequest.getCardsToDiscard();
            // TODO: Consider if this is an ugly hack or if it's OK. (Using minAmount and maxAmount to describe the range of number of cards to discard)
            playerOption.minAmount = cardsToDiscard.lowerEndpoint().toString();
            playerOption.maxAmount = cardsToDiscard.upperEndpoint().toString();
            allowed.add(playerOption);
        } else {
            PlayerAction playerOption = createPlayerAction(option.getActionType());
            // FIXME: Casting to integer here since Flash does not support long values!
            playerOption.minAmount = option.getMinAmount().toPlainString();
            playerOption.maxAmount = option.getMaxAmount().toPlainString();
            allowed.add(playerOption);
        }
    }
    packet.allowedActions = allowed;

    return packet;
}

From source file:org.sonatype.nexus.repository.http.PartialFetchHandler.java

/**
 * Mutate the response into one that returns part of the payload.
 *///from   ww  w.  ja v a  2s  . c om
private Response partialResponse(final Response response, final Payload payload,
        final Range<Long> requestedRange) {
    Response.Builder builder = new Response.Builder().copy(response)
            .status(Status.success(HttpStatus.PARTIAL_CONTENT));

    Payload partialPayload = new PartialPayload(payload, requestedRange);
    builder.payload(partialPayload);

    // ResponseSender takes care of Content-Length header, via payload.size
    builder.header(HttpHeaders.CONTENT_RANGE,
            requestedRange.lowerEndpoint() + "-" + requestedRange.upperEndpoint() + "/" + payload.getSize());

    return builder.build();
}

From source file:com.wealdtech.jackson.modules.DateTimeRangeSerializer.java

@Override
public void serialize(final Range<DateTime> value, final JsonGenerator gen, final SerializerProvider provider)
        throws IOException {
    if (value != null) {
        final StringBuilder sb = new StringBuilder(64);
        if (value.hasLowerBound()) {
            if (value.lowerBoundType().equals(BoundType.CLOSED)) {
                sb.append('[');
            } else {
                sb.append('(');
            }//from w w w.j  a  va 2  s.c om
            sb.append(formatter.print(value.lowerEndpoint()));
        } else {
            sb.append('(');
            sb.append(NEGATIVE_INFINITY);
        }
        sb.append(',');

        if (value.hasUpperBound()) {
            sb.append(formatter.print(value.upperEndpoint()));
            if (value.upperBoundType().equals(BoundType.CLOSED)) {
                sb.append(']');
            } else {
                sb.append(')');
            }
        } else {
            sb.append(POSITIVE_INFINITY);
            sb.append(')');
        }

        gen.writeString(sb.toString());
    }
}

From source file:com.wealdtech.utils.RangeFormatter.java

/**
 * Format the date and time of a date/time range.
 *
 * @param range the range to format/*w  ww.j  a va2 s.c  o  m*/
 * @return a formatted range, or {@code null} if the input is {@code null}
 */
@Nullable
public String formatDateTime(@Nullable final Range<DateTime> range) {
    if (range == null) {
        return null;
    }
    final DateTime curDateTime = DateTime.now();
    final StringBuilder sb = new StringBuilder(96);

    final DateTime lower = range.lowerEndpoint();
    final DateTime upper = range.upperEndpoint();
    if (upper.isBefore(lower)) {
        throw new DataError.Bad("Upper part of range must be after lower part of range");
    }
    // Lower date
    final Details lowerDetails = new Details();
    lowerDetails.showTime = true;
    if (!isSameDay(lower, curDateTime)) {
        lowerDetails.showDayOfWeek = true;
        lowerDetails.showDayOfMonth = true;
        lowerDetails.showMonthOfYear = true;
    }
    if ((!isSameYear(lower, upper)) || (!isSameYear(lower, curDateTime))) {
        lowerDetails.showYear = true;
    }
    sb.append(doFormat(lower, lowerDetails));

    if (!isSameMinute(lower, upper)) {
        sb.append(" - ");

        final Details upperDetails = new Details();
        upperDetails.showTime = true;
        if (!isSameDay(lower, upper)) {
            upperDetails.showDayOfWeek = true;
            upperDetails.showDayOfMonth = true;
            upperDetails.showMonthOfYear = true;
            if ((!isSameYear(lower, upper)) || (!isSameYear(upper, curDateTime))) {
                upperDetails.showYear = true;
            }
        }

        sb.append(doFormat(upper, upperDetails));
    }
    return sb.toString();
}

From source file:it.units.malelab.ege.ge.mapper.HierarchicalMapper.java

public Node<T> mapRecursively(T symbol, Range<Integer> range, BitsGenotype genotype, int[] bitUsages)
        throws MappingException {
    Node<T> node = new Node<>(symbol);
    if (grammar.getRules().keySet().contains(symbol)) {
        //a non-terminal node
        //update usage
        for (int i = range.lowerEndpoint(); i < range.upperEndpoint(); i++) {
            bitUsages[i] = bitUsages[i] + 1;
        }/*from  w w  w .  j  a va  2  s.  c  o m*/
        List<List<T>> options = grammar.getRules().get(symbol);
        //get option
        List<T> symbols;
        if ((range.upperEndpoint() - range.lowerEndpoint()) < options.size()) {
            int count = (range.upperEndpoint() - range.lowerEndpoint() > 0) ? genotype.slice(range).count()
                    : genotype.count();
            int index = shortestOptionIndexesMap.get(symbol)
                    .get(count % shortestOptionIndexesMap.get(symbol).size());
            symbols = options.get(index);
        } else {
            symbols = chooseOption(genotype, range, options);
            for (int i = range.lowerEndpoint(); i < range.upperEndpoint(); i++) {
                bitUsages[i] = bitUsages[i] + 1;
            }
        }
        //add children
        List<Range<Integer>> childRanges = getChildrenSlices(range, symbols);
        for (int i = 0; i < symbols.size(); i++) {
            Range<Integer> childRange = childRanges.get(i);
            if (childRanges.get(i).equals(range)
                    && (childRange.upperEndpoint() - childRange.lowerEndpoint() > 0)) {
                childRange = Range.closedOpen(range.lowerEndpoint(), range.upperEndpoint() - 1);
                childRanges.set(i, childRange);
            }
        }
        for (int i = 0; i < symbols.size(); i++) {
            node.getChildren().add(mapRecursively(symbols.get(i), childRanges.get(i), genotype, bitUsages));
        }
    }
    return node;
}