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

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

Introduction

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

Prototype

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

Source Link

Document

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

Usage

From source file:algorithm.Selection.java

/**
 * Initialize the selection iterator with the fitness distribution of the 
 * chromosomes which is used to generate the selection range of chromosomes
 * for the roulette wheel selection method.
 * /*w  ww . ja v a  2 s  .com*/
 * Each range is defined as the left closed and right open, e.g. [0, 3)
 * 
 * @param fitness The fitness distribution for the chromosomes to be used
 * for generating the selection ranges.
 */
public void init(HashMap<Chromosome, Double> fitness) {
    /* Lower closed  bound and upper open bound for each interval */
    Double lower = leftBound;
    Double upper = leftBound + EPSILON;

    /* Calculate right bound for the roulette wheel, include the epsilon offset */
    for (Double value : fitness.values()) {
        rightBound += value + EPSILON;
    }

    /* Add each chromosome and interval to roulette wheel selection */
    for (Chromosome chromosome : fitness.keySet()) {
        upper = lower + fitness.get(chromosome);
        selection.put(chromosome, Range.closedOpen(lower, upper));

        /* Increase the lower closed bound to previous right bound + EPSILON */
        lower = upper + EPSILON;
    }
}

From source file:org.openehealth.ipf.commons.ihe.fhir.LazyBundleProvider.java

@Override
public List<IBaseResource> getResources(int fromIndex, int toIndex) {
    if (!cacheResults) {
        return getPartialResult(fromIndex, toIndex);
    }/*  w  ww . j  a  v a  2s. c  o m*/
    LOG.debug("Cached results contain the following ranges: {}. Requesting resources from index {} to {}",
            resultRanges, fromIndex, toIndex);
    Range<Integer> wanted = Range.closedOpen(fromIndex, toIndex);
    RangeSet<Integer> needed = resultRanges.required(wanted);
    LOG.debug("Requiring the following ranges {}", needed);
    for (Range<Integer> requiredRange : needed.asDescendingSetOfRanges()) {
        LOG.debug("Now requesting the following range {}", requiredRange);
        List<IBaseResource> results = getPartialResult(requiredRange.lowerEndpoint(),
                requiredRange.upperEndpoint());
        LOG.debug("Got back a list of size {}", results.size());
        if (!results.isEmpty()) {
            cacheAll(requiredRange.lowerEndpoint(), results);
            // Take care, potentially less elements than requested have been retrieved
            resultRanges.add(Range.closedOpen(requiredRange.lowerEndpoint(),
                    requiredRange.lowerEndpoint() + results.size()));
        }
    }
    LOG.debug("Cached results now contain the following ranges: {}", resultRanges);

    // Everything went OK, return whatever we got
    return cachedResults.subList(fromIndex,
            Math.min(cachedResults.size(), Math.min(cachedResults.size(), toIndex)));
}

From source file:sklearn.preprocessing.OneHotEncoder.java

public List<? extends Number> getValues() {
    List<Integer> featureSizes = getFeatureSizes();

    if (featureSizes.size() != 1) {
        throw new IllegalArgumentException();
    }//from  w w w  .  j av a  2s .c o m

    Object numberOfValues = get("n_values");

    if (("auto").equals(numberOfValues)) {
        return getActiveFeatures();
    }

    Integer featureSize = featureSizes.get(0);

    List<Integer> result = new ArrayList<>();
    result.addAll(ContiguousSet.create(Range.closedOpen(0, featureSize), DiscreteDomain.integers()));

    return result;
}

From source file:org.apache.kylin.common.util.RangeUtil.java

/**
 * remove from self the elements that exist in other
 * @return// ww  w  . j  a  va 2 s  .com
 */
public static <C extends Comparable<?>> List<Range<C>> remove(Range<C> self, Range<C> other) {

    // mimic the following logic in guava 18:
    //        RangeSet<C> rangeSet = TreeRangeSet.create();
    //        rangeSet.add(self);
    //        rangeSet.remove(other);
    //        return Lists.newArrayList(rangeSet.asRanges());

    if (other == null || !self.isConnected(other)) {
        return Collections.singletonList(self);
    }

    Range<C> share = self.intersection(other);
    if (share.isEmpty()) {
        return Collections.singletonList(self);
    }

    List<Range<C>> ret = Lists.newArrayList();

    //see left part
    if (!self.hasLowerBound()) {
        if (share.hasLowerBound()) {
            if (share.lowerBoundType() == BoundType.CLOSED) {
                ret.add(Range.lessThan(share.lowerEndpoint()));
            } else {
                ret.add(Range.atMost(share.lowerEndpoint()));
            }
        }
    } else {
        if (self.lowerEndpoint() != share.lowerEndpoint()) {
            if (self.lowerBoundType() == BoundType.CLOSED) {
                if (share.lowerBoundType() == BoundType.CLOSED) {
                    ret.add(Range.closedOpen(self.lowerEndpoint(), share.lowerEndpoint()));
                } else {
                    ret.add(Range.closed(self.lowerEndpoint(), share.lowerEndpoint()));
                }
            } else {
                if (share.lowerBoundType() == BoundType.CLOSED) {
                    ret.add(Range.open(self.lowerEndpoint(), share.lowerEndpoint()));
                } else {
                    ret.add(Range.openClosed(self.lowerEndpoint(), share.lowerEndpoint()));
                }
            }
        } else {
            if (self.lowerBoundType() == BoundType.CLOSED && share.lowerBoundType() == BoundType.OPEN) {
                ret.add(Range.closed(self.lowerEndpoint(), share.lowerEndpoint()));
            }
        }
    }

    //see right part 
    if (!self.hasUpperBound()) {
        if (share.hasUpperBound()) {
            if (share.upperBoundType() == BoundType.CLOSED) {
                ret.add(Range.greaterThan(share.upperEndpoint()));
            } else {
                ret.add(Range.atLeast(share.upperEndpoint()));
            }
        }
    } else {
        if (self.upperEndpoint() != share.upperEndpoint()) {
            if (self.upperBoundType() == BoundType.CLOSED) {
                if (share.upperBoundType() == BoundType.CLOSED) {
                    ret.add(Range.openClosed(share.upperEndpoint(), self.upperEndpoint()));
                } else {
                    ret.add(Range.closed(share.upperEndpoint(), self.upperEndpoint()));
                }
            } else {
                if (share.upperBoundType() == BoundType.CLOSED) {
                    ret.add(Range.open(share.upperEndpoint(), self.upperEndpoint()));
                } else {
                    ret.add(Range.closedOpen(share.upperEndpoint(), self.upperEndpoint()));
                }
            }
        } else {
            if (self.upperBoundType() == BoundType.CLOSED && share.upperBoundType() == BoundType.OPEN) {
                ret.add(Range.closed(self.upperEndpoint(), share.upperEndpoint()));
            }
        }
    }

    return ret;

}

From source file:zipkin2.storage.cassandra.v1.CassandraSpanStore.java

CassandraSpanStore(CassandraStorage storage) {
    Session session = storage.session();
    Schema.Metadata metadata = storage.metadata();
    maxTraceCols = storage.maxTraceCols;
    indexFetchMultiplier = storage.indexFetchMultiplier;
    strictTraceId = storage.strictTraceId;
    searchEnabled = storage.searchEnabled;
    timestampCodec = new TimestampCodec(metadata.protocolVersion);
    buckets = ContiguousSet.create(Range.closedOpen(0, storage.bucketCount), integers());

    spans = new SelectFromTraces.Factory(session, strictTraceId, maxTraceCols);
    dependencies = new SelectDependencies.Factory(session);

    if (!searchEnabled) {
        serviceNames = null;//from   w ww  .j a  v a 2s  .  c o m
        remoteServiceNames = null;
        spanNames = null;
        selectTraceIdsByServiceName = null;
        selectTraceIdsByServiceNames = null;
        selectTraceIdsByRemoteServiceName = null;
        selectTraceIdsBySpanName = null;
        selectTraceIdsByAnnotation = null;
        return;
    }

    if (metadata.hasRemoteService) {
        selectTraceIdsByRemoteServiceName = new SelectTraceIdTimestampFromServiceRemoteServiceName.Factory(
                session, timestampCodec);
        remoteServiceNames = new SelectRemoteServiceNames.Factory(session);
    } else {
        selectTraceIdsByRemoteServiceName = null;
        remoteServiceNames = null;
    }
    spanNames = new SelectSpanNames.Factory(session);
    serviceNames = new SelectServiceNames.Factory(session).create();

    selectTraceIdsByServiceName = new SelectTraceIdTimestampFromServiceName.Factory(session, timestampCodec,
            buckets);

    if (metadata.protocolVersion.compareTo(ProtocolVersion.V4) < 0) {
        LOG.warn("Please update Cassandra to 2.2 or later, as some features may fail");
        // Log vs failing on "Partition KEY part service_name cannot be restricted by IN relation"
        selectTraceIdsByServiceNames = null;
    } else {
        selectTraceIdsByServiceNames = new SelectTraceIdTimestampFromServiceNames.Factory(session,
                timestampCodec, buckets);
    }

    selectTraceIdsBySpanName = new SelectTraceIdTimestampFromServiceSpanName.Factory(session, timestampCodec);

    selectTraceIdsByAnnotation = new SelectTraceIdTimestampFromAnnotations.Factory(session, timestampCodec,
            buckets);
}

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();//  w  w w  . j  a va  2s  .  com
    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();
    }
}

From source file:com.google.cloud.genomics.dataflow.utils.AnnotationUtils.java

/**
 * Determines the effect of the given allele at the given position within a
 * transcript. Currently, this routine is relatively primitive: it only works
 * with SNPs and only computes effects on coding regions of the transcript.
 * This utility currently does not handle any splice sites well, including
 * splice site disruption and codons which span two exons.
 *
 * @param variantStart 0-based absolute start for the variant.
 * @param allele Bases to substitute at {@code variantStart}.
 * @param transcript The affected transcript.
 * @param transcriptBases The reference bases which span the provided
 *     {@code transcript}. Must match the exact length of the
 *     {@code transcript.position}.//from  www. j a  v a 2s . co m
 * @return The effect of this variant on the given transcript, or null if
 *     unknown.
 */
public static VariantEffect determineVariantTranscriptEffect(long variantStart, String allele,
        Annotation transcript, String transcriptBases) {
    long txLen = transcript.getEnd() - transcript.getStart();
    Preconditions.checkArgument(transcriptBases.length() == txLen,
            "transcriptBases must have equal length to the transcript; got " + transcriptBases.length()
                    + " and " + txLen + ", respectively");
    if (allele.length() != 1) {
        LOG.fine("determineVariantTranscriptEffects() only supports SNPs, ignoring " + allele);
        return null;
    }
    if (transcript.getTranscript().getCodingSequence() == null) {
        LOG.fine("determineVariantTranscriptEffects() only supports intersection with coding "
                + "transcript, ignoring ");
        return null;
    }

    long variantEnd = variantStart + 1;
    Range<Long> variantRange = Range.closedOpen(variantStart, variantEnd);
    Range<Long> codingRange = Range.closedOpen(transcript.getTranscript().getCodingSequence().getStart(),
            transcript.getTranscript().getCodingSequence().getEnd());
    if (Boolean.TRUE.equals(transcript.getReverseStrand())) {
        allele = SequenceUtil.reverseComplement(allele);
    }
    for (Exon exon : transcript.getTranscript().getExons()) {
        // For now, only compute effects on variants within the coding region of an exon.
        Range<Long> exonRange = Range.closedOpen(exon.getStart(), exon.getEnd());
        if (exonRange.isConnected(codingRange) && exonRange.intersection(codingRange).isConnected(variantRange)
                && !exonRange.intersection(codingRange).intersection(variantRange).isEmpty()) {
            // Get the bases which correspond to this exon.
            int txOffset = transcript.getStart().intValue();
            String exonBases = transcriptBases.substring(exon.getStart().intValue() - txOffset,
                    exon.getEnd().intValue() - txOffset);
            int variantExonOffset = (int) (variantStart - exon.getStart());

            if (Boolean.TRUE.equals(transcript.getReverseStrand())) {
                // Normalize the offset and bases to 5' -> 3'.
                exonBases = SequenceUtil.reverseComplement(exonBases);
                variantExonOffset = (int) (exon.getEnd() - variantEnd);
            }

            // Determine the indices for the codon which contains this variant.
            if (exon.getFrame() == null) {
                LOG.fine("exon lacks frame data, cannot determine effect");
                return null;
            }
            int offsetWithinCodon = (variantExonOffset + exon.getFrame()) % 3;
            int codonExonOffset = variantExonOffset - offsetWithinCodon;
            if (codonExonOffset < 0 || exonBases.length() <= codonExonOffset + 3) {
                LOG.fine("variant codon spans multiple exons, this case is not yet handled");
                return null;
            }
            String fromCodon = exonBases.substring(codonExonOffset, codonExonOffset + 3);
            String toCodon = fromCodon.substring(0, offsetWithinCodon) + allele
                    + fromCodon.substring(offsetWithinCodon + 1);
            return codonChangeToEffect(fromCodon, toCodon);
        }
    }
    return null;
}

From source file:org.jpmml.evaluator.DiscretizationUtil.java

static public Range<Double> toRange(Interval interval) {
    Double leftMargin = interval.getLeftMargin();
    Double rightMargin = interval.getRightMargin();

    // "The attributes leftMargin and rightMargin are optional but at least one value must be defined"
    if (leftMargin == null && rightMargin == null) {
        throw new InvalidFeatureException(interval);
    } // End if/*  www  . jav a2s  . co m*/

    if (leftMargin != null && rightMargin != null && (leftMargin).compareTo(rightMargin) > 0) {
        throw new InvalidFeatureException(interval);
    }

    Interval.Closure closure = interval.getClosure();
    switch (closure) {
    case OPEN_OPEN: {
        if (leftMargin == null) {
            return Range.lessThan(rightMargin);
        } else

        if (rightMargin == null) {
            return Range.greaterThan(leftMargin);
        }

        return Range.open(leftMargin, rightMargin);
    }
    case OPEN_CLOSED: {
        if (leftMargin == null) {
            return Range.atMost(rightMargin);
        } else

        if (rightMargin == null) {
            return Range.greaterThan(leftMargin);
        }

        return Range.openClosed(leftMargin, rightMargin);
    }
    case CLOSED_OPEN: {
        if (leftMargin == null) {
            return Range.lessThan(rightMargin);
        } else

        if (rightMargin == null) {
            return Range.atLeast(leftMargin);
        }

        return Range.closedOpen(leftMargin, rightMargin);
    }
    case CLOSED_CLOSED: {
        if (leftMargin == null) {
            return Range.atMost(rightMargin);
        } else

        if (rightMargin == null) {
            return Range.atLeast(leftMargin);
        }

        return Range.closed(leftMargin, rightMargin);
    }
    default:
        throw new UnsupportedFeatureException(interval, closure);
    }
}

From source file:it.units.malelab.ege.ge.genotype.BitsGenotype.java

public BitsGenotype compress(int newLength) {
    BitsGenotype compressed = new BitsGenotype(newLength);
    List<BitsGenotype> slices = slices(Utils.slices(Range.closedOpen(0, length), newLength));
    for (int i = 0; i < slices.size(); i++) {
        compressed.bitSet.set(i, slices.get(i).count() > slices.get(i).size() / 2);
    }/*from w  w w .  j a  v  a 2 s.  c o  m*/
    return compressed;
}

From source file:com.tinspx.util.base.NumberUtils.java

/**
 * {@code from} is inclusive, {@code to} is exclusive
 *///from   w w w  .ja v a 2  s  . c  o m
public static ContiguousSet<Integer> asSet(int from, int to) {
    return asSet(Range.closedOpen(from, to));
}