ProteoWizard
Classes | Functions | Variables
SpectrumList_ChargeStateCalculatorTest.cpp File Reference
#include "SpectrumList_ChargeStateCalculator.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/data/msdata/examples.hpp"
#include "pwiz/data/msdata/TextWriter.hpp"
#include "pwiz/data/common/CVTranslator.hpp"
#include "pwiz/utility/misc/Std.hpp"

Go to the source code of this file.

Classes

struct  TestChargeStateCalculator

Functions

ostream & operator<< (ostream &os, const vector< double > &v)
vector< double > parseDoubleArray (const string &doubleArray)
vector< CVID > parseCVTermArray (const string &cvTermArray)
int test ()
int main (int argc, char *argv[])

Variables

ostream * os_ = 0
TestChargeStateCalculator testChargeStateCalculators []
const size_t testChargeStateCalculatorsSize = sizeof(testChargeStateCalculators) / sizeof(TestChargeStateCalculator)

Function Documentation

ostream& operator<< ( ostream &  os,
const vector< double > &  v 
)

Definition at line 36 of file SpectrumList_ChargeStateCalculatorTest.cpp.

{
os << "(";
for (size_t i=0; i < v.size(); ++i)
os << " " << v[i];
os << " )";
return os;
}
vector<double> parseDoubleArray ( const string &  doubleArray)

Definition at line 268 of file SpectrumList_ChargeStateCalculatorTest.cpp.

{
vector<double> doubleVector;
vector<string> tokens;
bal::split(tokens, doubleArray, bal::is_space(), bal::token_compress_on);
if (!tokens.empty())
for (size_t i=0; i < tokens.size(); ++i)
if (!tokens[i].empty())
doubleVector.push_back(lexical_cast<double>(tokens[i]));
return doubleVector;
}
vector<CVID> parseCVTermArray ( const string &  cvTermArray)

Definition at line 280 of file SpectrumList_ChargeStateCalculatorTest.cpp.

References pwiz::data::CVTranslator::translate().

Referenced by test().

{
static pwiz::data::CVTranslator cvTranslator;
vector<CVID> cvTermVector;
vector<string> tokens;
bal::split(tokens, cvTermArray, bal::is_space());
if (!tokens.empty() && !tokens[0].empty())
for (size_t i=0; i < tokens.size(); ++i)
cvTermVector.push_back(cvTranslator.translate(tokens[i]));
return cvTermVector;
}
int test ( )

Definition at line 292 of file SpectrumList_ChargeStateCalculatorTest.cpp.

References TestChargeStateCalculator::chargeStateArray, pwiz::data::CVParam::cvid, e(), TestChargeStateCalculator::inputActivationTypeArray, TestChargeStateCalculator::inputChargeStateArray, TestChargeStateCalculator::inputIntensityArray, TestChargeStateCalculator::inputMZArray, TestChargeStateCalculator::inputPrecursorMZ, TestChargeStateCalculator::maxMultipleCharge, TestChargeStateCalculator::minMultipleCharge, MS_charge_state, MS_ms_level, MS_MSn_spectrum, MS_number_of_counts, MS_possible_charge_state, TestChargeStateCalculator::overrideExistingChargeState, parseCVTermArray(), parseDoubleArray(), TestChargeStateCalculator::singlyChargedFraction, pwiz::msdata::SpectrumListSimple::spectra, testChargeStateCalculators, testChargeStateCalculatorsSize, unit_assert, unit_assert_operator_equal, TestChargeStateCalculator::useMakeMS2Behavior, and pwiz::data::CVParam::valueAs().

{
int failedTests = 0;
for (size_t i=0; i < testChargeStateCalculatorsSize; ++i)
{
SpectrumListPtr originalList(sl);
s->set(MS_MSn_spectrum);
s->set(MS_ms_level, 2);
sl->spectra.push_back(s);
try
{
vector<double> inputMZArray = parseDoubleArray(t.inputMZArray);
vector<double> inputIntensityArray = parseDoubleArray(t.inputIntensityArray);
s->setMZIntensityArrays(inputMZArray, inputIntensityArray, MS_number_of_counts);
s->precursors.push_back(Precursor(t.inputPrecursorMZ));
vector<double> inputChargeStateArray = parseDoubleArray(t.inputChargeStateArray);
CVID inputChargeStateTerm = inputChargeStateArray.size() > 1 ? MS_possible_charge_state : MS_charge_state;
BOOST_FOREACH(int z, inputChargeStateArray)
s->precursors[0].selectedIons[0].cvParams.push_back(CVParam(inputChargeStateTerm, z));
vector<CVID> inputActivationTypes = parseCVTermArray(t.inputActivationTypeArray);
BOOST_FOREACH(CVID cvid, inputActivationTypes)
s->precursors[0].activation.set(cvid);
originalList,
t.overrideExistingChargeState,
t.maxMultipleCharge,
t.minMultipleCharge,
t.singlyChargedFraction,
t.useMakeMS2Behavior));
vector<double> outputChargeStateArray = parseDoubleArray(t.chargeStateArray);
CVID outputChargeStateTerm = outputChargeStateArray.size() > 1 ? MS_possible_charge_state : MS_charge_state;
SpectrumPtr calculatedSpectrum = calculator->spectrum(0, true);
BOOST_FOREACH(const CVParam& cvParam, calculatedSpectrum->precursors[0].selectedIons[0].cvParams)
{
if (cvParam.cvid != MS_charge_state && cvParam.cvid != MS_possible_charge_state)
continue;
unit_assert_operator_equal(outputChargeStateTerm, cvParam.cvid);
unit_assert(find(outputChargeStateArray.begin(), outputChargeStateArray.end(), cvParam.valueAs<int>()) != outputChargeStateArray.end());
}
}
catch (exception& e)
{
cerr << "Test case " << (i+1) << " failed:\n" << e.what() << endl;
++failedTests;
}
}
return failedTests;
}
int main ( int  argc,
char *  argv[] 
)

Definition at line 351 of file SpectrumList_ChargeStateCalculatorTest.cpp.

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

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

Variable Documentation

ostream* os_ = 0

Definition at line 34 of file SpectrumList_ChargeStateCalculatorTest.cpp.

TestChargeStateCalculator testChargeStateCalculators[]

Definition at line 63 of file SpectrumList_ChargeStateCalculatorTest.cpp.

Referenced by test().

const size_t testChargeStateCalculatorsSize = sizeof(testChargeStateCalculators) / sizeof(TestChargeStateCalculator)

Definition at line 266 of file SpectrumList_ChargeStateCalculatorTest.cpp.

Referenced by test().