You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

167 lines
4.4 KiB

"""
Legacy class for backwards compatibility
"""
import warnings
from nd2reader2 import ND2Reader
class Nd2(object):
""" Warning: this module is deprecated and only maintained for backwards compatibility with the non-PIMS version of
nd2reader.
"""
def __init__(self, filename):
warnings.warn(
"The 'Nd2' class is deprecated, please consider using the new ND2Reader interface which uses pims.",
DeprecationWarning)
self.reader = ND2Reader(filename)
def __repr__(self):
return "\n".join(["<Deprecated ND2 %s>" % self.reader.filename,
"Created: %s" % (self.date if self.date is not None else "Unknown"),
"Image size: %sx%s (HxW)" % (self.height, self.width),
"Frames: %s" % len(self.frames),
"Channels: %s" % ", ".join(["%s" % str(channel) for channel in self.channels]),
"Fields of View: %s" % len(self.fields_of_view),
"Z-Levels: %s" % len(self.z_levels)
])
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
if self.reader is not None:
self.reader.close()
def __len__(self):
return len(self.reader)
def __getitem__(self, item):
return self.reader[item]
def select(self, fields_of_view=None, channels=None, z_levels=None, start=0, stop=None):
"""Select images based on criteria.
Args:
fields_of_view: the fields of view
channels: the color channels
z_levels: the z levels
start: the starting frame
stop: the last frame
Returns:
ND2Reader: Sliced ND2Reader which contains the frames
"""
if stop is None:
stop = len(self.frames)
return self.reader[start:stop]
def get_image(self, frame_number, field_of_view, channel_name, z_level):
"""Deprecated. Returns the specified image from the ND2Reader class.
Args:
frame_number: the frame number
field_of_view: the field of view number
channel_name: the name of the color channel
z_level: the z level number
Returns:
Frame: the specified image
"""
return self.reader.parser.get_image_by_attributes(frame_number, field_of_view, channel_name, z_level,
self.height, self.width)
def close(self):
"""Closes the ND2Reader
"""
if self.reader is not None:
self.reader.close()
@property
def height(self):
"""Deprecated. Fetches the height of the image.
Returns:
int: the pixel height of the image
"""
return self._get_width_or_height("height")
@property
def width(self):
"""Deprecated. Fetches the width of the image.
Returns:
int: the pixel width of the image
"""
return self._get_width_or_height("width")
def _get_width_or_height(self, key):
return self.reader.metadata[key] if self.reader.metadata[key] is not None else 0
@property
def z_levels(self):
"""Deprecated. Fetches the available z levels.
Returns:
list: z levels.
"""
return self.reader.metadata["z_levels"]
@property
def fields_of_view(self):
"""Deprecated. Fetches the fields of view.
Returns:
list: fields of view.
"""
return self.reader.metadata["fields_of_view"]
@property
def channels(self):
"""Deprecated. Fetches all color channels.
Returns:
list: the color channels.
"""
return self.reader.metadata["channels"]
@property
def frames(self):
"""Deprecated. Fetches all frames.
Returns:
list: list of frames
"""
return self.reader.metadata["frames"]
@property
def date(self):
"""Deprecated. Fetches the acquisition date.
Returns:
string: the date
"""
return self.reader.metadata["date"]
@property
def pixel_microns(self):
"""Deprecated. Fetches the amount of microns per pixel.
Returns:
float: microns per pixel
"""
return self.reader.metadata["pixel_microns"]