There is currently a known issue with the version of PanDDA distributed as part of CCP4.

You need to roll CCP4 back to update 047 in order for PanDDA to work.

This can be done using the CCP4 update manager (ccp4um).


PanDDAs is built and tested on Linux.

It is not guaranteed to work on Mac (although I hope it does). Good luck!

(Windows? Probably not...)

This documentation is for PanDDA v0.2.X.
(and v0.3.X - coming soon!)
PanDDA v0.1.X is now obsolete and should not be used.


What is PanDDAs? The PanDDA (Pan-Dataset Density Analysis) method was developed to analyse the data resulting from crystallographic fragment screening. These experiments result in a large number of datasets that potentially contain weakly bound ligands. The detection and identification of weak signal caused by a binding ligand requires a sensitive and objective data-analysis method.

What's this page for? This page discusses the usage of the pandda programs. The tutorials page guides you through a basic example and gives an overview of the standard pandda protocol; the strategies page contains help for several common situations/approaches; and the manual page provides an inevitably incomplete list of all of the command-line options available.

For more details on the methods and algorithm, please refer to the paper:

For more information about modelling, it may be useful to refer to:


The input to a PanDDA analysis is a series of refined crystallographic datasets of the same crystal system. The datasets do not need to be strictly isomorphous, but for best results they should have the same solvent and buffer molecules. The only systematic difference between the datasets should be the presence of different ligands.


The output of a PanDDA analysis is a series of ligand-bound protein models (modelled manually with coot) and the associated evidence for the bound ligands. Multi-state ensembles are automatically generated, representing the superposition of bound and unbound conformations present in the crystal.


As part of CCP4

PanDDA is now distributed as part of CCP4 (you may need to update your version of CCP4 to the latest version to install it). Updates will be issued periodically within CCP4, but it is inevitable that the CCP4 version will fall behind the most-up-to-date version: consider updating your version from the code on bitbucket (instructions below).

Source Code

For developers, the panddas source code is freely available on bitbucket. If you're interested in contributing, please see contact details below.

Due to the method used to bundle PanDDA inside CCP4, updating from the command line may not remove all of the original files from the distribution. So it's best to do an uninstall step first!

1) On the command line, uninstall the current version of PanDDA:

> ccp4-python -m pip uninstall panddas

2) It is normally then required to update a couple of things:

> ccp4-python -m pip install pip --upgrade

> ccp4-python -m pip install numpy --upgrade

3) Install the newest released version using pip:

> ccp4-python -m pip install panddas

4) Science! (hopefully).

To install the latest developer version: instead of step 3) above, download the newest version from bitbucket. Unzip the download directory and cd into it:

> cd "/path/to/download/directory"

Then install the new version:

> ccp4-python install

Version Changes + New Features

Version 0.3.0

Input Changes

  • Reorganisation of the input commands ("phil commands")

New Features

  • More informative error messages when errors occur during alignment!
  • ground_datasets=... option that allows the user to define the datasets to be used for map_characterisation (see strategies page: pandda.analyse).

Bug fixes

  • Map shearing?

Version 0.2.11

Input Changes

  • giant.merge_conformations default:
    • prune_duplicates_rmsd = 0.05 (used to be 0.1)
  • giant.quick_refine default:
    • split_conformations = False (used to be True)

New Features

  • Checks on each dataset's reflections data now reports all errors rather than just exiting on first error
  • During dataset checks, errors now contain a detailed list of the missing/invalid reflections

Bug fixes

  • fix to giant.score_model_multiple that caused an error when a prefix was supplied.

Version 0.2.10

Input Changes

  • Allow the major+minor occupancy multipliers in giant.merge_conformations to both equal 1 to allow for pre-calculated occupancies.

New Features

  • giant.merge_conformations option:
    • prune_duplicates_rmsd=...
    • controls threshold where alternate conformations are removed/combined

Bug fixes

  • pandda.analyse now runs on structures containing non-standard amino acids
  • fix bug with resetting occupancies after giant.split_conformations

Version 0.2.9

Input Changes

  • None

New Features

  • giant.sanitise_model script

Bug fixes

  • None

pandda version 0.1 contains a series of major issues regarding the usability of the output maps. Though these maps are generated correctly, they are not properly aligned to the input models. This fundamentally affects the ability of the experimental evidence for the ligands -- the event maps -- to be disseminated and used for validating any model by a third party.

pandda version 0.2 and higher have fixed these issues - please use these instead.

Newer versions also have improved diagnostics for detecting artefacts in the data that can make it difficult to detect ligands.