Engineering:ISCPaper
From NAMIC Wiki
Home < Engineering:ISCPaper
% This is sample.tex the demonstration file of
% MICCAI 2005 for Latex2e
% adapted from LLNCS.DEM from
% the LaTeX macro package from Springer-Verlag
% for Lecture Notes in Computer Science,
% version 2.2 for LaTeX2e
%
\documentclass{llncs}
%
\usepackage{makeidx} % allows for indexgeneration
\usepackage{url}
%
\usepackage{graphicx}
\graphicspath{{pics/}{figs/}}
% list here all the paths to your figure folders
\begin{document}
%
\frontmatter % for the preliminaries
%
%\pagestyle{headings} % switches on printing of running heads
\pagestyle{empty} % switches on printing of running heads
%
\mainmatter % start of your contributions
%
\title{Application Software for Medical Image Computing: Slicer3 Architecture Design Review}
%
\titlerunning{Short Title} % abbreviated title (for running head)
%
\author{
Kathryn Hayes\inst{1,2}
\and Michael Halle\inst{1,2}
\and Nicole Aucoin\inst{1,2}
\and Sebastien Barre\inst{2,4}
\and Dan Blezek\inst{2,5}
\and Andy Cedilnik\inst{2,4}
\and Luis Ibanez\inst{2,4}
\and Tina Kapur\inst{2}
\and Bill Lorensen\inst{2,5}
\and Jim Miller\inst{2,5}
\and Lauren O'Donnell\inst{1,2,7,8}
\and Jagadeeswaran Rajendiran\inst{2,6}
\and Will Schroeder\inst{2,4}
\and Alex Yarmarkovich\inst{2,3}
\and Steve Pieper\inst{2,3}
\and Ron Kikinis\inst{1,2}
}
%
\authorrunning{me} % abbreviated author list (for running head)
%
%%%% modified list of authors for the TOC (add the affiliations)
\tocauthor{Kathryn Hayes (Brigham and Women's Hospital),
author2 (Isomics, Inc.),
author3 (National Alliance of Medical Image Computing),
author4 (Kitware),
author5 (GE)
}
%
\institute{Department of Radiology, Brigham and Women's Hospital, Harvard Medical School, 75 Francis Street, Boston, MA 02115, USA, \email{hayes@bwh.harvard.edu},
\and
National Alliance of Medical Image Computing, USA
\and
Isomics, Inc, Cambridge, Massachusetts, USA
\and
Kitware, Inc, 28 Corporate Drive, Suite 204, Clifton Park, New York 12065, USA
\and
GE Corporate R\&D, 1 Research Circle, Niskayuna, NY 12309, USA
\and
Laboratory of Neuro Imaging, Department of Neurology, UCLA School of Medicine, 710 Westwood Plaza, Rm 4-238 , Los Angeles, CA 90095, USA
\and Division of Health Sciences and Technology (HST), Massachusetts Institute of Technology, 77 Massachusetts Ave, E25-519, Cambridge, MA 02139, USA
\and Computer Science and Artificial Intelligence Laboratory (CSAIL), Massachusetts Institute of Technology, 32 Vassar Street, Cambridge, MA 02139, USA
\thanks{This work is part of the National Alliance for Medical Image Computing
(NAMIC), funded by the National Institutes of Health through the NIH
Roadmap for Medical Research, Grant U54 EB005149. Information on the
National Centers for Biomedical Computing can be obtained from
http://nihroadmap.nih.gov/bioinformatics.
}
}
\maketitle % typeset the title of the contribution
\begin{abstract}
The authors are part of a consortium effort (NA-MIC) to support
computing for biomedical imaging research, and are particularly
interested in the development of end-user application software as part
of that effort. The purpose of the Slicer3 architecture review is to
investigate use cases, requirements, and components for an updated
cross-platform, modular, testable, end-user application framework for
future NA-MIC and related use. This paper presents a snapshot of the
architecture development process including both topics on which
consensus has been achieved (e.g. the use of ITK as the algorithm
development framework) and areas where further research is ongoing.
To be successful, the architecture must meet a diverse set of user and
developer requirements; as a report to the wider community, this paper
is an attempt to solicit input and participation.
\end{abstract}
\section{Introduction}
\subsection{Context}
\subsubsection{Slicer}
Why we decided to do it the way we did (path of development):
Social Goals:
- open platform
- be able to extend the code base for research purposes
- use it freely in a clinical research env.
- share software with collaborators, inc. visitors to the lab
- Dave Gering @MIT - worked @ GE before he got to MIT - take best
ideas of what's currently available in industry with our goals
Technical Goals:
- provide a modular research platform that is an end user interface to
algorithms implementing segmentation, reg., data viz., guiding image
acquisition,
- major motivator: Open magnet system that needed to provide real-time
data to the system with the help of the surgical team.
- open (MRT) and conventional surgery provided an interface for
IRB-approved experiments
- how often it has been used
- as we continued to support Slicer as part of our research efforts,
the ITK effort built up seg. and reg. algorithms as a common
platform
- those were specifically designed to not have a UI that an end user
would use
NA-MIC:
ITK, VTK, etc. - elements without UI
NA-MIC can bring software tech., lessons of soft. eng. that were
learned, other soft. efforts, DBPs
Slicer provides a UI that both the DBP people and the developers can
use the UI in a way that is intuitive.
Slicer was a natural fit because it was built on top of VTK and ITK,
but it wasn't designed for that.
-> take lessons of existing software, adapt to a specific larger need.
- filled a gap that fitted an immediate need, we want to fit a need
with a specific product, and w/ the lessons of previous
development...
What is the current status of the software:
(Slicer2 as a reference: current state of Slicer)
- mechanisms that allow distributed development to be successful -
elements of comm. for dist. devel. and users
- interact w/ Slicer both programatically (w/ tkcon) and through the UI
- MRML designed to be a scene/data description for exchange
- programming infrastructure was not layered to allow modularity,
prog. language does not allow encapsulation
- no easy access of math. expr.
- doesn't allow extensive reuse of UI components
- harder to isolate functionality (ind. modules or objects) - can't
encapsulate functionality
- current structure makes testing of UI difficult
- elements of Slicer can't be reused by other programs (essentially
monolithic)
- interesting functionality can't be incorporated into other programs
- what have we learned in the process?
- what applications can we envision that we would like to support with
Slicer that we hadn't thought about before? e.g. ITK
- desired new functionality/applications
- what does an app. person, an end user, and a programmer want?
- go to NA-MIC, what do people want? UI for grid comp., remote
execution
- standardized interface to tracking systems and medical image devices
- other end user apps.
- behave like a professional quality UI app
- services offered: exchange data with other programs and software
systems, make it easy for people to bring their software into Slicer
w/out a great investment in understanding Slicer arch. and provide
building blocks for building interactive applications that go beyond
particular algos. (e.g. how to get to remote data, talk to other
progs., other trackers, etc.)
Licensing reqs.
- want to maximize sharing of data - realize that good stuff comes
from clinical, reserach, academic, commercial env. The more people
that can share data, the greater likelihood that we can ... in ways
that we can't predict or control.
- What are the ramifications? People thing, not a lawyer thing
- trying to balance needs of sharing with the real issues of liability
in the medical community, continues to be an ongoing discussion
- objective is not to evangenlise anything -> want to share, allow
people to decide for themselves
- licensing affects decisions - how are we choosing the technologies
and making this choice? - an element of design
The 3D Slicer is freely available, open-source software for
visualization, registration, segmentation, and quantification of
medical data.
%\cite{slicer.org}.
Slicer uniquely integrates several facets of image-guided medicine
into a single environment. It provides capabilities for automatic
registration (aligning data sets), semi-automatic segmentation
(extracting structures such as vessels and tumors from the data),
generation of 3D surface models (for viewing the segmented
structures), 3D visualization, and quantitative analysis (measuring
distances, angles, surface areas, and volumes) of various medical
scans.
%\cite{slicer.org}.
We integrated Slicer with an open MR scanner to augment
intra-operative imaging with a full array of pre-operative data. The
same analysis previously reserved for pre-operative data can now be
applied to exploring the anatomical changes as the surgery
progresses. Surgical instruments are tracked and used to drive the
location of reformatted slices. Real-time scans are visualized as
slices in the same 3D view along with the pre-operative slices and
surface models. The system has been applied in over 20 neurosurgical
cases at Brigham and Women's Hospital, and continues to be routinely
used for 1-2 cases per week.
%\cite{slicer.org}.
\subsubsection{NA-MIC}
The National Alliance for Medical Imaging Computing (NA-MIC) is a
multi-institutional, interdisciplinary team of computer scientists,
software engineers, and medical investigators who develop
computational tools for the analysis and visualization of medical
image data. NA-MIC is supported by the National Institutes of Health,
Roadmap Initiative for Bioinformatics and Computational Biology. The
purpose of the center is to provide the infrastructure and environment
for the development of algorithms and open software technologies, and
then oversee the training and dissemination of these tools to the
medical research community.
The engineering core of NA-MIC serves as the link between the
algorithm developers and the end-user medical practitioners of the
driving biological projects (initially NA-MIC is developing software
for neuroimage analysis in support of schizophrenia research, a focus
that will broaden to include other image computing types as the
project evolves). A robust, well-architected application environment,
with a logical user interface and a set of complementary image
analysis and data manipulation tools provides a critical component for
the success of the overall effort. In addition, the end-user
application environment must be flexible enough to support a variety
of interaction styles, including interactive and batch processing
modes. The application must also support different operating systems
and machine architectures.
\subsection{Slicer2 as a Reference}
To meet their overall goals, the NA-MIC investigators have to adopt
and build on the existing 3D Slicer application environment (or simply
``Slicer'') as a reference platform for the development of new
functionality because it already has many of the features that were
known to be important for this purpose. Slicer is already a complete
end-user application, purpose-built to provide a platform for image
analysis research and algorithm development while adhering to the user
interface conventions that have become standard in end-user software.
%\cite{JMRjournalpaper}.
Slicer is available for download both in source code format and in
pre-compiled binaries for the Linux, Windows, and Sun Solaris
platforms, and thus can be used by developers who wish to add new
functionality to the existing feature base and by users familiar with
a point-and-click menu environment. While the Surgical Planning
Laboratory (SPL) at Brigham and Women's Hospital is the primary home
of the Slicer, a number of groups have been involved in the initiation
and ongoing development of the software.
Slicer core functionality and architecture are implemented using the
Visualization Toolkit (VTK) library developed by GE Research and
Kitware. Slicer has also been adopted as one of the core software
components of the Biomedical Informatics Research Network (BIRN)
project, one of NA-MIC's sister projects, through which our
collaborators at UCSD, Georgia Tech, and the Laboratory of Neuro
Imaging at UCLA have integrated Slicer with their research.
Additionally, several algorithms in the Insight Toolkit (ITK) have
already been integrated into Slicer as plug-in modules, and new
software from Slicer developers is being contributed back into the
Insight Consortium.
In summary, Slicer2 has been a highly effective vehicle for putting
medical segmentation, registration, visualization, and data
manipulation tools driven by the needs of research projects into the
hands of end users. Slicer2 is an important part of NA-MIC: it is
NA-MIC's current application platform. Now and for the near future,
Slicer2 offers NA-MIC researchers an effective way to make their
algorithms and software available to others.
\subsection{Motivation for New Development}
Slicer3 will be developed as a collaboration between the Algorithms,
Engineering, and Driving Biological Projects cores of NA-MIC.
Slicer2's current stability offers us an opportunity to review
limitations of its current design and architecture based on the new
roles it is being called on to fill. Years of experience as users,
developers, and code base maintainers have given us insight on the
strengths and limitations of Slicer2, which we hope to build on in
Slicer3. We can begin developing elements of a new Slicer
infrastructure (Slicer3) as a platform for the future while continuing
to use Slicer2 as a technology deployment tool for current projects.
We believe this moment in the NA-MIC development schedule is the best
time to evaluate the requirements, benefits, costs, and possible
composition of a Slicer3 architecture. The goal is to understand the
needs and opinions of all parties as well as the current state of the
art in application development when deciding on the direction of
Slicer3.
Overhauling the current Slicer architecture allows us to shed
limitations of the current Slicer2 architecture and adjusting
structure to the NA-MIC approach. We are able to add new ideas,
including NA-MIC inspired ideas, and create a long-lived, maintainable
system. By improving the architecture, we are hoping that Slicer3
will evolve into a platform with a broad developer community as well
as an attractive end-user application for NA-MIC user groups and
biomedical imaging researchers in general.
\section{Method}
\label{sec:method}
The Slicer3 architecture design review has been facilitated by Slicer
developer meetings, and the recent NA-MIC programming retreat in
Cambridge, MA from Monday, June 27 - Friday, July 1st, 2005 at MIT.
In attendance were Slicer users, Slicer developers, and developers of
Slicer's underlying technologies. The Slicer architecture review at
the programming retreat consisted of individual presentations followed
by group discussions.
In addition to the programming week, ongoing weekly NA-MIC engineering
teleconferences and updates of the NA-MIC wiki provide communication
about the current state of the Slicer architecture design process.
Slicer developer meetings are held every two weeks at BWH to
facilitate further architecture design between local developers, with
minutes posted to the NA-MIC wiki. A second programmer's week is
scheduled for January in Salt Lake City, Utah, to report on Slicer
architecture progress and continue discussion among the Slicer
development community.
These organizational efforts will be supported by the technologies and
practices of the NA-MIC software engineering methodology, carried
forward from the ITK and VTK communities. This process include a cvs
source code repository, nightly testing with Dart, users and
developers mailing lists, and an "extreme" programming approach.
\section{Requirements and Specifications}
\subsection{Current Slicer Evaluation}
The re-engineering of elements of Slicer is based on several years of
experience with Slicer2, the underlying VTK and ITK toolkits, as well
as elements of other applications, frameworks, and technologies. This
effort is designed to address several shortcomings of the current
Slicer2, while preserving its strengths.
\subsubsection{Strengths}
Slicer2 as it exists today has a number of strengths that we wish to
incorporate into the new Slicer3 design. Slicer2 is currently a
stable, mature application which incorporates a large amount of
functionality at both the developer and user level. It is actively
maintained, with bug fixes made and new functionality added in minor
releases multiple times a year. There are many resources for users
and developers including extensive documentation, mailing lists, a bug
tracker, and a Dart dashboard which provides a visual interface to
nightly builds and regression testing.
Slicer and its key technologies are open, and permit development by
multiple geographically distributed developers in a cross-platform,
unencumbered fashion. The use of the Tcl/Tk scripting language allows
rapid development of new modules and functionality and user interfaces
to be constructed with relatively few lines of code. Tcl supports
dynamic loading of scripts and code, and Slicer's runtime tkcon (Tk
console) allows for interactive access to the Tcl interpreter.
MRML, Slicer's scene description and data exchange file format, is
based on XML and supports hierarchies of models and volumes.
\subsubsection{Weaknesses}
Slicer2 also has a number of weaknesses we would like to address in
the architecture review process.
Tcl, while it is strong in introspection, flexibility, and stability,
also has weaknesses which Slicer developers have found limiting.
Slicer currently uses Tcl (without any object-oriented extensions) for
both UI scripting and program control. As a language, Tcl has
limitations including a lack of general objects, arrays that are not
first-class objects, mathematical expressions that are not part of the
core language syntax, and lists which require a verbose indexing
syntax.
Debugging Tcl code can be difficult because command, variable, and
array index names are often formed by string concatenation which
increases the complexity of code tracing. VTK's current Tcl bindings
place all objects in a single, global namespace; object names are
chosen by the user; conflicts are easy to generate and must be avoided
manually by naming convention. This can be especially problematic
because many of Slicer's developers work almost completely
independently of each other.
Because no object oriented language features are used at the Tcl
level, Slicer2's current modules combine code collections, UI panels,
and quasi-object instances into a single construct. As a result, it
is not possible to create multiple instances of user interface
components. While Slicer's VTK implementation classes are potentially
available from other applications, Slicer's application logic
(implemented in Tcl) is in general much harder to interface to
arbitrary external software. Code interdependencies make it difficult
or impossible to extract specific subsets of this functionality for
use in other software.
There is no objective specification of how Slicer2's components are
meant to behave. In fact, Slicer2's behavior is in some cases defined
by bugs and bug workarounds required by compatibility over its
development life. Because Slicer2 does not have a testing framework
that developers are required to populate, it isn't possble to track
when software is or isn't behaving correctly.
MRML, Slicer2's data description and exchange mechanism, has several
limitations. There is not a clean separation between data
description, scene description (the relationship of the objects that
the data represents), rendering state (instancing) and rendering style
(color, material, visibility). There is currently no support for
semantic links and limited support for program state. There is no XML
namespace support, no remote resources supported, and no effective
mechanism for approved extensions, or guidance about how to design
them. Slicer's MRML parser is a Tcl-based ``ad-hoc''" parser.
\subsection{UI Tools}
One of the major design decisions that will be made for Slicer3 will
be the choice of user interface tools. Although it is difficult to
quantify improvements in the user interface, we do have specifications
that we want our UI tools to meet. We want to ensure that the chosen
UI tool enforces the distinction between the user interface and
functionality, in contrast to the current Slicer2 UI which is deeply
integrated with the underlying code base. For consideration in
Slicer3, UI tools need to be well-designed developer tools, have an
active developer community, and have testing, debugging, and support
options available. In addition, we want to know the current UI trends
in the medical image community to decide which tools are best for our
developer group.
Another consideration is the native look and feel options that are
available in a particular UI tool. In addition to a clean,
professional interface, we would like to be able to change
accessibility options (e.g. font sizes and typefaces), and allow
future internationalization of the interface, if necessary.
A particularly useful set of features include the ability to implement
multi-level 'undo' functionality, the ability to log and replay user
sessions, and create user macros. These would be invaluable to both
users for ease of use, customization, and training scenarios, and to
developers to help debug user sessions.
Another key consideration is in which programming language the UI will
be written. The language needs to facilitate building compound
widgets in a clean, convenient, and reusable fashion. One strong
advantage of an interpreted language over a compiled language is that
UI changes can be made, reloaded, and viewed at runtime, instead of
needing to recompile and restart the program.
The language also needs to allow clean coupling between the 2D user
interface and the 3D user interface. It would be optimal to be able
to leverage ongoing efforts to simplify the amount of code rewriting
that will need to take place in this domain. In addition, there needs
to be clean, efficient event management between the 2D and 3D UIs.
\subsection{Services Offered}
Slicer needs to offer a variety of services. Our data model and API
for scene description is the MRML (Medical Reality Modeling Language)
format. In addition to MRML, there is also non-scene program state,
which includes program options, window and UI preferences and state,
etc.
Slicer also offers asynchronous event handling, which allows for
external program execution, multi-user interaction, and tracking of
external devices, such as probes.
Slicer also has data interfaces, including virtual file systems, local
caches, and interfaces to databases and other external programs.
\subsection{Licensing Requirements}
Currently, Slicer2 and many of its associated technologies are
distributed under different licenses. A key goal for Slicer3 is to
determine which licenses are compatible with furthering the goals of
NA-MIC and the NIH.
The NIH, in soliciting proposals for the program that funds NA-MIC,
stated their general goals for software licenses:
``...NIH does have goals for software dissemination...''
``...software should be freely available...''
``...permit the commercialization of enhanced or customized
versions...''
``...include the ability of researchers outside the center and its
collaborating projects to modify the source code and to share
modifications...''
%\cite{NIHlink}
There has been much discussion about which software licenses are
licenses are compatible with the goals of the NIH as intepreted by
NA-MIC investigators. After this review, the policy of NA-MIC is that
BSD or MIT-style licenses are preferred for NA-MIC software because
they place the fewest restrictions on users and are compatibile with
commercialization in the predominant style of the medical imaging
community. Also acceptable but not preferred are licenses of the type
used by FLTK and wxWidgets which are LGPL but with an explicit
exception to allow distribution of statically linked executables in
binary-only form.
Importantly, NA-MIC will not accept code licensed under the GPL or
LGPL licenses. This policy is motivated by the desire to encourage
widespread adoption of the NA-MIC software infrastructure by both
academic and commercial entities. Unlike many IT applications,
medical software must have regulatory approval by the FDA (or their
international counterparts) in order to become a clinical standard of
care. At present, closed source business models dominate the clinical
computing field, and therefore ``viral'' licenses like GPL and LGPL
have been determined to be incompatible with the goal of encouraging
widespread adoption. ``Viral'' is a term that is used to describe
licenses that have terms such that all derived works must in turn be
distributed under a license that is defined by the authors of the
original software (i.e., all derived works of code licensed under the
GPL must also be licensed under the GPL). Note that this restriction
applies only to software that NA-MIC will be distributing itself;
end-users and application developers are free to use NA-MIC code as
components in applications that are distriuted under viral licenses.
\subsubsection{Licensing Status of Existing Software}
Slicer versions starting with 2.0 are copyright BWH (previous versions
were copyright MIT, but the institutions executed a transfer of
copyright ownership to reflect the fact that BWH had increasingly
become the ``home'' of Slicer development). As part of the new
license, BWH legal staff required a ``non-clinical'' clause to
minimize liability for code released to the community. Discussions are
ongoing between NA-MIC investigators and BWH officials to find the
best way to meet NIH goals for open development while protecting BWH
from liability.
ITK was developed under contract to the National Library of Medicine
at NIH. The contract explicitly stated that data and software were to
be publically available. Early in the project it was decided to
assign copyright to the non-profit Insight Software Consortium (ISC),
an educational corporation organized to promote the use and
dissemination of open source software. ISC may also hold IP (e.g.,
copyright, trademarks). Finally, ISC grants licenses under BSD. The
ISC is also designed as a legal shield for contributors of open source
software.
VTK was created as part of a textbook. The copyright was (and still
is) held by the three principal authors of the textbook (Schroeder,
Martin, Lorensen). These authors were employees of GE, but obtained
permission to create the book and VTK software. GE realized the
benefits of open source software and decided to contribute code
developed at GE R\&D to the VTK community. As a result, formal
documents were drawn up and a process was established to assign
copyright from GE to the VTK copyright holders. Thus far several dozen
classes have been contributed by GE to VTK.
\section{Specific Proposals}
\subsection{Data-centric Architecture Design}
As noted above, Slicer2 suffers from a lack of modularity and
insufficient abstraction between the base code and the modules, and
between the base code and the user interface. Part of the redesign of
Slicer3 will focus on increasing modularity, reusability, and
abstraction. In the context of NA-MIC, we also are increasing
modularity between the Cores. Figure~\ref{fig:sample} shows the
relationship of the NA-MIC Cores to the technical components of
Slicer3. The NA-MIC Algorithms Core will develop algorithms for the
analysis and visualization of medical image data. The Engineering
Core will establish software architectures and software processes that
will empower the Algorithms Core developers to create robust,
well-designed software and interfaces. Algorithms will be implemented
using ITK so they can be used both in Slicer and in other software.
ITKu is currently being developed as a command line interface to ITK
so that algorithms implemented using ITK can be used in a batch
processing fashion and take advantage of the computational resources
of the LONI pipeline.
VTK will be used to provide the visualization of the results generated
by the ITK code and to support interactive steering of algorithms.
The visualization code will be used by both Slicer3 as well as any
other non-Slicer VTK applications which want to use ITK algorithms.
Slicer3 provides a desktop application for end users, who use
computational tools for the quantitative analysis and visualization of
MRI, Diffusion Tensor Imaging (DTI) and fMRI, to further understanding
of brain abnormalities in schizophrenia and other brain diseases.
Slicer3 will be able to run with just the base code, with a subset of
all available Slicer modules, or with all Slicer modules, as the
researchers see fit. Developing modules so that they can be run
independently of the Slicer base code also allows batch processing of
module functionality.
\begin{figure}[tb]
\begin{center}
\begin{tabular}{ccc}
\includegraphics[height=10cm,width=13cm] {fig1}
\end{tabular}
\caption{
Relationships of Slicer3 technical components.
}
\label{fig:sample}
\end{center}
\end{figure}
%\begin{figure}[tb]
% \begin{center}
% % \begin{tabular}{ccc}
% \includegraphics[height=10cm,width=10cm] {slide}
% % \end{tabular}
% \caption{
% ppt slide
% }
% \label{fig:sample}
% \end{center}
%\end{figure}
\subsubsection{Code Structure Goal}
In Slicer3, we intend to redefine the definition of a Slicer module so
that each module can run as a stand alone library, a discrete testable
unit, an executable external to Slicer (i.e. through a script or at
the command line), and has the ability to reuse object-oriented module
functionality outside of Slicer. Each module in Slicer should be able
to run independently of other Slicer modules; with the Slicer Base
alone, or with a subset of available modules.
\subsubsection{MRML}
Currently, a Tcl script (Parse.tcl) handles MRML tree parsing. In
Slicer3, MRML will be a stand alone library for parsing, reading, and
writing MRML trees. The vtkMRMLTree class will read (parse) as well
as write MRML trees. A MRML node is an XML description of data on
disk or other scene information. A node handling mechanism will be
implemented so that each node will know about their children and
parents, and each node will receive a MRML version number from the
parser. Each node can construct itself based on a string from the
parser.
The MRML node code will be made available in a module directory.
There will be a separate CMake method to compile a single external
library for MRML use outside of slicer. Other possible MRML
extensions include more general hierarchies of attributes (like
transforms) to handle colors, etc. and a vtkMRMLTree manager objects
to crawl the MRML tree.
\subsubsection{MRML Data access}
The MRML tree is an in-memory representation of the XML file. In
Slicer3, all modules will edit the scene through MRML calls, and will
create and manage their own MRML nodes. Modules will be able to
access data from other modules only by going through the MRML tree.
MRML nodes will have a GetData function that returns a pointer to a
node-specific object type that can read and write the data. This will
replace the current use of Tcl lists of object IDs. Modules will take
a MRML tree as input. In the future, a module may take multiple trees
as input. Treating the module as an object will enable us to work
around our current limitation of only having one instance of a module
run at once.
\subsubsection{UI/Visualization}
Currently, the UI and visualization aspects of Slicer2 are closely
integrated with the data and scene description. In Slicer3, we hope
to separate the data/MRML layer from the UI and visualization layer.
To accomplish this, anything that will be persistent in MRML scene
description needs to be modified through methods in the MRML nodes.
For example, during image segmentation, any labelmap changes must
notify the corresponding MRML node that the object is unsaved through
a data dirty flag. When the MRML file is written, it can also write a
data file if needed.
By developing reusable widgets that interact with the MRML tree, we
hope to lessen the burden on the developer when writing new Slicer
modules.
\subsection{Possible UI Candidate Technologies}
\subsubsection{KWWidgets}
Kitware has developed KWWidgets for a number of years and used it as
part of their commercial VolView
%\cite{VolView}
product and their large open source ParaView
%\cite{ParaView}
project. KWWidgets runs on a wide variety of platforms, and has a
compatible open source license.
KWWidgets has a programming interface similar to that of VTK, which is
already familiar to many Slicer developers. The class structures are
clean, object-oriented, and usable directly from C++ programs. In
addition, the code is wrappable for use in Python, Tcl, or Java
programs.
Internally, KWWidgets uses Tk event management so it can co-exist with
the existing Slicer UI during transition from Slicer2 to Slicer 3.0.
ParaView currently has a KWWidgets-based ``trace'' mode to store GUI
interactions which facilitate batch testing and demos. We would like
to implement similar functionality in Slicer, and this code might be
partially reusable for this purpose.
Before and during the programming retreat in Boston, preparatory work
was completed to extract KWWidgets from Paraview/VTK dependencies, to
create a library build system, an application framework for testing,
and experimental compilation against the current cvs versions of VTK
and Slicer.
Work still to be done with KWWidgets includes gaining more practical
experience with KWWidgets usage and prototype development, as well as
collecting Slicer3 design requirements for NA-MIC custom widgets and
class hierarchy. In addition, we intend to develop a straw man
application framework based on KWWidgets and identify steps for
migrating current Slicer modules and functionality into the new
framework.
\subsubsection{Qt}
Qt is a user interface package which deserves consideration due to its
widespread international acceptance, and significant developer
familiarity. Qt is also currently available, so key features of the
GUI toolkit wouldn't need to be implemented before GUI development can
begin. However, without a per-developer license purchase, code
developed using Qt is GPL, which is problematic for reasons described
in section 3.4. While the purchase of per-developer Qt licenses would
provide a supported GUI toolkit with many of the benefits of
KWWidgets, we do not want to limit our base of potential developers to
only those who have the resources to maintain active developer license
to Qt.
\subsubsection{Other UI Options}
Other UI options that continue to be explored include Python
MegaWidgets, FLTK, and wxWidgets.
\subsection{Additional Technology Options}
\subsubsection{VTK 3D Widgets}
Another option considered for the Slicer3 UI is VTK 3D Widgets. The
community is actively implementing 3D widgets that allow interactive
data/object manipulation in the 3D environment (some of this work is
sponsored by Dr. Terry Yoo, NLM under A2D2 RFP). The community is
encouraging feedback for new widgets.
\subsubsection{Possible Large Data / Client Server Technologies}
An extension of the Slicer3 architecture could include large data and
client server technologies. One technology we would like to integrate
with Slicer is the LONI Pipeline, which would provide users with a
batch interface to large computational resources.
\subsubsection{ParaView Server Manager}
We would also like to interface ParaView technology with Slicer to
take advantage of its extremely large data handling capabilities in
distributed, parallel computing environments (demonstrated on petabyte
size data on 2048 processors at Los Alamos). Both the GUI and access
to VTK can be described (at run time) via XML. Implementing similar
functionality in Slicer would allow end users to work with much larger
and more complex data sets than they are currently able.
\subsubsection{Spatial Object Hierarchies and Visualizers}
We are experimenting with the idea of ITK spatial objects, and spatial
object visualizers.
%Previous work~\cite{Test2005} showed.
%Figure~\ref{fig:sample} demonstrates our new results.
%\begin{figure}[tb]
% \begin{center}
% \begin{tabular}{ccc}
% \includegraphics[height=1.2in,width=1cm] {fig1} &
% \includegraphics[height=1.2in,width=10mm] {fig2} &
% \includegraphics[height=1.2in,width=1in] {fig3}
% \end{tabular}
% \caption{
% Illustration of xxx.
% }
% \label{fig:sample}
% \end{center}
%\end{figure}
\section{Discussion}
\label{sec:discussion}
\subsection{Future Steps}
Design discussions about the Slicer3 architecture are ongoing. Slicer
developer's meetings, weekly teleconferences, the NA-MIC Wiki, Slicer
and NA-MIC mailing lists, and the January NA-MIC programming week are
all important venues for developers and users to keep up to date on
the process and give input.
As Slicer3 is developed, we intend to continue to release bug fixes
and minor feature enhancements to the Slicer2 user community, while
developing new functionality to be compatible with Slicer3.
Continuing NA-MIC workshops and dissemination events provide us with a
constant flow of feedback on Slicer2, as well as feature requests for
Slicer3.
\subsubsection{UI Bake-Off}
The next major design decision we intend to make is to decide on an
appropriate user interface tool for Slicer3. This will be decided in
a programmer's ``Bake-Off'', in which Slicer developers will each take
a UI technology such as python MegaWidgets and KWWidgets and design a
small mock up. The code and finished product will be presented to and
discussed by the rest of the Slicer developers, with attention paid to
ease of use, cleanliness, and reusability in order to choose the right
UI tool for Slicer3.
\section{Conclusion}
We are currently evaluating a diverse set of user and developer
requirements to facilitate development of an updated, more modular
version of the 3D Slicer software. Slicer3 is being developed by
building on the current strengths of Slicer2, while looking to the
future to anticipate user's needs. In association with NA-MIC, we
hope to gain a wider developer and user base, and provide a robust
open-source application to the medical and computer science
communities.
%\cite{Gering2001}\cite{NA-MIC.org}\cite{ProgWeekSlicer3.0}\cite{Core2Doc}\cite{KikinisIntro}\cite{ProgWeek}\cite{WikiMain}\cite{Licensing}\cite{LicensingInst}
\bibliographystyle{splncs}
%\bibliography{slicer3}
\end{document}