Package net.sf.mzmine.util

Examples of net.sf.mzmine.util.Range


      // Add peaks.
      double progressInc = 1.0 / (double) peaks.length;
      for (final ChromatographicPeak peak : peaks) {

        // Get peak data.
        Range rtRange = null;
        Range 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 range.
            final double rt = scan.getRetentionTime();
            if (rtRange == null) {

              rtRange = new Range(rt);
            } else {

              rtRange.extendRange(rt);
            }

            // Update intensity range.
            if (intRange == null) {
              intRange = new Range(intensity);
            } else {
              intRange.extendRange(intensity);
            }
          }
        }

        // Set peak values.
        final double area = peak.getArea();
        final double maxo = intRange == null
            ? peak.getHeight()
            : intRange.getMax();
        final double rtMin = (rtRange == null ? peak
            .getRawDataPointsRTRange() : rtRange).getMin();
        final double rtMax = (rtRange == null ? peak
            .getRawDataPointsRTRange() : rtRange).getMax();
View Full Code Here


  public Range getToleranceRange(final double rtValue) {

    final double absoluteTolerance = isAbsolute ? tolerance : rtValue
        * tolerance;
    return new Range(rtValue - absoluteTolerance, rtValue
        + absoluteTolerance);
  }
View Full Code Here

    // Get parameters.
    final double minimumPeakHeight = parameters.getParameter(
        MIN_PEAK_HEIGHT).getValue();
    final double baselineLevel = parameters.getParameter(BASELINE_LEVEL)
        .getValue();
    final Range durationRange = parameters.getParameter(PEAK_DURATION)
        .getValue();

    final List<ResolvedPeak> resolvedPeaks = new ArrayList<ResolvedPeak>(2);

    // Current region is a region of consecutive scans which all have
    // intensity above baseline level.
    final int scanCount = scanNumbers.length;
    for (int currentRegionStart = 0; currentRegionStart < scanCount; currentRegionStart++) {

      // Find a start of the region.
      final DataPoint startPeak = chromatogram
          .getDataPoint(scanNumbers[currentRegionStart]);
      if (startPeak != null && startPeak.getIntensity() >= baselineLevel) {

        double currentRegionHeight = startPeak.getIntensity();

        // Search for end of the region
        int currentRegionEnd;
        for (currentRegionEnd = currentRegionStart + 1; currentRegionEnd < scanCount; currentRegionEnd++) {

          final DataPoint endPeak = chromatogram
              .getDataPoint(scanNumbers[currentRegionEnd]);
          if (endPeak == null
              || endPeak.getIntensity() < baselineLevel) {

            break;
          }

          currentRegionHeight = Math.max(currentRegionHeight,
              endPeak.getIntensity());
        }

        // Subtract one index, so the end index points at the last data
        // point of current region.
        currentRegionEnd--;

        // Check current region, if it makes a good peak.
        if (durationRange.contains(retentionTimes[currentRegionEnd]
            - retentionTimes[currentRegionStart])
            && currentRegionHeight >= minimumPeakHeight) {

          // Create a new ResolvedPeak and add it.
          resolvedPeaks.add(new ResolvedPeak(chromatogram,
View Full Code Here

  public void actionPerformed(ActionEvent event) {

    Object src = event.getSource();

    if (src == setAutoButton) {
      Range mzRange = null;
      RawDataFile currentFiles[] = MZmineCore.getCurrentProject()
          .getDataFiles();
      for (RawDataFile file : currentFiles) {
        Range fileRange = file.getDataMZRange(1);
        if (fileRange == null)
          continue;
        if (mzRange == null)
          mzRange = fileRange;
        else
          mzRange.extendRange(fileRange);
      }
      if (mzRange != null)
        setValue(mzRange);
    }

    if (src == fromFormulaButton) {
      Range mzRange = MzRangeCalculatorModule
          .showRangeCalculationDialog();
      if (mzRange != null)
        setValue(mzRange);
    }
View Full Code Here

    return Math.max(ppmTolerance, mzTolerance / (mzValue / MILLION));
  }

  public Range getToleranceRange(final double mzValue) {
    final double absoluteTolerance = getMzToleranceForMass(mzValue);
    return new Range(mzValue - absoluteTolerance, mzValue
        + absoluteTolerance);
  }
View Full Code Here

    return new Range(mzValue - absoluteTolerance, mzValue
        + absoluteTolerance);
  }

  public Range getToleranceRange(final Range mzRange) {
    return new Range(mzRange.getMin()
        - getMzToleranceForMass(mzRange.getMin()), mzRange.getMax()
        + getMzToleranceForMass(mzRange.getMax()));
  }
View Full Code Here

    final int scanCount = scanNumbers.length;
    final int lastScan = scanCount - 1;

    assert scanCount > 0;

    final Range peakDuration = parameters.getParameter(PEAK_DURATION)
        .getValue();
    final double searchRTRange = parameters.getParameter(SEARCH_RT_RANGE)
        .getValue();
    final double minRatio = parameters.getParameter(MIN_RATIO).getValue();
    final double minHeight = Math.max(
        parameters.getParameter(MIN_ABSOLUTE_HEIGHT).getValue(),
        parameters.getParameter(MIN_RELATIVE_HEIGHT).getValue()
            * chromatogram.getHeight());

    final List<ResolvedPeak> resolvedPeaks = new ArrayList<ResolvedPeak>(2);

    // First, remove all data points below chromatographic threshold.
    final double chromatographicThresholdLevel = MathUtils.calcQuantile(
        intensities,
        parameters.getParameter(CHROMATOGRAPHIC_THRESHOLD_LEVEL)
            .getValue());
    for (int i = 0; i < intensities.length; i++) {

      if (intensities[i] < chromatographicThresholdLevel) {

        intensities[i] = 0.0;
      }
    }

    // Current region is a region between two minima, representing a
    // candidate for a resolved peak.
    startSearch : for (int currentRegionStart = 0; currentRegionStart < lastScan - 2; currentRegionStart++) {

      // Find at least two consecutive non-zero data points
      if (intensities[currentRegionStart] != 0.0
          && intensities[currentRegionStart + 1] != 0.0) {

        double currentRegionHeight = intensities[currentRegionStart];

        endSearch : for (int currentRegionEnd = currentRegionStart + 1; currentRegionEnd < scanCount; currentRegionEnd++) {

          // Update height of current region.
          currentRegionHeight = Math.max(currentRegionHeight,
              intensities[currentRegionEnd]);

          // If we reached the end, or if the next intensity is 0, we
          // have to stop here.
          if (currentRegionEnd == lastScan
              || intensities[currentRegionEnd + 1] == 0.0) {

            // Find the intensity at the sides (lowest data points).
            final double peakMinLeft = intensities[currentRegionStart];
            final double peakMinRight = intensities[currentRegionEnd];

            // Check the shape of the peak.
            if (currentRegionHeight >= minHeight
                && currentRegionHeight >= peakMinLeft
                    * minRatio
                && currentRegionHeight >= peakMinRight
                    * minRatio
                && peakDuration
                    .contains(retentionTimes[currentRegionEnd]
                        - retentionTimes[currentRegionStart])) {

              resolvedPeaks.add(new ResolvedPeak(chromatogram,
                  currentRegionStart, currentRegionEnd));
            }

            // Set the next region start to current region end - 1
            // because it will be immediately
            // increased +1 as we continue the for-cycle.
            currentRegionStart = currentRegionEnd - 1;
            continue startSearch;
          }

          // Minimum duration of peak must be at least searchRTRange.
          if (retentionTimes[currentRegionEnd]
              - retentionTimes[currentRegionStart] >= searchRTRange) {

            // Set the RT range to check
            final Range checkRange = new Range(
                retentionTimes[currentRegionEnd]
                    - searchRTRange,
                retentionTimes[currentRegionEnd]
                    + searchRTRange);

            // Search if there is lower data point on the left from
            // current peak i.
            for (int i = currentRegionEnd - 1; i > 0
                && checkRange.contains(retentionTimes[i]); i--) {

              if (intensities[i] < intensities[currentRegionEnd]) {

                continue endSearch;
              }
            }

            // Search on the right from current peak i.
            for (int i = currentRegionEnd + 1; i < scanCount
                && checkRange.contains(retentionTimes[i]); i++) {

              if (intensities[i] < intensities[currentRegionEnd]) {

                continue endSearch;
              }
View Full Code Here

              final RawDataFile dataFile = peak.getDataFile();
              final DataPoint[] newDataPoints = new DataPoint[numScans];
              double maxIntensity = 0.0;
              int maxScanNumber = -1;
              DataPoint maxDataPoint = null;
              Range intensityRange = null;
              double area = 0.0;
              for (int i = 0; i < numScans; i++) {

                final int scanNumber = scanNumbers[i];
                final DataPoint dataPoint = peak
                    .getDataPoint(scanNumber);
                final double intensity = smoothed[i];
                if (dataPoint != null && intensity > 0.0) {

                  // Create a new data point.
                  final double mz = dataPoint.getMZ();
                  final double rt = dataFile.getScan(
                      scanNumber).getRetentionTime();
                  final DataPoint newDataPoint = new SimpleDataPoint(
                      mz, intensity);
                  newDataPoints[i] = newDataPoint;

                  // Track maximum intensity data point.
                  if (intensity > maxIntensity) {

                    maxIntensity = intensity;
                    maxScanNumber = scanNumber;
                    maxDataPoint = newDataPoint;
                  }

                  // Update ranges.
                  if (intensityRange == null) {
                    intensityRange = new Range(intensity);
                  } else {
                    intensityRange.extendRange(intensity);
                  }

                  // Accumulate peak area.
                  if (i != 0) {

                    final DataPoint lastDP = newDataPoints[i - 1];
                    final double lastIntensity = lastDP == null
                        ? 0.0
                        : lastDP.getIntensity();
                    final double lastRT = dataFile.getScan(
                        scanNumbers[i - 1])
                        .getRetentionTime();
                    area += (rt - lastRT)
                        * (intensity + lastIntensity)
                        / 2.0;
                  }
                }
              }

              assert maxDataPoint != null;

              if (!isCanceled() && maxScanNumber >= 0) {

                // Create a new peak.
                newRow.addPeak(
                    dataFile,
                    new SimpleChromatographicPeak(
                        dataFile,
                        maxDataPoint.getMZ(),
                        peak.getRT(),
                        maxIntensity,
                        area,
                        scanNumbers,
                        newDataPoints,
                        peak.getPeakStatus(),
                        maxScanNumber,
                        peak.getMostIntenseFragmentScanNumber(),
                        new Range(
                            peak.getRawDataPointsRTRange()),
                        new Range(
                            peak.getRawDataPointsMZRange()),
                        intensityRange));
              }
            }
          }
View Full Code Here

  private static final String massBankEntryAddress = "http://www.massbank.jp/jsp/FwdRecord.jsp?id=";

  public String[] findCompounds(double mass, MZTolerance mzTolerance,
      int numOfResults, ParameterSet parameters) throws IOException {

    Range toleranceRange = mzTolerance.getToleranceRange(mass);

    StringBuilder queryAddress = new StringBuilder(massBankSearchAddress);

    for (String inst : instrumentTypes) {
      queryAddress.append("&inst=");
      queryAddress.append(inst);
    }

    queryAddress.append("&mz=");
    queryAddress.append(toleranceRange.getAverage());
    queryAddress.append("&tol=");
    queryAddress.append(toleranceRange.getSize() / 2);

    URL queryURL = new URL(queryAddress.toString());

    // Submit the query
    String queryResult = InetUtils.retrieveData(queryURL);
View Full Code Here

      ParameterSet parameters) throws IOException {

    LOG.finest("Searching by mass...");

    // Get search range
    final Range mzRange = mzTolerance.getToleranceRange(mass);

    // These are returned in #CSID (numerical) order.
    final String[] results = createMassSpecAPI().searchByMass2(
        mzRange.getAverage(), mzRange.getSize() / 2.0);

    // Copy results.
    final int len = Math.min(numOfResults, results.length);
    final String[] ids = new String[len];
    System.arraycopy(results, 0, ids, 0, len);
View Full Code Here

TOP

Related Classes of net.sf.mzmine.util.Range

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.