Source code for imagedata.header

"""Image series header

"""

import copy
import logging
import pydicom.dataset
import pydicom.datadict
import imagedata.formats
import imagedata.formats.dicomlib.uid

logger = logging.getLogger(__name__)

header_tags = ['input_format',
               'seriesNumber',
               'seriesDescription', 'imageType', 'frameOfReferenceUID',
               'studyInstanceUID', 'studyID', 'seriesInstanceUID',
               'SOPClassUID',
               'accessionNumber',
               'patientName', 'patientID', 'patientBirthDate',
               'input_sort']
geometry_tags = ['sliceLocations', 'tags', 'spacing',
                 'imagePositions', 'orientation', 'transformationMatrix',
                 'color', 'photometricInterpretation', 'axes']





[docs]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, # imagedata.formats.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( # imagedata.formats.get_size(source), # imagedata.formats.get_size(ds) # )) return ds