IGSTK: A State Machine Architecture for an Open Source Software Toolkit for Image-Guided Surgery Applications

Please use this identifier to cite or link to this publication: http://hdl.handle.net/1926/31
The Image-Guided Surgery Toolkit (IGSTK) is an Open Source software project being developed under NIH/NIBIB funding. The toolkit will provide a common platform for implementing image-guided surgery applications and for fostering research in the field. The toolkit is based on several other open source toolkits including ITK, VTK and FLTK. Its architecture is based on the use of medium size classes, each one of them containing an explicit State Machine and a minimized API that enforces fault tolerance by design. This paper describes the architecture and its rationale.
Data
minus 1 File (66Kb)
Code
There is no code review at this time.

Reviews
minus "Saftey-by-design" for image-guided surgery by means of state-machines by Ivo Wolf on 09-15-2005 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 5
yellow
Summary:
The architecture of a new toolkit (beta version available) for image-guided surgery and rationale of its design concepts are described. The key goal of the toolkit is to provide “safety-by-design”, thus to ensure (or support) robustness of image-guided surgery applications by means of adhering to the toolkits design specifications. A key concept (also mentioned in the paper’s title) to achieve this goal is the use of state machines.

Hypothesis:
Only partially applicable: An implicit hypothesis of the paper is that safety-by-design is possible and state machines are suitable to achieve safety-by-design.

Evidence:
Only partially applicable: Evidence for the hypothesis can not be expected until the toolkit has been used for real-life image-guided surgery scenarios.

Open Science:
A real open science project, everything is publicly available via the web-addresses mentioned in the article.

Reproducibility:
I did download, compile and run the code, but not recently (several months ago). It worked nicely that time.

Use of Open Source Software:
Several open source software are used: ITK, VTK, FLTK.
Advantages or disadvantages or advice for future users of these toolkits are not described.

Open Source Contributions:
The toolkit is open source and in beta stage. If the goal is achieved, it probably will be very useful.

Code Quality:
The well proven software process of Kitware is used, even with the goal of 100% testing.

Applicability to other problems:
The focus of the toolkit is clearly image-guided surgery. It is explicitly stated that only a very restrictive API is being provided to ensure as high a safety level as possible.

Suggestions for future work:
Personal opinion: I like the idea of using explicit state machines (not surprisingly, as we use them also in MITK, although with a different focus). I would be interested in how much they support the “safety-by-design” goal, thus would be looking forward to a paper addressing this issue. Be evil, try to do as bad a thing as you can and demonstrate how the state machines stop you from doing this.

Requests for additional information from authors:
none

Additional Comments:
Personally I do not expect that all bad things can be avoided by the state machine mechanism, but that it will be very useful for testing – not only of the toolkit, but also of the application written using the toolkit, as required by the FDA.
minus Great idea and execution, Waiting for first clinical application later this year... by Tina Kapur on 09-15-2005 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 5
yellow
Summary:
This submission is a software toolkit for building Image-Guided Surgery (IGS) applications, and the companion paper describes the state machine abstraction used in the design of the toolkit. The toolkit is written in C++ and builds upon other three other open source toolkits, ITK (for image representation and processing), VTK (for visualization), and FLTK (for user interface).

This review consisted of using the instructions in the paper to download the sources and compile the toolkit (under Cygwin on a Windows XP on a Sony Viao S260 laptop with Intel 1.7Gz/512 MB Ram), running the examples, reading technical discussions that have been captured on the IGSTK wiki, joining the mailing list and participating in discussions there, and examining the source code.

Significance
I think that the creation of IGSTK is very timely. Unlike the scenario of 5-10years ago, when the technology involved in building IGS platforms was novel enough that various research labs created in-house prototypes and used those to perform scientific research, the IGS landscape today is much more mature with several companies building systems and over a thousand hospitals using these commercial systems on a routine basis. This migration of IGS systems into the commercial domain has created somewhat of a logistical void between the research and commercial worlds; Building the software and hardware for such systems from scratch no longer belongs in the research domain but at the same time companies in the area have not yet published interfaces that would allow researchers to easily test their applications/algorithms in a clinical context. I expect IGSTK to be most relevant for researchers who are seeking a software platform on which to add their contributions (such as improvements to the accuracy of a registration algorithm, a novel segmentation algorithm, a novel clinical workflow etc.) without first having to build the platform.

Hypothesis
I would say that there are three underlying hypotheses in this work: (1) a toolkit is needed for IGS (b) open source is a good way to do it and (c) state machines are a good abstraction for the components of such a toolkit.

Evidence
On need and open source: I think that there is general agreement in the field that such a toolkit would be useful and that it's existence could allow researchers to focus on creating novel algorithms and clinical applications. The benefits of open source are well known and hence the argument for an open source version of the toolkit, but I can also see another scenario (with its own overhead, no doubt) that would achieve similar impact in which established IGS companies would provide APIs that would allow researchers to add applications to their existing hardware and software platforms. In fact, IGS companies have considered this options for a while and perhaps the existence of IGSTK will accelerate that process and allow researchers to have multiple options. The benefit of the API would be the availability of both the hardware and the software, while the benefit of the open source software toolkit is that one doesn't need to deal with any commercial entities.

On State Machines: The major components of the toolkit (viewers, spatial objects, tracker, logger) are modeled explicitly as state machines with well defined states and transitions. I think that the tracker component is particularly well suited to this abstraction because it models a device with a few clearly defined states and transitions. The use of the abstraction made the code of the tracker classes very simple to follow. I couldn't see the immediate benefit (or hazard) of using the same abstraction for the other components, for which I have seen non state-machine based implementations that do the job just fine. In any case, the motivation for using state machines is to potentially facilitate comprehensive testing, which is a good thing. For the interested reader, an active discussion is ongoing in the group via the mailing list and the wiki pages about how best to utilize hierarchical state machines in the toolkit.

Misc Points on Open Source/Useability/Code/Practices for Potential Users
- http://www.igstk.org is the best place to get the latest information about the toolkit. and is actively updated.
- Good engineering practices (revision control, nightly builds, error monitoring via dashboards, active mailing lists, reasonable coding style,code reviews, documentation, wiki discussions) are all followed in the project which means that if you start using this toolkit, you will inherit a community that will answer your questions at the very least, and probably also help you move forward in your work.
-Even if you are not interested in using the entire toolkit, some of the components such as the Tracker and the SpatialObjects can be used independently. The tracker component allows easy intergration of different trackers (NDI trackers are currently supported) and also has a very useful simulation mode to allow testing/demo without a physical tracker.
-The learning curve for users who are not familiar with the VTK and ITK worlds will be steep. For example, I don't use cmake in my daily life, so I always spend the bulk of my installation cycles reminding myself on how to use it.
-Some installation notes: I started with the iteration-2 tag, but quickly moved to the cvs head to take advantage of the additional bug fixes and features. If you are using Tortoise on Windows to interface to cvs (like I do), ensure that the tags are set correctly when you decide to move from the iteration-# tag to the head. I also had to comment out a line in the file igstkImageSpatialObjectRepresentation.cxx (line 170 in v1.1. of the file) to be able to compile. I figured I'd revisit it if I was missing any functionality in the examples, but didn't seem to.
-The developer mailing list is quite active and the IGSTK team is very responsive to outside questions/input. If you are considering using this toolkit down the road, you might find it beneficial to get involved with the group now and share your use-cases with them.
- The tool is a work in progress, as are the example programs available with it. The team plans to release a clinically realistic application example this year, which should showcase more of its functionality.

Overall
I am giving this paper a 4 rating because it satisfies all the criteria of good open source in terms of mechanics, and I also think that the end result will be useful to the field and the current state of the work shows every indication that it will get there within the year. For folks who are interested in checking it out right now, my suggestion is that the time you will spend getting a working copy of the toolkit on your machine will be worthile if you are a developer and would like to be an informed participant in the discussions that are shaping the toolkit. If your interest is to use the toolkit to build your own application, I would recommend waiting until the first clinical tracking application is released later this year.
minus IGSTK by Leila Baghdadi on 09-13-2005 for revision #1
starstarstarstarstar expertise: 2 sensitivity: 5
yellow
Summary:
[This paper describes tracking systems for surgical procedures. I think the effort for a proper design before development is the most impressive as I have not rpesonally used the code.]

Hypothesis:
[Not Applicable]

Evidence:
[Although the authors have provided urls to support their claim, no example was given in the actual paper. ]

Open Science:
[Once again, there was no specific example in the paper but judging by list of authors I am sure there is proof for all claims made in the paper.]

Reproducibility:
[Not applicable]

Use of Open Source Software:
[The use of ITK , VTK and FLTK guarantees the use of open source software.]

Open Source Contributions:
[URLs for software and instructions for use was provided.]

Code Quality:
[Not applicable]

Applicability to other problems:
[This paper describes a specific tool for surgey so I do not believe it is applicable to everyone's research. However, the design methods and the use of state machines for determining the state of each class can possibly be applied to alot of research probelms.]

Suggestions for future work:
[Not Applicable]

Requests for additional information from authors:
[Not Applicable]

Additional Comments:
[Not Applicable]
Add a new review
Quick Comments


Resources
backyellow
Download All

Statistics more
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating:
Paper Quality: plus minus

Information more
backyellow
Keywords: Image Guided Surgery, State Machines, Mission Critical Applications, Open Source Software
Export citation:

Share
backyellow
Share

Linked Publications more
backyellow
Parallel algorithms for erosion and dilation of label images. Parallel algorithms for erosion and dilation of label images.
by Beare R., Jackway P.
Multidimensional Arrays and the nArray Package Multidimensional Arrays and the nArray Package
by Sadowsky O., Li D., Deguet A., Kazanzides P.

View license
Loading license...

Send a message to the author
main_flat
ISSN 2327-770X
Powered by Midas