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

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

Introduction

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

Prototype

public Range<C> span(Range<C> other) 

Source Link

Document

Returns the minimal range that #encloses encloses both this range and other .

Usage

From source file:edu.mit.streamjit.impl.compiler2.Storage.java

/**
 * Returns a range spanning the indices written in this storage during an
 * execution of the given schedule. (Note that, as a span, not every
 * contained index will be written.) The returned range will be
 * {@link Range#canonical(com.google.common.collect.DiscreteDomain) canonical}.
 * The range is not cached so as to be responsive to changes in output index
 * functions./* ww  w.j  ava2  s. com*/
 * @param externalSchedule the schedule
 * @return a range spanning the indices written during the given schedule
 * under the current index functions
 * @see #writeIndices(java.util.Map)
 */
public Range<Integer> writeIndexSpan(Map<ActorGroup, Integer> externalSchedule) {
    Range<Integer> range = null;
    for (Actor a : upstream()) {
        //just the first and last iteration
        int maxIteration = a.group().schedule().get(a) * externalSchedule.get(a.group()) - 1;
        if (maxIteration >= 0)
            for (int iteration : new int[] { 0, maxIteration }) {
                ImmutableSortedSet<Integer> writes = a.writes(this, iteration);
                Range<Integer> writeRange = writes.isEmpty() ? range
                        : Range.closed(writes.first(), writes.last());
                range = range == null ? writeRange : range.span(writeRange);
            }
    }
    range = (range != null ? range : Range.closedOpen(0, 0));
    return range.canonical(DiscreteDomain.integers());
}

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

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

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

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

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

        if (rtRange == null)
            rtRange = Range.singleton(scan.getRetentionTime());
        else/*from w w w  .j  a  v a2  s  . com*/
            rtRange = rtRange.span(Range.singleton(scan.getRetentionTime()));

    }

    // cache the value
    if (rtRange != null)
        dataRTRange.put(msLevel, rtRange);
    else
        rtRange = Range.singleton(0.0);

    return rtRange;

}

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();//from w ww . j  av a  2s  .c  om
        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.targetedpeakdetection.Gap.java

public void noMoreOffers() {

    // Check peak that was last constructed
    if (currentPeakDataPoints != null) {
        checkCurrentPeak();/*from   ww w.j  a  va 2 s. c om*/
        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.util.components.PeakSummaryComponent.java

public void actionPerformed(ActionEvent e) {

    String command = e.getActionCommand();

    if (command.equals("SHOW")) {

        String visualizerType = (String) comboShow.getSelectedItem();
        int[] indexesRow = peaksInfoList.getSelectedRows();
        Feature[] selectedPeaks = new Feature[indexesRow.length];
        RawDataFile[] dataFiles = new RawDataFile[indexesRow.length];
        Range<Double> rtRange = null, mzRange = null;
        for (int i = 0; i < indexesRow.length; i++) {
            selectedPeaks[i] = listElementModel.getElementAt(indexesRow[i]);
            dataFiles[i] = selectedPeaks[i].getDataFile();

            if ((rtRange == null) || (mzRange == null)) {
                rtRange = dataFiles[i].getDataRTRange(1);
                mzRange = selectedPeaks[i].getRawDataPointsMZRange();
            } else {
                rtRange = rtRange.span(dataFiles[i].getDataRTRange(1));
                mzRange = mzRange.span(selectedPeaks[i].getRawDataPointsMZRange());
            }/*from   w w w .j  av a 2  s  .  c o  m*/
        }

        if (dataFiles.length == 0) {
            return;
        }

        if (visualizerType.equals("Chromatogram")) {

            // Label best peak with preferred identity.
            final Feature bestPeak = row.getBestPeak();
            final PeakIdentity peakIdentity = row.getPreferredPeakIdentity();
            final Map<Feature, String> labelMap = new HashMap<Feature, String>(1);
            if (bestPeak != null && peakIdentity != null) {

                labelMap.put(bestPeak, peakIdentity.getName());
            }

            ScanSelection scanSelection = new ScanSelection(rtRange, 1);

            TICVisualizerModule.showNewTICVisualizerWindow(dataFiles, selectedPeaks, labelMap, scanSelection,
                    TICPlotType.BASEPEAK, mzRange);
            return;

        } else if (visualizerType.equals("Mass spectrum")) {
            for (int i = 0; i < selectedPeaks.length; i++) {
                SpectraVisualizerModule.showNewSpectrumWindow(dataFiles[i],
                        selectedPeaks[i].getRepresentativeScanNumber());
            }
        } else if (visualizerType.equals("Peak in 2D")) {
            for (int i = 0; i < selectedPeaks.length; i++) {
                Range<Double> peakRTRange = selectedPeaks[i].getRawDataPointsRTRange();
                Range<Double> peakMZRange = selectedPeaks[i].getRawDataPointsMZRange();
                final double rtLen = peakRTRange.upperEndpoint() - peakRTRange.lowerEndpoint();
                Range<Double> localRTRange = Range.closed(Math.max(0, peakRTRange.lowerEndpoint() - rtLen),
                        peakRTRange.upperEndpoint() + rtLen);

                final double mzLen = peakMZRange.upperEndpoint() - peakMZRange.lowerEndpoint();
                Range<Double> localMZRange = Range.closed(Math.max(0, peakMZRange.lowerEndpoint() - mzLen),
                        peakMZRange.upperEndpoint() + mzLen);
                TwoDVisualizerModule.show2DVisualizerSetupDialog(dataFiles[i], localMZRange, localRTRange);
            }
        } else if (visualizerType.equals("Peak in 3D")) {
            for (int i = 0; i < selectedPeaks.length; i++) {
                Range<Double> peakRTRange = selectedPeaks[i].getRawDataPointsRTRange();
                Range<Double> peakMZRange = selectedPeaks[i].getRawDataPointsMZRange();
                final double rtLen = peakRTRange.upperEndpoint() - peakRTRange.lowerEndpoint();
                Range<Double> localRTRange = Range.closed(Math.max(0, peakRTRange.lowerEndpoint() - rtLen),
                        peakRTRange.upperEndpoint() + rtLen);
                final double mzLen = peakMZRange.upperEndpoint() - peakMZRange.lowerEndpoint();
                Range<Double> localMZRange = Range.closed(Math.max(0, peakMZRange.lowerEndpoint() - mzLen),
                        peakMZRange.upperEndpoint() + mzLen);
                ThreeDVisualizerModule.setupNew3DVisualizer(dataFiles[i], localMZRange, localRTRange);
            }
        } else if (visualizerType.equals("MS/MS")) {
            for (int i = 0; i < selectedPeaks.length; i++) {
                int scanNumber = selectedPeaks[i].getMostIntenseFragmentScanNumber();
                if (scanNumber > 0) {
                    SpectraVisualizerModule.showNewSpectrumWindow(dataFiles[i], scanNumber);
                } else {
                    JFrame frame = (JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, this);
                    MZmineCore.getDesktop().displayMessage(frame, "There is no fragment for the mass "
                            + MZmineCore.getConfiguration().getMZFormat().format(selectedPeaks[i].getMZ())
                            + "m/z in the current raw data.");
                    return;
                }
            }

        } else if (visualizerType.equals("Isotope pattern")) {
            for (int i = 0; i < selectedPeaks.length; i++) {
                IsotopePattern ip = selectedPeaks[i].getIsotopePattern();
                if (ip == null) {
                    return;
                }
                SpectraVisualizerModule.showNewSpectrumWindow(dataFiles[i],
                        selectedPeaks[i].getMostIntenseFragmentScanNumber(), ip);

            }
        }
        return;
    }

    if (command.equals("CHANGE")) {
        int indexRow = peaksInfoList.getSelectedRow();
        if (indexRow == -1) {
            return;
        }
        Feature selectedPeak = listElementModel.getElementAt(indexRow);
        ManualPeakPickerModule.runManualDetection(selectedPeak.getDataFile(), row, null, null);

        return;
    }

}

From source file:net.sf.mzmine.modules.visualization.peaklisttable.PeakListTablePopupMenu.java

@Override
public void actionPerformed(final ActionEvent e) {

    final Object src = e.getSource();

    if (deleteRowsItem.equals(src)) {

        final int[] rowsToDelete = table.getSelectedRows();

        final int[] unsortedIndexes = new int[rowsToDelete.length];
        for (int i = rowsToDelete.length - 1; i >= 0; i--) {

            unsortedIndexes[i] = table.convertRowIndexToModel(rowsToDelete[i]);
        }//from w  w w.  ja v  a  2  s.co m

        // sort row indexes and start removing from the last
        Arrays.sort(unsortedIndexes);

        // delete the rows starting from last
        for (int i = unsortedIndexes.length - 1; i >= 0; i--) {
            peakList.removeRow(unsortedIndexes[i]);
        }

        // Notify the GUI that peaklist contents have changed
        updateTableGUI();
    }

    if (plotRowsItem.equals(src)) {

        final int[] selectedTableRows = table.getSelectedRows();

        final PeakListRow[] selectedRows = new PeakListRow[selectedTableRows.length];
        for (int i = 0; i < selectedTableRows.length; i++) {

            selectedRows[i] = peakList.getRow(table.convertRowIndexToModel(selectedTableRows[i]));
        }

        IntensityPlotModule.showIntensityPlot(MZmineCore.getProjectManager().getCurrentProject(), peakList,
                selectedRows);
    }

    if (showXICItem.equals(src) && allClickedPeakListRows.length != 0) {

        // Map peaks to their identity labels.
        final Map<Feature, String> labelsMap = new HashMap<Feature, String>(allClickedPeakListRows.length);

        final RawDataFile selectedDataFile = clickedDataFile == null
                ? allClickedPeakListRows[0].getBestPeak().getDataFile()
                : clickedDataFile;

        Range<Double> mzRange = null;
        final List<Feature> selectedPeaks = new ArrayList<Feature>(allClickedPeakListRows.length);
        for (final PeakListRow row : allClickedPeakListRows) {

            for (final Feature peak : row.getPeaks()) {
                if (mzRange == null) {
                    mzRange = peak.getRawDataPointsMZRange();
                } else {
                    mzRange = mzRange.span(peak.getRawDataPointsMZRange());
                }
            }

            final Feature filePeak = row.getPeak(selectedDataFile);
            if (filePeak != null) {

                selectedPeaks.add(filePeak);

                // Label the peak with the row's preferred identity.
                final PeakIdentity identity = row.getPreferredPeakIdentity();
                if (identity != null) {
                    labelsMap.put(filePeak, identity.getName());
                }
            }
        }

        ScanSelection scanSelection = new ScanSelection(selectedDataFile.getDataRTRange(1), 1);

        TICVisualizerModule.showNewTICVisualizerWindow(new RawDataFile[] { selectedDataFile },
                selectedPeaks.toArray(new Feature[selectedPeaks.size()]), labelsMap, scanSelection,
                TICPlotType.BASEPEAK, mzRange);
    }

    if (showXICSetupItem.equals(src) && allClickedPeakListRows.length != 0) {

        // Map peaks to their identity labels.
        final Map<Feature, String> labelsMap = new HashMap<Feature, String>(allClickedPeakListRows.length);

        final RawDataFile[] selectedDataFiles = clickedDataFile == null ? peakList.getRawDataFiles()
                : new RawDataFile[] { clickedDataFile };

        Range<Double> mzRange = null;
        final ArrayList<Feature> allClickedPeaks = new ArrayList<Feature>(allClickedPeakListRows.length);
        final ArrayList<Feature> selectedClickedPeaks = new ArrayList<Feature>(allClickedPeakListRows.length);
        for (final PeakListRow row : allClickedPeakListRows) {

            // Label the peak with the row's preferred identity.
            final PeakIdentity identity = row.getPreferredPeakIdentity();

            for (final Feature peak : row.getPeaks()) {

                allClickedPeaks.add(peak);
                if (peak.getDataFile() == clickedDataFile) {
                    selectedClickedPeaks.add(peak);
                }

                if (mzRange == null) {
                    mzRange = peak.getRawDataPointsMZRange();
                } else {
                    mzRange = mzRange.span(peak.getRawDataPointsMZRange());
                }

                if (identity != null) {
                    labelsMap.put(peak, identity.getName());
                }
            }
        }

        ScanSelection scanSelection = new ScanSelection(selectedDataFiles[0].getDataRTRange(1), 1);

        TICVisualizerModule.setupNewTICVisualizer(
                MZmineCore.getProjectManager().getCurrentProject().getDataFiles(), selectedDataFiles,
                allClickedPeaks.toArray(new Feature[allClickedPeaks.size()]),
                selectedClickedPeaks.toArray(new Feature[selectedClickedPeaks.size()]), labelsMap,
                scanSelection, mzRange);
    }

    if (show2DItem.equals(src)) {

        final Feature showPeak = getSelectedPeak();
        if (showPeak != null) {

            TwoDVisualizerModule.show2DVisualizerSetupDialog(showPeak.getDataFile(), getPeakMZRange(showPeak),
                    getPeakRTRange(showPeak));
        }
    }

    if (show3DItem.equals(src)) {

        final Feature showPeak = getSelectedPeak();
        if (showPeak != null) {

            ThreeDVisualizerModule.setupNew3DVisualizer(showPeak.getDataFile(), getPeakMZRange(showPeak),
                    getPeakRTRange(showPeak));
        }
    }

    if (manuallyDefineItem.equals(src)) {

        ManualPeakPickerModule.runManualDetection(clickedDataFile, clickedPeakListRow, peakList, table);
    }

    if (showSpectrumItem.equals(src)) {

        final Feature showPeak = getSelectedPeak();
        if (showPeak != null) {

            SpectraVisualizerModule.showNewSpectrumWindow(showPeak.getDataFile(),
                    showPeak.getRepresentativeScanNumber(), showPeak);
        }
    }

    if (showMSMSItem.equals(src)) {

        final Feature showPeak = getSelectedPeak();
        if (showPeak != null) {

            final int scanNumber = showPeak.getMostIntenseFragmentScanNumber();
            if (scanNumber > 0) {
                SpectraVisualizerModule.showNewSpectrumWindow(showPeak.getDataFile(), scanNumber);
            } else {
                MZmineCore.getDesktop().displayMessage(window,
                        "There is no fragment for "
                                + MZmineCore.getConfiguration().getMZFormat().format(showPeak.getMZ())
                                + " m/z in the current raw data.");
            }
        }
    }

    if (showIsotopePatternItem.equals(src)) {

        final Feature showPeak = getSelectedPeak();
        if (showPeak != null && showPeak.getIsotopePattern() != null) {

            SpectraVisualizerModule.showNewSpectrumWindow(showPeak.getDataFile(),
                    showPeak.getRepresentativeScanNumber(), showPeak.getIsotopePattern());
        }
    }

    if (formulaItem != null && formulaItem.equals(src)) {

        FormulaPredictionModule.showSingleRowIdentificationDialog(clickedPeakListRow);
    }

    if (dbSearchItem != null && dbSearchItem.equals(src)) {

        OnlineDBSearchModule.showSingleRowIdentificationDialog(clickedPeakListRow);
    }

    if (nistSearchItem != null && nistSearchItem.equals(src)) {

        NistMsSearchModule.singleRowSearch(peakList, clickedPeakListRow);
    }

    if (addNewRowItem.equals(src)) {

        // find maximum ID and add 1
        int newID = 1;
        for (final PeakListRow row : peakList.getRows()) {
            if (row.getID() >= newID) {
                newID = row.getID() + 1;
            }
        }

        // create a new row
        final PeakListRow newRow = new SimplePeakListRow(newID);
        ManualPeakPickerModule.runManualDetection(peakList.getRawDataFiles(), newRow, peakList, table);

    }

    if (showPeakRowSummaryItem.equals(src)) {

        PeakSummaryVisualizerModule.showNewPeakSummaryWindow(clickedPeakListRow);
    }

    if (exportIsotopesItem.equals(src)) {
        IsotopePatternExportModule.exportIsotopePattern(clickedPeakListRow);
    }

    if (exportMSMSItem.equals(src)) {
        MSMSExportModule.exportMSMS(clickedPeakListRow);
    }

    if (clearIdsItem.equals(src)) {

        // Delete identities of selected rows.
        for (final PeakListRow row : allClickedPeakListRows) {

            // Selected row index.
            for (final PeakIdentity id : row.getPeakIdentities()) {

                // Remove id.
                row.removePeakIdentity(id);
            }
        }

        // Update table GUI.
        updateTableGUI();
    }

    if (copyIdsItem.equals(src) && allClickedPeakListRows.length > 0) {

        final PeakIdentity id = allClickedPeakListRows[0].getPreferredPeakIdentity();
        if (id != null) {

            copiedId = (PeakIdentity) id.clone();
        }
    }

    if (pasteIdsItem.equals(src) && copiedId != null) {

        // Paste identity into selected rows.
        for (final PeakListRow row : allClickedPeakListRows) {

            row.setPreferredPeakIdentity((PeakIdentity) copiedId.clone());
        }

        // Update table GUI.
        updateTableGUI();
    }
}

From source file:edu.mit.streamjit.impl.compiler2.Storage.java

/**
 * Compute this storage's steady-state throughput and capacity.
 * @param externalSchedule the external schedule
 *//*  w  ww . jav a 2 s  .com*/
public void computeSteadyStateRequirements(Map<ActorGroup, Integer> externalSchedule) {
    Range<Integer> readIndices = readIndexSpan(externalSchedule);
    Range<Integer> writeIndices = writeIndexSpan(externalSchedule);
    assert readIndices.isEmpty() == writeIndices.isEmpty() : readIndices + " " + writeIndices;
    //We need to know the count of indices, so we can't just use the span
    //here.  There may be a lot of indices so writeIndices will use a lot of
    //memory.  But we know (assume) there are no overwrites, so we'll count.
    this.throughput = 0;
    for (Actor a : upstream()) {
        int iterations = a.group().schedule().get(a) * externalSchedule.get(a.group());
        for (int output = 0; output < a.outputs().size(); ++output)
            if (a.outputs().get(output).equals(this))
                this.throughput += iterations * a.push(output).max();
    }
    this.steadyStateCapacity = ContiguousSet.create(readIndices.span(writeIndices), DiscreteDomain.integers())
            .size();
}

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 w w w  .  j  av a2  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_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_5.PeakListOpenHandler_2_5.java

/**
 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
 *      java.lang.String, java.lang.String)
 *///from   w w  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_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.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  www. j  ava2  s .  c om*/
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);
    }

}