Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 45 additions & 40 deletions src/imcflibs/imagej/bioformats.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,31 @@ def export_using_orig_name(imp, path, orig_name, tag, suffix, overwrite=False):
return out_file


def get_reader(path_to_file, setFlattenedResolutions=False):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add to release changelog #126

"""Get a Bio-Formats ImageReader for the specified file.

Parameters
----------
path_to_file : str
The full path to the image file.
setFlattenedResolutions : bool, optional
Whether to flatten resolutions in the ImageReader (default: False).

Returns
-------
ImageReader
A configured ImageReader instance for the specified file.
"""
reader = ImageReader()
ome_meta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(ome_meta)
m = DynamicMetadataOptions()
m.setBoolean(ZeissCZIReader.ALLOW_AUTOSTITCHING_KEY, False)
reader.setMetadataOptions(m)
reader.setId(str(path_to_file))
return reader, ome_meta


def get_series_info_from_ome_metadata(path_to_file, skip_labels=False):
"""Get the Bio-Formats series information from a file on disk.

Expand All @@ -378,44 +403,31 @@ def get_series_info_from_ome_metadata(path_to_file, skip_labels=False):
>>> count, indices = get_series_info_from_ome_metadata("image.nd2", skip_labels=True)
"""

reader, ome_meta = get_reader(path_to_file, skip_labels)
series_count = reader.getSeriesCount()
if not skip_labels:
reader = ImageReader()
reader.setFlattenedResolutions(False)
ome_meta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(ome_meta)
reader.setId(path_to_file)
series_count = reader.getSeriesCount()

reader.close()
# If we are not skipping labels, return the full range
return series_count, range(series_count)

else:
reader = ImageReader()
# reader.setFlattenedResolutions(True)
ome_meta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(ome_meta)
reader.setId(path_to_file)
series_count = reader.getSeriesCount()

series_ids = []
series_names = []
x = 0
y = 0
for i in range(series_count):
reader.setSeries(i)
series_ids = []
series_names = []
x = 0
y = 0
for i in range(series_count):
reader.setSeries(i)

if reader.getSizeX() > x and reader.getSizeY() > y:
name = ome_meta.getImageName(i)
if reader.getSizeX() > x and reader.getSizeY() > y:
name = ome_meta.getImageName(i)

if name not in ["label image", "macro image"]:
series_ids.append(i)
series_names.append(name)
if name not in ["label image", "macro image"]:
series_ids.append(i)
series_names.append(name)

x = reader.getSizeX()
y = reader.getSizeY()
x = reader.getSizeX()
y = reader.getSizeY()

print(series_names)
return len(series_ids), series_ids
print(series_names)
return len(series_ids), series_ids


def write_bf_memoryfile(path_to_file):
Expand Down Expand Up @@ -452,10 +464,7 @@ def get_metadata_from_file(path_to_image):
An instance of `imcflibs.imagej.bioformats.ImageMetadata` containing the extracted metadata.
"""

reader = ImageReader()
ome_meta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(ome_meta)
reader.setId(str(path_to_image))
reader, ome_meta = get_reader(path_to_image)

metadata = ImageMetadata(
unit_width=ome_meta.getPixelsPhysicalSizeX(0).value(),
Expand Down Expand Up @@ -507,11 +516,7 @@ def get_stage_coords(filenames):
max_phys_size_z = 0.0

for counter, image in enumerate(filenames):
reader = ImageReader()
reader.setFlattenedResolutions(False)
ome_meta = MetadataTools.createOMEXMLMetadata()
reader.setMetadataStore(ome_meta)
reader.setId(str(image))
reader, ome_meta = get_reader(image)
series_count = reader.getSeriesCount()

# Process only the first image to get values not dependent on series
Expand Down
Loading