ProteoWizard
Functions | Variables
SpectrumList_mzXML_Test.cpp File Reference
#include "SpectrumList_mzXML.hpp"
#include "Serializer_mzXML.hpp"
#include "TextWriter.hpp"
#include "examples.hpp"
#include "pwiz/utility/minimxml/XMLWriter.hpp"
#include "pwiz/utility/misc/unit.hpp"
#include "pwiz/utility/misc/Std.hpp"

Go to the source code of this file.

Functions

void test (bool indexed)
 
void test ()
 
int main (int argc, char *argv[])
 

Variables

ostream * os_ = 0
 

Function Documentation

void test ( bool  indexed)

Definition at line 41 of file SpectrumList_mzXML_Test.cpp.

References pwiz::msdata::MSData::dataProcessingPtrs, pwiz::data::UserParam::empty(), pwiz::msdata::MSData::fileDescription, pwiz::msdata::Serializer_mzXML::Config::indexed, pwiz::identdata::examples::initializeTiny(), pwiz::msdata::Scan::instrumentConfigurationPtr, pwiz::msdata::MSData::instrumentConfigurationPtrs, MS_base_peak_intensity, MS_Bruker_Agilent_YEP_file, MS_Bruker_Agilent_YEP_nativeID_format, MS_charge_state, MS_CID, MS_collision_energy, MS_Conversion_to_mzML, MS_ETD, MS_intensity_array, MS_LCQ_Deca, MS_m_z_array, MS_ms_level, MS_peak_intensity, MS_positive_scan, MS_ProteoWizard, MS_scan_start_time, MS_selected_ion_m_z, pwiz::chemistry::Ion::mz(), pwiz::data::UserParam::name, os_, pwiz::msdata::MSData::softwarePtrs, pwiz::msdata::FileDescription::sourceFilePtrs, pwiz::data::UserParam::type, unit_assert, pwiz::data::UserParam::value, pwiz::identdata::IO::write(), and pwiz::msdata::Serializer_mzXML::write().

42 {
43  if (os_) *os_ << "test(): indexed=\"" << boolalpha << indexed << "\"\n";
44 
45  MSData tiny;
47 
49  config.indexed = indexed;
50  Serializer_mzXML serializer(config);
51 
52  ostringstream oss;
53  serializer.write(oss, tiny);
54 
55  if (os_) *os_ << "oss:\n" << oss.str() << endl;
56 
57  shared_ptr<istream> is(new istringstream(oss.str()));
58 
59  // dummy would normally be read in from file
60 
61  MSData dummy;
62  dummy.fileDescription.sourceFilePtrs.push_back(SourceFilePtr(new SourceFile("tiny1.yep")));
65  dummy.softwarePtrs.push_back(SoftwarePtr(new Software("pwiz")));
66  dummy.softwarePtrs.back()->set(MS_ProteoWizard);
68  dummy.instrumentConfigurationPtrs.back()->set(MS_LCQ_Deca);
69  dummy.instrumentConfigurationPtrs.back()->userParams.push_back(UserParam("doobie", "420"));
70  dummy.dataProcessingPtrs.push_back(DataProcessingPtr(new DataProcessing("DP1")));
71  dummy.dataProcessingPtrs.back()->processingMethods.push_back(ProcessingMethod());
72  dummy.dataProcessingPtrs.back()->processingMethods.back().set(MS_Conversion_to_mzML);
73  dummy.dataProcessingPtrs.back()->processingMethods.back().softwarePtr = dummy.softwarePtrs.back();
74 
75  // note: used to have a test here to check that an exception would be thrown on
76  // on an unindexed input file, but index is an optional element so the right thing to
77  // do is just create it
78 
79  SpectrumListPtr sl = SpectrumList_mzXML::create(is, dummy, indexed);
80 
81  if (os_)
82  {
84  write(*sl);
85  *os_ << endl;
86  }
87 
88  // check easy functions
89 
90  unit_assert(sl.get());
91  unit_assert(sl->size() == 4);
92 
93  unit_assert(sl->find("scan=19") == 0);
94  IndexList indexList = sl->findNameValue("scan", "19");
95  unit_assert(indexList.size()==1 && indexList[0]==0);
96  unit_assert(sl->find("scan=20") == 1);
97  indexList = sl->findNameValue("scan", "20");
98  unit_assert(indexList.size()==1 && indexList[0]==1);
99  unit_assert(sl->find("scan=21") == 2);
100  indexList = sl->findNameValue("scan", "21");
101  unit_assert(indexList.size()==1 && indexList[0]==2);
102 
103  // check scan 19
104 
105  unit_assert(sl->spectrumIdentity(0).index == 0);
106  unit_assert(sl->spectrumIdentity(0).id == "scan=19");
107  unit_assert(sl->spectrumIdentity(0).sourceFilePosition != -1);
108 
109  SpectrumPtr s = sl->spectrum(0, false);
110 
111  unit_assert(s.get());
112  unit_assert(s->id == "scan=19");
113  unit_assert(s->index == 0);
114  unit_assert(s->sourceFilePosition != -1);
115  unit_assert(s->cvParam(MS_ms_level).valueAs<int>() == 1);
116  unit_assert(s->hasCVParam(MS_positive_scan));
117  unit_assert(s->scanList.scans.size() == 1);
118  Scan& scan = s->scanList.scans[0];
119  unit_assert(scan.hasCVParam(MS_scan_start_time));
120  //unit_assert(scan.cvParam(MS_preset_scan_configuration).valueAs<int>() == 3);
121  unit_assert(s->cvParam(MS_base_peak_intensity).value == "120053");
122  unit_assert(s->defaultArrayLength == 15);
123  unit_assert(s->binaryDataArrayPtrs.size() == 2);
124  unit_assert(s->binaryDataArrayPtrs[0]->hasCVParam(MS_m_z_array));
125  unit_assert(s->binaryDataArrayPtrs[1]->hasCVParam(MS_intensity_array));
126  unit_assert(s->binaryDataArrayPtrs[0]->data.empty() && s->binaryDataArrayPtrs[1]->data.empty());
127 
128  s = sl->spectrum(0, true);
129  unit_assert(s->defaultArrayLength == 15);
130  unit_assert(s->binaryDataArrayPtrs.size() == 2);
131  unit_assert(!s->binaryDataArrayPtrs[0]->data.empty() && !s->binaryDataArrayPtrs[1]->data.empty());
132 
133  vector<MZIntensityPair> pairs;
134  s->getMZIntensityPairs(pairs);
135 
136  if (os_)
137  {
138  *os_ << "scan 19:\n";
139  copy(pairs.begin(), pairs.end(), ostream_iterator<MZIntensityPair>(*os_, "\n"));
140  *os_ << endl;
141  }
142 
143  unit_assert(pairs.size() == 15);
144  for (int i=0; i<15; i++)
145  unit_assert(pairs[i].mz==i && pairs[i].intensity==15-i);
146 
147  Scan& scan19 = s->scanList.scans[0];
149  InstrumentConfiguration& instrumentConfiguration = *scan19.instrumentConfigurationPtr;
150  unit_assert(!instrumentConfiguration.cvParams.empty()); // references resolved
151  unit_assert(instrumentConfiguration.userParams.size() == 1 &&
152  instrumentConfiguration.userParams[0].name == "doobie");
153 
154  // check scan 20
155 
156  unit_assert(sl->spectrumIdentity(1).index == 1);
157  unit_assert(sl->spectrumIdentity(1).id == "scan=20");
158 
159  s = sl->spectrum(1, true);
160  unit_assert(s.get());
161  unit_assert(s->id == "scan=20");
162  unit_assert(s->index == 1);
163  unit_assert(s->sourceFilePosition != -1);
164  unit_assert(s->cvParam(MS_ms_level).valueAs<int>() == 2);
165 
166  unit_assert(s->scanList.scans.size() == 1);
167  //Scan& scan20 = s->scanList.scans[0];
168  //unit_assert(scan20.cvParam(MS_preset_scan_configuration).valueAs<int>() == 4);
169 
170  unit_assert(s->precursors.size() == 1);
171  Precursor& precursor = s->precursors[0];
172  unit_assert(precursor.selectedIons.size() == 1);
173  unit_assert(precursor.selectedIons[0].hasCVParam(MS_selected_ion_m_z));
174  unit_assert(precursor.selectedIons[0].hasCVParam(MS_peak_intensity));
175  unit_assert(precursor.selectedIons[0].hasCVParam(MS_charge_state));
176  unit_assert(precursor.activation.hasCVParam(MS_CID));
177  unit_assert(precursor.activation.hasCVParam(MS_collision_energy));
178  unit_assert(precursor.spectrumID == "scan=19"); // Serializer_mzXML::read() sets
179 
180  pairs.clear();
181  s->getMZIntensityPairs(pairs);
182 
183  if (os_)
184  {
185  *os_ << "scan 20:\n";
186  copy(pairs.begin(), pairs.end(), ostream_iterator<MZIntensityPair>(*os_, "\n"));
187  *os_ << endl;
188  }
189 
190  unit_assert(pairs.size() == 10);
191  for (int i=0; i<10; i++)
192  unit_assert(pairs[i].mz==2*i && pairs[i].intensity==(10-i)*2);
193 
194 
195  // check scan 21 (for userParam <-> nameValue)
196 
197  unit_assert(sl->spectrumIdentity(2).index == 2);
198  unit_assert(sl->spectrumIdentity(2).id == "scan=21");
199 
200  s = sl->spectrum(2, false);
201  unit_assert(s.get());
202  unit_assert(s->id == "scan=21");
203  UserParam exampleUserParam = s->userParam("example");
204  unit_assert(!exampleUserParam.empty());
205  unit_assert(exampleUserParam.name == "example");
206  unit_assert(exampleUserParam.value == "spectrum with no data");
207  unit_assert(exampleUserParam.type == "xsd:string");
208 
209  // check scan 22 (for ETD precursor activation)
210 
211  unit_assert(sl->spectrumIdentity(3).index == 3);
212  unit_assert(sl->spectrumIdentity(3).id == "scan=22");
213 
214  s = sl->spectrum(3, false);
215  unit_assert(s.get());
216  unit_assert(s->id == "scan=22");
217  unit_assert(s->precursors.size() == 1);
218  Precursor& precursor22 = s->precursors[0];
219  unit_assert(precursor22.selectedIons.size() == 1);
220  unit_assert(precursor22.selectedIons[0].hasCVParam(MS_selected_ion_m_z));
221  unit_assert(precursor22.selectedIons[0].hasCVParam(MS_peak_intensity));
222  unit_assert(precursor22.selectedIons[0].hasCVParam(MS_charge_state));
223  unit_assert(precursor22.activation.hasCVParam(MS_ETD));
224  unit_assert(precursor22.activation.hasCVParam(MS_CID));
225  unit_assert(precursor22.activation.hasCVParam(MS_collision_energy));
226 }
void test ( )

Definition at line 229 of file SpectrumList_mzXML_Test.cpp.

References test().

230 {
231  bool indexed = true;
232  test(indexed);
233 
234  indexed = false;
235  test(indexed);
236 }
int main ( int  argc,
char *  argv[] 
)

Definition at line 239 of file SpectrumList_mzXML_Test.cpp.

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

240 {
241  TEST_PROLOG(argc, argv)
242 
243  try
244  {
245  if (argc>1 && !strcmp(argv[1],"-v")) os_ = &cout;
246  test();
247  }
248  catch (exception& e)
249  {
250  TEST_FAILED(e.what())
251  }
252  catch (...)
253  {
254  TEST_FAILED("Caught unknown exception.")
255  }
256 
258 }

Variable Documentation

ostream* os_ = 0

Definition at line 38 of file SpectrumList_mzXML_Test.cpp.