Difference between revisions of "2015 Winter Project Week:OpenAtlas"
MarchingGuy (talk | contribs) |
MarchingGuy (talk | contribs) |
||
(29 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
<gallery> | <gallery> | ||
Image:PW-2015SLC.png|[[2015_Winter_Project_Week#Projects|Projects List]] | Image:PW-2015SLC.png|[[2015_Winter_Project_Week#Projects|Projects List]] | ||
+ | Image:OpenAtlas_SPLAtlas.png|SPL Brain Atlas | ||
Image:OpenAtlas_Adjacencies.png|Adjacency display for ''corpus callosum'' | Image:OpenAtlas_Adjacencies.png|Adjacency display for ''corpus callosum'' | ||
Image:OpenAtlas_Differences.png|Difference display for'' pons'' | Image:OpenAtlas_Differences.png|Difference display for'' pons'' | ||
+ | Image:OpenAtlas_Fiducials.png|Fiducial List for defects'' | ||
+ | Image:OpenAtlas_Fiducials_Navigation.png|Fiducial List navigation'' | ||
</gallery> | </gallery> | ||
Line 18: | Line 21: | ||
<h3>Approach, Plan</h3> | <h3>Approach, Plan</h3> | ||
Adapt extreme testing techniques used for software development to manage changes to anatomy atlases. | Adapt extreme testing techniques used for software development to manage changes to anatomy atlases. | ||
− | * Define procedures and policies to support atlas development | + | * Define procedures and policies to support community atlas development |
* Maintain a github repository to hold | * Maintain a github repository to hold | ||
** Image atlases | ** Image atlases | ||
Line 24: | Line 27: | ||
** Cube and STL models for anatomy structures | ** Cube and STL models for anatomy structures | ||
** Statistics for anatomy structures | ** Statistics for anatomy structures | ||
− | ** Displays of changes in | + | ** Displays of changes in structures |
** Displays of structure adjacencies | ** Displays of structure adjacencies | ||
* Create a CDash dashboard to track changes in the atlases | * Create a CDash dashboard to track changes in the atlases | ||
Line 39: | Line 42: | ||
* Establish an external data mechanism to keep the large binary files out of the repository. This will use the [http://www.cmake.org/cmake/help/v3.0/module/ExternalData.html?highlight=externaldata CMake ExternalData] techniques developed for VTK and ITK. | * Establish an external data mechanism to keep the large binary files out of the repository. This will use the [http://www.cmake.org/cmake/help/v3.0/module/ExternalData.html?highlight=externaldata CMake ExternalData] techniques developed for VTK and ITK. | ||
* Create a Superbuild option for VTK and ITK that will simplify configuring the required VTK and ITK toolkits. | * Create a Superbuild option for VTK and ITK that will simplify configuring the required VTK and ITK toolkits. | ||
+ | * Improve Slicer connectivity | ||
* Get feedback from stake holders (Ron, Mike Halle, Marianna Jakab) | * Get feedback from stake holders (Ron, Mike Halle, Marianna Jakab) | ||
</div> | </div> | ||
</div> | </div> | ||
+ | |||
+ | == Project Week Results == | ||
+ | === Tools === | ||
+ | Added tools to generate Slicer fiducial lists | ||
+ | === Repository === | ||
+ | Reorganized git repo. Split the tools from the atlas. There is now a separate [https://github.com/lorensen/SPLBrainAtlas github repo] for the SPLBrainAtlas. | ||
+ | |||
+ | === Slicer Connectivity === | ||
+ | Generate mrml scenes that contain a fiducial list for each anatomical object that has defects. | ||
+ | === Stakeholder Feedback === | ||
+ | Discussed workflow with Ron and Mike Halle. Future goal is to run the anatomy edit/build/test from within Slicer. | ||
== Background == | == Background == | ||
− | In December 2005, DARPA sponsored a ''Virtual Face'' workshop. The purpose of the workshop was to discuss | + | In December 2005, DARPA sponsored a ''Virtual Face'' workshop. The purpose of the workshop was to discuss approaches to create a DARPA program that would address facial trauma in soldiers returning from Iraq and Afghanistan. Rick Satava, DARPA Program Officer, brought together clinicians, bio-medical researchers and computer scientists to brainstorm on the requirements of such a project. |
At that time, GE Research was involved in another DARPA Program called [http://www.virtualsoldier.us/ "Virtual Soldier"]. GE's role was to support anatomy modelling and visualization for the project. Brigham and Women's SPL was a GE subcontractor. GE and BWH used the Visible Human segmented Thorax data as a base for modeling the chest of military combatants. A number of software tools were created to process this data. | At that time, GE Research was involved in another DARPA Program called [http://www.virtualsoldier.us/ "Virtual Soldier"]. GE's role was to support anatomy modelling and visualization for the project. Brigham and Women's SPL was a GE subcontractor. GE and BWH used the Visible Human segmented Thorax data as a base for modeling the chest of military combatants. A number of software tools were created to process this data. | ||
Line 81: | Line 96: | ||
*:For each label, warns if a label has more than one connected region. | *:For each label, warns if a label has more than one connected region. | ||
== Project Week Progress == | == Project Week Progress == | ||
− | * External Data | + | * External Data ''(0%)'' |
− | The project uses and creates many large binary files. They | + | *:The project uses and creates many large binary files. They bloat the checkout. CMake supports an external data mechanism that separates the large binary files from the main git repository. |
− | * Superbuild | + | * Superbuild ''(100%)'' |
− | A Superbuild | + | *:Open Atlas uses both VTK and ITK toolkits. A Superbuild for ITK and VTK will make it easier to configure. Also, taking advantage of the modularity in ITK and VTK, faster build times for the toolkits will be possible. |
− | * Pros | + | *:* Pros |
− | # Good for a non VTK/ITK expert | + | *:# Good for a non VTK/ITK expert |
− | # More stable since it builds the correct versions of VTK and ITK | + | *:# More stable since it builds the correct versions of VTK and ITK |
− | # Sets the proper options compatible with the Open Atlas tools. | + | *:# Sets the proper build options to be compatible with the Open Atlas tools. |
− | # Takes advantage of the VTK and ITK modularity, only building what the Open Atlas needs from the toolkits. | + | *:# Takes advantage of the VTK and ITK modularity, only building what the Open Atlas needs from the toolkits. |
− | * Cons | + | *:* Cons |
− | # Might duplicate disk space for sophisticated VTK/ITK developers | + | *:# Might duplicate disk space and limit experimenting for sophisticated VTK/ITK developers |
− | # Care must be taken to update the configuration when new VTK/ITK components are needed. | + | *:# Care must be taken to update the configuration when new VTK/ITK components are needed. |
− | * Stakeholder Feedback | + | * Improve Slicer connectivity (''50%'') |
− | This project has started with very little feedback from the customer. | + | *: Provide a mrml scene file to load atlas and generated cube models. |
+ | *:# Create a CMake configured mrml scene to load volume, labels and color tables (''100%''). | ||
+ | *:# Create a mrml scene that loads all cube and stl models with the proper colors (''100%'') | ||
+ | * Stakeholder Feedback ''(0%)'' | ||
+ | *:This project has started with very little feedback from the customer. | ||
+ | * Documentation ''(0%)'' | ||
+ | Create wiki documentation. | ||
+ | |||
+ | === Stakeholder Notes === | ||
+ | == Discussions with Jim and Steve == | ||
+ | * Define the workflow | ||
+ | # Dashboard reports errors in labels | ||
+ | # User selected label to edit | ||
+ | # User edits in Slicer | ||
+ | # User creates topic with label being edited | ||
+ | # User generates pull request | ||
+ | # Travis build initiated | ||
+ | # User looks at dashboard results | ||
+ | * Dashboard | ||
+ | ** Change Report | ||
+ | *** Report diffs with text and show diffs | ||
+ | ** Compile | ||
+ | *** Report per label with hyperlinks to statistics, stk and cuberille models | ||
+ | ** Run tests, one per label, report on a label basis | ||
+ | *** Multiple components | ||
+ | *** Left/right test | ||
+ | * Use github wiki to hold images and reports | ||
+ | * Generalize to population studies | ||
+ | * Integration with Slicer | ||
+ | ** One click pull request to Github / trigger travis | ||
+ | ** CLI for tools | ||
+ | * Create a Slicer CLI | ||
+ | * Use Travis factories on Github | ||
+ | ** git push can trigger travis builds | ||
+ | * Packaging | ||
+ | ** mrb, stl's, cuberille's | ||
+ | * Discussion on best way to store labels and edits to labels | ||
+ | |||
+ | == Future Work == | ||
+ | * Insight Journal Article describing the Open Atlas Project. | ||
+ | * Add more atlases | ||
+ | *: Adding additional atlases will help refine and generalize the process and software tools. | ||
+ | *: Candidates | ||
+ | *:# [https://www.spl.harvard.edu/publications/item/view/1953 SPL Knee Atlas] (underway) | ||
+ | *:# [http://www.loni.usc.edu/atlases/Atlas_Detail.php?atlas_id=5 ICBM Brain Atlas] (underway) | ||
+ | *:# NLM Visible Human Thorax | ||
+ | * Investigate using DICOM Segmentation files | ||
+ | * Create a slicelet that presents an editor only GUI | ||
+ | == Current Atlases == | ||
+ | These atlases have been processed by the Open Atlas tools. The summary pages show each labeled structure along with its neighbors. Also STL files are available for 3D printing. | ||
+ | * [https://github.com/lorensen/SPLBrainAtlas/wiki/Atlas-Summary SPL Brain Atlas] | ||
+ | * [https://github.com/lorensen/SPLHeadNeckAtlas/wiki/Atlas-Summary SPL Head and Neck Atlas] | ||
+ | * [https://github.com/lorensen/SPLKneeAtlas/wiki/Atlas-Summary SPL Knee Atlas] | ||
+ | * [https://github.com/lorensen/ICBMBrainAtlas/wiki/Atlas-Summary ICBM Brain Atlas] | ||
+ | * [https://github.com/lorensen/FreeSurferSampleAtlas/wiki/Atlas-Summary FreeSurfer Sample Atlas] |
Latest revision as of 20:38, 9 October 2015
Home < 2015 Winter Project Week:OpenAtlasKey Investigators
- Bill Lorensen (Noware)
Project Description
Objective
- Provide tools and techniques to support community-driven anatomy atlas editing and curating.
Approach, Plan
Adapt extreme testing techniques used for software development to manage changes to anatomy atlases.
- Define procedures and policies to support community atlas development
- Maintain a github repository to hold
- Image atlases
- Software tools to create models and check atlases for consistency
- Cube and STL models for anatomy structures
- Statistics for anatomy structures
- Displays of changes in structures
- Displays of structure adjacencies
- Create a CDash dashboard to track changes in the atlases
Progress
Before Project Week
- Pilot project atlas is the Neuro Image Analysis Center's Multi-modality MRI-based Atlas of the Brain
- Established a github repository
- Developed several tools and scripts to process the atlas
- Edited several structures with Slicer to exercise the tools
- Created a CDash dashboard
During Project Week
- Establish an external data mechanism to keep the large binary files out of the repository. This will use the CMake ExternalData techniques developed for VTK and ITK.
- Create a Superbuild option for VTK and ITK that will simplify configuring the required VTK and ITK toolkits.
- Improve Slicer connectivity
- Get feedback from stake holders (Ron, Mike Halle, Marianna Jakab)
Project Week Results
Tools
Added tools to generate Slicer fiducial lists
Repository
Reorganized git repo. Split the tools from the atlas. There is now a separate github repo for the SPLBrainAtlas.
Slicer Connectivity
Generate mrml scenes that contain a fiducial list for each anatomical object that has defects.
Stakeholder Feedback
Discussed workflow with Ron and Mike Halle. Future goal is to run the anatomy edit/build/test from within Slicer.
Background
In December 2005, DARPA sponsored a Virtual Face workshop. The purpose of the workshop was to discuss approaches to create a DARPA program that would address facial trauma in soldiers returning from Iraq and Afghanistan. Rick Satava, DARPA Program Officer, brought together clinicians, bio-medical researchers and computer scientists to brainstorm on the requirements of such a project.
At that time, GE Research was involved in another DARPA Program called "Virtual Soldier". GE's role was to support anatomy modelling and visualization for the project. Brigham and Women's SPL was a GE subcontractor. GE and BWH used the Visible Human segmented Thorax data as a base for modeling the chest of military combatants. A number of software tools were created to process this data.
After the Virtual Face Meeting, Bill Lorensen and Tim Kelliher, both from GE Research, brainstormed about creating a face atlas for the project. The meeting took place at the Rock Bottom Brewery in Arlington, VA. No facial atlas existed, but they came up with the notion of using the world community to create and maintain such an atlas. They would use an "Extreme Testing" approach that GE Research pioneered for VTK and ITK. The approach would adapt the nightly build/test dashboard techniques that GE had developed.
Unfortunately, the Virtual Face Program was never funded by DARPA.
In January 2007, Terry Yoo (the father of ITK) at the National Library of Medicine, held a workshop on future directions for NLM software initiatives. Lorensen presented a talk called "Community Driven Data Annotation/Curation" This talk synthesized many of the Kelliher/Lorensen notions.
Unfortunately, the program was never funded by NLM.
In 2007, Lorensen retired from GE Research and became an unpaid intern in BillsBasement@noware. Fighting the winter blues, he revived, modified and extended many of the original Virtual Soldier atlas processing tools. He applied these tools to the Brigham and Womens SPL Brain Atlas. Noware graciously provided funding and the Open Atlas project was born.
At last, the Open Atlas Program is funded by Noware!
Status
- Open Atlas Git Repository
- Software Tools
- Generates STL models for all labels in the atlas. Uses vtkDiscreteMarchingCubes to generate an initial surface and vtkWindowedSincPolyDataFilter with NonManifoldSmoothingOn(). The NonManifoldSmoothing prevents adjacent structures from overlapping. Browse here to see the STL models. Github renders most of the models.
- Generates a Cuberille model of each labelled structure. The program converts the point data labels to cell data. The resulting vtk models show each "label" without smoothing.
- Generates a table that shows all of the labels that touch a given label.
- Uses itkLabelStatisticsImageFilter to generate a variety of statistics for each label. Browse here to see examples of the statistics.
- For each label, creates screenshots of the model and the labels it touches. One view for the STL models and another for the Cuberille models. Here is the display for the right frontal pole Browse here to see the current screenshots.
- Given and old atlas and a new atlas, creates displays of each Cuberille model that has changed. Two views: one showing additions (in green) and deletions (in red), the other showing the modified model. Here are the differences in the pons after editing. Browse here to see all of the difference files.
- Given two atlases, reports the labels that have changed.
- For each label, warns if a label has more than one connected region.
Project Week Progress
- External Data (0%)
- The project uses and creates many large binary files. They bloat the checkout. CMake supports an external data mechanism that separates the large binary files from the main git repository.
- Superbuild (100%)
- Open Atlas uses both VTK and ITK toolkits. A Superbuild for ITK and VTK will make it easier to configure. Also, taking advantage of the modularity in ITK and VTK, faster build times for the toolkits will be possible.
- Pros
- Good for a non VTK/ITK expert
- More stable since it builds the correct versions of VTK and ITK
- Sets the proper build options to be compatible with the Open Atlas tools.
- Takes advantage of the VTK and ITK modularity, only building what the Open Atlas needs from the toolkits.
- Cons
- Might duplicate disk space and limit experimenting for sophisticated VTK/ITK developers
- Care must be taken to update the configuration when new VTK/ITK components are needed.
- Open Atlas uses both VTK and ITK toolkits. A Superbuild for ITK and VTK will make it easier to configure. Also, taking advantage of the modularity in ITK and VTK, faster build times for the toolkits will be possible.
- Improve Slicer connectivity (50%)
- Provide a mrml scene file to load atlas and generated cube models.
- Create a CMake configured mrml scene to load volume, labels and color tables (100%).
- Create a mrml scene that loads all cube and stl models with the proper colors (100%)
- Provide a mrml scene file to load atlas and generated cube models.
- Stakeholder Feedback (0%)
- This project has started with very little feedback from the customer.
- Documentation (0%)
Create wiki documentation.
Stakeholder Notes
Discussions with Jim and Steve
- Define the workflow
- Dashboard reports errors in labels
- User selected label to edit
- User edits in Slicer
- User creates topic with label being edited
- User generates pull request
- Travis build initiated
- User looks at dashboard results
- Dashboard
- Change Report
- Report diffs with text and show diffs
- Compile
- Report per label with hyperlinks to statistics, stk and cuberille models
- Run tests, one per label, report on a label basis
- Multiple components
- Left/right test
- Change Report
- Use github wiki to hold images and reports
- Generalize to population studies
- Integration with Slicer
- One click pull request to Github / trigger travis
- CLI for tools
- Create a Slicer CLI
- Use Travis factories on Github
- git push can trigger travis builds
- Packaging
- mrb, stl's, cuberille's
- Discussion on best way to store labels and edits to labels
Future Work
- Insight Journal Article describing the Open Atlas Project.
- Add more atlases
- Adding additional atlases will help refine and generalize the process and software tools.
- Candidates
- SPL Knee Atlas (underway)
- ICBM Brain Atlas (underway)
- NLM Visible Human Thorax
- Investigate using DICOM Segmentation files
- Create a slicelet that presents an editor only GUI
Current Atlases
These atlases have been processed by the Open Atlas tools. The summary pages show each labeled structure along with its neighbors. Also STL files are available for 3D printing.