X-ray crystallography

Table of Contents

Linux Software Access

Ensuring software access from the .bashrc shell

Open a terminal window and type
>ls -a
>gedit .bashrc
At the bottom of the file, copy and paste this line:
source /opt/ccp4/ccp4-7.0/bin/ccp4.setup-sh
Save and close.
This allows use of the ccp4i2 gui alias from the terminal

Installing a desktop icon shortcut

From the terminal, open a "make launcher" window by typing:
>gnome-desktop-item-edit ~/.local/share/applications --create-new
Call it ccp4i2
Command: /opt/ccp4/ccp4-7.0/bin/ccp4i2
Make sure you allow the executing file as a program (under permissions when you right click the icon and click properties)
Right click the icon image to select the CCP4i2 icon (from C:/opt/ccp4/ccp4-7.0 folder)

Importing data files

from a Rigaku D*Trek or CrystalClear program

In CCP4i, run dtrek2mtz to import the file into an .mtz format. You may cutoff the data resolution and ensure 5% free R flag at this point as well. From there, run Pointless to reassign the laue group. The file is now suitable for Phaser molecular replacement, refinement in Refmac, and analysis in Coot. You'll have trouble in Scala due to the lack of phi assignment, and in Parrot with the absence of Phi and FOM.

From ALS beamline 4.2.2

In CCP4, import merged data, run data reduction for stats, to cut-off the data at a particular resolution, to change the spacegroup, and to ensure a free R flag. Upload a screenshot of the stats window to your wiki page.
In Phaser (either in CCP4i or CCP4i2), run a search for a dimer using all possible enantiomers of the spacegroup initiailly assigned. If a solution is found in a different spacegroup than the initial, rerun data reduction so the spacegroup of the data and the model match perfectly.
Check the solution in Coot, proceed through refinement in Refmac & manual model building in Coot.

  1. The Linux computers in the research lab run CCP4 suite programs best from the CCP4i interface (>ccp4i2 on the command line).

Refining a structure

From an initial molecular replacement solution

  • After the first round of refinement, the R factors should drop into the 30s (0.3-0.39) ensure there is both an Rwork and and Rfree being monitored. *In Coot, check each residue of each chain to ensure roughly the correct placement (this is not the time to perfect the placement, but to get it close) and correct any large issues (a major backbone shift, a residue shift, a peptide flip.)
  • Refine (include NCS symmetry if present, and resolution parameters if not cut off in Aimless previously)
  • Consider the active site in Coot. If clear density is visible for cofactor or substrate, add it (see below for new ligand protocol)
  • Refine (keep including whatever you included previously)
  • In Coot, add waters. From the Draw menu, select add waters and choose a 2.0 I/sigI cutoff initially, in subsequent rounds, drop this stepwise down to 1.4 or such time as the waters no longer look appropriate.
  • In go to atom window, select the new chain (full of HOH) and visually ensure that every atom was added to a place with density, near electrostatic atoms, and in the solvent shell for the protein (directly H-bonding to the protein somehow, not just other waters).
  • Refine, ensuring that the Rfree drops-- if it doesn't, go back and remove the recently added waters and stop adding more.
  • If the substrates, cofactors, and waters are added, look at the pdb file in gedit and make note of any waters that have B-factors below 20. This is a sign that the HOH doesn't fully describe the density. Reexamine any atoms in Coot and consider whether they may be better modeled by ions or other crystallization solution molecules.
  • Refine using TLS and B-factors
  • Validate using pdb_redo
  • correct any errors
  • upload to the PDB

Adding a Ligand to the Structure

Ligand exists in the dictionary

  • If you have a well-refined structure with continuous density for the ligand, try Calculate → Other Modelling Tool → Find Ligands. Choose the map with good continuous density (2Fo-Fc difference map perhaps?) and find density clusters above 1.0 sigma. Select your map, protein, and ligand. Press ”Find ’Em!”
  • If that doesn't work (the map isn't quite awesome enough) then position the center white dot at the center of your ligand position and search for ligand/add ligand from dictionary. It will plop down right in the center of the screen.
  • Use the Fitted Ligands dialog to navigate hits. Look at each, and remove any that don't fit well or look right.
  • Calculate --> merge molecules to combine the ligands into the protein model In the top menu, tick any molecules that fit the density well. In the bottom, select your protein model.
  • In display manager, hide the original molecules so you just see the stuff you merged together.
  • In the Fitted Ligands dialog, navigate to each new ligand and refine using a jiggle fit (hotkey J) or sphere fit (hotkey R) instead of real space refine (hotkey r) first. Adjust as needed.
  • Save the molecule to CCP4, and refine it all in Refmac

Ligand in the dictionary needs a slight adjustment

  • In CCP4, choose refinement then Ligands and Make Ligand
  • Load the parent ligand (may be generated from a SMILES string)
  • name the molecule with a three letter code to use later in Coot, and make note of the saved CIF-library (refmac.cif), additionally, save the link record (call it linkrecord.pdb or something more descriptive) if there is a new bond not in the parent (for example, to the protein.)
  • Dock the ligand into it's density in Coot, as above, using the FIND LIGAND masking tool for rigid body fit. Then try the jiggle fit to adjust the ligand to the space you have. Save the merged model to CCP4i
  • Open the linkrecord.pdb and the Coot output .pdb files in gedit. In the link record file (the pdb file for the ligand), there should be a single line that starts with LINKR. Check in this that the ligand is assigned a chain that corresponds to the active site chain you modeled in Coot (ex. dfo B 1 where B is chain B)
  • Copy this line/file and paste into the .pdb for your protein, right above the CRYST1 record line. Save.
  • Run Refmac using this saved .pdb file, making sure in the LIBIN line you have loaded the ligand .cif library generated in the MAKE LIGAND job.
  • After the refinement, the output.pdb file should still have the visible LINKR line, adjust the ligand position and fit in Coot.

  1. Using NCS symmetry in Coot before FIND LIGAND may help with larger ligand density of poor continuity. Additionally, Calculate : map sharpening : map blurring will assign high B factors to help identify mismodelled blobs

HSC SMILES string (cannonical): NCCCCCN(O)C(=O)CCC(=O)O

Structure Validation

Coot Validation

Besides the omit maps and unmodelled blobs features, additional validation programs built into the Coot interface can be very helpful, including the Ramachandran Plot interface.

Ramachandran Angles

Two Ramachandran Plot extensions are available, one is an automated step refine found in the Extensions >all molecule > Refine Ramachandran Angles area. Additionally, an interactive Ramachandran Map that updates as you adjust phi/psi angles is found under the Validate menu (Ramachandran Plot) and is very helpful for making significant adjustments when warranted by the density, for instance, flipping the peptide, adjusting the rotamer fit, or making a larger frame shift in the peptide.

Highly Coordinated Waters

Waters identified as "highly coordinated" by Coot can be checked against their B-factors to see if they are low enough to warrant reassignment as an ion. Additional considerations include whether difference map density suggests that the oxygen of water is undermodelling the space.

Planar Peptides

We recommend adding planar peptide restraints before running PDB_redo or other automated validation software. This feature is available in Coot under Extensions > Refine > Peptide Restraints > Add planar peptide restraints.


PDB_redo is a Refmac based validation program run through an online server at: https://pdb-redo.eu/
You will need the final model .pdb, the original data .mtz file (the Coot generated maps are not the right files. Go to an early job in CCP4i2 to see the imported data. That is the file you want) as well as the generated library for any ligands you built.


Twilight is a ligand validation software program created by Bernard Rupp. http://www.ruppweb.org/twilight/default.htm

Omit Maps for ligand validation and figures

Creating an omit map in Coot

With Coot open and your structure loaded with normal maps (Fo-Fc and 2 Fo-Fc) generated, use the Calculate menu to select Map Tools.
Use the Calculate a Masked Map window to identify the chain and residue number of the molecules you want to generate an omit map around, for instance, C/1-2 for chain C and residues C1 and C2.
Next, in the same Calculate>Map Tools menu, generate a difference map with the weighted map from refinement (normal blue density) map as your reference and subtracting the masked map. [If you generate a difference map with the red = overmodeled and green = undermodeled density backwards, go back and reverse these assignments in a new map).
Finally, display the omit map using the Draw menu > display manager > display masked map and while you are in the manager, undisplay anything that is visually noisy. Go look at your ligands that were masked and see how the density turned out.

Creating a figure of an omit map section.

While still in Coot, make sure you save the map of your masked/difference area.