Make Slicer simpler to use for new users

My point of view as a user : it is simple enough.

This a very powerful application with a modular design to do tens of kinds of jobs. It is for users who want to invest time and effort to master it. They are not expected to master everything; I don’t master everything in Slicer for instance. But most users I know have the Windows-borne expectations : the application must know what they want to do before they move the mouse.

My opinion is that you would waste much developer’s time trying to accomodate such expectations. You’ll next find users who will still want it to be, not simpler, but as they wish it to be some day, and another way some other day.

Just my 2 cents.

Cheers.

1 Like

I respectfully disagree.

It is not really so much about what users want now and they would want something else tomorrow. It is about identifying common issues that frustrate novice users who give Slicer a try before moving into something else.

Blender has always been like that to me. I always thought making a model spin around freely and capture its animation shouldn’t be this hard. That’s all I want to do in it. But because it is so hard, I never saw value in spending that much time investing on a single simple task. Have I done that, I would probably be using Blender for quite a bit of interesting scientific animations.

Slicer has been that way to me (and the people I train). I might be wrong but, I wouldn’t be surprised if 95% of the people is using 1% of the functionality of Slicer. The challenge is identifying that 1%, and making it easier so that we retain users, who see value in investing more time in more complex things. To me that basis has always been the core visualization and segmentation capabilities. Fixing common pitfalls for new users seems like a valuable use of time and a good way to keep project funded.

1 Like

I actually agree with both of you. I agree with @chir.set because I don’t think we need a “SimpleSlicer” and a regular Slicer to keep novice users happy, but it can be achieved with reasonable time investment. And I agree with you that we should strive to simplify the most trodden paths in Slicer even if the whole thing is extremely complex.

  • Create two different applications ? Or have theme like Blender ? Simple vs Advanced

I am with the theme idea. Many radiologists used to use tools similar to Horos. It would be nice if we have a theme that creates a similar navigation functionality.

I am new here. but I was fascinated by 3Dslicer. I am eager to learn how to use it, but there are few videos to learn this powerful tool. nice to see you.

I’ll copy below posts from another topic that ended up discussing simple Slicer user interface.

You can start Slicer with a script that hides all user interface elements that you don’t need. Maybe it could be then considered as a “simple DICOM viewer”. You can also run it in a docker container and make it available in a web browser (you then don’t even need to install anything).

@ihnorton How difficult would it be to make VNC access available for Slicer running using binder? Slicer could then work pretty well as a web-based DICOM viewer.

1 Like

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:

Simplifications:

  • Hide module panel - show a subject hierarchy tree instead
  • Hide push-pin icon in slice views (volumes can be shown/hidden using the data tree)
  • Toolbars are hidden (they can be re-enabled using menu)
2 Likes

The nice part is that any simple viewer setup that works well on the desktop is also usable in the docker/novnc environment.

1 Like

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:

  1. 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)
  2. 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)
  3. Be able to edit segmentations if needed
  4. Must be executable as a standalone program (ideally as a desktop application with no internet required)

Any suggestions or advice are much appreciated.

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).

1 Like

I’ve added a few layout switch buttons above the data tree:

image

1 Like

@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?

2 Likes

At this point, this script is more like an experiment to see what is that people find intimidating in the current GUI.

Should we hide most of the toolbars? Should we start up with the Data module? Should we simplify viewer controls?

It may be also a useful to make this data tree widget available in addition to module panel (as you can already do it):

image

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()
1 Like