Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@lazyattr
def shape(self):
shape = tuple(dim.size for dim in self.dimension_entries
if dim.dimension != b'M')
sampleshape = numpy.dtype(self.dtype).shape
return shape + (sampleshape if sampleshape else (1,))
@lazyattr
def dtype(self):
"""Return dtype of image data in file."""
# subblock data can be of different pixel type
dtype = self.filtered_subblock_directory[0].dtype[-2:]
for directory_entry in self.filtered_subblock_directory:
dtype = numpy.promote_types(dtype, directory_entry.dtype[-2:])
return dtype
@lazyattr
def stored_shape(self):
shape = tuple(dim.stored_size for dim in self.dimension_entries
if dim.dimension != b'M')
sampleshape = numpy.dtype(self.dtype).shape
return shape + (sampleshape if sampleshape else (1,))
@lazyattr
def metadata(self):
"""Return data from MetadataSegment as xml.ElementTree root Element.
Return None if no Metadata segment is found.
"""
if self.header.metadata_position:
segment = Segment(self._fh, self.header.metadata_position)
if segment.sid == MetadataSegment.SID:
data = segment.data().data()
return etree.fromstring(data.encode('utf-8'))
warnings.warn("Metadata segment not found")
try:
metadata = next(self.segments(MetadataSegment.SID))
return etree.fromstring(metadata.data().encode('utf-8'))
except StopIteration:
@lazyattr
def filtered_subblock_directory(self):
"""Return sorted list of DirectoryEntryDV if mosaic, else all."""
if not self._filter_mosaic:
return self.subblock_directory
filtered = [directory_entry
for directory_entry in self.subblock_directory
if directory_entry.mosaic_index is not None]
if not filtered:
return self.subblock_directory
return list(sorted(filtered, key=lambda x: x.mosaic_index))
@lazyattr
def start(self):
start = tuple(dim.start for dim in self.dimension_entries
if dim.dimension != b'M')
return start + (0,)
@lazyattr
def metadata(self):
"""Return data from MetadataSegment as xml.ElementTree root Element.
Return None if no Metadata segment is found.
"""
if self.header.metadata_position:
segment = Segment(self._fh, self.header.metadata_position)
if segment.sid == MetadataSegment.SID:
data = segment.data().data()
return etree.fromstring(data.encode('utf-8'))
warnings.warn("Metadata segment not found")
try:
metadata = next(self.segments(MetadataSegment.SID))
return etree.fromstring(metadata.data().encode('utf-8'))
except StopIteration:
@lazyattr
def attachment_directory(self):
"""Return list of all AttachmentEntryA1 in file.
Use AttachmentDirectorySegment if exists, else find AttachmentSegments.
"""
if self.header.attachment_directory_position:
segment = Segment(self._fh,
self.header.attachment_directory_position)
if segment.sid == AttachmentDirectorySegment.SID:
return segment.data().entries
warnings.warn("AttachmentDirectory segment not found")
return list(segment.attachment_entry for segment in
self.segments(AttachmentSegment.SID))
@lazyattr
def subblock_directory(self):
"""Return list of all DirectoryEntryDV in file.
Use SubBlockDirectorySegment if exists, else find SubBlockSegments.
"""
if self.header.directory_position:
segment = Segment(self._fh, self.header.directory_position)
if segment.sid == SubBlockDirectorySegment.SID:
return segment.data().entries
warnings.warn("SubBlockDirectory segment not found")
return list(segment.directory_entry for segment in
self.segments(SubBlockSegment.SID))
@lazyattr
def attachment_directory(self):
"""Return list of all AttachmentEntryA1 in file.
Use AttachmentDirectorySegment if exists, else find AttachmentSegments.
"""
if self.header.attachment_directory_position:
segment = Segment(self._fh,
self.header.attachment_directory_position)
if segment.sid == AttachmentDirectorySegment.SID:
return segment.data().entries
warnings.warn("AttachmentDirectory segment not found")
return list(segment.attachment_entry for segment in
self.segments(AttachmentSegment.SID))