Skip to content

Commit fadd141

Browse files
committed
Sorting of masses
1 parent 228224b commit fadd141

File tree

2 files changed

+20
-28
lines changed

2 files changed

+20
-28
lines changed

Writer/MgfSpectrumWriter.cs

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Writer/MzMlSpectrumWriter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,6 +1558,9 @@ private SpectrumType ConstructMSSpectrum(int scanNumber)
15581558
// M/Z Data
15591559
if (masses != null)
15601560
{
1561+
//sorting
1562+
Array.Sort(masses, intensities);
1563+
15611564
// Set the spectrum default array length
15621565
spectrum.defaultArrayLength = masses.Length;
15631566

0 commit comments

Comments
 (0)