Difference between revisions of "Slicer3:Remote Data Handling"

From NAMIC Wiki
Jump to: navigation, search
Line 50: Line 50:
 
For the fBIRN QueryAtlas use case, we need a combination of '''FreeSurfer morphology analysis''' and a '''FIPS analysis''' of the same subject. With the combined data in Slicer, we can view activation overlays co-registered to and overlayed onto the high resolution structural MRI using the FIPS analysis, and determine the names of brain regions where activations occur using the co-registered morphology analysis.
 
For the fBIRN QueryAtlas use case, we need a combination of '''FreeSurfer morphology analysis''' and a '''FIPS analysis''' of the same subject. With the combined data in Slicer, we can view activation overlays co-registered to and overlayed onto the high resolution structural MRI using the FIPS analysis, and determine the names of brain regions where activations occur using the co-registered morphology analysis.
  
The xcede2.0 catalog should contain to associated collections of data for the fBIRN QueryAtlas use case:
+
The required analyses including all derived data are probably in two different locations on the HID (check with Burak). The analysis output is stored to local disk using a standard directory structure.
  
    * One FreeSurfer "lh" model and one FreeSurfer "rh" model at most
+
===FIPS analysis (.feat) directory and required data===
    * the FreeSurfer structural brain.mgz image volume
+
For instance, one FIPS output directory is called sirp-hp65-stc-to7-gam.feat. Under this directory, QueryAtlas needs the following datasets:
    * the FreeSurfer example functional example_func.nii
+
* sirp-hp65-stc-to7-gam.feat/reg/example_func.nii
    * some FIPS-generated Statistical volumes
+
* sirp-hp65-stc-to7-gam.feat/reg/freesurfer/anat2exf.register.dat
    * the FreeSurfer aparc+aseg.mgz label map volume
+
* sirp-hp65-stc-to7-gam.feat/stats/(all statistics files of interest)
    * the FreeSurfer lh.aparc.annot annotation file
+
* sirp-hp65-stc-to7-gam.feat/design.gif (this image relates statistics files to experimental conditions)
    * the matrix to align the example_func + statistics to the brain.mgz: anat2exf.register.dat
 
  
These are found in the following places, according to the default FIPS/FreeSurfer directory structure.
+
===FreeSurfer analysis directory, and required data ===
 +
For instance, one FreeSurfer morphology analysis directory is called fbph2-000670986943. Under this directory, QueryAtlas needs the following datasets:
  
The BIRN HID webservices shouldn't really need to know the subset of data that QueryAtlas needs... maybe the web interface can take a BIRN ID and create a FIPS/FreeSurfer xcede catalog with all FIPS/FreeSurfer uris, and Slicer can parse out the ones of interest, and download them?
+
* fbph2-000670986943/mri/brain.mgz
 +
* fbph2-000670986943/mri/aparc+aseg.mgz
 +
* fbph2-000670986943/surf/lh.pial
 +
* fbph2-000670986943/surf/rh.pial
 +
* fbph2-000670986943/label/lh.aparc.annot
 +
* fbph2-000670986943/label/rh.aparc.annot
 +
 
 +
 
 +
The BIRN HID webservices shouldn't really need to know the subset of data that QueryAtlas needs... maybe the web interface can take a BIRN ID and create a FIPS/FreeSurfer xcede catalog with all uris in the FIPS and FreeSurfer directories, and QueryAtlas can find the relevant ones and download that subset of data.
  
 
[[ Slicer3:XCEDE_use_cases | See this page for more discussion of Slicer's use of Xcede catalogs ]]
 
[[ Slicer3:XCEDE_use_cases | See this page for more discussion of Slicer's use of Xcede catalogs ]]
  
 
= Asynchronous I/O Manager =
 
= Asynchronous I/O Manager =

Revision as of 16:12, 31 January 2008

Home < Slicer3:Remote Data Handling

Back to Slicer3 Projects List


ITK-based mechanism handling remote data (for command line modules, batch processing, and grid processing)

vtkMRMLStorageNode methods for handling remote data (for loading and saving data for interactive use)

The first goal is to figure out what workflows to support, and a good implementation approach.

Currently, Load Scene, Import Scene, and Add Data options in Slicer all encapsulate two steps:

  • locating a dataset, usually accomplished through a file browser, and
  • selecting a dataset to initiate loading.

For loading remote datasets, the following options are available:

  • break these two steps apart explicitly,
  • bind them together under the hood,
  • or support both of these paradigms.

Breaking apart "find data" and "load data":

Possible workflow A

  • User downloads .xcat or .xml (MRML) file to disk using the HID or an XNAT web interface
  • From the Load Scene file browser, user selects the .xcat or .xml archive. If no locally cached versions exist, each remote file listed in the archive is downloaded to /tmp directory (always locally cached) by the Download Manager, and then loaded into Slicer via a vtkMRMLStorageNode method when download is complete.

Possible workflow B

  • User downloads .xcat or .xml (MRML) file to disk using the HID or an XNAT web interface
  • From the Load Scene file browser, user selects the .xcat or .xml archive. If no locally cached versions exist, each remote file in the archive is downloaded to /tmp (only if a flag is set) by the Download Manager, and loaded directly into Slicer via a vtkMRMLStorageNode method when download is complete.

Possible workflow C

  • User locates a MRML file, .xcat archive, or individual dataset on the HID or an XNAT web interface
  • User types the uri into the Load Scene, Import Scene, or Add Data interfaces.
  • If no locally cached versions exist, each remote file in the archive is cached to /tmp by the Download Manager, and loaded directly into Slicer via a vtkMRMLStorageNode method when download is complete.

Bundling together "find data" and "load data":

Possible workflow D

In this workflow, Slicer would make calls to HID or XNAT webservices to determine what data of interest is available... Questions:

  • How might this work?
  • Do we really want to re-implement functionality in the HID web interface?
  • Maybe Slicer can implement a workflow (A-C) but also offer a simplified BIRN query interface that has functionality like:
    • Request BIRNIDs for all subjects who have a complete FIPS/FreeSurfer analysis
    • Request an xcat for one of these BIRNIDs

Saving Data back to remote site

  • Since we have no plan for where to save MRML files on HID, can we have a webservices function we can call from Slicer that writes a file to /dev/null on HID in the meanwhile?

What data do we need in an .xcat file?

For the fBIRN QueryAtlas use case, we need a combination of FreeSurfer morphology analysis and a FIPS analysis of the same subject. With the combined data in Slicer, we can view activation overlays co-registered to and overlayed onto the high resolution structural MRI using the FIPS analysis, and determine the names of brain regions where activations occur using the co-registered morphology analysis.

The required analyses including all derived data are probably in two different locations on the HID (check with Burak). The analysis output is stored to local disk using a standard directory structure.

FIPS analysis (.feat) directory and required data

For instance, one FIPS output directory is called sirp-hp65-stc-to7-gam.feat. Under this directory, QueryAtlas needs the following datasets:

  • sirp-hp65-stc-to7-gam.feat/reg/example_func.nii
  • sirp-hp65-stc-to7-gam.feat/reg/freesurfer/anat2exf.register.dat
  • sirp-hp65-stc-to7-gam.feat/stats/(all statistics files of interest)
  • sirp-hp65-stc-to7-gam.feat/design.gif (this image relates statistics files to experimental conditions)

FreeSurfer analysis directory, and required data

For instance, one FreeSurfer morphology analysis directory is called fbph2-000670986943. Under this directory, QueryAtlas needs the following datasets:

  • fbph2-000670986943/mri/brain.mgz
  • fbph2-000670986943/mri/aparc+aseg.mgz
  • fbph2-000670986943/surf/lh.pial
  • fbph2-000670986943/surf/rh.pial
  • fbph2-000670986943/label/lh.aparc.annot
  • fbph2-000670986943/label/rh.aparc.annot


The BIRN HID webservices shouldn't really need to know the subset of data that QueryAtlas needs... maybe the web interface can take a BIRN ID and create a FIPS/FreeSurfer xcede catalog with all uris in the FIPS and FreeSurfer directories, and QueryAtlas can find the relevant ones and download that subset of data.

See this page for more discussion of Slicer's use of Xcede catalogs

Asynchronous I/O Manager