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.gapfilling.peakfinder.Gap.java
public void noMoreOffers() { // Check peak that was last constructed if (currentPeakDataPoints != null) { checkCurrentPeak();/*w w w.jav a 2 s . co m*/ 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.msms.MsMsPeakPickingTask.java
public void run() { setStatus(TaskStatus.PROCESSING);//w w w. j a v a 2 s .c om final Scan scans[] = scanSelection.getMatchingScans(dataFile); totalScans = scans.length; for (Scan scan : scans) { if (isCanceled()) return; // Get the MS Scan Scan bestScan = null; Range<Double> rtWindow = Range.closed(scan.getRetentionTime() - (binTime / 2.0), scan.getRetentionTime() + (binTime / 2.0)); Range<Double> mzWindow = Range.closed(scan.getPrecursorMZ() - (binSize / 2.0), scan.getPrecursorMZ() + (binSize / 2.0)); DataPoint point; DataPoint maxPoint = null; int[] regionScanNumbers = dataFile.getScanNumbers(1, rtWindow); for (int regionScanNumber : regionScanNumbers) { Scan regionScan = dataFile.getScan(regionScanNumber); point = ScanUtils.findBasePeak(regionScan, mzWindow); // no datapoint found if (point == null) { continue; } if (maxPoint == null) { maxPoint = point; } int result = Double.compare(maxPoint.getIntensity(), point.getIntensity()); if (result <= 0) { maxPoint = point; bestScan = regionScan; } } // if no representative dataPoint if (bestScan == null) { continue; } assert maxPoint != null; SimpleFeature c = new SimpleFeature(dataFile, scan.getPrecursorMZ(), bestScan.getRetentionTime(), maxPoint.getIntensity(), maxPoint.getIntensity(), new int[] { bestScan.getScanNumber() }, new DataPoint[] { maxPoint }, FeatureStatus.DETECTED, bestScan.getScanNumber(), scan.getScanNumber(), Range.singleton(bestScan.getRetentionTime()), Range.singleton(scan.getPrecursorMZ()), Range.singleton(maxPoint.getIntensity())); PeakListRow entry = new SimplePeakListRow(scan.getScanNumber()); entry.addPeak(dataFile, c); newPeakList.addRow(entry); processedScans++; } project.addPeakList(newPeakList); // Add quality parameters to peaks QualityParameters.calculateQualityParameters(newPeakList); logger.info("Finished MS/MS peak builder on " + dataFile + ", " + processedScans + " scans processed"); setStatus(TaskStatus.FINISHED); }
From source file:io.github.msdk.featdet.srmdetection.SrmDetectionMethod.java
/** {@inheritDoc} */ @Override//ww w .j a va2s. c o m public List<Chromatogram> execute() throws MSDKException { logger.info("Started Srm chromatogram builder on file " + rawDataFile.getName()); // Chromatograms List<Chromatogram> chromatograms = rawDataFile.getChromatograms(); total += chromatograms.size(); // Scans List<MsScan> scans = rawDataFile.getScans(); total += scans.size(); // Check if we have any chomatograms or scans if (total == 0) { throw new MSDKException("No chromatograms or scans provided for SRM detection method"); } // Iterate over all chromatograms for (Chromatogram chromatogram : chromatograms) { // Canceled if (canceled) return null; // Ignore non SRM chromatograms if (chromatogram.getChromatogramType() != ChromatogramType.MRM_SRM) { parsed++; continue; } // Add the SRM chromatogram to the list result.add(chromatogram); parsed++; } // Iterate over all scans Map<String, BuildingChromatogram> chromatogramMap = new HashMap<String, BuildingChromatogram>(); Map<Double, Range<Double>> q1IsolationMzRangeMap = new HashMap<Double, Range<Double>>(); Map<Double, Range<Double>> q3IsolationMzRangeMap = new HashMap<Double, Range<Double>>(); for (MsScan scan : scans) { // Canceled if (canceled) return null; // Ignore non SRM scans MsFunction msFunction = scan.getMsFunction(); if (!msFunction.getName().equals("srm")) { parsed++; continue; } // Q1 data Double q1 = scan.getIsolations().get(0).getPrecursorMz(); // Q3 data /* * TODO: This is a workaround for issue # 123: * https://github.com/msdk/msdk/issues/127 */ String scanDefinition = scan.getScanDefinition(); Pattern pattern = Pattern.compile("(?<=\\[)(.*)(?=\\])"); Matcher matcher = pattern.matcher(scanDefinition); Double q3 = 1d; Range<Double> q3IsolationMzRange = Range.singleton(q3); if (matcher.find()) { String str = matcher.group(0); String[] mzValues = str.split("-"); double mz1 = Double.parseDouble(mzValues[0]); double mz2 = Double.parseDouble(mzValues[1]); q3 = (mz1 + mz2) / 2; q3IsolationMzRange = Range.closed(mz1, mz2); } // Get the chromatogram for the Q1 and Q3 value or generate a new BuildingChromatogram buildingChromatogram = chromatogramMap.get(q1 + ";" + q3); if (buildingChromatogram == null) { buildingChromatogram = new BuildingChromatogram(); chromatogramMap.put(q1 + ";" + q3, buildingChromatogram); // Store the mz isolation range for the q1 and q3 values q1IsolationMzRangeMap.put(q1, scan.getIsolations().get(0).getIsolationMzRange()); q3IsolationMzRangeMap.put(q3, q3IsolationMzRange); } // Add the new data point ChromatographyInfo rt = scan.getChromatographyInfo(); float intenstiy = scan.getIntensityValues()[0]; // Assume only 1 // value buildingChromatogram.addDataPoint(rt, 0d, intenstiy); parsed++; } // Add the newly generated chromatograms to the result list int chromatogramNumber = 1; Iterator<Map.Entry<String, BuildingChromatogram>> iterator = chromatogramMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, BuildingChromatogram> entry = iterator.next(); String q1q3 = entry.getKey(); BuildingChromatogram buildingChromatogram = entry.getValue(); // Create the final chromatogram Chromatogram chromatogram = MSDKObjectBuilder.getChromatogram(dataStore, chromatogramNumber, ChromatogramType.MRM_SRM, SeparationType.UNKNOWN); // Add the data points to the final chromatogram ChromatographyInfo[] rtValues = buildingChromatogram.getRtValues(); double[] mzValues = buildingChromatogram.getMzValues(); float[] intensityValues = buildingChromatogram.getIntensityValues(); int size = buildingChromatogram.getSize(); chromatogram.setDataPoints(rtValues, mzValues, intensityValues, size); // Set the Q1 and Q3 values to the isolations for the chromatogram String[] strs = q1q3.split(";"); double q1 = Double.parseDouble(strs[0]); double q3 = Double.parseDouble(strs[1]); List<IsolationInfo> isolations = chromatogram.getIsolations(); IsolationInfo isolationInfo = MSDKObjectBuilder.getIsolationInfo(q1IsolationMzRangeMap.get(q1), null, q1, null, null); isolations.add(isolationInfo); isolationInfo = MSDKObjectBuilder.getIsolationInfo(q3IsolationMzRangeMap.get(q3), null, q3, null, null); isolations.add(isolationInfo); // Add the chromatogram result.add(chromatogram); chromatogramNumber++; iterator.remove(); } return result; }
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();// w w w . j a va 2 s . co m 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.datamodel.impl.SimpleScan.java
/** * @param mzValues//from w ww .j a va 2s. c om * m/z values to set * @param intensityValues * Intensity values to set */ public void setDataPoints(DataPoint[] dataPoints) { this.dataPoints = dataPoints; mzRange = Range.singleton(0.0); basePeak = null; totalIonCurrent = 0; // find m/z range and base peak if (dataPoints.length > 0) { basePeak = dataPoints[0]; mzRange = Range.singleton(dataPoints[0].getMZ()); for (DataPoint dp : dataPoints) { if (dp.getIntensity() > basePeak.getIntensity()) basePeak = dp; mzRange = mzRange.span(Range.singleton(dp.getMZ())); totalIonCurrent += dp.getIntensity(); } } }
From source file:edu.cmu.lti.oaqa.framework.eval.passage.PassageMAPEvalAggregator.java
private float getAvgPsg2MAP(List<Passage> docs, List<Passage> gs) { if (gs.size() == 0) { return 0; }//from w w w . j a v a 2 s.c o m Map<String, RangeSet<Integer>> gsId2Spans = Maps.newHashMap(); Map<String, RangeSet<Integer>> trackGsId2Spans = Maps.newHashMap(); for (Passage g : gs) { String id = g.getUri(); if (!gsId2Spans.containsKey(id)) { gsId2Spans.put(id, TreeRangeSet.<Integer>create()); trackGsId2Spans.put(id, TreeRangeSet.<Integer>create()); } gsId2Spans.get(g.getUri()).add(Range.closedOpen(g.getBegin(), g.getEnd())); trackGsId2Spans.get(g.getUri()).add(Range.closedOpen(g.getBegin(), g.getEnd())); } int totalChars = 0; int overlapLength = 0; float sumPrecision = 0; for (Passage doc : docs) { Range<Integer> docRange = Range.closedOpen(doc.getBegin(), doc.getEnd()); String docId = doc.getUri(); if (!gsId2Spans.containsKey(docId) || gsId2Spans.get(docId).encloses(docRange)) { totalChars += docRange.upperEndpoint() - docRange.lowerEndpoint(); continue; } for (int offset = docRange.lowerEndpoint(); offset < docRange.upperEndpoint(); offset++) { if (gsId2Spans.containsKey(docId) && gsId2Spans.get(docId).contains(offset)) { if (trackGsId2Spans.get(docId).contains(offset)) { trackGsId2Spans.get(docId).remove(Range.singleton(offset)); // +1 totalChars++; overlapLength++; sumPrecision += (float) overlapLength / (float) totalChars; } } else { // -1 totalChars++; } } } int count = 0; for (RangeSet<Integer> spans : gsId2Spans.values()) { for (Range<Integer> span : spans.asRanges()) { count += span.upperEndpoint() - span.lowerEndpoint(); } } return (float) sumPrecision / (float) count; }
From source file:net.sf.mzmine.modules.peaklistmethods.io.casmiimport.CasmiImportTask.java
public void run() { setStatus(TaskStatus.PROCESSING);// ww w . j a v a2 s . c o m logger.finest("Generating data for CASMI problem " + casmiProblemName); try { final DataPoint[] msSpectrumDataPoints = convertTextSpectrumToDataPoints(msSpectrum); final DataPoint[] msMsSpectrumDataPoints = convertTextSpectrumToDataPoints(msMsSpectrum); assert msSpectrumDataPoints.length > 0; assert msMsSpectrumDataPoints.length > 0; final DataPoint firstDataPoint = msSpectrumDataPoints[0]; final int msScanNumber = 1; final int msMsScanNumber = 2; // Generate the raw data file RawDataFileWriter dataFileWriter; dataFileWriter = MZmineCore.createNewFile(casmiProblemName + " raw data"); double precursorMz = firstDataPoint.getMZ(); Scan msScan = new SimpleScan(null, msScanNumber, 1, 1.0, 0, 0, new int[] { 2 }, msSpectrumDataPoints, MassSpectrumType.CENTROIDED, polarity, "", null); Scan msMsScan = new SimpleScan(null, msMsScanNumber, 2, 1.1, precursorMz, 1, null, msMsSpectrumDataPoints, MassSpectrumType.CENTROIDED, polarity, "", null); dataFileWriter.addScan(msScan); dataFileWriter.addScan(msMsScan); newDataFile = dataFileWriter.finishWriting(); // Add mass lists to scans Scan finalMsScan = newDataFile.getScan(msScanNumber); final MassList msScanMassList = new SimpleMassList("CASMI", finalMsScan, msSpectrumDataPoints); finalMsScan.addMassList(msScanMassList); Scan finalMsMsScan = newDataFile.getScan(msMsScanNumber); final MassList msMsScanMassList = new SimpleMassList("CASMI", finalMsMsScan, msMsSpectrumDataPoints); finalMsMsScan.addMassList(msMsScanMassList); // Generate the peak double mz = firstDataPoint.getMZ(); double rt = msScan.getRetentionTime(); double height = firstDataPoint.getIntensity(); double area = firstDataPoint.getIntensity(); int scanNumbers[] = new int[] { 1 }; DataPoint dataPointsPerScan[] = new DataPoint[] { firstDataPoint }; Range<Double> mzRange = ScanUtils.findMzRange(msSpectrumDataPoints); Range<Double> rtRange = Range.singleton(msScan.getRetentionTime()); Range<Double> intensityRange = Range.closed(0.0, firstDataPoint.getIntensity()); Feature newPeak = new SimpleFeature(newDataFile, mz, rt, height, area, scanNumbers, dataPointsPerScan, FeatureStatus.MANUAL, msScanNumber, msMsScanNumber, rtRange, mzRange, intensityRange); // Generate the isotope pattern IsotopePattern isotopePat = new SimpleIsotopePattern(msSpectrumDataPoints, IsotopePatternStatus.DETECTED, casmiProblemName + " isotopes"); newPeak.setIsotopePattern(isotopePat); // Generate the peak list row PeakListRow newRow = new SimplePeakListRow(1); newRow.addPeak(newDataFile, newPeak); // Generate the final peak list newPeakList = new SimplePeakList(casmiProblemName + " peak list", newDataFile); newPeakList.addRow(newRow); project.addFile(newDataFile); project.addPeakList(newPeakList); logger.finest("Finished generating data for CASMI problem " + casmiProblemName); } catch (IOException e) { e.printStackTrace(); setStatus(TaskStatus.ERROR); setErrorMessage(e.getMessage()); } setStatus(TaskStatus.FINISHED); }
From source file:net.sf.mzmine.datamodel.impl.SimplePeakList.java
public void addRow(PeakListRow row) { List<RawDataFile> myFiles = Arrays.asList(this.getRawDataFiles()); for (RawDataFile testFile : row.getRawDataFiles()) { if (!myFiles.contains(testFile)) throw (new IllegalArgumentException("Data file " + testFile + " is not in this peak list")); }// w w w . j a va 2 s .c o m peakListRows.add(row); if (row.getDataPointMaxIntensity() > maxDataPointIntensity) { maxDataPointIntensity = row.getDataPointMaxIntensity(); } if (mzRange == null) { mzRange = Range.singleton(row.getAverageMZ()); rtRange = Range.singleton(row.getAverageRT()); } else { mzRange = mzRange.span(Range.singleton(row.getAverageMZ())); rtRange = rtRange.span(Range.singleton(row.getAverageRT())); } }
From source file:net.hydromatic.foodbench.Main.java
private static RangeSet<Integer> parseInts(String idsProperty) { RangeSet<Integer> idSet = TreeRangeSet.create(); if (idsProperty == null) { idsProperty = ""; }/*from www . ja v a2 s. c o m*/ if (idsProperty.isEmpty() || idsProperty.startsWith("-")) { idSet.add(Range.<Integer>all()); } if (!idsProperty.isEmpty()) { for (String id : idsProperty.split(",")) { String[] split2 = id.split("-"); if (split2.length != 2) { if (id.endsWith("-")) { // 10- means "10 onwards" idSet.add(Range.atLeast(Integer.parseInt(id.substring(0, id.length() - 1)))); } else { idSet.add(Range.singleton(Integer.parseInt(id))); } } else if (split2[0].equals("")) { // -10 means "not 10" idSet.remove(Range.singleton(Integer.parseInt(split2[1]))); } else { int min = Integer.parseInt(split2[0]); int max = Integer.parseInt(split2[1]); idSet.add(Range.closed(min, max)); } } } return idSet; }
From source file:org.apache.druid.query.filter.SelectorDimFilter.java
@Override public RangeSet<String> getDimensionRangeSet(String dimension) { if (!Objects.equals(getDimension(), dimension) || getExtractionFn() != null) { return null; }/*from ww w . j a v a2 s .com*/ RangeSet<String> retSet = TreeRangeSet.create(); String valueEquivalent = NullHandling.nullToEmptyIfNeeded(value); if (valueEquivalent == null) { // Case when SQL compatible null handling is enabled // Nulls are less than empty String in segments retSet.add(Range.lessThan("")); } else { retSet.add(Range.singleton(valueEquivalent)); } return retSet; }