All Projects → frallain → pymsfilereader

frallain / pymsfilereader

Licence: MIT license
Thermo MSFileReader Python bindings

Programming Languages

python
139335 projects - #7 most used programming language
Batchfile
5799 projects

Projects that are alternatives of or similar to pymsfilereader

QFeatures
Quantitative features for mass spectrometry data
Stars: ✭ 12 (-79.31%)
Mutual labels:  mass-spectrometry
Informed-Proteomics
Top down / bottom up, MS/MS analysis tool for DDA and DIA mass spectrometry data
Stars: ✭ 25 (-56.9%)
Mutual labels:  mass-spectrometry
philosopher
A complete toolkit for shotgun proteomics data analysis
Stars: ✭ 82 (+41.38%)
Mutual labels:  mass-spectrometry
tools-metabolomics
Galaxy tools for metabolomics maintained by Workflow4Metabolomics
Stars: ✭ 13 (-77.59%)
Mutual labels:  mass-spectrometry
MSFragger
Ultrafast, comprehensive peptide identification for mass spectrometry–based proteomics
Stars: ✭ 43 (-25.86%)
Mutual labels:  mass-spectrometry
MALDIquant
Quantitative Analysis of Mass Spectrometry Data
Stars: ✭ 48 (-17.24%)
Mutual labels:  mass-spectrometry
pyqms
pyQms, generalized, fast and accurate mass spectrometry data quantification
Stars: ✭ 22 (-62.07%)
Mutual labels:  mass-spectrometry
QCxMS
Quantum mechanic mass spectrometry calculation program
Stars: ✭ 25 (-56.9%)
Mutual labels:  mass-spectrometry
CoreMS
CoreMS is a comprehensive mass spectrometry software framework
Stars: ✭ 20 (-65.52%)
Mutual labels:  mass-spectrometry
rawDiag
Brings Orbitrap Mass Spectrometry Data to Life; Multi-platform, Fast and Colorful R package.
Stars: ✭ 29 (-50%)
Mutual labels:  mass-spectrometry
mzLib
Library for mass spectrometry projects
Stars: ✭ 19 (-67.24%)
Mutual labels:  mass-spectrometry
RforProteomics
Using R and Bioconductor packages for the analysis and comprehension of proteomics data.
Stars: ✭ 52 (-10.34%)
Mutual labels:  mass-spectrometry
PredFull
This work was published on Analytical Chemistry: Full-Spectrum Prediction of Peptides Tandem Mass Spectra using Deep Neural Network
Stars: ✭ 20 (-65.52%)
Mutual labels:  mass-spectrometry
sirius
SIRIUS is a software for discovering a landscape of de-novo identification of metabolites using tandem mass spectrometry. This repository contains the code of the SIRIUS Software (GUI and CLI)
Stars: ✭ 32 (-44.83%)
Mutual labels:  mass-spectrometry
OrgMassSpecR
Organic/biological mass spectrometry data analysis (development version).
Stars: ✭ 24 (-58.62%)
Mutual labels:  mass-spectrometry
GNPS Workflows
Public Workflows at GNPS
Stars: ✭ 31 (-46.55%)
Mutual labels:  mass-spectrometry
mzQC
Reporting and exchange format for mass spectrometry quality control data
Stars: ✭ 21 (-63.79%)
Mutual labels:  mass-spectrometry
pDeep
pDeep: Predicting MS/MS Spectra of Peptides with Deep Learning
Stars: ✭ 24 (-58.62%)
Mutual labels:  mass-spectrometry
IDBacApp
A MALDI Mass Spectrometry Bioinformatics Platform
Stars: ✭ 20 (-65.52%)
Mutual labels:  mass-spectrometry
ElMaven
LC-MS data processing tool for large-scale metabolomics experiments.
Stars: ✭ 84 (+44.83%)
Mutual labels:  mass-spectrometry

DEPRECATION NOTICE : These bindings and the underlying library are deprecated

MSFileReader, the underlying library used by these bindings, is outdated and buggy. Thermo now recommends to use RawFileReader (https://planetorbitrap.com/rawfilereader) to read Thermo RAW files. Some opensource Python bindings have been developed and are available @ https://github.com/kevinkovalchik/RawQuant / https://pypi.org/project/RawQuant/ .

Thermo MSFileReader Python bindings

Thermo MSFileReader is a C++ dynamic-link library (.dll) made available by ThermoFisher Scientific (on https://thermo.flexnetoperations.com/control/thmo/product?plneID=632401) to interact with .raw files generated by their range of tandem mass spectrometers.

Here I make available some Python bindings that make the Thermo MSFileReader C++ dynamic-link library usable in Python.

tested on versions 3.0SP2 (August 2014) and 3.0SP3 (April 2015). 150 / 171 functions have been binded, 21 / 171 have been considered redundant with already binded functions (cf. REDUNDANT flag).

NOTE: The 3.1 SP4 installer does not register properly the XRawfile2_x64.dll. As a consequence, to make it work:

  1. Install MSFileReader 3.1 SP4,
  2. backup the 3.1 SP4 XRawfile2_x64.dll file at C:\Program Files\Thermo\MSFileReader\ somewhere,
  3. uninstall MSFileReader 3.1 SP4, then install MSFileReader 3.1 SP2,
  4. override the 3.1 SP2 XRawfile2_x64.dll file at C:\Program Files\Thermo\MSFileReader\ with the 3.1 SP4 XRawfile2_x64.dll backed up previously.

NOTE: The function IsQExactive only works in version 3.0SP3 and upwards.

NOTE: The official documentation seems more up-to-date in the 3.0SP2 version than in the 3.0SP3 version...

How to install

pip install pymsfilereader

Requirements

Note that these bindings require that you have installed the appropriate Thermo MSFileReader version depending on your Python architecture (32bits or 64bits) so that the .dll is registered with the right Windows COM server (32bits or 64bits).

Unit tests

Unit tests are done with pytest. Just pip install pytest and run pytest at the root of the project.

Example

For convenience, the example below can be run on any rawfile by running python MSFileReader.py myfile.raw.

from pymsfilereader import MSFileReader

rawfile = MSFileReader("myfile.raw")

print('Version', rawfile.Version())
print('GetFileName', rawfile.GetFileName())
print('GetCreatorID', rawfile.GetCreatorID())
print('GetVersionNumber', rawfile.GetVersionNumber())
print('GetCreationDate', rawfile.GetCreationDate())
print('IsError', rawfile.IsError())
print('IsNewFile', rawfile.IsNewFile())
print('IsThereMSData', rawfile.IsThereMSData())
print('HasExpMethod', rawfile.HasExpMethod())
print('InAcquisition', rawfile.InAcquisition())
print('GetErrorCode', rawfile.GetErrorCode())
print('GetErrorMessage', rawfile.GetErrorMessage())
print('GetWarningMessage', rawfile.GetWarningMessage())
print('RefreshViewOfFile', rawfile.RefreshViewOfFile())
print('GetNumberOfControllers', rawfile.GetNumberOfControllers())

print("GetNumberOfControllersOfType('No device')", rawfile.GetNumberOfControllersOfType('No device'))
print("GetNumberOfControllersOfType('MS')", rawfile.GetNumberOfControllersOfType('MS'))
print("GetNumberOfControllersOfType('Analog')", rawfile.GetNumberOfControllersOfType('Analog'))
print("GetNumberOfControllersOfType('A/D card')", rawfile.GetNumberOfControllersOfType('A/D card'))
print("GetNumberOfControllersOfType('PDA')", rawfile.GetNumberOfControllersOfType('PDA'))
print("GetNumberOfControllersOfType('UV')", rawfile.GetNumberOfControllersOfType('UV'))
print("GetControllerType('MS')", rawfile.GetControllerType('MS'))
# print( 'GetControllerType(1)',  rawfile.GetControllerType(1) )

# print( 'GetControllerType(2)',  rawfile.GetControllerType(2) )
# print( 'GetControllerType(3)',  rawfile.GetControllerType(3) )
# print( 'GetControllerType(4)',  rawfile.GetControllerType(4) )
print('GetCurrentController()', rawfile.GetCurrentController())
# print( 'SetCurrentController(4,1)',  rawfile.SetCurrentController(4,1) )

print('GetCurrentController()', rawfile.GetCurrentController())
# print( 'SetCurrentController(0,1)',  rawfile.SetCurrentController(0,1) )

print('GetCurrentController()', rawfile.GetCurrentController())
print('GetExpectedRunTime()', rawfile.GetExpectedRunTime())
print('GetMaxIntegratedIntensity()', rawfile.GetMaxIntegratedIntensity())
print('GetMaxIntensity()', rawfile.GetMaxIntensity())
print('GetInletID()', rawfile.GetInletID())
print('GetErrorFlag()', rawfile.GetErrorFlag())
print('GetFlags()', rawfile.GetFlags())
print('GetAcquisitionFileName()', rawfile.GetAcquisitionFileName())
print('GetOperator()', rawfile.GetOperator())
print('GetComment1()', rawfile.GetComment1())
print('GetComment2()', rawfile.GetComment2())
print('GetFilters()', rawfile.GetFilters())
print('GetMassTolerance()', rawfile.GetMassTolerance())

print('rawfile.SetMassTolerance(userDefined=True, massTolerance=555.0, units=2)',
        rawfile.SetMassTolerance(userDefined=True, massTolerance=555.0, units=2))
print('GetMassTolerance()', rawfile.GetMassTolerance())
print('rawfile.SetMassTolerance(userDefined=False, massTolerance=500.0, units=0)',
        rawfile.SetMassTolerance(userDefined=False, massTolerance=500.0, units=0))
print('GetMassResolution', rawfile.GetMassResolution())
print('GetNumTrailerExtra', rawfile.GetNumTrailerExtra())
print('GetLowMass', rawfile.GetLowMass())
print('GetHighMass', rawfile.GetHighMass())
print('GetStartTime', rawfile.GetStartTime())
print('GetEndTime', rawfile.GetEndTime())
print('GetNumSpectra', rawfile.GetNumSpectra())
print('GetFirstSpectrumNumber', rawfile.GetFirstSpectrumNumber())
print('GetLastSpectrumNumber', rawfile.GetLastSpectrumNumber())
print('GetAcquisitionDate', rawfile.GetAcquisitionDate())
print('GetUniqueCompoundNames', rawfile.GetUniqueCompoundNames())

print('############################################## INSTRUMENT BEGIN')
print('GetInstrumentDescription', rawfile.GetInstrumentDescription())
print('GetInstrumentID', rawfile.GetInstrumentID())
print('GetInstSerialNumber', rawfile.GetInstSerialNumber())
print('GetInstName', rawfile.GetInstName())
print('GetInstModel', rawfile.GetInstModel())
print('GetInstSoftwareVersion', rawfile.GetInstSoftwareVersion())
print('GetInstHardwareVersion', rawfile.GetInstHardwareVersion())
print('GetInstFlags', rawfile.GetInstFlags())
print('GetInstNumChannelLabels', rawfile.GetInstNumChannelLabels())
# print( 'GetInstChannelLabel(0)', rawfile.GetInstChannelLabel(0) )
print('IsQExactive', rawfile.IsQExactive())  # Not implemented in MSFileReader 3.0.29.0
print('############################################## INSTRUMENT END')

scan_number = 1
print('############################################## XCALIBUR INTERFACE BEGIN')
print('GetScanHeaderInfoForScanNum',
        rawfile.GetScanHeaderInfoForScanNum(scan_number))  # "View/Scan header", upper part
print('GetTrailerExtraForScanNum', rawfile.GetTrailerExtraForScanNum(scan_number))  # "View/Scan header", lower part
print('GetNumTuneData', rawfile.GetNumTuneData())
print('GetTuneData(0)', rawfile.GetTuneData(0))  # "View/Report/Tune Method"
print('GetNumInstMethods', rawfile.GetNumInstMethods())
print('GetInstMethodNames', rawfile.GetInstMethodNames())
for i in range(rawfile.GetNumInstMethods()):
    print('-------------------------------------------------------------------------------')
    print(rawfile.GetInstMethod(i))  # "View/Report/Instrument Method"
    print('-------------------------------------------------------------------------------')
print('rawfile.ExtractInstMethodFromRaw', rawfile.ExtractInstMethodFromRaw(rawfile.filename + '.meth'))

# # # # # # "View/Report/Sample Information" BEGIN
print('GetVialNumber', rawfile.GetVialNumber())
print('GetInjectionVolume', rawfile.GetInjectionVolume())
print('GetInjectionAmountUnits', rawfile.GetInjectionAmountUnits())
print('GetSampleVolume', rawfile.GetSampleVolume())
print('GetSampleVolumeUnits', rawfile.GetSampleVolumeUnits())
print('GetSampleWeight', rawfile.GetSampleWeight())
print('GetSampleAmountUnits', rawfile.GetSampleAmountUnits())
print('GetSeqRowNumber', rawfile.GetSeqRowNumber())
print('GetSeqRowSampleType', rawfile.GetSeqRowSampleType())
print('GetSeqRowDataPath', rawfile.GetSeqRowDataPath())
print('GetSeqRowRawFileName', rawfile.GetSeqRowRawFileName())
print('GetSeqRowSampleName', rawfile.GetSeqRowSampleName())
print('GetSeqRowSampleID', rawfile.GetSeqRowSampleID())
print('GetSeqRowComment', rawfile.GetSeqRowComment())
print('GetSeqRowLevelName', rawfile.GetSeqRowLevelName())
print('GetSeqRowUserText', rawfile.GetSeqRowUserText(index=0))
print('GetSeqRowUserText', rawfile.GetSeqRowUserText(index=1))
print('GetSeqRowUserText', rawfile.GetSeqRowUserText(index=2))
print('GetSeqRowUserText', rawfile.GetSeqRowUserText(index=3))
print('GetSeqRowUserText', rawfile.GetSeqRowUserText(index=4))
print('GetSeqRowInstrumentMethod', rawfile.GetSeqRowInstrumentMethod())
print('GetSeqRowProcessingMethod', rawfile.GetSeqRowProcessingMethod())
print('GetSeqRowCalibrationFile', rawfile.GetSeqRowCalibrationFile())
print('GetSeqRowVial', rawfile.GetSeqRowVial())
print('GetSeqRowInjectionVolume', rawfile.GetSeqRowInjectionVolume())
print('GetSeqRowSampleWeight', rawfile.GetSeqRowSampleWeight())
print('GetSeqRowSampleVolume', rawfile.GetSeqRowSampleVolume())
print('GetSeqRowISTDAmount', rawfile.GetSeqRowISTDAmount())
print('GetSeqRowDilutionFactor', rawfile.GetSeqRowDilutionFactor())
print('GetSeqRowUserLabel', rawfile.GetSeqRowUserLabel(index=0))
print('GetSeqRowUserLabel', rawfile.GetSeqRowUserLabel(index=1))
print('GetSeqRowUserLabel', rawfile.GetSeqRowUserLabel(index=2))
print('GetSeqRowUserLabel', rawfile.GetSeqRowUserLabel(index=3))
print('GetSeqRowUserLabel', rawfile.GetSeqRowUserLabel(index=4))
print('GetSeqRowUserTextEx', rawfile.GetSeqRowUserTextEx(index=0))
print('GetSeqRowUserTextEx', rawfile.GetSeqRowUserTextEx(index=1))
print('GetSeqRowUserTextEx', rawfile.GetSeqRowUserTextEx(index=2))
print('GetSeqRowUserTextEx', rawfile.GetSeqRowUserTextEx(index=3))
print('GetSeqRowUserTextEx', rawfile.GetSeqRowUserTextEx(index=4))
print('GetSeqRowBarcode', rawfile.GetSeqRowBarcode())
print('GetSeqRowBarcodeStatus', rawfile.GetSeqRowBarcodeStatus())
# # # # # # # "View/Report/Sample Information" END
print('GetNumStatusLog', rawfile.GetNumStatusLog())
print('GetStatusLogForScanNum')  # "View/Report/Status Log"
pprint(rawfile.GetStatusLogForScanNum(scan_number))
print('GetStatusLogForPos(position=0)', rawfile.GetStatusLogForPos(position=0))
print('GetStatusLogForPos(position=1)', rawfile.GetStatusLogForPos(position=1))
print('GetStatusLogPlottableIndex()', rawfile.GetStatusLogPlottableIndex())

print('GetNumErrorLog', rawfile.GetNumErrorLog())
for i in range(rawfile.GetNumErrorLog()):
    print('GetErrorLogItem', i, rawfile.GetErrorLogItem(i))  # "View/Report/Error Log"
print('############################################## XCALIBUR INTERFACE END')

print('GetMassListFromScanNum', rawfile.GetMassListFromScanNum(scan_number))
print('GetMassListRangeFromScanNum', rawfile.GetMassListRangeFromScanNum(scan_number))
print('GetSegmentedMassListFromScanNum', rawfile.GetSegmentedMassListFromScanNum(scan_number))
print('GetAverageMassList', rawfile.GetAverageMassList(scan_number, scan_number + 10))
print('GetAveragedMassSpectrum', rawfile.GetAveragedMassSpectrum([scan_number, scan_number + 5, scan_number + 10]))
print('GetSummedMassSpectrum', rawfile.GetSummedMassSpectrum([scan_number, scan_number + 5, scan_number + 10]))
print('GetLabelData', rawfile.GetLabelData(scan_number))
print('GetAveragedLabelData', rawfile.GetAveragedLabelData([scan_number, scan_number + 5, scan_number + 10]))
print('GetAllMSOrderData', rawfile.GetAllMSOrderData(scan_number))
print('GetChroData', rawfile.GetChroData(startTime=rawfile.StartTime,
                                            endTime=rawfile.EndTime,
                                            massRange1="{}-{}".format(rawfile.LowMass, rawfile.HighMass),
                                            scanFilter="Full ms "))
# print( 'GetChroByCompoundName', rawfile.GetChroByCompoundName(["methyltestosterone"]) )

# print( 'GetMassPrecisionEstimate', rawfile.GetMassPrecisionEstimate(scan_number) )

print('GetFullMSOrderPrecursorDataFromScanNum(scan_number,0)',
        rawfile.GetFullMSOrderPrecursorDataFromScanNum(scan_number, 0))
print('GetFullMSOrderPrecursorDataFromScanNum(scan_number,1)',
        rawfile.GetFullMSOrderPrecursorDataFromScanNum(scan_number, 1))

print('GetPrecursorInfoFromScanNum(scan_number,1)', rawfile.GetPrecursorInfoFromScanNum(scan_number))

with open('test.tsv', 'wt') as f:
    print('\t'.join(map(str, ('scan_number',
                                'RetentionTime',
                                'scan_number',
                                'GetFilterForScanNum(i)',
                                'GetMSOrderForScanNum(i)',
                                'GetNumberOfMSOrdersFromScanNum(i)',
                                'GetScanTypeForScanNum(i)',
                                'GetDetectorTypeForScanNum(i)',
                                'GetMassAnalyzerTypeForScanNum(i)',
                                'GetActivationTypeForScanNum(i,MSOrder=2)',
                                'IsProfileScanForScanNum(i)',
                                'IsCentroidScanForScanNum(i)',
                                'GetIsolationWidthForScanNum(i,MSOrder=1)',
                                'GetCollisionEnergyForScanNum(i,MSOrder=1)',
                                'GetPrecursorInfoFromScanNum(i)',
                                'GetMassCalibrationValueFromScanNum(i,massCalibrationIndex=0)',
                                'GetScanEventForScanNum(i)',
                                'GetSegmentAndEventForScanNum(i)',
                                'GetCycleNumberFromScanNumber(i)',
                                'GetAValueFromScanNum(i)',
                                'GetBValueFromScanNum(i)',
                                'GetKValueFromScanNum(i)',
                                'GetRValueFromScanNum(i)',
                                'GetVValueFromScanNum(i)',
                                'GetMSXMultiplexValueFromScanNum(i)',
                                'GetCompoundNameFromScanNum(i)',
                                'GetNumberOfMassRangesFromScanNum(i)',
                                'GetMassRangeFromScanNum(i,0)',
                                'GetMassRangeFromScanNum(i,1)',
                                'GetNumberOfSourceFragmentsFromScanNum(i)',
                                'GetSourceFragmentValueFromScanNum(i,0)',
                                'GetNumberOfSourceFragmentationMassRangesFromScanNum(i)'
                                ))), file=f)

    for i in range(rawfile.FirstSpectrumNumber, rawfile.LastSpectrumNumber + 1):
        print('\t'.join(map(str, (i,
                                    rawfile.RTFromScanNum(i),
                                    rawfile.ScanNumFromRT(rawfile.RTFromScanNum(i)),
                                    rawfile.GetFilterForScanNum(i),
                                    rawfile.GetMSOrderForScanNum(i),
                                    rawfile.GetNumberOfMSOrdersFromScanNum(i),
                                    rawfile.GetScanTypeForScanNum(i),
                                    rawfile.GetDetectorTypeForScanNum(i),
                                    rawfile.GetMassAnalyzerTypeForScanNum(i),
                                    rawfile.GetActivationTypeForScanNum(i, MSOrder=2),
                                    rawfile.IsProfileScanForScanNum(i),
                                    rawfile.IsCentroidScanForScanNum(i),
                                    rawfile.GetIsolationWidthForScanNum(i, MSOrder=1),
                                    rawfile.GetCollisionEnergyForScanNum(i, MSOrder=1),
                                    rawfile.GetPrecursorInfoFromScanNum(i),
                                    rawfile.GetMassCalibrationValueFromScanNum(i, massCalibrationIndex=0),
                                    rawfile.GetScanEventForScanNum(i),
                                    rawfile.GetSegmentAndEventForScanNum(i),
                                    rawfile.GetCycleNumberFromScanNumber(i),
                                    rawfile.GetAValueFromScanNum(i),
                                    rawfile.GetBValueFromScanNum(i),
                                    rawfile.GetKValueFromScanNum(i),
                                    rawfile.GetRValueFromScanNum(i),
                                    rawfile.GetVValueFromScanNum(i),
                                    rawfile.GetMSXMultiplexValueFromScanNum(i),
                                    rawfile.GetCompoundNameFromScanNum(i),
                                    rawfile.GetNumberOfMassRangesFromScanNum(i),
                                    rawfile.GetMassRangeFromScanNum(i, 0),
                                    rawfile.GetMassRangeFromScanNum(i, 1),
                                    rawfile.GetNumberOfSourceFragmentsFromScanNum(i),
                                    rawfile.GetSourceFragmentValueFromScanNum(i, 0),
                                    rawfile.GetNumberOfSourceFragmentationMassRangesFromScanNum(i)
                                    ))), file=f)

rawfile.Close()
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].