Coder Social home page Coder Social logo

nikitamahoviya / plugins_vcell-imagej Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 2.0 164 KB

This repository is for the GSoC'21 project @ NRNB to Develop GUI for ImageJ groovy script calling VCell API.

Java 100.00%
gsoc-2021 nrnb vcell imagej imagej-plugins java gui groovy-script

plugins_vcell-imagej's Introduction

Plugins_VCell-ImageJ

This repository is for the GSoC'21 project @ NRNB to Develop GUI for ImageJ groovy script calling VCell API.

Project Overview

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

Mentors

Getting Started with the project

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. image

Moving ahead with the project

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.

image

Designing the menu structure

For designing the menu structure, I referred ClearRecent.java and the code is

image

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:

image

  • 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.

image

VCell Plugins

image

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

image

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.

Testing of Plugin in Various Cases

Reference: VCellPlugin.java

Testing A:

  • Did Not logged in into my VCell Account
  • Activated my Fiji Imagej service

Which gave the resultant as

image

Testing B:

  • Logged into my VCell Account
  • Stopped the Fiji (Imagej) service

Which gave the resultant as

image

plugins_vcell-imagej's People

Contributors

nikitamahoviya avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.