Example #1
0
        public void GetChromatograms(List <Protein> targets, double tolerance)
        {
            MsDataSpectrum defaultSpectrum = new MsDataSpectrum();

            MsDataSpectrum[] msDataSpectrums = new MsDataSpectrum[1];
            msDataSpectrums[0] = defaultSpectrum;
            _chromatograms     = new List <Chromatogram>();
            var Channels = (from spectrum in _msDataFileImpl.MsDataSpectrums
                            group spectrum by spectrum.PrecursorMZ into spectrumgroup
                            select new { ChannelMS1 = spectrumgroup.Key, ChannelSpectrums = spectrumgroup }).ToDictionary(di => di.ChannelMS1, di => di.ChannelSpectrums);
            var Proteins = targets;
            var Targets  = from protein in Proteins
                           from peptide in protein.Peptides
                           from precursor in peptide.Precursors
                           select new
            {
                ProteinName      = protein.Name,
                PeptideName      = peptide.Name,
                PrecursorIsoform = precursor.IsotopeLabelType,
                PrecursorMZ      = precursor.PrecursorMZ,
                Products         = precursor.Products
            };

            foreach (var Target in Targets)
            {
                var SpectrumsForChannel = from channel in Channels
                                          where ProcessRawDataTools.InMZTolerance(channel.Key, Target.PrecursorMZ, tolerance) == true
                                          select channel.Value;
                if (SpectrumsForChannel.Any())
                {
                    var ExtraChromatograms = from mzspectrum in SpectrumsForChannel.Single()
                                             select new
                    {
                        mzspectrum.PrecursorMZ,
                        mzspectrum.RetentionTime,
                        mzspectrum.IonIT,
                        mzspectrum.TIC,
                        SumOfIntensities   = mzspectrum.Intensities.Sum(),
                        SumOfPositiveMatch = ProcessRawDataTools.AggIonCounts(mzspectrum.Mzs, mzspectrum.Intensities, Target.Products, tolerance)[0],
                        SumOfNegativeMatch = ProcessRawDataTools.AggIonCounts(mzspectrum.Mzs, mzspectrum.Intensities, Target.Products, tolerance)[1]
                    };
                    _chromatograms.Add(new Chromatogram()
                    {
                        Protein            = Target.ProteinName,
                        Peptide            = Target.ProteinName,
                        IsotopeLabelType   = Target.PrecursorIsoform,
                        PrecursorMZ        = Target.PrecursorMZ,
                        RetentionTimes     = ExtraChromatograms.Select(ec => ec.RetentionTime.GetValueOrDefault(0)).ToArray(),
                        IonInjectionTimes  = ExtraChromatograms.Select(ec => ec.IonIT.GetValueOrDefault(0)).ToArray(),
                        SumOfIntensities   = ExtraChromatograms.Select(ec => ec.SumOfIntensities).ToArray(),
                        SumOfPositiveMatch = ExtraChromatograms.Select(ec => ec.SumOfPositiveMatch).ToArray(),
                        SumOfNegativeMatch = ExtraChromatograms.Select(ec => ec.SumOfNegativeMatch).ToArray()
                    });
                }
            }
        }
Example #2
0
        public void GetChromatograms(double tolerance)
        {
            _chromatograms = new List <Chromatogram>();
            var Channels = from spectrum in _msDataFileImpl.MsDataSpectrums
                           group spectrum by spectrum.PrecursorMZ into spectrumgroup
                           select new { ChannelMS1 = spectrumgroup.Key, ChannelSpectrums = spectrumgroup };
            var Proteins = Analysis.AnalysisTargets.GetDefaultProteins();
            var Targets  = from protein in Proteins
                           from peptide in protein.Peptides
                           from precursor in peptide.Precursors
                           select new
            {
                ProteinName      = protein.Name,
                PeptideName      = peptide.Name,
                PrecursorIsoform = precursor.IsotopeLabelType,
                PrecursorMZ      = precursor.PrecursorMZ,
                Products         = precursor.Products
            };

            foreach (var Target in Targets)
            {
                var ExtraChromatograms = from mzspectrum in Channels
                                         .Where(ch => ProcessRawDataTools.InMZTolerance(ch.ChannelMS1, Target.PrecursorMZ, tolerance))
                                         .Select(s => s.ChannelSpectrums).FirstOrDefault()
                                         select new
                {
                    mzspectrum.PrecursorMZ,
                    mzspectrum.RetentionTime,
                    mzspectrum.IonIT,
                    mzspectrum.TIC,
                    SumOfIntensities   = mzspectrum.Intensities.Sum(),
                    SumOfPositiveMatch = ProcessRawDataTools.AggIonCounts(mzspectrum.Mzs, mzspectrum.Intensities, Target.Products, tolerance)[0],
                    SumOfNegativeMatch = ProcessRawDataTools.AggIonCounts(mzspectrum.Mzs, mzspectrum.Intensities, Target.Products, tolerance)[1]
                };

                _chromatograms.Add(new Chromatogram()
                {
                    Protein            = Target.ProteinName,
                    Peptide            = Target.ProteinName,
                    IsotopeLabelType   = Target.PrecursorIsoform,
                    PrecursorMZ        = Target.PrecursorMZ,
                    RetentionTimes     = ExtraChromatograms.Select(ec => ec.RetentionTime.GetValueOrDefault(0)).ToArray(),
                    IonInjectionTimes  = ExtraChromatograms.Select(ec => ec.IonIT.GetValueOrDefault(0)).ToArray(),
                    SumOfIntensities   = ExtraChromatograms.Select(ec => ec.SumOfIntensities).ToArray(),
                    SumOfPositiveMatch = ExtraChromatograms.Select(ec => ec.SumOfPositiveMatch).ToArray(),
                    SumOfNegativeMatch = ExtraChromatograms.Select(ec => ec.SumOfNegativeMatch).ToArray()
                });
            }
        }