Open martyngigg opened 8 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.
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
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:
mantid
including:
mantid
matplotlib
plots - 2w~ 45 weeks effort listed so a ballpark of 12 months is not far off
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.
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:
|
1 | 2w | Integrate IPython console |
1 | 2w | Integrate Script Editor |
2 | 1-2m | Other core application tasks:
|
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 |
This would be very disruptive to the whole GUI layer.
How would we achieve this with minimal problems for the large team?