Phenix: Difference between revisions

From CCP4 wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:
=== basic usage ===
=== basic usage ===
  phenix.refine model.pdb data.mtz
  phenix.refine model.pdb data.mtz
Here "data.mtz" is your reflection data file. PHENIX automatically recognizes most of the known file formats, so it can be MTZ, CNS or ...


=== advanced usage ===
=== advanced usage ===
  phenix.refine model.pdb data.mtz strategy=rigid_body+individual_sites+individual_adp \
  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
     simulated_annealing=true optimize_wxc=true optimize_wxu=true main.number_of_macro_cycles=5
Warning: optimize_wxc=true optimize_wxu=true makes the program use '''much''' more time!
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:
This will do the following:


# Rigid body refinement first cycle only (MZ protocol = VERY high convergence radius);
# Rigid body refinement first cycle only (MZ protocol = VERY high convergence radius);
# Refinement of individual xyz and b-factors every cycle with optimized weights;
# Refinement of individual xyz and b-factors every cycle with optimized weights (warning: optimize_wxc=true optimize_wxu=true makes the program use '''much''' more time!)
# Simulated annealing at 2nd and one before the last cycles;
# Simulated annealing at 2nd and one before the last cycles;


''Warning'': the file model.pdb in this example should '''not''' have any '''ANISOU''' records! If it has any, these would be refined as individual anisotropic which is most likely not desired.  
''Warning'': the file model.pdb in this example should '''not''' have any '''ANISOU''' records! If it has any, these would be refined as individual anisotropic which is most likely not desired.  
== Ligands ==
== Ligands ==
If some ligand in model.pdb is unknown, phenix.refine will complain:
If some ligand in model.pdb is unknown, phenix.refine will complain:
  Sorry: Fatal problems interpreting PDB file:
  Sorry: Fatal problems interpreting PDB file:
Line 70: Line 71:
  }
  }


== TLS ==
=== Secondary structure restraints ===
 
phenix.refine model.pdb data.mtz main.secondary_structure_restraints=true
 
== reciprocal space ==
 
=== TLS ===


* run your model through TLSMD server to identify TLS domains (it will produce PHENIX friendly TLS groups selections);
* run your model through TLSMD server to identify TLS domains (it will produce PHENIX friendly TLS groups selections);
Line 88: Line 95:
  }
  }


== Rigid body ==
=== Rigid body ===


example for file rigid_body.def defining 2 rigid bodies:
example for file rigid_body.def defining 2 rigid bodies:
Line 95: Line 102:
   rigid_body = chain 'L' or chain 'M'
   rigid_body = chain 'L' or chain 'M'
  }
  }
== Atom selection ==
e.g.
phenix.refine model.pdb data.mtz refine.sites.individual="not (chain A and resseq 123:156)"


== Switching off specific interactions ==
== Switching off specific interactions ==

Revision as of 20:35, 17 July 2010

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 (Phenix home page; documentation) 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, phenix.pbdtools your_model.pdb set_b_iso=25.3 selection="chain A and resname ALA and name CA" - this will set all B=25 for all CA atoms in all ALA residues of chain A.
  • phenix.elbow - electronic Ligand Builder and Optimisation Workbench
  • phenix.reduce - tool for adding hydrogens to a PDB model
  • phenix.explore_metric_symmetry --unit_cell=145,44,67,90,110.5,90 --space_group=C2 --other_unit_cell=67,44,136,90,96,90 --other_space_group=p2 - investigate different settings
  • phenix.polygon - starts the GUI and runs calculations resulting in a POLYGON drawing of important characteristics of your PDB file in relation to the data


Example for use of phenix.refine

basic usage

phenix.refine model.pdb data.mtz

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

advanced usage

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

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 (warning: optimize_wxc=true optimize_wxu=true makes the program use much more time!)
  3. Simulated annealing at 2nd and one before the last cycles;

Warning: the file model.pdb in this example should not have any ANISOU records! If it has any, these would be refined as individual anisotropic which is most likely not desired.

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 ...

Restraints in real space

Occupancy

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
}

Secondary structure restraints

phenix.refine model.pdb data.mtz main.secondary_structure_restraints=true

reciprocal space

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'
}

Atom selection

e.g.

phenix.refine model.pdb data.mtz refine.sites.individual="not (chain A and resseq 123:156)"

Switching off specific interactions

To switch off the interaction between a specific atom and its environment, e.g. to obtain unbiased (by restraints) estimates of distances, see http://www.phenix-online.org/documentation/refinement.htm#anch80 - you just add restraints of the form:

refinement.geometry_restraints.edits {
 zn_selection = chain X and resname ZN and resid 200 and name ZN
 his117_selection = chain X and resname HIS and resid 117 and name NE2
 bond {
   action = *add
   atom_selection_1 = $zn_selection
   atom_selection_2 = $his117_selection
   distance_ideal = 2.1
   sigma = 0.02
# use slack=None if you _want_ to restrain, use large slack if not
   slack = 1
 }
}

See also

Phenix home page

Phenix mailing list

http://phenix-online.org/presentations/neutron_japan_2009/phenix_japan_part1.pdf

http://cci.lbl.gov/~afonine/for_ak/validation.pdf

server producing custom RNA/DNA base pairing restraints