-
Notifications
You must be signed in to change notification settings - Fork 56
Description
In using ThermoRFP to process raw files from a number of PRIDE projects, I find that the software reproducibly and silently fails on a small subset of files. The behavior is to run for ~1 s and then produce a zero-length output file. No error status is indicated by the program. I have verified that the download is working properly.
Here are some example raw files that fail to convert from the project PXD027241.
proteome_GS_E9.raw
proteome_CB_E8.raw
proteome_CB_E3.raw
as_p_e6.raw
as_p_e13.raw
Prot_7_180708021614.raw
Prot_3_180707132051.raw
P_E7.raw
In constructing a sample command line to show you, I noticed something very strange: the above behavior only happens when I use absolute pathnames. For example, this command gives the behavior described above:
mono ~/software/ThermoRawFileParser.v1.4.0/ThermoRawFileParser.exe --output_file=/net/noble/vol1/data/crux-datasets/2022siddiqui-new/DDA/P_E7.mgf --logging=0 --format=0 --input=/net/noble/vol1/data/crux-datasets/2022siddiqui-new/DDA/P_E7.raw
However, if I cd to the directory /net/noble/vol1/data/crux-datasets/2022siddiqui-new/DDA and then issue the command without the pathnames, I see something quite different (and more informative):
$ mono ~/software/ThermoRawFileParser.v1.4.0/ThermoRawFileParser.exe --output_file=P_E7.mgf --format=0 --input=P_E7.raw
2022-09-22 09:39:01 INFO Started parsing P_E7.raw
2022-09-22 09:39:01 INFO Processing 1 scans
2022-09-22 09:39:01 ERROR An unexpected error occured while parsing file:P_E7.raw
2022-09-22 09:39:01 ERROR System.IndexOutOfRangeException: The scan number must be >= 0 and <= 0.
at ThermoFisher.CommonCore.RawFileReader.StructWrappers.VirtualDevices.MassSpecDevice.ThrowScanNumberRangeException () [0x0002a] in <38096e861d444fd896cbda1ff335437f>:0
at ThermoFisher.CommonCore.RawFileReader.StructWrappers.VirtualDevices.MassSpecDevice.GetValidIndexIntoScanIndices (System.Int32 scanNumber) [0x00027] in <38096e861d444fd896cbda1ff335437f>:0
at ThermoFisher.CommonCore.RawFileReader.StructWrappers.VirtualDevices.MassSpecDevice.GetRetentionTime (System.Int32 spectrum) [0x00000] in <38096e861d444fd896cbda1ff335437f>:0
at ThermoFisher.CommonCore.RawFileReader.RawFileAccessBase.RetentionTimeFromScanNumber (System.Int32 scanNumber) [0x0000b] in <38096e861d444fd896cbda1ff335437f>:0
at ThermoRawFileParser.Writer.MgfSpectrumWriter.Write (ThermoFisher.CommonCore.Data.Interfaces.IRawDataPlus rawFile, System.Int32 firstScanNumber, System.Int32 lastScanNumber) [0x00093] in <7a789c83cb9d4db2bd14ef83a0b964a9>:0
at ThermoRawFileParser.RawFileParser.ProcessFile (ThermoRawFileParser.ParseInput parseInput) [0x000d9] in <7a789c83cb9d4db2bd14ef83a0b964a9>:0
at ThermoRawFileParser.RawFileParser.TryProcessFile (ThermoRawFileParser.ParseInput parseInput) [0x00000] in <7a789c83cb9d4db2bd14ef83a0b964a9>:0
So now my question is two-fold: (1) why does this error message only show up when I don't include pathnames in the command line, and (2) what does this error message mean? Logically, The scan number must be >= 0 and <= 0. makes no sense, right? It seems like the error message is saying that the scan number must be equal to zero!
The real question, of course, is how can I go about converting these problematic raw files.