Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        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>());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 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);
 }