XNAT Code Design

XNAT is a robust open-source toolkit used to collect, analyze and share neuro-imaging data. It leverages several open-source technologies to provide cutting edge technical solutions to the common needs and problems which neuro-imaging laboratories face. It creates customizable website, database and scripting tools with minimal user interaction. The goal of XNAT is to provide imaging laboratories with all the tools needed to manage neuro-imaging related data, from collection to publication, in an easy to use format.

At its core, XNAT is built on the open-source tool XDAT (eXtensible Data Archiving Toolkit). XDAT is a robust collection of open-source tools used to manage the storage and retrieval of complex XML data structures from a web application. XDAT combines the formidable powers of a relational database, web application, and java technologies to create a robust platform for the storage and retrieval of extensible XML data structures.

Behind the scenes, XDAT is built on the open-source relational database PostgreSQL. PostgreSQL is a heavy-weight database platform which is widely used throughout most industries. PostgreSQL has been developed over 15 years and is highly respected throughout the open-source community. It strongly conforms to the applicable database standards and provides a robust base on which XDAT can function.

To facilitate the access of data over the http model, XDAT leverages the Apache Turbine (http:_turbine.apache.org-) project to quickly create complete web applications which offer a range of functionality. Apache Turbine uses java servlet technology to manage the creation and execution of web application functions. Using Turbine, XDAT creates a customizable web application which can quickly be deployed into an Apache Tomcat (http:_tomcat.apache.org-) server. This application facilitates the processing of service, web document and image requests allowing users to access and manage their imaging data from anywhere.

Customizability is an important requirement of neuro-imaging laboratories. XNAT builds off of XDAT to facilitate a level of core customizability which is rare. XNAT defines a core XML schema which depicts the common data structures used in neuro-imaging research. XNAT installers can create customized schemas which extend the core XNAT schema and allow for use of core XNAT functionality along with the storage of customized data structures. XDAT uses the core XNAT schema and the user’s customized extensions to create the appropriate database tables, web pages, and java object structures which facilitate the insertion, selection and manipulation of customized neuro-imaging data. Whereas most applications require a static data model, using the extensibility of XML schema, XNAT allows for the core data structure and all of the subsequent structures to be easily customized.

Once a customized model has been developed and setup, XDAT allows users to customize the look and feel of their web application and also provides tools which allow for easy enhancements via Java development. To provide for the quick customization of the web application by users (who are often novices), XDAT builds on the Apache Velocity project, which is fully integrated into the Turbine Web Application Framework. Velocity is an open-source project which provides an easy to use web-layout language, which is ideally suited for users with minimal backend programming expertise, such as web design or graphic artists. XDAT pre-creates a suite of velocity pages for each customizable data structure. These pages can be used as is, or tailored to specific needs and desires.

In addition to the content generated by XDAT or customized by the user, XNAT provides a collection of pre-refined web pages, services and other tools which provide most of the functionality required by neuro-imaging laboratories. This content includes web pages for adding projects, subjects and experiments, web services for downloading stored meta-data and images, and locally developed open-source java imaging and analysis tools for dealing with neuro-imaging data.

XDAT also leverages various java open source tools to manage the user’s interaction with their stored data. XDAT provides for command prompt interaction with the stored data via a suite of web services using the open source Apache Axis (http:_ws.apache.org-axis-) project. Using Axis, users are even able to define customized web services which can be easily integrated into the web application. Also, XDAT makes use of a collection of Apache Commons (http:_commons.apache.org-) projects to facilitate the sending of email (commons-email (http:_commons.apache.org-email-)), file uploading (commons-fileupload (http:_commons.apache.org-fileupload-)), configuration (commons-configuration (http:_commons.apache.org-configuration-)) and a variety of other tools. In addition, XDAT uses a Log4j (http:_logging.apache.org-log4j-) comprehensively to manage the various logs produced through the various tools.

This entire process of integrating customized schemas and content with auto-generated content and pre-refined XNAT content is managed via the open source tools Ant (http:_ant.apache.org-) and Maven (http:_maven.apache.org-). Turbine (2.3) relies on Maven to organize and deploy content into the web server environment. Building off a collection of custom built Ant and Maven scripts, XNAT manages the generation and consolidation of custom content and uses the Turbine Maven tools (META) to deploy the content.