Ejemplo n.º 1
0
def get_current_image():
    """Get the WindowManager's current image
    
    returns a wrapped ImagePlus object
    """
    imageplus_obj = J.static_call("ij/WindowManager", "getCurrentImage", "()Lij/ImagePlus;")
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 2
0
def get_current_image():
    '''Get the WindowManager's current image
    
    returns a wrapped ImagePlus object
    '''
    imageplus_obj = J.static_call('ij/WindowManager','getCurrentImage',
                                  '()Lij/ImagePlus;')
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 3
0
def get_current_image():
    '''Get the WindowManager's current image
    
    returns a wrapped ImagePlus object
    '''
    imageplus_obj = J.static_call('ij/WindowManager', 'getCurrentImage',
                                  '()Lij/ImagePlus;')
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 4
0
def get_current_image():
    '''Get the image from the top of the batch mode image stack
    
    returns None or a wrapped imagePlus
    '''
    image_plus = J.static_call("ij/macro/Interpreter", "getLastBatchModeImage",
                               "()Lij/ImagePlus;")
    if image_plus is not None:
        return get_imageplus_wrapper(image_plus)
Ejemplo n.º 5
0
def get_current_image():
    '''Get the image from the top of the batch mode image stack
    
    returns None or a wrapped imagePlus
    '''
    image_plus = J.static_call("ij/macro/Interpreter",
                               "getLastBatchModeImage",
                               "()Lij/ImagePlus;")
    if image_plus is not None:
        return get_imageplus_wrapper(image_plus)
Ejemplo n.º 6
0
def get_temp_current_image():
    '''Get the temporary ImagePlus object for the current thread'''
    script = """
    new java.util.concurrent.Callable() {
        call: function() {
            return Packages.ij.WindowManager.getTempCurrentImage();
        }
    };
    """
    gtci = J.make_future_task(J.run_script(script))
    imageplus_obj = J.execute_future_in_main_thread(gtci)
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 7
0
def get_temp_current_image():
    '''Get the temporary ImagePlus object for the current thread'''
    script = """
    new java.util.concurrent.Callable() {
        call: function() {
            return Packages.ij.WindowManager.getTempCurrentImage();
        }
    };
    """
    gtci = J.make_future_task(J.run_script(script))
    imageplus_obj = J.execute_future_in_main_thread(gtci)
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 8
0
def close_all_windows():
    """Close all ImageJ windows
    
    Hide the ImageJ windows so that they don't go through the Save dialog,
    then call the Window Manager's closeAllWindows to get the rest.
    """
    jimage_list = J.static_call("ij/WindowManager", "getIDList", "()[I")
    if jimage_list is None:
        return
    image_list = J.get_env().get_int_array_elements(jimage_list)
    for image_id in image_list:
        ip = J.static_call("ij/WindowManager", "getImage", "(I)Lij/ImagePlus;", image_id)
        ip = get_imageplus_wrapper(ip)
        ip.hide()
    J.static_call("ij/WindowManager", "closeAllWindows", "()Z")
Ejemplo n.º 9
0
def close_all_windows():
    '''Close all ImageJ windows
    
    Hide the ImageJ windows so that they don't go through the Save dialog,
    then call the Window Manager's closeAllWindows to get the rest.
    '''
    jimage_list = J.static_call('ij/WindowManager', 'getIDList', '()[I')
    if jimage_list is None:
        return
    image_list = J.get_env().get_int_array_elements(jimage_list)
    for image_id in image_list:
        ip = J.static_call('ij/WindowManager', 'getImage', '(I)Lij/ImagePlus;',
                           image_id)
        ip = get_imageplus_wrapper(ip)
        ip.hide()
    J.static_call('ij/WindowManager', 'closeAllWindows', '()Z')
Ejemplo n.º 10
0
def close_all_windows():
    '''Close all ImageJ windows
    
    Hide the ImageJ windows so that they don't go through the Save dialog,
    then call the Window Manager's closeAllWindows to get the rest.
    '''
    jimage_list = J.static_call('ij/WindowManager', 'getIDList', '()[I')
    if jimage_list is None:
        return
    image_list = J.get_env().get_int_array_elements(jimage_list)
    for image_id in image_list:
        ip = J.static_call('ij/WindowManager', 'getImage', 
                           '(I)Lij/ImagePlus;', image_id)
        ip = get_imageplus_wrapper(ip)
        ip.hide()
    J.static_call('ij/WindowManager', 'closeAllWindows', '()Z')
Ejemplo n.º 11
0
def get_current_image():
    '''Get the WindowManager's current image
    
    returns a wrapped ImagePlus object
    '''
    #
    # Run this on the UI thread so its thread context is the same
    # as the macro invocation
    #
    script = """
    new java.util.concurrent.Callable() {
        call: function() {
            return Packages.ij.WindowManager.getCurrentImage();
        }
    };
    """
    gci = J.make_future_task(J.run_script(script))
    imageplus_obj = J.execute_future_in_main_thread(gci)
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 12
0
def get_current_image():
    '''Get the WindowManager's current image
    
    returns a wrapped ImagePlus object
    '''
    #
    # Run this on the UI thread so its thread context is the same
    # as the macro invocation
    #
    script = """
    new java.util.concurrent.Callable() {
        call: function() {
            return Packages.ij.WindowManager.getCurrentImage();
        }
    };
    """
    gci = J.make_future_task(J.run_script(script))
    imageplus_obj = J.execute_future_in_main_thread(gci)
    return get_imageplus_wrapper(imageplus_obj)
Ejemplo n.º 13
0
def get_image_by_name(title):
    '''Get the ImagePlus object whose title (in the window) matches "title"'''
    return get_imageplus_wrapper(
        J.static_call('ij/WindowManager', 'getImage',
                      '(Ljava/lang/String;)Lij/ImagePlus;', title))
Ejemplo n.º 14
0
def get_temp_current_image():
    '''Get the temporary ImagePlus object for the current thread'''
    return get_imageplus_wrapper(
        J.static_call('ij/WindowManager', 'getTempCurrentImage',
                      '()Lij/ImagePlus;'))
Ejemplo n.º 15
0
def get_image_by_id(imagej_id):
    """Get an ImagePlus object by its ID"""
    return get_imageplus_wrapper(J.static_call("ij/WindowManager", "getImage", "(I)Lij/ImagePlus;", imagej_id))
Ejemplo n.º 16
0
def get_image_by_id(imagej_id):
    '''Get an ImagePlus object by its ID'''
    return get_imageplus_wrapper(
        J.static_call('ij/WindowManager', 'getImage', '(I)Lij/ImagePlus;',
                      imagej_id))
Ejemplo n.º 17
0
def get_temp_current_image():
    '''Get the temporary ImagePlus object for the current thread'''
    return get_imageplus_wrapper(J.static_call(
        'ij/WindowManager', 'getTempCurrentImage','()Lij/ImagePlus;'))
Ejemplo n.º 18
0
def get_image_by_name(title):
    '''Get the ImagePlus object whose title (in the window) matches "title"'''
    return get_imageplus_wrapper(J.static_call(
        'ij/WindowManager', 'getImage', '(Ljava/lang/String;)Lij/ImagePlus;',
        title))
Ejemplo n.º 19
0
def get_image_by_id(imagej_id):
    '''Get an ImagePlus object by its ID'''
    return get_imageplus_wrapper(J.static_call(
        'ij/WindowManager', 'getImage', '(I)Lij/ImagePlus;', imagej_id))
Ejemplo n.º 20
0
def get_temp_current_image():
    """Get the temporary ImagePlus object for the current thread"""
    return get_imageplus_wrapper(J.static_call("ij/WindowManager", "getTempCurrentImage", "()Lij/ImagePlus;"))
Ejemplo n.º 21
0
    def execute_advanced_command(self, workspace, command, d):
        '''Execute an advanced command

        command - name of the command
        d - dictionary to be used to find settings
        '''
        from imagej.imageplus import make_imageplus_from_processor
        from imagej.imageplus import get_imageplus_wrapper
        from imagej.imageprocessor import make_image_processor
        from imagej.imageprocessor import get_image
        
        settings = d[command]
        classname = self.get_cached_commands()[command]
        plugin = M.get_plugin(classname)
        fp_in = P.get_input_fields_and_parameters(plugin)
        result = []
        image_set = workspace.image_set
        assert isinstance(image_set, cpi.ImageSet)
        wants_display = workspace.frame is not None
        if wants_display:
            workspace.display_data.input_images = input_images = []
            workspace.display_data.output_images = output_images = []
        for (field, parameter), setting in zip(fp_in, settings[:len(fp_in)]):
            field_type = P.get_field_type(field)
            label = parameter.label() or ""
            if field_type == P.FT_IMAGE:
                image_name = setting.value
                image = workspace.image_set.get_image(image_name,
                                                      must_be_grayscale = True)
                pixel_data = (image.pixel_data * 255.0).astype(np.float32)
                if wants_display:
                    input_images.append((image_name, pixel_data / 255.0))
                processor = make_image_processor(pixel_data)
                image_plus = make_imageplus_from_processor(image_name, processor)
                field.set(plugin, image_plus)
                del image_plus
                del processor
            elif field_type == P.FT_INTEGER:
                field.setInt(plugin, setting.value)
            elif field_type == P.FT_FLOAT:
                field.setFloat(plugin, setting.value)
            elif field_type == P.FT_BOOL:
                field.setBoolean(plugin, setting.value)
            else:
                field.set(plugin, setting.value)
        #
        # There are two ways to run this:
        # * Batch - just call plugin.run()
        # * Interactive - use PlugInFunctions.runInteractively
        #
        if self.pause_before_proceeding:
            J.static_call('imagej/plugin/PlugInFunctions', 'runInteractively',
                   '(Ljava/lang/Runnable)V', plugin)
        else:
            J.call(plugin, 'run', '()V')
        setting_idx = len(fp_in)
        fp_out = P.get_output_fields_and_parameters(plugin)
        for field, parameter in fp_out:
            field_type = P.get_field_type(field)
            if field_type == P.FT_IMAGE:
                image_name = settings[setting_idx].value
                setting_idx += 1
                image_plus = get_imageplus_wrapper(field.get(plugin))
                processor = image_plus.getProcessor()
                pixel_data = get_image(processor).astype(np.float32) / 255.0
                if wants_display:
                    output_images.append((image_name, pixel_data))
                image = cpi.Image(pixel_data)
                image_set.add(image_name, image)
Ejemplo n.º 22
0
    def execute_advanced_command(self, workspace, command, d):
        '''Execute an advanced command

        command - name of the command
        d - dictionary to be used to find settings
        '''
        wants_display = workspace.frame is not None
        if wants_display:
            workspace.display_data.input_images = input_images = []
            workspace.display_data.output_images = output_images = []
        key = command.get_unicode_value()
        if bioformats.USE_IJ2:
            node = command.get_selected_leaf()
            module_info = node[2]
            module = IJ2.wrap_module(module_info.createModule())
            context = self.get_context()
            display_service = IJ2.get_display_service(context)
                
            display_dictionary = {}
            for setting, module_item in d[key]:
                field_type = module_item.getType()
                if isinstance(setting, cps.ImageNameProvider):
                    continue
                if field_type == IJ2.FT_BOOL:
                    value = J.make_instance("java/lang/Boolean",
                                            "(Z)V", setting.value)
                elif field_type == IJ2.FT_INTEGER:
                    value = J.make_instance("java/lang/Integer",
                                            "(I)V", setting.value)
                elif field_type == IJ2.FT_FLOAT:
                    value = J.make_instance("java/lang/Double",
                                            "(D)V", setting.value)
                elif field_type == IJ2.FT_STRING:
                    value = setting.value
                elif field_type == IJ2.FT_COLOR:
                    value = IJ2.make_color_rgb_from_html(setting.value)
                elif field_type == IJ2.FT_IMAGE:
                    image_name = setting.value
                    image = workspace.image_set.get_image(image_name)
                    dataset = IJ2.create_dataset(image.pixel_data,
                                                 setting.value)
                    display = display_service.createDisplay(dataset)
                    if image.has_mask:
                        overlay = IJ2.create_overlay(image.mask)
                        display.displayOverlay(overlay)
                    value = display
                    display_dictionary[module_item.getName()] = display
                    if wants_display:
                        input_images.append((image_name, image.pixel_data))
                module.setInput(module_item.getName(), value)
            module_service = IJ2.get_module_service(context)
            module_service.run(module)
            for setting, module_item in d[key]:
                if isinstance(setting, cps.ImageNameProvider):
                    name = module_item.getName()
                    output_name = setting.value
                    if display_dictionary.has_key(name):
                        display = display_dictionary[name]
                    else:
                        display = IJ2.wrap_display(module.getOutput(name))
                    ds = display_service.getActiveDataset(display)
                    pixel_data = ds.get_pixel_data()
                    image = cpi.Image(pixel_data)
                    workspace.image_set.add(output_name, image)
                    if wants_display:
                        output_images.append((output_name, pixel_data))
            for display in display_dictionary.values():
                panel = IJ2.wrap_display_panel(display.getDisplayPanel())
                panel.close()
        else:
            from imagej.imageplus import make_imageplus_from_processor
            from imagej.imageplus import get_imageplus_wrapper
            from imagej.imageprocessor import make_image_processor
            from imagej.imageprocessor import get_image
            
            command = command.value
            settings = d[command]
            classname = self.get_cached_commands()[command]
            plugin = M.get_plugin(classname)
            fp_in = P.get_input_fields_and_parameters(plugin)
            result = []
            image_set = workspace.image_set
            assert isinstance(image_set, cpi.ImageSet)
            for (field, parameter), setting in zip(fp_in, settings[:len(fp_in)]):
                field_type = P.get_field_type(field)
                label = parameter.label() or ""
                if field_type == P.FT_IMAGE:
                    image_name = setting.value
                    image = workspace.image_set.get_image(image_name,
                                                          must_be_grayscale = True)
                    pixel_data = (image.pixel_data * 255.0).astype(np.float32)
                    if wants_display:
                        input_images.append((image_name, pixel_data / 255.0))
                    processor = make_image_processor(pixel_data)
                    image_plus = make_imageplus_from_processor(image_name, processor)
                    field.set(plugin, image_plus)
                    del image_plus
                    del processor
                elif field_type == P.FT_INTEGER:
                    field.setInt(plugin, setting.value)
                elif field_type == P.FT_FLOAT:
                    field.setFloat(plugin, setting.value)
                elif field_type == P.FT_BOOL:
                    field.setBoolean(plugin, setting.value)
                else:
                    field.set(plugin, setting.value)
            #
            # There are two ways to run this:
            # * Batch - just call plugin.run()
            # * Interactive - use PlugInFunctions.runInteractively
            #
            if self.pause_before_proceeding:
                J.execute_runnable_in_main_thread(J.run_script(
                    """new java.lang.Runnable() { run:function() {
                        importClass(Packages.imagej.plugin.PlugInFunctions);
                        PlugInFunctions.runInteractively(plugin);
                    }};""", dict(plugin=plugin)), True)
            else:
                J.execute_runnable_in_main_thread(plugin, True)
            setting_idx = len(fp_in)
            fp_out = P.get_output_fields_and_parameters(plugin)
            for field, parameter in fp_out:
                field_type = P.get_field_type(field)
                if field_type == P.FT_IMAGE:
                    image_name = settings[setting_idx].value
                    setting_idx += 1
                    image_plus = get_imageplus_wrapper(field.get(plugin))
                    processor = image_plus.getProcessor()
                    pixel_data = get_image(processor).astype(np.float32) / 255.0
                    if wants_display:
                        output_images.append((image_name, pixel_data))
                    image = cpi.Image(pixel_data)
                    image_set.add(image_name, image)
Ejemplo n.º 23
0
    def execute_advanced_command(self, workspace, command, d):
        '''Execute an advanced command

        command - name of the command
        d - dictionary to be used to find settings
        '''
        wants_display = workspace.frame is not None
        if wants_display:
            workspace.display_data.input_images = input_images = []
            workspace.display_data.output_images = output_images = []
        key = command.get_unicode_value()
        if bioformats.USE_IJ2:
            node = command.get_selected_leaf()
            module_info = node[2]
            module = IJ2.wrap_module(module_info.createModule())
            context = self.get_context()
            display_service = IJ2.get_display_service(context)

            display_dictionary = {}
            for setting, module_item in d[key]:
                field_type = module_item.getType()
                if isinstance(setting, cps.ImageNameProvider):
                    continue
                if field_type == IJ2.FT_BOOL:
                    value = J.make_instance("java/lang/Boolean", "(Z)V",
                                            setting.value)
                elif field_type == IJ2.FT_INTEGER:
                    value = J.make_instance("java/lang/Integer", "(I)V",
                                            setting.value)
                elif field_type == IJ2.FT_FLOAT:
                    value = J.make_instance("java/lang/Double", "(D)V",
                                            setting.value)
                elif field_type == IJ2.FT_STRING:
                    value = setting.value
                elif field_type == IJ2.FT_COLOR:
                    value = IJ2.make_color_rgb_from_html(setting.value)
                elif field_type == IJ2.FT_IMAGE:
                    image_name = setting.value
                    image = workspace.image_set.get_image(image_name)
                    dataset = IJ2.create_dataset(image.pixel_data,
                                                 setting.value)
                    display = display_service.createDisplay(dataset)
                    if image.has_mask:
                        overlay = IJ2.create_overlay(image.mask)
                        display.displayOverlay(overlay)
                    value = display
                    display_dictionary[module_item.getName()] = display
                    if wants_display:
                        input_images.append((image_name, image.pixel_data))
                module.setInput(module_item.getName(), value)
            module_service = IJ2.get_module_service(context)
            module_service.run(module)
            for setting, module_item in d[key]:
                if isinstance(setting, cps.ImageNameProvider):
                    name = module_item.getName()
                    output_name = setting.value
                    if display_dictionary.has_key(name):
                        display = display_dictionary[name]
                    else:
                        display = IJ2.wrap_display(module.getOutput(name))
                    ds = display_service.getActiveDataset(display)
                    pixel_data = ds.get_pixel_data()
                    image = cpi.Image(pixel_data)
                    workspace.image_set.add(output_name, image)
                    if wants_display:
                        output_images.append((output_name, pixel_data))
            for display in display_dictionary.values():
                panel = IJ2.wrap_display_panel(display.getDisplayPanel())
                panel.close()
        else:
            from imagej.imageplus import make_imageplus_from_processor
            from imagej.imageplus import get_imageplus_wrapper
            from imagej.imageprocessor import make_image_processor
            from imagej.imageprocessor import get_image

            command = command.value
            settings = d[command]
            classname = self.get_cached_commands()[command]
            plugin = M.get_plugin(classname)
            fp_in = P.get_input_fields_and_parameters(plugin)
            result = []
            image_set = workspace.image_set
            assert isinstance(image_set, cpi.ImageSet)
            for (field, parameter), setting in zip(fp_in,
                                                   settings[:len(fp_in)]):
                field_type = P.get_field_type(field)
                label = parameter.label() or ""
                if field_type == P.FT_IMAGE:
                    image_name = setting.value
                    image = workspace.image_set.get_image(
                        image_name, must_be_grayscale=True)
                    pixel_data = (image.pixel_data * 255.0).astype(np.float32)
                    if wants_display:
                        input_images.append((image_name, pixel_data / 255.0))
                    processor = make_image_processor(pixel_data)
                    image_plus = make_imageplus_from_processor(
                        image_name, processor)
                    field.set(plugin, image_plus)
                    del image_plus
                    del processor
                elif field_type == P.FT_INTEGER:
                    field.setInt(plugin, setting.value)
                elif field_type == P.FT_FLOAT:
                    field.setFloat(plugin, setting.value)
                elif field_type == P.FT_BOOL:
                    field.setBoolean(plugin, setting.value)
                else:
                    field.set(plugin, setting.value)
            #
            # There are two ways to run this:
            # * Batch - just call plugin.run()
            # * Interactive - use PlugInFunctions.runInteractively
            #
            if self.pause_before_proceeding:
                J.static_call('imagej/plugin/PlugInFunctions',
                              'runInteractively', '(Ljava/lang/Runnable)V',
                              plugin)
            else:
                J.call(plugin, 'run', '()V')
            setting_idx = len(fp_in)
            fp_out = P.get_output_fields_and_parameters(plugin)
            for field, parameter in fp_out:
                field_type = P.get_field_type(field)
                if field_type == P.FT_IMAGE:
                    image_name = settings[setting_idx].value
                    setting_idx += 1
                    image_plus = get_imageplus_wrapper(field.get(plugin))
                    processor = image_plus.getProcessor()
                    pixel_data = get_image(processor).astype(
                        np.float32) / 255.0
                    if wants_display:
                        output_images.append((image_name, pixel_data))
                    image = cpi.Image(pixel_data)
                    image_set.add(image_name, image)