Renaiming Brain Vision Recorder files is a pain. Here's a python script that makes it (more of) a breeze.
Brain Vision Recorder is a widely used software for EEG-recordings. Every EEG-recording is saved as three files:
- One .eeg file, containing all the data
- One .vmrk/.amrk/.bmrk file, containing markers and a reference to the .eeg file
- One .vhdr/.ahdr/.bhdr file, containing header information and references to the marker file and data file. This is the file that represents the recording and opened by analysis software
Because of these internal references between the files, it is quite laborious (and risky) to rename a recording. I often rename my recordings before analysis. I use the Python script below for this purpose.
import os, fileinput
# Specify folder with .eeg and meta-files
folder = '/home/jonas/Desktop/test/'
# Loop through all files
for filename in sorted(os.listdir(folder)):
filebase, filetype = os.path.splitext(filename)
# Only operate on selected file extensions
if filetype in ('.eeg', '.bhdr', '.vhdr','.ahdr','.bmrk','.amrk','.vmrk'):
print 'processing '+filename+'...'
# Generate new name
newname = 'XXXX' + filename
# Actually rename file
# Updates header and marker files to match actual filenames
filebase, filetype = os.path.splitext(newname)
if filetype != '.eeg':
for line in fileinput.FileInput(folder +newname, inplace=1):
# For header-files and marker-files
if 'DataFile=' in line: line = 'DataFile='+filebase+'.eeg'
# For header-files
elif 'MarkerFile=' in line:
tmp_str = 'MarkerFile='+filebase
if filetype == '.bhdr': tmp_str +='.bmrk'
if filetype == '.ahdr': tmp_str +='.amrk'
if filetype == '.vhdr': tmp_str +='.vmrk'
line = tmp_str
How to modify the script
The important part is just below the "#Generate new name". You can use this in two ways. First, you can rename your files in the browser and type in
newname = filename
This will simply update the header information in the header- and marker-files. Secondly, you can use all sorts of generative filename generation. E.g. this takes a subject ID from the middle of the filename and adds it to the front after a paradigm-name:
newname = 'aud-oddball, subject ' +filename[6:10] + filename[:6] + filename[10:]
I hope this helps someone out there.