public override void ReadXml(XmlReader reader) { // Read tag attributes base.ReadXml(reader); Fragment = reader.GetAttribute(ATTR.cut); if (IsFragment) { Restrict = reader.GetAttribute(ATTR.no_cut); Terminus = reader.GetAttribute(ATTR.sense, ToSeqTerminus); MinFragmentLength = reader.GetNullableIntAttribute(ATTR.min_length) ?? DEFAULT_MIN_FRAGMENT_LENGTH; } else { var charges = TextUtil.ParseInts(reader.GetAttribute(ATTR.charges)); // Old version? if (charges.Length > 1) { throw new InvalidDataException(Resources.MeasuredIon_ReadXml_Multiple_charge_states_for_custom_ions_are_no_longer_supported_); } var parsedIon = CustomIon.Deserialize(reader); Adduct adduct; if (charges.Any()) // Old style - fix it up a little for our revised ideas about custom ion ionization { adduct = Adduct.FromChargeNoMass(charges[0]); if (string.IsNullOrEmpty(parsedIon.NeutralFormula)) // Adjust the user-supplied masses { SettingsCustomIon = new SettingsCustomIon(parsedIon.NeutralFormula, adduct, Math.Round(parsedIon.MonoisotopicMass + charges[0] * BioMassCalc.MONOISOTOPIC.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. Math.Round(parsedIon.AverageMass + charges[0] * BioMassCalc.AVERAGE.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. parsedIon.Name); } else // Adjust the formula to include ion atoms { if (charges[0] > 1) // XML deserializer will have added an H already { var adductProtonated = Adduct.FromChargeProtonated(charges[0] - 1); var formula = adductProtonated.ApplyToFormula(parsedIon.NeutralFormula); parsedIon = new CustomIon(formula, adduct, parsedIon.MonoisotopicMass, parsedIon.AverageMass, Name); } } } else { adduct = Adduct.FromStringAssumeChargeOnly(reader.GetAttribute(ATTR.charge)); // Ionization mass is already in formula } if (SettingsCustomIon == null) { SettingsCustomIon = new SettingsCustomIon(parsedIon.NeutralFormula, adduct, parsedIon.MonoisotopicMass, parsedIon.AverageMass, parsedIon.Name); } IsOptional = reader.GetBoolAttribute(ATTR.optional); } // Consume tag reader.Read(); Validate(); }
void IXmlSerializable.ReadXml(XmlReader reader) { RegressionWeighting = RegressionWeighting.Parse(reader.GetAttribute(Attr.weighting)); RegressionFit = RegressionFit.Parse(reader.GetAttribute(Attr.fit)); NormalizationMethod = NormalizationMethod.FromName(reader.GetAttribute(Attr.normalization)); MsLevel = reader.GetNullableIntAttribute(Attr.ms_level); Units = reader.GetAttribute(Attr.units); bool empty = reader.IsEmptyElement; reader.Read(); if (!empty) { reader.ReadEndElement(); } }
public override void ReadXml(XmlReader reader) { // Read tag attributes. SpecialHandling = reader.GetAttribute(ATTR.special_handling) ?? SpecialHandlingType.NONE; // Backward compatibility with v1.3: force all ions name to all ions (may be MSe) if (!SpecialHandlingType.IsAllIons(SpecialHandling)) { base.ReadXml(reader); } else { ReadXmlName(SpecialHandlingType.ALL_IONS); SpecialHandling = SpecialHandlingType.ALL_IONS; } PrecursorFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_filter); if (!PrecursorFilter.HasValue) { PrecursorFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_filter_margin); UseMargin = PrecursorFilter.HasValue; } if (!PrecursorFilter.HasValue) { PrecursorFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_left_filter); PrecursorRightFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_right_filter); } WindowsPerScan = reader.GetNullableIntAttribute(ATTR.windows_per_scan); if (reader.IsEmptyElement) { reader.Read(); } else { // Consume tag reader.ReadStartElement(); var list = new List <IsolationWindow>(); reader.ReadElements(list); PrespecifiedIsolationWindows = list; reader.ReadEndElement(); } DoValidate(); }
void IXmlSerializable.ReadXml(XmlReader reader) { RegressionWeighting = RegressionWeighting.Parse(reader.GetAttribute(Attr.weighting)); RegressionFit = RegressionFit.Parse(reader.GetAttribute(Attr.fit)); NormalizationMethod = NormalizationMethod.FromName(reader.GetAttribute(Attr.normalization)); MsLevel = reader.GetNullableIntAttribute(Attr.ms_level); Units = reader.GetAttribute(Attr.units); LodCalculation = LodCalculation.Parse(reader.GetAttribute(Attr.lod_calculation)); MaxLoqBias = reader.GetNullableDoubleAttribute(Attr.max_loq_bias); MaxLoqCv = reader.GetNullableDoubleAttribute(Attr.max_loq_cv); bool empty = reader.IsEmptyElement; reader.Read(); if (!empty) { reader.ReadEndElement(); } }
public override void ReadXml(XmlReader reader) { // Read tag attributes base.ReadXml(reader); Fragment = reader.GetAttribute(ATTR.cut); if (IsFragment) { Restrict = reader.GetAttribute(ATTR.no_cut); Terminus = reader.GetAttribute(ATTR.sense, ToSeqTerminus); MinFragmentLength = reader.GetNullableIntAttribute(ATTR.min_length) ?? DEFAULT_MIN_FRAGMENT_LENGTH; } else { var charges = TextUtil.ParseInts(reader.GetAttribute(ATTR.charges)); // Old version? if (charges.Count() > 1) { throw new InvalidDataException(Resources.MeasuredIon_ReadXml_Multiple_charge_states_for_custom_ions_are_no_longer_supported_); } SettingsCustomIon = SettingsCustomIon.Deserialize(reader); if (charges.Any()) // Old style - fix it up a little for our revised ideas about custom ion ionization { Charge = charges[0]; if (string.IsNullOrEmpty(SettingsCustomIon.Formula)) // Adjust the user-supplied masses { SettingsCustomIon = new SettingsCustomIon(SettingsCustomIon.Formula, Math.Round(SettingsCustomIon.MonoisotopicMass + BioMassCalc.MONOISOTOPIC.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. Math.Round(SettingsCustomIon.AverageMass + BioMassCalc.AVERAGE.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. SettingsCustomIon.Name); } } else { Charge = reader.GetIntAttribute(ATTR.charge); } IsOptional = reader.GetBoolAttribute(ATTR.optional); } // Consume tag reader.Read(); Validate(); }
public static int GetIntAttribute(this XmlReader reader, string name, int defaultValue) { return(reader.GetNullableIntAttribute(name) ?? defaultValue); }
public override void ReadXml(XmlReader reader) { // Read tag attributes base.ReadXml(reader); string aas = reader.GetAttribute(ATTR.aminoacid); if (!string.IsNullOrEmpty(aas)) { AAs = aas; // Support v0.1 format. if (AAs[0] == '\0') // Not L10N AAs = null; } Terminus = reader.GetAttribute(ATTR.terminus, ToModTerminus); IsVariable = IsExplicit = reader.GetBoolAttribute(ATTR.variable); Formula = reader.GetAttribute(ATTR.formula); if (reader.GetBoolAttribute(ATTR.label_13C)) LabelAtoms |= LabelAtoms.C13; if (reader.GetBoolAttribute(ATTR.label_15N)) LabelAtoms |= LabelAtoms.N15; if (reader.GetBoolAttribute(ATTR.label_18O)) LabelAtoms |= LabelAtoms.O18; if (reader.GetBoolAttribute(ATTR.label_2H)) LabelAtoms |= LabelAtoms.H2; RelativeRT = reader.GetEnumAttribute(ATTR.relative_rt, RelativeRT.Matching); // Allow specific masses always, but they will generate an error, // in Validate() if there is already a formula. MonoisotopicMass = reader.GetNullableDoubleAttribute(ATTR.massdiff_monoisotopic); AverageMass = reader.GetNullableDoubleAttribute(ATTR.massdiff_average); if (!IsVariable) IsExplicit = reader.GetBoolAttribute(ATTR.explicit_decl); UnimodId = reader.GetNullableIntAttribute(ATTR.unimod_id); // Backward compatibility with early code that assigned -1 to some custom modifications if (UnimodId.HasValue && UnimodId.Value == -1) UnimodId = null; ShortName = reader.GetAttribute(ATTR.short_name); // Consume tag reader.Read(); var listLosses = new List<FragmentLoss>(); reader.ReadElements(listLosses); if (listLosses.Count > 0) { Losses = listLosses.ToArray(); reader.ReadEndElement(); } Validate(); }
public void ReadXml(XmlReader reader) { Pick = reader.GetEnumAttribute(ATTR.pick, PeptidePick.library); PeptideCount = reader.GetNullableIntAttribute(ATTR.peptide_count); HasDocumentLibrary = reader.GetBoolAttribute(ATTR.document_library); _rankIdName = reader.GetAttribute(ATTR.rank_type); var list = new List<XmlNamedElement>(); // Consume tag if (reader.IsEmptyElement) reader.Read(); else { reader.ReadStartElement(); // Read child elements IXmlElementHelper<Library> helperLib; IXmlElementHelper<LibrarySpec> helperSpec = null; while ((helperLib = reader.FindHelper(LIBRARY_HELPERS)) != null || (helperSpec = reader.FindHelper(LIBRARY_SPEC_HELPERS)) != null) { if (helperLib != null) list.Add(helperLib.Deserialize(reader)); else list.Add(helperSpec.Deserialize(reader)); } reader.ReadEndElement(); } var libraries = new Library[list.Count]; var librarySpecs = new LibrarySpec[list.Count]; for (int i = 0; i < list.Count; i++) { var library = list[i] as Library; if (library != null) libraries[i] = library; else librarySpecs[i] = (LibrarySpec) list[i]; } Libraries = libraries; LibrarySpecs = librarySpecs; DoValidate(); }
public override void ReadXml(XmlReader reader) { // Read tag attributes base.ReadXml(reader); Fragment = reader.GetAttribute(ATTR.cut); if (IsFragment) { Restrict = reader.GetAttribute(ATTR.no_cut); Terminus = reader.GetAttribute(ATTR.sense, ToSeqTerminus); MinFragmentLength = reader.GetNullableIntAttribute(ATTR.min_length) ?? DEFAULT_MIN_FRAGMENT_LENGTH; } else { var charges = TextUtil.ParseInts(reader.GetAttribute(ATTR.charges)); // Old version? if (charges.Count() > 1) throw new InvalidDataException(Resources.MeasuredIon_ReadXml_Multiple_charge_states_for_custom_ions_are_no_longer_supported_); SettingsCustomIon = SettingsCustomIon.Deserialize(reader); if (charges.Any()) // Old style - fix it up a little for our revised ideas about custom ion ionization { Charge = charges[0]; if (string.IsNullOrEmpty(SettingsCustomIon.Formula)) // Adjust the user-supplied masses { SettingsCustomIon = new SettingsCustomIon(SettingsCustomIon.Formula, Math.Round(SettingsCustomIon.MonoisotopicMass + BioMassCalc.MONOISOTOPIC.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. Math.Round(SettingsCustomIon.AverageMass + BioMassCalc.AVERAGE.GetMass(BioMassCalc.H), SequenceMassCalc.MassPrecision), // Assume user provided neutral mass. Round new value easiest XML roundtripping. SettingsCustomIon.Name); } } else { Charge = reader.GetIntAttribute(ATTR.charge); } IsOptional = reader.GetBoolAttribute(ATTR.optional); } // Consume tag reader.Read(); Validate(); }
public override void ReadXml(XmlReader reader) { // Read tag attributes. SpecialHandling = reader.GetAttribute(ATTR.special_handling) ?? SpecialHandlingType.NONE; // Backward compatibility with v1.3: force all ions name to all ions (may be MSe) if (!SpecialHandlingType.IsAllIons(SpecialHandling)) base.ReadXml(reader); else { ReadXmlName(SpecialHandlingType.ALL_IONS); SpecialHandling = SpecialHandlingType.ALL_IONS; } PrecursorFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_filter); if (!PrecursorFilter.HasValue) { PrecursorFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_left_filter); PrecursorRightFilter = reader.GetNullableDoubleAttribute(ATTR.precursor_right_filter); } WindowsPerScan = reader.GetNullableIntAttribute(ATTR.windows_per_scan); if (reader.IsEmptyElement) reader.Read(); else { // Consume tag reader.ReadStartElement(); var list = new List<IsolationWindow>(); reader.ReadElements(list); PrespecifiedIsolationWindows = list; reader.ReadEndElement(); } DoValidate(); }