Save to my list
Unsave this
Created on
0
Jun 2012
Last activity
0
Jul 2018
0
reviews

Short Description

Design your own quantification protocol, visually. No programming required! Protocols can be shared and re-used straight from the Icy website.

Documentation

Protocols is a graphical environment that enables anyone to prototype and design image processing and quantification protocols graphically, without any prior knowledge in programming.

More than just words, let’s start with an introductory (although slightly outdated) video:

 

How to design a protocol

  • Adds blocks to your protocol, either by right-clicking inside the workspace and navigating the various categories, or by using the keyword-based search using the left-hand side panel. Each block represents an elementary image processing or quantification task. Ideally, all plugins in Icy should have their block counterpart. If you notice a plugin that is not available as a block, you are very welcome to submit a comment on the page of the plugin you wish to use and ask for it.
  • Link blocks together by dragging arrows (on the edge of each block) from block to block. By doing so, the blocks will automatically communicate and transfer their results between one another and run sequentially.

A protocol and all its parameters may at any time be saved (in XML format), and submitted to the Icy website for immediate sharing and/or perma-linking in a scientific publication. Any protocol published online may be downloaded and installed in a seamless manner (all required plug-ins are automatically installed). Any user can hence re-run a given protocol using the original parameters, and further edit the pipeline by adjusting parameters or adding and removing blocks.

Available protocols

If you don’t feel confident enough to start from scratch, don’t worry, a number of protocols already exist and are freely available on the Icy website. Click here to access this list.

Processing many files at once

In addition to bringing powerful programming abilities to non-expert users, one of the major benefits of Protocols is the ability to run a given protocol on a large number of images automatically (a process many users refer to as “batch mode”). 

Creating batches with protocols is as simple as building the protocol itself. Let’s start with a simple protocol that runs on the current (active, or focused) sequence, computes statistics on the ROI in the sequence and save these statistics to a workbook on disk:

(missing image)

In order to batch process an entire folder, we basically need to run the entire protocol multiple times, replacing the “active sequence” from the first block each file of the folder. To do so, click on the “embed” icon in the Protocols interface (the one to the left of the “Play” button). When clicked, a menu appears and offers a number of options to perform loops and batch processing. Then, click on “sequence file batch”, which basically says “embed the current protocol inside a batch to process a folder of sequence files”. The intial protocol now appears embeded within a larger, enclosing block with a few parameters defining the batch parameters:

(missing image)

As can be seen from the screenshot above, one of the batch parameter is the folder to process. To the right of this parameter is an arrow that will read and provide, one after the other, all of the sequences available inside the specified folder, ready to be processed by the inner blocks. The last step is thus to make the final link from this arrow to the entry point of our embeded protocol, here replacing the “active sequence” of the first “inner” block:

(missing image)

Note that the batch parameters will change depending on the type of batch requested. In the current example, the “sequence file batch” block will automatically list all available sequence files in the specified folder (discarding non-image data) and read them from disk before passing them to the inner blocks. But it is also possible to run other types of batch processes, for instance on a list of files (images or not), a series of files from a multi-series dataset (e.g. lif, mvd2), etc.

That’s (almost) it! When clicking on the “Play” button, the enclosing block will read the first image, run the inner protocol, then move on to the second image of the folder, run the protocol again, and so forth. Why is “almost” it? Well, we are missing one small (but important) adjustment. The last block that saves the statistics to a workbook on disk is currently set to write the workbook anew for every new file, which is not so useful in a batch context. All we need is to change the “if file exists” option from “overwrite” to “merge sheets, excluding first row” (excluding the first row will exlude the header row from the statistics table from the second run onwards, because we don’t need a new header row everytime a new image is processed).

Command-line support

For the most tech-savvy, protocols can also be run from the command-line, again in a very straightforward manner. The key point here is being able to pass arguments from the command-line to the various input blocks of the protocol. To do so, let’s start with a minimal protocol that reads a sequence from a disk file, and saves it to another file on disk. Here we will add a new “input” block (accessible by right-clicking in the workspace and going to the “read” subsection). Go ahead and add a “File” input block:

Right-click > Read...

This file parameter can naturally be set via the graphical interface, but we need to give it an ID such that it can be set from the command-line. To set the ID, click on the block’s menu (the upper-left-hand icon), and set the ID to, say, “input1”:

Input block menu > ID

Let’s repeat the operation again by adding another “File” input block, and setting its ID to “output1”:

Input block menu > ID

Let’s finalize the protocol by renaming and linking these blocks to the other ones:

Rename and link blocks

And our protocol is ready. Here comes the magic spell:

icy.sh -hl -x plugins.adufour.protocols.Protocols protocol=/my/great.protocol input1=/my/inputFile output1=/my/outputFile

Let’s briefly analyse this line:

  • icy.sh is the Icy startup command (NB: replace by icy.exe on windows; you can also generically use “java -jar icy.jar” instead)
  • “-hl” is short for “headless”, which means icy will run on the command line and no graphical interface will appear
  • “-x” tells icy to run a specific plugin at startup (this plugin is “Protocols”, as you might have guessed)
  • “protocol=…” indicates the path to the protocol file to run
  • “input1=…” and “output1=…” are used to pass all the necessary parameters to the protocol, using the IDs specified above.

 That’s it. You can now run Icy with your favorite protocol on any Java-friendly machine (desktop, server, cluster, smart fridge, etc.)

Acknowledgements

Contributors to this project include:

  • Ludovic Laborde (copy/pasting, dis-embedding, search bar, block renaming)
  • Stephane Dallongeville (for stress-testing, troubleshooting and continous support, one update at a time)
  • All of the happy (and patient) alpha/beta/gamma testers and feature requesters out there!

Resources needing this

9 reviews on “Protocols

  1. IcyLyd
    Just Awesome! Really great to chain several actions and so nice to be able to loop protocols to get batch analysis. It saves so much time. And on top of that it's really visual. IcyLyd
  2. Fabrice de Chaumont
    The most didactic plugin of Icy ! Super-easy to use, no error possible while linking blocks. Must be tried !
  3. Bertrand Vernay
    Very nice tool. A must have. A pan tool (space bar activated) will be useful especially when working on a small size display. Thanks
  4. It is wonderful to have the ability to draw a graphical design for you image processing.
  5. Emmanuel
    Very useful and powerful plugin that let scientist making programming without knowing anything to informatics language. Perhaps a zoom/navigation capability could help when creating large protocol. Many thanks for that
  6. DavidG
    This has fantastic capabilities to create tailored analysis sequences. Many thanks!

Leave a Review

Leave a review
Cancel review
View full changelog
Close changelog

Changelog

  • Version 3.0.4.0 • Released on: 2018-07-24 14:39:41
    Download
    Description:

    Some GUI refresh optimizations

  • Version 3.0.3.0 • Released on: 2018-02-27 17:46:32
    Download
    Description:

    Added Protocols.getInstance() method to retrieve Protocols main instance (can be useful !)

  • Version 3.0.2.0 • Released on: 2018-02-12 17:40:55
    Download
    Description:

    Re introduced java 7 compatibility

  • Version 3.0.1.0 • Released on: 2017-02-24 16:59:15
    Download
    Description:

    Fixed an issue in headless mode on Linux

  • Version 3.0.0.0 • Released on: 2017-02-06 12:22:13
    Download
    Description:

    New: command-line support! Protocols can now be run directly from the command line, and arguments can be passed over to input blocks inside your protocols

  • Version 2.4.3.0 • Released on: 2016-06-13 12:03:54
    Download
  • Version 2.4.2.0 • Released on: 2016-05-27 10:58:08
    Download
    Description:

    Fixed a bug that occurred when installing missing blocks on-the-fly while opening a protocol

  • Version 2.4.1.0 • Released on: 2015-12-17 23:32:24
    Download
    Description:

    Fixed a graphical glitch when painting exposed links

  • Version 2.4.0.0 • Released on: 2015-12-17 23:22:37
    Download
    Description:

    * Fixed the copy-paste system
    * Only a single Protocol can be used

  • Version 2.3.1.0 • Released on: 2015-04-30 17:49:49
    Download
    Description:

    Fixed Block ID display for 3-digit numbers (yes, someone did break the century!)

  • Version 2.3.0.0 • Released on: 2015-03-18 00:11:34
    Download
    Description:

    New: execution log panel next to each protocol (BETA)

  • Version 2.2.4.0 • Released on: 2015-01-29 16:18:34
    Download
    Description:

    * Updated to SDK 4.4.5
    * Fixed display issues when loading protocols and drawing links

  • Version 2.2.3.0 • Released on: 2015-01-23 18:05:17
    Download
    Description:

    Fixed an issue causing embedded block not to allow their variables to be exposed

  • Version 2.2.2.0 • Released on: 2015-01-23 17:53:27
    Download
    Description:

    Attempting to fix a bug that is hard to find and reproduce...

  • Version 2.2.1.0 • Released on: 2014-12-19 13:05:08
    Download
    Description:

    * Upgraded to SDK v.2.2.1
    * "Run until here" and "ID" buttons are back due to popular demand
    * "Run until here" option now guarantees block highest priority

  • Version 2.2.0.0 • Released on: 2014-12-11 13:31:09
    Download
    Description:

    * Updated to SDK v.4.4
    * NEW: Protocols can now be opened directly by dropping ".protocol" files into Icy (just like images)
    * Revamped graphical user interface with all-in-one menu and status notification icon
    * Blocks can be removed using the backspace key
    * Loop: option to stop on first error

  • Version 2.1.6.0 • Released on: 2014-11-22 20:17:54
    Download
    Description:

    * Updated to Protocols engine 4.3.0.0
    * The block search panel now includes developer information in the documentation panel.

  • Version 2.1.5.0 • Released on: 2014-10-06 19:59:19
    Download
    Description:

    Fixed an issue when closing the Protocols window

  • Version 2.1.4.0 • Released on: 2014-10-05 18:18:16
    Download
    Description:

    Fixed issue causing blocks not to collapse properly

  • Version 2.1.3.0 • Released on: 2014-09-15 21:57:07
    Download
    Description:

    Bug fixes on protocol loading

  • Version 2.1.2.0 • Released on: 2014-09-12 17:40:05
    Download
    Description:

    Fixed drag'n'drop for ".protocol" files

  • Version 2.1.1.0 • Released on: 2014-08-04 17:21:52
    Download
    Description:

    Improved error handling, and fixed a few GUI glitches

  • Version 2.1.0.0 • Released on: 2014-07-24 19:16:43
    Download
    Description:

    * Major code refactoring: better separation between the engine (Protocols SDK) and the graphical user interface (Protocols)
    * Fixed memory leak
    * Improved error and message handling
    * Fixed drag'n'drop operations not working on some systems

  • Version 2.0.6.0 • Released on: 2014-07-23 00:05:09
    Download
    Description:

    Fixed the "cancel" button when closing the window

  • Version 2.0.5.0 • Released on: 2014-06-18 14:02:41
    Download
    Description:

    Fixed a copy/paste issue within inner workflows

  • Version 2.0.4.0 • Released on: 2014-06-17 18:33:02
    Download
    Description:

    Fixed an issue when copying links that contain an exposed variable (ignored for now)

  • Version 2.0.3.0 • Released on: 2014-06-17 14:45:14
    Download
    Description:

    Improved graphical layout & block descriptions

  • Version 2.0.2.0 • Released on: 2014-05-21 19:15:51
    Download
    Description:

    Update by Ludovic Laborde

    * Updated to Icy 1.5
    * Fixed drag'n'drop issue from the search bar

  • Version 2.0.1.0 • Released on: 2014-05-19 12:49:39
    Download
    Description:

    Fixed bug when closing a protocol and saving it (would not re-open it afterwards)

  • Version 2.0.0.1 • Released on: 2014-05-18 20:03:52
    Download
    Description:

    Updated jar file (line numbers did not match in bug reports)

  • Version 2.0.0.0 • Released on: 2014-05-16 21:21:18
    Download
    Description:

    Update by Ludovic Laborde

    Integrated search bar: find your blocks fast and easily, insert them with a simple drag'n'drop operation.

  • Version 1.7.5.0 • Released on: 2014-05-12 20:36:21
    Download
    Description:

    Fixed a bug causing the window closing operation not allowing to be cancelled

  • Version 1.7.4.0 • Released on: 2014-04-27 15:45:29
    Download
    Description:

    Fixed the "save as" button

  • Version 1.7.3.0 • Released on: 2014-04-24 18:45:50
    Download
    Description:

    * Removed "insert block" button from main interface (only accessible through right-click for the time being)
    * Adjusted tool bar and tool tips to be more explicit

  • Version 1.7.2.2 • Released on: 2014-01-27 13:56:44
    Download
    Description:

    Customize error message when blocks cannot be installed via Icy4Eclipse

  • Version 1.7.2.1 • Released on: 2013-11-15 21:44:58
    Download
    Description:

    Updated to Icy 1.4.2.0 (removed deprecated calls), no logic change

  • Version 1.7.2.0 • Released on: 2013-10-28 11:35:56
    Download
    Description:

    * Reload the interface when a protocol is opened from disk *after* a plugin reload event
    * Describe the loading process with an announcement frame

  • Version 1.7.1.0 • Released on: 2013-10-14 17:33:05
    Download
    Description:

    Online protocols are now downloaded to a new "protocols" subfolder inside Icy, so you can carry them with you at all times!

  • Version 1.7.0.0 • Released on: 2013-10-12 18:09:36
    Download
    Description:

    Fixed multiple reloading issues:
    * The Protocols interface now reloads only when a protocol requires the installation of one or more new plugins.
    * Reloading now correctly preserves and reloads previous state. No more data loss

  • Version 1.6.0.0 • Released on: 2013-07-12 13:46:25
    Download
    Description:

    New option to clean protocol results to save memory

  • Version 1.5.8.0 • Released on: 2013-07-12 13:33:36
    Download
    Description:

    Screenshots saved along protocols now have an extra "_protocols" suffix to avoid name clashes

  • Version 1.5.7.0 • Released on: 2013-05-27 18:05:30
    Download
    Description:

    * Fixed an issue causing all online protocols appearing in a search result to be downloaded locally (even if never used).
    * Selected protocols from the search bar are now downloaded to the default protocols folder

  • Version 1.5.6.0 • Released on: 2013-05-26 19:30:43
    Download
    Description:

    Upgraded online protocol provider to the new kernel (should reduce server load)

  • Version 1.5.5.0 • Released on: 2013-05-18 23:39:41
    Download
    Description:

    Updated to Icy 1.3.5.0 (removed deprecation calls)

  • Version 1.5.4.0 • Released on: 2013-03-25 09:13:05
    Download
    Description:

    * Images dropped in protocols are now opened in Icy
    * Fixed an issue causing Protocols to reload properly when the class loader changes

  • Version 1.5.3.0 • Released on: 2013-03-22 14:35:36
    Download
    Description:

    Fixed an issue causing Protocols to fail opening properly after Icy restarts

  • Version 1.5.2.0 • Released on: 2013-03-12 20:34:09
    Download
    Description:

    Show an error message when opening a wrong XML file (rather than a bug report)

  • Version 1.5.1.0 • Released on: 2013-03-08 15:05:08
    Download
    Description:

    Updated to Blocks v.2.4

  • Version 1.5.0.0 • Released on: 2013-02-28 19:58:29
    Download
    Description:

    Protocols can now be searched and loaded directly from Icy's search bar!

  • Version 1.4.3.0 • Released on: 2013-01-07 13:05:25
    Download
    Description:

    Fixed a memory leak (caused by the file drag'n'drop mechanism)

  • Version 1.4.2.0 • Released on: 2012-12-07 17:42:47
    Download
    Description:

    Fixed memory leaks

  • Version 1.4.1.0 • Released on: 2012-11-07 17:16:58
    Download
    Description:

    * NEW: the snapshot button has been removed from the interface; the snapshot is always saved alongside the xml file
    * Fixed minor drag'n'drop issue causing the interface border to disappear (the border is now no longer highlighted when dropping file(s))

  • Version 1.4.0.0 • Released on: 2012-11-07 16:53:00
    Download
    Description:

    * NEW: Drag protocols directly into the Protocols interface
    * Minor interface fixes when quitting Icy

  • Version 1.3.2.0 • Released on: 2012-10-16 15:01:01
    Download
    Description:

    Fixed loading bug (from 1.3.1.0)

  • Version 1.3.1.0 • Released on: 2012-10-15 16:57:28
    Download
    Description:

    Static access to the main frame (allows launching a protocol from outside the interface)

  • Version 1.3.0.0 • Released on: 2012-09-27 15:50:55
    Download
    Description:

    * Fixed support for live plugin loading/saving
    * Status bar indicates loading status

  • Version 1.2.0.0 • Released on: 2012-09-26 16:56:17
    Download
    Description:

    Resubmit jar file

  • Version 1.1.2.3 • Released on: 2012-09-26 16:20:58
    Download
    Description:

    * Updated to Blocks 1.8.0.0
    * New: the Protocols interface automatically saves its state and reloads when plugins are reloaded

  • Version 1.1.2.2 • Released on: 2012-09-06 16:28:32
    Download
    Description:

    Updated to Blocks 1.7

  • Version 1.1.2.1 • Released on: 2012-09-03 14:58:47
    Download
    Description:

    Improved error reporting (no logic change)

  • Version 1.1.2.0 • Released on: 2012-08-30 15:45:47
    Download
    Description:

    Updated to Blocks engine 1.6: ability to stop a running protocol

  • Version 1.1.1.0 • Released on: 2012-08-07 18:52:01
    Download
    Description:

    Updated to Blocks 1.5.0.0

  • Version 1.1.0.0 • Released on: 2012-08-03 12:03:49
    Download
    Description:

    Fixed bug reporting issue (bugs were never sent by email)

  • Version 1.0.2.0 • Released on: 2012-07-11 18:07:43
    Download
    Description:

    Snapshot feature restricts to the contents of the workflow

  • Version 1.0.1.0 • Released on: 2012-07-09 17:48:34
    Download
    Description:

    - Improved file saving dialog (overwrite prompt, auto-add extension)
    - Fixed a few memory leaks

  • Version 1.0.0.0 • Released on: 2012-07-06 12:06:58
    Download
    Description:

    First officially stable release !
    - Workflows can now be embedded into loops (useful for batch processing)

  • Version 0.9.9.2 • Released on: 2012-07-04 11:51:35
    Download
    Description:

    Updated to Blocks 0.12

  • Version 0.9.9.1 • Released on: 2012-07-03 18:52:50
    Download
    Description:

    Release Candidate 1:
    - Updated to Blocks 0.11.0.0
    - New status bar for each protocol
    - Removed "colorize links" button (true by default)
    - Collapse feature de-activated (will be improved in a later release)

  • Version 0.0.3.0 • Released on: 2012-06-29 19:07:58
    Download
    Description:

    * Improved interface labels and access to menus and blocks.
    * added second status bar for future use to monitor a running process

  • Version 0.0.2.0 • Released on: 2012-06-28 17:17:11
    Download
    Description:

    Added snapshot feature

  • Version 0.0.1.0 • Released on: 2012-06-22 14:11:11
    Download