@@ -46,73 +46,72 @@ public MetadataWriter(ParseInput parseInput)
4646 /// </summary>
4747 public void WriteMetadata ( IRawDataPlus rawFile , int firstScanNumber , int lastScanNumber )
4848 {
49- // Get the start and end time from the RAW file
50- var startTime = rawFile . RunHeaderEx . StartTime ;
51- var endTime = rawFile . RunHeaderEx . EndTime ;
52-
53- for ( var scanNumber = firstScanNumber ; scanNumber <= lastScanNumber ; scanNumber ++ )
49+ if ( rawFile . SelectMsData ( ) )
5450 {
55- var time = rawFile . RetentionTimeFromScanNumber ( scanNumber ) ;
56-
57- // Get the scan filter for this scan number
58- var scanFilter = rawFile . GetFilterForScanNumber ( scanNumber ) ;
51+ for ( var scanNumber = firstScanNumber ; scanNumber <= lastScanNumber ; scanNumber ++ )
52+ {
53+ var time = rawFile . RetentionTimeFromScanNumber ( scanNumber ) ;
5954
60- // Get the scan event for this scan number
61- var scanEvent = rawFile . GetScanEventForScanNumber ( scanNumber ) ;
55+ // Get the scan filter for this scan number
56+ var scanFilter = rawFile . GetFilterForScanNumber ( scanNumber ) ;
6257
63- // Keep track of the number of MS<MS level> spectra
64- if ( msTypes . ContainsKey ( scanFilter . MSOrder . ToString ( ) ) )
65- {
66- var value = msTypes [ scanFilter . MSOrder . ToString ( ) ] ;
67- value += 1 ;
68- msTypes [ scanFilter . MSOrder . ToString ( ) ] = value ;
69- }
70- else
71- msTypes . Add ( scanFilter . MSOrder . ToString ( ) , 1 ) ;
58+ // Get the scan event for this scan number
59+ var scanEvent = rawFile . GetScanEventForScanNumber ( scanNumber ) ;
7260
73- if ( time > maxTime )
74- maxTime = time ;
75- if ( time < minTime )
76- minTime = time ;
61+ // Keep track of the number of MS<MS level> spectra
62+ if ( msTypes . ContainsKey ( scanFilter . MSOrder . ToString ( ) ) )
63+ {
64+ var value = msTypes [ scanFilter . MSOrder . ToString ( ) ] ;
65+ value += 1 ;
66+ msTypes [ scanFilter . MSOrder . ToString ( ) ] = value ;
67+ }
68+ else
69+ msTypes . Add ( scanFilter . MSOrder . ToString ( ) , 1 ) ;
7770
78- if ( scanFilter . MSOrder == MSOrderType . Ms2 )
79- {
80- fragmentationTypes . Add ( ParseActivationType ( scanFilter . GetActivation ( 0 ) ) ) ;
71+ if ( time > maxTime )
72+ maxTime = time ;
73+ if ( time < minTime )
74+ minTime = time ;
8175
82- if ( scanEvent . ScanData == ScanDataType . Centroid || ( scanEvent . ScanData == ScanDataType . Profile ) )
76+ if ( scanFilter . MSOrder == MSOrderType . Ms2 )
8377 {
84- try
85- {
86- var reaction = scanEvent . GetReaction ( 0 ) ;
87- var precursorMass = reaction . PrecursorMass ;
88- if ( precursorMass > maxMz )
89- maxMz = precursorMass ;
90- if ( precursorMass < minMz )
91- minMz = precursorMass ;
92- }
93- catch ( ArgumentOutOfRangeException )
94- {
95- Log . Warn ( "No reaction found for scan " + scanNumber ) ;
96- _parseInput . NewWarn ( ) ;
97- }
78+ fragmentationTypes . Add ( ParseActivationType ( scanFilter . GetActivation ( 0 ) ) ) ;
9879
99- // trailer extra data list
100- var trailerData = rawFile . GetTrailerExtraInformation ( scanNumber ) ;
101- for ( var i = 0 ; i < trailerData . Length ; i ++ )
80+ if ( scanEvent . ScanData == ScanDataType . Centroid || ( scanEvent . ScanData == ScanDataType . Profile ) )
10281 {
103- if ( trailerData . Labels [ i ] == "Charge State:" )
82+ try
83+ {
84+ var reaction = scanEvent . GetReaction ( 0 ) ;
85+ var precursorMass = reaction . PrecursorMass ;
86+ if ( precursorMass > maxMz )
87+ maxMz = precursorMass ;
88+ if ( precursorMass < minMz )
89+ minMz = precursorMass ;
90+ }
91+ catch ( ArgumentOutOfRangeException )
10492 {
105- if ( int . Parse ( trailerData . Values [ i ] ) > maxCharge )
106- maxCharge = int . Parse ( trailerData . Values [ i ] ) ;
93+ Log . Warn ( "No reaction found for scan " + scanNumber ) ;
94+ _parseInput . NewWarn ( ) ;
95+ }
10796
108- if ( int . Parse ( trailerData . Values [ i ] ) < minCharge )
109- minCharge = int . Parse ( trailerData . Values [ i ] ) ;
97+ // trailer extra data list
98+ var trailerData = rawFile . GetTrailerExtraInformation ( scanNumber ) ;
99+ for ( var i = 0 ; i < trailerData . Length ; i ++ )
100+ {
101+ if ( trailerData . Labels [ i ] == "Charge State:" )
102+ {
103+ if ( int . Parse ( trailerData . Values [ i ] ) > maxCharge )
104+ maxCharge = int . Parse ( trailerData . Values [ i ] ) ;
105+
106+ if ( int . Parse ( trailerData . Values [ i ] ) < minCharge )
107+ minCharge = int . Parse ( trailerData . Values [ i ] ) ;
108+ }
110109 }
111110 }
112111 }
113112 }
114113 }
115-
114+
116115 if ( minCharge == 100000000000000 )
117116 {
118117 minCharge = 0 ;
@@ -145,10 +144,6 @@ public void WriteMetadata(IRawDataPlus rawFile, int firstScanNumber, int lastSca
145144 /// </summary>
146145 private void WriteJsonMetada ( IRawDataPlus rawFile , int firstScanNumber , int lastScanNumber )
147146 {
148- // Get the start and end time from the RAW file
149- var startTime = rawFile . RunHeaderEx . StartTime ;
150- var endTime = rawFile . RunHeaderEx . EndTime ;
151-
152147 var metadata = new Metadata ( ) ;
153148
154149 // File Properties
@@ -164,19 +159,23 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
164159 }
165160
166161 // Instrument Properties
167- metadata . addInstrumentProperty ( new CVTerm ( "MS:1000494" , "MS" , "Thermo Scientific instrument model" ,
168- rawFile . GetInstrumentData ( ) . Model ) ) ;
169- metadata . addInstrumentProperty ( new CVTerm ( "MS:1000496" , "MS" , "instrument attribute" ,
170- rawFile . GetInstrumentData ( ) . Name ) ) ;
171- metadata . addInstrumentProperty ( new CVTerm ( "MS:1000529" , "MS" , "instrument serial number" ,
172- rawFile . GetInstrumentData ( ) . SerialNumber ) ) ;
173- metadata . addInstrumentProperty ( new CVTerm ( "NCIT:C111093" , "NCIT" , "Software Version" ,
174- rawFile . GetInstrumentData ( ) . SoftwareVersion ) ) ;
175- if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
162+ if ( rawFile . SelectMsData ( ) )
176163 {
177- metadata . addInstrumentProperty ( new CVTerm ( "AFR:0001259" , "AFO" , "firmware version" ,
178- rawFile . GetInstrumentData ( ) . HardwareVersion ) ) ;
164+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000494" , "MS" , "Thermo Scientific instrument model" ,
165+ rawFile . GetInstrumentData ( ) . Model ) ) ;
166+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000496" , "MS" , "instrument attribute" ,
167+ rawFile . GetInstrumentData ( ) . Name ) ) ;
168+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000529" , "MS" , "instrument serial number" ,
169+ rawFile . GetInstrumentData ( ) . SerialNumber ) ) ;
170+ metadata . addInstrumentProperty ( new CVTerm ( "NCIT:C111093" , "NCIT" , "Software Version" ,
171+ rawFile . GetInstrumentData ( ) . SoftwareVersion ) ) ;
172+ if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
173+ {
174+ metadata . addInstrumentProperty ( new CVTerm ( "AFR:0001259" , "AFO" , "firmware version" ,
175+ rawFile . GetInstrumentData ( ) . HardwareVersion ) ) ;
176+ }
179177 }
178+
180179
181180 // MS Data
182181 foreach ( KeyValuePair < string , int > entry in msTypes )
@@ -208,21 +207,30 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
208207 maxMz . ToString ( CultureInfo . InvariantCulture ) ) ) ;
209208
210209 // Scan Settings
211- metadata . addScanSetting ( new CVTerm ( "MS:1000016" , "MS" , "scan start time" ,
212- startTime . ToString ( CultureInfo . InvariantCulture ) ) ) ;
213- metadata . addScanSetting ( new CVTerm ( "MS:1000011" , "MS" , "mass resolution" ,
214- rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) ) ) ;
215- metadata . addScanSetting ( new CVTerm ( "UO:0000002" , "MS" , "mass unit" ,
216- rawFile . GetInstrumentData ( ) . Units . ToString ( ) ) ) ;
217- metadata . addScanSetting ( new CVTerm ( "PRIDE:0000478" , "PRIDE" , "Number of scans" ,
218- rawFile . RunHeaderEx . SpectraCount . ToString ( ) ) ) ;
219- metadata . addScanSetting ( new CVTerm ( "PRIDE:0000479" , "PRIDE" , "MS scan range" ,
220- firstScanNumber + ":" + lastScanNumber ) ) ;
221- metadata . addScanSetting ( new CVTerm ( "PRIDE:0000484" , "PRIDE" , "Retention time range" ,
222- startTime + ":" + endTime ) ) ;
223- metadata . addScanSetting ( new CVTerm ( "PRIDE:0000485" , "PRIDE" , "Mz range" ,
224- rawFile . RunHeaderEx . LowMass + ":" + rawFile . RunHeaderEx . HighMass ) ) ;
225- metadata . addScanSetting ( fragmentationTypes ) ;
210+ // Get the start and end time from the RAW file
211+
212+ if ( rawFile . SelectMsData ( ) )
213+ {
214+ var runHeader = rawFile . RunHeader ;
215+ var runHeaderEx = rawFile . RunHeaderEx ;
216+ var startTime = runHeaderEx . StartTime ;
217+ var endTime = runHeaderEx . EndTime ;
218+ metadata . addScanSetting ( new CVTerm ( "MS:1000016" , "MS" , "scan start time" ,
219+ startTime . ToString ( CultureInfo . InvariantCulture ) ) ) ;
220+ metadata . addScanSetting ( new CVTerm ( "MS:1000011" , "MS" , "mass resolution" ,
221+ runHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) ) ) ;
222+ metadata . addScanSetting ( new CVTerm ( "UO:0000002" , "MS" , "mass unit" ,
223+ rawFile . GetInstrumentData ( ) . Units . ToString ( ) ) ) ;
224+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000478" , "PRIDE" , "Number of scans" ,
225+ runHeaderEx . SpectraCount . ToString ( ) ) ) ;
226+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000484" , "PRIDE" , "Retention time range" ,
227+ startTime + ":" + endTime ) ) ;
228+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000485" , "PRIDE" , "Mz range" ,
229+ runHeaderEx . LowMass + ":" + runHeaderEx . HighMass ) ) ;
230+ metadata . addScanSetting ( fragmentationTypes ) ;
231+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000479" , "PRIDE" , "MS scan range" ,
232+ firstScanNumber + ":" + lastScanNumber ) ) ;
233+ }
226234
227235 // Sample Data
228236 if ( ! rawFile . SampleInformation . SampleName . IsNullOrEmpty ( ) )
@@ -333,10 +341,6 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
333341 /// </summary>
334342 private void WriteTextMetadata ( IRawDataPlus rawFile , int firstScanNumber , int lastScanNumber )
335343 {
336- // Get the start and end time from the RAW file
337- var startTime = rawFile . RunHeaderEx . StartTime ;
338- var endTime = rawFile . RunHeaderEx . EndTime ;
339-
340344 // File Properties
341345 var output = new List < string >
342346 {
@@ -351,20 +355,23 @@ private void WriteTextMetadata(IRawDataPlus rawFile, int firstScanNumber, int la
351355 }
352356
353357 // Instrument Properties
354- output . Add ( "#InstrumentProperties" ) ;
355- output . AddRange ( new List < string >
358+ if ( rawFile . SelectMsData ( ) )
359+ {
360+ output . Add ( "#InstrumentProperties" ) ;
361+ output . AddRange ( new List < string >
356362 {
357363 $ "Instrument model=[MS, MS:1000494, Thermo Scientific instrument model, { rawFile . GetInstrumentData ( ) . Model } ]",
358364 "Instrument name=" + rawFile . GetInstrumentData ( ) . Name ,
359365 $ "Instrument serial number=[MS, MS:1000529, instrument serial number, { rawFile . GetInstrumentData ( ) . SerialNumber } ]",
360366 $ "Software version=[NCIT, NCIT:C111093, Software Version, { rawFile . GetInstrumentData ( ) . SoftwareVersion } ]",
361367 }
362- ) ;
363- if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
364- {
365- output . Add ( "Firmware version=" + rawFile . GetInstrumentData ( ) . HardwareVersion ) ;
368+ ) ;
369+ if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
370+ {
371+ output . Add ( "Firmware version=" + rawFile . GetInstrumentData ( ) . HardwareVersion ) ;
372+ }
366373 }
367-
374+
368375 // MS Data
369376 output . Add ( "#MsData" ) ;
370377 foreach ( KeyValuePair < string , int > entry in msTypes )
@@ -389,20 +396,25 @@ private void WriteTextMetadata(IRawDataPlus rawFile, int firstScanNumber, int la
389396 ) ;
390397
391398 // Scan Settings
392- output . AddRange ( new List < string >
393- {
394- "#ScanSettings" ,
395- $ "Scan start time={ startTime . ToString ( CultureInfo . InvariantCulture ) } ",
396- $ "Mass resolution=[MS, MS:1000011, mass resolution, { rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) } ]",
397- "Units=" + rawFile . GetInstrumentData ( ) . Units ,
398- $ "Number of scans={ rawFile . RunHeaderEx . SpectraCount } ",
399- $ "Scan range={ firstScanNumber } ;{ lastScanNumber } ",
400- $ "Time range={ startTime . ToString ( CultureInfo . InvariantCulture ) } ;{ endTime . ToString ( CultureInfo . InvariantCulture ) } ",
401- $ "Mass range={ rawFile . RunHeaderEx . LowMass . ToString ( CultureInfo . InvariantCulture ) } ;{ rawFile . RunHeaderEx . HighMass . ToString ( CultureInfo . InvariantCulture ) } ",
402- "Fragmentation types=" + String . Join ( ", " , fragmentationTypes . Select ( f => f . value ) )
403- }
404- ) ;
405-
399+ if ( rawFile . SelectMsData ( ) )
400+ {
401+ // Get the start and end time from the RAW file
402+ var startTime = rawFile . RunHeaderEx . StartTime ;
403+ var endTime = rawFile . RunHeaderEx . EndTime ;
404+ output . AddRange ( new List < string >
405+ {
406+ "#ScanSettings" ,
407+ $ "Scan start time={ startTime . ToString ( CultureInfo . InvariantCulture ) } ",
408+ $ "Mass resolution=[MS, MS:1000011, mass resolution, { rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) } ]",
409+ "Units=" + rawFile . GetInstrumentData ( ) . Units ,
410+ $ "Number of scans={ rawFile . RunHeaderEx . SpectraCount } ",
411+ $ "Scan range={ firstScanNumber } ;{ lastScanNumber } ",
412+ $ "Time range={ startTime . ToString ( CultureInfo . InvariantCulture ) } ;{ endTime . ToString ( CultureInfo . InvariantCulture ) } ",
413+ $ "Mass range={ rawFile . RunHeaderEx . LowMass . ToString ( CultureInfo . InvariantCulture ) } ;{ rawFile . RunHeaderEx . HighMass . ToString ( CultureInfo . InvariantCulture ) } ",
414+ "Fragmentation types=" + String . Join ( ", " , fragmentationTypes . Select ( f => f . value ) )
415+ }
416+ ) ;
417+ }
406418 // Sample Data
407419 output . Add ( "#SampleData" ) ;
408420
0 commit comments