Example #1
0
        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();
        }