Internal:SlicerExtensions: Difference between revisions

From crtc.cs.odu.edu
Jump to navigation Jump to search
Angelos (talk | contribs)
Angelos (talk | contribs)
Line 13: Line 13:


== APBNRR Extension ==
== APBNRR Extension ==
Status: <span style="color:red">IMPLEMENTING SUPERBUILD</span>
Status: <span style="color:blue">DESIGNING</span>


I am currently in the process of implementing a SuperBuild system for automatic dependency compilation.
Due to the conflict of ITKDev and the ITK version of Slicer, creating a locally executable APBNRR module for Slicer is not conventionally possible.  


The core functionality will be carried out by two modules: a remote execution module and a local execution module.
But I have figured out another way to do this. I will create a scriptable Python 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 integration of the Python environment with Slicer, I can instantly display results, similarly to a standard external module.


The remote execution module will enable the user to execute my scripts for running APBNRR on Turing and later on an arbitrary cluster. Later on, the machine learning models that I have created will be used by this module for faster parameter optimization.
The skeleton of the intermediary module can also be used for the remote execution module, modified to communicate via SSH.
 
The local execution module will enable the user to run APBNRR from Slicer similarly to how the PBNRR extension works. The user will be able to provide their own custom parameters for APBNRR.
 
=== SuperBuild Checklist ===
 
* [<span style="color:green">DONE</span>] CMake 2.8.12.2
* [<span style="color:green">DONE</span>] ITKDev
* [<span style="color:green">DONE</span>] VTK 6.1.0
* [<span style="color:green">DONE</span>] Boost 1.58.0
* [<span style="color:green">DONE</span>] CGAL 4.0
* [<span style="color:green">DONE</span>] PAPI
* [<span style="color:green">DONE</span>] CBC3D
* [<span style="color:green">DONE</span>] PDM
* APBNRR Integration
 
[<span style="color:red">MAJOR INTEGRATION ISSUE</span>] ITKDev conflicts with the ITK version that Slicer uses, leading to a myriad of errors. This cannot be resolved.


=== Checklist ===
=== Checklist ===


* [<span style="color:green">DONE</span>] Generate initial extension files
* Create pre-compiled portable APBNRR executable.
* [<span style="color:green">DONE</span>] Implement initial local APBNRR module
* Implement intermediary "executor" Python scriptable module in Slicer for local execution of APBNRR
* Implement SuperBuild system to automatically compile dependencies
** Design U/I
* Finalize implementation of the local APBNRR module
** Implement logic
* Optimize dependencies for the local APBNRR module
* Implement intermediary "executor" Python scriptable module in Slicer for remote execution of APBNRR and parameter optimization (reuse local module skeleton)
** Design U/I
** Implement logic

Revision as of 22:45, 15 August 2018

PBNRR Extension

Repository: https://github.com/aangelos28/PBNRR


Status: UPLOADED


  • PBNRR running on the upcoming Slicer 4.9 release.
  • PBNRR running on the current Slicer 4.8.1 release (compiled with Qt 5 and VTK 9).

APBNRR Extension

Status: DESIGNING

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 scriptable Python 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 integration of the Python environment with Slicer, I can instantly display results, similarly to a standard external module.

The skeleton of the intermediary module can also be used for the remote execution module, modified to communicate via SSH.

Checklist

  • Create pre-compiled portable APBNRR executable.
  • Implement intermediary "executor" Python scriptable module in Slicer for local execution of APBNRR
    • Design U/I
    • Implement logic
  • Implement intermediary "executor" Python scriptable module in Slicer for remote execution of APBNRR and parameter optimization (reuse local module skeleton)
    • Design U/I
    • Implement logic