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() }); } } }
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() }); } }