@@ -46,73 +46,74 @@ 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
10483 {
105- if ( int . Parse ( trailerData . Values [ i ] ) > maxCharge )
106- maxCharge = int . Parse ( trailerData . Values [ i ] ) ;
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 )
92+ {
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 }
115114
115+
116+
116117 if ( minCharge == 100000000000000 )
117118 {
118119 minCharge = 0 ;
@@ -145,10 +146,6 @@ public void WriteMetadata(IRawDataPlus rawFile, int firstScanNumber, int lastSca
145146 /// </summary>
146147 private void WriteJsonMetada ( IRawDataPlus rawFile , int firstScanNumber , int lastScanNumber )
147148 {
148- // Get the start and end time from the RAW file
149- var startTime = rawFile . RunHeaderEx . StartTime ;
150- var endTime = rawFile . RunHeaderEx . EndTime ;
151-
152149 var metadata = new Metadata ( ) ;
153150
154151 // File Properties
@@ -164,20 +161,23 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
164161 }
165162
166163 // 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 ( ) )
164+ if ( rawFile . SelectMsData ( ) )
176165 {
177- metadata . addInstrumentProperty ( new CVTerm ( "AFR:0001259" , "AFO" , "firmware version" ,
178- rawFile . GetInstrumentData ( ) . HardwareVersion ) ) ;
166+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000494" , "MS" , "Thermo Scientific instrument model" ,
167+ rawFile . GetInstrumentData ( ) . Model ) ) ;
168+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000496" , "MS" , "instrument attribute" ,
169+ rawFile . GetInstrumentData ( ) . Name ) ) ;
170+ metadata . addInstrumentProperty ( new CVTerm ( "MS:1000529" , "MS" , "instrument serial number" ,
171+ rawFile . GetInstrumentData ( ) . SerialNumber ) ) ;
172+ metadata . addInstrumentProperty ( new CVTerm ( "NCIT:C111093" , "NCIT" , "Software Version" ,
173+ rawFile . GetInstrumentData ( ) . SoftwareVersion ) ) ;
174+ if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
175+ {
176+ metadata . addInstrumentProperty ( new CVTerm ( "AFR:0001259" , "AFO" , "firmware version" ,
177+ rawFile . GetInstrumentData ( ) . HardwareVersion ) ) ;
178+ }
179179 }
180-
180+
181181 // MS Data
182182 foreach ( KeyValuePair < string , int > entry in msTypes )
183183 {
@@ -208,21 +208,27 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
208208 maxMz . ToString ( CultureInfo . InvariantCulture ) ) ) ;
209209
210210 // 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 ) ;
211+ if ( rawFile . SelectMsData ( ) )
212+ {
213+ // Get the start and end time from the RAW file
214+ var startTime = rawFile . RunHeaderEx . StartTime ;
215+ var endTime = rawFile . RunHeaderEx . EndTime ;
216+ metadata . addScanSetting ( new CVTerm ( "MS:1000016" , "MS" , "scan start time" ,
217+ startTime . ToString ( CultureInfo . InvariantCulture ) ) ) ;
218+ metadata . addScanSetting ( new CVTerm ( "MS:1000011" , "MS" , "mass resolution" ,
219+ rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) ) ) ;
220+ metadata . addScanSetting ( new CVTerm ( "UO:0000002" , "MS" , "mass unit" ,
221+ rawFile . GetInstrumentData ( ) . Units . ToString ( ) ) ) ;
222+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000478" , "PRIDE" , "Number of scans" ,
223+ rawFile . RunHeaderEx . SpectraCount . ToString ( ) ) ) ;
224+ metadata . addScanSetting ( new CVTerm ( "PRIDE:0000479" , "PRIDE" , "MS scan range" ,
225+ firstScanNumber + ":" + lastScanNumber ) ) ;
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+ rawFile . RunHeaderEx . LowMass + ":" + rawFile . RunHeaderEx . HighMass ) ) ;
230+ metadata . addScanSetting ( fragmentationTypes ) ;
231+ }
226232
227233 // Sample Data
228234 if ( ! rawFile . SampleInformation . SampleName . IsNullOrEmpty ( ) )
@@ -296,10 +302,6 @@ private void WriteJsonMetada(IRawDataPlus rawFile, int firstScanNumber, int last
296302 /// </summary>
297303 private void WriteTextMetadata ( IRawDataPlus rawFile , int firstScanNumber , int lastScanNumber )
298304 {
299- // Get the start and end time from the RAW file
300- var startTime = rawFile . RunHeaderEx . StartTime ;
301- var endTime = rawFile . RunHeaderEx . EndTime ;
302-
303305 // File Properties
304306 var output = new List < string >
305307 {
@@ -314,18 +316,21 @@ private void WriteTextMetadata(IRawDataPlus rawFile, int firstScanNumber, int la
314316 }
315317
316318 // Instrument Properties
317- output . Add ( "#InstrumentProperties" ) ;
318- output . AddRange ( new List < string >
319+ if ( rawFile . SelectMsData ( ) )
320+ {
321+ output . Add ( "#InstrumentProperties" ) ;
322+ output . AddRange ( new List < string >
319323 {
320324 $ "Instrument model=[MS, MS:1000494, Thermo Scientific instrument model, { rawFile . GetInstrumentData ( ) . Model } ]",
321325 "Instrument name=" + rawFile . GetInstrumentData ( ) . Name ,
322326 $ "Instrument serial number=[MS, MS:1000529, instrument serial number, { rawFile . GetInstrumentData ( ) . SerialNumber } ]",
323327 $ "Software version=[NCIT, NCIT:C111093, Software Version, { rawFile . GetInstrumentData ( ) . SoftwareVersion } ]",
324328 }
325- ) ;
326- if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
327- {
328- output . Add ( "Firmware version=" + rawFile . GetInstrumentData ( ) . HardwareVersion ) ;
329+ ) ;
330+ if ( ! rawFile . GetInstrumentData ( ) . HardwareVersion . IsNullOrEmpty ( ) )
331+ {
332+ output . Add ( "Firmware version=" + rawFile . GetInstrumentData ( ) . HardwareVersion ) ;
333+ }
329334 }
330335
331336 // MS Data
@@ -352,19 +357,25 @@ private void WriteTextMetadata(IRawDataPlus rawFile, int firstScanNumber, int la
352357 ) ;
353358
354359 // Scan Settings
355- output . AddRange ( new List < string >
356- {
357- "#ScanSettings" ,
358- $ "Scan start time={ startTime . ToString ( CultureInfo . InvariantCulture ) } ",
359- $ "Mass resolution=[MS, MS:1000011, mass resolution, { rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) } ]",
360- "Units=" + rawFile . GetInstrumentData ( ) . Units ,
361- $ "Number of scans={ rawFile . RunHeaderEx . SpectraCount } ",
362- $ "Scan range={ firstScanNumber } ;{ lastScanNumber } ",
363- $ "Time range={ startTime . ToString ( CultureInfo . InvariantCulture ) } ;{ endTime . ToString ( CultureInfo . InvariantCulture ) } ",
364- $ "Mass range={ rawFile . RunHeaderEx . LowMass . ToString ( CultureInfo . InvariantCulture ) } ;{ rawFile . RunHeaderEx . HighMass . ToString ( CultureInfo . InvariantCulture ) } ",
365- "Fragmentation types=" + String . Join ( ", " , fragmentationTypes . Select ( f => f . value ) )
366- }
367- ) ;
360+ if ( rawFile . SelectMsData ( ) )
361+ {
362+ // Get the start and end time from the RAW file
363+ var startTime = rawFile . RunHeaderEx . StartTime ;
364+ var endTime = rawFile . RunHeaderEx . EndTime ;
365+ output . AddRange ( new List < string >
366+ {
367+ "#ScanSettings" ,
368+ $ "Scan start time={ startTime . ToString ( CultureInfo . InvariantCulture ) } ",
369+ $ "Mass resolution=[MS, MS:1000011, mass resolution, { rawFile . RunHeaderEx . MassResolution . ToString ( CultureInfo . InvariantCulture ) } ]",
370+ "Units=" + rawFile . GetInstrumentData ( ) . Units ,
371+ $ "Number of scans={ rawFile . RunHeaderEx . SpectraCount } ",
372+ $ "Scan range={ firstScanNumber } ;{ lastScanNumber } ",
373+ $ "Time range={ startTime . ToString ( CultureInfo . InvariantCulture ) } ;{ endTime . ToString ( CultureInfo . InvariantCulture ) } ",
374+ $ "Mass range={ rawFile . RunHeaderEx . LowMass . ToString ( CultureInfo . InvariantCulture ) } ;{ rawFile . RunHeaderEx . HighMass . ToString ( CultureInfo . InvariantCulture ) } ",
375+ "Fragmentation types=" + String . Join ( ", " , fragmentationTypes . Select ( f => f . value ) )
376+ }
377+ ) ;
378+ }
368379
369380 // Sample Data
370381 output . Add ( "#SampleData" ) ;
0 commit comments