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.

References boost::lexical_cast(), MS_FT_ICR, MS_intensity_array, MS_ion_trap, MS_m_z_array, and pwiz::msdata::SpectrumListSimple::spectra.

Referenced by main(), and testMSDataConstruction().

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 :
57  MS_ion_trap);
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_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition: cv.hpp:376
boost::shared_ptr< Spectrum > SpectrumPtr
Definition: MSData.hpp:569
float lexical_cast(const std::string &str)
MS_intensity_array
intensity array: A data array of intensity values.
Definition: cv.hpp:1999
MS_m_z_array
m/z array: A data array of m/z values.
Definition: cv.hpp:1996
The structure into which encoded binary data goes. Byte ordering is always little endian (Intel style...
Definition: MSData.hpp:403
std::vector< SpectrumPtr > spectra
Definition: MSData.hpp:714
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition: cv.hpp:1126
The structure that captures the generation of a peak list (including the underlying acquisitions) ...
Definition: MSData.hpp:504
boost::shared_ptr< BinaryDataArray > BinaryDataArrayPtr
Definition: MSData.hpp:416

§ anal()

const char* anal ( const CVParam cvParam)

Definition at line 79 of file SpectrumIteratorTest.cpp.

References MS_FT_ICR, and MS_ion_trap.

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

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 }
MS_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition: cv.hpp:376
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition: cv.hpp:1126

§ printSpectrumList()

void printSpectrumList ( ostream &  os,
const SpectrumList sl 
)

Definition at line 90 of file SpectrumIteratorTest.cpp.

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

Referenced by main().

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 }
boost::shared_ptr< Spectrum > SpectrumPtr
Definition: MSData.hpp:569
virtual SpectrumPtr spectrum(size_t index, bool getBinaryData=false) const =0
retrieve a spectrum by index
virtual size_t size() const =0
returns the number of spectra
const char * anal(const CVParam &cvParam)
MS_mass_analyzer
mass analyzer: Terms used to describe the Analyzer.
Definition: cv.hpp:1786
ostream * os_

§ testBasic()

void testBasic ( const SpectrumList sl)

Definition at line 108 of file SpectrumIteratorTest.cpp.

References pwiz::msdata::Spectrum::binaryDataArrayPtrs, pwiz::msdata::SpectrumIdentity::id, MS_FT_ICR, MS_ion_trap, MS_mass_analyzer_type, os_, and unit_assert.

Referenced by main().

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 }
MS_FT_ICR
FT_ICR (fourier transform ion cyclotron resonance mass spectrometer): A mass spectrometer based on th...
Definition: cv.hpp:376
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
ostream * os_
MS_mass_analyzer_type
mass analyzer type: Mass analyzer separates the ions according to their mass-to-charge ratio...
Definition: cv.hpp:1759
MS_ion_trap
ion trap: A device for spatially confining ions using electric and magnetic fields alone or in combin...
Definition: cv.hpp:1126
#define unit_assert(x)
Definition: unit.hpp:85

§ doSomething()

void doSomething ( const Spectrum spectrum)

Definition at line 127 of file SpectrumIteratorTest.cpp.

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

Referenced by testForEach(), and testIntegerSet().

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 }
float lexical_cast(const std::string &str)
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:475
const char * anal(const CVParam &cvParam)
MS_mass_analyzer
mass analyzer: Terms used to describe the Analyzer.
Definition: cv.hpp:1786
ostream * os_
CVParam cvParamChild(CVID cvid) const
finds child of cvid in the container:
#define unit_assert(x)
Definition: unit.hpp:85

§ testForEach()

void testForEach ( const SpectrumList spectrumList)

Definition at line 145 of file SpectrumIteratorTest.cpp.

References doSomething(), and os_.

Referenced by main().

146 {
147  if (os_) *os_ << "testForEach(): \n";
148  for_each(SpectrumIterator(spectrumList), SpectrumIterator(), doSomething);
149 }
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
ostream * os_
void doSomething(const Spectrum &spectrum)

§ testIntegerSet()

void testIntegerSet ( const SpectrumList spectrumList)

Definition at line 152 of file SpectrumIteratorTest.cpp.

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

Referenced by main().

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 ...
Definition: IntegerSet.hpp:37
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
ostream * os_
void doSomething(const Spectrum &spectrum)
void insert(Interval interval)
insert an interval of integers into the virtual container

§ getScanNumber()

int getScanNumber ( const Spectrum spectrum)
inline

Definition at line 172 of file SpectrumIteratorTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, and boost::lexical_cast().

Referenced by testSieve().

173 {
174  return lexical_cast<int>(spectrum.id);
175 }
float lexical_cast(const std::string &str)
std::string id
a unique identifier for this spectrum. It should be expected that external files may use this identif...
Definition: MSData.hpp:475

§ testSieve()

void testSieve ( const SpectrumList spectrumList)

Definition at line 188 of file SpectrumIteratorTest.cpp.

References getScanNumber(), os_, and unit_assert.

Referenced by main().

189 {
190  vector<int> ftScanNumbers;
191 
192  FTSieve sieve;
193  SpectrumIterator::Config config(sieve, false);
194 
195  transform(SpectrumIterator(spectrumList, config),
196  SpectrumIterator(),
197  back_inserter(ftScanNumbers),
198  getScanNumber);
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 provides convenient iteration through a set of scans in a SpectrumList.
ostream * os_
SpectrumIterator configuration – note that constructors allow automatic conversion from IntegerSet ...
#define unit_assert(x)
Definition: unit.hpp:85

§ testIteratorEquality()

void testIteratorEquality ( const SpectrumList spectrumList)

Definition at line 216 of file SpectrumIteratorTest.cpp.

References os_, and unit_assert.

Referenced by main().

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 }
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
ostream * os_
#define unit_assert(x)
Definition: unit.hpp:85

§ testMSDataConstruction()

void testMSDataConstruction ( )

Definition at line 234 of file SpectrumIteratorTest.cpp.

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

Referenced by main().

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 }
SpectrumIterator provides convenient iteration through a set of scans in a SpectrumList.
const char * anal(const CVParam &cvParam)
Run run
a run in mzML should correspond to a single, consecutive and coherent set of scans on an instrument...
Definition: MSData.hpp:882
MS_mass_analyzer
mass analyzer: Terms used to describe the Analyzer.
Definition: cv.hpp:1786
ostream * os_
void initializeSpectrumList(SpectrumListSimple &spectrumList)
SpectrumListPtr spectrumListPtr
all mass spectra and the acquisitions underlying them are described and attached here. Subsidiary data arrays are also both described and attached here.
Definition: MSData.hpp:823
boost::shared_ptr< SpectrumListSimple > SpectrumListSimplePtr
Definition: MSData.hpp:727
This is the root element of ProteoWizard; it represents the mzML element, defined as: intended to cap...
Definition: MSData.hpp:845
Simple writeable in-memory implementation of SpectrumList.
Definition: MSData.hpp:712
#define unit_assert(x)
Definition: unit.hpp:85

§ main()

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

Definition at line 256 of file SpectrumIteratorTest.cpp.

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

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 testIteratorEquality(const SpectrumList &spectrumList)
void testForEach(const SpectrumList &spectrumList)
#define TEST_EPILOG
Definition: unit.hpp:182
ostream * os_
void initializeSpectrumList(SpectrumListSimple &spectrumList)
void testMSDataConstruction()
void testIntegerSet(const SpectrumList &spectrumList)
#define TEST_FAILED(x)
Definition: unit.hpp:176
void testSieve(const SpectrumList &spectrumList)
#define TEST_PROLOG(argc, argv)
Definition: unit.hpp:174
void printSpectrumList(ostream &os, const SpectrumList &sl)
void testBasic(const SpectrumList &sl)
Simple writeable in-memory implementation of SpectrumList.
Definition: MSData.hpp:712

Variable Documentation

§ os_

ostream* os_ = 0