User:Icy adufour/sandbox

Icy is a free, open source image processing platform developed by the Quantitative Image Analysis Unit at Institut Pasteur, Paris, France. This platform comprises two components: a Java-based software for image processing, and a community website that gathers community-contributed resources including third-party plug-ins. The software is available as a downloadable application for Microsoft Windows, Mac OS X and Linux running Java version 6 or later. The community website is written in PhP and MySQL.

Icy's development is divided into the core application (or kernel) and plug-ins. The kernel is maintained by Fabrice de Chaumont and Stephane Dallongeville, while plug-in development is a global community effort, initially motivated by the members of the Quantitative Analysis Unit at Institut Pasteur.

The number of contributed plug-ins is 129 as of July 2012.

History
Icy was first presented in April 2011 at the ISBI symposium (IEEE International Symposium on Biomedical Imaging) in Chicago, IL, USA, as a result of 15 months of active development by its architects, Fabrice de Chaumont and Stephane Dallongeville, under the supervision of Prof. Jean-Christophe Olivo-Marin. Icy is the result of a 10+ year long experience of image processing software development in the Quantitative Image Analysis Unit at Institut Pasteur, where two previous softwares had been previously developed although they were only available through private collaborations.

Supported image formats
Icy relies on the Bio-Formats library for image loading and saving, giving access to over 100 different file formats from most of the manufacturers in the biological imaging industry (a full list of supported formats is available here).

In-App plug-in installation
Icy provides an in-app browser to view, download, install and upgrade plug-ins in a single click without the need to restart the application.

Visual programming environment
Icy provides a visual programming language called Blocks and its corresponding plug-in called Protocols that lets users create graphical image processing pipelines without the need for programming knowledge. Protocols can be saved and shared online via the Icy website, and submitted alongside a publication to comply with the reproducible research initiative. Published protocols can then be downloaded by others, either to reproduce published results, or to be further manipulated, extended and resubmitted online, a process termed by the project founders as Extended Reproducible Research.

The visual programming language is also open to third-party contribution, such that new blocks can be independently developed by the community and submitted online similarly to plug-ins. Submitted blocks will then automatically be available for download and for use within the Protocols interface.

Open-source development
Icy supports the open-source initiative in three fundamental aspects:
 * 1) Full code availability: the kernel source code is permanently available online (hosted on github), where issues and opinions are publicly discussed throughout the development.
 * 2) Open contribution: the submission of third-party contributions on the Icy website (plug-ins, protocols, etc.) is not reviewed by the maintainers, availability of submitted material is therefore immediate.

Development environment
Icy is developed under the Eclipse environment. To simplify plug-in development, a specific Eclipse plug-in called icy4eclipse has been developed by Nicolas Hervé to speed-up the creation of plug-in skeletons, such that they include all necessary libraries and references for immediate testing and submission online.

Development toolkits
Several library plug-ins are available to aid the development of plug-ins, notably in the context of graphical interface design.
 * The EzPlug library provides a flexible mechanism to create standardized interface, while requiring little or no knowledge in graphical interface programming.
 * The Vars library provides a lower-level interface to manipulate algorithm variables, and provides routines to automatically generate the associated graphical interface to receive user input
 * The Blocks library gives access to the visual programming language, letting developers create their own blocks for use within the Protocols interface.