@@ -139,23 +139,16 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
139139 // Write the filter string
140140 //Writer.WriteLine($"SCANEVENT={scanEvent.ToString()}");
141141
142+ double [ ] masses ;
143+ double [ ] intensities ;
144+
142145 if ( ! ParseInput . NoPeakPicking . Contains ( ( int ) scanFilter . MSOrder ) )
143146 {
144147 // Check if the scan has a centroid stream
145148 if ( scan . HasCentroidStream )
146149 {
147- if ( scan . CentroidScan . Length > 0 )
148- {
149- for ( var i = 0 ; i < scan . CentroidScan . Length ; i ++ )
150- {
151- Writer . WriteLine (
152- scan . CentroidScan . Masses [ i ] . ToString ( "0.0000000" ,
153- CultureInfo . InvariantCulture )
154- + " "
155- + scan . CentroidScan . Intensities [ i ] . ToString ( "0.0000000000" ,
156- CultureInfo . InvariantCulture ) ) ;
157- }
158- }
150+ masses = scan . CentroidScan . Masses ;
151+ intensities = scan . CentroidScan . Intensities ;
159152 }
160153 else // Otherwise take segmented (low res) scan data
161154 {
@@ -164,27 +157,23 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
164157 ? Scan . ToCentroid ( scan ) . SegmentedScan
165158 : scan . SegmentedScan ;
166159
167- for ( var i = 0 ; i < segmentedScan . Positions . Length ; i ++ )
168- {
169- Writer . WriteLine (
170- segmentedScan . Positions [ i ] . ToString ( "0.0000000" ,
171- CultureInfo . InvariantCulture )
172- + " "
173- + segmentedScan . Intensities [ i ] . ToString ( "0.0000000000" ,
174- CultureInfo . InvariantCulture ) ) ;
175- }
160+ masses = segmentedScan . Positions ;
161+ intensities = segmentedScan . Intensities ;
176162 }
177163 }
178164 else // Use the segmented data as is
179165 {
180- for ( var i = 0 ; i < scan . SegmentedScan . Positions . Length ; i ++ )
166+ masses = scan . SegmentedScan . Positions ;
167+ intensities = scan . SegmentedScan . Intensities ;
168+ }
169+
170+ if ( ! ( masses is null ) && masses . Length > 0 )
171+ {
172+ Array . Sort ( masses , intensities ) ;
173+
174+ for ( var i = 0 ; i < masses . Length ; i ++ )
181175 {
182- Writer . WriteLine (
183- scan . SegmentedScan . Positions [ i ] . ToString ( "0.0000000" ,
184- CultureInfo . InvariantCulture )
185- + " "
186- + scan . SegmentedScan . Intensities [ i ] . ToString ( "0.0000000000" ,
187- CultureInfo . InvariantCulture ) ) ;
176+ Writer . WriteLine ( String . Format ( "{0:f5} {1:f3}" , masses [ i ] , intensities [ i ] ) ) ;
188177 }
189178 }
190179
0 commit comments