@@ -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+
355380def 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
421433def 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