Phenix

Revision as of 15:05, 20 March 2009 by Kay (talk | contribs) (→‎TLS: add example for rigid body and NCS definition)

PHENIX (Python-based Hierarchical ENvironment for Integrated Xtallography) is a new software suite for the automated determination and refinement of macromolecular structures using X-ray crystallography and other methods. It integrates well with CCP4-formatted files for I/O, is highly automated, and very straightforward to use.

The suite has a GUI program (phenix) which can be used to run the programs, but they also work from the command line:

  • phenix.refine - refinement program
  • phenix.xtriage - assessing data quality
  • phenix.find_helices - rapid helix fitting to a map
  • phenix.pbdtools - PDB model manipulations and statistics; e.g. phenix.pbdtools your_model.pdb --show-adp-statistics will show you complete statistics about B-factors; phenix.pbdtools your_model.pdb --show-geometry-statistics will show you complete statistics about stereochemistry, and so on
  • phenix.elbow - electronic Ligand Builder and Optimisation Workbench
  • phenix.reduce - tool for adding hydrogens to a PDB model
  • ...

Example

phenix.refine model.pdb data.mtz strategy=rigid_body+individual_sites+individual_adp \
   simulated_annealing=true optimize_wxc=true optimize_wxu=true main.number_of_macro_cycles=5

Here "data.mtz" is your reflection data file. PHENIX automatically recognizes most of the known file formats, so it can be MTZ, CNS or ...

This will do the following:

  1. Rigid body refinement first cycle only (MZ protocol = VERY high convergence radius);
  2. Refinement of individual xyz and b-factors every cycle with optimized weights;
  3. Simulated annealing at 2nd and one before the last cycles;

Ligands

If some ligand in model.pdb is unknown, phenix.refine will complain:

Sorry: Fatal problems interpreting PDB file:
 Number of atoms with unknown nonbonded energy type symbols: 18
 Please edit the PDB file to resolve the problems and/or supply a
 CIF file with matching restraint definitions, along with
 apply_cif_modification and apply_cif_link parameter definitions
 if necessary (see phenix.refine documentation).
 Also note that phenix.elbow is available to create restraint
 definitions for unknown ligands.

In that case, just running

phenix.elbow model.pdb --do-all --output=all_ligands

will produce all_ligands.cif, which may be fed to phenix.refine by

phenix.refine model.pdb data.mtz all_ligands.cif ...

Occupancy refinement

Adding "occupancy" to the "strategy" options will refine the occupancies of those parts of the model that have alternate conformations.

NCS

Automatic detection of NCS groups:

phenix.refine data.hkl model.pdb main.ncs=True

Manual specification of NCS groups:

phenix.refine data.hkl model.pdb ncs_groups.params main.ncs=True

where ncs_groups.params contains e.g.:

refinement.ncs.restraint_group {
  reference = chain A 
  selection = chain B 
  selection = chain C
}
refinement.ncs.restraint_group {
  reference = chain E
  selection = chain F
}

TLS

  • run your model through TLSMD server to identify TLS domains (it will produce PHENIX friendly TLS groups selections);

http://skuld.bmsc.washington.edu/~tlsmd/

for example:

phenix.refine model.pdb data.hkl strategy=individual_sites+individual_adp+tls  tls_selections.def

with tls_selections.def something like:

refinement.refine {
 adp {
 tls = chain 'A'
 tls = chain 'B'
 }
}

Rigid body

example for file rigid_body.def defining 2 rigid bodies:

refinement.refine.sites {
 rigid_body = chain 'A' or chain 'B'
 rigid_body = chain 'L' or chain 'M'
}

NCS

example for ncs.def :

refinement.ncs.restraint_group {
 reference = chain 'A' and (resseq 1:44 or resseq 47 or resseq 49:88 ) and (not element H)
 selection = chain 'B' and (resseq 1:44 or resseq 47 or resseq 49:88 ) and (not element H)
 selection = chain 'C' and (resseq 1:44 or resseq 47 or resseq 49:88 ) and (not element H)
 selection = chain 'D' and (resseq 1:44 or resseq 47 or resseq 49:88 ) and (not element H)
}

See also

Phenix home page

Phenix mailing list