Пример #1
0
        public override void ReadXml(XmlReader reader)
        {
            // Read tag attributes
            base.ReadXml(reader);
            UseForRetentionTimeFilter = reader.GetBoolAttribute(ATTR.use_for_retention_time_prediction, false);
            AnalyteConcentration      = reader.GetNullableDoubleAttribute(ATTR.analyte_concentration);
            SampleType = SampleType.FromName(reader.GetAttribute(ATTR.sample_type));
            // Consume tag
            reader.Read();

            // Check if there is an optimization function element, and read
            // if if there is.
            IXmlElementHelper <OptimizableRegression> helper =
                reader.FindHelper(OPTIMIZATION_HELPERS);

            if (helper != null)
            {
                OptimizationFunction = helper.Deserialize(reader);
            }

            var chromFileInfos = new List <ChromFileInfo>();
            var fileLoadIds    = new List <string>();

            while (reader.IsStartElement(EL.sample_file) ||
                   reader.IsStartElement(EL.replicate_file) ||
                   reader.IsStartElement(EL.chromatogram_file))
            {
                // Note that the file path is actually be a URI that encodes things like lockmass correction as well as filename
                ChromFileInfo chromFileInfo = new ChromFileInfo(MsDataFileUri.Parse(reader.GetAttribute(ATTR.file_path)));
                chromFileInfo = chromFileInfo.ChangeHasMidasSpectra(reader.GetBoolAttribute(ATTR.has_midas_spectra, false));
                chromFileInfos.Add(chromFileInfo);

                string id = reader.GetAttribute(ATTR.id) ?? GetOrdinalSaveId(fileLoadIds.Count);
                fileLoadIds.Add(id);
                reader.Read();
                if (reader.IsStartElement(EL.instrument_info_list))
                {
                    reader.Skip();
                    reader.Read();
                }
            }
            Annotations = SrmDocument.ReadAnnotations(reader);

            MSDataFileInfos = chromFileInfos;
            _fileLoadIds    = fileLoadIds.ToArray();

            // Consume end tag
            reader.ReadEndElement();
        }
Пример #2
0
        public override void WriteXml(XmlWriter writer)
        {
            // Write tag attributes
            base.WriteXml(writer);
            writer.WriteAttribute(ATTR.use_for_retention_time_prediction, false);
            writer.WriteAttributeNullable(ATTR.analyte_concentration, AnalyteConcentration);
            if (null != SampleType && !Equals(SampleType, SampleType.DEFAULT))
            {
                writer.WriteAttribute(ATTR.sample_type, SampleType.Name);
            }

            // Write optimization element, if present
            if (OptimizationFunction != null)
            {
                IXmlElementHelper <OptimizableRegression> helper = XmlUtil.FindHelper(
                    OptimizationFunction, OPTIMIZATION_HELPERS);
                if (helper == null)
                {
                    throw new InvalidOperationException(Resources.ChromatogramSet_WriteXml_Attempt_to_serialize_list_containing_invalid_type);
                }
                writer.WriteElement(helper.ElementNames[0], OptimizationFunction);
            }

            int i = 0;

            foreach (var fileInfo in MSDataFileInfos)
            {
                writer.WriteStartElement(EL.sample_file);
                writer.WriteAttribute(ATTR.id, GetOrdinalSaveId(i++));
                writer.WriteAttribute(ATTR.file_path, fileInfo.FilePath);
                writer.WriteAttribute(ATTR.sample_name, fileInfo.FilePath.GetSampleOrFileName());
                if (fileInfo.RunStartTime != null)
                {
                    writer.WriteAttribute(ATTR.acquired_time, XmlConvert.ToString((DateTime)fileInfo.RunStartTime, "yyyy-MM-ddTHH:mm:ss"));  // Not L10N
                }
                if (fileInfo.FileWriteTime != null)
                {
                    writer.WriteAttribute(ATTR.modified_time, XmlConvert.ToString((DateTime)fileInfo.FileWriteTime, "yyyy-MM-ddTHH:mm:ss")); // Not L10N
                }
                writer.WriteAttribute(ATTR.has_midas_spectra, fileInfo.HasMidasSpectra, false);

                // instrument information
                WriteInstrumentConfigList(writer, fileInfo.InstrumentInfoList);

                writer.WriteEndElement();
            }
            SrmDocument.WriteAnnotations(writer, Annotations);
        }
Пример #3
0
 public static void WriteElements <TItem>(this XmlWriter writer, IEnumerable <TItem> list,
                                          params IXmlElementHelper <TItem>[] helpers)
     where TItem : IXmlSerializable
 {
     foreach (TItem item in list)
     {
         if (Equals(item, default(TItem)))
         {
             throw new InvalidDataException(Resources.XmlUtil_WriteElements_Attempt_to_serialize_list_missing_an_element);
         }
         IXmlElementHelper <TItem> helper = FindHelper(item, helpers);
         if (helper == null)
         {
             throw new InvalidOperationException(string.Format(Resources.XmlUtil_WriteElements_Attempt_to_serialize_list_containing_invalid_type__0__, typeof(TItem)));
         }
         writer.WriteElement(helper.ElementNames[0], item);
     }
 }