The Analysis Program

The Idea

CcpNmr Analysis (Analysis) is a graphics-based interactive NMR assignment and project management program. It has been inspired by NMR assignment applications like ANSIG and Sparky. The program contains all new computer code and while it continues some of the strong traditions of other assignment programs it also provides novel ways to approach the analysis of NMR data. Analysis is built on the CCPN data model and what you see on the screen continuously reflects the state of the underlying data. When data change the screen picture is updated to match. The program has its own Data Model package, which means it uses CCPN technology to create a program-specific part of the Python API and thus allows program information (contours, window positions etc.) to be recorded and stored as XML files. Analysis is not just an assignment program; it can be considered a platform for all the NMR data described by the CCPN Data Model. For example you can use it to measure relaxation rates, calculate distance constraints, co-ordinate structure generation, edit molecular information and use it as a starting point to develop new software and algorithms for NMR.

Development

Analysis was primarily developed by Wayne Boucher and Tim Stevens in the group of Prof. Ernest Laue at the University of Cambridge, UK. Most of the computer code for Analysis is written in Python. The Python library documentation is found here. Only speed-critical functions are performed by code written in the fast, compiled language C. Such C functions include the calculation of contours and mathematically intensive algorithms. The Python part of the program consists of a series of integrated graphical windows ("Popups") and an underlying layer of Python library functions. The graphical elements allow the user to enter information and to view the status of the data, while the library functions manipulate the CCPN Data Model objects to record the scientific information.

Macros

Analysis has some pre-defined Python scripts that can be ran as in-program commands with an associated shortcut key. Analysis macro scripts are functions written in the Python programming language. They are normal Python functions, but they must be able to operate with one mandatory input argument “argServer”. This input argument serves to link the Python function with the Analysis program, to give access to the CCPN project data and the Analysis graphical interface.

All macros available for execution (being run) are accessible via the main “Macros” table and new macros can be added to the current Analysis project simply by uploading a Python file with an appropriate Python function. Note that the script itself is not stored inside the project. By adding a macro the user is merely locating the required Python function on disk; the actual code remains at its original file location.

If a macro’s Python code is moved to a different location on disk the script will no longer be executable in Analysis. Under such circumstances however, the old macro (and hence recorded location) can be removed and a fresh one can be put in its place. If the contents of a macros code have changed on disk since it was last executed (in the current Analysis session) then the user may reload the macro so that it is using the newest version. This mechanism provides a convenient way of developing and debugging CCPN Python scripts without having to restart Analysis each time.

Some highlighted features of Analysis

Windows

Figure 1. A three dimensional spectrum window with vertical strips.

Molecules

Figure 2. A molecule selecting popup.

Tables

Figure 3. Tables are frequently used in Analysis to display data, here a peak list.

Assignment

Figure 4. The popup displaying the resonance possibilities for the dimensions of a cross peak.

Figure 5. The atom browser where atoms and residues are chosen during assignment.

Restraints

Figure 6. The Analysis popup used to create distance restraints.

Reference information

Figure 7. Chemical shift distributions from the RefDB database is a part of the CCPN reference information.