Source code for imagedata.header

"""Image series header

"""

import copy
import logging
import numpy as np
import pydicom.uid
import pydicom.dataset
import pydicom.datadict
from .formats import INPUT_ORDER_NONE, SORT_ON_SLICE
from .formats.dicomlib.uid import get_uid
from .axis import UniformAxis, UniformLengthAxis, VariableAxis

logger = logging.getLogger(__name__)

header_tags = ['input_format',
               'modality', 'laterality', 'protocolName', 'bodyPartExamined',
               'seriesDate', 'seriesTime', 'seriesNumber',
               'seriesDescription', 'imageType', 'frameOfReferenceUID',
               'studyInstanceUID', 'studyID', 'seriesInstanceUID',
               'SOPClassUID', 'SOPInstanceUIDs',
               'accessionNumber',
               'patientName', 'patientID', 'patientBirthDate',
               # 'windowCenter', 'windowWidth',
               'dicomTemplate', 'dicomToDo',
               'tags', 'colormap', 'colormap_norm', 'colormap_label',
               'input_sort']
geometry_tags = ['spacing', 'imagePositions', 'orientation', 'transformationMatrix',
                 'sliceLocations',
                 'patientPosition',
                 'photometricInterpretation', 'axes']






# def deepcopy_DicomHeaderDict(source, filename=None):
#     """Deepcopy contents of DicomHeaderDict."""
#
#     if isinstance(source, dict):
#         ds = {}
#         for tag, element in source.items():
#             if tag == 0x7fe00010:
#                 continue  # Do not copy pixel data, will be added later
#             ds[tag] = copy.deepcopy(element)
#             # ds.add(element)
#     else:
#         # sop_ins_uid = obj.new_uid()
#
#         # Populate required values for file meta information
#         file_meta = pydicom.dataset.FileMetaDataset()
#         # file_meta.MediaStorageSOPClassUID = template.SOPClassUID
#         # file_meta.MediaStorageSOPInstanceUID = sop_ins_uid
#         # file_meta.ImplementationClassUID = "%s.1" % obj.root
#         file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
#
#         ds = pydicom.dataset.FileDataset(
#             filename,
#             {},
#             file_meta=file_meta,
#             preamble=b"\0" * 128
#         )
#
#         for element in source.iterall():
#             # print('deepcopy_DicomHeaderDict: element {} {}'.format(
#             #    element.tag,
#             #    get_size(element)))
#             if element.tag == 0x7fe00010:
#                 continue  # Do not copy pixel data, will be added later
#             ds.add(copy.deepcopy(element))
#             # ds.add(element)
#
#     # print('deepcopy_DicomHeaderDict: {} -> {}'.format(
#     #    get_size(source),
#     #    get_size(ds)
#     # ))
#     return ds