This repository is for the GSoC'21 project @ NRNB to Develop GUI for ImageJ groovy script calling VCell API.
We have to create a service for VCell users that allows Fiji/ImageJ scripting to directly access the VCell client and then expand this service into a series of user-friendly plugins for ImageJ that will automate processing and analyzing cell imaging simulation experiments. The task will include:
- Entering the appropriate images to create a geometry
- Setting initial conditions for the simulation
- Running multiple simulations with varying parameter sets and
- Visualizing and comparing simulation results to the original experimental image set
The important thing before starting the development process is to make the environment compatible for various changes. So beginning with the setting up of the environment, VCell README will walk you through all the steps.
- IDE -> Eclipse2019-06
- jdk8.251
- maven 3.6.1
Make your Eclipse workspace inside the local VCell folder and set all the arguments accordingly and install the dependencies.
The project was basically to design a menu structure that could give us options to choose from various ImageJ plugins calling VCell API. These plugins are basically Groovy files which when run in Macros produce the desired results. The workflow was such that on launching ImageJ interface, we got many option to explore in the toolbar, the ‘plugins’ option is the one that suits our needs.
For designing the menu structure, I referred ClearRecent.java and the code is
Which signifies:
- The Header under which the plugin will be placed
- The icon image to clarify the purpose and make the plugin stand out
- The hierarchy or the serial order in which the plugin should appear
- The short-cut keys to access the plugin with keyboard
Taking the example of VCellPlugin.java The structure is designed as follows:
- label = "VCell Plugins" is the submenu of Plugins which has various other plugins with various functionality
- iconPath="search_icon.gif" is for assigning an icon image to the plugin
- weight = 4 assigns a priority to submenu VCell Plugins and seperates it from other available options with a line.
- mnemonic = 'V' helps the user to access VCell Plugins with keyboard by pressing the key 'v'. it is represented by an underline on 'V' Of VCell Plugins
- label = "VCell Model Search" is for accessing the the plugin named VCell Model Search inside the VCell Plugins Submenu
- weight = RecentFileService.MAX_FILES_SHOWN + 10 is for assigning the hierachy to the plugin inside the list of the submenu
- mnemonic = 'm' helps the user to access the plugin VCell Model Search with keyboard by pressing the key 'm'. it is represented by an underline on 'M' Of VCell Model Search
- accelerator = "^M" is another way to access the plugin VCell Model Search through keyboard by pressing a combination of Ctrl and M. This is indicated on the side of the Plugin name.
- label = "VCell Model Search " is for naming the GUI of the result obtained after simulation
So in this menu structure we have Plugins which has various options like VCell Plugins and VCell Help which in turn has a list of functionalities to offer.
The VCell Plugins has a drop-down list of Plugins which are in communication with VCell: Line Plot - The Groovy script chart.groovy is converted into a Java plugin which results into into 2 plots
- Line Plot by Time
- Time Plot by Distance
It takes up data like, ModelType, VCell User ID, VCell User Name, Application, Simulation, Variable, TimePont, Start and End Index. VCell Model Search - The Groovy script is converted into a Java plugin. In addition to its just the direct conversion it has certain additional features like to select various variable and suitable times through sliders.By default it takes up data such as ModelType, VCell User ID, VCell User Name, Application, and then accordingly loads the Simulation, Variable values
VCell Help is basically for future users and developers. If someone wants to create plugins out of some Groovy scripts then they may refer to these as how elements are added to a GUI and make them functional.
-
VCell ImageJ-Help - This plugin open into a GUI which retrieves information from your machine, like your Operating System, Architecture and returns it. Informs about the pre requisites for running the VCell plugins and also gives online assistance by directing to browser with a click
-
VCell ImageJ Groovy Scripts - This plugins opens into a GUI that gives information about running the various groovy scripts in Macros and also directs the user to various scripts on Github
-
VCell ImageJ Template - This plugin is not related to any functionality but is a reference for future developers which might help them in making their own plugins It has various commands for text editing, adding buttons, browsing files etc
-
VCell ImageJ Template Example - This plugin is another template which is functional and tells how we can implement various elements in a GUI which can run as a plugin.
Reference: VCellPlugin.java
- Did Not logged in into my VCell Account
- Activated my Fiji Imagej service
Which gave the resultant as
- Logged into my VCell Account
- Stopped the Fiji (Imagej) service
Which gave the resultant as