5050from . import metadatatools as metadatatools
5151import javabridge as javabridge
5252
53+ from omero_reader import OmeroReader
54+ from omero_reader .utils import omero_on_the_path , omero_reader_enabled
55+
5356K_OMERO_SERVER = "omero_server"
5457K_OMERO_PORT = "omero_port"
5558K_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):
945959def 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