I might have to explore that option then. Would it similar to the “Slicelets” mentioned in this post?
Then I should be able to make a standalone application that has the four up view and the segmentations/segment editor module. Is that possible? I’m familiar with basic coding but not too familiar with Python so I’m also wondering how feasible this would be for me to get set up.
Mybinder tightly restricts connections – for understandable reasons. There is a prototype extension called nbnovnc which facilitates VNC over a websocket within Jupyter. I have an updated dockerfile which integrates and launches that, but found out nbnovnc is incompatible with current pip versions of various dependencies (and doesn’t seem to be actively maintained). I haven’t had a chance to dig in and try to fix this yet (might be possible to just pin to older versions, but some discussion on their issue tracker suggested it was not so simple).
I think in most cases users want a desktop/client-side viewer. I don’t think binder+VNC would replace this need, especially considering PHI. Users of Slicer have been asking for a quick image viewer for as long as I can remember. I think it might be worthwhile to consider a slicelet or some other customization that would deliver such functionality.
Images would be pulled from a provided URL on the fly. For sensitive data or faster performance a local JupyterHub installation can be used, too (it’s been set up like that in Children’s Hospital of Philadelphia to allow researchers to use shared GPU cluster from Jupyter notebooks).
Desktop viewer is even simpler, as there is no need for setting up remote desktop.
For example, this script shows a this simplified user interface:
That SimpleView screenshot looks perfect for my needs. Could somebody please tell how to execute that SimpleView.py script. I believe that would be a great foundation for the simplified standalone program I am trying to create.
Program features:
Be able to toggle between four-up view, red,green, and yellow slice only views, 3D view, or split screen (i.e.: red and 3D, green and 3D, or yellow and 3D)
Be able to view segmentations that were previously done by another user (So if I created the segmentation in Slicer Nightly, then the user can view that same segmentation in the simplified Slicer)
Be able to edit segmentations if needed
Must be executable as a standalone program (ideally as a desktop application with no internet required)
To run it once, open Python console (Ctrl+3) and paste the code into the console.
To make Slicer always start up with this interface, edit your .slicerrc.py file (you can find its location shown in menu: Edit / Application settings / General / Application startup script).
@lassoan this simple view looks much less intimidating for the new users. However, starting it through command line kind of defeats the purpose (most new users wouldn’t know where to look at it).
Would you guys consider enabling this as the default layout after the installation ends. So like checkbox question. “Do you want to enable SimpleView layout of Slicer?” with a brief explanation of what it does and how to go find the modules and an option to disable it, if they want full layout?
In the past, we also discussed the idea where extension-specific or operation-specific functionality could be exposed as separate application launchers/shortcuts. Here is that thread for completeness: Customized application launchers. I still think that is a nice way to approach this problem.
I was able to incorporate the SimpleView script into the Application startup script and it works perfectly. Now the only issue is that the SimpleView launches every time I open Slicer. I downloaded both the Nightly and the Stable versions. Is there a way that I could have the Stable version use the SimpleView startup script and the Nightly version use the regular startup script?
You can put a version check in the script and only call showSimpleUserInterface(True) and createSimpleDataBrowser() if a specific version is found. For example:
if slicer.app.applicationVersion == '4.10.0':
showSimpleUserInterface(True)
createSimpleDataBrowser()