1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#!/usr/bin/env python
# Authors : Dominik Krzeminski
# Luke Bloy <luke.bloy@gmail.com>
"""Anonymize raw fif file.
To anonymize other file types call :func:`mne.io.anonymize_info` on their
:class:`~mne.Info` objects and resave to disk.
Examples
--------
.. code-block:: console
$ mne anonymize -f sample_audvis_raw.fif
"""
import sys
import mne
import os.path as op
ANONYMIZE_FILE_PREFIX = 'anon'
def mne_anonymize(fif_fname, out_fname, keep_his, daysback, overwrite):
"""Call *anonymize_info* on fif file and save.
Parameters
----------
fif_fname : str
Raw fif File
out_fname : str | None
Output file name
relative paths are saved relative to parent dir of fif_fname
None will save to parent dir of fif_fname with default prefix
daysback : int | None
Number of days to subtract from all dates.
If None will default to move date of service to Jan 1 2000
keep_his : bool
If True his_id of subject_info will NOT be overwritten.
defaults to False
overwrite : bool
Overwrite output file if it already exists
"""
raw = mne.io.read_raw_fif(fif_fname, allow_maxshield=True)
raw.anonymize(daysback=daysback, keep_his=keep_his)
# determine out_fname
dir_name = op.split(fif_fname)[0]
if out_fname is None:
fif_bname = op.basename(fif_fname)
out_fname = op.join(dir_name,
"{}-{}".format(ANONYMIZE_FILE_PREFIX, fif_bname))
elif not op.isabs(out_fname):
out_fname = op.join(dir_name, out_fname)
raw.save(out_fname, overwrite=overwrite)
def run():
"""Run *mne_anonymize* command."""
from mne.commands.utils import get_optparser
parser = get_optparser(__file__)
parser.add_option("-f", "--file", type="string", dest="file",
help="Name of file to modify.", metavar="FILE",
default=None)
parser.add_option("-o", "--output", type="string", dest="output",
help="Name of anonymized output file."
"`anon-` prefix is added to FILE if not given",
metavar="OUTFILE", default=None)
parser.add_option("--keep_his", dest="keep_his", action="store_true",
help="Keep the HIS tag (not advised)", default=False)
parser.add_option("-d", "--daysback", type="int", dest="daysback",
help="Move dates in file backwards by this many days.",
metavar="N_DAYS", default=None)
parser.add_option("--overwrite", dest="overwrite", action="store_true",
help="Overwrite input file.", default=False)
options, args = parser.parse_args()
if options.file is None:
parser.print_help()
sys.exit(1)
fname = options.file
out_fname = options.output
keep_his = options.keep_his
daysback = options.daysback
overwrite = options.overwrite
if not fname.endswith('.fif'):
raise ValueError('%s does not seem to be a .fif file.' % fname)
mne_anonymize(fname, out_fname, keep_his, daysback, overwrite)
is_main = (__name__ == '__main__')
if is_main:
run()
|