DataPoint[] getCachedDataPoints(MsScan scan) { if (dpCache == null) dpCache = new HashMap<>(); DataPoint[] dp = dpCache.get(scan); if (dp != null) { return dp; } dp = new DataPoint[scan.getNumberOfDataPoints()]; double mzValues[] = scan.getMzValues(); float intensityValues[] = scan.getIntensityValues(); for (int i = 0; i < scan.getNumberOfDataPoints(); i++) { dp[i] = new DataPoint(mzValues[i], intensityValues[i]); } dpCache.put(scan, dp); return dp; }
final Float rt = scan.getRetentionTime(); if ((rt == null) || (!rtRange.contains(rt))) return null; mzBuffer = scan.getMzValues(); intensityBuffer = scan.getIntensityValues(); numOfDataPoints = scan.getNumberOfDataPoints();
/** * <p> * clone. * </p> * * @param scan a {@link io.github.msdk.datamodel.MsScan} object. * @param copyDataPoints a {@link java.lang.Boolean} object. * @return a {@link io.github.msdk.datamodel.MsScan} object. */ @Nonnull static public SimpleMsScan clone(@Nonnull MsScan scan, @Nonnull Boolean copyDataPoints) { Preconditions.checkNotNull(scan); Preconditions.checkNotNull(copyDataPoints); SimpleMsScan newScan = new SimpleMsScan(scan.getScanNumber(), scan.getMsFunction()); newScan.setPolarity(scan.getPolarity()); newScan.setMsScanType(scan.getMsScanType()); newScan.setScanningRange(scan.getScanningRange()); newScan.setRetentionTime(scan.getRetentionTime()); newScan.setMsLevel(scan.getMsLevel()); newScan.setSourceInducedFragmentation(scan.getSourceInducedFragmentation()); newScan.getIsolations().addAll(scan.getIsolations()); if (copyDataPoints) { double mzValues[] = scan.getMzValues(); float intensityValues[] = scan.getIntensityValues(); newScan.setDataPoints(mzValues, intensityValues, scan.getNumberOfDataPoints()); } return newScan; }
/** * {@inheritDoc} * * @param scan a {@link io.github.msdk.datamodel.MsScan} object. * @return a {@link java.lang.String} object. */ public String msScanToString(@Nonnull MsScan scan) { StringBuilder buf = new StringBuilder(); buf.append("Scan "); final RawDataFile rawDataFile2 = scan.getRawDataFile(); if (rawDataFile2 != null && rawDataFile2.getOriginalFile() != null) { buf.append(rawDataFile2.getOriginalFilename()); buf.append(" "); } if (scan.getMsFunction() != null) { buf.append(scan.getMsFunction()); buf.append(" "); } buf.append("#"); buf.append(scan.getScanNumber()); return buf.toString(); }
xmlStreamWriter.writeStartElement(MzMLTags.TAG_SPECTRUM); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_INDEX, String.valueOf(parsedScans)); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_ID, "scan=" + scan.getScanNumber()); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_DEFAULT_ARRAY_LENGTH, String.valueOf(scan.getNumberOfDataPoints())); && !spectrum.getCVValue(MzMLCV.cvCentroidSpectrum).isPresent() && !spectrum.getCVValue(MzMLCV.cvProfileSpectrum).isPresent())) { if (scan.getSpectrumType() == MsSpectrumType.CENTROIDED) writeCVParam(xmlStreamWriter, MzMLCV.centroidCvParam); else if (scan.getMsLevel() != null) { Integer msLevel = scan.getMsLevel(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvMSLevel, String.valueOf(msLevel), "ms level", null)); if (scan.getTIC() != null) { Float tic = scan.getTIC(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvTIC, String.valueOf(tic), "total ion current", null)); && !spectrum.getCVValue(MzMLCV.cvLowestMz).isPresent() || !spectrum.getCVValue(MzMLCV.cvHighestMz).isPresent())) { if (scan.getMzRange() != null) { Double lowestMz = scan.getMzRange().lowerEndpoint(); Double highestMz = scan.getMzRange().upperEndpoint(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvLowestMz, String.valueOf(lowestMz), "lowest observed m/z", MzMLCV.cvMz));
intensityBuffer = scan.getIntensityValues(); double totalInteisity = 0; for (int i = 0; i < scan.getNumberOfDataPoints(); i++) { totalInteisity = totalInteisity + intensityBuffer[i]; List<IsolationInfo> isolationInfo = scan.getIsolations(); if (isolationInfo.size() < 1) continue; Float scanRt = scan.getRetentionTime();
String msFunction = scan.getMsFunction(); if (msFunction == null || (!msFunction.toLowerCase().contains("srm"))) { parsed++; Double q1 = scan.getIsolations().get(0).getPrecursorMz(); String scanDefinition = scan.getScanDefinition(); Pattern pattern = Pattern.compile("(?<=\\[)(.*)(?=\\])"); Matcher matcher = pattern.matcher(scanDefinition); q1IsolationMzRangeMap.put(q1, scan.getIsolations().get(0).getIsolationMzRange()); q3IsolationMzRangeMap.put(q3, q3IsolationMzRange); Float rt = scan.getRetentionTime(); float intenstiy = scan.getIntensityValues()[0]; // Assume only 1 value buildingChromatogram.addDataPoint(rt, null, intenstiy);
float intensityBuffer[]; Float rt; mzBuffer = scan.getMzValues(); intensityBuffer = scan.getIntensityValues(); rt = scan.getRetentionTime();
mzBuffer = scan.getMzValues(); intensityBuffer = scan.getIntensityValues(); numOfDataPoints = scan.getNumberOfDataPoints(); newNumOfDataPoints = 0; Range<Double> mzRange = scan.getMzRange();
MsScan scan = (MsScan) spectrum; for (IsolationInfo ii : scan.getIsolations()) { Double precursorMz = ii.getPrecursorMz(); if (precursorMz == null) Float rt = scan.getRetentionTime(); if (rt != null) { writer.write("RTINSECONDS=" + rt); writer.newLine(); writer.write("Title=Scan #" + scan.getScanNumber()); writer.newLine();
/** * <p> * getScans. * </p> * * @param rawDataFile a {@link io.github.msdk.datamodel.RawDataFile} object. * @param rtRange a {@link com.google.common.collect.Range} object. * @return a {@link java.util.List} object. */ @Nonnull static public List<MsScan> getScans(RawDataFile rawDataFile, Range<Float> rtRange) { ArrayList<MsScan> msScanList = new ArrayList<MsScan>(); List<MsScan> scans = rawDataFile.getScans(); synchronized (scans) { for (MsScan scan : scans) { Float scanRT = scan.getRetentionTime(); if (scanRT != null) { if (rtRange.contains(scanRT)) msScanList.add(scan); } } } return new ArrayList<MsScan>(); }
if (s.getRetentionTime() == null) continue; if (prevRT == null) { prevRT = s.getRetentionTime(); continue; if (prevRT.compareTo(s.getRetentionTime()) > 0) { final String msg = "Retention time of scan #" + s.getScanNumber() + " is smaller then the retention time of the previous scan." + " Please make sure you only use scans with increasing retention times."; throw new MSDKException(msg); prevRT = s.getRetentionTime(); return null; MzTolerance mzTolerance = scan.getMzTolerance(); if (mzTolerance == null && this.mzTolerance != null) { mzTolerance = this.mzTolerance; } else { throw new MSDKException("Unable to find a m/z tolerance for scan" + scan.getScanNumber());
if (s.getRetentionTime() < prevRT) { final String msg = "Retention time of scan #" + s.getScanNumber() + " is smaller then the retention time of the previous scan." + " Please make sure you only use scans with increasing retention times." throw new MSDKException(msg); prevRT = s.getRetentionTime(); double minRT = scan.getRetentionTime(); double maxRT = scan.getRetentionTime(); retentiontime = new double[totalScans]; int i; for (i = 0; i < totalScans; i++) { scan = scans.get(i); double irt = scan.getRetentionTime(); if (irt < minRT) minRT = irt;
/** * <p> * getScans. * </p> * * @param rawDataFile a {@link io.github.msdk.datamodel.RawDataFile} object. * @param msFunction a {@link io.github.msdk.datamodel.rawdata.MsFunction} object. * @param rtRange a {@link com.google.common.collect.Range} object. * @return a {@link java.util.List} object. */ @Nonnull static public List<MsScan> getScans(RawDataFile rawDataFile, String msFunction, Range<Float> rtRange) { ArrayList<MsScan> msScanList = new ArrayList<MsScan>(); List<MsScan> scans = rawDataFile.getScans(); synchronized (scans) { for (MsScan scan : scans) { Float scanRT = scan.getRetentionTime(); String scanMsFunction = scan.getMsFunction(); if (scanRT == null || scanMsFunction == null) continue; if (scanMsFunction.equals(msFunction) && rtRange.contains(scanRT)) msScanList.add(scan); } } return new ArrayList<MsScan>(); }
/** * Helper method to convert a scan to a sequence of bytes. * * @param scan An object that implements the {@link MsScan} interface. * @return A byte array containing the scan formatted as tab-delimited text. * @throws IOException * * @see TxtExportAlgoirthm.spectrumToWriter() */ private byte[] scanToBytes(MsScan scan) throws IOException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(4 * scan.getNumberOfDataPoints()); OutputStreamWriter writer = new OutputStreamWriter(outputStream); TxtExportAlgorithm.spectrumToWriter(scan, writer, "\t"); writer.close(); outputStream.close(); return outputStream.toByteArray(); } }
new TarArchiveEntry(String.format("scan%05d.txt", scan.getScanNumber())); entry.setSize(bytes.length); entry.setMode(TarArchiveEntry.DEFAULT_FILE_MODE);
/** {@inheritDoc} */ @Override @Nonnull public List<String> getMsFunctions() { ArrayList<String> msFunctionList = new ArrayList<>(); synchronized (msScans) { for (MsScan scan : msScans) { String f = scan.getMsFunction(); if ((f != null) && (!msFunctionList.contains(f))) msFunctionList.add(f); } } return msFunctionList; }
xmlStreamWriter.writeStartElement(MzMLTags.TAG_SPECTRUM); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_INDEX, String.valueOf(parsedScans)); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_ID, "scan=" + scan.getScanNumber()); xmlStreamWriter.writeAttribute(MzMLTags.ATTR_DEFAULT_ARRAY_LENGTH, String.valueOf(scan.getNumberOfDataPoints())); && !spectrum.getCVValue(MzMLCV.cvCentroidSpectrum).isPresent() && !spectrum.getCVValue(MzMLCV.cvProfileSpectrum).isPresent())) { if (scan.getSpectrumType() == MsSpectrumType.CENTROIDED) writeCVParam(xmlStreamWriter, MzMLCV.centroidCvParam); else if (scan.getMsLevel() != null) { Integer msLevel = scan.getMsLevel(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvMSLevel, String.valueOf(msLevel), "ms level", null)); if (scan.getTIC() != null) { Float tic = scan.getTIC(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvTIC, String.valueOf(tic), "total ion current", null)); && !spectrum.getCVValue(MzMLCV.cvLowestMz).isPresent() || !spectrum.getCVValue(MzMLCV.cvHighestMz).isPresent())) { if (scan.getMzRange() != null) { Double lowestMz = scan.getMzRange().lowerEndpoint(); Double highestMz = scan.getMzRange().upperEndpoint(); writeCVParam(xmlStreamWriter, new MzMLCVParam(MzMLCV.cvLowestMz, String.valueOf(lowestMz), "lowest observed m/z", MzMLCV.cvMz));
String msFunction = scan.getMsFunction(); if (msFunction == null || (!msFunction.toLowerCase().contains("srm"))) { parsed++; Double q1 = scan.getIsolations().get(0).getPrecursorMz(); String scanDefinition = scan.getScanDefinition(); Pattern pattern = Pattern.compile("(?<=\\[)(.*)(?=\\])"); Matcher matcher = pattern.matcher(scanDefinition); q1IsolationMzRangeMap.put(q1, scan.getIsolations().get(0).getIsolationMzRange()); q3IsolationMzRangeMap.put(q3, q3IsolationMzRange); Float rt = scan.getRetentionTime(); float intenstiy = scan.getIntensityValues()[0]; // Assume only 1 value buildingChromatogram.addDataPoint(rt, null, intenstiy);
float intensityBuffer[]; Float rt; mzBuffer = scan.getMzValues(); intensityBuffer = scan.getIntensityValues(); rt = scan.getRetentionTime();