ProteoWizard
Classes | Functions | Variables
SpectrumIteratorTest.cpp File Reference
#include "SpectrumIterator.hpp"
#include "MSData.hpp"
#include "pwiz/utility/misc/IntegerSet.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/utility/misc/Std.hpp"
#include <cstring>

Go to the source code of this file.

Classes

class  FTSieve
 

Functions

void initializeSpectrumList (SpectrumListSimple &spectrumList)
 
const char * anal (const CVParam &cvParam)
 
void printSpectrumList (ostream &os, const SpectrumList &sl)
 
void testBasic (const SpectrumList &sl)
 
void doSomething (const Spectrum &spectrum)
 
void testForEach (const SpectrumList &spectrumList)
 
void testIntegerSet (const SpectrumList &spectrumList)
 
int getScanNumber (const Spectrum &spectrum)
 
void testSieve (const SpectrumList &spectrumList)
 
void testIteratorEquality (const SpectrumList &spectrumList)
 
void testMSDataConstruction ()
 
int main (int argc, char *argv[])
 

Variables

ostream * os_ = 0
 

Function Documentation

◆ initializeSpectrumList()

void initializeSpectrumList ( SpectrumListSimple spectrumList)

Definition at line 40 of file SpectrumIteratorTest.cpp.

41{
42 // initialize with scans:
43 // scan 0: IT
44 // scan 5: FT (1,100)
45 // scan 10: IT (1,100), (2,200)
46 // scan 15: FT (1,100), (2,200), (3,300)
47 // scan 20: IT (1,100), (2,200), (3,300), (4,400)
48 // ...
49
50 for (int i=0; i<=10; i++)
51 {
52 SpectrumPtr spectrum(new Spectrum);
53 spectrum->id = lexical_cast<string>(i*5);
54
55 spectrum->cvParams.push_back(i%2 ?
56 MS_FT_ICR :
58
60 bdMZ->cvParams.push_back(MS_m_z_array);
61 spectrum->binaryDataArrayPtrs.push_back(bdMZ);
62
63 BinaryDataArrayPtr bdIntensity(new BinaryDataArray);
64 bdIntensity->cvParams.push_back(MS_intensity_array);
65 spectrum->binaryDataArrayPtrs.push_back(bdIntensity);
66
67 for (int j=1; j<=i; j++)
68 {
69 bdMZ->data.push_back(j);
70 bdIntensity->data.push_back(100*j);
71 }
72
73 spectrum->defaultArrayLength = i;
74 spectrumList.spectra.push_back(spectrum);
75 }
76}
MS_intensity_array
intensity array: A data array of intensity values.
Definition cv.hpp:2151
MS_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition cv.hpp:537
MS_m_z_array
m/z array: A data array of m/z values.
Definition cv.hpp:2148
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition cv.hpp:1278
boost::shared_ptr< BinaryDataArray > BinaryDataArrayPtr
Definition MSData.hpp:417
boost::shared_ptr< Spectrum > SpectrumPtr
Definition MSData.hpp:573
The structure into which encoded binary data goes. Byte ordering is always little endian (Intel style...
Definition MSData.hpp:405
The structure that captures the generation of a peak list (including the underlying acquisitions)
Definition MSData.hpp:506
std::vector< SpectrumPtr > spectra
Definition MSData.hpp:718

References MS_FT_ICR, MS_intensity_array, MS_ion_trap, MS_m_z_array, and pwiz::msdata::SpectrumListSimple::spectra.

Referenced by main(), and testMSDataConstruction().

◆ anal()

const char * anal ( const CVParam cvParam)

Definition at line 79 of file SpectrumIteratorTest.cpp.

80{
81 if (cvParam == MS_FT_ICR)
82 return "FT";
83 else if (cvParam == MS_ion_trap)
84 return "IT";
85 else
86 return "Unknown";
87}

References MS_FT_ICR, and MS_ion_trap.

Referenced by doSomething(), printSpectrumList(), test(), and testMSDataConstruction().

◆ printSpectrumList()

void printSpectrumList ( ostream &  os,
const SpectrumList sl 
)

Definition at line 90 of file SpectrumIteratorTest.cpp.

91{
92 if (os_) *os_ << "printSpectrumList()\n";
93
94 for (unsigned int i=0; i<sl.size(); i++)
95 {
96 SpectrumPtr spectrum = sl.spectrum(i);
97 os << spectrum->id << " "
98 << anal(spectrum->cvParamChild(MS_mass_analyzer)) << endl;
99
100 vector<MZIntensityPair> mziPairs;
101 spectrum->getMZIntensityPairs(mziPairs);
102 copy(mziPairs.begin(), mziPairs.end(), ostream_iterator<MZIntensityPair>(os,""));
103 os << endl;
104 }
105}
const char * anal(const CVParam &cvParam)
ostream * os_
virtual size_t size() const =0
returns the number of spectra
virtual SpectrumPtr spectrum(size_t index, bool getBinaryData=false) const =0
retrieve a spectrum by index
MS_mass_analyzer
mass analyzer: Terms used to describe the Analyzer.
Definition cv.hpp:1938

References anal(), MS_mass_analyzer, os_, pwiz::msdata::SpectrumList::size(), and pwiz::msdata::SpectrumList::spectrum().

Referenced by main().

◆ testBasic()

void testBasic ( const SpectrumList sl)

Definition at line 108 of file SpectrumIteratorTest.cpp.

109{
110 if (os_) *os_ << "testBasic()\n";
111
112 SpectrumIterator it(sl);
113
114 unit_assert(it->id == "0");
115 unit_assert((*it).cvParamChild(MS_mass_analyzer_type) == MS_ion_trap);
116 unit_assert(it->binaryDataArrayPtrs.size() == 2);
117
118 ++it; ++it; ++it; ++it; ++it; // advance to scan 5
119
120 unit_assert(it->id == "25");
121 unit_assert(it->cvParamChild(MS_mass_analyzer_type) == MS_FT_ICR);
122 unit_assert(it->binaryDataArrayPtrs.size() == 2 &&
123 it->binaryDataArrayPtrs[0]->data.size() == 5);
124}
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
MS_mass_analyzer_type
mass analyzer type: Mass analyzer separates the ions according to their mass-to-charge ratio.
Definition cv.hpp:1911
#define unit_assert(x)
Definition unit.hpp:85

References pwiz::msdata::Spectrum::binaryDataArrayPtrs, pwiz::data::ParamContainer::cvParamChild(), pwiz::msdata::SpectrumIdentity::id, MS_FT_ICR, MS_ion_trap, MS_mass_analyzer_type, os_, and unit_assert.

◆ doSomething()

void doSomething ( const Spectrum spectrum)

Definition at line 127 of file SpectrumIteratorTest.cpp.

128{
129 if (os_) *os_ << "spectrum: " << spectrum.id << " "
130 << anal(spectrum.cvParamChild(MS_mass_analyzer)) << endl;
131
132 vector<MZIntensityPair> pairs;
133 spectrum.getMZIntensityPairs(pairs);
134
135 if (os_)
136 {
137 copy(pairs.begin(), pairs.end(), ostream_iterator<MZIntensityPair>(*os_,""));
138 *os_ << endl;
139 }
140
141 unit_assert((int)pairs.size()*5 == lexical_cast<int>(spectrum.id));
142}
CVParam cvParamChild(CVID cvid) const
finds child of cvid in the container:
void getMZIntensityPairs(std::vector< MZIntensityPair > &output) const
copy binary data arrays into m/z-intensity pair array
std::string id
a unique identifier for this spectrum. It should be expected that external files may use this identif...
Definition MSData.hpp:476

References anal(), pwiz::data::ParamContainer::cvParamChild(), pwiz::msdata::Spectrum::getMZIntensityPairs(), pwiz::msdata::SpectrumIdentity::id, MS_mass_analyzer, os_, and unit_assert.

Referenced by testForEach(), and testIntegerSet().

◆ testForEach()

void testForEach ( const SpectrumList spectrumList)

Definition at line 145 of file SpectrumIteratorTest.cpp.

146{
147 if (os_) *os_ << "testForEach(): \n";
148 for_each(SpectrumIterator(spectrumList), SpectrumIterator(), doSomething);
149}
void doSomething(const Spectrum &spectrum)

References doSomething(), and os_.

Referenced by main().

◆ testIntegerSet()

void testIntegerSet ( const SpectrumList spectrumList)

Definition at line 152 of file SpectrumIteratorTest.cpp.

153{
154 // iterate through even scan numbers
155
156 if (os_) *os_ << "testIntegerSet():\n";
157
158 IntegerSet scanNumbers;
159 for (int i=2; i<=50; i+=2) // note that some scan numbers don't exist in spectrumList
160 scanNumbers.insert(i);
161
162 // loop written for illustration
163 // note automatic conversion from IntegerSet to SpectrumIterator::Config
164 for (SpectrumIterator it(spectrumList, scanNumbers); it!=SpectrumIterator(); ++it)
165 doSomething(*it);
166
167 // using for_each:
168 for_each(SpectrumIterator(spectrumList, scanNumbers), SpectrumIterator(), doSomething);
169}
a virtual container of integers, accessible via an iterator interface, stored as union of intervals
void insert(Interval interval)
insert an interval of integers into the virtual container

References doSomething(), pwiz::util::IntegerSet::insert(), and os_.

Referenced by main().

◆ getScanNumber()

int getScanNumber ( const Spectrum spectrum)
inline

Definition at line 172 of file SpectrumIteratorTest.cpp.

173{
174 return lexical_cast<int>(spectrum.id);
175}

References pwiz::msdata::SpectrumIdentity::id.

Referenced by testSieve().

◆ testSieve()

void testSieve ( const SpectrumList spectrumList)

Definition at line 188 of file SpectrumIteratorTest.cpp.

189{
190 vector<int> ftScanNumbers;
191
192 FTSieve sieve;
193 SpectrumIterator::Config config(sieve, false);
194
195 transform(SpectrumIterator(spectrumList, config),
197 back_inserter(ftScanNumbers),
199
200 if (os_)
201 {
202 *os_ << "testSieve():\n";
203 copy(ftScanNumbers.begin(), ftScanNumbers.end(), ostream_iterator<int>(*os_, " "));
204 *os_ << endl;
205 }
206
207 unit_assert(ftScanNumbers.size() == 5);
208 unit_assert(ftScanNumbers[0] == 5);
209 unit_assert(ftScanNumbers[1] == 15);
210 unit_assert(ftScanNumbers[2] == 25);
211 unit_assert(ftScanNumbers[3] == 35);
212 unit_assert(ftScanNumbers[4] == 45);
213}
int getScanNumber(const Spectrum &spectrum)
SpectrumIterator configuration – note that constructors allow automatic conversion from IntegerSet or...

References getScanNumber(), os_, and unit_assert.

Referenced by main().

◆ testIteratorEquality()

void testIteratorEquality ( const SpectrumList spectrumList)

Definition at line 216 of file SpectrumIteratorTest.cpp.

217{
218 if (os_) *os_ << "testIteratorEquality()\n";
219
220 SpectrumIterator it(spectrumList);
221 ++it; ++it; ++it;
222
223 SpectrumIterator jt(spectrumList);
224 unit_assert(it!=jt);
225 ++jt;
226 unit_assert(it!=jt);
227 ++jt;
228 unit_assert(it!=jt);
229 ++jt;
230 unit_assert(it==jt);
231}

References os_, and unit_assert.

Referenced by main().

◆ testMSDataConstruction()

void testMSDataConstruction ( )

Definition at line 234 of file SpectrumIteratorTest.cpp.

235{
236 if (os_) *os_ << "testMSDataConstruction()\n";
237
240
241 MSData msd;
242 msd.run.spectrumListPtr = sl;
243
244 int i = 0;
245 FTSieve sieve;
246 for (SpectrumIterator it(msd, sieve); it!=SpectrumIterator(); ++it, ++i)
247 {
248 if (os_) *os_ << it->id << " "
249 << anal(it->cvParamChild(MS_mass_analyzer)) << endl;
250
251 unit_assert(it->id == lexical_cast<string>(5+i*10));
252 }
253}
void initializeSpectrumList(SpectrumListSimple &spectrumList)
boost::shared_ptr< SpectrumListSimple > SpectrumListSimplePtr
Definition MSData.hpp:731
This is the root element of ProteoWizard; it represents the mzML element, defined as: intended to cap...
Definition MSData.hpp:850
Run run
a run in mzML should correspond to a single, consecutive and coherent set of scans on an instrument.
Definition MSData.hpp:886
SpectrumListPtr spectrumListPtr
all mass spectra and the acquisitions underlying them are described and attached here....
Definition MSData.hpp:827
Simple writeable in-memory implementation of SpectrumList.
Definition MSData.hpp:717

References anal(), initializeSpectrumList(), MS_mass_analyzer, os_, pwiz::msdata::MSData::run, pwiz::msdata::Run::spectrumListPtr, and unit_assert.

Referenced by main().

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 256 of file SpectrumIteratorTest.cpp.

257{
258 TEST_PROLOG(argc, argv)
259
260 try
261 {
262 if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
263
264 SpectrumListSimple spectrumList;
265 initializeSpectrumList(spectrumList);
266 if (os_) printSpectrumList(*os_, spectrumList);
267
268 testBasic(spectrumList);
269 testForEach(spectrumList);
270 testIntegerSet(spectrumList);
271 testSieve(spectrumList);
272 testIteratorEquality(spectrumList);
274
275 }
276 catch (exception& e)
277 {
278 TEST_FAILED(e.what())
279 }
280 catch (...)
281 {
282 TEST_FAILED("Caught unknown exception.")
283 }
284
286}
void testBasic()
void testIteratorEquality(const SpectrumList &spectrumList)
void testForEach(const SpectrumList &spectrumList)
void testIntegerSet(const SpectrumList &spectrumList)
void testMSDataConstruction()
void printSpectrumList(ostream &os, const SpectrumList &sl)
void testSieve(const SpectrumList &spectrumList)
#define TEST_EPILOG
Definition unit.hpp:183
#define TEST_FAILED(x)
Definition unit.hpp:177
#define TEST_PROLOG(argc, argv)
Definition unit.hpp:175

References initializeSpectrumList(), os_, printSpectrumList(), TEST_EPILOG, TEST_FAILED, TEST_PROLOG, testBasic(), testForEach(), testIntegerSet(), testIteratorEquality(), testMSDataConstruction(), and testSieve().

Variable Documentation

◆ os_

ostream* os_ = 0