Пример #1
0
        private static void OutputResultsToMspLibrary(IEnumerable <LipidGroupSearchResult> lipidGroupSearchResults, string fileLocation)
        {
            using (TextWriter textWriter = new StreamWriter(fileLocation))
            {
                foreach (var lipidGroupSearchResult in lipidGroupSearchResults)
                {
                    var lipidTarget          = lipidGroupSearchResult.LipidTarget;
                    var spectrumSearchResult = lipidGroupSearchResult.SpectrumSearchResult;
                    var massSpectrum         = spectrumSearchResult.PrecursorSpectrum.Peaks;
                    var targetMz             = lipidTarget.MzRounded;
                    var closestPeak          = massSpectrum.OrderBy(x => Math.Abs(x.Mz - targetMz)).First();
                    var hcdResults           = spectrumSearchResult.HcdSearchResultList;
                    var cidResults           = spectrumSearchResult.CidSearchResultList;
                    var hcdSpectrum          = spectrumSearchResult.HcdSpectrum;
                    var cidSpectrum          = spectrumSearchResult.CidSpectrum;
                    var hcdCount             = hcdSpectrum.Peaks.Length;
                    var cidCount             = cidSpectrum.Peaks.Length;

                    var name = lipidTarget.StrippedDisplay;

                    var    firstLipid = lipidGroupSearchResult.LipidList.FirstOrDefault();
                    string adduct;
                    if (firstLipid == null)
                    {
                        adduct = string.Empty;
                    }
                    else
                    {
                        adduct = firstLipid.AdductFull;
                    }

                    var    observedMz = closestPeak.Mz;
                    var    formula    = lipidTarget.EmpiricalFormula;
                    var    RT         = spectrumSearchResult.RetentionTime;
                    double MW         = 0;

                    if (lipidTarget.FragmentationMode == FragmentationMode.Positive)
                    {
                        MW = lipidTarget.Composition.Mass - LipidUtil.GetCompositionOfAdduct(lipidTarget.Adduct).Mass;
                    }
                    else if (lipidTarget.FragmentationMode == FragmentationMode.Negative)
                    {
                        MW = lipidTarget.Composition.Mass + LipidUtil.GetCompositionOfAdduct(lipidTarget.Adduct).Mass;
                    }

                    textWriter.WriteLine("Name: {0}; {1}", name, adduct);
                    textWriter.WriteLine("MW: {0}", MW);
                    textWriter.WriteLine("PRECURSORMZ: {0}", observedMz);
                    textWriter.WriteLine("RETENTIONTIME: {0}", RT);
                    textWriter.WriteLine("FORMULA: {0}", formula);
                    textWriter.WriteLine("Comment: CID");
                    textWriter.WriteLine("Num Peaks: {0}", cidCount);
                    foreach (var peak in cidSpectrum.Peaks)
                    {
                        var mz        = peak.Mz;
                        var intensity = peak.Intensity;
                        var match     = cidResults.Where(x => x.ObservedPeak != null).FirstOrDefault(x => x.ObservedPeak.Mz.Equals(peak.Mz));
                        if (match != null)
                        {
                            var annotation = match.TheoreticalPeak.DescriptionForUi;
                            textWriter.WriteLine("{0} {1} \"{2}\"", mz, intensity, annotation);
                        }
                        else
                        {
                            textWriter.WriteLine("{0} {1}", mz, intensity);
                        }
                    }
                    textWriter.WriteLine();


                    textWriter.WriteLine("Name: {0}; {1}", name, adduct);
                    textWriter.WriteLine("MW: {0}", MW);
                    textWriter.WriteLine("PRECURSORMZ: {0}", observedMz);
                    textWriter.WriteLine("RETENTIONTIME: {0}", RT);
                    textWriter.WriteLine("FORMULA: {0}", formula);
                    textWriter.WriteLine("Comment: HCD");
                    textWriter.WriteLine("Num Peaks: {0}", hcdCount);
                    foreach (var peak in hcdSpectrum.Peaks)
                    {
                        var mz        = peak.Mz;
                        var intensity = peak.Intensity;
                        var match     = hcdResults.Where(x => x.ObservedPeak != null).FirstOrDefault(x => x.ObservedPeak.Mz.Equals(peak.Mz));
                        if (match != null)
                        {
                            var annotation = match.TheoreticalPeak.DescriptionForUi;
                            textWriter.WriteLine("{0} {1} \"{2}\"", mz, intensity, annotation);
                        }
                        else
                        {
                            textWriter.WriteLine("{0} {1}", mz, intensity);
                        }
                    }
                    textWriter.WriteLine();
                }
            }
        }