You are here: Home V2 Software Software More ... Developer Notes CcpNmr suite and Analysis CcpNmr Analysis - The Next Generation

CcpNmr Analysis - The Next Generation

Thoughts on the next evolution of CcpNmr Analysis. Tim Stevens 2011

Strategic questions

  • Which programs are we competing with?
  • Which tasks and user groups do we want to support and which will we ignore?
    • E.g. do we want to compete with UNIO etc. to do fast structural-genomics type structure generation for smallish, well-behaved, labelled proteins?
  • Can we get feed-back on use cases and tasks that we are not currently supporting or that users find difficult?


Analysis User Interface Objectives

  • Make installation simple, also for affiliated programs like MARS. TJS: Linking yes, but is MARS installation really our business? <RHF  Users will see this as a requirement, and will likely blame us. Unfortunately you are right, I can see no practical way of fulfilling this.>
  • Avoid bugs, that make users insecure even when they are not crucial
  • Speed up the program
    • Contour drawing
    • Data loading and general operation
    • Memory Footprint
  • Improve the user interface experience
    • Have a simpler, intuitive Analysis Lite version for beginners
    • We do not want to make things difficult/tedious for experience users
    • Consistent interface that reflects a clear underlying mental model (NB Difficult)
      • TJS: Only if changing it doesn't affect established users
    • Avoid multiple ways of doing same thing
      • There is a case for beginner and advanced solutions for some things
      • TJS: Examples of duplication to keep: Simple molecule wizzard and a full molecule editor. Assignment graph should be in Charts and Assignment menus for ease of finding.
    • Hide complex functionality and model concepts when not needed
      • Skip info and verification popups for operations that can be reliably automated
      • Do not use complex parts of model for tasks that can do without them.
        • Molecules offers useful opportunities for this
        • Anything that needs full assignment needs full complexity
        • Some tasks like Data Analysis can do without full assignment
    • Make GUI easier to interpret, standardize,  'guide the eye' among complexity. (NB Difficult).
      • TJS:Is the GUI not already fairly standardised? <RHF. Of course it is. Further improvements will be hard to find at best - anything we could find would be nice though>
      • TJS:Intuitiveness and standardisation can conflict. I would go with the former where they do.
    • Partition advanced and beginner functionality
      • For Analysis Lite relegate certain functionality; buttons, tabs, whole menu options etc.
    • Reduce popup clutter
      • Automatically close popups after use, call up when needed. TJS: No, this is definitely not the way most people work!
      • Have maximum number of popups, automatically closing the oldest. TJS:Too simple, could get very annoying.
      • Dock popups into the main Analysis panel
      • Windows and dock popups together in task oriented panels
  • Reduce number of operations necessary
    • Reduce need to adjust window and popup geometries
    • Improve automation of subtasks (data loading, Exp Loading, setting ExpPrototypes ...)
    • Reduce the need to do window navigation.
  • Make optimized interfaces and set-ups for specific tasks
    • Small-molecule NMR screening interface.
    • Side chain assignment
    • 3D/4D NOE assignment
    • non-labelled assignment
    • Small molecule assignment



  • Implementation of spectrum window pane and spectrum window.
    • Allow for easier development of task-oriented interfaces (window groups etc), including by the user
    • Allow for easier annotation/augmentation of spectrum displays (multiple marks, areas of interest, lines, text)
    • Allow configurable docking of window panes.
    • Analysis popups can be docked into windows and Analysis top level to create stable geometries.
    • Pre-constructed multi-panel docked arrangements for common tasks; seq assign etc.
    • Inbuilt linking/coordination of window pane navigation (easy within a docked window set).
    • Allow for axis permutation or prefab orthogonal view windows
  • Graphics
    • Consider multiple axes types, not just ppm.
    • Consider compressed (JPEG-like block compression) spectrum data caches for fast disk I/O.
    • Persistence of more GUI settings, including docked setup
    • Have both OpenGL and DirectX graphics drivers.
  • Computing
    • Consider multi-processing from the start.
    • Consider moving away from Tk to Qt (PySide) GUI.
    • Refactor basic API generators with slots etc.
  • Automatic determination of spectrum file type when opening spectra (if possible)


Important functionality missing

  • RDC and coupling measurement, assignment
  • Semi-automatic side chain assignment system
  • Multiple conformation assignment (Chain States)
  • Shape Viewer
  • Quick spectrum matrix viewer


Niggles to remove in "Next Gen"

Remove from start-up:
Model read finished. Duration 1.56158208847
Model validity check skipped

Lite Assumptions

1 spectrum per experiment (means can hide spectrum name from all interface elements)

Put warning and information messages into a log file rather than on screen (??)