ProteoWizard
Classes | Functions | Variables
SpectrumList_FilterTest.cpp File Reference
#include "SpectrumList_Filter.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/utility/misc/IntegerSet.hpp"
#include "pwiz/utility/misc/Std.hpp"
#include "pwiz/data/msdata/examples.hpp"
#include "pwiz/data/msdata/Serializer_mzML.hpp"
#include <cstring>

Go to the source code of this file.

Classes

struct  EvenPredicate
struct  EvenMS2Predicate
struct  SelectedIndexPredicate
struct  HasBinaryDataPredicate

Functions

void printSpectrumList (const SpectrumList &sl, ostream &os)
SpectrumListPtr createSpectrumList ()
void testEven (SpectrumListPtr sl)
void testEvenMS2 (SpectrumListPtr sl)
void testSelectedIndices (SpectrumListPtr sl)
void testHasBinaryData (SpectrumListPtr sl)
void testIndexSet (SpectrumListPtr sl)
void testScanNumberSet (SpectrumListPtr sl)
void testScanEventSet (SpectrumListPtr sl)
void testScanTimeRange (SpectrumListPtr sl)
void testMSLevelSet (SpectrumListPtr sl)
void testMS2Activation (SpectrumListPtr sl)
void testMassAnalyzerFilter (SpectrumListPtr sl)
void test ()
int main (int argc, char *argv[])

Variables

ostream * os_ = 0

Function Documentation

void printSpectrumList ( const SpectrumList sl,
ostream &  os 
)

Definition at line 43 of file SpectrumList_FilterTest.cpp.

References MS_ms_level, MS_preset_scan_configuration, MS_scan_start_time, pwiz::msdata::SpectrumList::size(), and pwiz::msdata::SpectrumList::spectrum().

Referenced by createSpectrumList(), main(), test(), testEven(), testEvenMS2(), testHasBinaryData(), testIndexSet(), testMassAnalyzerFilter(), testMS2Activation(), testMSLevelSet(), testScanEventSet(), testScanNumberSet(), testScanTimeRange(), and testSelectedIndices().

{
os << "size: " << sl.size() << endl;
for (size_t i=0, end=sl.size(); i<end; i++)
{
SpectrumPtr spectrum = sl.spectrum(i, false);
os << spectrum->index << " "
<< spectrum->id << " "
<< "ms" << spectrum->cvParam(MS_ms_level).value << " "
<< "scanEvent:" << spectrum->scanList.scans[0].cvParam(MS_preset_scan_configuration).value << " "
<< "scanTime:" << spectrum->scanList.scans[0].cvParam(MS_scan_start_time).timeInSeconds() << " "
<< endl;
}
}
SpectrumListPtr createSpectrumList ( )

Definition at line 60 of file SpectrumList_FilterTest.cpp.

References boost::lexical_cast(), MS_collision_induced_dissociation, MS_electron_transfer_dissociation, MS_high_energy_collision_induced_dissociation, MS_IRMPD, MS_MS1_spectrum, MS_ms_level, MS_MSn_spectrum, MS_number_of_counts, MS_orbitrap, MS_preset_scan_configuration, MS_radial_ejection_linear_ion_trap, MS_scan_start_time, os_, printSpectrumList(), and UO_second.

Referenced by test().

{
for (size_t i=0; i<10; ++i)
{
SpectrumPtr spectrum(new Spectrum);
spectrum->index = i;
spectrum->id = "scan=" + lexical_cast<string>(100+i);
spectrum->setMZIntensityPairs(vector<MZIntensityPair>(i), MS_number_of_counts);
bool isMS1 = i%3==0;
spectrum->set(MS_ms_level, isMS1 ? 1 : 2);
spectrum->set(isMS1 ? MS_MS1_spectrum : MS_MSn_spectrum);
// outfit the spectra with mass analyzer definitions to test the massAnalyzer filter
spectrum->scanList.scans.push_back(Scan());
spectrum->scanList.scans[0].instrumentConfigurationPtr = InstrumentConfigurationPtr(new InstrumentConfiguration());
InstrumentConfigurationPtr p = spectrum->scanList.scans[0].instrumentConfigurationPtr;
if (i%3 == 0)
{
p->componentList.push_back(Component(MS_orbitrap, 0/*order*/));
}
else
{
if (i%2)
p->componentList.push_back(Component(MS_orbitrap, 0/*order*/));
else
p->componentList.push_back(Component(MS_radial_ejection_linear_ion_trap, 0/*order*/));
}
if (i%3 != 0)
spectrum->precursors.push_back(Precursor(500, 3));
// add precursors and activation types to the MS2 spectra
if (i==1 || i ==5) // ETD
{
spectrum->precursors[0].activation.set(MS_electron_transfer_dissociation);
}
else if (i==2) // CID
{
spectrum->precursors[0].activation.set(MS_collision_induced_dissociation);
}
else if (i==4) // HCD
{
spectrum->precursors[0].activation.set(MS_high_energy_collision_induced_dissociation);
}
else if (i==8) // IRMPD
{
spectrum->precursors[0].activation.set(MS_IRMPD);
}
else if (i==7) // ETD + SA
{
spectrum->precursors[0].activation.set(MS_electron_transfer_dissociation);
spectrum->precursors[0].activation.set(MS_collision_induced_dissociation);
}
spectrum->scanList.scans.push_back(Scan());
spectrum->scanList.scans[0].set(MS_preset_scan_configuration, i%4);
spectrum->scanList.scans[0].set(MS_scan_start_time, 420+i, UO_second);
sl->spectra.push_back(spectrum);
}
if (os_)
{
*os_ << "original spectrum list:\n";
*os_ << endl;
}
return sl;
}
void testEven ( SpectrumListPtr  sl)

Definition at line 144 of file SpectrumList_FilterTest.cpp.

References os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrum(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testEven:\n";
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 5);
for (size_t i=0, end=filter.size(); i<end; i++)
{
const SpectrumIdentity& id = filter.spectrumIdentity(i);
unit_assert(id.index == i);
unit_assert(id.id == "scan=" + lexical_cast<string>(100+i*2));
SpectrumPtr spectrum = filter.spectrum(i);
unit_assert(spectrum->index == i);
unit_assert(spectrum->id == "scan=" + lexical_cast<string>(100+i*2));
}
}
void testEvenMS2 ( SpectrumListPtr  sl)

Definition at line 194 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testEvenMS2:\n";
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 3);
unit_assert(filter.spectrumIdentity(0).id == "scan=102");
unit_assert(filter.spectrumIdentity(1).id == "scan=104");
unit_assert(filter.spectrumIdentity(2).id == "scan=108");
}
void testSelectedIndices ( SpectrumListPtr  sl)

Definition at line 235 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

{
if (os_) *os_ << "testSelectedIndices:\n";
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 3);
unit_assert(filter.spectrumIdentity(0).id == "scan=101");
unit_assert(filter.spectrumIdentity(1).id == "scan=103");
unit_assert(filter.spectrumIdentity(2).id == "scan=105");
}
void testHasBinaryData ( SpectrumListPtr  sl)
void testIndexSet ( SpectrumListPtr  sl)

Definition at line 310 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, pwiz::util::IntegerSet::insert(), os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

{
if (os_) *os_ << "testIndexSet:\n";
IntegerSet indexSet;
indexSet.insert(3,5);
indexSet.insert(7);
indexSet.insert(9);
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 5);
unit_assert(filter.spectrumIdentity(0).id == "scan=103");
unit_assert(filter.spectrumIdentity(1).id == "scan=104");
unit_assert(filter.spectrumIdentity(2).id == "scan=105");
unit_assert(filter.spectrumIdentity(3).id == "scan=107");
unit_assert(filter.spectrumIdentity(4).id == "scan=109");
}
void testScanNumberSet ( SpectrumListPtr  sl)

Definition at line 336 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, pwiz::util::IntegerSet::insert(), os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testScanNumberSet:\n";
IntegerSet scanNumberSet;
scanNumberSet.insert(102,104);
scanNumberSet.insert(107);
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 4);
unit_assert(filter.spectrumIdentity(0).id == "scan=102");
unit_assert(filter.spectrumIdentity(1).id == "scan=103");
unit_assert(filter.spectrumIdentity(2).id == "scan=104");
unit_assert(filter.spectrumIdentity(3).id == "scan=107");
}
void testScanEventSet ( SpectrumListPtr  sl)

Definition at line 360 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, pwiz::util::IntegerSet::insert(), os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testScanEventSet:\n";
IntegerSet scanEventSet;
scanEventSet.insert(0,0);
scanEventSet.insert(2,3);
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 7);
unit_assert(filter.spectrumIdentity(0).id == "scan=100");
unit_assert(filter.spectrumIdentity(1).id == "scan=102");
unit_assert(filter.spectrumIdentity(2).id == "scan=103");
unit_assert(filter.spectrumIdentity(3).id == "scan=104");
unit_assert(filter.spectrumIdentity(4).id == "scan=106");
unit_assert(filter.spectrumIdentity(5).id == "scan=107");
unit_assert(filter.spectrumIdentity(6).id == "scan=108");
}
void testScanTimeRange ( SpectrumListPtr  sl)

Definition at line 387 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testScanTimeRange:\n";
const double low = 422.5;
const double high = 427.5;
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 5);
unit_assert(filter.spectrumIdentity(0).id == "scan=103");
unit_assert(filter.spectrumIdentity(1).id == "scan=104");
unit_assert(filter.spectrumIdentity(2).id == "scan=105");
unit_assert(filter.spectrumIdentity(3).id == "scan=106");
unit_assert(filter.spectrumIdentity(4).id == "scan=107");
}
void testMSLevelSet ( SpectrumListPtr  sl)

Definition at line 411 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, pwiz::util::IntegerSet::insert(), os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testMSLevelSet:\n";
IntegerSet msLevelSet;
msLevelSet.insert(1);
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 4);
unit_assert(filter.spectrumIdentity(0).id == "scan=100");
unit_assert(filter.spectrumIdentity(1).id == "scan=103");
unit_assert(filter.spectrumIdentity(2).id == "scan=106");
unit_assert(filter.spectrumIdentity(3).id == "scan=109");
IntegerSet msLevelSet2;
msLevelSet2.insert(2);
if (os_)
{
printSpectrumList(filter2, *os_);
*os_ << endl;
}
unit_assert(filter2.size() == 6);
unit_assert(filter2.spectrumIdentity(0).id == "scan=101");
unit_assert(filter2.spectrumIdentity(1).id == "scan=102");
unit_assert(filter2.spectrumIdentity(2).id == "scan=104");
unit_assert(filter2.spectrumIdentity(3).id == "scan=105");
unit_assert(filter2.spectrumIdentity(4).id == "scan=107");
unit_assert(filter2.spectrumIdentity(5).id == "scan=108");
}
void testMS2Activation ( SpectrumListPtr  sl)

Definition at line 452 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, MS_collision_induced_dissociation, MS_electron_transfer_dissociation, MS_high_energy_collision_induced_dissociation, MS_IRMPD, os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testMS2Activation:\n";
set<CVID> cvIDs;
// CID
cvIDs.insert(MS_IRMPD);
SpectrumList_Filter filter(ms2filter,
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 1);
unit_assert(filter.spectrumIdentity(0).id == "scan=102");
// ETD + SA
cvIDs.clear();
SpectrumList_Filter filter1(ms2filter,
if (os_)
{
printSpectrumList(filter1, *os_);
*os_ << endl;
}
unit_assert(filter1.size() == 1);
unit_assert(filter1.spectrumIdentity(0).id == "scan=107");
// ETD
cvIDs.clear();
SpectrumList_Filter filter2(ms2filter,
if (os_)
{
printSpectrumList(filter2, *os_);
*os_ << endl;
}
unit_assert(filter2.size() == 3);
unit_assert(filter2.spectrumIdentity(0).id == "scan=101");
unit_assert(filter2.spectrumIdentity(1).id == "scan=105");
unit_assert(filter2.spectrumIdentity(2).id == "scan=107");
// HCD
cvIDs.clear();
SpectrumList_Filter filter3(ms2filter,
if (os_)
{
printSpectrumList(filter3, *os_);
*os_ << endl;
}
unit_assert(filter3.size() == 1);
unit_assert(filter3.spectrumIdentity(0).id == "scan=104");
// IRMPD
cvIDs.clear();
cvIDs.insert(MS_IRMPD);
SpectrumList_Filter filter4(ms2filter,
if (os_)
{
printSpectrumList(filter4, *os_);
*os_ << endl;
}
unit_assert(filter4.size() == 1);
unit_assert(filter4.spectrumIdentity(0).id == "scan=108");
}
void testMassAnalyzerFilter ( SpectrumListPtr  sl)

Definition at line 536 of file SpectrumList_FilterTest.cpp.

References pwiz::msdata::SpectrumIdentity::id, MS_fourier_transform_ion_cyclotron_resonance_mass_spectrometer, MS_ion_trap, MS_orbitrap, os_, printSpectrumList(), pwiz::analysis::SpectrumList_Filter::size(), pwiz::analysis::SpectrumList_Filter::spectrumIdentity(), and unit_assert.

Referenced by test().

{
if (os_) *os_ << "testMassAnalyzerFilter:\n";
set<CVID> cvIDs;
// msconvert mass analyzer filter FTMS option
cvIDs.insert(MS_orbitrap);
SpectrumList_Filter filter(sl,
if (os_)
{
*os_ << endl;
}
unit_assert(filter.size() == 7);
unit_assert(filter.spectrumIdentity(0).id == "scan=100");
cvIDs.clear();
// msconvert mass analyzer filter ITMS option
cvIDs.insert(MS_ion_trap);
SpectrumList_Filter filter1(sl,
if (os_)
{
printSpectrumList(filter1, *os_);
*os_ << endl;
}
unit_assert(filter1.size() == 3);
unit_assert(filter1.spectrumIdentity(0).id == "scan=102");
}
void test ( )
int main ( int  argc,
char *  argv[] 
)

Definition at line 590 of file SpectrumList_FilterTest.cpp.

References e(), os_, test(), TEST_EPILOG, TEST_FAILED, and TEST_PROLOG.

{
TEST_PROLOG(argc, argv)
try
{
if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
test();
}
catch (exception& e)
{
TEST_FAILED(e.what())
}
catch (...)
{
TEST_FAILED("Caught unknown exception.")
}
}

Variable Documentation

ostream* os_ = 0

Definition at line 40 of file SpectrumList_FilterTest.cpp.