Skip to content

Commit 947e8cf

Browse files
added MS3 to MGF writer
1 parent 37ee978 commit 947e8cf

6 files changed

Lines changed: 55 additions & 22 deletions

File tree

Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.1.2.0")]
36-
[assembly: AssemblyFileVersion("1.1.2.0")]
35+
[assembly: AssemblyVersion("1.1.3.0")]
36+
[assembly: AssemblyFileVersion("1.1.3.0")]
3737

3838
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]

ThermoRawFileParser.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@
9797
<Reference Include="System.Core" />
9898
<Reference Include="System.Numerics" />
9999
<Reference Include="System.Runtime.Serialization" />
100+
<Reference Include="System.Text.Encoding.CodePages, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
101+
<HintPath>packages\System.Text.Encoding.CodePages.4.0.1\lib\net46\System.Text.Encoding.CodePages.dll</HintPath>
102+
<Private>True</Private>
103+
</Reference>
100104
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
101105
<HintPath>packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
102106
<Private>True</Private>

Writer/MgfSpectrumWriter.cs

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,39 +41,62 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
4141
// Get the scan event for this scan number
4242
var scanEvent = rawFile.GetScanEventForScanNumber(scanNumber);
4343

44+
IReaction reaction = null;
45+
4446
switch (scanFilter.MSOrder)
4547
{
4648
case MSOrderType.Ms:
4749
// Keep track of scan number for precursor reference
4850
_precursorScanNumber = scanNumber;
4951
break;
5052
case MSOrderType.Ms2:
53+
try
54+
{
55+
reaction = scanEvent.GetReaction(0);
56+
}
57+
catch (ArgumentOutOfRangeException exception)
58+
{
59+
Log.Warn("No reaction found for scan " + scanNumber);
60+
}
61+
62+
goto default;
63+
case MSOrderType.Ms3:
5164
{
65+
try
66+
{
67+
reaction = scanEvent.GetReaction(1);
68+
}
69+
catch (ArgumentOutOfRangeException exception)
70+
{
71+
Log.Warn("No reaction found for scan " + scanNumber);
72+
}
73+
74+
goto default;
75+
}
76+
default:
5277
if (scanEvent.ScanData == ScanDataType.Centroid ||
5378
(scanEvent.ScanData == ScanDataType.Profile &&
54-
(scan.HasCentroidStream || ParseInput.OutputFormat != OutputFormat.MGFNoProfileData)))
79+
(scan.HasCentroidStream ||
80+
ParseInput.OutputFormat != OutputFormat.MGFNoProfileData)))
5581
{
5682
Writer.WriteLine("BEGIN IONS");
5783
Writer.WriteLine($"TITLE={ConstructSpectrumTitle(scanNumber)}");
5884
Writer.WriteLine($"SCANS={scanNumber}");
59-
Writer.WriteLine($"RTINSECONDS={(time * 60).ToString(CultureInfo.InvariantCulture)}");
60-
// Get the reaction information for the first precursor
61-
try
85+
Writer.WriteLine(
86+
$"RTINSECONDS={(time * 60).ToString(CultureInfo.InvariantCulture)}");
87+
88+
if (reaction != null)
6289
{
63-
var reaction = scanEvent.GetReaction(0);
6490
var precursorMass = reaction.PrecursorMass;
6591
Writer.WriteLine("PEPMASS=" +
66-
precursorMass.ToString("0.0000000", CultureInfo.InvariantCulture));
92+
precursorMass.ToString("0.0000000",
93+
CultureInfo.InvariantCulture));
6794
//var precursorIntensity = 0.0;
6895
//GetPrecursorIntensity(rawFile, _precursorScanNumber, precursorMass);
6996
//Writer.WriteLine(precursorIntensity != null
7097
// ? $"PEPMASS={precursorMass:F7} {precursorIntensity}"
7198
// : $"PEPMASS={precursorMass:F7}");
7299
}
73-
catch (ArgumentOutOfRangeException exception)
74-
{
75-
Log.Warn("No reaction found for scan " + scanNumber);
76-
}
77100

78101
// trailer extra data list
79102
var trailerData = rawFile.GetTrailerExtraInformation(scanNumber);
@@ -132,7 +155,6 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
132155
}
133156

134157
break;
135-
}
136158
}
137159
}
138160
}

Writer/MzMlSpectrumWriter.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
273273

274274
var index = 0;
275275
for (var scanNumber = firstScanNumber; scanNumber <= lastScanNumber; scanNumber++)
276-
{
276+
{
277277
var spectrum = ConstructSpectrum(scanNumber);
278278
if (spectrum != null)
279279
{
@@ -322,11 +322,13 @@ public override void Write(IRawDataPlus rawFile, int firstScanNumber, int lastSc
322322
Writer.Flush();
323323
if (chromatogramOffSets.Count != 0)
324324
{
325-
chromatogramOffSets.Add(chromatogram.id, Writer.BaseStream.Position + 6 + _osOffset);
325+
chromatogramOffSets.Add(chromatogram.id,
326+
Writer.BaseStream.Position + 6 + _osOffset);
326327
}
327328
else
328329
{
329-
chromatogramOffSets.Add(chromatogram.id, Writer.BaseStream.Position + 7 + _osOffset);
330+
chromatogramOffSets.Add(chromatogram.id,
331+
Writer.BaseStream.Position + 7 + _osOffset);
330332
}
331333
}
332334

@@ -868,14 +870,14 @@ private SpectrumType ConstructSpectrum(int scanNumber)
868870

869871
// Keep track of scan number and isolation m/z for precursor reference
870872
var result = Regex.Match(scanEvent.ToString(), FilterStringIsolationMzPattern);
871-
if (result.Success )
873+
if (result.Success)
872874
{
873875
if (!_precursorMs2ScanNumbers.ContainsKey(result.Groups[1].Value))
874876
{
875877
_precursorMs2ScanNumbers.Add(result.Groups[1].Value, scanNumber);
876878
}
877879
else
878-
{
880+
{
879881
// update the existing value
880882
_precursorMs2ScanNumbers[result.Groups[1].Value] = scanNumber;
881883
}
@@ -1213,15 +1215,19 @@ private PrecursorListType ConstructPrecursorList(IScanEventBase scanEvent, int?
12131215
spectrumRef = ConstructSpectrumTitle(_precursorMs1ScanNumber);
12141216
break;
12151217
case MSOrderType.Ms3:
1216-
var precursorMs2ScanNumber = _precursorMs2ScanNumbers.Keys.FirstOrDefault(isolationMz => scanEvent.ToString().Contains(isolationMz));
1218+
var precursorMs2ScanNumber =
1219+
_precursorMs2ScanNumbers.Keys.FirstOrDefault(isolationMz =>
1220+
scanEvent.ToString().Contains(isolationMz));
12171221
if (!precursorMs2ScanNumber.IsNullOrEmpty())
12181222
{
12191223
spectrumRef = ConstructSpectrumTitle(_precursorMs2ScanNumbers[precursorMs2ScanNumber]);
12201224
}
12211225
else
12221226
{
1223-
throw new InvalidOperationException("Couldn't find a MS2 precursor scan for MS3 scan " + scanEvent.ToString());
1224-
}
1227+
throw new InvalidOperationException("Couldn't find a MS2 precursor scan for MS3 scan " +
1228+
scanEvent.ToString());
1229+
}
1230+
12251231
break;
12261232
}
12271233

Writer/SpectrumWriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace ThermoRawFileParser.Writer
99
{
1010
public abstract class SpectrumWriter : ISpectrumWriter
1111
{
12-
private const double Tolerance = 0.01;
12+
private const double Tolerance = 0.01;
1313

1414
/// <summary>
1515
/// The parse input object

packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net471" />
1111
<package id="NUnit" version="3.10.1" targetFramework="net471" />
1212
<package id="Parquet.Net" version="2.0.0" targetFramework="net471" />
13+
<package id="System.Text.Encoding.CodePages" version="4.0.1" targetFramework="net471" />
1314
<package id="System.ValueTuple" version="4.4.0" targetFramework="net471" />
1415
<package id="ThermoFisher.CommonCore.Data" version="4.0.89" targetFramework="net471" />
1516
<package id="ThermoFisher.CommonCore.RawFileReader" version="4.0.89" targetFramework="net471" />

0 commit comments

Comments
 (0)