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

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

Introduction

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

Prototype

public static <C extends Comparable<?>> Range<C> singleton(C value) 

Source Link

Document

Returns a range that Range#contains(Comparable) contains only the given value.

Usage

From source file:net.sf.mzmine.modules.peaklistmethods.gapfilling.peakfinder.Gap.java

public void noMoreOffers() {

    // Check peak that was last constructed
    if (currentPeakDataPoints != null) {
        checkCurrentPeak();/*w w  w.jav  a  2 s .  co  m*/
        currentPeakDataPoints = null;
    }

    // If we have best peak candidate, construct a SimpleChromatographicPeak
    if (bestPeakDataPoints != null) {

        double area = 0, height = 0, mz = 0, rt = 0;
        int scanNumbers[] = new int[bestPeakDataPoints.size()];
        DataPoint finalDataPoint[] = new DataPoint[bestPeakDataPoints.size()];
        Range<Double> finalRTRange = null, finalMZRange = null, finalIntensityRange = null;
        int representativeScan = 0;

        // Process all datapoints
        for (int i = 0; i < bestPeakDataPoints.size(); i++) {

            GapDataPoint dp = bestPeakDataPoints.get(i);

            if (i == 0) {
                finalRTRange = Range.singleton(dp.getRT());
                finalMZRange = Range.singleton(dp.getMZ());
                finalIntensityRange = Range.singleton(dp.getIntensity());
            } else {
                assert finalRTRange != null && finalMZRange != null && finalIntensityRange != null;
                finalRTRange = finalRTRange.span(Range.singleton(dp.getRT()));
                finalMZRange = finalMZRange.span(Range.singleton(dp.getMZ()));
                finalIntensityRange = finalIntensityRange.span(Range.singleton(dp.getIntensity()));
            }

            scanNumbers[i] = bestPeakDataPoints.get(i).getScanNumber();
            finalDataPoint[i] = new SimpleDataPoint(dp.getMZ(), dp.getIntensity());
            mz += bestPeakDataPoints.get(i).getMZ();

            // Check height
            if (bestPeakDataPoints.get(i).getIntensity() > height) {
                height = bestPeakDataPoints.get(i).getIntensity();
                rt = bestPeakDataPoints.get(i).getRT();
                representativeScan = bestPeakDataPoints.get(i).getScanNumber();
            }

            // Skip last data point
            if (i == bestPeakDataPoints.size() - 1)
                break;

            // X axis interval length
            double rtDifference = (bestPeakDataPoints.get(i + 1).getRT() - bestPeakDataPoints.get(i).getRT())
                    * 60d;

            // intensity at the beginning and end of the interval
            double intensityStart = bestPeakDataPoints.get(i).getIntensity();
            double intensityEnd = bestPeakDataPoints.get(i + 1).getIntensity();

            // calculate area of the interval
            area += (rtDifference * (intensityStart + intensityEnd) / 2);

        }

        // Calculate average m/z value
        mz /= bestPeakDataPoints.size();

        // Find the best fragmentation scan, if available
        int fragmentScan = ScanUtils.findBestFragmentScan(rawDataFile, finalRTRange, finalMZRange);

        SimpleFeature newPeak = new SimpleFeature(rawDataFile, mz, rt, height, area, scanNumbers,
                finalDataPoint, FeatureStatus.ESTIMATED, representativeScan, fragmentScan, finalRTRange,
                finalMZRange, finalIntensityRange);

        // Fill the gap
        peakListRow.addPeak(rawDataFile, newPeak);
    }

}

From source file:net.sf.mzmine.modules.rawdatamethods.peakpicking.msms.MsMsPeakPickingTask.java

public void run() {

    setStatus(TaskStatus.PROCESSING);//w  w w. j a v a  2  s .c om

    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:io.github.msdk.featdet.srmdetection.SrmDetectionMethod.java

/** {@inheritDoc} */
@Override//ww w  .j  a  va2s.  c o  m
public List<Chromatogram> execute() throws MSDKException {

    logger.info("Started Srm chromatogram builder on file " + rawDataFile.getName());

    // Chromatograms
    List<Chromatogram> chromatograms = rawDataFile.getChromatograms();
    total += chromatograms.size();

    // Scans
    List<MsScan> scans = rawDataFile.getScans();
    total += scans.size();

    // Check if we have any chomatograms or scans
    if (total == 0) {
        throw new MSDKException("No chromatograms or scans provided for SRM detection method");
    }

    // Iterate over all chromatograms
    for (Chromatogram chromatogram : chromatograms) {
        // Canceled
        if (canceled)
            return null;

        // Ignore non SRM chromatograms
        if (chromatogram.getChromatogramType() != ChromatogramType.MRM_SRM) {
            parsed++;
            continue;
        }

        // Add the SRM chromatogram to the list
        result.add(chromatogram);

        parsed++;
    }

    // Iterate over all scans
    Map<String, BuildingChromatogram> chromatogramMap = new HashMap<String, BuildingChromatogram>();
    Map<Double, Range<Double>> q1IsolationMzRangeMap = new HashMap<Double, Range<Double>>();
    Map<Double, Range<Double>> q3IsolationMzRangeMap = new HashMap<Double, Range<Double>>();
    for (MsScan scan : scans) {
        // Canceled
        if (canceled)
            return null;

        // Ignore non SRM scans
        MsFunction msFunction = scan.getMsFunction();
        if (!msFunction.getName().equals("srm")) {
            parsed++;
            continue;
        }

        // Q1 data
        Double q1 = scan.getIsolations().get(0).getPrecursorMz();

        // Q3 data
        /*
         * TODO: This is a workaround for issue # 123:
         * https://github.com/msdk/msdk/issues/127
         */
        String scanDefinition = scan.getScanDefinition();
        Pattern pattern = Pattern.compile("(?<=\\[)(.*)(?=\\])");
        Matcher matcher = pattern.matcher(scanDefinition);
        Double q3 = 1d;
        Range<Double> q3IsolationMzRange = Range.singleton(q3);
        if (matcher.find()) {
            String str = matcher.group(0);
            String[] mzValues = str.split("-");
            double mz1 = Double.parseDouble(mzValues[0]);
            double mz2 = Double.parseDouble(mzValues[1]);
            q3 = (mz1 + mz2) / 2;
            q3IsolationMzRange = Range.closed(mz1, mz2);
        }

        // Get the chromatogram for the Q1 and Q3 value or generate a new
        BuildingChromatogram buildingChromatogram = chromatogramMap.get(q1 + ";" + q3);
        if (buildingChromatogram == null) {
            buildingChromatogram = new BuildingChromatogram();
            chromatogramMap.put(q1 + ";" + q3, buildingChromatogram);

            // Store the mz isolation range for the q1 and q3 values
            q1IsolationMzRangeMap.put(q1, scan.getIsolations().get(0).getIsolationMzRange());
            q3IsolationMzRangeMap.put(q3, q3IsolationMzRange);
        }

        // Add the new data point
        ChromatographyInfo rt = scan.getChromatographyInfo();
        float intenstiy = scan.getIntensityValues()[0]; // Assume only 1
                                                        // value
        buildingChromatogram.addDataPoint(rt, 0d, intenstiy);

        parsed++;
    }

    // Add the newly generated chromatograms to the result list
    int chromatogramNumber = 1;
    Iterator<Map.Entry<String, BuildingChromatogram>> iterator = chromatogramMap.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, BuildingChromatogram> entry = iterator.next();
        String q1q3 = entry.getKey();
        BuildingChromatogram buildingChromatogram = entry.getValue();

        // Create the final chromatogram
        Chromatogram chromatogram = MSDKObjectBuilder.getChromatogram(dataStore, chromatogramNumber,
                ChromatogramType.MRM_SRM, SeparationType.UNKNOWN);

        // Add the data points to the final chromatogram
        ChromatographyInfo[] rtValues = buildingChromatogram.getRtValues();
        double[] mzValues = buildingChromatogram.getMzValues();
        float[] intensityValues = buildingChromatogram.getIntensityValues();
        int size = buildingChromatogram.getSize();
        chromatogram.setDataPoints(rtValues, mzValues, intensityValues, size);

        // Set the Q1 and Q3 values to the isolations for the chromatogram
        String[] strs = q1q3.split(";");
        double q1 = Double.parseDouble(strs[0]);
        double q3 = Double.parseDouble(strs[1]);
        List<IsolationInfo> isolations = chromatogram.getIsolations();
        IsolationInfo isolationInfo = MSDKObjectBuilder.getIsolationInfo(q1IsolationMzRangeMap.get(q1), null,
                q1, null, null);
        isolations.add(isolationInfo);
        isolationInfo = MSDKObjectBuilder.getIsolationInfo(q3IsolationMzRangeMap.get(q3), null, q3, null, null);
        isolations.add(isolationInfo);

        // Add the chromatogram
        result.add(chromatogram);

        chromatogramNumber++;

        iterator.remove();
    }

    return result;
}

From source file:net.sf.mzmine.modules.rawdatamethods.peakpicking.targetedpeakdetection.Gap.java

public void noMoreOffers() {

    // Check peak that was last constructed
    if (currentPeakDataPoints != null) {
        checkCurrentPeak();//  w w  w  .  j a va  2 s . co  m
        currentPeakDataPoints = null;
    }

    // If we have best peak candidate, construct a SimpleChromatographicPeak
    if (bestPeakDataPoints != null) {

        double area = 0, height = 0, mz = 0, rt = 0;
        int scanNumbers[] = new int[bestPeakDataPoints.size()];
        DataPoint finalDataPoint[] = new DataPoint[bestPeakDataPoints.size()];
        Range<Double> finalRTRange = null, finalMZRange = null, finalIntensityRange = null;
        int representativeScan = 0;

        // Process all datapoints
        for (int i = 0; i < bestPeakDataPoints.size(); i++) {

            GapDataPoint dp = bestPeakDataPoints.get(i);

            if (i == 0) {
                finalRTRange = Range.singleton(dp.getRT());
                finalMZRange = Range.singleton(dp.getMZ());
                finalIntensityRange = Range.singleton(dp.getIntensity());
            } else {
                assert finalRTRange != null && finalMZRange != null && finalIntensityRange != null;
                finalRTRange = finalRTRange.span(Range.singleton(dp.getRT()));
                finalMZRange = finalMZRange.span(Range.singleton(dp.getMZ()));
                finalIntensityRange = finalIntensityRange.span(Range.singleton(dp.getIntensity()));
            }

            scanNumbers[i] = bestPeakDataPoints.get(i).getScanNumber();
            finalDataPoint[i] = new SimpleDataPoint(dp.getMZ(), dp.getIntensity());
            mz += bestPeakDataPoints.get(i).getMZ();

            // Check height
            if (bestPeakDataPoints.get(i).getIntensity() > height) {
                height = bestPeakDataPoints.get(i).getIntensity();
                rt = bestPeakDataPoints.get(i).getRT();
                representativeScan = bestPeakDataPoints.get(i).getScanNumber();
            }

            // Skip last data point
            if (i == bestPeakDataPoints.size() - 1) {
                break;
            }

            // X axis interval length
            double rtDifference = bestPeakDataPoints.get(i + 1).getRT() - bestPeakDataPoints.get(i).getRT();

            // Convert the RT scale to seconds
            rtDifference *= 60d;

            // intensity at the beginning and end of the interval
            double intensityStart = bestPeakDataPoints.get(i).getIntensity();
            double intensityEnd = bestPeakDataPoints.get(i + 1).getIntensity();

            // calculate area of the interval
            area += (rtDifference * (intensityStart + intensityEnd) / 2);

        }

        // Calculate average m/z value
        mz /= bestPeakDataPoints.size();

        // Find the best fragmentation scan, if available
        int fragmentScan = ScanUtils.findBestFragmentScan(rawDataFile, finalRTRange, finalMZRange);

        // Is intensity above the noise level?
        if (height >= noiseLevel) {
            SimpleFeature newPeak = new SimpleFeature(rawDataFile, mz, rt, height, area, scanNumbers,
                    finalDataPoint, FeatureStatus.ESTIMATED, representativeScan, fragmentScan, finalRTRange,
                    finalMZRange, finalIntensityRange);

            // Fill the gap
            peakListRow.addPeak(rawDataFile, newPeak);
        }
    }

}

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

/**
 * @param mzValues//from  w ww  .j a va 2s. c om
 *            m/z values to set
 * @param intensityValues
 *            Intensity values to set
 */
public void setDataPoints(DataPoint[] dataPoints) {

    this.dataPoints = dataPoints;
    mzRange = Range.singleton(0.0);
    basePeak = null;
    totalIonCurrent = 0;

    // find m/z range and base peak
    if (dataPoints.length > 0) {

        basePeak = dataPoints[0];
        mzRange = Range.singleton(dataPoints[0].getMZ());

        for (DataPoint dp : dataPoints) {

            if (dp.getIntensity() > basePeak.getIntensity())
                basePeak = dp;

            mzRange = mzRange.span(Range.singleton(dp.getMZ()));
            totalIonCurrent += dp.getIntensity();

        }

    }

}

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 w w  w . j  a v  a  2 s.c  o  m
    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.modules.peaklistmethods.io.casmiimport.CasmiImportTask.java

public void run() {

    setStatus(TaskStatus.PROCESSING);//  ww  w  . j a v a2 s  . c  o m

    logger.finest("Generating data for CASMI problem " + casmiProblemName);

    try {

        final DataPoint[] msSpectrumDataPoints = convertTextSpectrumToDataPoints(msSpectrum);
        final DataPoint[] msMsSpectrumDataPoints = convertTextSpectrumToDataPoints(msMsSpectrum);

        assert msSpectrumDataPoints.length > 0;
        assert msMsSpectrumDataPoints.length > 0;

        final DataPoint firstDataPoint = msSpectrumDataPoints[0];
        final int msScanNumber = 1;
        final int msMsScanNumber = 2;

        // Generate the raw data file
        RawDataFileWriter dataFileWriter;

        dataFileWriter = MZmineCore.createNewFile(casmiProblemName + " raw data");
        double precursorMz = firstDataPoint.getMZ();
        Scan msScan = new SimpleScan(null, msScanNumber, 1, 1.0, 0, 0, new int[] { 2 }, msSpectrumDataPoints,
                MassSpectrumType.CENTROIDED, polarity, "", null);
        Scan msMsScan = new SimpleScan(null, msMsScanNumber, 2, 1.1, precursorMz, 1, null,
                msMsSpectrumDataPoints, MassSpectrumType.CENTROIDED, polarity, "", null);
        dataFileWriter.addScan(msScan);
        dataFileWriter.addScan(msMsScan);
        newDataFile = dataFileWriter.finishWriting();

        // Add mass lists to scans
        Scan finalMsScan = newDataFile.getScan(msScanNumber);
        final MassList msScanMassList = new SimpleMassList("CASMI", finalMsScan, msSpectrumDataPoints);
        finalMsScan.addMassList(msScanMassList);
        Scan finalMsMsScan = newDataFile.getScan(msMsScanNumber);
        final MassList msMsScanMassList = new SimpleMassList("CASMI", finalMsMsScan, msMsSpectrumDataPoints);
        finalMsMsScan.addMassList(msMsScanMassList);

        // Generate the peak
        double mz = firstDataPoint.getMZ();
        double rt = msScan.getRetentionTime();
        double height = firstDataPoint.getIntensity();
        double area = firstDataPoint.getIntensity();
        int scanNumbers[] = new int[] { 1 };
        DataPoint dataPointsPerScan[] = new DataPoint[] { firstDataPoint };
        Range<Double> mzRange = ScanUtils.findMzRange(msSpectrumDataPoints);
        Range<Double> rtRange = Range.singleton(msScan.getRetentionTime());
        Range<Double> intensityRange = Range.closed(0.0, firstDataPoint.getIntensity());
        Feature newPeak = new SimpleFeature(newDataFile, mz, rt, height, area, scanNumbers, dataPointsPerScan,
                FeatureStatus.MANUAL, msScanNumber, msMsScanNumber, rtRange, mzRange, intensityRange);

        // Generate the isotope pattern
        IsotopePattern isotopePat = new SimpleIsotopePattern(msSpectrumDataPoints,
                IsotopePatternStatus.DETECTED, casmiProblemName + " isotopes");
        newPeak.setIsotopePattern(isotopePat);

        // Generate the peak list row
        PeakListRow newRow = new SimplePeakListRow(1);
        newRow.addPeak(newDataFile, newPeak);

        // Generate the final peak list
        newPeakList = new SimplePeakList(casmiProblemName + " peak list", newDataFile);
        newPeakList.addRow(newRow);

        project.addFile(newDataFile);
        project.addPeakList(newPeakList);

        logger.finest("Finished generating data for CASMI problem " + casmiProblemName);

    } catch (IOException e) {
        e.printStackTrace();
        setStatus(TaskStatus.ERROR);
        setErrorMessage(e.getMessage());
    }

    setStatus(TaskStatus.FINISHED);

}

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

public void addRow(PeakListRow row) {
    List<RawDataFile> myFiles = Arrays.asList(this.getRawDataFiles());
    for (RawDataFile testFile : row.getRawDataFiles()) {
        if (!myFiles.contains(testFile))
            throw (new IllegalArgumentException("Data file " + testFile + " is not in this peak list"));
    }//  w  w  w  . j a va 2 s .c  o  m
    peakListRows.add(row);
    if (row.getDataPointMaxIntensity() > maxDataPointIntensity) {
        maxDataPointIntensity = row.getDataPointMaxIntensity();
    }

    if (mzRange == null) {
        mzRange = Range.singleton(row.getAverageMZ());
        rtRange = Range.singleton(row.getAverageRT());
    } else {
        mzRange = mzRange.span(Range.singleton(row.getAverageMZ()));
        rtRange = rtRange.span(Range.singleton(row.getAverageRT()));
    }
}

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   www  .  ja v  a2 s.  c o 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:org.apache.druid.query.filter.SelectorDimFilter.java

@Override
public RangeSet<String> getDimensionRangeSet(String dimension) {
    if (!Objects.equals(getDimension(), dimension) || getExtractionFn() != null) {
        return null;
    }/*from ww w . j a  v  a2  s .com*/
    RangeSet<String> retSet = TreeRangeSet.create();
    String valueEquivalent = NullHandling.nullToEmptyIfNeeded(value);
    if (valueEquivalent == null) {
        // Case when SQL compatible null handling is enabled
        // Nulls are less than empty String in segments
        retSet.add(Range.lessThan(""));
    } else {
        retSet.add(Range.singleton(valueEquivalent));
    }
    return retSet;
}