List of usage examples for com.google.common.collect Range singleton
public static <C extends Comparable<?>> Range<C> singleton(C value)
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"); } }