2013-04-10

Announcing TissueStack


TissueStack was originally designed for use in the 3D medical and scientific imaging field for data from 3D micro-CT, MRI and restacked histology data. The viewer has since been used for multiple datasets including museum specimens, coal mining samples and Electron Microscopy data.

The original motivation for TissueStack came from the burgeoning size of micro-MRI and micro-CT datasets in scientific experiments. For a typical mouse brain imaging study this can amount to 12-15GB for a single scan. This problem is only exacerbated when re-stacked optical imaging (Histology) data is added to the analysis as these datasets can be up to 1TB in size. This presents a large barrier to collaborative research as it is difficult to share data between sites and keep collaborators up to date with the latest observations. What was needed was a 3D dataset viewing system that could be viewed remotely and had the ability to federate and overlay datasets from multiple sites, from these set of requirements TissueStack was born.

So far, TissueStack has been used by researchers from UQ (Brisbane) and Curtin (Perth) to collaboratively annotate the highest resolution model of mouse anatomy to date as part of the AMBMC project. Without the abilities of TissueStack to link to specific parts of the data, efforts to identify sub-structures were reduced to lengthy conference calls in which the collaborators attempted to sync their views of the same data.

From a technical standpoint, TissueStack is a web based HTML5 3D dataset viewer that generates image tiles on the fly, the main interface is shown below.

The main TissueStack interface view
The viewer has been designed to mimic web based map viewing sites such that users can easily navigate. A demonstration of TissueStack can be seen here: http://caivm1.qern.qcif.edu.au/ There is also a mobile/tablet version of TissueStack with all the same functionality as the "desktop" version. The appropriate version of the site is loaded based upon the viewers current viewing platform.


Testing methods and Findings

Throughout its development TissueStack has had a group of four testers who have provided feedback. We have summarised the findings of this below and how it influenced our development path.

Our Test Users

User 1: A researcher at Centre for Advanced Imaging with many years experience both using and writing image viewing software. We expected this user to have a knowledge of which features are most useful the largest number of users.

User 2: A Professor at the Montreal Neurological Institute with experience in image analysis and atlasing.

User 3: A Professor of anatomy and one of the authors of the most widely used paper based atlas of mouse neuroanatomy based in Perth and Sydney.

User 4: A post-doc at the Centre for Advanced Imaging with experience in atlas creation and manual brain segmentation.


Common testing outcomes

Test users interacted with all parts of TissueStack excepting parts of the Administrative tab reserved for the upload of data. Given that the user interface has been modelled on the existing web paradigm of online mapping users were all able to rapidly navigate the datasets. Initial testing had users requesting features such as scale bars, dataset overlay, linking of datasets and progress indicators.

These features were then added in subsequent releases and with some refinement are now all in the final release of TissueStack.


Scale Bar/Indicator

Unbeknown to the developers this is a standard feature in nearly all histological datasets as it allows the user to gauge the current image with respect to others of possibly differing scales.

A scale bar is typically not used in 3D MRI or CT data as the image typically covers the entire of the object. This obviously becomes important when viewing a high resolution MRI image in which the entire volume cannot always fit in a single view. As such we added a dynamic scale bar to the main TissueStack view, this bar changes as the user zooms in and out of the view.

Dataset Overlay

A common request was for the ability to overlay two datasets, typically an MRI and optical imaging dataset or an MRI and a segmented image with regions of interest traced. The initial design of TissueStack meant that adding this feature was difficult as we had only planned for the simultaneous browsing of datasets (linked windows). As such a lot discussion regarding the best way to add this was generated in order to both satisfy the user feature request and to also preserve as much as we could of TissueStacks speed and flexibility. 

The feature was added in the final release of TissueStack but it does incur a small performance penalty. User testing of this feature has shown that the small speed drop is worth it for the added functionality. We have added extra functionality beyond the initial user request with an 'overlay control' that appears in the top left window when two datasets are displayed simultaneously.

See this blog post for more details on the implementation specifics.

Linked Datasets

This feature was always planned from the beginning but user requests meant that we had to bring the timeline forward for its implementation ahead of colour mapping and links.

This is probably one of the most used features of TissueStack as it allows the parallel browsing of linked datasets of differing scales. This was one of the primary aims of TissueStack. The link between the datasets is accomplished by storing a voxel to world transformation for all datasets in the TissueStack database.

See this blog post for more details on the implementation specifics

Progress Indicators

Users initially expressed some frustration in that TissueStack gave users no indicator of loading progress when rapidly navigating a dataset. This was especially apparent over slower connections and with larger datasets in which tiling performance is slower than user expectations.

The best way to fix this problem is to speed up the tiling process itself by caching, pre-loading and using preview tiles at a lower resolution. This can be seen when panning around a dataset, in this case lower resolution images are loaded. These are then replaced by higher resolution images when navigation ceases. A tile queue culling algorithm was also implemented to speed rapid browsing.

After a significant amount of effort had been expended in speeding the tiling we went back to the users to gauge their response. The reply was that things were "much better" but still somewhat disorienting for new users. As such we implemented a progress indicator at the bottom centre that shows current drawing progress for the three tri-planar views.


Individual User Experiences

Some issues were specific to our testing users needs for the software. We had to find a balance between their individual needs for extra functionality while keeping TissueStack as generic as possible while maintaining performance.


User 1
User 1 was strongly focussed on the ability to view and link data from multiple datasets, typically MRI, CT and Optical Microscopy. This is a large advantage TissueStack has over previous efforts in this area in which just the viewing needs of a single dataset are addressed.

User 2
User 2 was involved in early testing of TissueStack as it enabled us to test speed from a remote site (Canada). This user was initially impressed with the speed possible from a remote connection as compared to previous efforts he had seen and has remained so. This user primarily loads human neuroimaging data in TissueStack but has an interest in high resolution animal models.

User 3
This user made extensive use of the links into datasets with geographically distant collaborators while annotating a high resolution mouse model. This feature was a large motivation for use of TissueStack and has meant a drive from paper to digital shared atlases in a number of associated projects.

User 4
This user had many feature requests including online manual segmentation, collaborative viewing, scale bars, measurement tools, etc. These were driven by his own research and collaboration needs. Some of these features were implemented and some have been included in the future roadmap of TissueStack (online manual segmentation via SVG overlays). 





2013-01-08

TissueStack Features - 8

TissueStack has a simple external query interface that allows other applications and researchers to integrate the data in the application to their own systems. In order to achieve this, TissueStack supports embedding in other pages. This version allows a user to embed a light version of Tissue Stack into any website with only few lines of code via the TissueStack web API.

The screenshot below shows an example page with Tissue Stack embedded

The technical details for this are in a previous blog post here.

TissueStack Features - 7

TissueStack allows for data display from multiple sources running a TissueStack server via data federation. This is achieved as the connection to a dataset on a client is via a socket connection to a TissueStack Server. This means that a single TissueStack Client can connect to multiple servers so long as they are internet accessible.

The interface for this is in the TissueStack Client via the "connect to Tissue Stack server” button on the left of the main image pane. All that is required is the corresponding URL of the server at which point the two instances datasets can be viewed.

The screenshot below shows a demonstration Tissue Stack instance connected to both a remote server and a server running on the localhost. This information is displayed in the list of available datasets.



TissueStack Features - 6


TissueStack permits the comparison of mutant vs. wildtype image data and will allow for morphological investigation of differences between the two.

The most common form of morphological comparison used for voxel data is to use either a combined view of both datasets or to overlay them. TissueStack supports both of these types of image comparison. As part of this the datasets are also synchronised via the inbuilt coordinate system (typically in mm).

These two screenshots show the two styles of dataset synchronisation (side by side and overlay) In the case of the overlaid datasets, the second image has been set to use the Spectral colour map.




Control of the synchronisation and overlay is via the admin tab.


When in overlay mode a new control is shown in the top left of the image pane, this controls the opacity of the overlaid image such that the image behind can be seen.

2013-01-07

TissueStack Features - 5

A design goal of TissueStack has always been to develop a system that can be easily downloaded, installed and configured on a standard architecture by a relatively competent user for use at local sites.

In order to get the best possible performance using web technologies, a "TissueStack" install is comprised of 4 components. All of these components are in a single Github repository and can be downloaded using a simple git clone from https://github.com/NIF-au/TissueStack or as a ZIP archive from this link: https://github.com/NIF-au/TissueStack/archive/master.zip 

An installation guide is provided for each part of TissueStack, these can be found on github, in the README for each component:

The TissueStack Server (Coded in C):

   https://github.com/NIF-au/TissueStack/blob/master/src/c/README


The TissueStack Server middle layer (Coded in Java):

https://github.com/NIF-au/TissueStack/blob/master/src/java/README


The TissueStack Server database (Postgres SQL): 

https://github.com/NIF-au/TissueStack/blob/master/src/sql/README


The TissueStack Client web front end (that can be included in multiple websites for a single server): 

https://github.com/NIF-au/TissueStack/blob/master/src/web/README


In order to further ease the installation process, there exist binary packages: 

http://tissuestack.blogspot.com.au/2013/06/tissue-stack-11-binary-packages.html

TissueStack Features - 4

The TissueStack server has a plugin architecture such that future modules for additional reference data can be added. The client side code is all coded in HTML5 using standard methods and HTML elements, as such by its nature it is infinitely extensible and embeddable.

The plugin architecture API that is used on the server side of Tissue Stack is documented on github here. This mechanism allows external or future developers to implement and add new functionality. The plugin system also allows plugins to be included or removed without shutting down the server. Each plugin shares all data structures with the core server and can also interact with another plugins.

Contributors