Internal:SlicerExtensions: Difference between revisions
| Line 17: | Line 17: | ||
Due to the conflict of ITKDev and the ITK version of Slicer, creating a locally executable APBNRR module for Slicer is not conventionally possible. | Due to the conflict of ITKDev and the ITK version of Slicer, creating a locally executable APBNRR module for Slicer is not conventionally possible. | ||
But I have figured out another way to do this. I will create a loadable C++ module for Slicer that will act as an intermediary between a portable (that statically links all dependencies) pre-compiled APBNRR executable. This will create the illusion that the user actually uses a traditional external module, which is not the case. The intermediary module will pass around data between the APBNRR executable and Slicer, and because of the deep | But I have figured out another way to do this. I will create a loadable C++ module for Slicer that will act as an intermediary between a portable (that statically links all dependencies) pre-compiled APBNRR executable. This will create the illusion that the user actually uses a traditional external module, which is not the case. The intermediary module will pass around data between the APBNRR executable and Slicer, and because of the deep control of a loadable module over Slicer, results can instantly be displayed. | ||
The skeleton of the intermediary module can also be reused for the remote execution module to save time, modified to accommodate remote execution and communicate via SSH. | The skeleton of the intermediary module can also be reused for the remote execution module to save time, modified to accommodate remote execution and communicate via SSH. | ||
Revision as of 20:09, 28 August 2018
PBNRR Extension
Repository: https://github.com/aangelos28/PBNRR
Status: UPLOADED
APBNRR Extension
Status: IMPLEMENTING LOCAL INTERMEDIARY MODULE LOGIC
Due to the conflict of ITKDev and the ITK version of Slicer, creating a locally executable APBNRR module for Slicer is not conventionally possible.
But I have figured out another way to do this. I will create a loadable C++ module for Slicer that will act as an intermediary between a portable (that statically links all dependencies) pre-compiled APBNRR executable. This will create the illusion that the user actually uses a traditional external module, which is not the case. The intermediary module will pass around data between the APBNRR executable and Slicer, and because of the deep control of a loadable module over Slicer, results can instantly be displayed.
The skeleton of the intermediary module can also be reused for the remote execution module to save time, modified to accommodate remote execution and communicate via SSH.
Checklist
- [DONE] Create pre-compiled portable APBNRR executable.
Statically Linked: ITK, VTK 6.1.0, BOOST 1.58.0, CGAL 4.0, PDM, CBC3D, GMP, MPFR Executable Size: 38 MB
Note: Full portability may not be possible due to some system libraries like LIBC. If there are errors, the user can compile APBNRR themselves and the intermediary module should still work using it. I later plan to utilize the SuperBuild scripts I developed for the earlier design in this portion to create an automatic build system for APBNRR.
- Implement intermediary "executor" loadable module in Slicer for local execution of APBNRR
- [DONE] Design UI
- [DONE] Implement UI
- [IN PROGRESS] Implement logic
- Test and debug
- Implement intermediary "executor" loadable module in Slicer for remote execution of APBNRR and parameter optimization (reuse local module skeleton)
- Design UI
- Implement UI
- Implement logic
- Test and debug
Local Intermediary Module
Local Intermediary Module Logic
- Successful initial run
- Design will work
Checklist
- [DONE] Implement external APBNRR execution from Slicer
- [DONE] Test external APBNRR execution
- Implement external APBNRR execution monitoring to pipe stdout to a Slicer window and detect when APBNRR has finished executing
- Implement automatic APBNRR output loading when APBNRR has finished
- Implement constraints to prevent multiple executions of APBNRR simultaneously, and add a way to terminate APBNRR on demand.
Local Intermediary Module UI
- Robust input validation via regular expressions and constraints
- Thread count limitation based on total threads available on running system
- Automatic file extensions for file dialogs
- Logical clustering of fields for easier memorization and emphasis
- Supports Slicer 4.8.x and 4.9





