Grid-based Environment and Methods for Integrated Neuro-Imaging (GEMINI)

Technology Preview Warning - GEMINI has not yet been released

The GEMINI software is still being prepared for release and the website is still under development. Interfaces and implementation presented here are subject to change.

Overview of the GEMINI Project

The GEMINI project is developing software and techniques to assist the neuroinformatic research at the NIC, the University of Oregon, and the research community in general. This software allows existing and new computational code to be presented as Grid Services via the Globus WS-Core Toolkit. In addition, GEMINI provides ways to invoke these Grid Services in a coordinated way to develop powerful workflow applications.

Software Components of GEMINI

GEMINI is an ensemble of libraries, tools, and services that provides an robust and open environment for developing distributed applications in the neuroimaging domain. The WDSL Files, Web Services and APIs are described here in more detail. See the GEMINI Architecture Manual for a richer description.

WSDL Files

The WSDL (Web Services Definition Language) Files of the GEMINI Project define the fundamental abstractions and schema of the GEMINI Resources. See WSRF for a detailed description of the primary GEMINI Resource Types.

GEMINI Command-line Tools

There are several command-line tools available, including \verb'gemini-file', \verb'gemini-task', \verb'gemini-agent', and \verb'gemini-zone'. These tools are actually just programs written using the GEMINI API. They are intended as both source-code examples, as well as convenient means to access and manipulate GEMINI resources from within a shell script.


The GEMINI API is a set of Java convenience class that ease the process of using the GEMINI Web Services from Java. The use of the GEMINI is completely optional for Java users; the standard Apache Axis Java language bindings can be used instead. However, most users will end up reinventing the same convenience functions that are present in the GEMINI API, so it is worth considering their use.

Usage Scenarios

The GEMINI software is intended to be used as middleware in the building of larger systems or the integration of existing systems and services.

WSRF and GEMINI Resources

GEMINI adopts the WSRF standard and the Globus 4 WS-Core Toolkit implementation of this standard in order to provide GEMINI application developers with a language-independent means of creating and using persistent, distributed services. The WSRF model defines persistent resources to be stateful objects that can be referred to via a small datum known as an EPR (EndPoint Reference). The EPR uniquely identifies a particular resource, including the location of the container hosting that resource. Each resource type is defined using standard WSDL (Web Services Definition Language) to specify the persistent attributes of a resource, as well as any associated service methods for that resource.

GEMINI's architecture currently defines the following high-level resource types (using WSDL) and provides container-side implementation of these resources and their assocated services.


The Zone resource is the factory and directory for all of the resources hosted by a particular container and 'owned' by a particular Zone. A Zone is typically associated with a user on a specific host. It is possible for given host to support multiple Zones, and for a Zone to be shared amongst multiple users. The important aspect of a Zone is that it is the manager of all of the other objects described below.


The GEMINI File resource is designed to allow arbitrary data to be stored persistently within GEMINI, and to allow this resource to be referred to by a WSRF EPR. These GEMINI Files then become the operands (inputs and outputs) to the other various services within GEMINI. In addition, the File is intended to maintain a rich set of metadata to allow easy cataloging and searching.


A GEMINI Task resource is one component of the GEMINI workflow model. A Task contains all of the information about a function to be performed, including references to input and output Files, and any necessary operation parameters. A GEMINI Task is completely passive and its state is typically only manipulated by the initial creator of a Task, as well as by the various GEMINI agents that may operate on the task.


A GEMINI Agent is a resource that bridges between the world of GEMINI objects and the actual computational services necessary to get a job done. Agents are the enactors of all GEMINI activity and workflow. Agents act autonomously from the client program

Downloading, Installing, Building, and Using GEMINI

The GEMINI software is currently in a Technology Preview state of release. Which means that some of the interface details may change and much of the implementation may still change. However, we believe that it is sufficiently powerful and useful enough for us to begin using it for other NIC research projects. We are encouraging outside users to take a peek and give us feedback to guide future GEMINI development. Information on obtaining, installing and using GEMINI can be found at Obtaining GEMINI.


There is a GEMINI Architecture Document, as well as GEMINI User's guide available at GEMINI Documentation.

Related Links

GEMINI builds upon several open sources and standards. Information about these can be found at: