Skip to content

Commit 543ecf0

Browse files
committed
Work with omero_reader
1 parent b8bea8f commit 543ecf0

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

bioformats/formatreader.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@
5050
from . import metadatatools as metadatatools
5151
import javabridge as javabridge
5252

53+
from omero_reader import OmeroReader
54+
from omero_reader.utils import omero_on_the_path, omero_reader_enabled
55+
5356
K_OMERO_SERVER = "omero_server"
5457
K_OMERO_PORT = "omero_port"
5558
K_OMERO_USER = "omero_user"
@@ -913,6 +916,7 @@ def get_image_reader(key, path=None, url=None):
913916
key - use this key to keep only a single cache member associated with
914917
that key open at a time.
915918
'''
919+
logger.debug("Getting image reader for: %s, %s, %s" % (key, path, url))
916920
if key in __image_reader_key_cache:
917921
old_path, old_url = __image_reader_key_cache[key]
918922
old_count, rdr = __image_reader_cache[old_path, old_url]
@@ -922,7 +926,17 @@ def get_image_reader(key, path=None, url=None):
922926
if (path, url) in __image_reader_cache:
923927
old_count, rdr = __image_reader_cache[path, url]
924928
else:
925-
rdr = ImageReader(path=path, url=url)
929+
# If OMERO.py is found on the PYTHONPATH and OMERO_READER_ENABLED
930+
# is True OMERO python reader can be used to directly request
931+
# the image pixels from the server.
932+
# Following this route gives almost 10x speed up.
933+
if omero_on_the_path() and omero_reader_enabled() and \
934+
url is not None and url.lower().startswith("omero:"):
935+
logger.debug("Initializing Python reader.")
936+
rdr = OmeroReader(__omero_server, __omero_session_id, url=url)
937+
else:
938+
logger.debug("Falling back to Java reader.")
939+
rdr = ImageReader(path=path, url=url)
926940
old_count = 0
927941
__image_reader_cache[path, url] = (old_count+1, rdr)
928942
__image_reader_key_cache[key] = (path, url)
@@ -945,6 +959,7 @@ def release_image_reader(key):
945959
def clear_image_reader_cache():
946960
'''Get rid of any open image readers'''
947961
for use_count, rdr in __image_reader_cache.values():
962+
logger.debug("Closing reader %s" % rdr)
948963
rdr.close()
949964
__image_reader_cache.clear()
950965
__image_reader_key_cache.clear()

0 commit comments

Comments
 (0)