public override void WriteXml(XmlWriter writer) { // Write attributes writer.WriteAttributeString(@"name", Name); _windowWidthCalculator.WriteXML(writer, true, false); // Write in legacy format where this is a peptide setting // Write all measured ion mobilities if (MeasuredMobilityIons != null) { foreach (var im in MeasuredMobilityIons) { writer.WriteStartElement(EL.measured_dt); // N.B. EL.measured_dt is a misnomer, this covers all IMS types var mdt = new MeasuredIonMobility(im.Key.Target, im.Key.Adduct, im.Value); mdt.WriteXml(writer); writer.WriteEndElement(); } } }
public override void ReadXml(XmlReader reader) { var name = reader.Name; // Read start tag attributes base.ReadXml(reader); _windowWidthCalculator = new IonMobilityWindowWidthCalculator(reader, true, false); // Consume start tag reader.ReadStartElement(); // Skip over ion_mobility_library stuff that never saw the light of day, but appears in some older tests while (reader.Name.Equals(@"ion_mobility_library") || reader.Name.Equals(@"regression_dt")) { reader.Read(); } // Read all measured ion mobilities var dict = new Dictionary <LibKey, IonMobilityAndCCS>(); while (reader.IsStartElement(EL.measured_dt)) // N.B. EL.measured_dt is a misnomer, this covers all IMS types { var im = MeasuredIonMobility.Deserialize(reader); var key = new LibKey(im.Target, im.Charge); if (!dict.ContainsKey(key)) { dict.Add(key, im.IonMobilityInfo); } } if (dict.Any()) { MeasuredMobilityIons = dict; } if (reader.Name.Equals(name)) // Make sure we haven't stepped off the end { reader.ReadEndElement(); // Consume end tag } Validate(); }