Giter Site home page Giter Site logo

kitwaremedical / vpaw Goto Github PK

View Code? Open in Web Editor NEW
2.0 12.0 5.0 519 KB

A surgical planning software system targeted to pediatric patients with airway obstruction.

Home Page: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5588666/

License: Other

CMake 12.84% C++ 18.30% Python 68.87%
3d-slicer-custom-application

vpaw's Introduction

VPAW by Kitware, Inc.

A Virtual Pediatric Airways Workbench (VPAW) is a patient-centered surgical planning software system targeted to pediatric patients with airway obstruction.

It aims to enable a full surgical planning pipeline for the evaluation of surgical outcomes. See [features][#Features] for more details.

This project contains the new generation of VPAW based on 3D Slicer and it was created using the Slicer Custom App Template.

This project is in active development and may change from version to version without notice.

Features

The project is being actively developed and our plan is to implement the following functionalities to enable users to express potential surgical treatment planning options for patients with airway obstruction.

A typical workflow will consist of the following steps:

  • Importing computed tomography (CT) DICOM images
  • Segmenting the airway (as described by Hong et al 1)
  • Interactive 3D editing of airway geometries leveraging integration of 3D pointing devices such as 3D Systems Touch through the OpenHaptics interface
  • Creating input files for offline geometric analysis and Computational fluid dynamics (CFD) simulations

Maintainers

History

The initial version of this project was developed between 2010 and 2015 in the context of supporting predictive modeling for treatment of upper airway obstruction in young children, the project as well as the team involved are respectively described and acknowledged in the referenced publication.

In 2022, the development of the next generation of VPAW based on 3D Slicer was initiated.

Acknowledgment

We gratefully acknowledge support from National Heart, Lung, and Blood Institute (NIH/NHLBI grant nos: 5R01HL105241 and 5R01HL154429), and National Health Institute of Dental and Craniofacial Research (NIH/NHIDC grant no: R43DE024334).

License

This software is licensed under the terms of the Apache License Version 2.0.

How to cite ?

Quammen CW, Taylor RM 2nd, Krajcevski P, Mitran S, Enquobahrie A, Superfine R, Davis B, Davis S, Zdanski C. The Virtual Pediatric Airways Workbench. Stud Health Technol Inform. 2016;220:295-300. PMID: 27046595; PMCID: PMC5588666.

Footnotes

  1. See section 2.1 of Hong Y, Niethammer M, Andruejol J, Kimbell JS, Pitkin E, Superfine R, Davis S, Zdanski CJ, Davis B. A pediatric airway atlas and its application in subglottic stenosis. Proc IEEE Int Symp Biomed Imaging. 2013 Apr;2013:1206-1209. doi: 10.1109/ISBI.2013.6556697. PMID: 26929791; PMCID: PMC4769591.

vpaw's People

Contributors

andinet avatar ebrahimebrahim avatar jadh4v avatar jcfr avatar leengit avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vpaw's Issues

ENH: VPAW Visualize and `qt.QSettings`

The VPAW Model module was recently updated to store form field values via qt.QSettings() so that the form field values are application-wide, not scene-specific, and will be re-populated when the VPAW application is restarted. Consider doing the same for one or more form fields in the VPAW Visualize module. Also, for the form field(s) that are duplicated between the two modules (e.g., the data directory) consider whether they should be forced to be equal vs. stored and re-populated independently.

visualize centerline and laplace solution isosurfaces

The VPAWVisualize module should have functionality to visualize the p3 files generated by the pediatric_airway_atlas pipelines.

These would be files with the following name pattern:

./transformed_landmarks/*_LANDMARKS.p3
./areas/*_AREAS.p3
./processed_areas/*_AREAS.p3
./interpolated_areas/*_AREAS.p3
./processed_centerline/*_CENTERLINE.p3
./centerline/*_CENTERLINE.p3

UPDATE: See comment below for the suggested visualization to create here.

vpaw debug build fails on g3logger install step

Description

vpaw debug build fails on g3logger install step

Performing install step for 'g3log'
Error copying file "D:/b/VPAWD22/g3log-build/Debug/g3loggerd.lib" to "D:/b/VPAWD22/g3log-install/lib/g3loggerd.lib"

Install step of 'g3log' expects the built library file to be g3loggerd.lib in debug mode, but it is created as g3logger.lib

DOC: update readme

Now that VPAWVisualize and VPAWModel exist, the readme should be updated to indicate what they do and how to get set up with using them. The README should mention the dependence of VPAWModel on pediatric_airway_atlas so that this project can be rightly ignored by any passer-by who does not have access to that particular private research code.

Establish versioning convention

This GitHub issue is to provide a forum to discuss: to maintain maximum compatibility with 3D Slicer conventions, how and when do we want to update VPAW's application version numbers and GitHub releases and tags?

DOC: Tell user about the run time of the `pediatric_airway_atlas` pipeline

The user may be asked by VPAW (specifically, the underlying 3D Slicer) to choose between Wait and Force Quit during a long pediatric_airway_atlas pipeline run and this may be confusing. To reduce the confusion we might choose one or more among

  1. Raise an info dialogue when the user hits "run" that says "this may take a while, please let the program do its thing" and have the dialogue have a checkbox to not show it again.
  2. Update the web-page documentation to indicate "be aware that this can take a while, just let it do its thing"
  3. Dump the console output from pediatric_airway_atlas into a QTextEdit so that the user sees that something is happening and also sees whatever errors might be generated by the pipeline.

Credit to @ebrahimebrahim for formulating most of the issue text.

Updating Slicer and iMSTK versions

VPAW is currently using an older version of Slicer and iMSTK in the SlicerIMSTK module. We want to update this to the latest versions of both libraries to stay in sync with these libraries

ENH: Add vpaw_USE_IMSTK as cmake flag

As suggested at #33 (comment) by @jcfr (see "Pull Request 1"), we can support including SlicerIMSTK optionally by adding a cmake flag to indicate inclusion.

In Pull Request #33, we removed SlicerIMSTK because it would not build under Microsoft Windows due to a C++ version issue: 3D Slicer wants C++17 but IMSTK wants C++14. Unfortunately, that fix disables inclusion of IMSTK on other operating systems too. With the present issue implemented, the user can include or not include IMSTK as is best for the user.

DOC: Report more detail for pediatric_airway_atlas failures

Currently we report only that the computation in the pediatric_airway_atlas module failed, and give an error message that speculates what might have gone wrong. Instead, catch any errors or exceptions from pediatric_airway_atlas to give a more informative and definitive message.

Note that pediatric_airway_atlas is invoked via slicer.util._executePythonModule(...) rather than by direct Python call, so the detecting and reporting of exceptions may be somewhat non-trivial.

Add flythrough animation feature

We need a flythrough animation feature in VPAW. This is to aid in communicating aspects of a patient’s airway/anatomy to other clinicians. A flythrough path is defined by creating a set of keyframes that store camera poses. The camera poses are interpolated between keyframes to produce smooth camera movement along the camera path.

Task:

A standalone KeyFrameEditor module (or feature added to an existing module) for generating and exporting volume rendering animations. The module will provide a timeline and tracks allowing to save, edit and delete key frames associated with transfer function, ROI clipping box and camera position and orientation. Available keyframe interpolation functions will include ramp, exponential and bezier. Camera path will be represented by a curve annotation.

The plan is to distribute this feature as a standalone module as a Slicer extension or added to an existing module in Slicer core.

PS

Related modules to explore

  1. Sequence module ( https://slicer.readthedocs.io/en/latest/user_guide/modules/sequences.html )

  2. ScreenCapture module ( https://slicer.readthedocs.io/en/latest/user_guide/modules/screencapture.html )

  3. Endoscope module ( https://slicer.readthedocs.io/en/latest/user_guide/modules/endoscopy.html)

  4. SlicerMorph Animator module (Animator:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.