Pydcmio DicomanonymizerΒΆ

Example automatically generated from package script.

# System import
from __future__ import print_function
import argparse
import os
import shutil

# Bredala import
try:
    import bredala
    bredala.USE_PROFILER = False
    bredala.register("pydcmio.dcmanonymizer.anonymize",
                     names=["anonymize_dicomdir"])
except:
    pass

# Dcmio import
from pydcmio import __version__ as version
from pydcmio.dcmanonymizer.anonymize import anonymize_dicomdir

# Parameters to track
__hopla__ = ["tool", "version", "inputs", "outputs",
             "dcmdir", "anon_dcmdir", "anon_dcm_files", "logfiles"]


# Script documentation
doc = """
Dicom to dicom anonymization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This code enables us to anonymize dicom files following references.
It generates a logfile (json) that contains information about all
transformations that have been performed.
One logfile is generated for each dicom anonymized.

Command:

python $HOME/git/pydcmio/pydcmio/scripts/pydcmio_dicomanonymizer \
    -v 1 \
    -d /volatile/nsap/dcm2nii/dicom/T2GRE \
    -o /volatile/nsap/dcm2nii/dicom_anon/T2GRE \
    -e
"""


def is_directory(dirarg):
    """ Type for argparse - checks that directory exists.
    """
    if not os.path.isdir(dirarg):
        raise argparse.ArgumentError(
            "The directory '{0}' does not exist!".format(dirarg))
    return dirarg


parser = argparse.ArgumentParser(description=doc)
parser.add_argument(
    "-v", "--verbose", dest="verbose", type=int, choices=[0, 1, 2], default=0,
    help="increase the verbosity level: 0 silent, [1, 2] verbose.")
parser.add_argument(
    "-e", "--erase", dest="erase", action="store_true",
    help="if activated, clean the output folder.")
parser.add_argument(
    "-d", "--dcmdir", dest="dcmdir", required=True, metavar="PATH",
    help="the folder that contains the DICOMs to be anonymized.",
    type=is_directory)
parser.add_argument(
    "-o", "--outdir", dest="outdir", required=True, metavar="PATH",
    help="the folder that contains the anonymized dicom files.",
    type=is_directory)
args = parser.parse_args()

First check if the output directory exists on the file system, and clean it if requested.

if args.verbose > 0:
    print("[info] Start dicom anonymization...")
    print("[info] Directory: {0}.".format(args.dcmdir))
    print("[info] Output: {0}.".format(args.outdir))
dcmdir = args.dcmdir
anon_dcmdir = args.outdir
inputs = [dcmdir]
outputs = []
if os.path.isdir(anon_dcmdir):
    if args.erase:
        shutil.rmtree(anon_dcmdir)
        os.makedirs(anon_dcmdir)
else:
    os.makedirs(anon_dcmdir)

Anonymize the Dicom files

anon_dcm_files, logfiles = anonymize_dicomdir(dcmdir, anon_dcmdir)
if args.verbose > 1:
    print("[result] anonymized files: {0}.".format(anon_dcm_files))
    print("[result] logfiles: {0}.".format(logfiles))
outputs = anon_dcm_files + logfiles

Total running time of the script: ( 0 minutes 0.000 seconds)

Gallery generated by Sphinx-Gallery