ProteoWizard
Functions
MSDataTest.cpp File Reference
#include "MSData.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/utility/misc/Std.hpp"

Go to the source code of this file.

Functions

void testSpectrumListSimple ()
void testChromatograms ()
void testIDParsing ()
void testAllDataProcessing ()
int main (int argc, const char *argv[])

Function Documentation

void testSpectrumListSimple ( )

Definition at line 33 of file MSDataTest.cpp.

References pwiz::msdata::SpectrumList::dataProcessingPtr(), pwiz::msdata::SpectrumList::find(), pwiz::msdata::SpectrumList::findNameValue(), pwiz::msdata::SpectrumIdentity::id, pwiz::msdata::SpectrumIdentity::index, pwiz::msdata::MZIntensityPair::intensity, MS_intensity_array, MS_ionization_type, MS_m_z_array, MS_MSn_spectrum, MS_number_of_counts, pwiz::msdata::MZIntensityPair::mz, pwiz::msdata::MSData::run, pwiz::msdata::SpectrumList::size(), pwiz::msdata::SpectrumList::spectrum(), pwiz::msdata::SpectrumList::spectrumIdentity(), pwiz::msdata::Run::spectrumListPtr, and unit_assert.

Referenced by main().

{
// fill in SpectrumListSimple
shared_ptr<SpectrumListSimple> spectrumListSimple(new SpectrumListSimple);
unit_assert(spectrumListSimple->empty());
spectrumListSimple->dp = DataProcessingPtr(new DataProcessing("dp"));
unit_assert(!spectrumListSimple->empty());
SpectrumPtr spectrum0(new Spectrum);
spectrum0->index = 0;
spectrum0->id = "scan=1";
// add m/z values 0,...,9
for (unsigned int i=0; i<10; i++) bd_mz->data.push_back(i);
bd_mz->cvParams.push_back(MS_m_z_array);
double* buffer = &bd_mz->data[0];
// add intensity values 10,...,1
for (unsigned int i=0; i<10; i++) bd_intensity->data.push_back(10-i);
bd_intensity->cvParams.push_back(MS_intensity_array);
spectrum0->binaryDataArrayPtrs.push_back(bd_mz);
spectrum0->binaryDataArrayPtrs.push_back(bd_intensity);
spectrum0->defaultArrayLength = 10;
SpectrumPtr spectrum1(new Spectrum);
spectrum1->index = 1;
spectrum1->id = "scan=2";
spectrum1->cvParams.push_back(MS_MSn_spectrum);
spectrum1->cvParams.push_back(CVParam(MS_ionization_type, 420));
spectrumListSimple->spectra.push_back(spectrum0);
spectrumListSimple->spectra.push_back(spectrum1);
// let an MSData object hold onto it as a SpectrumListPtr
MSData data;
data.run.spectrumListPtr = spectrumListSimple;
// test SpectrumList interface
// verify index()
const SpectrumList& spectrumList = *data.run.spectrumListPtr;
unit_assert(spectrumList.size() == 2);
unit_assert(spectrumList.find("scan=1") == 0);
unit_assert(spectrumList.find("scan=2") == 1);
// verify findNameValue
IndexList result = spectrumList.findNameValue("scan", "1");
unit_assert(result.size()==1 && result[0]==0);
result = spectrumList.findNameValue("scan", "2");
unit_assert(result.size()==1 && result[0]==1);
// verify spectrumIdentity()
const SpectrumIdentity& identity0 = spectrumList.spectrumIdentity(0);
unit_assert(identity0.index == spectrum0->index);
unit_assert(identity0.id == spectrum0->id);
const SpectrumIdentity& identity1 = spectrumList.spectrumIdentity(1);
unit_assert(identity1.index == spectrum1->index);
unit_assert(identity1.id == spectrum1->id);
// verify spectrum 0
SpectrumPtr spectrum = spectrumList.spectrum(0);
unit_assert(spectrum->index == spectrum0->index);
unit_assert(spectrum->id == spectrum0->id);
// verify no extra copying of binary data arrays
unit_assert(spectrum->binaryDataArrayPtrs.size() == 2);
unit_assert(&(spectrum->binaryDataArrayPtrs[0]->data[0]) == buffer);
// verify getMZIntensityPairs()
unit_assert(spectrum->binaryDataArrayPtrs[0]->hasCVParam(MS_m_z_array) == true);
unit_assert(spectrum->binaryDataArrayPtrs[1]->hasCVParam(MS_intensity_array) == true);
vector<MZIntensityPair> mziPairs;
spectrum->getMZIntensityPairs(mziPairs);
unit_assert(mziPairs.size() == 10);
vector<double> doubleArray;
unit_assert(spectrum->defaultArrayLength == 10);
doubleArray.resize(spectrum->defaultArrayLength*2);
spectrum->getMZIntensityPairs(reinterpret_cast<MZIntensityPair*>(&doubleArray[0]),
spectrum->defaultArrayLength);
for (unsigned int i=0; i<10; i++)
{
const MZIntensityPair& p = mziPairs[i];
unit_assert(p.mz == i);
unit_assert(p.intensity == 10-i);
unit_assert(doubleArray[2*i] == i);
unit_assert(doubleArray[2*i+1] == 10-i);
}
// verify setMZIntensityPairs()
spectrum->binaryDataArrayPtrs.clear();
unit_assert(spectrum->binaryDataArrayPtrs.empty());
vector<MZIntensityPair> mziPairs2;
for (unsigned int i=0; i<10; i++)
mziPairs2.push_back(MZIntensityPair(2*i, 3*i));
spectrum->setMZIntensityPairs(mziPairs2, MS_number_of_counts);
unit_assert(spectrum->binaryDataArrayPtrs.size() == 2);
unit_assert(spectrum->binaryDataArrayPtrs[0]->hasCVParam(MS_m_z_array) == true);
unit_assert(spectrum->binaryDataArrayPtrs[1]->hasCVParam(MS_intensity_array) == true);
unit_assert(spectrum->binaryDataArrayPtrs[1]->cvParam(MS_intensity_array).units == MS_number_of_counts);
unit_assert(spectrum->binaryDataArrayPtrs[0]->data.size() == 10);
unit_assert(spectrum->binaryDataArrayPtrs[1]->data.size() == 10);
for (unsigned int i=0; i<10; i++)
unit_assert(spectrum->binaryDataArrayPtrs[0]->data[i] == 2*i &&
spectrum->binaryDataArrayPtrs[1]->data[i] == 3*i);
// verify spectrum 1
spectrum = spectrumList.spectrum(1);
unit_assert(spectrum->index == spectrum1->index);
unit_assert(spectrum->id == spectrum1->id);
// verify DataProcessingPtr
unit_assert(spectrumList.dataProcessingPtr().get() &&
spectrumList.dataProcessingPtr()->id == "dp");
}
void testChromatograms ( )

Definition at line 164 of file MSDataTest.cpp.

References pwiz::msdata::ChromatogramList::chromatogram(), pwiz::msdata::ChromatogramListSimple::chromatograms, pwiz::msdata::ChromatogramList::dataProcessingPtr(), pwiz::msdata::ChromatogramListSimple::dp, MS_number_of_counts, pwiz::msdata::ChromatogramList::size(), unit_assert, and UO_second.

Referenced by main().

{
for (int i=0; i<3; i++)
{
vector<TimeIntensityPair> pairs;
for (int j=0; j<10; j++) pairs.push_back(TimeIntensityPair(j, 10*i+j));
cls.chromatograms.back()->setTimeIntensityPairs(pairs, UO_second, MS_number_of_counts);
}
cls.dp = dp;
ChromatogramList& cl = cls;
unit_assert(cl.size() == 3);
for (size_t i=0; i<3; i++)
{
vector<TimeIntensityPair> result;
cl.chromatogram(i)->getTimeIntensityPairs(result);
unit_assert(result.size() == 10);
for (size_t j=0; j<10; j++)
unit_assert(result[j].time==j && result[j].intensity==10*i+j);
}
cl.dataProcessingPtr()->id == "dp");
}
void testIDParsing ( )

Definition at line 197 of file MSDataTest.cpp.

References pwiz::msdata::id::abbreviate(), CVID_Unknown, e(), MS_Bruker_Agilent_YEP_nativeID_format, MS_Bruker_BAF_nativeID_format, MS_multiple_peak_list_nativeID_format, MS_no_nativeID_format, MS_scan_number_only_nativeID_format, MS_spectrum_identifier_nativeID_format, MS_Thermo_nativeID_format, MS_WIFF_nativeID_format, pwiz::msdata::id::parse(), pwiz::msdata::id::translateNativeIDToScanNumber(), pwiz::msdata::id::translateScanNumberToNativeID(), unit_assert, unit_assert_equal, and pwiz::msdata::id::value().

Referenced by main().

{
string id = "hair=blue favorite=420 age=36.175 upsideDown=1";
map<string,string> parsedID = id::parse(id);
unit_assert(parsedID.size() == 4);
unit_assert(id::value(id, "hair") == "blue");
unit_assert(id::valueAs<int>(id, "favorite") == 420);
unit_assert_equal(id::valueAs<double>(id, "age"), 36.175, 1e-6);
unit_assert(id::valueAs<bool>(id, "upsideDown") == true);
unit_assert(id::abbreviate(id) == "blue.420.36.175.1");
unit_assert(id::abbreviate(id, ',') == "blue,420,36.175,1");
id = "controllerType=0 controllerNumber=1 scan=123";
unit_assert(id::abbreviate(id) == "0.1.123");
unit_assert(id::abbreviate(id, ',') == "0,1,123");
id = "spectrum=123";
id = "scan=123";
unit_assert(id::abbreviate(id) == "123");
unit_assert(id::abbreviate(id, ',') == "123");
id = "sample=1 period=2 cycle=123 experiment=3";
unit_assert(id::abbreviate(id) == "1.2.123.3");
unit_assert(id::abbreviate(id, ',') == "1,2,123,3");
}
void testAllDataProcessing ( )

Definition at line 247 of file MSDataTest.cpp.

References pwiz::msdata::MSData::allDataProcessingPtrs(), pwiz::msdata::MSData::dataProcessingPtrs, pwiz::msdata::MSData::run, pwiz::msdata::Run::spectrumListPtr, and unit_assert_operator_equal.

Referenced by main().

{
MSData msd;
msd.run.spectrumListPtr = sl;
DataProcessingPtr realDeal(new DataProcessing("dp"));
msd.dataProcessingPtrs.push_back(realDeal);
sl->dp = poser;
// test allDataProcessingPtrs()
vector<DataProcessingPtr> all = msd.allDataProcessingPtrs();
unit_assert_operator_equal(realDeal, all[0]);
}
int main ( int  argc,
const char *  argv[] 
)

Definition at line 266 of file MSDataTest.cpp.

References e(), TEST_EPILOG, TEST_FAILED, TEST_PROLOG, testAllDataProcessing(), testChromatograms(), testIDParsing(), and testSpectrumListSimple().

{
TEST_PROLOG(argc, argv)
try
{
}
catch (exception& e)
{
TEST_FAILED(e.what())
}
catch (...)
{
TEST_FAILED("Caught unknown exception.")
}
}