public ChromatographProfile ReadFromFile(string fileName) { var result = new ChromatographProfile(); var root = XElement.Load(fileName); result.Experimental = root.GetAttributeValue("Experimental", string.Empty); result.Sequence = root.GetAttributeValue("Sequence", string.Empty); result.Charge = root.GetAttributeValue("Charge", 0); result.IdentifiedScan = root.GetAttributeValue("IdentifiedScan", 0); result.ObservedMz = root.GetAttributeValue("ObservedMz", 0.0); result.TheoreticalMz = root.GetAttributeValue("TheoreticalMz", 0.0); List <IsotopicIon> ions = new List <IsotopicIon>(); foreach (var ionEle in root.Element("IsotopicIons").Elements("Ion")) { var ion = new IsotopicIon(); ion.Mz = ionEle.GetAttributeValue("Mz", 0.0); ion.Intensity = ionEle.GetAttributeValue("Intensity", 0.0); ions.Add(ion); } result.IsotopicIons = ions.ToArray(); foreach (var proEle in root.Element("ProfileScans").Elements("ProfileScan")) { var pscan = new ChromatographProfileScan(); result.Profiles.Add(pscan); pscan.Identified = proEle.GetAttributeValue("Identified", false); pscan.RetentionTime = proEle.GetAttributeValue("RetentionTime", 0.0); pscan.Scan = proEle.GetAttributeValue("Scan", 0); foreach (var scanEle in proEle.Elements("Peak")) { var peak = new ChromatographProfileScanPeak(); pscan.Add(peak); peak.Isotopic = scanEle.GetAttributeValue("Isotopic", 0); peak.Mz = scanEle.GetAttributeValue("Mz", 0.0); peak.Intensity = scanEle.GetAttributeValue("Intensity", 0.0); peak.Noise = scanEle.GetAttributeValue("Noise", 0.0); peak.PPMDistance = scanEle.GetAttributeValue("PPMDistance", 0.0); } pscan.RawPeaks = new List <Peak>(); var rawPeaksELe = proEle.Element("RawPeaks"); foreach (var rawPeakEle in rawPeaksELe.Elements("RawPeak")) { var peak = new Peak(); pscan.RawPeaks.Add(peak); peak.Mz = rawPeakEle.GetAttributeValue("Mz", 0.0); peak.Intensity = rawPeakEle.GetAttributeValue("Intensity", 0.0); peak.Noise = rawPeakEle.GetAttributeValue("Noise", 0.0); } } return(result); }
public ChromatographProfile ReadFromFile(string fileName) { var result = new ChromatographProfile(); using (var sr = new StreamReader(fileName)) { var line = sr.ReadLine(); while ((line = sr.ReadLine()) != null) { var parts = line.Split('\t'); var scan = int.Parse(parts[0]); ChromatographProfileScan profilescan; if (result.Profiles.Count > 0 && result.Profiles.Last().Scan == scan) { profilescan = result.Profiles.Last(); } else { profilescan = new ChromatographProfileScan(); result.Profiles.Add(profilescan); profilescan.Scan = scan; profilescan.RetentionTime = double.Parse(parts[1]); profilescan.Identified = bool.Parse(parts[9]); } var peak = new ChromatographProfileScanPeak(); profilescan.Add(peak); peak.Isotopic = int.Parse(parts[2]); peak.Mz = double.Parse(parts[3]); peak.Intensity = double.Parse(parts[4]); peak.PPMDistance = double.Parse(parts[5]); peak.Noise = peak.Intensity / double.Parse(parts[6]); } } return(result); }