Feature #1653

Updated by herck about 4 years ago

Given issue contains a collection of user requests, observations discovered during Hamburg/Munich BornAgain tutorials in November. We can collect them here, discuss priorities and then form the list of normal issues.

h3. Issues reported by the users.

h5. Provide a way to save fitted image into the file.

In FitView there is no any button (or right mouse click action) to save fitted image into the file.

h5. Implement platform independent crash handler.

There were quite some number of GUI's crashes (about 10-20 per 8 hours of tutorials). Our observation, is that users do not complain even in the course of tutorial and simply restart the application. The crash handler is required to show the stack trace and provide the button "Send report".

h5. Implement "Restore unsaved project" in the case of crashed GUI.

The simplest possibility is to save the project every few minutes into Untitled.pro.back file.

h5. Provide unddo/redo functionality.

This can be done first for sample construction. I think that we have to implement the full fledged "Command" pattern. This is not that complicated, since amount of actions we do with the model is not that high.

Commands: InsertItem, RemoveItem, SetItemProperty.
Every command will keep the pointer to the subject (SessionItem, the QVariant to change) and provide unndo functionality.

h5. Improve drag-and-drop construction of a MultiLayer.

Many users have been experiencing problems while dropping Layer on top of a MultiLayer. It will be already good to increase size of areas around a MultiLayer, were such drop is allowed.

h5. Provide the way to set external boolean map with masks to the detector plane.

User might already have a 2D map of booleans with masked detector channels.

h3. Issues discovered during tutorial preparation.

h5. plot_utils.py doesn't work from ipython notebook

ba.plot_intensity_data(result) doesn't generate any embedded image when used from ipython notebook

h5. Revise IParameterized::printParameters and similar

* std output generated by IParameterized::printParameters doesn't appear in ipython notebook
* all std::cout usage in BornAgain should be revised and replaced with functions returning std::string
** Rename ISample::to_str to ISample::sampleTreeToString
** replace IParameterized::printParameters with ::parametersToString.

h5. Provide ISample with possibility to export parameter tree in Python dictionary

This is #1562. Implementing this issue would simplify "sample parameter tree" part of the tutorial and would make output generated
by step4_sample_builder.py less ugly.

h5. Improve MinimizerCatalogue::toString

While preparing advanced fitting tutorial realized that the existing MinimizerCatalogue::toString provide too little information.
It contains only the list of minimizers, but not the list of their available options.

h5. Get rid of SampleBuilder's "addressof"

How with Jonathan/swig we can hide such low level things from Python users.

h5. Implement FitSuite::printParameters (or ::parametersToString.)

Now GISASSimulation::printParameters() reports parameter names which are different from what FitSuite has.

# example step4_sample_builder.py

# GISASSimulation::printParameters()

# attempt to add fit parameter with the name "/GISASSimulation/SampleBuilder/length_parameter" leads to exception,
# saying that following list is available:

Do we need all these prefixes?

h5. Import MD data

Provide a way to easily translate 3d data (containing sld at each point) into a sample description

h5. Get rid of ctypes in sample builder.

Hide ctypes from users

h5. Provide extended print output for fit parameters during iterations.

Artur pointed out, that we do not have a way to see how many sample parameters are steered by given fit parameter.
Related to #1478 too.

h5. GUI: provide convenient way to set min,max for relative difference map.

And probably all other properties of plot on FitView

h5. GUI: multiple crashes

RunFit button stopped to work. The rest was working.

h5. Python fitting

If no fit parameters are defined, it crashes. On Windows, it does this without any clear message. So we need to provide some clear feedback when this happens and exit gracefully.