SasView / sasview

Code for the SasView application.
BSD 3-Clause "New" or "Revised" License
48 stars 41 forks source link

Prevent too many plot windows from appearing by collecting all related plots as tabs. #1677

Open toqduj opened 3 years ago

toqduj commented 3 years ago

To avoid the Igor-Pro-esque tendency to splatter the workspace with plot windows, we could do the following: When a fit is completed and plots are going to be shown, show just one fit result window with tabs for each individual plot. The residuals plot could also reside as a subplot underneath the main fit plot as normally done in XRD...

Same for plots from batch fitting results...

rozyczko commented 3 years ago

Yes, this is something we thought of before and even made a ticket! https://jira.esss.lu.se/browse/SASVIEW-172 Good to see others think this solution is good - maybe we can prioritize it for the next release?

RichardHeenan commented 3 years ago

see also https://github.com/SasView/sasview/issues/1328

The current work around is to drag the "uninteresting" residuals or polydispersity N(R) plots off towards the edge of the screen (which in v5 now expands to accomodate them) rather than to minimise them. Of course the reason they pop up is that users ought to actually check they look OK.

If the user minimises a plot, if might help if it would actually stay minimised, rather than keep popping open at each new fit.

I have not personally tried batch fitting, but if three plots appear - I(Q), residuals and N(R) - for each fit then it will be annoying, so putting them on tabs would be worth exploring.

RichardHeenan commented 3 years ago

The default plot window size seems too large for the number of pixels on the screens that I normally use, could we make them smaller please? How is the default plot size determined? could it be say ~ 25% of the vertical pixels on the screen or window being used or would that casue issues with the font sizes?

Also I would like to drag the "data explorer" panel smaller still to gain more screen space. OK I can float it off, then drag it smaller, or close it to hide it altogether (then use "view" drop down to get it back).

toqduj commented 2 years ago

After discussion with @rozyczko, Here's a mockup of what we would suggest to keep the splattering of windows to a minimum. A "report" tab could also be added. Lastly, I'm a fan of having a residuals plot with a 1/3rd height underneath the data&fit plot, but maybe that's just me. Screen Shot 2022-01-28 at 8 59 29

smk78 commented 2 years ago

So I've recently been preparing material for a training course in which I specifically wanted to be able to screen capture the SasView window showing the FitPage, the Data/Fit, the Residuals, and the Polydispersities. Thus I would be happy with this suggestion as a general use default provided there was a simple way to undock, move around, and resize, the individual windows as at present. (And, ideally, there would then be a simple way to tab everything back again!). Is that possible?

As for having the 1/3 height residuals plot underneath the Data/Fit, again, could it be optional? A little checkbox on the Data/Fit plot, for example?

butlerpd commented 2 years ago

I agree with @toqduj on both the tabs and the residuals. Residuals never made much sense to me in a separate plot and that is not how they are traditionally done. IMO you want to see it exactly under the data on the same x scale. The question of what options should be available (turning on/off and or undocking tabs) is a separate discussion. We do for example have an option for turning error bars on and off and or grid lines on or off.

But I think we need to think carefully about what options to present and how to do so lest we try to provide everything all the time and in the end just confuse everybody. I have not thought carefully about the options proposed by @smk78 so not prepared to provide an opinion at this time

However, I believe that @krzywon has been working on this as a backburner project and already has code to do this as well? Is that correct? Does this mean that you have resources to work on this project @toqduj? Are we at a point where we should get a small working group meeting organized for this project?

krzywon commented 2 years ago

@butlerpd, I never got very far with it. I have a Qt file somewhere that has a tabbed structure similar to the mock-up by @toqduj. I never had anything linking the Qt file to SasView but was researching the way forward.

toqduj commented 2 years ago

I don't know about Qt, but flexibility in the sense that @smk78 is talking about that would match all our needs sounds similar to what is done in the Eclipse framework (see the DAWN software, for example). There, you are free to rearrange panels and windows to your heart's content, creating a single window with many tabs, or dragging them to all independent locations.

No idea if such flexibility is easily supported by Qt. Perhaps @timsnow knows?

Alternatively, @smk78 would a "report"-tab with a grid layout of parameters and plots make sense?

rozyczko commented 2 years ago

At some point I made a proof of concept (Python/Qt) allowing multitab chart container with detachable/re-attachable tabs, similar to how you can rearrange browser tabs. This seemed to work, so maybe the idea isn't that far fetched.

butlerpd commented 2 years ago

While we are talking tabs, DREAM provides a number of plots about the fit and many people would like to see some information from LM -- could we collect these all into the tabs. I think that idea was discussed once at a code camp maybe? but given the revival of discussion on this issue seems appropriate to put it out there now?

rozyczko commented 2 years ago

I don't think Bumps provides any charts for LM? DREAM plots are, of course, nicely tabulated already.

butlerpd commented 2 years ago

I believe that is true regarding LM, but SasView could take the information returned (assuming BUMPS returns stuff like the Jacobian?) and present what users ask for (I've heard some requests but cannot remember them at the moment).

The DREAM plots are nicely tabulated BUT only for the fitpage that performed the latest fit... and then gets overwritten by the next fitpage fit. My thinking was that collecting all these plot bits that relate to a single fitpage into a single tabbed plot would have lots of advantages not only in cleaning up the space but for keeping track of what belongs to what, visually AND programmatically? and not losing stuff that gets overwritten?

rozyczko commented 2 years ago

collecting all these plot bits that relate to a single fitpage into a single tabbed plot would have lots of advantages not only in cleaning up the space but for keeping track of what belongs to what,

This indeed would be great for keeping things in sync between the charts and the data managers easy. Both code wise and user experience wise.

toqduj commented 2 years ago

Just thinking aloud here:

Sounds like instead of a single panel with x fitpages in it, it might make sense to rearrange to have a sort of workflow for the user. Normally, a user would go through:

  1. data (or data series) loading and visualisation (for checking it's been loaded correctly)
  2. model selection and set-up (fitpage)
  3. initial parameter optimization (scaling, background, radius)
  4. fit check
  5. secondary parameter optimization (polydispersity, structure factor)
  6. fit check
  7. final DREAM optimization (for prettiness)
  8. reporting, fit and parameter export

ideally, this would be in an interface that helps guide the user from step 1 to 8. Also, ideally each of these steps should be saved in a trace so that an analysis can be completely replicated.

With that in mind, it might make sense to have a fitpage together with the associated data and fit plots in a single tabbed panel, rather than all fitpages together and the results floating around independently.