Beispiel #1
0
        public O18QuantificationSummaryItem ReadFromFile(string filename)
        {
            var result = new O18QuantificationSummaryItem();

            var root = XElement.Load(filename);

            result.RawFilename = root.Element("RawFilename").Value;

            var ele = root.Element("SoftwareVersion");

            if (ele != null)
            {
                result.SoftwareVersion = ele.Value;
            }

            result.PeptideSequence          = root.Element("PeptideSequence").Value;
            result.AdditionalFormula        = root.Element("AdditionalFormula").Value;
            result.PeptideAtomComposition   = root.Element("PeptideAtomComposition").Value;
            result.PurityOfO18Water         = MyConvert.ToDouble(root.Element("PurityOfO18Water").Value);
            result.IsPostDigestionLabelling = bool.Parse(root.Element("IsPostDigestionLabelling").Value);
            if (root.Element("TheoreticalO16Mz") != null)
            {
                result.TheoreticalO16Mz = MyConvert.ToDouble(root.Element("TheoreticalO16Mz").Value);
                result.Charge           = Convert.ToInt32(root.Element("Charge").Value);
            }

            result.PeptideProfile = (from x in root.Element("PeptideProfile").Elements()
                                     let mzEle = x.Attribute("Mz")
                                                 let mz = mzEle == null ? 0.0 : MyConvert.ToDouble(mzEle.Value)
                                                          let intensity = MyConvert.ToDouble(x.Value)
                                                                          select new Peak(mz, intensity)).ToList();

            if (result.PeptideProfile[0].Mz == 0.0)
            {
                var pkls = IsotopicBuilderFactory.GetBuilder().GetProfile(new AtomComposition(result.PeptideAtomComposition), result.Charge, 10);
                for (int i = 0; i < Math.Min(result.PeptideProfile.Count, pkls.Count); i++)
                {
                    result.PeptideProfile[i].Mz        = pkls[i].Mz;
                    result.PeptideProfile[i].Intensity = pkls[i].Intensity;
                }
            }

            var observed = root.Element("ObservedEnvelopes");

            result.ObservedEnvelopes = new List <O18QuanEnvelope>();
            foreach (var pkl in observed.Elements())
            {
                var    peakList      = new O18QuanEnvelope();
                int    scan          = int.Parse(pkl.Attribute("Scan").Value);
                double retentiontime = MyConvert.ToDouble(pkl.Attribute("Retentiontime").Value);
                peakList.Enabled      = bool.Parse(pkl.Attribute("Enabled").Value);
                peakList.IsIdentified = bool.Parse(pkl.Attribute("Identified").Value);

                peakList.ScanTimes.Add(new ScanTime(scan, retentiontime));
                foreach (var peak in pkl.Elements())
                {
                    double mz        = MyConvert.ToDouble(peak.Attribute("Mz").Value);
                    double intensity = MyConvert.ToDouble(peak.Attribute("Intensity").Value);
                    var    p         = new Peak(mz, intensity);
                    peakList.Add(p);
                }
                result.ObservedEnvelopes.Add(peakList);
            }

            var species = root.Element("SpeciesAbundance");

            result.SpeciesAbundance.O16  = MyConvert.ToDouble(species.Element("O16").Value);
            result.SpeciesAbundance.O181 = MyConvert.ToDouble(species.Element("O181").Value);
            result.SpeciesAbundance.O182 = MyConvert.ToDouble(species.Element("O182").Value);

            var regression = species.Element("Regression");

            result.SpeciesAbundance.RegressionCorrelation = MyConvert.ToDouble(regression.Attribute("Correlation").Value);
            result.SpeciesAbundance.RegressionItems.Clear();
            foreach (var item in regression.Elements())
            {
                var ritem = new SpeciesRegressionItem();
                ritem.Mz = MyConvert.ToDouble(item.Attribute("Mz").Value);
                ritem.ObservedIntensity   = MyConvert.ToDouble(item.Attribute("Observed").Value);
                ritem.RegressionIntensity = MyConvert.ToDouble(item.Attribute("Regression").Value);
                result.SpeciesAbundance.RegressionItems.Add(ritem);
            }

            var samples = root.Element("SampleAbundance");

            result.SampleAbundance.LabellingEfficiency = MyConvert.ToDouble(samples.Attribute("LabellingEfficiency").Value);
            result.SampleAbundance.Ratio = MyConvert.ToDouble(samples.Attribute("Ratio").Value);
            result.SampleAbundance.O16   = MyConvert.ToDouble(samples.Element("O16").Value);
            result.SampleAbundance.O18   = MyConvert.ToDouble(samples.Element("O18").Value);

            return(result);
        }
Beispiel #2
0
        public void TestWriteToFile()
        {
            var item = new O18QuantificationSummaryItem();

            item.RawFilename            = @"D:\sqh\Science\Project/4NLFOR.raw";
            item.PeptideSequence        = "AFATDITDAEEDK";
            item.PeptideAtomComposition = "C60H92N14O26";
            item.PurityOfO18Water       = 0.95;
            item.PeptideProfile         = IsotopicBuilderFactory.GetBuilder().GetProfile(new AtomComposition(item.PeptideAtomComposition), 1, 10);

            item.ObservedEnvelopes = new List <O18QuanEnvelope> ();

            var pkl1 = new O18QuanEnvelope();

            pkl1.ScanTimes.Add(new ScanTime(6741, 12.34));
            pkl1.Enabled      = true;
            pkl1.IsIdentified = true;
            pkl1.Add(new Peak(713.3209, 424345.9));
            pkl1.Add(new Peak(713.8254, 198378.3));
            pkl1.Add(new Peak(714.3221, 246866.8));
            pkl1.Add(new Peak(714.8242, 221648.0));
            pkl1.Add(new Peak(715.3243, 107701.3));
            pkl1.Add(new Peak(715.8316, 0.0));
            item.ObservedEnvelopes.Add(pkl1);

            var pkl2 = new O18QuanEnvelope();

            pkl2.ScanTimes.Add(new ScanTime(6746, 13.34));
            pkl2.Enabled = false;
            pkl2.Add(new Peak(713.3209, 796597.7));
            pkl2.Add(new Peak(713.8254, 530778.4));
            pkl2.Add(new Peak(714.3221, 456099.6));
            pkl2.Add(new Peak(714.8242, 339509.8));
            pkl2.Add(new Peak(715.3243, 182812.3));
            pkl2.Add(new Peak(715.8316, 0.0));
            item.ObservedEnvelopes.Add(pkl2);

            item.SpeciesAbundance      = new SpeciesAbundanceInfo();
            item.SpeciesAbundance.O16  = 79184307.0;
            item.SpeciesAbundance.O181 = 39464386.0;
            item.SpeciesAbundance.O182 = 440969.4;

            item.SampleAbundance = new SampleAbundanceInfo();
            item.SampleAbundance.LabellingEfficiency = 0.0219;
            item.SampleAbundance.Ratio = 50;
            item.SampleAbundance.O16   = 0;
            item.SampleAbundance.O18   = 922867772.7;

            item.SpeciesAbundance.RegressionCorrelation = 0.9999;
            item.SpeciesAbundance.RegressionItems.Clear();
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(713.3209, 36513020.6, 36512100.5));
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(713.8254, 26438219.2, 26447909.0));
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(714.3221, 29639265.4, 29595148.6));
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(714.8242, 16687280.4, 16812006.0));
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(715.3243, 7087781.0, 6823450.3));
            item.SpeciesAbundance.RegressionItems.Add(new SpeciesRegressionItem(715.8316, 1799203.9, 2164120.0));

            new O18QuantificationSummaryItemXmlFormat().WriteToFile(@TestContext.CurrentContext.TestDirectory + "/../../../data//O18QuantificationInformation.xml.tmp", item);
            AssertUtils.AssertFileEqual(@TestContext.CurrentContext.TestDirectory + "/../../../data//O18QuantificationInformation.xml.tmp",
                                        @TestContext.CurrentContext.TestDirectory + "/../../../data//O18QuantificationInformation.xml");
            new FileInfo(@TestContext.CurrentContext.TestDirectory + "/../../../data//O18QuantificationInformation.xml.tmp").Delete();
        }