List of usage examples for com.google.common.collect Range span
public Range<C> span(Range<C> other)
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); } }