Ccpnmr Assignment Management

Keys, Commands & Abbreviations

Mouse Button + Keys





Select peak


Pan in window

Left + Shift

Select peaks in region (additive)


Zoom Out

Left + Control

Pick peak


Zoom In

Left + Shift + Control

Pick peaks in region


Delete Selected peaks


Drag canvas


Toggle spectrum

Middle + Shift

Zoom (with up/down)


Assign peak


Options menu


Add horizontal ruler

Mouse wheel



Mark cursor position


Remove marks & rulers


Move selected peak


Add vertical ruler




A top-level menu named "n1", accessed from the main Analysis menu


A sub-menu item "n2" accessed from top-level menu "n1"


A menu item "n3" accessed from a spectrum window with a right mouse click


The Return key


A tab named 'title'


A button named "command"


OS command line prompt


Python shell line prompt

Loading Projects and Spectra

Open an existing project

If you are running Windows double click on the Analysis icon, or for Linux and Mac start CcpNmr Analysis on the command line by typing:

-> analysis

(This assumes that the CCPN bin/ directory is on your path, otherwise you will need to type the full path or be in the bin/ directory.) When the Analysis menu bar has appeared select M:Project:Open Project.

Navigate to find and then select the CcpnCourse1a project (the directory initially will be in green and then when you have selected it in deep purple). Then click [Open]. You might get a warning that various files have moved location, which is fine; just click [OK].

Dependent on how the project files and directories have been unpacked, you might also get a dialogue panel with a list of spectra paths (because these also have moved location). If any path is in red then Analysis cannot find the corresponding spectrum data file, so either you need to tell Analysis where it is (by double clicking the path cell and navigating to the correct location) or accept that that particular spectrum will not have its contours displayed.

Now save the new project by selecting M:Project:Save. The first time you save a project that has moved locations the SaveAs dialog is brought up. At this point you can choose to change the project name and/or the location where the project directory will be saved.

It will highlight in red existing project directories, so that you do not accidentally overwrite one. Here we are happy to save onto the existing project (we are just updating the paths). So just hit the "Save" button, and also OK to the question about overwriting the existing project directory.

After this first save, M:Project:Save will just automatically save to the existing location. M:Project:SaveAs will let you save your project with another name, or in another location, but will still have the directory name the same as the project name.  It is a good idea to save now and again in case something goes wrong (either with your work or with the code).

This project has two windows, "window1" and "window2". The first is a two-dimensional window with an HSQC spectrum in it, and the second is a three-dimensional window with two spectra in it, an HNCA and an HNcoCA.

Opening Spectra from File

To open a new spectrum go to M:Experiment:Open Spectra. In the resultant Open Spectra popup navigate to the spectra/ directory and select 182.spc.par (the other files are spectra that are already open, or that will be needed later).

You can open up more than one spectrum at one time, but there we will just open one. If necessary, enlarge the popup (click and drag the bottom edge down) so that you can see the entry in the bottom table. This table is a list of how the selected spectra will be placed into the CCPN data structure. Each file will be associated with an experiment and a spectrum that are in turn linked to a shift list. For the most part each experiment carries only one spectrum, as will be the case in this tutorial. However, it is possible to have one experiment with several spectra, e.g. when they are processed differently. All the spectra will use the same shift list, as the experimental conditions are the same, so leave that field alone.

Enter a name for the selected experiment by double clicking on the experiment name cell, "Expt_4", and entering the name and then pressing <Return> or clicking outside the box. Set the name of the experiment to "N-NOESY" or similar.  The spectrum name could also be altered, but this is not necessary here and the spectrum name being inherited from the spectrum file ("182.spc") is informative.

Note that the File format option at the top op the popup is set to "Azara", which is correct for the files we will open. If the spectra were stored in a different format (Bruker, Felix, NMRPipe, NMRView, UCSF, Varian or Factorised) this option would have to be altered. Finally click [Open Spectrum].

Now file and referencing verification dialogues will appear. Again, enlarge the popup so you can see the entire table. The {Verify Referencing} tab will be open - it shows the parameters you normally need to look at. The {Verify File Details} tab lets you edit where and how the file is stored, but the information here is normally correct. Click [Commit] on the button at the top of the popup (from either tab) to continue. Note that you can change spectrum referencing and file setup at any time after loading via M:Experiment:Spectra.

Note that you may skip all the verification steps, if you know your parameters to be correct, by selecting the "Skip verification dialogs" option before you click [Open Spectra]. You can change almost all the spectrum referencing and file parameters at a later time should you need to make adjustments. The only thing that you cannot change after a spectrum is loaded are its primary axes; in terms of number and which isotopes they refer to.

Setting Experiment Types

After the verification there is one final popup where you specify the types of the experiment that was run. This information is very useful later on; for example Analysis uses the knowledge of which experimental dimensions correspond to single bond transfers to automatically remove impossible assignment options.

Set the synonym for the new experiment to "15N HSQC-NOESY". Note that for this experiment there are two different full types with the same synonym (double click the Full Type column). So the "15N HSQC-NOESY" could be eitherH_H391.NOESY or H391_H.NOESY, with the difference being that the NOESY transfer can come either before or after the HSQC step. For our experiment the selection H_H391.NOESY is correct.

When the experiment type is set click [Done] at the top right or [Close - All Done] at the bottom. You may have to expand the popup to see the [Done] button. After a few moments you will hopefully see the newly loaded spectrum appear. You can now also close the Open Spectra popup.

Spectrum Window Navigation

Window Components and Views

Once the new spectrum has loaded, a new window, "window3" will automatically be created. This is a three-dimensional window with 1H along the x and y axes and 15N along the z axis. A new window is created like this only if no existing window matches in isotopes. Note that if you minimise or close a window you can get it back again by going to M:Windows:HN: window3 (or equivalent).

You can move around the spectra within the windows using several different inputs. To zoom in and out use the <PgUp> and <PgDn> keys, the middle mouse wheel (if you have one), or hold <Shift>, click the middle mouse button, and move the mouse up and down. If you zoom out from your spectra so that you can see their edge you will notice a dotted line, which denotes their border.

You cannot zoom out further than the maximum size allowed in each dimension. To change this size open up M:Window:Axes and select the {Axis Types} tab (if it is not already selected). Each Axis Type has a Region, which can be edited by double clicking on the relevant cell.

To pan around the spectra you can click and drag the scrollbars at the edges of the windows, use the arrow keys, or click and drag on the spectra with the middle mouse button.

Looking in "window2" move the extra scrollbar at the very bottom of the window. - Left click and drag. This scrollbar is present on the 3D window to change the depth or plane of the spectra being viewed. On a 4D window there would be yet another scrollbar. To change the thickness of the displayed planes click and drag the side of the depth slider with the middle mouse button.

Staying in window2, click on [Spectra] at the top of the window. Here you will see two coloured buttons, one for each of the 3D spectra. If you click the buttons you can independently toggle the contour displays for the two spectra on and off.

Setting Contours

To change contour settings click on the [Contours] button at the top of a window, try doing this in window3 for the newly loaded spectrum. This lets you do simple adjustments. The green arrows will raise or lower the contouring floor, while the [+1]/[-1] will change the number of contour levels. The [Pos/Neg] button allows you to swap between showing just positive or just negative or both contour levels. Note that using these contour options only changes the spectra that are visible at the time within the window. If you click on the "More..." button you will bring up a more detailed contour level setting dialogue box.

Picking peaks

Peak Picking and Manipulation

Focusing on the HSQC spectrum in "window1", the next task is to define some contour extrema as peaks. There are two common ways to pick peaks. One is to search for all extrema in a boxed region. Try this in the HSQC window by holding down <Shift> and <Ctrl> whilst clicking with the left mouse button and dragging the (dappled) box to define a rectangular pick region.

Note that when the peaks are picked the contours will carry diagonal crosses to denote the peak position. Each peak will also have some annotation to the top right of the cross, which we discuss below.  The peaks also have boxes around them to indicate that they are selected.  To deselect them, click anywhere in the window outside the peak boxes.

Locate the contours near the point at 8.7 ppm on the 1H axis and 119.0 on the 15N axis. These contours represent two overlapping peaks where the extrema search will only pick one of the two underlying signals. To define the second peak position, hold down <Ctrl> and click on the location to pick the new peak.

Now we will select some of the peaks, e.g. artefacts or noise, for deletion. To delete peaks click with the left mouse button and drag a box over a region containing peak crosses (without holding down any keys). When the mouse button is released you will see that the peaks in the defined region are highlighted with a border around the cross. To select just a single peak click near its centre with the left mouse button. To delete the selected peaks press <Del> or select R:Peak:Delete selected.

If you have peaks selected and then select a different set of peaks you will see that the selection is completely substituted for a new one. You can add to an existing peak selection by holding <Shift> while you choose. Note that you can select peaks in several different spectra, and from different windows, in this manner.

Markers and Navigation

Pick and select an isolated peak in the HSQC spectrum. Put a mark through it by holding the cursor over the peak centre and pressing <m>. The lines produced are a multi-dimensional marker at the peak position and will be visible at the equivalent 1H-15N location in the 3D window. To go to this equivalent position in window2, with the cursor over the marked peak select R:Navigate:1H - 15N in window2. Note that there are also navigation options for window3. There is only one navigation option for window2 because it is an HCN window and there is only one way for the HN axes from window1 to map to it. However window3 has HHN axes and thus has two navigation options, where the second option would take you to the 1H position on the vertical axis, rather than the horizontal axis, which represents the amide proton.

Multi-dimensional marks, vertical ruler lines and horizontal ruler lines can be added to any window location, not just on peaks, using the <m>, <v> and <h> keys respectively. To increase the number of marks and rulers that can be displayed at one time select M:Window:Marks and Rulers or R:Markers:Options. Note that you can clear all marks and rulers with the <n> key.

Strips and Strip Navigation

Now we will start to manipulate "strips" which are sub-divisions of a window that are connected (in terms of their view) in one of the screen dimensions, but independent in the other dimensions. Go to window2, select the [Strips] option at the top and click [+], this will add a vertical division to the window. Click and drag with the middle mouse button to move the spectra - you will see that the vertical axes of the strips are tied together, but the horizontal axis is independent.

The depth dimensions are also independent, e.g. if you move the bottom most, 15N scrollbar. Which depth dimensions are moved depends upon which strip is active. The active strip is indicated by an asterisk "*" next to its strip number and is set either by double-clicking (left mouse) within a strip or by using the strip options at the top of the window; by clicking [1] or [2] or whatever. The active strip is also the one that will be removed when the [-] button is clicked. You can rearrange the strip order, moving the selected strip with the green arrows, and swap between vertical and horizontal strips with the toggle button. To remove all the strips press the buttons with vertical and/or horizontal stripes to the right of "Clear:".

Manually locating strips at interesting positions can be tedious, but there are various options to build strips from pre-defined locations, for example using peaks. To make strips using peak locations select three (picked) peaks in the HSQC spectrum and select (using the right mouse button) R:Strip:Peak Location Strips:1H-15N in window2 (the same option is found in R:Navigate). The result is three strips located at the amide positions corresponding to the HSQC peaks.

Program Organization

Analysis stores the complete set of all relevant data in a set of files. Data are only saved when you press save, so you can always quit without problems. There is an optional automatic backup system. You can always kill a popup or window without causing any catastrophes.

Now we have seen some basic operations, we can look at how commands are organized. As you see, things can often be done in more than one way, popups can be reached from several places, and parameters - for peak picking, display, spectrum loading - are set automatically to sensible values. Still, everything can be viewed and modified in detail. The top menu mirrors the conceptual organization of the program. For instance things to do with spectra are under M:Experiment and things to do with display under M:Window. For some things you might want to look in both places.

In any menu, options marked by a spanner are for viewing and editing the underlying data. Try looking at the following, both for an overview and for some popups we have already seen:

M:Experiment:Experiments:{Experiment Types}
M:Window:Windows:{Windows & Axes}

Popups for setting options are shown by crossed tools. Try looking at M:Peak:Peak Finding and M:Peak:Draw Parameters to see what you can do with peak handling. General program options are under M:Project:Preferences.

The other main types of popups can be seen on the M:Assignment menu. Tools are shown with cogwheels - grey ones are lightweight or general purpose, while blue ones are complex special-purpose operations. The colored squares icon is for data display and graphs. We will be getting to some of these later.

The right mouse button in the graphics window has its own set of options that work off the cursor position or the currently selected peaks. This is often the best way to access operations that have to do with peak assignment, navigation, and display.

We are now done working with this project. You can quit Analysis via M:Project:Quit. It first asks if you want to quit, and if you say Yes to that then it asks if you want to save the project, to which you can reply No (unless you want to save what you have done).

Initialising HSQCs

If CcpNmr Analysis is not already open, start it up again by double clicking its icon or on the command line by typing:

-> analysis

(This assumes that the CCPN bin/ directory is on your path, otherwise you will need to type the full path or be in the bin/ directory.)

Open an existing project

In the Analysis menu bar select M:Project:Open Project. Select [Yes] if Analysis asks whether it can close the current project and [No] if it asks to save the current project. Navigate to find and select the CcpnCourse1b project (the directory initially will be in green and then when you have selected it in deep purple). Then click [Open].

You might get a warning that various files have moved location. You might also get a dialogue box with a list of spectra paths (because those also have moved location). If the paths are all in grey then just click the [All Done!] button at the bottom. If any path is in red then Analysis cannot find the corresponding spectrum data file, so either you need to tell Analysis where it is (by double clicking the path cell and navigating to the correct location) or accept that that particular spectrum will not have its contours displayed.

This project has three windows, "window1", "window2" and "window3". The first is a two-dimensional window with an HSQC spectrum in it, and the other two are three-dimensional windows, one with an HNCA and an HNcoCA, and the other with an HSQC-NOESY. The HSQC has been peak picked but not the other spectra.

Assigning New Resonances

Given a project with some picked peaks we will start some assignment of those peaks to resonances. Initially we will assign the peaks anonymously, that is to say we will link peaks to a resonance number, but not say which atoms the resonances comes from. Initially such an assignment is not very useful, but we can go on to link related peaks to the same resonance numbers. For example we can say that a whole column of peaks in the HNCA and 3D N-NOESY and an HSQC peak are derived from the same amide resonances. When we specify which atoms the resonances derive from then all of these linked peaks will automatically be assigned to those atoms.

To start an assignment choose the isolated HSQC peak at the location 7.27, 121.7 (1H, 15N), and with the cursor near its centre press <a> (or you can select R:Assign:Assign HQSC...). Note it doesn't matter which peak you choose really, but we will be referring to this one later. The Edit Assignment popup will appear containing two rows of tables, one for each of the HSQC dimensions.

In the left most table of each row click the button [<New>], this will add the resonances [1] and [2] to the 1H and 15N dimensions of the peak. Now click [Set Same Spin System] at the bottom left of the popup. The resonance assignments will become {1}[1] and {1}[2] here the {1} annotation signifies that the resonances are both in spin system number 1, which in this instance indicates that they both belong in the same amino acid residue.

Now mark the peak (<m>), if it is not marked already, and navigate to the equivalent position in the 3D N-NOESY spectrum in window3 via R:Navigate:1H - 15N in window3. Ensure the peaks along the marker in window3 are picked (<Shift> + <Ctrl> + left click and drag). Note that if you cannot pick some 3D peaks they may not have a maximum within the selected depth range. If this is the case then you can adjust the depth position or width.

Now assign one of the 3D peaks at the marked amide location: Press <a> with the cursor over the peak and find the Edit Assignment popup. You will see that the popup has now updated for the 3D peak and consequently there are three dimension rows. Because the peak position closely matches the chemical shift value for resonances [1] and [2] they appear in the right hand tables.

We can link these existing resonances to the 3D peak by clicking on their rows in the right-hand table. When you do this the resonance annotation appears on the left hand side (and in the spectrum window) to indicate that the peak is now linked, i.e. assigned to the resonances.

Note that you can remove the resonance assignment in the popup by selecting a row from the left hand side and clicking [Clear Dim Contrib]. The use of the term "Dim Contrib" here reflects the fact that a given peak dimension could potentially have a contribution from multiple resonances. So for example you could have an ambiguously assigned NOESY peak where two different pairs of close resonances contribute to the measured peak intensity.

With the 3D peak's amide dimensions fully linked we will quickly give the other 3D peaks at the same amide position the same assignment. Do this by zooming out in the window so that you can see all the peaks along the marker line, select all the peaks including the assigned one (left click & drag) then select R:Assign:Propagate assignments. This will cause the resonances assignments {1}[1] & {1}[2] (displayed on the spectra as "{1}[1],-,[2]") to be spread appropriately across all the selected peaks.

Efficient Resonance Assignment

The linking together of related peaks in different spectra by assigning them to common (anonymous) resonances is something that can be partially automated to speed up the assignment process. Of course you can also do this manually, as we illustrate above, if you wish. We can use the HSQC positions to define unique amide locations and pick and assign related spectra based upon these "root" locations. The first step in this automation is to define new amide resonance and spin system identifiers for all the peaks within the HSQC spectrum. Select M:Assignment:Initialise Root Resonances. At the top left of the dialog select the HSQC:115:1 Peak List if it is not already selected. The pulldown contains only the spectra that can be used for intialising – HSQC/HMQC, HNCO and HNcoCA. Note that the routine knows which spectra to select because the experiment types have been set correctly, in this case as H391.

When you see the 'Initialise Root Resonances' popup, there is a table called 'Amide Sidechain Peaks' with a few rows filled. Some of the peaks in the HSQC will be from NH2 groups of amine side chains, and you need to handle those before you can initialise the peak list. Clearly the NH2 groups give two peaks, one for each hydrogen, but both have the same 15N resonance (and thus 15N chemical shift). If such pairs of peaks were processed in the same manner as the backbone amide peaks they would become linked to two different pairs of resonances in two spin systems, when in reality they should carry the same 15N resonance and be in only one (side chain) spin system. Click on a row of the table to view the peaks, first making sure you set it to follow the right window (here "window 1"). If you think this looks like side chain NH peaks, double click the 'Confirmed' column so it changes to 'Yes'. Hint: there are five NH2 side chains in this protein.

When you are happy with all of them, click [Initialise Peak List!] at the top.

This command calls the anonymous resonance and spin system assignment routines on all of the HSQC peaks. You will now see that all of the peaks carry assignments of the form {x}[y],[z]. If you look at the NH2 peaks that you confirmed, you will see that both peaks belong to the same spin system and that the 15N dimension is assigned to the same resonance.

The next part of the assignment process is to link resonances from the HSQC to the corresponding trains of peaks in the 3D experiments. From the menu select M:Assignment:Pick & Assign From Roots. In the Pick & Assign From Roots popup that appears ensure that HSQC:115:1 is selected as the root spectrum and window1 is selected in the Root Window pulldown menu, and select window2 in the pulldown menu in the Target Windows section, and click [Add Target Window:]. Repeat this again to add window3 to the target list: select window3 from the pulldown list and [Add Target Window] again.

Now take a quick look at the {Tolerances} tab and set the "Root 1H Dim1" tolerance to 0.03 ppm and the "Root 15N Dim 2" to 0.2 ppm. Check if the other parameters look OK. Then go on to the {Link Peaks} tab. You will notice that the peaks from the HSQC are listed in the table. If you click on one of the rows, window1 will centre on that peak and the location of window2 and window3 will move to the same amide frequencies.

Rearrange the positions of the windows so that you can clearly see all of them, and the popup. Select a row corresponding to an HSQC peak that is not overlapped and click [Pick & Assign Root Resonances]. You will see that peaks are picked in the 3D spectra, in the box defined by the tolerances, and assigned to the amide resonances from the HSQC.

You can go on to further amide positions by clicking [Next Root]. With appropriately set tolerances you may also click [Pick All & Assign Root Resonances] to process all of the amide positions - you can still use the [Next Root] function (etc.) to loop through the peaks afterwards. Note that closely overlapping amide resonances would still have to be checked or linked by hand.

It is important when picking peaks and assigning resonances in this automated manner that noise and artefact peaks are not picked. Of course any offending peaks can be deleted afterwards, but most can be avoided by setting the picking tolerances to appropriately small values and setting the contour levels so that the noise is not visible. By default the peaks are picked only above the visible contour base level.

Now that we have defined and linked many resonances, look in the main resonance table at M:Resonance:Resonances. You will see that all of the resonances are listed here and many operations can be performed on them. The important thing to note here is that the chemical shift of each resonance is automatically calculated from the positions of the peaks to which it is assigned. Note that a resonance assigned to only one peak will have no deviation in its shift, but those assigned to several 3D peaks will deviate as the amide peak position varies slightly. By default the chemical shift values are the average of the assigned peak positions, where each spectrum is weighted equally. However, different dimensions of different spectra can carry different shift weightings (set at M:Experiment:Spectra {Tolerances}) so that the value of a shift may be influenced more by the more precise experiments.

Data display tables

The standard data tables, like the Resonance table, have some useful features built in. <Shift>+click and <Ctrl>+click allows you to select sets of rows. You can sort on individual columns by clicking the column header. Clicking the right mouse button brings up a menu that lets you filter rows on their contents, graph one column against another, and export sets of columns in a tab-separated format for scripts (or Excel).

Entering sequences and molecular information

So far we have been linking related spectra with anonymous resonances. In the end we will assign these resonances to specific atoms, but first we must specify the molecules within our experimental sample that we may assign to. Creating a list of atoms to which we may assign has two distinct steps. The first is the specification of a molecule, usually with an amino acid sequence, that will act as a template. The second step is to build an assignable molecular system from the templates to give the atoms. The molecular system represents all the assignable molecules that may reside within the NMR sample, these include proteins, nucleic acids and small molecules. For this tutorial we make a mock molecular system with one protein chain and one small molecule. These two steps exist so that we may define a template sequence once, but have the potential to create several distinct polypeptide chains for assignment, for example if we have a homodimer.

Open M:Molecule:Add Sequence. This will open the 'Molecule : Molecules' popup on the {Add Sequence} tab. 'Add Sequence' is a shortcut command that can create both the molecule and molecular system and add a new sequence to it, all in a single operation (it can also add to existing molecules and molecular systems).

The kind of molecule you want to create is controlled by the switches at the top. First set 'Input Type' to 3-Letter/Ccp. Then cut and paste the  sequence below (on Linux: left mouse to select in the browser and middle mouse to paste; on Windows: <Ctrl-C> / <Ctrl-V>; on OSX: <cmd-C> / <cmd-V> into the Add Sequence text window. Alternatively click on [Read File] and load the sequence.txt file.


The input sequence does not have to be perfectly formatted. You can click [Tidy] at any time to see how Analysis has interpreted the sequence.

Also, you can switch between one- and three-letter codes after the sequence has been entered. If you look in the Ccp Codes pull-down menu (top right) you will see all of the residue codes that are currently available, many of which are modified amino acids. Now ensure both 'Destination Molecule' and 'Destination Mol System' are set to <New>, and click [Add Sequence!]. You will be prompted for the names of the new molecule, molecular system, and chain. When finished the popup automatically switches over to the {Chains} tab, where you can see the result.

Just for fun, we will now add a small molecule to our project. This could be part of the first molecule we made, i.e. linked to the protein in some way, but instead we will make a new molecule. 'Add Sequence' is only relevant for linear polymers so we shall do it another way. First go to the {Small Compounds} tab. Begin by choosing [DNA] in the 'Mol Type' pulldown at the top then select a blue highlighted compound in the right hand table to display an idealised structure in the left hand panel. You can rotate the cartoon compound by clicking and dragging with the middle mouse button. Using <Shift> or mouse wheel while dragging up and down with the middle mouse button will change the zoom level.

With any compound selected set 'Destination Molecule' to '<New>' and click [Add Compound] to enter it into your second molecule template - this will ask for a molecule name and then bring you to the {Sequences} tab.

Go back to the {Small Compounds} tab and now try adding a non-polymer molecule. Set the 'Mol Type' pulldown to 'Other' and select a molecule at random. Some simple molecules (like ATP and Zn) are available, but most will give you a popup asking if it is OK to download the molecule description. If you say 'Yes' the description will be downloaded (assuming you have an internet connection and write access to the relevant directory), but even if successful most likely you will also get a warning that there are no coordinates available (that is why we started with DNA). So select something like ATP or Zn. Add that compound to another new molecule.

To make molecular system information from your templates, go to the {Chains} tab. Set 'Mol System for new chain' to '<New>', select one of your small molecules as the template, and click [Make Chain From Template]. Then set a new template, keeping the setting for the Mol System, and click [Make Chain From Template] again. You are done creating molecules now; try to look in the various tabs and see what information is available.

To view the new polymer chains have a look at M:Molecules:Atom Browser. You can scroll through the sequence and by toggling the [H], 391 etc. you can display all of the assignable sets of atoms. You may notice atom names like Leu Hba, Hbb, Hda* and Hdb*. Names ending in a or b are used to distinguish prochiral groups that are not stereospecifically assigned. The {options} tab allows you to show stereospecific assignments also/instead. They also allow pseudoatoms like Leu Hb*, but these are just a shortcut for writing 'Hb2 or b3'.

*End of Part One*

Structure : Restraints and Violations¶

Display Structure Restraint and Restraint Violation Data

This popup window is used to manage and display structural restraints. Mostly such restraints are derived from NMR data and are applied during a structure calculation to restrict molecular conformations to those which are consistent with the observed data. Many kinds of NMR data can be used to generate restraints and the restraints themselves are of different types. This system will display tables for any kind or restraint described in the CCPN data model, but the most common kind of restraints are for distances and dihedral (torsion) angles.

This system is used for viewing and managing restraint information on a large scale, it is not used directly for the initial generation of the restraints themselves. Structural restraints may be imported into CCPN via the FormatConverter or they may be created with various various dedicated components available in CCPN software. For example distance restraints may be made via the Make Distance Restraints (using through space experiments like NOESY) and Make H Bond Restraints options. Dihedral angle restraints can be made from chemical shift information using DANGLE and from scalar couplings using the 3J H-Ha Coupling option.

Restraint Sets

The first “Restraint Sets” tabs lists all of the sets into which the restraint lists of the project are grouped into. The table indicates how many restraint and violation lists are in the set as well as an indication of the number of “fixed” resonance assignments that have been frozen in the set. Restraint sets may be deleted here, but are created elsewhere; when restraint lists are created they can be put into a new or existing set.

Within CCPN, restraints are stored in restraint lists which group together restraints of the same type (i.e. angle and distance restraints cannot be mixed in a list). Restraint lists are further grouped together into restraint sets. A restraint set often represents all of the restraint lists that will be used together at the same time during a structure calculation. However, this grouping is slightly more subtle because a restraint set has important consequences with regards to NMR resonance assignment. In essence, a restraint set takes a fixed snapshot of the resonance assignment status at the time the restraints were made. Consequently, if atomic assignments change after restraints are generated the restraints will remain linked to the original atoms. This is helpful to the user because it is always possible to know what was actually restrained in a structure calculation. The user should however be careful when putting new restraints into old restraint sets; if atom assignments have changed then even the new restraints (actually between NMR resonances) will still restrain the old atom assignments. Thus it is good practice to always make a new restraint set if assignments have changed.

Restraint Lists

The second “Restraint Lists” tab displays all of the restraint lists that are available in the selected restraint set. The restraint set may be selected in the pulldown menu above the tabs. Generally this table is used to give an overview of the restraint lists but several high-level functions are accessible via the buttons below the table. As described above, the actual restraint generation takes place elsewhere in dedicated systems.

Restraint lists my be deleted and merged/combined together into a single list (if they are of the same type). It is notable that restraint lists may also be split. Currently there are two means of doing this, the first is to [Split Ambig/Unambig] which separates a distance restraint list into two, where one list contains only restraints that are equivalent to a single assignment (only two linked atoms or prochiral sets) and the other list has restraints that represent multiple, ambiguous assignments. The [Split Violated] function is helpful during violation analyses, which aim to determine which restraints are incompatible (e.g. mistaken assignment, minor conformation or artifact) with a structural model. This will separate out a list of those restraints that are violated in a structure (beyond the restraint bounds) for further inspection.


The third “Restraints” tab allows the user to view all of the individual restraints within a restraint list, selected via the left hand “Restraint List” pulldown. If any structure violation analyses have been performed on the list the user can select from the “Violation List” pulldown. Any restraints that were violated in the structural analysis will be coloured; red, orange or yellow depending on severity. Also where violations are recorded the columns for “Mean Viol”; average violation amount over a structure ensemble, and “Viol Fraction”; the proportion of an ensemble’s models that were violated, are filled.

Selecting from the “Structure” pulldown menu allows geometric information to be extracted from a structure ensemble, so that it may be compared with the values that are being restrained. Accordingly, if a structure violation analysis is performed using [Calculate Violations] then it is the selected structure that is compared with the restraints to find inconsistencies. Also, selecting as structure allows the “Struc Value” column to be filled with the value calculated from the resonance locations in the structure. Here the kind of value naturally differs according to which type of restraint list is displayed.

The “Value Method” pulldown menu is notable for distance restraints because it allows the user to switch between “NOE sum” and “Minimum” options. These are relevant because a restraint, which restrains pairs of resonances, may link groups that contain multiple atoms (e.g. a methyl group). With multiple atoms at the end of a distance restraint there is flexibility about how the distance is defined. The “Minimum” method to measuring distances simply records the shortest distance between any pair of atoms from either side of the restraint (e.g. the closes atoms in two methyls). The “NOE sum” method uses r^-6 distance summation to give a value that represents what the equivalent NOE estimated distance would be if a signal were recorded between the two atom groups. For example, if a restraint is to a methyl group all three methyl atoms will contribute to increase the intensity of an NOE signal, so the distance will appear to shorter than the single atom equivalent. Hence it is this shorter distance that will come from the NMR data and appear in the restraint, and thus the shorter distance that should be used in violation analyses. The get the “NOE sum” distance the pairs of atom distances are first converted into a kind of ‘NOE intensity’ (r^-6), these are added together to give the total ‘NOE intensity’, which is then converted back into a distance.

In the main restraints table the restrains are listed as coloured rows, but there will often be grey rows present.

A grey row represents an alternative set of restrained resonances (e.g. a different pair of atoms) but relates to the same restrained value. The main coloured row for a restraint and the grey alternatives are both referred to as the “items” for the restraint. Hence at the bottom there is the [Delete Items] button to remove specific restraint alternatives. In this regard there is no difference between the first green item and the other possibilities; it is fairly arbitrary which item comes first. Naturally deleting all of the items (possibilities) in a restraint removes the whole restraint. Although the first item is often coloured green it may have other colours indicating a structural violation. A restraint with more than one item may reflect either a genuine signal overlap, e.g. an NOE peak is caused by two or more close atom pairs that have similar chemical shifts and cannot be separated, or ambiguous trial assignments that come from speculatively matching chemical shifts to spectrum peaks.

The various functions below the table allow restraints to be managed but the restrained resonances, and the parameter values they relate, to come from specialised restraint generation systems. In general the restraint information is derived from NMR experimentation and not adjusted by hand, Several functions allow the user to link between the restraints and any spectrum peaks that they are derived from. This can be done after selecting restraints with [Show Peaks] or after selecting peaks with [Show Restraints For Selected Peaks]. There are also functions to coordinate assignments between the restraints and peaks. How this is done in practice tends to vary with personal preference, but it is possible to both refresh a restraint according to the latest peak assignment with [Update Assignment From Peak] or refresh the peaks according to the restraints (e.g. after an ARIA or CYANA run that removes restraint ambiguity) with [Update Peak Assignments].

Violation Lists

The forth “Violation Lists” tab gives details of all of the violation analyses that have been recorded in the project. Strictly speaking, each violation list can contain results from several analyses but this is usually not the case in normal Analysis operation. The individual violation records are presented in the last “Violations” tab, and also affect the violation data presented in the “Restraints” table. Violation lists may be calculated, given a structure and a restraint list, inside Analysis using [Calculate Violations] in the “Restraints” tab, or they may be imported from external programs like ARIA.

A violation list is a grouping of violation entities, and these record an inconsistency between the restrained values of a restraint and what is actually observed in a structure (or ensemble). Essentially this means a structural value is outside the bonds of the restraint. Clicking on a violation list in the upper table will fill the lower table with an overview of the structure models that were used in the restraint violation analysis (usually just a single ensemble).


The last tab lists all of the violation items that were recorded in a selected violation list. This table will present some of the same information as the “Restraints” tab, if a violation list is selected there. The data is merely presented in a different way. Selecting a specific row in the table allows the user to [Show Restraint], to view the restraint that was violated in the “Restraints” tab. Other functions allow the user to jump to the peak, that gave rise to the restraint, which may be the underlying source of the problem.

Caveats & Tips

Having large restraint sets in a CCPN project can make loading the CCPN data into Analysis slow, and takes up more memory. Thus it is advisable to delete any restraint sets that are no longer in use,

If the restraint table is slow to update, consider switching off any structure selection. Extracting values from large structure ensembles can take a noticeable amount of time.

The [Calculate Violations] function will not work until a Structure is selected.

Although the CCPN violation analysis tries to do a good job it can never be exactly the same as analyses performed during a structure calculation. Most of the reason for this is due to the stereo-specific resolution of prochiral atoms. For example, Analysis can only determine which of HBa or HBb atoms actually goes with the HB2 or HB3 sites by taking a poll (based on minimising violation) after the structure calculation is complete, and this prochiral resolution may differ from what actually occurred in the calculation (minimising energy).

Main Panel¶


Leave a Reply

Your email address will not be published. Required fields are marked *