OpenMS
Loading...
Searching...
No Matches
XMassFile.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Guillaume Belz $
7// --------------------------------------------------------------------------
8
9#pragma once
10
16#include <OpenMS/SYSTEM/File.h>
17
18namespace OpenMS
19{
41 class OPENMS_DLLAPI XMassFile :
42 public ProgressLogger
43 {
44public:
48 ~XMassFile() override;
49
58 void load(const String & filename, MSSpectrum & spectrum)
59 {
60 Internal::AcqusHandler acqus(filename.prefix(filename.length() - 3) + String("acqus"));
61
62 Internal::FidHandler fid(filename);
63 if (!fid)
64 {
65 if (!File::exists(filename))
66 {
67 throw Exception::FileNotFound(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, filename);
68 }
69 else if (!File::readable(filename))
70 {
71 throw Exception::FileNotReadable(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, filename);
72 }
73 else
74 {
75 throw Exception::IOException(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, filename);
76 }
77 }
78
79 // Delete old spectrum
80 spectrum.clear(true);
81
82 //temporary variables
83 Peak1D p;
84
85 while (spectrum.size() < acqus.getSize())
86 {
87 //fill peak
90 spectrum.push_back(p);
91 }
92 fid.close();
93
94 // import metadata
95 spectrum.setRT(0.0);
96 spectrum.setMSLevel(1);
97 spectrum.setName("Xmass analysis file " + acqus.getParam("$ID_raw"));
98 spectrum.setType(SpectrumSettings::PROFILE);
99 spectrum.setNativeID("spectrum=xsd:" + acqus.getParam("$ID_raw").remove('<').remove('>'));
100 spectrum.setComment("no comment");
101
102 InstrumentSettings instrument_settings;
103 instrument_settings.setScanMode(InstrumentSettings::MASSSPECTRUM);
104 instrument_settings.setZoomScan(false);
105
106 if (acqus.getParam(".IONIZATION MODE") == "LD+")
107 {
108 instrument_settings.setPolarity(IonSource::Polarity::POSITIVE);
109 }
110 else if (acqus.getParam(".IONIZATION MODE") == "LD-")
111 {
112 instrument_settings.setPolarity(IonSource::Polarity::NEGATIVE);
113 }
114 else
115 {
116 instrument_settings.setPolarity(IonSource::Polarity::POLNULL);
117 }
118 spectrum.setInstrumentSettings(instrument_settings);
119
120 AcquisitionInfo acquisition_info;
121 acquisition_info.setMethodOfCombination("Sum of " + acqus.getParam("$NoSHOTS") + " raw spectrum");
122 spectrum.setAcquisitionInfo(acquisition_info);
123
124 SourceFile source_file;
125 source_file.setNameOfFile("fid");
126 source_file.setPathToFile(filename.prefix(filename.length() - 3));
127 source_file.setFileSize(4.0 * acqus.getSize() / 1024 / 1024); // 4 bytes / point
128 source_file.setFileType("Xmass analysis file (fid)");
129 spectrum.setSourceFile(source_file);
130
131 DataProcessing data_processing;
132 Software software;
133 software.setName("FlexControl");
134 String fc_ver = acqus.getParam("$FCVer"); // FlexControlVersion
135 if (fc_ver.hasPrefix("<flexControl "))
136 {
137 fc_ver = fc_ver.suffix(' ');
138 }
139 if (fc_ver.hasSuffix(">"))
140 {
141 fc_ver = fc_ver.prefix('>');
142 }
143 software.setVersion(fc_ver);
144 software.setMetaValue("Acquisition method", DataValue(acqus.getParam("$ACQMETH").remove('<').remove('>')));
145 data_processing.setSoftware(software);
146 std::set<DataProcessing::ProcessingAction> actions;
147 actions.insert(DataProcessing::SMOOTHING);
148 actions.insert(DataProcessing::BASELINE_REDUCTION);
149 actions.insert(DataProcessing::CALIBRATION);
150 data_processing.setProcessingActions(actions);
151 data_processing.setCompletionTime(DateTime::now());
152
153 std::vector< std::shared_ptr< DataProcessing> > data_processing_vector;
154 data_processing_vector.push_back( std::shared_ptr< DataProcessing>(new DataProcessing(data_processing)) );
155 spectrum.setDataProcessing(data_processing_vector);
156 }
157
166 void importExperimentalSettings(const String & filename, PeakMap & exp)
167 {
168 Internal::AcqusHandler acqus(filename.prefix(filename.length() - 3) + String("acqus"));
169
170 ExperimentalSettings & experimental_settings = exp.getExperimentalSettings();
171
172 Instrument & instrument = experimental_settings.getInstrument();
173 instrument.setName(acqus.getParam("SPECTROMETER/DATASYSTEM"));
174 instrument.setVendor(acqus.getParam("ORIGIN"));
175 instrument.setModel(acqus.getParam("$InstrID").remove('<').remove('>'));
176
177 std::vector<IonSource> & ionSourceList = instrument.getIonSources();
178 ionSourceList.clear();
179 ionSourceList.resize(1);
180 if (acqus.getParam(".INLET") == "DIRECT")
181 {
182 ionSourceList[0].setInletType(IonSource::InletType::DIRECT);
183 }
184 else
185 {
186 ionSourceList[0].setInletType(IonSource::InletType::INLETNULL);
187 ionSourceList[0].setIonizationMethod(IonSource::IonizationMethod::MALDI);
188 }
189 if (acqus.getParam(".IONIZATION MODE") == "LD+")
190 {
191 ionSourceList[0].setPolarity(IonSource::Polarity::POSITIVE);
192 }
193 else if (acqus.getParam(".IONIZATION MODE") == "LD-")
194 {
195 ionSourceList[0].setPolarity(IonSource::Polarity::NEGATIVE);
196 }
197 else
198 {
199 ionSourceList[0].setPolarity(IonSource::Polarity::POLNULL);
200 }
201 ionSourceList[0].setMetaValue("MALDI target reference", DataValue(acqus.getParam("$TgIDS").remove('<').remove('>')));
202 ionSourceList[0].setOrder(0);
203
204 std::vector<MassAnalyzer> & massAnalyzerList = instrument.getMassAnalyzers();
205 massAnalyzerList.clear();
206 massAnalyzerList.resize(1);
207 if (acqus.getParam(".SPECTROMETER TYPE") == "TOF")
208 {
209 massAnalyzerList[0].setType(MassAnalyzer::TOF);
210 }
211 else
212 {
213 massAnalyzerList[0].setType(MassAnalyzer::ANALYZERNULL);
214 }
215
216 DateTime date;
217 date.set(acqus.getParam("$AQ_DATE").remove('<').remove('>'));
218 experimental_settings.setDateTime(date);
219 }
220
226 void store(const String & /*filename*/, const MSSpectrum & /*spectrum*/)
227 {
228 throw Exception::NotImplemented(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION);
229 }
230
231 };
232} // namespace OpenMS
233
Description of the combination of raw data to a single spectrum.
Definition AcquisitionInfo.h:29
void setMethodOfCombination(const String &method_of_combination)
sets the method of combination
Description of the applied preprocessing steps.
Definition DataProcessing.h:28
void setCompletionTime(const DateTime &completion_time)
sets the time of completion taking a DateTime object
void setSoftware(const Software &software)
sets the software used for processing
void setProcessingActions(const std::set< ProcessingAction > &actions)
sets the description of the applied processing
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition DataValue.h:34
DateTime Class.
Definition DateTime.h:35
void set(UInt month, UInt day, UInt year, UInt hour, UInt minute, UInt second)
sets data from six integers
File not found exception.
Definition Exception.h:475
File not readable exception.
Definition Exception.h:501
General IOException.
Definition Exception.h:541
Not implemented exception.
Definition Exception.h:400
Description of the experimental settings.
Definition ExperimentalSettings.h:36
const Instrument & getInstrument() const
returns a const reference to the MS instrument description
void setDateTime(const DateTime &date)
sets the date the experiment was performed
Description of the settings a MS Instrument was run with.
Definition InstrumentSettings.h:24
void setPolarity(IonSource::Polarity polarity)
sets the polarity
void setZoomScan(bool zoom_scan)
sets if this scan is a zoom (enhanced resolution) scan
void setScanMode(ScanMode scan_mode)
sets the scan mode
Description of a MS instrument.
Definition Instrument.h:40
const std::vector< IonSource > & getIonSources() const
returns a const reference to the ion source list
const std::vector< MassAnalyzer > & getMassAnalyzers() const
returns a const reference to the mass analyzer list
void setName(const String &name)
sets the name of the instrument
void setModel(const String &model)
sets the instrument model
void setVendor(const String &vendor)
sets the instrument vendor
Read-only acqus File handler for XMass Analysis.
Definition AcqusHandler.h:27
Size getSize() const
Get size of spectrum.
String getParam(const String &param)
Read param as string.
double getPosition(Size index) const
Conversion from index to MZ ratio using internal calibration params.
Read-only fid File handler for XMass Analysis.
Definition FidHandler.h:27
Size getIndex() const
Get index of current position (without position moving).
Size getIntensity()
Get intensity of current position and move to next position.
In-Memory representation of a mass spectrometry run.
Definition MSExperiment.h:49
const ExperimentalSettings & getExperimentalSettings() const
returns the meta information of this experiment (const access)
The representation of a 1D spectrum.
Definition MSSpectrum.h:44
void setMSLevel(UInt ms_level)
Sets the MS level.
void setName(const String &name)
Sets the name.
void clear(bool clear_meta_data)
Clears all data and meta data.
void setRT(double rt)
Sets the absolute retention time (in seconds)
void setMetaValue(const String &name, const DataValue &value)
Sets the DataValue corresponding to a name.
A 1-dimensional raw data point or peak.
Definition Peak1D.h:30
void setIntensity(IntensityType intensity)
Mutable access to the data point intensity (height)
Definition Peak1D.h:86
void setPosition(PositionType const &position)
Mutable access to the position.
Definition Peak1D.h:125
float IntensityType
Intensity type.
Definition Peak1D.h:38
Base class for all classes that want to report their progress.
Definition ProgressLogger.h:27
Description of the software used for processing.
Definition Software.h:26
void setName(const String &name)
Sets the name of the software.
void setVersion(const String &version)
Sets the software version.
Description of a file location, used to store the origin of (meta) data.
Definition SourceFile.h:23
void setFileType(const String &file_type)
sets the file type
void setPathToFile(const String &path_path_to_file)
sets the file path
void setNameOfFile(const String &name_of_file)
sets the file name
void setFileSize(float file_size)
sets the file size in MB
void setComment(const String &comment)
sets the free-text comment
void setInstrumentSettings(const InstrumentSettings &instrument_settings)
sets the instrument settings of the current spectrum
void setType(SpectrumType type)
sets the spectrum type
void setSourceFile(const SourceFile &source_file)
sets the source file
void setDataProcessing(const std::vector< DataProcessingPtr > &data_processing)
sets the description of the applied processing
void setAcquisitionInfo(const AcquisitionInfo &acquisition_info)
sets the acquisition info
void setNativeID(const String &native_id)
sets the native identifier for the spectrum, used by the acquisition software.
A more convenient string class.
Definition String.h:34
bool hasPrefix(const String &string) const
true if String begins with string, false otherwise
String prefix(SizeType length) const
returns the prefix of length length
String & remove(char what)
Remove all occurrences of the character what.
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
String suffix(SizeType length) const
returns the suffix of length length
Definition XMassFile.h:43
void importExperimentalSettings(const String &filename, PeakMap &exp)
Import settings from a XMass file.
Definition XMassFile.h:166
~XMassFile() override
Destructor.
void load(const String &filename, MSSpectrum &spectrum)
Definition XMassFile.h:58
XMassFile()
Default constructor.
void store(const String &, const MSSpectrum &)
Stores a spectrum in a XMass file (not available)
Definition XMassFile.h:226
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19