Skip to content

Commit 1c5a5fb

Browse files
authored
Merge pull request #105 from lguerard/fix_czi_stitching
Fix issue with CZI autostitch options
2 parents 6261182 + a6efb3f commit 1c5a5fb

1 file changed

Lines changed: 45 additions & 40 deletions

File tree

src/imcflibs/imagej/bioformats.py

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,31 @@ def export_using_orig_name(imp, path, orig_name, tag, suffix, overwrite=False):
352352
return out_file
353353

354354

355+
def get_reader(path_to_file, setFlattenedResolutions=False):
356+
"""Get a Bio-Formats ImageReader for the specified file.
357+
358+
Parameters
359+
----------
360+
path_to_file : str
361+
The full path to the image file.
362+
setFlattenedResolutions : bool, optional
363+
Whether to flatten resolutions in the ImageReader (default: False).
364+
365+
Returns
366+
-------
367+
ImageReader
368+
A configured ImageReader instance for the specified file.
369+
"""
370+
reader = ImageReader()
371+
ome_meta = MetadataTools.createOMEXMLMetadata()
372+
reader.setMetadataStore(ome_meta)
373+
m = DynamicMetadataOptions()
374+
m.setBoolean(ZeissCZIReader.ALLOW_AUTOSTITCHING_KEY, False)
375+
reader.setMetadataOptions(m)
376+
reader.setId(str(path_to_file))
377+
return reader, ome_meta
378+
379+
355380
def get_series_info_from_ome_metadata(path_to_file, skip_labels=False):
356381
"""Get the Bio-Formats series information from a file on disk.
357382
@@ -378,44 +403,31 @@ def get_series_info_from_ome_metadata(path_to_file, skip_labels=False):
378403
>>> count, indices = get_series_info_from_ome_metadata("image.nd2", skip_labels=True)
379404
"""
380405

406+
reader, ome_meta = get_reader(path_to_file, skip_labels)
407+
series_count = reader.getSeriesCount()
381408
if not skip_labels:
382-
reader = ImageReader()
383-
reader.setFlattenedResolutions(False)
384-
ome_meta = MetadataTools.createOMEXMLMetadata()
385-
reader.setMetadataStore(ome_meta)
386-
reader.setId(path_to_file)
387-
series_count = reader.getSeriesCount()
388-
389-
reader.close()
409+
# If we are not skipping labels, return the full range
390410
return series_count, range(series_count)
391411

392-
else:
393-
reader = ImageReader()
394-
# reader.setFlattenedResolutions(True)
395-
ome_meta = MetadataTools.createOMEXMLMetadata()
396-
reader.setMetadataStore(ome_meta)
397-
reader.setId(path_to_file)
398-
series_count = reader.getSeriesCount()
399-
400-
series_ids = []
401-
series_names = []
402-
x = 0
403-
y = 0
404-
for i in range(series_count):
405-
reader.setSeries(i)
412+
series_ids = []
413+
series_names = []
414+
x = 0
415+
y = 0
416+
for i in range(series_count):
417+
reader.setSeries(i)
406418

407-
if reader.getSizeX() > x and reader.getSizeY() > y:
408-
name = ome_meta.getImageName(i)
419+
if reader.getSizeX() > x and reader.getSizeY() > y:
420+
name = ome_meta.getImageName(i)
409421

410-
if name not in ["label image", "macro image"]:
411-
series_ids.append(i)
412-
series_names.append(name)
422+
if name not in ["label image", "macro image"]:
423+
series_ids.append(i)
424+
series_names.append(name)
413425

414-
x = reader.getSizeX()
415-
y = reader.getSizeY()
426+
x = reader.getSizeX()
427+
y = reader.getSizeY()
416428

417-
print(series_names)
418-
return len(series_ids), series_ids
429+
print(series_names)
430+
return len(series_ids), series_ids
419431

420432

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

455-
reader = ImageReader()
456-
ome_meta = MetadataTools.createOMEXMLMetadata()
457-
reader.setMetadataStore(ome_meta)
458-
reader.setId(str(path_to_image))
467+
reader, ome_meta = get_reader(path_to_image)
459468

460469
metadata = ImageMetadata(
461470
unit_width=ome_meta.getPixelsPhysicalSizeX(0).value(),
@@ -507,11 +516,7 @@ def get_stage_coords(filenames):
507516
max_phys_size_z = 0.0
508517

509518
for counter, image in enumerate(filenames):
510-
reader = ImageReader()
511-
reader.setFlattenedResolutions(False)
512-
ome_meta = MetadataTools.createOMEXMLMetadata()
513-
reader.setMetadataStore(ome_meta)
514-
reader.setId(str(image))
519+
reader, ome_meta = get_reader(image)
515520
series_count = reader.getSeriesCount()
516521

517522
# Process only the first image to get values not dependent on series

0 commit comments

Comments
 (0)