def field_class_mapping(): return ( (J.class_for_name('imagej.display.Display'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.display.DatasetView'), FT_IMAGE), (J.class_for_name('imagej.ImageJ'), FT_CONTEXT) )
def field_class_mapping(): return ( (J.class_for_name('imagej.data.display.ImageDisplay'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.display.DatasetView'), FT_IMAGE), (J.class_for_name('imagej.data.table.TableDisplay'), FT_TABLE) )
def field_class_mapping(): return ( (J.class_for_name('imagej.data.display.ImageDisplay'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.display.DatasetView'), FT_IMAGE), (J.class_for_name('imagej.data.table.TableDisplay'), FT_TABLE), (J.class_for_name('org.scijava.plugin.SciJavaPlugin'), FT_PLUGIN) )
def get_plugin(classname): '''Return an instance of the named plugin''' if classname.startswith("ij."): cls = J.class_for_name(classname) else: cls = J.class_for_name(classname, get_user_loader()) cls = J.get_class_wrapper(cls, True) constructor = J.get_constructor_wrapper(cls.getConstructor(None)) return constructor.newInstance(None)
def get_plugin(classname): """Return an instance of the named plugin""" if classname.startswith("ij."): cls = J.class_for_name(classname) else: cls = J.class_for_name(classname, get_user_loader()) cls = J.get_class_wrapper(cls, True) constructor = J.get_constructor_wrapper(cls.getConstructor(None)) return constructor.newInstance(None)
def get_context(): '''Get the ImageJ context This is a singleton ImageJ context. We need a singleton for now because of http://trac.imagej.net/ticket/1413 This is an imagej.ImageJ, which at one point was the context. Call self.getContext() to get the org.scijava.Context which may be what you want. ''' global the_imagej_context if the_imagej_context is None: the_imagej_context = create_context(None) # # We have to turn off the updater and tell ImageJ to never call # System.exit. We have to tell ImageJ that we read the readme file. # # To Do: programatically turn off the updater and take control of # the quitting and exit process. # max_value = J.run_script( "java.lang.Long.toString(java.lang.Long.MAX_VALUE);") prefs = [("imagej.updater.core.UpToDate", "latestNag", max_value), ("imagej.core.options.OptionsMisc", "exitWhenQuitting", "false")] plugin_service = the_imagej_context.getService( "org.scijava.plugin.PluginService") ui_interface = J.class_for_name("imagej.ui.UserInterface") script = """ var result = java.lang.System.getProperty('ij.ui'); if (! result) { var infos = pluginService.getPluginsOfType(ui_interface); if (infos.size() > 0) { result = infos.get(0).getClassName(); } } result;""" ui_class = J.run_script( script, dict(pluginService=plugin_service, ui_interface=ui_interface)) first_run = "firstRun-" + the_imagej_context.getVersion() if ui_class: prefs.append((ui_class, first_run, "false")) for class_name, key, value in prefs: c = J.class_for_name(class_name) J.static_call( "imagej/util/Prefs", "put", "(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)V", c, key, value) return the_imagej_context
def get_context(): '''Get the ImageJ context This is a singleton ImageJ context. We need a singleton for now because of http://trac.imagej.net/ticket/1413 This is an imagej.ImageJ, which at one point was the context. Call self.getContext() to get the org.scijava.Context which may be what you want. ''' global the_imagej_context if the_imagej_context is None: the_imagej_context = create_context(None) # # We have to turn off the updater and tell ImageJ to never call # System.exit. We have to tell ImageJ that we read the readme file. # # To Do: programatically turn off the updater and take control of # the quitting and exit process. # max_value = J.run_script( "java.lang.Long.toString(java.lang.Long.MAX_VALUE);") prefs = [ ("imagej.updater.core.UpToDate", "latestNag", max_value), ("imagej.core.options.OptionsMisc", "exitWhenQuitting", "false")] plugin_service = the_imagej_context.getService( "org.scijava.plugin.PluginService") ui_interface = J.class_for_name("imagej.ui.UserInterface") script = """ var result = java.lang.System.getProperty('ij.ui'); if (! result) { var infos = pluginService.getPluginsOfType(ui_interface); if (infos.size() > 0) { result = infos.get(0).getClassName(); } } result;""" ui_class = J.run_script(script, dict(pluginService=plugin_service, ui_interface=ui_interface)) first_run = "firstRun-"+the_imagej_context.getVersion() if ui_class: prefs.append((ui_class, first_run, "false")) for class_name, key, value in prefs: c = J.class_for_name(class_name) J.static_call( "imagej/util/Prefs", "put", "(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)V", c, key, value) return the_imagej_context
def __init__(self): env = jutil.get_env() class_name = 'loci/formats/ImageReader' klass = env.find_class(class_name) base_klass = env.find_class('loci/formats/IFormatReader') self.o = jutil.make_instance( "loci/formats/ClassList", "(Ljava/lang/String;" "Ljava/lang/Class;" # base "Ljava/lang/Class;)V", # location in jar "readers.txt", base_klass, klass) problem_classes = [ # BDReader will read all .tif files in an experiment if it's # called to load a .tif. # 'loci.formats.in.BDReader', # # MRCReader will read .stk files which should be read # by MetamorphReader # 'loci.formats.in.MRCReader' ] for problem_class in problem_classes: # Move to back klass = jutil.class_for_name(problem_class) self.remove_class(klass) self.add_class(klass)
def test_03_11_cw_get_constructor(self): c = J.get_class_wrapper('java.lang.String') sclass = J.class_for_name('java.lang.String') constructor = c.getConstructor([sclass]) self.assertEqual( J.call(constructor, 'getName', '()Ljava/lang/String;'), 'java.lang.String')
def prepare_run(self, workspace): """Create an IPD for every url that passes the filter""" if workspace.pipeline.in_batch_mode(): return True file_list = workspace.pipeline.file_list if self.filter_choice != FILTER_CHOICE_NONE: if self.filter_choice == FILTER_CHOICE_IMAGES: expression = FILTER_DEFAULT else: expression = self.filter.value_text env = J.get_env() ifcls = J.class_for_name("org.cellprofiler.imageset.ImageFile") scls = env.find_class("java/lang/String") iffilter = J.make_instance( "org/cellprofiler/imageset/filter/Filter", "(Ljava/lang/String;Ljava/lang/Class;)V", expression, ifcls ) file_array = env.make_object_array(len(file_list), scls) for i, url in enumerate(file_list): if isinstance(url, unicode): ourl = env.new_string(url) else: ourl = env.new_string_utf(url) env.set_object_array_element(file_array, i, ourl) passes_filter = J.call(iffilter, "filterURLs", "([Ljava/lang/String;)[Z", file_array) file_list = [f for f, passes in zip(file_list, passes_filter) if passes] workspace.pipeline.set_filtered_file_list(file_list, self) return True
def __init__(self): env = jutil.get_env() class_name = 'loci/formats/ImageReader' klass = env.find_class(class_name) base_klass = env.find_class('loci/formats/IFormatReader') self.o = jutil.make_instance("loci/formats/ClassList", "(Ljava/lang/String;" "Ljava/lang/Class;" # base "Ljava/lang/Class;)V", # location in jar "readers.txt", base_klass, klass) problem_classes = [ # BDReader will read all .tif files in an experiment if it's # called to load a .tif. # 'loci.formats.in.BDReader', # # MRCReader will read .stk files which should be read # by MetamorphReader # 'loci.formats.in.MRCReader' ] for problem_class in problem_classes: # Move to back klass = jutil.class_for_name(problem_class) self.remove_class(klass) self.add_class(klass)
def prepare_run(self, workspace): '''Create an IPD for every url that passes the filter''' if workspace.pipeline.in_batch_mode(): return True file_list = workspace.pipeline.file_list if self.filter_choice != FILTER_CHOICE_NONE: if self.filter_choice == FILTER_CHOICE_IMAGES: expression = FILTER_DEFAULT else: expression = self.filter.value_text env = J.get_env() ifcls = J.class_for_name("org.cellprofiler.imageset.ImageFile") scls = env.find_class("java/lang/String") iffilter = J.make_instance( "org/cellprofiler/imageset/filter/Filter", "(Ljava/lang/String;Ljava/lang/Class;)V", expression, ifcls) file_array = env.make_object_array(len(file_list), scls) for i, url in enumerate(file_list): if isinstance(url, unicode): ourl = env.new_string(url) else: ourl = env.new_string_utf(url) env.set_object_array_element(file_array, i, ourl) passes_filter = J.call(iffilter, "filterURLs", "([Ljava/lang/String;)[Z", file_array) file_list = [ f for f, passes in zip(file_list, passes_filter) if passes ] workspace.pipeline.set_filtered_file_list(file_list, self) return True
def getIndex(self): index = J.call(self.o, "getIndex", "()Limagej/module/ModuleIndex;") index = J.get_collection_wrapper(index, wrap_module_info) index.getC = lambda c: J.get_collection_wrapper( J.call(index.o, "get", "(Ljava/lang/Class;)Ljava/util/List;", c), wrap_module_info ) index.getS = lambda class_name: index.getC(J.class_for_name(class_name)) return index
def getService(self, class_name): """Get a service with the given class name class_name - class name in dotted form returns the class or None if no implementor loaded. """ klass = J.class_for_name(class_name) return J.call(self.o, "get", "(Ljava/lang/Class;)Lorg/scijava/service/Service;", klass)
def getIndex(self): index = J.call(self.o, "getIndex", "()Limagej/module/ModuleIndex;") index = J.get_collection_wrapper(index, wrap_module_info) index.getC = lambda c: J.get_collection_wrapper( J.call(index.o, "get", "(Ljava/lang/Class;)Ljava/util/List;", c ), wrap_module_info) index.getS = lambda class_name: \ index.getC(J.class_for_name(class_name)) return index
def getService(self, class_name): '''Get a service with the given class name class_name - class name in dotted form returns the class or None if no implementor loaded. ''' klass = J.class_for_name(class_name) return J.call(self.o, 'getService', '(Ljava/lang/Class;)Limagej/service/Service;', klass)
def getActiveImageDisplay(self): """Get the active imagej.data.display.ImageDisplay""" return wrap_display( J.call( self.o, "getActiveDisplay", "()Limagej/display/Display;", J.class_for_name("imagej.data.display.ImageDisplay"), ) )
def loadService(self, class_name): '''Load the service class with the given class name You can use this method to pick specific implementations such as the headless or Swing UI. class_name - class name in dotted form, e.g. java.lang.String ''' klass = J.class_for_name(class_name) J.call(self.o, 'loadService', '(Ljava/lang/Class;)V', klass)
def test_03_09_cw_get_method(self): sclass = J.class_for_name('java.lang.String') iclass = J.get_static_field('java/lang/Integer', 'TYPE', 'Ljava/lang/Class;') c = J.get_class_wrapper('java.lang.String') m = c.getMethod('charAt', [ iclass ]) self.assertEqual(J.to_string(J.call(m, 'getReturnType', '()Ljava/lang/Class;')), 'char') m = c.getMethod('concat', [ sclass]) self.assertEqual(J.to_string(J.call(m, 'getReturnType', '()Ljava/lang/Class;')), 'class java.lang.String')
def getService(self, class_name): '''Get a service with the given class name class_name - class name in dotted form returns the class or None if no implementor loaded. ''' klass = J.class_for_name(class_name) return J.call(self.o, 'getService', '(Ljava/lang/Class;)Limagej/IService;', klass)
def test_03_09_cw_get_method(self): sclass = J.class_for_name('java.lang.String') iclass = J.get_static_field('java/lang/Integer', 'TYPE', 'Ljava/lang/Class;') c = J.get_class_wrapper('java.lang.String') m = c.getMethod('charAt', [iclass]) self.assertEqual( J.to_string(J.call(m, 'getReturnType', '()Ljava/lang/Class;')), 'char') m = c.getMethod('concat', [sclass]) self.assertEqual( J.to_string(J.call(m, 'getReturnType', '()Ljava/lang/Class;')), 'class java.lang.String')
def __init__(self): if service_classes is None: classes = None ctxt_fn = J.run_script( """new java.util.concurrent.Callable() { call: function() { return new Packages.imagej.ImageJ(false); } }""") else: classes = [ J.class_for_name(x) for x in service_classes or REQUIRED_SERVICES] classes = J.make_list(classes) ctxt_fn = J.run_script( """new java.util.concurrent.Callable() { call: function() { return new Packages.imagej.ImageJ(classes); } }""", dict(classes = classes.o)) self.o = J.execute_future_in_main_thread( J.make_future_task(ctxt_fn))
def __init__(self): env = jutil.get_env() class_name = "loci/formats/ImageReader" klass = env.find_class(class_name) base_klass = env.find_class("loci/formats/IFormatReader") self.o = jutil.make_instance( "loci/formats/ClassList", "(Ljava/lang/String;" "Ljava/lang/Class;" "Ljava/lang/Class;)V", # base # location in jar "readers.txt", base_klass, klass, ) problem_classes = [ # BDReader will read all .tif files in an experiment if it's # called to load a .tif. # "loci.formats.in.BDReader" ] for problem_class in problem_classes: # Move to back klass = jutil.class_for_name(problem_class) self.remove_class(klass) self.add_class(klass)
def __init__(self): if service_classes is None: classes = None ctxt_fn = J.run_script("""new java.util.concurrent.Callable() { call: function() { return new Packages.imagej.ImageJ(false); } }""") else: classes = [ J.class_for_name(x) for x in service_classes or REQUIRED_SERVICES ] classes = J.make_list(classes) ctxt_fn = J.run_script( """new java.util.concurrent.Callable() { call: function() { return new Packages.imagej.ImageJ(classes); } }""", dict(classes=classes.o)) self.o = J.execute_future_in_main_thread( J.make_future_task(ctxt_fn))
def field_class_mapping(): return ((J.class_for_name('imagej.data.display.ImageDisplay'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.display.DatasetView'), FT_IMAGE), (J.class_for_name('imagej.data.table.TableDisplay'), FT_TABLE))
def getActiveImageDisplay(self): '''Get the active imagej.data.display.ImageDisplay''' return wrap_display( J.call(self.o, "getActiveDisplay", "()Limagej/display/Display;", J.class_for_name("imagej.data.display.ImageDisplay")))
def test_03_04_cw_get_annotation(self): c = J.get_class_wrapper('java.security.Identity') annotation = c.getAnnotation(J.class_for_name('java.lang.Deprecated')) self.assertTrue(annotation is not None)
'java.lang.Long': FT_INTEGER, 'int': FT_INTEGER, 'short': FT_INTEGER, 'byte': FT_INTEGER, 'long': FT_INTEGER, 'java.lang.Float': FT_FLOAT, 'java.lang.Double': FT_FLOAT, 'float': FT_FLOAT, 'double': FT_FLOAT, 'java.lang.String': FT_STRING, 'java.lang.Boolean': FT_BOOL, 'boolean': FT_BOOL, 'imagej.util.ColorRGB': FT_COLOR } field_class_mapping = ((J.class_for_name('imagej.display.Display'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.roi.Overlay'), FT_OVERLAY)) def run_imagej(*args): J.static_call("imagej/Main", "main", "([Ljava/lang/String;)V", *[unicode(arg) for arg in args]) def create_planar_img(a): '''Create a PlanarImg from a numpy array a - numpy array. The values should be scaled to be between 0 and 255
def __init__(self): classes = [J.class_for_name(x) for x in service_classes] self.o = J.run_in_main_thread( lambda: J.static_call("imagej/ImageJ", "createContext", "([Ljava/lang/Class;)Limagej/ImageJ;", classes), True)
def __init__(self): classes = [ J.class_for_name(x) for x in service_classes] self.o = J.run_in_main_thread( lambda :J.static_call( "imagej/ImageJ", "createContext", "([Ljava/lang/Class;)Limagej/ImageJ;", classes), True)
def field_class_mapping(): return ((J.class_for_name('imagej.data.display.ImageDisplay'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.display.DatasetView'), FT_IMAGE), (J.class_for_name('imagej.data.table.TableDisplay'), FT_TABLE), (J.class_for_name('org.scijava.plugin.SciJavaPlugin'), FT_PLUGIN))
def test_01_11_class_for_name(self): c = J.class_for_name('java.lang.String') name = J.call(c, 'getCanonicalName', '()Ljava/lang/String;') self.assertEqual(name, 'java.lang.String')
def test_03_11_cw_get_constructor(self): c = J.get_class_wrapper('java.lang.String') sclass = J.class_for_name('java.lang.String') constructor = c.getConstructor([sclass]) self.assertEqual(J.call(constructor, 'getName', '()Ljava/lang/String;'), 'java.lang.String')
'int': FT_INTEGER, 'short': FT_INTEGER, 'byte': FT_INTEGER, 'long': FT_INTEGER, 'java.lang.Float': FT_FLOAT, 'java.lang.Double': FT_FLOAT, 'float': FT_FLOAT, 'double': FT_FLOAT, 'java.lang.String': FT_STRING, 'java.lang.Boolean': FT_BOOL, 'boolean': FT_BOOL, 'imagej.util.ColorRGB': FT_COLOR } field_class_mapping = ( (J.class_for_name('imagej.display.Display'), FT_IMAGE), (J.class_for_name('imagej.data.Dataset'), FT_IMAGE), (J.class_for_name('imagej.data.roi.Overlay'), FT_OVERLAY) ) def run_imagej(*args): J.static_call("imagej/Main", "main", "([Ljava/lang/String;)V", *[unicode(arg) for arg in args]) def create_planar_img(a): '''Create a PlanarImg from a numpy array a - numpy array. The values should be scaled to be between 0 and 255 returns a PlanarImg of double valueswith the same dimensions as the array. ''' a = a.astype(np.float64)