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.identification.camera.CameraSearchTask.java

/**
 * Perform CAMERA search./*www .jav  a2  s .  co  m*/
 *
 * @param rawFile
 *            raw data file of peak list to process.
 */
private void cameraSearch(final RawDataFile rawFile) {

    LOG.finest("Detecting peaks.");

    errorMsg = null;
    try {

        String[] reqPackages = { "CAMERA" };
        String[] reqPackagesVersions = { CAMERA_VERSION };
        this.rSession = new RSessionWrapper("Camera search feature", reqPackages, reqPackagesVersions);
        this.rSession.open();

        // Create empty peaks matrix.
        this.rSession.eval(
                "columnHeadings <- c('mz','mzmin','mzmax','rt','rtmin','rtmax','into','intb','maxo','sn')");
        this.rSession.eval("peaks <- matrix(nrow=0, ncol=length(columnHeadings))");
        this.rSession.eval("colnames(peaks) <- columnHeadings");

        // Initialize.
        final Feature[] peaks = peakList.getPeaks(rawFile);
        progress = 0.0;

        // Initialize scan map.
        final Map<Scan, Set<DataPoint>> peakDataPointsByScan = new HashMap<Scan, Set<DataPoint>>(
                rawFile.getNumOfScans(MS_LEVEL));
        int dataPointCount = 0;
        for (final int scanNumber : rawFile.getScanNumbers(MS_LEVEL)) {

            // Create a set to hold data points (sorted by m/z).
            final Set<DataPoint> dataPoints = new TreeSet<DataPoint>(ASCENDING_MASS_SORTER);

            // Add a dummy data point.
            dataPoints.add(new SimpleDataPoint(0.0, 0.0));
            dataPointCount++;

            // Map the set.
            peakDataPointsByScan.put(rawFile.getScan(scanNumber), dataPoints);
        }

        // Add peaks.
        // 80 percents for building peaks list.
        double progressInc = 0.8 / (double) peaks.length;
        for (final Feature peak : peaks) {

            // Get peak data.
            Range<Double> rtRange = null;
            Range<Double> intRange = null;
            final double mz = peak.getMZ();

            // Get the peak's data points per scan.
            for (final int scanNumber : peak.getScanNumbers()) {

                final Scan scan = rawFile.getScan(scanNumber);
                if (scan.getMSLevel() != MS_LEVEL) {

                    throw new IllegalStateException(
                            "CAMERA can only process peak lists from MS-level " + MS_LEVEL);
                }

                // Copy the data point.
                final DataPoint dataPoint = peak.getDataPoint(scanNumber);
                if (dataPoint != null) {

                    final double intensity = dataPoint.getIntensity();
                    peakDataPointsByScan.get(scan).add(new SimpleDataPoint(mz, intensity));
                    dataPointCount++;

                    // Update RT & intensity range.
                    final double rt = scan.getRetentionTime();
                    if (rtRange == null) {
                        rtRange = Range.singleton(rt);
                        intRange = Range.singleton(intensity);
                    } else {
                        rtRange = rtRange.span(Range.singleton(rt));
                        intRange = intRange.span(Range.singleton(intensity));
                    }

                }
            }

            // Set peak values.
            final double area = peak.getArea();
            final double maxo = intRange == null ? peak.getHeight() : intRange.upperEndpoint();
            final double rtMin = (rtRange == null ? peak.getRawDataPointsRTRange() : rtRange).lowerEndpoint();
            final double rtMax = (rtRange == null ? peak.getRawDataPointsRTRange() : rtRange).upperEndpoint();

            // Add peak row.
            this.rSession.eval("peaks <- rbind(peaks, c(" + mz + ", " // mz
                    + mz + ", " // mzmin: use the same as mz.
                    + mz + ", " // mzmax: use the same as mz.
                    + peak.getRT() + ", " // rt
                    + rtMin + ", " // rtmin
                    + rtMax + ", " // rtmax
                    + area + ", " // into: peak area.
                    + area + ", " // intb: doesn't affect result, use area.
                    + maxo + ", " // maxo
                    + SIGNAL_TO_NOISE + "))", false);

            progress += progressInc;
        }

        // 20 percents (5*4) for building pseudo-isotopes groups.
        progressInc = 0.05;

        // Create R vectors.
        final int scanCount = peakDataPointsByScan.size();
        final double[] scanTimes = new double[scanCount];
        final int[] scanIndices = new int[scanCount];
        final double[] masses = new double[dataPointCount];
        final double[] intensities = new double[dataPointCount];

        // Fill vectors.
        int scanIndex = 0;
        int pointIndex = 0;
        for (final int scanNumber : rawFile.getScanNumbers(MS_LEVEL)) {

            final Scan scan = rawFile.getScan(scanNumber);
            scanTimes[scanIndex] = scan.getRetentionTime();
            scanIndices[scanIndex] = pointIndex + 1;
            scanIndex++;

            for (final DataPoint dataPoint : peakDataPointsByScan.get(scan)) {

                masses[pointIndex] = dataPoint.getMZ();
                intensities[pointIndex] = dataPoint.getIntensity();
                pointIndex++;
            }
        }

        // Set vectors.
        this.rSession.assign("scantime", scanTimes);
        this.rSession.assign("scanindex", scanIndices);
        this.rSession.assign("mass", masses);
        this.rSession.assign("intensity", intensities);

        // Construct xcmsRaw object
        this.rSession.eval("xRaw <- new(\"xcmsRaw\")");
        this.rSession.eval("xRaw@tic <- intensity");
        this.rSession.eval("xRaw@scantime <- scantime * " + SECONDS_PER_MINUTE);
        this.rSession.eval("xRaw@scanindex <- scanindex");
        this.rSession.eval("xRaw@env$mz <- mass");
        this.rSession.eval("xRaw@env$intensity <- intensity");

        // Create the xcmsSet object.
        this.rSession.eval("xs <- new(\"xcmsSet\")");

        // Set peaks.
        this.rSession.eval("xs@peaks <- peaks");

        // Set file (dummy) file path.
        this.rSession.eval("xs@filepaths  <- ''");

        // Set sample name.
        this.rSession.assign("sampleName", peakList.getName());
        this.rSession.eval("sampnames(xs) <- sampleName");

        // Create an empty xsAnnotate.
        this.rSession.eval("an <- xsAnnotate(xs, sample=1)");

        // Group by RT.
        this.rSession.eval("an <- groupFWHM(an, sigma=" + fwhmSigma + ", perfwhm=" + fwhmPercentage + ')');
        progress += progressInc;

        // Identify isotopes.
        this.rSession.eval("an <- findIsotopes(an, maxcharge=" + isoMaxCharge + ", maxiso=" + isoMaxCount
                + ", ppm=" + isoMassTolerance.getPpmTolerance() + ", mzabs=" + isoMassTolerance.getMzTolerance()
                + ')');
        progress += progressInc;

        // Split groups by correlating peak shape (need to set xraw to raw
        // data).
        this.rSession.eval("an <- groupCorr(an, calcIso=TRUE, xraw=xRaw, cor_eic_th=" + corrThreshold
                + ", pval=" + corrPValue + ')');
        progress += progressInc;

        // Get the peak list.
        this.rSession.eval("peakList <- getPeaklist(an)");

        // Extract the pseudo-spectra and isotope annotations from the peak
        // list.
        rSession.eval("pcgroup <- as.integer(peakList$pcgroup)");
        rSession.eval("isotopes <- peakList$isotopes");
        final int[] spectra = (int[]) rSession.collect("pcgroup");
        final String[] isotopes = (String[]) rSession.collect("isotopes");

        // Add identities.
        if (spectra != null) {

            addPseudoSpectraIdentities(peaks, spectra, isotopes);
        }
        progress += progressInc;
        // Turn off R instance, once task ended gracefully.
        if (!this.userCanceled)
            this.rSession.close(false);

    } catch (RSessionWrapperException e) {
        if (!this.userCanceled) {
            errorMsg = "'R computing error' during CAMERA search. \n" + e.getMessage();
            e.printStackTrace();
        }
    } catch (Exception e) {
        if (!this.userCanceled) {
            errorMsg = "'Unknown error' during CAMERA search. \n" + e.getMessage();
            e.printStackTrace();
        }
    }

    // Turn off R instance, once task ended UNgracefully.
    try {
        if (!this.userCanceled)
            this.rSession.close(this.userCanceled);
    } catch (RSessionWrapperException e) {
        if (!this.userCanceled) {
            // Do not override potential previous error message.
            if (errorMsg == null) {
                errorMsg = e.getMessage();
            }
        } else {
            // User canceled: Silent.
        }
    }

    // Report error.
    if (errorMsg != null) {
        setErrorMessage(errorMsg);
        setStatus(TaskStatus.ERROR);
    }
}

From source file:com.google.eclipse.protobuf.validation.ProtobufJavaValidator.java

@Check
public void checkForIndexConflicts(Message message) {
    Multimap<EObject, Range<Long>> rangeUsages = LinkedHashMultimap.create();

    for (Reserved reserved : getOwnedElements(message, Reserved.class)) {
        for (IndexRange indexRange : Iterables.filter(reserved.getReservations(), IndexRange.class)) {
            try {
                Range<Long> range = indexRanges.toLongRange(indexRange);
                errorOnConflicts(range, rangeUsages, indexRange, null);
                rangeUsages.put(reserved, range);
            } catch (BackwardsRangeException e) {
                // Do not try to find conflicts with invalid ranges.
            }//  w  w  w .j a  v  a  2s  . c  o m
        }
    }

    for (Extensions extensions : getOwnedElements(message, Extensions.class)) {
        for (IndexRange indexRange : extensions.getRanges()) {
            try {
                Range<Long> range = indexRanges.toLongRange(indexRange);
                errorOnConflicts(range, rangeUsages, indexRange, null);
                rangeUsages.put(extensions, range);
            } catch (BackwardsRangeException e) {
                // Do not try to find conflicts with invalid ranges.
            }
        }
    }

    for (IndexedElement element : getOwnedElements(message, IndexedElement.class)) {
        long index = indexedElements.indexOf(element);
        Range<Long> range = Range.singleton(index);
        EStructuralFeature feature = indexedElements.indexFeatureOf(element);
        errorOnConflicts(range, rangeUsages, element, feature);
        rangeUsages.put(element, range);
    }
}

From source file:io.github.msdk.io.nativeformats.RawDumpParser.java

@SuppressWarnings("null")
private void parseLine(String line, InputStream dumpStream) throws MSDKException, IOException {

    if (line.startsWith("ERROR: ")) {
        throw (new MSDKException(line));
    }// w w  w .ja v  a 2  s .  c om

    if (line.startsWith("NUMBER OF SCANS: ")) {
        totalScans = Integer.parseInt(line.substring("NUMBER OF SCANS: ".length()));
    }

    if (line.startsWith("SCAN NUMBER: ")) {
        scanNumber = Integer.parseInt(line.substring("SCAN NUMBER: ".length()));
    }

    if (line.startsWith("SCAN ID: ")) {
        scanId = line.substring("SCAN ID: ".length());
    }

    if (line.startsWith("MS LEVEL: ")) {
        msLevel = Integer.parseInt(line.substring("MS LEVEL: ".length()));
    }

    if (line.startsWith("POLARITY: ")) {
        if (line.contains("-"))
            polarity = PolarityType.NEGATIVE;
        else if (line.contains("+"))
            polarity = PolarityType.POSITIVE;
        else
            polarity = PolarityType.UNKNOWN;

        // For Thermo RAW files, the polarity is sometimes not recognized.
        // In such case, we can parse it from the scan filter line (scanId).
        if ((polarity == PolarityType.UNKNOWN) && (newRawFile.getRawDataFileType() == FileType.THERMO_RAW)
                && (!Strings.isNullOrEmpty(scanId))) {
            if (scanId.startsWith("-"))
                polarity = PolarityType.NEGATIVE;
            else if (scanId.startsWith("+"))
                polarity = PolarityType.POSITIVE;
        }

    }

    if (line.startsWith("RETENTION TIME: ")) {
        // Retention time is reported in minutes.
        retentionTime = Float.parseFloat(line.substring("RETENTION TIME: ".length())) * 60.0f;
    }

    if (line.startsWith("PRECURSOR: ")) {
        String tokens[] = line.split(" ");
        double token2 = Double.parseDouble(tokens[1]);
        int token3 = Integer.parseInt(tokens[2]);

        precursorMz = token2;
        precursorCharge = token3;

        // For Thermo RAW files, the MSFileReader library sometimes
        // returns 0.0 for precursor m/z. In such case, we can parse
        // the precursor m/z from the scan filter line (scanId).
        // Examples:
        // + c ESI SRM ms2 165.000 [118.600-119.600]
        // FTMS + p ESI d Full ms2 279.16@hcd25.00 [50.00-305.00]
        if ((precursorMz == 0.0) && (newRawFile.getRawDataFileType() == FileType.THERMO_RAW)
                && (!Strings.isNullOrEmpty(scanId))) {
            Pattern precursorPattern = Pattern.compile(".* ms\\d+ (\\d+\\.\\d+)[@ ]");
            Matcher m = precursorPattern.matcher(scanId);
            if (m.find()) {
                String precursorMzString = m.group(1);
                try {
                    precursorMz = Double.parseDouble(precursorMzString);
                } catch (Exception e) {
                    e.printStackTrace();
                    // ignore
                }
            }
        }

    }

    if (line.startsWith("MASS VALUES: ")) {
        Pattern p = Pattern.compile("MASS VALUES: (\\d+) x (\\d+) BYTES");
        Matcher m = p.matcher(line);
        if (!m.matches())
            throw new MSDKException("Could not parse line " + line);
        numOfDataPoints = Integer.parseInt(m.group(1));

        // Allocate space
        if (mzValues.length < numOfDataPoints)
            mzValues = new double[numOfDataPoints * 2];
        if (intensityValues.length < numOfDataPoints)
            intensityValues = new float[numOfDataPoints * 2];

        final int byteSize = Integer.parseInt(m.group(2));

        final int numOfBytes = numOfDataPoints * byteSize;
        if (byteBuffer.length < numOfBytes)
            byteBuffer = new byte[numOfBytes * 2];
        dumpStream.read(byteBuffer, 0, numOfBytes);

        ByteBuffer mzByteBuffer = ByteBuffer.wrap(byteBuffer, 0, numOfBytes).order(ByteOrder.LITTLE_ENDIAN);

        for (int i = 0; i < numOfDataPoints; i++) {
            if (byteSize == 8)
                mzValues[i] = mzByteBuffer.getDouble();
            else
                mzValues[i] = mzByteBuffer.getFloat();
        }

    }

    if (line.startsWith("INTENSITY VALUES: ")) {
        Pattern p = Pattern.compile("INTENSITY VALUES: (\\d+) x (\\d+) BYTES");
        Matcher m = p.matcher(line);
        if (!m.matches())
            throw new MSDKException("Could not parse line " + line);
        // numOfDataPoints must be same for MASS VALUES and INTENSITY
        // VALUES
        if (numOfDataPoints != Integer.parseInt(m.group(1))) {
            throw new MSDKException("Scan " + scanNumber + " contained " + numOfDataPoints
                    + " mass values, but " + m.group(1) + " intensity values");
        }
        final int byteSize = Integer.parseInt(m.group(2));

        final int numOfBytes = numOfDataPoints * byteSize;
        if (byteBuffer.length < numOfBytes)
            byteBuffer = new byte[numOfBytes * 2];
        dumpStream.read(byteBuffer, 0, numOfBytes);

        ByteBuffer intensityByteBuffer = ByteBuffer.wrap(byteBuffer, 0, numOfBytes)
                .order(ByteOrder.LITTLE_ENDIAN);

        for (int i = 0; i < numOfDataPoints; i++) {
            if (byteSize == 8)
                intensityValues[i] = (float) intensityByteBuffer.getDouble();
            else
                intensityValues[i] = intensityByteBuffer.getFloat();
        }
    }

    if (line.startsWith("END OF SCAN")) {

        // Auto-detect whether this scan is centroided
        MsSpectrumType spectrumType = SpectrumTypeDetectionAlgorithm.detectSpectrumType(mzValues,
                intensityValues, numOfDataPoints);

        // Create a new MS function
        MsFunction msFunction = null;
        if ((newRawFile.getRawDataFileType() == FileType.THERMO_RAW) && (!Strings.isNullOrEmpty(scanId))) {
            // Parse the MS function from the scan filter line, e.g.
            // + c SRM ms2 469.40@cid23.00 [423.30-425.30]
            // + p ESI Q1MS [181.653-182.582, 507.779-508.708]

            String scanIdLowerCase = scanId.toLowerCase();

            for (String fn : thermoMsFunctions) {
                if (scanIdLowerCase.contains(fn)) {
                    msFunction = MSDKObjectBuilder.getMsFunction(fn, msLevel);
                    break;
                }
            }

        }
        if (msFunction == null)
            msFunction = MSDKObjectBuilder.getMsFunction(msLevel);

        // Create a new scan
        MsScan newScan = MSDKObjectBuilder.getMsScan(dataStore, scanNumber, msFunction);

        ChromatographyInfo chromInfo = MSDKObjectBuilder.getChromatographyInfo1D(SeparationType.UNKNOWN,
                retentionTime);
        newScan.setChromatographyInfo(chromInfo);

        newScan.setDataPoints(mzValues, intensityValues, numOfDataPoints);
        newScan.setSpectrumType(spectrumType);
        newScan.setPolarity(polarity);
        newScan.setScanningRange(scanningMzRange);
        newScan.setScanDefinition(scanId);

        if (precursorMz != null) {
            IsolationInfo isolation = MSDKObjectBuilder.getIsolationInfo(Range.singleton(precursorMz), null,
                    precursorMz, precursorCharge, null);
            newScan.getIsolations().add(isolation);
        }

        // Add the scan to the file
        newRawFile.addScan(newScan);
        parsedScans++;

        // Clean the variables for next scan
        scanNumber = 0;
        scanId = null;
        polarity = null;
        scanningMzRange = null;
        msLevel = 0;
        retentionTime = 0;
        precursorMz = null;
        precursorCharge = null;
        numOfDataPoints = 0;

    }
}

From source file:net.sf.mzmine.modules.masslistmethods.ADAPchromatogrambuilder.Chromatogram.java

public void finishChromatogram() {

    int allScanNumbers[] = Ints.toArray(dataPointsMap.keySet());
    Arrays.sort(allScanNumbers);//from www  .  j  a  va2s .  com

    mz = highPointMZ;

    // Update raw data point ranges, height, rt and representative scan
    height = Double.MIN_VALUE;
    for (int i = 0; i < allScanNumbers.length; i++) {

        DataPoint mzPeak = dataPointsMap.get(allScanNumbers[i]);

        // Replace the MzPeak instance with an instance of SimpleDataPoint,
        // to reduce the memory usage. After we finish this Chromatogram, we
        // don't need the additional data provided by the MzPeak

        dataPointsMap.put(allScanNumbers[i], mzPeak);

        if (i == 0) {
            rawDataPointsIntensityRange = Range.singleton(mzPeak.getIntensity());
            rawDataPointsMZRange = Range.singleton(mzPeak.getMZ());
        } else {
            rawDataPointsIntensityRange = rawDataPointsIntensityRange
                    .span(Range.singleton(mzPeak.getIntensity()));
            rawDataPointsMZRange = rawDataPointsMZRange.span(Range.singleton(mzPeak.getMZ()));
        }

        if (height < mzPeak.getIntensity()) {
            height = mzPeak.getIntensity();
            rt = dataFile.getScan(allScanNumbers[i]).getRetentionTime();
            representativeScan = allScanNumbers[i];
        }
    }

    // Update area
    area = 0;
    for (int i = 1; i < allScanNumbers.length; i++) {
        // For area calculation, we use retention time in seconds
        double previousRT = dataFile.getScan(allScanNumbers[i - 1]).getRetentionTime() * 60d;
        double currentRT = dataFile.getScan(allScanNumbers[i]).getRetentionTime() * 60d;
        double previousHeight = dataPointsMap.get(allScanNumbers[i - 1]).getIntensity();
        double currentHeight = dataPointsMap.get(allScanNumbers[i]).getIntensity();
        area += (currentRT - previousRT) * (currentHeight + previousHeight) / 2;
    }

    // Update fragment scan
    fragmentScan = ScanUtils.findBestFragmentScan(dataFile, dataFile.getDataRTRange(1), rawDataPointsMZRange);

    if (fragmentScan > 0) {
        Scan fragmentScanObject = dataFile.getScan(fragmentScan);
        int precursorCharge = fragmentScanObject.getPrecursorCharge();
        if (precursorCharge > 0)
            this.charge = precursorCharge;
    }

    rawDataPointsRTRange = null;

    for (int scanNum : allScanNumbers) {
        double scanRt = dataFile.getScan(scanNum).getRetentionTime();
        DataPoint dp = getDataPoint(scanNum);

        if ((dp == null) || (dp.getIntensity() == 0.0))
            continue;

        if (rawDataPointsRTRange == null)
            rawDataPointsRTRange = Range.singleton(scanRt);
        else
            rawDataPointsRTRange = rawDataPointsRTRange.span(Range.singleton(scanRt));
    }

    // Discard the fields we don't need anymore
    buildingSegment = null;
    lastMzPeak = null;

}

From source file:net.sf.mzmine.modules.projectmethods.projectload.version_2_3.PeakListOpenHandler_2_3.java

/**
 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
 *      java.lang.String, java.lang.String)
 *//*from  ww w  . j  a va 2 s .c  o m*/
public void endElement(String namespaceURI, String sName, String qName) throws SAXException {

    if (canceled)
        throw new SAXException("Parsing canceled");

    // <NAME>
    if (qName.equals(PeakListElementName_2_3.PEAKLIST_NAME.getElementName())) {
        name = getTextOfElement();
        logger.info("Loading peak list: " + name);
        peakListName = name;
    }

    // <PEAKLIST_DATE>
    if (qName.equals(PeakListElementName_2_3.PEAKLIST_DATE.getElementName())) {
        dateCreated = getTextOfElement();
    }

    // <QUANTITY>
    if (qName.equals(PeakListElementName_2_3.QUANTITY.getElementName())) {
        String text = getTextOfElement();
        totalRows = Integer.parseInt(text);
    }

    // <RAW_FILE>
    if (qName.equals(PeakListElementName_2_3.RAWFILE.getElementName())) {
        rawDataFileID = getTextOfElement();
        RawDataFile dataFile = dataFilesIDMap.get(rawDataFileID);
        if (dataFile == null) {
            throw new SAXException(
                    "Cannot open peak list, because raw data file " + rawDataFileID + " is missing.");
        }
        currentPeakListDataFiles.add(dataFile);
    }

    // <SCAN_ID>
    if (qName.equals(PeakListElementName_2_3.SCAN_ID.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        scanNumbers = new int[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                scanNumbers[i] = dataInputStream.readInt();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <REPRESENTATIVE_SCAN>
    if (qName.equals(PeakListElementName_2_3.REPRESENTATIVE_SCAN.getElementName())) {
        representativeScan = Integer.valueOf(getTextOfElement());
    }

    // <FRAGMENT_SCAN>

    if (qName.equals(PeakListElementName_2_3.FRAGMENT_SCAN.getElementName())) {
        fragmentScan = Integer.valueOf(getTextOfElement());
    }

    // <MASS>
    if (qName.equals(PeakListElementName_2_3.MZ.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        masses = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                masses[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <HEIGHT>
    if (qName.equals(PeakListElementName_2_3.HEIGHT.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        intensities = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                intensities[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <PEAK>
    if (qName.equals(PeakListElementName_2_3.PEAK.getElementName())) {

        DataPoint[] mzPeaks = new DataPoint[numOfMZpeaks];
        Range<Double> peakRTRange = null, peakMZRange = null, peakIntensityRange = null;
        RawDataFile dataFile = dataFilesIDMap.get(peakColumnID);

        if (dataFile == null)
            throw new SAXException("Error in project: data file " + peakColumnID + " not found");

        for (int i = 0; i < numOfMZpeaks; i++) {

            Scan sc = dataFile.getScan(scanNumbers[i]);
            double retentionTime = sc.getRetentionTime();

            double mz = masses[i];
            double intensity = intensities[i];

            if ((peakRTRange == null) || (peakIntensityRange == null)) {
                peakRTRange = Range.singleton(retentionTime);
                peakIntensityRange = Range.singleton(intensity);
            } else {
                peakRTRange = peakRTRange.span(Range.singleton(retentionTime));
                peakIntensityRange = peakIntensityRange.span(Range.singleton(intensity));
            }
            if (mz > 0.0) {
                mzPeaks[i] = new SimpleDataPoint(mz, intensity);
                if (peakMZRange == null)
                    peakMZRange = Range.singleton(mz);
                else
                    peakMZRange = peakMZRange.span(Range.singleton(mz));
            }
        }

        FeatureStatus status = FeatureStatus.valueOf(peakStatus);

        SimpleFeature peak = new SimpleFeature(dataFile, mass, rt, height, area, scanNumbers, mzPeaks, status,
                representativeScan, fragmentScan, peakRTRange, peakMZRange, peakIntensityRange);

        peak.setCharge(currentPeakCharge);

        if (currentIsotopes.size() > 0) {
            SimpleIsotopePattern newPattern = new SimpleIsotopePattern(
                    currentIsotopes.toArray(new DataPoint[0]), currentIsotopePatternStatus,
                    currentIsotopePatternDescription);
            peak.setIsotopePattern(newPattern);
            currentIsotopes.clear();
        }

        buildingRow.addPeak(dataFile, peak);

    }

    // <IDENTITY_PROPERTY>
    if (qName.equals(PeakListElementName_2_3.IDPROPERTY.getElementName())) {
        identityProperties.put(identityPropertyName, getTextOfElement());
    }

    // <PEAK_IDENTITY>
    if (qName.equals(PeakListElementName_2_3.PEAK_IDENTITY.getElementName())) {
        SimplePeakIdentity identity = new SimplePeakIdentity(identityProperties);
        buildingRow.addPeakIdentity(identity, preferred);
    }

    // <ROW>
    if (qName.equals(PeakListElementName_2_3.ROW.getElementName())) {
        buildingPeakList.addRow(buildingRow);
        buildingRow = null;
        parsedRows++;
    }

    // <ISOTOPE>
    if (qName.equals(PeakListElementName_2_3.ISOTOPE.getElementName())) {
        String text = getTextOfElement();
        String items[] = text.split(":");
        double mz = Double.valueOf(items[0]);
        double intensity = Double.valueOf(items[1]);
        DataPoint isotope = new SimpleDataPoint(mz, intensity);
        currentIsotopes.add(isotope);
    }

    if (qName.equals(PeakListElementName_2_3.METHOD_NAME.getElementName())) {
        String appliedMethod = getTextOfElement();
        appliedMethods.add(appliedMethod);
    }

    if (qName.equals(PeakListElementName_2_3.METHOD_PARAMETERS.getElementName())) {
        String appliedMethodParam = getTextOfElement();
        appliedMethodParameters.add(appliedMethodParam);
    }

}

From source file:net.sf.mzmine.modules.projectmethods.projectload.version_2_0.PeakListOpenHandler_2_0.java

/**
 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
 *      java.lang.String, java.lang.String)
 *///from  w  ww  . j  a  v  a  2 s. co  m
public void endElement(String namespaceURI, String sName, String qName) throws SAXException {

    if (canceled)
        throw new SAXException("Parsing canceled");

    // <NAME>
    if (qName.equals(PeakListElementName_2_0.PEAKLIST_NAME.getElementName())) {
        name = getTextOfElement();
        logger.info("Loading peak list: " + name);
        peakListName = name;
    }

    // <PEAKLIST_DATE>
    if (qName.equals(PeakListElementName_2_0.PEAKLIST_DATE.getElementName())) {
        dateCreated = getTextOfElement();
    }

    // <QUANTITY>
    if (qName.equals(PeakListElementName_2_0.QUANTITY.getElementName())) {
        String text = getTextOfElement();
        totalRows = Integer.parseInt(text);
    }

    // <RAW_FILE>
    if (qName.equals(PeakListElementName_2_0.RAWFILE.getElementName())) {
        rawDataFileID = getTextOfElement();
        RawDataFile dataFile = dataFilesIDMap.get(rawDataFileID);
        if (dataFile == null) {
            throw new SAXException(
                    "Cannot open peak list, because raw data file " + rawDataFileID + " is missing.");
        }
        currentPeakListDataFiles.add(dataFile);
    }

    // <SCAN_ID>
    if (qName.equals(PeakListElementName_2_0.SCAN_ID.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        scanNumbers = new int[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                scanNumbers[i] = dataInputStream.readInt();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <REPRESENTATIVE_SCAN>
    if (qName.equals(PeakListElementName_2_0.REPRESENTATIVE_SCAN.getElementName())) {
        representativeScan = Integer.valueOf(getTextOfElement());
    }

    // <FRAGMENT_SCAN>

    if (qName.equals(PeakListElementName_2_0.FRAGMENT_SCAN.getElementName())) {
        fragmentScan = Integer.valueOf(getTextOfElement());
    }

    // <MASS>
    if (qName.equals(PeakListElementName_2_0.MZ.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        masses = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                masses[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <HEIGHT>
    if (qName.equals(PeakListElementName_2_0.HEIGHT.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        intensities = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                intensities[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <PEAK>
    if (qName.equals(PeakListElementName_2_0.PEAK.getElementName())) {

        DataPoint[] mzPeaks = new DataPoint[numOfMZpeaks];
        Range<Double> peakRTRange = null, peakMZRange = null, peakIntensityRange = null;
        RawDataFile dataFile = dataFilesIDMap.get(peakColumnID);

        if (dataFile == null)
            throw new SAXException("Error in project: data file " + peakColumnID + " not found");

        for (int i = 0; i < numOfMZpeaks; i++) {

            Scan sc = dataFile.getScan(scanNumbers[i]);
            double retentionTime = sc.getRetentionTime();

            double mz = masses[i];
            double intensity = intensities[i];

            if ((peakRTRange == null) || (peakIntensityRange == null)) {
                peakRTRange = Range.singleton(retentionTime);
                peakIntensityRange = Range.singleton(intensity);
            } else {
                peakRTRange = peakRTRange.span(Range.singleton(retentionTime));
                peakIntensityRange = peakIntensityRange.span(Range.singleton(intensity));
            }
            if (mz > 0.0) {
                mzPeaks[i] = new SimpleDataPoint(mz, intensity);
                if (peakMZRange == null)
                    peakMZRange = Range.singleton(mz);
                else
                    peakMZRange = peakMZRange.span(Range.singleton(mz));
            }
        }

        FeatureStatus status = FeatureStatus.valueOf(peakStatus);

        SimpleFeature peak = new SimpleFeature(dataFile, mass, rt, height, area, scanNumbers, mzPeaks, status,
                representativeScan, fragmentScan, peakRTRange, peakMZRange, peakIntensityRange);

        peak.setCharge(currentPeakCharge);

        if (currentIsotopes.size() > 0) {
            SimpleIsotopePattern newPattern = new SimpleIsotopePattern(
                    currentIsotopes.toArray(new DataPoint[0]), currentIsotopePatternStatus,
                    currentIsotopePatternDescription);
            peak.setIsotopePattern(newPattern);
            currentIsotopes.clear();
        }

        buildingRow.addPeak(dataFile, peak);

    }

    // <IDENTITY_PROPERTY>
    if (qName.equals(PeakListElementName_2_0.IDPROPERTY.getElementName())) {
        identityProperties.put(identityPropertyName, getTextOfElement());
    }

    // <PEAK_IDENTITY>
    if (qName.equals(PeakListElementName_2_0.PEAK_IDENTITY.getElementName())) {
        String content = getTextOfElement();
        if (identityProperties.get(PeakIdentity.PROPERTY_NAME) == null)
            identityProperties.put(PeakIdentity.PROPERTY_NAME, content);
        SimplePeakIdentity identity = new SimplePeakIdentity(identityProperties);
        buildingRow.addPeakIdentity(identity, preferred);
    }

    // <ROW>
    if (qName.equals(PeakListElementName_2_0.ROW.getElementName())) {
        buildingPeakList.addRow(buildingRow);
        buildingRow = null;
        parsedRows++;
    }

    // <ISOTOPE>
    if (qName.equals(PeakListElementName_2_0.ISOTOPE.getElementName())) {
        String text = getTextOfElement();
        String items[] = text.split(":");
        double mz = Double.valueOf(items[0]);
        double intensity = Double.valueOf(items[1]);
        DataPoint isotope = new SimpleDataPoint(mz, intensity);
        currentIsotopes.add(isotope);
    }

    if (qName.equals(PeakListElementName_2_0.METHOD_NAME.getElementName())) {
        String appliedMethod = getTextOfElement();
        appliedMethods.add(appliedMethod);
    }

    if (qName.equals(PeakListElementName_2_0.METHOD_PARAMETERS.getElementName())) {
        String appliedMethodParam = getTextOfElement();
        appliedMethodParameters.add(appliedMethodParam);
    }

}

From source file:net.sf.mzmine.modules.projectmethods.projectload.version_2_5.PeakListOpenHandler_2_5.java

/**
 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
 *      java.lang.String, java.lang.String)
 *///ww  w.  j  a  v  a 2s .  co m
public void endElement(String namespaceURI, String sName, String qName) throws SAXException {

    if (canceled)
        throw new SAXException("Parsing canceled");

    // <NAME>
    if (qName.equals(PeakListElementName_2_5.PEAKLIST_NAME.getElementName())) {
        name = getTextOfElement();
        logger.info("Loading peak list: " + name);
        peakListName = name;
    }

    // <PEAKLIST_DATE>
    if (qName.equals(PeakListElementName_2_5.PEAKLIST_DATE.getElementName())) {
        dateCreated = getTextOfElement();
    }

    // <QUANTITY>
    if (qName.equals(PeakListElementName_2_5.QUANTITY.getElementName())) {
        String text = getTextOfElement();
        totalRows = Integer.parseInt(text);
    }

    // <RAW_FILE>
    if (qName.equals(PeakListElementName_2_5.RAWFILE.getElementName())) {
        rawDataFileID = getTextOfElement();
        RawDataFile dataFile = dataFilesIDMap.get(rawDataFileID);
        if (dataFile == null) {
            throw new SAXException(
                    "Cannot open peak list, because raw data file " + rawDataFileID + " is missing.");
        }
        currentPeakListDataFiles.add(dataFile);
    }

    // <SCAN_ID>
    if (qName.equals(PeakListElementName_2_5.SCAN_ID.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        scanNumbers = new int[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                scanNumbers[i] = dataInputStream.readInt();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <REPRESENTATIVE_SCAN>
    if (qName.equals(PeakListElementName_2_5.REPRESENTATIVE_SCAN.getElementName())) {
        representativeScan = Integer.valueOf(getTextOfElement());
    }

    // <FRAGMENT_SCAN>

    if (qName.equals(PeakListElementName_2_5.FRAGMENT_SCAN.getElementName())) {
        fragmentScan = Integer.valueOf(getTextOfElement());
    }

    // <MASS>
    if (qName.equals(PeakListElementName_2_5.MZ.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        masses = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                masses[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <HEIGHT>
    if (qName.equals(PeakListElementName_2_5.HEIGHT.getElementName())) {

        byte[] bytes = Base64.decodeToBytes(getTextOfElement());
        // make a data input stream
        DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(bytes));
        intensities = new double[numOfMZpeaks];
        for (int i = 0; i < numOfMZpeaks; i++) {
            try {
                intensities[i] = (double) dataInputStream.readFloat();
            } catch (IOException ex) {
                throw new SAXException(ex);
            }
        }
    }

    // <PEAK>
    if (qName.equals(PeakListElementName_2_5.PEAK.getElementName())) {

        DataPoint[] mzPeaks = new DataPoint[numOfMZpeaks];
        Range<Double> peakRTRange = null, peakMZRange = null, peakIntensityRange = null;
        RawDataFile dataFile = dataFilesIDMap.get(peakColumnID);

        if (dataFile == null)
            throw new SAXException("Error in project: data file " + peakColumnID + " not found");

        for (int i = 0; i < numOfMZpeaks; i++) {

            Scan sc = dataFile.getScan(scanNumbers[i]);
            double retentionTime = sc.getRetentionTime();

            double mz = masses[i];
            double intensity = intensities[i];

            if ((peakRTRange == null) || (peakIntensityRange == null)) {
                peakRTRange = Range.singleton(retentionTime);
                peakIntensityRange = Range.singleton(intensity);
            } else {
                peakRTRange = peakRTRange.span(Range.singleton(retentionTime));
                peakIntensityRange = peakIntensityRange.span(Range.singleton(intensity));
            }
            if (mz > 0.0) {
                mzPeaks[i] = new SimpleDataPoint(mz, intensity);
                if (peakMZRange == null)
                    peakMZRange = Range.singleton(mz);
                else
                    peakMZRange = peakMZRange.span(Range.singleton(mz));
            }
        }

        FeatureStatus status = FeatureStatus.valueOf(peakStatus);

        SimpleFeature peak = new SimpleFeature(dataFile, mass, rt, height, area, scanNumbers, mzPeaks, status,
                representativeScan, fragmentScan, peakRTRange, peakMZRange, peakIntensityRange);

        peak.setCharge(currentPeakCharge);

        if (currentIsotopes.size() > 0) {
            SimpleIsotopePattern newPattern = new SimpleIsotopePattern(
                    currentIsotopes.toArray(new DataPoint[0]), currentIsotopePatternStatus,
                    currentIsotopePatternDescription);
            peak.setIsotopePattern(newPattern);
            currentIsotopes.clear();
        }

        buildingRow.addPeak(dataFile, peak);

    }

    // <IDENTITY_PROPERTY>
    if (qName.equals(PeakListElementName_2_5.IDPROPERTY.getElementName())) {
        identityProperties.put(identityPropertyName, getTextOfElement());
    }

    // <PEAK_IDENTITY>
    if (qName.equals(PeakListElementName_2_5.PEAK_IDENTITY.getElementName())) {
        SimplePeakIdentity identity = new SimplePeakIdentity(identityProperties);
        buildingRow.addPeakIdentity(identity, preferred);
    }

    // <ROW>
    if (qName.equals(PeakListElementName_2_5.ROW.getElementName())) {
        buildingPeakList.addRow(buildingRow);
        buildingRow = null;
        parsedRows++;
    }

    // <ISOTOPE>
    if (qName.equals(PeakListElementName_2_5.ISOTOPE.getElementName())) {
        String text = getTextOfElement();
        String items[] = text.split(":");
        double mz = Double.valueOf(items[0]);
        double intensity = Double.valueOf(items[1]);
        DataPoint isotope = new SimpleDataPoint(mz, intensity);
        currentIsotopes.add(isotope);
    }

    if (qName.equals(PeakListElementName_2_5.METHOD_NAME.getElementName())) {
        String appliedMethod = getTextOfElement();
        appliedMethods.add(appliedMethod);
    }

    if (qName.equals(PeakListElementName_2_5.METHOD_PARAMETERS.getElementName())) {
        String appliedMethodParam = getTextOfElement();
        appliedMethodParameters.add(appliedMethodParam);
    }

}

From source file:net.sf.mzmine.project.impl.RawDataFileImpl.java

public @Nonnull Range<Double> getDataMZRange(int msLevel) {

    // check if we have this value already cached
    Range<Double> mzRange = dataMZRange.get(msLevel);
    if (mzRange != null)
        return mzRange;

    // find the value
    for (Scan scan : scans.values()) {

        // ignore scans of other ms levels
        if ((msLevel != 0) && (scan.getMSLevel() != msLevel))
            continue;

        if (mzRange == null)
            mzRange = scan.getDataPointMZRange();
        else//from  w  ww  . j av  a  2s  .c  o m
            mzRange = mzRange.span(scan.getDataPointMZRange());

    }

    // cache the value, if we found any
    if (mzRange != null)
        dataMZRange.put(msLevel, mzRange);
    else
        mzRange = Range.singleton(0.0);

    return mzRange;

}

From source file:io.github.msdk.io.mzml.MzMLConverter.java

/**
 * <p>//from w w w .j a v  a  2s  .c  o m
 * extractIsolations.
 * </p>
 *
 * @param chromatogram
 *            a {@link uk.ac.ebi.jmzml.model.mzml.Chromatogram} object.
 * @return a {@link java.util.List} object.
 */
@SuppressWarnings("null")
@Nonnull
public List<IsolationInfo> extractIsolations(uk.ac.ebi.jmzml.model.mzml.Chromatogram chromatogram) {
    if (extractChromatogramType(chromatogram) == ChromatogramType.MRM_SRM) {
        Double precursorIsolationMz = null, productIsolationMz = null, precursorActivationEnergy = null;
        ActivationType precursorActivation = ActivationType.UNKNOWN;
        ActivationInfo activationInfo = null;

        // Precursor isolation window
        String cvVal = extractCVValue(chromatogram.getPrecursor().getIsolationWindow().getCvParam(),
                MzMLCV.cvIsolationWindowTarget);
        if (!Strings.isNullOrEmpty(cvVal))
            precursorIsolationMz = Double.parseDouble(cvVal);

        // Precursor activation
        if (haveCVParam(chromatogram.getPrecursor().getActivation().getCvParam(), MzMLCV.cvActivationCID))
            precursorActivation = ActivationType.CID;

        cvVal = extractCVValue(chromatogram.getPrecursor().getActivation().getCvParam(),
                MzMLCV.cvActivationEnergy);
        if (!Strings.isNullOrEmpty(cvVal))
            precursorActivationEnergy = Double.parseDouble(cvVal);

        // Product isolation window
        cvVal = extractCVValue(chromatogram.getProduct().getIsolationWindow().getCvParam(),
                MzMLCV.cvIsolationWindowTarget);
        if (!Strings.isNullOrEmpty(cvVal))
            productIsolationMz = Double.parseDouble(cvVal);

        if (precursorActivationEnergy != null) {
            activationInfo = MSDKObjectBuilder.getActivationInfo(precursorActivationEnergy,
                    precursorActivation);
        }

        List<IsolationInfo> isolations = new ArrayList<>();
        IsolationInfo isolationInfo = null;

        if (precursorIsolationMz != null) {
            isolationInfo = MSDKObjectBuilder.getIsolationInfo(Range.singleton(precursorIsolationMz), null,
                    precursorIsolationMz, null, activationInfo);
            isolations.add(isolationInfo);
        }

        if (productIsolationMz != null) {
            isolationInfo = MSDKObjectBuilder.getIsolationInfo(Range.singleton(productIsolationMz), null,
                    productIsolationMz, null, null);
            isolations.add(isolationInfo);
        }

        return Collections.unmodifiableList(isolations);
    }

    return Collections.emptyList();

}

From source file:io.github.mzmine.modules.plots.msspectrum.MsSpectrumPlotWindowController.java

public void handleAddScan(Event e) {
    ParameterSet parameters = MZmineCore.getConfiguration().getModuleParameters(MsSpectrumPlotModule.class);
    ButtonType exitCode = parameters.showSetupDialog("Add scan");
    if (exitCode != ButtonType.OK)
        return;/*ww  w .  j  ava  2 s  . com*/

    final RawDataFilesSelection fileSelection = parameters.getParameter(MsSpectrumPlotParameters.inputFiles)
            .getValue();
    final Integer scanNumber = parameters.getParameter(MsSpectrumPlotParameters.scanNumber).getValue();
    final ScanSelection scanSelection = new ScanSelection(Range.singleton(scanNumber), null, null, null, null,
            null);
    final List<RawDataFile> dataFiles = fileSelection.getMatchingRawDataFiles();
    boolean spectrumAdded = false;
    for (RawDataFile dataFile : dataFiles) {
        for (MsScan scan : scanSelection.getMatchingScans(dataFile)) {
            String title = MsScanUtils.createSingleLineMsScanDescription(scan);
            addSpectrum(scan, title);
            spectrumAdded = true;
        }
    }
    if (!spectrumAdded) {
        MZmineGUI.displayMessage("Scan not found");
    }
}