private void AddToCache(int timePoint) { BinaryData xValues = new BinaryData(); BinaryData yValues = new BinaryData(); for (int i = 0; i < XYDataHelper.XValueTestSet1.Length; i++) { xValues.Add(XYDataHelper.XValueTestSet1[i]); yValues.Add(XYDataHelper.YValueTestSet1[i]); } cache.Add(timePoint, new BinarySpectrum(1.5, xValues, yValues)); }
public Domain.ISpectrum GetSpectrum(int timePoint, TimeUnit timeUnits, double mzLower, double mzUpper) { if (spectrumCache.IsInCache(timePoint)) { Domain.ISpectrum spectrum = spectrumCache.Read(timePoint); if (mzLower == 0 && mzUpper == double.MaxValue) { return spectrum; } else { IList<double> xVals = spectrum.XValues; IList<double> yVals = spectrum.YValues; BinaryData xValues = new BinaryData(); BinaryData yValues = new BinaryData(); for (int i = 0; i < xVals.Count; i++) { if (xVals[i] >= mzLower && xVals[i] <= mzUpper) { xValues.Add(xVals[i]); yValues.Add(yVals[i]); } } return new BinarySpectrum(spectrum.StartRT, xValues, yValues); } } else { pwiz.CLI.msdata.Spectrum spectrumFromFile = run.spectrumList.spectrum(timePoint, true); string level = (string)spectrumFromFile.cvParam(pwiz.CLI.CVID.MS_ms_level).value; if (level == "1") { double rt = RtToTimePointConverter.CalculateRT(spectrumFromFile, timeUnits); BinaryDataArray mzArray = spectrumFromFile.getMZArray(); BinaryDataArray intensityArray = spectrumFromFile.getIntensityArray(); BinaryData mzData = mzArray.data; BinaryData intensityData = intensityArray.data; int totalDataPoints = mzData.Count; AddSpectrumToCacheIfNotPresent(timePoint, new BinarySpectrum(rt, mzData, intensityData)); return FilterMassList(rt, mzData, intensityData, mzLower, mzUpper); } } return new Domain.Spectrum(0, new List<XYPoint>()); }
public override Spectrum spectrum(int index, bool getBinaryData) { Spectrum s = base.spectrum(index, true); if (s.cvParam(CVID.MS_MSn_spectrum).empty() || (int)s.cvParam(CVID.MS_ms_level).value == 1) { if (!getBinaryData) { s.binaryDataArrays.Clear(); } return(s); } PrecursorList pl = s.precursors; BinaryData mzArray = s.getMZArray().data; BinaryData intensityArray = s.getIntensityArray().data; PointDataMap <double> mziMap = new PointDataMap <double>(); for (int i = 0; i < (int)s.defaultArrayLength; ++i) { mziMap.Insert(mzArray[i], intensityArray[i]); } Set <double> pointsToRemove = new Set <double>(); foreach (Precursor p in pl) { foreach (SelectedIon si in p.selectedIons) { double mz = (double)si.cvParam(CVID.MS_selected_ion_m_z).value; PointDataMap <double> .Enumerator itr = mziMap.LowerBound(mz - 4.0); if (itr != null && itr.IsValid) { while (itr.IsValid && itr.Current.Key - mz < 4.0) { pointsToRemove.Add(itr.Current.Key); itr.MoveNext(); } } CVParam chargeParam = si.cvParam(CVID.MS_charge_state); if (!chargeParam.empty()) { int z = (int)chargeParam.value; for (int i = 1; i < z; ++i) { double strippedMz = (mz * z) / (z - i); itr = mziMap.LowerBound(strippedMz - 4.0); if (itr != null && itr.IsValid) { while (itr.IsValid && itr.Current.Key - strippedMz < 4.0) { pointsToRemove.Add(itr.Current.Key); itr.MoveNext(); } } } } } } if (getBinaryData) { mzArray.Clear(); intensityArray.Clear(); foreach (PointDataMap <double> .MapPair pair in mziMap) { if (pointsToRemove.Contains(pair.Key)) { continue; } mzArray.Add(pair.Key); intensityArray.Add(pair.Value); } s.defaultArrayLength = (ulong)mzArray.Count; } else { s.binaryDataArrays.Clear(); s.defaultArrayLength -= (ulong)pointsToRemove.Count; } return(s); }
private IXYData ExtractTicByManuallyLookingAtEachSpectrumInTheFile(TimeUnit timeUnits) { if (ticCache.IsInCache()) { return ticCache.Read(); } else { BinaryData xVals = new BinaryData(); BinaryData yVals = new BinaryData(); pwiz.CLI.msdata.SpectrumList spectrumList = run.spectrumList; int timePoints = spectrumList.size(); for (int i = 0; i < timePoints; i++) { pwiz.CLI.msdata.Spectrum s = spectrumList.spectrum(i); Scan scan = null; if (s.scanList.scans.Count > 0) { scan = s.scanList.scans[0]; } CVParam param; param = s.cvParam(pwiz.CLI.CVID.MS_ms_level); int msLevel = !param.empty() ? (int)param.value : 0; if (msLevel <= 1) { param = scan != null ? scan.cvParam(pwiz.CLI.CVID.MS_scan_start_time) : new CVParam(); double scanTime = !param.empty() ? (double)param.value : 0; // TODO: Duplicated with CalculateRT, reuse RtToTimePointConverter. if (timeUnits == TimeUnit.Seconds) { xVals.Add(scanTime / 60); } param = s.cvParam(pwiz.CLI.CVID.MS_total_ion_current); yVals.Add(!param.empty() ? (double)param.value : 0); } } IXYData tic = new XYBinaryData(xVals, yVals); ticCache.Set(tic); return tic; } }
private IXYData ExtractTicNativelyFromFile() { Chromatogram chromatogram = run.chromatogramList.chromatogram(0, true); IList<double> xVals = chromatogram.binaryDataArrays[0].data; IList<double> yVals = chromatogram.binaryDataArrays[1].data; BinaryData xValues = new BinaryData(); BinaryData yValues = new BinaryData(); for (int i = 0; i < xVals.Count; i++) { xValues.Add(xVals[i]); yValues.Add(yVals[i]); } return new XYBinaryData(xValues, yValues); }
private BinarySpectrum FilterMassList(double rt, IList<double> mzData, IList<double> intensityData, double mzLower, double mzUpper) { BinaryData filteredMzData = new BinaryData(); BinaryData filteredIntensityData = new BinaryData(); if (mzLower != 0 && mzUpper != double.MaxValue) { for (int i = 0; i < mzData.Count; i++) { if (mzData[i] >= mzLower && mzData[i] <= mzUpper) { filteredMzData.Add(mzData[i]); filteredIntensityData.Add(intensityData[i]); } } } else { return new BinarySpectrum(rt, mzData as BinaryData, intensityData as BinaryData); } return new BinarySpectrum(rt, filteredMzData, filteredIntensityData); }