Using bidsphysio to convert Siemen's .puls data to bids format


I am trying to convert physiological data from a Seimens PRISMA scanner into bids format to include with resting state data. I installed bidsphysio and am trying to use it to convert heart rate data from a Siemens PRISMA (a .puls file) into bids format.

I installed it using pip install bidsphysio, which worked without any issue, but now when I run it using:

physio2bidsphysio --infile /home/…/CPP00030.puls --bidsprefix CPP00030 --verbose

I get the following error consistently:

Warning: File ‘CPP00030.puls’ does not seem to be a valid VB15A PMU file: Expected: ‘not 5002’; got: ‘5002 […]’
We cannot save with trigger because we found no trigger.

The issue is consistent across a few participant files, so is not an issue with the download of one file. I downloaded these files directly from C:/Medcom/log so I am not sure how an error would have been introduced. I did take a look at the .puls file, and it seems OK in terms of basic structure that pulse oximetry files from Siemens should have, based on an example I found on

I have no prior experience doing this, so if anyone has used bidsphysio and has encountered something similar I would love to her form you. Also, if there is any way to validate a Siemens .puls file I would appreciate it.


Hi Anne,

What version of the Siemens Syngo software was used to create these files? The latest supported version is VE11C. I know it’s a bit old now, but I don’t have the bandwidth to update the tool.

If anybody out there is willing to update the tool, please do, by all means. All PRs are welcome.

Hi Pablo,

Thanks for getting back to me about this. I just heard back from our MRI technologist and the scanner is running VE11C so I don’t think that the version of the software is a problem.

I have been trying to find an example of a Seimens .puls file online to see if there is anything offabout the ones that I am working with. In all of the files 5002 appears as the 5th number in the file. Since the error I get is:

CPP00030.puls’ does not seem to be a valid VB15A PMU file: Expected: ‘not 5002’; got: ‘5002 […]’

I was wondering if there was an issue in the .puls files produced by the scanner that I am using?

I put a few examples of the .puls files I am working with in this Google Drive folder because this filetype cannot be uploaded oon Neurostars. If you could take a quick look and let me know if there is anything obviously wrong with their formatting I would really appreciate it.

Thank you again for your help,


Hi @anne.a ,

I checked you file and they look similar to the one we get on our system, also VE11C.
In fact I run the same command:

physio2bidsphysio --infile /home/…/CPP00030.puls --bidsprefix CPP00030 --verbose

and got the same warning as you but this is just a warning! The BIDS file is well generated. Did you check that you got an output from your command?

Hi @jsein. Thank you for testing my files, I am relieved they look like your .puls files and that you get the same results when you run them. I do get two output files when I run the script, I just assumed a warning indicated a problem in the output, but possibly that is not the case.

I am not in the office today but I will check the output from bidsphysio on Monday morning. If it is in proper BIDS format and passes a validator do I just not worry about the warning?

Thank you again for your help with this!

Hi @jsein

Thanks for your help checking my files and the warning that I get. I have a better understanding of what is going on now thanks to your help. I do get the .tsv and .json files that I should from the physio2bidsphysio command, with one column of pulse data so that is a start.

The issue I see now is that there is no second column of trigger data in the .tsv file, which I assume is important to synchronize the pulse data with the scan data. I do have trigger data, stored in the .ext file that is part of the Siemens PMU output. However .ext files are not accepted as part of bidsphysio so I do not know how to have the trigger data included in the .tsv. Is this an issue, and if so any idea how I get that trigger data incorperated into the file with the pulse data?

Thanks again!

@pvelasco if you have any idea what the warning “NAME.puls’ does not seem to be a valid VB15A PMU file: Expected: ‘not 5002’; got: ‘5002 […]” means? I see that it is just a warning, and I am getting the expected .tsv and .json, I just want to confirm this warnin is not indicative of a significant problem.

Hi @anne.a,
You can safely ignore the warning. The code grabs the file and then checks whether first if it is a VB15A file, and writes out a warning if it is not a valid VB15A file, then it checks whether it is a VE11C. In hind sight, it just just log an info message, not a warning.
Sorry about that.