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

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().

{
// initialize with scans:
// scan 0: IT
// scan 5: FT (1,100)
// scan 10: IT (1,100), (2,200)
// scan 15: FT (1,100), (2,200), (3,300)
// scan 20: IT (1,100), (2,200), (3,300), (4,400)
// ...
for (int i=0; i<=10; i++)
{
SpectrumPtr spectrum(new Spectrum);
spectrum->id = lexical_cast<string>(i*5);
spectrum->cvParams.push_back(i%2 ?
bdMZ->cvParams.push_back(MS_m_z_array);
spectrum->binaryDataArrayPtrs.push_back(bdMZ);
bdIntensity->cvParams.push_back(MS_intensity_array);
spectrum->binaryDataArrayPtrs.push_back(bdIntensity);
for (int j=1; j<=i; j++)
{
bdMZ->data.push_back(j);
bdIntensity->data.push_back(100*j);
}
spectrum->defaultArrayLength = i;
spectrumList.spectra.push_back(spectrum);
}
}
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().

{
if (cvParam == MS_FT_ICR)
return "FT";
else if (cvParam == MS_ion_trap)
return "IT";
else
return "Unknown";
}
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().

{
if (os_) *os_ << "printSpectrumList()\n";
for (unsigned int i=0; i<sl.size(); i++)
{
SpectrumPtr spectrum = sl.spectrum(i);
os << spectrum->id << " "
<< anal(spectrum->cvParamChild(MS_mass_analyzer)) << endl;
vector<MZIntensityPair> mziPairs;
spectrum->getMZIntensityPairs(mziPairs);
copy(mziPairs.begin(), mziPairs.end(), ostream_iterator<MZIntensityPair>(os,""));
os << endl;
}
}
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.

{
if (os_) *os_ << "testBasic()\n";
unit_assert(it->id == "0");
unit_assert(it->binaryDataArrayPtrs.size() == 2);
++it; ++it; ++it; ++it; ++it; // advance to scan 5
unit_assert(it->id == "25");
unit_assert(it->binaryDataArrayPtrs.size() == 2 &&
it->binaryDataArrayPtrs[0]->data.size() == 5);
}
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().

{
if (os_) *os_ << "spectrum: " << spectrum.id << " "
<< anal(spectrum.cvParamChild(MS_mass_analyzer)) << endl;
vector<MZIntensityPair> pairs;
spectrum.getMZIntensityPairs(pairs);
if (os_)
{
copy(pairs.begin(), pairs.end(), ostream_iterator<MZIntensityPair>(*os_,""));
*os_ << endl;
}
unit_assert((int)pairs.size()*5 == lexical_cast<int>(spectrum.id));
}
void testForEach ( const SpectrumList spectrumList)

Definition at line 145 of file SpectrumIteratorTest.cpp.

References doSomething(), and os_.

Referenced by main().

{
if (os_) *os_ << "testForEach(): \n";
for_each(SpectrumIterator(spectrumList), SpectrumIterator(), doSomething);
}
void testIntegerSet ( const SpectrumList spectrumList)

Definition at line 152 of file SpectrumIteratorTest.cpp.

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

Referenced by main().

{
// iterate through even scan numbers
if (os_) *os_ << "testIntegerSet():\n";
IntegerSet scanNumbers;
for (int i=2; i<=50; i+=2) // note that some scan numbers don't exist in spectrumList
scanNumbers.insert(i);
// loop written for illustration
// note automatic conversion from IntegerSet to SpectrumIterator::Config
for (SpectrumIterator it(spectrumList, scanNumbers); it!=SpectrumIterator(); ++it)
doSomething(*it);
// using for_each:
for_each(SpectrumIterator(spectrumList, scanNumbers), SpectrumIterator(), doSomething);
}
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().

{
return lexical_cast<int>(spectrum.id);
}
void testSieve ( const SpectrumList spectrumList)

Definition at line 188 of file SpectrumIteratorTest.cpp.

References getScanNumber(), os_, and unit_assert.

Referenced by main().

{
vector<int> ftScanNumbers;
FTSieve sieve;
SpectrumIterator::Config config(sieve, false);
transform(SpectrumIterator(spectrumList, config),
back_inserter(ftScanNumbers),
if (os_)
{
*os_ << "testSieve():\n";
copy(ftScanNumbers.begin(), ftScanNumbers.end(), ostream_iterator<int>(*os_, " "));
*os_ << endl;
}
unit_assert(ftScanNumbers.size() == 5);
unit_assert(ftScanNumbers[0] == 5);
unit_assert(ftScanNumbers[1] == 15);
unit_assert(ftScanNumbers[2] == 25);
unit_assert(ftScanNumbers[3] == 35);
unit_assert(ftScanNumbers[4] == 45);
}
void testIteratorEquality ( const SpectrumList spectrumList)

Definition at line 216 of file SpectrumIteratorTest.cpp.

References os_, and unit_assert.

Referenced by main().

{
if (os_) *os_ << "testIteratorEquality()\n";
SpectrumIterator it(spectrumList);
++it; ++it; ++it;
SpectrumIterator jt(spectrumList);
unit_assert(it!=jt);
++jt;
unit_assert(it!=jt);
++jt;
unit_assert(it!=jt);
++jt;
unit_assert(it==jt);
}
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().

{
if (os_) *os_ << "testMSDataConstruction()\n";
MSData msd;
msd.run.spectrumListPtr = sl;
int i = 0;
FTSieve sieve;
for (SpectrumIterator it(msd, sieve); it!=SpectrumIterator(); ++it, ++i)
{
if (os_) *os_ << it->id << " "
<< anal(it->cvParamChild(MS_mass_analyzer)) << endl;
unit_assert(it->id == lexical_cast<string>(5+i*10));
}
}
int main ( int  argc,
char *  argv[] 
)

Definition at line 256 of file SpectrumIteratorTest.cpp.

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

{
TEST_PROLOG(argc, argv)
try
{
if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
SpectrumListSimple spectrumList;
initializeSpectrumList(spectrumList);
if (os_) printSpectrumList(*os_, spectrumList);
testBasic(spectrumList);
testForEach(spectrumList);
testIntegerSet(spectrumList);
testSieve(spectrumList);
testIteratorEquality(spectrumList);
}
catch (exception& e)
{
TEST_FAILED(e.what())
}
catch (...)
{
TEST_FAILED("Caught unknown exception.")
}
}

Variable Documentation

ostream* os_ = 0

Definition at line 37 of file SpectrumIteratorTest.cpp.