mantidproject / plotting-evaluation

Contains prototypes for evaluating future plotting packages in Mantid
0 stars 0 forks source link

How would we integrate a matplotlib backend? #14

Open martyngigg opened 7 years ago

martyngigg commented 7 years ago

This would be very disruptive to the whole GUI layer.

How would we achieve this with minimal problems for the large team?

martyngigg commented 7 years ago

This is under active discussion. One idea is to take this opportunity to leave Qtiplot behind and write a new python-based GUI that could address should long standing issues that MantidPlot has accumulated.

martyngigg commented 7 years ago

Estimate for integrating matplotlib in to the current version of MantidPlot

For life to be sane for developers we will need C++ wrapper classes for matplotlib so that all of the C++/Python interaction is localised: Figure, Axes, Canvas, Toolbar classes at a minimum - (2w)

Components that need updating:

~4 months effort

martyngigg commented 7 years ago

Estimate for rewriting of MantidPlot as Python application

The estimate is based broadly on rebuilding the look of the MantidPlot workbench but as a Python application using matplotlib for graphics. Some tweaks to current functionality would most likely occur such as removing duplicate mechanisms for achieving the same task but scoping that work is outside of the remit of this estimation.

Tasks:

~ 45 weeks effort listed so a ballpark of 12 months is not far off

martyngigg commented 7 years ago

More Detail on Rewrite Proposal

It is envisioned that the final application cannot be too dissimilar to the current MantidPlot as many users have spent much time working with this interface and recent comments on the user survey indicate the need for a general workbench such as this.

However, it is proposed that a 1-2 month requirements gathering exercise be used to understand those aspects of the current interface that would benefit from improvement and those that are to be kept as they are.

Estimate for rewriting of MantidPlot as Python application

The following estimates are based broadly on rebuilding the look of the MantidPlot workbench but as a Python application using matplotlib for graphics. Some tweaks to current functionality would most likely occur such as removing duplicate mechanisms for achieving the same task but scoping that work is outside of the remit of this estimation.

The following tables places time estimates along with resources for tasks required to accomplish this goal.

Resource Time estimate Task Description
1 2w Design
1 2w C++ matplotlib wrappers
1 2m Build core application logic:
  • asynchronous scriptability
  • logging/message display
  • defined interface to mantid interaction
1 2w Integrate IPython console
1 2w Integrate Script Editor
2 1-2m Other core application tasks:
  • define how to serialize widgets
  • define how to handle resources for widgets
2 1m 1D Plotting including interface for workspace plotting
2 2w 2D Plotting
2 2w 3D/Surface Plotting
3 2w Wrap & plugin algorithm list widget
3 2w Wrap & plugin workspace widget
3 2w MatrixWorkspace view

Parallelizable tasks (see gant chart for resources):

Resource Time estimate Task Description
? 1m TableWorkspace editable view & plotting
? 2w Sample log viewer
? 1m Plugin instrument view and replace miniplot with matplotlib
? 1m Fit browser & plot interaction
? 1m Wrap & plugin SliceViewer replacing graphics with sliceviewer
? 1w Wrap & plugin VSI
? 2w Wrap & plugin SpectrumViewer
? 2w Indirect Interface plotting
? 2w Muon Interface plotting
? 2w Engineering Interface plotting
? 2w Other Interface plotting