Grassroots API
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Grassroots API Documentation

The Grassroots information system (GIS) is a set of computing tools to allow users and developers to perform many scientific tasks as easily as possible. These tools are accessible via a web connection so are accessible for anyone with an internet connection. All of the data is sent as JSON messages so any server or client that can understand these JSON messages can be used to access the GIS. For example, you can use a web browser or the included Qt-based desktop client to access all of the functionality of the system. The scientific data is what is important, not the user's choice of tool to access the system.


Using a similar approach to that used by the Apache httpd server, the GIS consists of a core Server and a set of external modules, called Services, that provide the scientific functionality. The access to the system is via a Client. The GIS server can also be linked to other GIS servers allowing the functionality of both to be shared without having to perform any additional installation. Servers, Services and Clients are all interface specifications in that they declare an Application Programming Interface (API) that need to be implemented.

Grassroots system architecture

All of the Server-Server and Server-Client communication is by JSON-based messages as described in the Schema guide


For more information, see the Server documentation.


A Client connects to a GIS Server and makes calls to Services. This can be via a web browser, a desktop client or mobile application.


Services are components that are accessed by the user to perform various tasks.

Support libraries

There are a number of support libraries that any component within the GIS system can use to interact with other core GIS infrastructure and third-party services.


DRMAA is an API to allow access to computing grids, clusters and cloud-based services. The GIS DRMAA library wraps up calls to HPC processes such as queues to submit jobs to, number of nodes to use, job monitoring, etc.


iRODS is a data storage layer that abstracts out where the data is stored as well as having the ability to add metadata to files and directories to allow for searching. The GIS iRODS library adds an API to simplify searching on various criteria.


Handlers are a family of components that allow data to be read or written to different storage systems.

Parameters Library

The Parameters library stores all of the functionality that is needed to define, change, and manipulate Service configuration options by a Client.



The current system of installation requires building from source.

  1. Copy to This file is read in by the makefile to allow the installation to be configured. An example file is shown below.

     export JANSSON_HOME=$(DIR_GIS_INSTALL)/extras/jansson
     export DROPBOX_HOME=$(DIR_GIS_INSTALL)/extras/dropbox
     export HCXSELECT_HOME=$(DIR_GIS_INSTALL)/extras/hcxselect
     export HTMLCXX_HOME=$(DIR_GIS_INSTALL)/extras/htmlcxx
     export SHARED_IRODS_HOME=$(DIR_GIS_INSTALL)/extras/irods
     export OAUTH_HOME=$(DIR_GIS_INSTALL)/extras/liboauth
     export UUID_HOME=$(DIR_GIS_INSTALL)/extras/libuuid
     export BLAST_HOME=$(DIR_GIS_INSTALL)/extras/blast
     export DIR_GIS_INSTALL=/opt/GIS
     export DIR_APACHE=/usr/local/apache2
     export APXS=$(DIR_APACHE)/bin/apxs
     export SUDO=sudo
     export DRMAA_ENABLED=1

    For a default installation, the dependencies of GIS, such as jansson, htmlcxx, etc. get installed automatically. The three lines at the bottom of the file specify where the Apache httpd server is installed so that the GIS module can get installed inside it correctly.

    DIR_GIS_INSTALL is where you would like GIS to be installed.

    DIR_APACHE is where the Apache httpd server that you wish to run GIS with is installed.

    APXS is the path to the apxs tool that is used to make httpd modules.

    SUDO is used is you need elevated privileges to install to any of the folders specified. If you do not, you can leave this value blank e.g. export SUDO=

    DRMAA_ENABLED if this is set to 1 then the GIS drmaa support library will be built.

  2. If you now run make it will compile the code and then run make install to install GIS.