Spaces:
Running
Running
| # Authors: The MNE-Python contributors. | |
| # License: BSD-3-Clause | |
| # Copyright the MNE-Python contributors. | |
| """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 os.path as op | |
| import sys | |
| import mne | |
| 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 : path-like | |
| Raw fif File | |
| out_fname : path-like | 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, f"{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(f"{fname} does not seem to be a .fif file.") | |
| mne_anonymize(fname, out_fname, keep_his, daysback, overwrite) | |
| is_main = __name__ == "__main__" | |
| if is_main: | |
| run() | |