Phenix: Difference between revisions

No edit summary
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
PHENIX (Python-based Hierarchical ENvironment for Integrated Xtallography) is a 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.
PHENIX (Python-based Hierarchical ENvironment for Integrated Xtallography) is a 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 straightforward to use.


The suite ([http://www.phenix-online.org/ Phenix home page]; [http://www.phenix-online.org/documentation documentation]) has a GUI program (phenix) which can be used to run the programs, but they also work from the command line.
The suite ([http://www.phenix-online.org/ Phenix home page]; [http://www.phenix-online.org/documentation documentation]) has a GUI program (phenix) which can be used to run the programs, but they also work from the command line.
Line 6: Line 6:
  phenix.list
  phenix.list


There is also version-specific documentation, e.g. http://www.phenix-online.org/version_docs/dev-572 documents development version 572.
You can join the [http://www.phenix-online.org/mailman/listinfo/phenixbb PHENIX bulletin board] and/or view its archives.


The documentation below focuses on the non-GUI commandline tools and may not be complete, nor up-to-date or even correct.  
The documentation below focuses on the non-GUI commandline tools and may not be complete, nor up-to-date or even correct.  


== Installation problem on NFS for Mac OSX (posting of 23 Jan 2015) ==
== Installation problem on NFS for Mac OSX (posting of 23 Jan 2015) ==
Line 48: Line 46:
There may be one or two data files.
There may be one or two data files.


=== [http://www.phenix-online.org/documentation/xmanip.htm phenix.xmanip] - structure factor file manipulations ===
=== [http://www.phenix-online.org/documentation/reference/xmanip.html phenix.xmanip] - structure factor file manipulations ===


=== [http://www.phenix-online.org/documentation/model_vs_data.htm phenix.model_vs_data] - statistics ===
=== [http://www.phenix-online.org/documentation/reference/model_vs_data.html phenix.model_vs_data] - statistics ===


Just use "phenix.model_vs_data model.pdb data.hkl" where data.hkl is a reflection file in most of known formats. phenix.model_vs_data can output the map defined as:
Just use "phenix.model_vs_data model.pdb data.hkl" where data.hkl is a reflection file in most of known formats. phenix.model_vs_data can output the map defined as:
Line 99: Line 97:
== Experimental phasing ==
== Experimental phasing ==


=== [http://www.phenix-online.org/documentation/autosol.htm phenix.autosol] - experimental phasing "wizard" ===
=== [http://www.phenix-online.org/documentation/reference/autosol.html phenix.autosol] - experimental phasing "wizard" ===


phenix.autosol uses HYSS, SOLVE, Phaser, RESOLVE, xtriage and phenix.refine to solve a structure and generate experimental phases with the MAD, MIR, SIR, or SAD methods
phenix.autosol uses HYSS, SOLVE, Phaser, RESOLVE, xtriage and phenix.refine to solve a structure and generate experimental phases with the MAD, MIR, SIR, or SAD methods


=== [http://www.phenix-online.org/documentation/phaser_ep.htm phenix.phaser] - SAD phasing with Phaser ===
=== [http://www.phenix-online.org/documentation/reference/phaser_ep.html phenix.phaser] - SAD phasing with Phaser ===


[http://www.phaser.cimr.cam.ac.uk/index.php/Phaser_Crystallographic_Software Phaser] can do SAD phasing - it is therefore called phaser_ep (ep stands for "experimental phasing"). The Phenix documentation is at [http://www.phenix-online.org/documentation/phaser_ep.htm]. The keywords are concisely (but somewhat lightly) documented at [http://www.phaser.cimr.cam.ac.uk/index.php/Keywords]. A script documenting the following features  
[http://www.phaser.cimr.cam.ac.uk/index.php/Phaser_Crystallographic_Software Phaser] can do SAD phasing - it is therefore called phaser_ep (ep stands for "experimental phasing"). The Phenix documentation is at [http://www.phenix-online.org/documentation/reference/phaser_ep.html]. The keywords are concisely (but somewhat lightly) documented at [http://www.phaser.cimr.cam.ac.uk/index.php/Keywords]. A script documenting the following features  
# using a PDB file (with origin-centered coordinates) as a heavy atom cluster template
# using a PDB file (with origin-centered coordinates) as a heavy atom cluster template
# using two different substructure atomtypes (the cluster, and Fe)
# using two different substructure atomtypes (the cluster, and Fe)
Line 163: Line 161:
== Molecular replacement ==
== Molecular replacement ==


=== [http://www.phenix-online.org/documentation/automr.htm phenix.automr] - interface to Phaser and Resolve ===
=== [http://www.phenix-online.org/documentation/reference/automr.html phenix.automr] - interface to Phaser and Resolve ===


This "wizard" provides an interface to Phaser molecular replacement and feeds the results of molecular replacement directly into the AutoBuild Wizard for automated model rebuilding
This "wizard" provides an interface to Phaser molecular replacement and feeds the results of molecular replacement directly into the AutoBuild Wizard for automated model rebuilding
Line 198: Line 196:
</pre>
</pre>


=== [http://www.phenix-online.org/documentation/sculptor.htm phenix.sculptor] - automate selection and editing of molecular replacement (MR) models ===
=== [http://www.phenix-online.org/documentation/reference/sculptor.html phenix.sculptor] - automate selection and editing of molecular replacement (MR) models ===


=== [http://www.phenix-online.org/documentation/ensembler.htm phenix.ensembler] - multiple superposition tool to automate construction of ensembles for MR ===
=== [http://www.phenix-online.org/documentation/reference/ensembler.html phenix.ensembler] - multiple superposition tool to automate construction of ensembles for MR ===


== Ligands ==
== Ligands ==


=== [http://www.phenix-online.org/documentation/reel.htm phenix.reel] - restraints editor especially for ligands ===
=== [http://www.phenix-online.org/documentation/reference/reel.html phenix.reel] - restraints editor especially for ligands ===
 
=== [http://www.phenix-online.org/documentation/reference/elbow.html phenix.elbow] - electronic Ligand Builder and Optimisation Workbench ===


=== [http://www.phenix-online.org/documentation/elbow.htm phenix.elbow] - electronic Ligand Builder and Optimisation Workbench ===
Using taxol as an example: this is also named Paclitaxel and one can easily obtain the [https://pubchem.ncbi.nlm.nih.gov/compound/paclitaxel#section=Canonical-SMILES SMILES string]. Then just watch [https://www.youtube.com/watch?v=8qVYTUVKlbQ this video on phenix.elbow].
 
But before you make restraints yourself, check whether it is already in the
dictionary - search on http://ligand-expo.rcsb.org . Taxol should be [http://ligand-expo.rcsb.org/reports/T/TA1/index.html TA1].
 
This can then be used in elbow as a chemical component. This option provides more information than the SMILES string.
 
phenix.elbow --chemical_component TA1


== Model building and completion ==
== Model building and completion ==
=== [http://www.phenix-online.org/documentation/autobuild.htm phenix.autobuild] - "wizard" for model rebuilding and completion ===
=== [http://www.phenix-online.org/documentation/reference/autobuild.html phenix.autobuild] - "wizard" for model rebuilding and completion ===


phenix.phase_and_build, phenix.build_one_model are fast ways to obtain results.
phenix.phase_and_build, phenix.build_one_model are fast ways to obtain results.


=== [http://www.phenix-online.org/documentation/ligandfit.htm phenix.ligandfit] - "wizard" carrying out fitting of flexible ligands to electron density maps ===
=== [http://www.phenix-online.org/documentation/reference/ligandfit.html phenix.ligandfit] - "wizard" carrying out fitting of flexible ligands to electron density maps ===
=== [http://www.phenix-online.org/documentation/find_helices.htm phenix.find_helices] - rapid helix fitting to a map ===
=== [http://www.phenix-online.org/documentation/reference/find_helices_strands.html phenix.find_helices_strands] - rapid helix/strand fitting to a map ===
=== phenix.fit_loops - fill short gaps using a loop library, and longer gaps (up to 15 residues) iteratively ===
=== phenix.fit_loops - fill short gaps using a loop library, and longer gaps (up to 15 residues) iteratively ===
=== [http://www.phenix-online.org/documentation/assign_sequence.htm phenix.assign_sequence] - sequence assignment and linkage of neighboring segments ===
=== [http://www.phenix-online.org/documentation/reference/assign_sequence.html phenix.assign_sequence] - sequence assignment and linkage of neighboring segments ===
=== phenix.ligand_identification ===
=== phenix.ligand_identification ===


== Refinement with [http://www.phenix-online.org/documentation/refinement.htm phenix.refine] ==
== Refinement with [http://www.phenix-online.org/documentation/reference/refinement.html phenix.refine] ==


=== Example for use of phenix.refine ===
=== Example for use of phenix.refine ===
Line 257: Line 264:
   definitions for unknown ligands.
   definitions for unknown ligands.
In that case, just running
In that case, just running
  phenix.elbow model.pdb --do-all --output=all_ligands
  phenix.ready_set model.pdb  
will produce all_ligands.cif, which may be fed to phenix.refine by
will produce model.updated.pdb and model.ligands.cif, which may be fed to phenix.refine by
  phenix.refine model.pdb data.mtz all_ligands.cif ...
  phenix.refine model.updated.pdb data.mtz model.ligands.cif ...
If no PDB file for a ligand is available, its SMILES string should be input to phenix.elbow, and phenix.ready_set should run to generate the LINK records (e.g. for a non-natural amino acid that is part of the polypeptide chain), using phenix.elbow's CIF file.
If no PDB file for a ligand is available, its SMILES string should be input to phenix.elbow, and phenix.ready_set should run to generate the LINK records (e.g. for a non-natural amino acid that is part of the polypeptide chain), using phenix.elbow's CIF file.


Line 266: Line 273:
==== Hydrogens ====
==== Hydrogens ====


Use phenix.ready_set to add hydrogens to your PDB file, and (except at ultra-high resolution) the riding hydrogen model in phenix.refine (this is the default so you do not have to specify anything).
Use phenix.ready_set to add hydrogens to your PDB file, and use (except at ultra-high resolution) the riding hydrogen model in phenix.refine (this is the default so you do not have to specify anything).
phenix.ready_set internally uses phenix.elbow for ligands and phenix.reduce for the protein. phenix.pdbtools can also add hydrogens (FIXME: what are the differences?).
phenix.ready_set internally uses phenix.elbow for ligands and phenix.reduce for the protein. phenix.pdbtools can also add hydrogens (FIXME: what are the differences?).
Hydrogens should not be used in NCS and TLS groups - it might be a good idea to add <font face="Courier"> and not (element H or element D)</font> to all selection strings.
Hydrogens should not be used in NCS and TLS groups - it might be a good idea to add <font face="Courier"> and not (element H or element D)</font> to all selection strings.
See the [http://www.phenix-online.org/documentation/refinement.htm#anch32 phenix.refine documentation].
See the [http://www.phenix-online.org/documentation/reference/refinement.html#anch32 phenix.refine documentation].


==== Occupancy ====
==== Occupancy ====
Line 290: Line 297:
are different - this turn the non-bonded interaction off so the residues  
are different - this turn the non-bonded interaction off so the residues  
will get pushed apart.
will get pushed apart.
==== Special positions ====
Single atoms on (or close enough to) a special position (i.e. on one or more 2-,3-,4- or 6-fold rotation axis/axes) are automatically restrained to stay on that special position. For anything else (like a ligand crossing a symmetry element) the trick is: reducing occupancy to 1/n for a n-fold rotation axis, and excluding atoms from non-bonded repulsions with their symmetry mates - see [[Phenix#Switching_off_specific_interactions]] .
==== Bond across symmetry axis ====
There is a small hint at
[https://www.phenix-online.org/documentation/reference/refinement.html#definition-of-custom-bonds-and-angles]
For bonds to symmetry copies, specify the symmetry operation in xyz notation, for example:
symmetry_operation = -x-1/2,y-1/2,-z+1/2
The whole .eff file might look like:
refinement.geometry_restraints.edits {
    bond {
      action = *add delete change
      atom_selection_1 = chain A and resid 1199 and name O4
      atom_selection_2 = chain A and resid 1196 and name C1
      symmetry_operation = X-1/2,-Y+1/2,-Z
      distance_ideal = 1.439
      sigma = 0.020
    }
}
(this is from a posting of Oleg Sobolev to PHENIXBB on  Wed, 27 May 2020 15:55:27 -0700)


==== NCS ====
==== NCS ====
Line 296: Line 327:


* Automatic detection of NCS groups:
* Automatic detection of NCS groups:
  phenix.refine data.hkl model.pdb main.ncs=True
  phenix.refine data.hkl model.pdb ncs=True ncs_search.enabled=True
* Manual specification of NCS groups:
* Manual specification of NCS groups:
  phenix.refine data.hkl model.pdb ncs_groups.params main.ncs=True
  phenix.refine data.hkl model.pdb ncs_groups.params  
where ncs_groups.params contains e.g.:
where ncs_groups.params contains e.g.:
  refinement.ncs.restraint_group {
  refinement.ncs.restraint_group {
Line 310: Line 341:
  }
  }


It seems that since Phenix 1.10.1-2155 mains.ncs=True was replaced by ncs_search.enabled=True
 
* switching to torsion-angle NCS:
* switching to torsion-angle NCS:
  ncs.type=torsion
  ncs.type=torsion
Line 348: Line 379:
   }
   }


See the [http://www.phenix-online.org/documentation/refinement.htm#anch26 documentation].
See the [http://www.phenix-online.org/documentation/reference/refinement.html#anch26 documentation].


==== DEN refinement (similar to what is in CNS) ====
==== DEN refinement (similar to what is in CNS) ====
Line 405: Line 436:
* 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);
http://skuld.bmsc.washington.edu/~tlsmd/
http://skuld.bmsc.washington.edu/~tlsmd/
* use these selections for TLS refinement in PHENIX: see http://www.phenix-online.org/documentation/refinement.htm
* or use <code>phenix.find_tls_groups</code> to find TLS groups, and to generate a tls_selections.def file.
* use these selections for TLS refinement in PHENIX: see http://www.phenix-online.org/documentation/reference/refinement.html


for example:
for example:
Line 419: Line 451:
  }
  }


Alternatively, phenix.refine can identify TLS groups on-the-fly, using tls.find_automatically=True
Alternatively, phenix.refine can identify TLS groups on-the-fly, using <pre>tls.find_automatically=True</pre>
 
* phenix.find_tls_groups now can find TLS groups automatically, and generate a tls_selections.def file.


At lower resolution than 1.5A if you run two consecutive refinements, first with TLS  
At lower resolution than 1.5A if you run two consecutive refinements, first with TLS  
Line 438: Line 468:
  }
  }


==== [http://www.phenix-online.org/documentation/refinement.htm#anch28 Fix His/Asn/Gln sidechain orientations] ====
==== [http://www.phenix-online.org/documentation/reference/refinement.html#anch28 Fix His/Asn/Gln sidechain orientations] ====


Use
Use
Line 444: Line 474:
to automatically flip these sidechains to make them better fit the density and/or hydrogen bonding pattern.
to automatically flip these sidechains to make them better fit the density and/or hydrogen bonding pattern.


==== [http://www.phenix-online.org/documentation/refinement.htm#anch30 Using a reference model] ====
==== [http://www.phenix-online.org/documentation/reference/refinement.html#anch30 Using a reference model] ====


A good idea if refinement is done at low resolution but a high resolution model is available.
A good idea if refinement is done at low resolution but a high resolution model is available.
Line 480: Line 510:




* In specific (rare !) situations one wants to exclude specific interactions. The pdb_interpretation.custom_nonbonded_symmetry_exclusion=<selection> command line keyword was designed for this purpose.  
* In specific (rare !) situations one wants to exclude specific interactions. The pdb_interpretation.custom_nonbonded_symmetry_exclusion=<selection> command line keyword was designed for this purpose. Example (either simply add this on the commandline, after setting the selection appropriately, or if using GUI, find this parameter in "All parameters", and type in atom selection):
custom_nonbonded_symmetry_exclusions="chain A and resseq 123 and sidechain"


* 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:
* 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/reference/refinement.html#anch80 - you just add restraints of the form:


  refinement.geometry_restraints.edits {
  refinement.geometry_restraints.edits {
Line 514: Line 545:
to the phenix.refine command line results in the log file containing memory usage throughout the run. Look for the max memory intake in the last record (towards the end of log file). This will give you an idea about how much memory you may need.
to the phenix.refine command line results in the log file containing memory usage throughout the run. Look for the max memory intake in the last record (towards the end of log file). This will give you an idea about how much memory you may need.
It might well be that this also works for the other phenix tools.
It might well be that this also works for the other phenix tools.
== Refinement with mmtbx.lockit ==
From RWGK's posting to [http://www.phenix-online.org/mailman/listinfo/phenixbb phenixbb] on Nov 14, 2010:
We have a tool for quick real-space refinement that's geared towards making the
geometry ideal in the end. I'm not sure it is useful in your situation, but may
be worth a try. It works like this:
mmtbx.lockit your.pdb your_refine_001_map_coeffs.mtz \
      map.coeff_labels.f=2FOFCWT,PH2FOFCWT coordinate_refinement.run=True \
      atom_selection='resname LIG'
It works in two stages. First it attempts to maximize the real-space weight
allowing for a significant (but not totally unreasonable) distortion of the
geometry. This is meant to move the ligand into the density. In the second stage
it scales down the "best" real-space weight and runs a number of real-space
refinements until the selected atoms do not move anymore. The expected result is
nearly ideal geometry.
The procedure is usually very quick. If it turns out to be useful we could
integrate it into phenix.refine, to be run after reciprocal-space refinement.
The mmtbx.lockit command is not as user-friendly as phenix.refine. It only works
with mtz files, you have to manually specify the mtz labels, and the error
messages may be unhelpful. Also be sure there is a valid CRYST1 card in your pdb
file.


== Maps ==
== Maps ==
Line 550: Line 554:
Can work with ensembles of structures. Seems to have no specific documentation. Can also calculate map CC for all atoms or per residue.
Can work with ensembles of structures. Seems to have no specific documentation. Can also calculate map CC for all atoms or per residue.


=== [http://www.phenix-online.org/documentation/get_cc_mtz_mtz.htm phenix.get_cc_mtz_mtz] ===
=== [http://www.phenix-online.org/documentation/reference/get_cc_mtz_mtz.html phenix.get_cc_mtz_mtz] ===
   
   
=== phenix.fobs_minus_fobs_map - calculate difference density ===
=== phenix.fobs_minus_fobs_map - calculate difference density ===
Seems to have no specific documentation.
Seems to have no specific documentation.


=== [http://www.phenix-online.org/documentation/multi_crystal_average.htm phenix.multi_crystal_average] ===
=== [http://www.phenix-online.org/documentation/reference/multi_crystal_average.html phenix.multi_crystal_average] ===
   
   
=== phenix.grow_density - local density improvement ===
=== phenix.grow_density - local density improvement ===
Line 574: Line 578:
with output=xplor produces an X-PLOR style map. Adding a PDB file will result in a masked map.
with output=xplor produces an X-PLOR style map. Adding a PDB file will result in a masked map.


=== [http://www.phenix-online.org/documentation/reciprocal_space_arrays.htm phenix.reciprocal_space_arrays] ===
=== [http://www.phenix-online.org/documentation/reference/reciprocal_space_arrays.html phenix.reciprocal_space_arrays] ===
computes various arrays such as Fcalc, Fmask, Fmodel, Fbulk, and more.
computes various arrays such as Fcalc, Fmask, Fmodel, Fbulk, and more.


Line 588: Line 592:


== NCS usage ==
== NCS usage ==
=== [http://www.phenix-online.org/documentation/find_ncs.htm phenix.find_ncs] - identification of NCS operators ===
=== [http://www.phenix-online.org/documentation/reference/find_ncs.html phenix.find_ncs] - identification of NCS operators ===
from protein coordinates (chains), heavy atom coordinates, or a density map. Example:  
from protein coordinates (chains), heavy atom coordinates, or a density map. Example:  
   phenix.find_ncs my_8_molecules.pdb
   phenix.find_ncs my_8_molecules.pdb
Line 596: Line 600:
Seems to have no specific documentation.
Seems to have no specific documentation.


=== [http://www.phenix-online.org/documentation/apply_ncs.htm phenix.apply_ncs] - applying NCS to a molecule to generate all NCS copies ===
=== [http://www.phenix-online.org/documentation/reference/apply_ncs.html phenix.apply_ncs] - applying NCS to a molecule to generate all NCS copies ===
Example:
Example:
   phenix.apply_ncs find_ncs.ncs_spec chainA.pdb
   phenix.apply_ncs find_ncs.ncs_spec chainA.pdb
Line 607: Line 611:


== Model analysis and manipulation ==
== Model analysis and manipulation ==
=== [http://www.phenix-online.org/documentation/pdbtools.htm phenix.pbdtools] - PDB model manipulations and statistics ===
=== [http://www.phenix-online.org/documentation/reference/pdbtools.html phenix.pbdtools] - PDB model manipulations and statistics ===
e.g.  
e.g.  
  phenix.pdbtools your_model.pdb  model_statistics=True
  phenix.pdbtools your_model.pdb  model_statistics=True
Line 622: Line 626:
will result in a output file model_1.pdb.geo which contains ALL geometry information (bonds, angles, torsions, planarity, non-bonded ...) for each and every atom in your model.
will result in a output file model_1.pdb.geo which contains ALL geometry information (bonds, angles, torsions, planarity, non-bonded ...) for each and every atom in your model.


=== [http://www.phenix-online.org/documentation/hydrogens.htm phenix.reduce] - tool for adding hydrogens to a PDB model ===
=== [http://www.phenix-online.org/documentation/reference/hydrogens.html phenix.reduce] - tool for adding hydrogens to a PDB model ===


=== phenix.pdb_atom_selection ===
=== phenix.pdb_atom_selection ===
Line 630: Line 634:
In this example, selects all atoms within 3 A from CA atom in chain A of residue number 9, and writes them into cut.pdb file.
In this example, selects all atoms within 3 A from CA atom in chain A of residue number 9, and writes them into cut.pdb file.


=== [http://www.phenix-online.org/documentation/superpose_pdbs.htm phenix.superpose_pdbs] - Superposition of models ===
=== [http://www.phenix-online.org/documentation/reference/superpose_pdbs.html phenix.superpose_pdbs] - Superposition of models ===
===  phenix.superpose_ligands - Superposition of ligands ===
===  phenix.superpose_ligands - Superposition of ligands ===
Example files at [http://cci.lbl.gov/~afonine/superpose_ligands/]
Example files at [http://cci.lbl.gov/~afonine/superpose_ligands/]
Line 909: Line 913:


== Tips and Tricks ==
== Tips and Tricks ==
1) To check the syntax of a Phenix parameter file (for any program, not just phenix.refine), you
can run this command (replacing params.eff with the file of interest):
libtbx.phil params.eff
If it works, it will just print out the parameters - if not, the error message should give some indication where the error occurred.


A handy tip: to check the syntax of a Phenix parameter file (for any program, not just phenix.refine), you
2) To check the proper functioning of a Phenix program, e.g. phenix.auto_sharpen, with Phenix's regression tests, type this on the command line:
can run this command (replacing params.eff with the file of interest):
    phenix_regression.list auto_sharpen
This will then list the command(s) that you can run on your computer to test
phenix.auto_sharpen. On Tom Terwilliger's computer the output looks like:


  libtbx.phil params.eff
  libtbx.python "/net/anaconda/raid1/terwill/misc/PHENIX/modules/phenix_regression/segment_and_split_map/tst_auto_sharpen.py"


If it works, it will just print out the parameters - if not, the error message should give some indication where the error occurred.
Copy and paste the line with the regression test you are interested in, and make sure that it runs and
ends with "OK". (For phenix.refine, there are >300 regression tests!)


== Installation from source, and of Rosetta interface ==
== Installation from source, and of Rosetta interface ==
Line 924: Line 935:
  export PHENIX_ROSETTA_PATH=/usr/local/src/rosetta_src_2017.08.59291_bundle
  export PHENIX_ROSETTA_PATH=/usr/local/src/rosetta_src_2017.08.59291_bundle
(or similarly for .cshrc) and
(or similarly for .cshrc) and
  rosetta.build_phenix_interface
  rosetta.build_phenix_interface nproc=2
needs to be run; the latter step takes hours when doing it for the first time. (According to the docs, this is only needed for rosetta_refine.)
needs to be run; the latter step takes hours when doing it for the first time. (According to the docs, this is only needed for rosetta_refine.)


If this fails (for example, compiler error messages), then one must re-compile Phenix and/or Rosetta. Try to re-compile only Phenix first (and after that, try rosetta.build_phenix_interface again); Rosetta re-compilation may take hours. There are several issues associated with re-compilation:
If this fails (for example, compiler error messages), then one must re-compile Phenix and/or Rosetta. Try to re-compile only Phenix first (and after that, try rosetta.build_phenix_interface again); Rosetta re-compilation may take hours. There are several issues associated with re-compilation:
* if the Phenix binary installer is not used: the Phenix source installer requires (on Fedora and RHEL) the openssl-devel and libXt-devel to be installed on the system
* if the Phenix binary installer is not used: the Phenix source installer requires (on Fedora and RHEL) the openssl-devel, libXt-devel, libtiff, libtiff-devel and bzip2-devel RPM to be installed on the system
* to re-compile Rosetta: go to the main/source directory and issue:  
* to re-compile Rosetta: go to the main/source directory and issue:  
  ./scons.py -j8 mode=release bin
  phenix.python scons.py bin mode=release extras=python  -j 2
(The -j8 should be used if your machine has 8 or more cores.)


== See also ==
== See also ==

Latest revision as of 17:01, 4 March 2021

PHENIX (Python-based Hierarchical ENvironment for Integrated Xtallography) is a 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 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.

A short help, such as usage and options, is printed out by all PHENIX command line tools: just type phenix.TOOLNAME and hit Enter (or Return). Note that you can get a complete list of jiffies with

phenix.list

You can join the PHENIX bulletin board and/or view its archives.

The documentation below focuses on the non-GUI commandline tools and may not be complete, nor up-to-date or even correct.

Installation problem on NFS for Mac OSX (posting of 23 Jan 2015)Edit

The problem:

In an effort to save us from malware, OS X now adds a 'quarantine' attribute to downloaded files. This includes tar and compressed tar files. For most users the quarantine flag only really comes into play if the downloaded file is an application or installer package.

When Yosemite untars an archive with the quarantine attribute, it adds the quarantine attribute to every file it extracts from the archive.

This doesn't present a problem if you're extracting the archive to a local disk, or an AFP-mounted network volume. If you're extracting the archive to an NFS-mounted network volume, it can't store the quarantine flag as a resource fork on the file itself. Instead, it creates a ._<filename> file for each extracted file.

The Phenix installer doesn't like having an install tree full of unexpected ._ files. In some cases, such as where generate_henke_cpp.py tries to generate tables from all the files in a directory, it tries to read ._ files as normal files and dies.

The solution:

The solution is trivial once you know what the problem is. Remove the quarantine attribute from the tar file before extracting its contents. For example:

 xattr -d com.apple.quarantine phenix-installer-1.9-1692-mac-intel-osx-x86_64.tar.gz

Of course, if the Phenix installer could be modified so that it doesn?t die when it finds unexpected ._ files, that would be lovely.

Chris -- Dr Chris Richardson :: Sysadmin, structural biology, icr.ac.uk

Crystallographic dataEdit

phenix.xtriage - assessing data qualityEdit

phenix.explore_metric_symmetry - investigate different settingsEdit

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

The CCP4 equivalent is othercell.

phenix.reflection_statistics - compare datasetsEdit

There may be one or two data files.

phenix.xmanip - structure factor file manipulationsEdit

phenix.model_vs_data - statisticsEdit

Just use "phenix.model_vs_data model.pdb data.hkl" where data.hkl is a reflection file in most of known formats. phenix.model_vs_data can output the map defined as:

[p][m]Fo+[q][D]Fc[kick][filled].

Examples: 2mFo-DFc, 3.2Fo-2.3Fc, Fc, anom, fo-fc_kick.

So, if you say

phenix.model_vs_data model.pdb data.mtz --map=fc

you will get an MTZ file with desired structure factors.

phenix.model_vs_data model.pdb data.mtz --comprehensive=true

will list (among other things) map CC for all atoms or per residue.

PDB deposition: phenix.model_vs_data model.pdb data.mtz will give B-factor statistics. Look for lines like this in the output:

     ADP (min,max,mean):
       all           (136 atoms): 4.4    97.6   25.3  
       side chains   (48 atoms): 4.9    96.8   21.0  
       main chains   (64 atoms): 4.4    97.6   28.3  
       macromolecule (112 atoms): 4.4    97.6   25.2  
       ligands       (1 atoms): 6.6    6.6    6.6   
       solvent       (23 atoms): 8.8    44.1   26.8  
     mean bonded (Bi-Bj) : 27.91
     number_of_anisotropic            : 0      
     number_of_non_positive_definite  : 0

phenix.real_space_correlation - statisticsEdit

Like phenix.model_vs_data plus gives you more options and controls.

phenix.fmodel - calculate structure factors from modelEdit

phenix.cif_as_mtz - convert cif to mtz formatEdit

phenix.find_tls_groupsEdit

  • identifies suitable atom selections for TLS refinement
  • similar to TLSMD, but uses cross-validation to yield one unique solution

phenix.data_viewerEdit

  • visualization of reciprocal-space reflection data (similar to 'hklview' in CCP4i)
  • 3D OpenGL view of all data, or 2D view of planes (pseudo-precession photograph)

Experimental phasingEdit

phenix.autosol - experimental phasing "wizard"Edit

phenix.autosol uses HYSS, SOLVE, Phaser, RESOLVE, xtriage and phenix.refine to solve a structure and generate experimental phases with the MAD, MIR, SIR, or SAD methods

phenix.phaser - SAD phasing with PhaserEdit

Phaser can do SAD phasing - it is therefore called phaser_ep (ep stands for "experimental phasing"). The Phenix documentation is at [1]. The keywords are concisely (but somewhat lightly) documented at [2]. A script documenting the following features

  1. using a PDB file (with origin-centered coordinates) as a heavy atom cluster template
  2. using two different substructure atomtypes (the cluster, and Fe)
  3. using a PDB file of a preliminary protein model, for finding sites
  4. using a MTZ file of a preliminary protein model, for finding sites
  5. using known sites (from e.g. SHELXD or HYSS)
  6. 3. and 5. are combined in this example

is shown below:

phenix.phaser <<eof
CTITLe XXX W12 SAD
MODE EP_AUTO

# name for output files:
ROOT XXXphaser

COMPOSITION PROTEIN NRES 2000 NUMBER 1
WAVELENGTH 1.2029
RESOLUTION 70 4.5
# HAND BOTH

# file with F+ F- SIGF+ SIGF- from XDS/XDSCONV using filetype CCP4_F:
HKLIN XXXp.mtz
CRYSTAL unknown DATASET unknown &
        LABIN Fpos = F(+) SIGFpos = SIGF(+) Fneg = F(-) SIGFneg = SIGF(-)

# use a rough model of the protein to get phases:
PARTIAL PDB    rigid.1.pdb RMS 2.
# alternatively a MTZ file can be used, but the PDB should be preferred
# PARTIAL HKLIN  rigid.1.mtz RMS 2. 

# if sites are known, use them:
ATOM CRYSTAL unknown PDB knownsites.pdb
# the next keywords are documented at http://www.phaser.cimr.cam.ac.uk/index.php/Keywords
# here they are commented out since the file knownsites.pdb is from an earlier phaser job.
# ATOM CHANGE BFACTOR WILSON ON
# ATOM CHANGE SCATTERER XX
# BFACTOR WILSON RESTRAINT OFF

# the W12 cluster was found in Hicup (xray.bmc.uu.se/hicup/) and put at the origin 
# using moleman2's "xyz cen" command (I don't know if this is necessary!)
CLUSTER PDB keg-cen.pdb
# the scatterer XX is predefined and refers to the cluster! Where is this documented ??
# FP and FDP are just guesses; fortunately FDP is refined
# however it is not documented what F0 of the cluster is!
SCATTERING TYPE XX FP=-1 FDP=13 FIX OFF

LLGCOMPLETE NCYC 50
LLGCOMPLETE COMPLETE ON

LLGCOMPLETE SCATTERER XX
LLGCOMPLETE SCATTERER Fe

eof

Molecular replacementEdit

phenix.automr - interface to Phaser and ResolveEdit

This "wizard" provides an interface to Phaser molecular replacement and feeds the results of molecular replacement directly into the AutoBuild Wizard for automated model rebuilding

phenix.phaserEdit

Officially documented in the phaserwiki. It can be run from the commandline (and can serve as a replacement for the CCP4 phaser which is an older version!) and by the Phaser-MR GUI which supports the fine-tuning of parameters.

If you run this:

phenix.phaser params.eff

it will use the Phenix-style configuration file, but if you just run "phenix.phaser" with no arguments (or a shell redirect from a file), it will use the CCP4-style keyword input.

This is an example of params.eff.

Another example, this time for just doing rigid-body refinement (say, for transferring a model to a crystal with slightly different cell parameters):

#!/bin/csh -f
rm rigid.1.pdb rigid.1.mtz
phaser<<eof
TITLE rigid body
MODE MR_RNP
ROOT rigid
JOBS 1
HKLIN myprotein.mtz
LABIN  F=FP SIGF=SIGFP
# use a preliminary refined model
ENSEMBLE ensemble1 PDB mybestmodel.pdb IDENT 1.5
COMPOSITION BY COMPONENT
COMPOSITION PROTEIN NRES 2000 NUMBER 1
SOLUTION ORIGIN ENSEMBLE ensemble1
eof

phenix.sculptor - automate selection and editing of molecular replacement (MR) modelsEdit

phenix.ensembler - multiple superposition tool to automate construction of ensembles for MREdit

LigandsEdit

phenix.reel - restraints editor especially for ligandsEdit

phenix.elbow - electronic Ligand Builder and Optimisation WorkbenchEdit

Using taxol as an example: this is also named Paclitaxel and one can easily obtain the SMILES string. Then just watch this video on phenix.elbow.

But before you make restraints yourself, check whether it is already in the dictionary - search on http://ligand-expo.rcsb.org . Taxol should be TA1.

This can then be used in elbow as a chemical component. This option provides more information than the SMILES string.

phenix.elbow --chemical_component TA1

Model building and completionEdit

phenix.autobuild - "wizard" for model rebuilding and completionEdit

phenix.phase_and_build, phenix.build_one_model are fast ways to obtain results.

phenix.ligandfit - "wizard" carrying out fitting of flexible ligands to electron density mapsEdit

phenix.find_helices_strands - rapid helix/strand fitting to a mapEdit

phenix.fit_loops - fill short gaps using a loop library, and longer gaps (up to 15 residues) iterativelyEdit

phenix.assign_sequence - sequence assignment and linkage of neighboring segmentsEdit

phenix.ligand_identificationEdit

Refinement with phenix.refineEdit

Example for use of phenix.refineEdit

basic usageEdit

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 usageEdit

phenix.refine model.pdb data.mtz strategy=rigid_body+individual_sites+individual_adp \
   simulated_annealing=true optimize_xyz_weight=true optimize_adp_weight=true main.number_of_macro_cycles=5 \
   ordered_solvent=True

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 (info: optimize_xyz_weight=true optimize_adp_weight=true makes the program take longer!);
  3. Simulated annealing at 2nd and one before the last cycles;
  4. find (and remove if necessary) water molecules
restricting the resolutionEdit
xray_data.high_resolution=2.5

will restrict the high resolution limit to 2.5 A.

LigandsEdit

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.ready_set model.pdb 

will produce model.updated.pdb and model.ligands.cif, which may be fed to phenix.refine by

phenix.refine model.updated.pdb data.mtz model.ligands.cif ...

If no PDB file for a ligand is available, its SMILES string should be input to phenix.elbow, and phenix.ready_set should run to generate the LINK records (e.g. for a non-natural amino acid that is part of the polypeptide chain), using phenix.elbow's CIF file.

Constraints and restraints in real and reciprocal spaceEdit

HydrogensEdit

Use phenix.ready_set to add hydrogens to your PDB file, and use (except at ultra-high resolution) the riding hydrogen model in phenix.refine (this is the default so you do not have to specify anything). phenix.ready_set internally uses phenix.elbow for ligands and phenix.reduce for the protein. phenix.pdbtools can also add hydrogens (FIXME: what are the differences?). Hydrogens should not be used in NCS and TLS groups - it might be a good idea to add and not (element H or element D) to all selection strings. See the phenix.refine documentation.

OccupancyEdit

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

Example:

occupancies {
      constrained_group {
        selection = "chain A and resseq 105 and altloc A"
        selection = "chain B and resseq 105 and altloc B"
      }
}

Essentially, the above selection tells: "alternative conformation A of residue 105 in chain A is coupled with alternative conformation B of (NCS related) residue 105 in chain B". The sum of refined occupancies will be 1 in this case. It is essential that altlocs in both selections are different - this turn the non-bonded interaction off so the residues will get pushed apart.

Special positionsEdit

Single atoms on (or close enough to) a special position (i.e. on one or more 2-,3-,4- or 6-fold rotation axis/axes) are automatically restrained to stay on that special position. For anything else (like a ligand crossing a symmetry element) the trick is: reducing occupancy to 1/n for a n-fold rotation axis, and excluding atoms from non-bonded repulsions with their symmetry mates - see Phenix#Switching_off_specific_interactions .

Bond across symmetry axisEdit

There is a small hint at [3]

For bonds to symmetry copies, specify the symmetry operation in xyz notation, for example:

symmetry_operation = -x-1/2,y-1/2,-z+1/2

The whole .eff file might look like:

refinement.geometry_restraints.edits {
   bond {
     action = *add delete change
     atom_selection_1 = chain A and resid 1199 and name O4
     atom_selection_2 = chain A and resid 1196 and name C1
     symmetry_operation = X-1/2,-Y+1/2,-Z
     distance_ideal = 1.439
     sigma = 0.020
   }
}

(this is from a posting of Oleg Sobolev to PHENIXBB on Wed, 27 May 2020 15:55:27 -0700)

NCSEdit

more on this: see Phenix#NCS_usage

  • Automatic detection of NCS groups:
phenix.refine data.hkl model.pdb ncs=True ncs_search.enabled=True
  • Manual specification of NCS groups:
phenix.refine data.hkl model.pdb ncs_groups.params 

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
}


  • switching to torsion-angle NCS:
ncs.type=torsion
  • switch off the restraints on NCS-related B-factors:
ncs.b_factor_weight=0

Secondary structure restraintsEdit

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

You can find more information about secondary structure restraints in the PHENIX Newsletter (pages 12-17).

Low resolution refinementEdit

Use an existing high resolution model (e.g. in a different spacegroup) for restraining the dihedrals:

  phenix.refine data.hkl model.pdb main.reference_model_restraints=True reference_model.file=reference.pdb

The behaviour can be modified with the keywords reference_model.limit (default 15 degrees) and reference_model.sigma (default probably 1 degrees - the current documentation says 1 Angstrom which is probably not right).

In the case where your working model has four chains (A, B, C, D) and your reference model has only chain A, the selections would look like this:

refinement.reference_model.reference_group {
    reference = chain A
    selection = chain A
  }
refinement.reference_model.reference_group {
    reference = chain A
    selection = chain B
  }
refinement.reference_model.reference_group {
    reference = chain A
    selection = chain C
  }
refinement.reference_model.reference_group {
    reference = chain A
    selection = chain D
  }

See the documentation.

DEN refinement (similar to what is in CNS)Edit

DEN restraints can be activated in phenix.refine from the command-line with the current version and latest nightly builds, and they are the same deformable elastic network restraints available in CNS. PHENIX developers have been working closely with Axel Brunger and Gunnar Schroder to implement DEN in Phenix.

They have not yet officially announced the DEN restraints as they are still being tested and actively developed to get the implementation just right, and the parameterization is still very much in flux. It is hoped that by the next version it will become and a stable feature, and at that point DEN will be added as an option in the GUI.

These restraints have been shown to be particularly useful at low resolution, and there has been success in using at 4-5A and below. It is unclear how useful they would be at relatively high resolution (say 2.5A or higher), as there are other restraint methods that work well at that resolution range that are far less computationally intensive.

In almost all cases it is best to optimize the gamma and weight parameters, which is quite time intensive but is most likely to give the best results. Currently this can be parallelized, but only on cores that share memory. If you do optimize the gamma and weight parameters, you cannot simultaneously optimize B factor weights, which is another limitation that will be overcome in the future.

As soon as a stable version is announced in the context of a new release, documentation will be available.

To use DEN with the current release (1.7.3), you can use a parameterization such as this:

refinement {
 main {
  den_refinement = True
  number_of_macro_cycles = 1
  nproc = 8
 }
 refine {
  strategy = *individual_sites individual_sites_real_space rigid_body \
             *individual_adp group_adp tls occupancies group_anomalous
 }
 den {
  reference_file = reference.pdb
  optimize = True
  annealing_type = *torsion cartesian
  final_refinement_cycle = True
 }
}

TLSEdit

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

Alternatively, phenix.refine can identify TLS groups on-the-fly, using

tls.find_automatically=True

At lower resolution than 1.5A if you run two consecutive refinements, first with TLS and the next one without TLS, then in the second run anisotropic ADPs will be converted to isotropic automatically. This is done by phenix.refine to prevent accidental refinement of individual anisotropic ADPs in such cases. The keyword and threshold are: switch_to_isotropic_high_res_limit=1.5. At better resolution, all atoms which have ANISOU records will be refined anisotropically in the second run, which may not be what the user wants.

Rigid bodyEdit

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

Fix His/Asn/Gln sidechain orientationsEdit

Use

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

to automatically flip these sidechains to make them better fit the density and/or hydrogen bonding pattern.

Using a reference modelEdit

A good idea if refinement is done at low resolution but a high resolution model is available.

phenix.refine data.hkl model.pdb reference_model.enabled=True reference_model.file=reference.pdb

Use reference_model.sigma=0.5 to tighten the restraints (default 1.0 Angstrom), and use reference_model.limit=30 to enlarge the limit (default 15 degrees) up to which the reference torsion angle will be used.

Real-space refinementEdit

good writeup at http://cci.lbl.gov/~afonine/rsr.pdf . In short, use

phenix.refine model.pdb data.hkl fix_rotamers=true 

It would probably be a good idea to also use main.nqh_flips=True (but maybe this is already integrated into fix_rotamers=true ?)

Atom selectionEdit

e.g.

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

or

phenix.refine model.pdb data.mtz strategy=individual_adp adp.individual.iso="chain A and resseq 10:20"

The latter will refine only the B-factors of A10:A20 . It should be noted that the overall B-factor can change by ± a constant. This is because the trace of overall anisotropic scale matrix is subtracted from it and added to all atoms and to Bsol.

Another example:

sel = "chain A and resseq 123 and resname LIG and name C1 and altloc A"

where "resseq 123" and "resname LIG" are probably redundant.

Yet another example:

sel = "altloc A or altloc ' ' or element H" 

would select hydrogens of the only (or first, if there are several) alternate conformation of each residue.

Switching off specific interactionsEdit

  • In specific (rare !) situations one wants to exclude specific interactions. The pdb_interpretation.custom_nonbonded_symmetry_exclusion=<selection> command line keyword was designed for this purpose. Example (either simply add this on the commandline, after setting the selection appropriately, or if using GUI, find this parameter in "All parameters", and type in atom selection):
custom_nonbonded_symmetry_exclusions="chain A and resseq 123 and sidechain"
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
 }
}

Using dummy atoms to avoid bulk solvent to be filled inEdit

Fill the space where the ligand is supposed to be with dummy atoms (DA), e.g. water, that all have zero occupancy. And when you run phenix.refine with those dummy atoms make sure you use "refinement.mask.ignore_zero_occupancy_atoms=False" keyword. Also, make sure you exclude the DA from coordinate (refine.sites.individual="not xxx") and ADP refinement (either refine.adp.individual="not xxx" or refine.adp.individual.isotropic="not xxx"), too.

You can use phenix.grow_density to generate dummy atoms in spheres of defined radius placed in defined points.

An experimental feature currently being worked onEdit

If there is a significant amount of model missing you can try the undocumented option "use_statistical_model_for_missing_atoms=true" - you need the latest version for this. For some details see pages #17-19 in http://cci.lbl.gov/~afonine/afonine.pdf

finding out the memory consumptionEdit

adding

--show-process-info

to the phenix.refine command line results in the log file containing memory usage throughout the run. Look for the max memory intake in the last record (towards the end of log file). This will give you an idea about how much memory you may need. It might well be that this also works for the other phenix tools.

MapsEdit

phenix.maps - a command line tool to compute various mapsEdit

Seems to have no specific documentation. Can do B-factor sharpening for improving low-resolution maps.

phenix.real_space_correlation - compute correlation between two mapsEdit

Can work with ensembles of structures. Seems to have no specific documentation. Can also calculate map CC for all atoms or per residue.

phenix.get_cc_mtz_mtzEdit

phenix.fobs_minus_fobs_map - calculate difference densityEdit

Seems to have no specific documentation.

phenix.multi_crystal_averageEdit

phenix.grow_density - local density improvementEdit

As originally described in Acta Cryst. (1997). D53, 540-543 (in development). There is a PDF file (or [4]) to explain some parameters of phenix.grow_density. It is very sketchy and may not be 100% up-to-date.

Defining several spheres where the DA (dummy atoms) are going to be placed is better than defining one large sphere, although it depends on the region size and shape. For example:

sphere {
  center = 21.698   7.730  33.974
  radius = 5
}
sphere {
  center = 23.483  10.877  35.583
  radius = 5
}

phenix.mtz2mapEdit

with output=xplor produces an X-PLOR style map. Adding a PDB file will result in a masked map.

phenix.reciprocal_space_arraysEdit

computes various arrays such as Fcalc, Fmask, Fmodel, Fbulk, and more.

Inputs:

  • File with reflection data (Fobs or Iobs), R-free flags, and optionally HL coefficients. It can be in most of known formats and spread across multiple files;
  • label(s) selecting which reflection data arrays should be used (in case there are multiple choices in input file, there is no need to provide labels otherwise);
  • PDB file with input model.

Usage examples:

  1. phenix.reciprocal_space_arrays model.pdb data.hkl f_obs_label="IOBS"
  2. phenix.reciprocal_space_arrays model.pdb data.hkl r_free_flags_label="FREE"

Output: MTZ file with data arrays.

NCS usageEdit

phenix.find_ncs - identification of NCS operatorsEdit

from protein coordinates (chains), heavy atom coordinates, or a density map. Example:

 phenix.find_ncs my_8_molecules.pdb

to get the NCS relationships in your structure into find_ncs.ncs_spec.

phenix.superpose_maps - transforms maps following a molecular superpositionEdit

Seems to have no specific documentation.

phenix.apply_ncs - applying NCS to a molecule to generate all NCS copiesEdit

Example:

 phenix.apply_ncs find_ncs.ncs_spec chainA.pdb

and it will generate the copies based on find_ncs.ncs .

torsion NCSEdit

Example:

mmtbx.find_torsion_angle_ncs_groups model.pdb

This command will output which NCS groups the torsion NCS routine finds by the automated method.

Model analysis and manipulationEdit

phenix.pbdtools - PDB model manipulations and statisticsEdit

e.g.

phenix.pdbtools your_model.pdb  model_statistics=True

will show you complete statistics about B-factors and stereochemistry,

phenix.pbdtools your_model.pdb set_b_iso=25.3 selection="chain A and resname ALA and name CA" 

will set all B=25 for all CA atoms in all ALA residues of chain A.

Useful to prepare a model for Molecular Replacement:

phenix.pdbtools convert_to_isotropic=true keep="not (altloc B or element H or hetero)"  occupancies.set=1 stop_for_unknowns=false model.pdb

phenix.pdb_interpretation - PDB bonds, distances, dihedrals, ...Edit

phenix.pdb_interpretation model_1.pdb ligand.cif 

will result in a output file model_1.pdb.geo which contains ALL geometry information (bonds, angles, torsions, planarity, non-bonded ...) for each and every atom in your model.

phenix.reduce - tool for adding hydrogens to a PDB modelEdit

phenix.pdb_atom_selectionEdit

phenix.pdb_atom_selection model.pdb "within(3, chain L and resseq 9 and name CA)" --write-pdb-file=cut.pdb

In this example, selects all atoms within 3 A from CA atom in chain A of residue number 9, and writes them into cut.pdb file.

phenix.superpose_pdbs - Superposition of modelsEdit

phenix.superpose_ligands - Superposition of ligandsEdit

Example files at [5]

phenix.get_cc_mtz_pdb - shift model to find originEdit

Assuming map_coeffs1.mtz corresponds to model_1.pdb,

  phenix.get_cc_mtz_pdb  map_coeffs1.mtz model_2.pdb

will create offset.pdb which is a copy of model_2.pdb, adjusted for the origin of map_coeffs_1.mtz, and therefore superimposing on model_1.pdb with space-group symmetry plus allowed origin shifts. This will not change the hand, however.

secondary structure analysisEdit

phenix.ksdssp model.pdb

will output HELIX and SHEET records which you can paste into the PDB header. You should verify the assignments yourself, however, as it occasionally runs adjacent helices together.

ValidationEdit

A summary can be obtained by

phenix.pdbtools model_stat=true model.pdb

comprehensive :

phenix.ramalyze model.pdb
phenix.rotalyze model.pdb
phenix.cbetadev model.pdb
phenix.clashscore model.pdb
phenix.pdb_interpretation model.pdb restraints.cif write_geo_file=True

Or for the really impatient:

mmtbx.validation_summary model.pdb

polygonEdit

can be run from the GUI and runs calculations resulting in a POLYGON drawing of important characteristics of your PDB file in relation to the data

phenix.validate_model and phenix.validateEdit

are also GUI-only

phenix.ramalyze, phenix.rotalyze, and phenix.cbetadevEdit

phenix.clashscoreEdit

Prints out the worst contacts. The clash score should be below 20.

phenix.r_factor_statisticsEdit

prints out R, Rfree, R-Rfree histograms based on PDB structures. If run without parameters, prints out helpful text about its usage.

Other programsEdit

phenix.tls - tool to convert between total and residual ADPsEdit

It can recognize Refmac and phenix.refine formats of TLS records in PDB files.

phenix.tls model.pdb combine_tls=true

will combine TLS from PDB file header with 'residual' B from ATOM records.

phenix.tls model.pdb extract_tls=true

will split the total B-factor in ATOM records into TLS component and 'residual' part.

List of programsEdit

This is the output of phenix.list (version 1630):

durandal.cluster_pdbs: Entropy-accelerated exact clustering of protein decoys 
durandal.rank_pdbs: Entropy-accelerated exact clustering of protein decoys 
fable.cout: Convert Fortran sources to C++ 
fable.show_calls: Show Fortran call graph 
iotbx.cif.validate: Validation of CIF files against core CIF dictionary 
iotbx.cns.transfer_crystal_symmetry: Read unit cell and space group from many file formats, add to CNS input file 
iotbx.crystal_symmetry_from_any: Read unit cell and space group from many file formats 
iotbx.dtrek.to_cns: Convert d*trek reflection file to CNS format 
iotbx.lattice_symmetry: Determination of lattice symmetry given unit cell 
iotbx.pdb.add_conformations: Add alternate conformation to a PDB file (for entire model or atom selection) 
iotbx.pdb.join_fragment_files: Join multiple PDB files constituting one model 
iotbx.pdb.link_as_geometry_restraints_edits: Convert PDB LINK records to phenix.refine parameter file format 
iotbx.pdb.print_sequence: Extract FASTA sequence string from PDB file 
iotbx.pdb_as_fasta: Extract FASTA sequence string from PDB file 
iotbx.pdb_labels_comparison: Compare two pdb files, ignoring coordinates 
iotbx.pdb_labels_diff: Diff between two pdb files, ignoring coordinates 
iotbx.phil: Check syntax of parameter file 
iotbx.r_free_flags_accumulation: Determine fraction of R-free flags as function of Miller indices sorted by resolution 
iotbx.shelx.as_cif: Convert SHELX .ins or .res file to CIF format 
iotbx.show_distances: Show interatomic distances given input in PDB format 
labelit.image: Illustrate the raw data with marked up Bragg spots 
labelit.pdf: Illustrate the raw data with marked up Bragg spots 
mmtbx.lockit: Experimental command for real-space refinement, mainly ligands 
mmtbx.mon_lib_cif_triage: Check syntax of monomer library CIF files 
phaser.MRage: Molecular replacement pipeline 
phaser.MRage.solutions: Calculates model and map from MRage results 
phaser.domain_analysis: Determine domain boundaries from homologues 
phaser.ensembler: Superpose PDB files to create ensemble for MR 
phaser.sculptor: Improve molecular replacment models using sequence alignment and structural infomation 
phaser.unit: Run phaser unittests 
phenix: Run Phenix graphical user interface 
phenix.about: Summarize contributors, packages, and info for phenix 
phenix.acknowledgments: Summarize third-party components of Phenix 
phenix.adjust_robetta_resid: Apply sequence offset to a fragments file 
phenix.apply_ncs: Apply NCS (.ncs_spec file) to a chain to create molecule 
phenix.assign_sequence: Assign sequence to a chain using a map and seq file 
phenix.autobuild: Iterative model-building density modification and refinement 
phenix.automr: Automated MR and model-building 
phenix.autosol: Automated structure solution by MR/MAD/SAD 
phenix.average_map_coeffs: Average a set of map coefficients from several files 
phenix.b_factor_statistics: Display summary of atomic displacement parameters for a model (or atom selection) 
phenix.build_one_model: Build one model using a map and data file 
phenix.build_rna_helices: Build RNA helices into a map 
phenix.cablam_training: C-alpha-based protein secondary structure exploration 
phenix.cablam_validate: C-alpha-based protein secondary structure exploration 
phenix.cbetadev: Validate protein sidechain C-beta geometry 
phenix.cc_star: Calculate cc_star values for correlation of data vs resolution 
phenix.cif_as_mtz: Convert CIF to MTZ 
phenix.cif_as_pdb: Convert CIF to PDB format 
phenix.clashscore: Evaluate model based on all-atom contacts 
phenix.cns_as_mtz: Convert CNS to MTZ 
phenix.combine_models: Take best parts of two models 
phenix.commands: List command line Phenix methods 
phenix.compare_datasets: Similar to phenix.data_viewer, as side-by-side view 
phenix.composite_omit_map: Generate composite omit map, with our without refinement and simulated annealing 
phenix.csv_as_mtz: Convert csv reflection files to MTZ 
phenix.cut_out_density: Create MTZ coeffs with density cut out from a map 
phenix.data_viewer: View pseudo-precession planes through a dataset 
phenix.default_gui_settings: Print out base PHENIX GUI configuration (mostly useful for site admins) 
phenix.den_refine: Carry out DEN refinement of a model 
phenix.density_outside_model: Remove density near a model from a map 
phenix.doc: Phenix documentation 
phenix.dynamics: Shake up structure with simple molecular dynamics 
phenix.elbow: Ligand builder (CIF from PDB, SMILES etc) 
phenix.emma: Compare heavy-atom solutions 
phenix.ensemble_refinement: run ensemble refinement 
phenix.ensembler: Superpose PDB files to create ensemble for MR 
phenix.erraser: Run ERRASER 
phenix.explore_metric_symmetry: Compare unit cells 
phenix.fest: Experimental Delta F and FA estimation 
phenix.find_all_ligands: Find ligands from a list in a map 
phenix.find_alt_orig_sym_mate: Superimpose structures allowing origin shifts (see also map_to_object) 
phenix.find_helices_strands: Build helices and strands into a map 
phenix.find_ncs: Find NCS in a model, map or heavy-atom sites 
phenix.find_ncs_from_density: Find NCS from a map (use phenix.find_ncs) 
phenix.find_tls_groups: Automatic identification of appropriate TLS groups in model 
phenix.fit_loops: Fit missing loops in a model 
phenix.fmodel: Calculate structure factors from model 
phenix.form_factor_query: f' and f" table lookup given element and wavelength 
phenix.get_cc_mtz_mtz: Offset maps using allowed origin shifts and get correlation 
phenix.get_cc_mtz_pdb: Offset PDB to match map using allowed origin shifts and get residue correlation 
phenix.get_latest_version: Download most recent installer replacing current installation 
phenix.get_ligand_pdb: Create PDB file for a 3-letter ligand in the PDB 
phenix.grow_density: Density modification to enhance chain ends 
phenix.guess_molecular_centers: Guess molecular centers from local RMS density 
phenix.help: Load Phenix documentation (same as phenix.doc) 
phenix.hyss: Identify heavy-atom sites from anomalous dataset 
phenix.import_and_add_free: Import a data file and add Free R set 
phenix.kinemage: Generates a multi-criterion validation kinemage file, for viewing in KiNG 
phenix.king: Run KiNG molecular graphics 
phenix.ksdssp: Identify secondary structure in a model 
phenix.ligand_identification: Identify ligands from a map 
phenix.ligand_pipeline: Automated molecular replacement, refinement, and ligand fitting for high-throughput crystallography 
phenix.ligandfit: Fit ligands into a map 
phenix.list: Use instead: phenix.commands 
phenix.map_box: Simple cut out map around a PDB file 
phenix.map_to_model_histogram: Compute averaged radial density distribution 
phenix.map_to_object: Superimpose using SG symmetry only (see also find_alt_orig_sym_mate) 
phenix.map_to_structure_factors: Calculate structure factors and HL coefficients from ccp4 map file and save in MTZ 
phenix.map_value_at_point: Get map value at given coordinates 
phenix.maps: Create maps from PDB and MTZ files 
phenix.maximum_entropy_map: Compute maximum entropy map from map coefficients 
phenix.merging_statistics: Calculate statistics on unmerged data 
phenix.metal_coordination: Generate metal coordination bond and angle restraints 
phenix.model_model_distances: Distance between two PDB files: per atom, residue, chain, model and overall 
phenix.model_vs_data: Evaluate model using experimental data 
phenix.model_vs_sequence: Detect residue mismatches in a PDB file 
phenix.molprobity: Run molprobity 
phenix.morph_model: Morph a model to match a map 
phenix.mr_model_preparation: Download and edit PDB files for MR 
phenix.mr_rescoring: Model scoring for mr_rosetta 
phenix.mr_rosetta: MR and model improvement with phaser/autobuild/Rosetta 
phenix.mr_rosetta_rebuild: Rebuild model with Rosetta 
phenix.mtz.dump: Dump MTZ file contents 
phenix.mtz2map: Convert MTZ file to map (superseded by phenix.maps) 
phenix.mtz_as_cif: Convert mtz to CIF format 
phenix.multi_crystal_average: Multi-crystal averaging 
phenix.muscle: sequence alignment tool 
phenix.ncs_and_number_of_ha: Guess solvent content and number of heavy-atom sites 
phenix.ncs_average: NCS average (no density modification) and write map file 
phenix.old_gui: Run old version of Phenix GUI 
phenix.pdb.hierarchy: Quick summary of PDB file content 
phenix.pdb_as_cif: Convert PDB format to CIF 
phenix.pdb_atom_selection: Extract selected atoms from PDB file (useful for experimenting with atom selections) 
phenix.pdb_editor: Edit PDB files graphically 
phenix.pdb_interpretation: Read PDB file and build restraints for refinement (useful for trouble-shooting) 
phenix.pdbtools: Manipulate PDB files 
phenix.perigee: Interaction finder 
phenix.phase_and_build: Rapid density modification and model-building 
phenix.phaser: Run PHASER 
phenix.print_sequence: Print sequence from PDB file 
phenix.probe: Run PROBE, for analysis of all-atom contacts 
phenix.pulchra: PULCHRA conversion from CA to full chain 
phenix.pymol: Pymol 
phenix.python: Run phenix-cognizant version of python 
phenix.r_factor_statistics: Distribution of Rfree, Rwork and Rfree-Rwork for PDB models at similar resolution 
phenix.ramalyze: Validate protein backbone Ramachandran dihedral angles 
phenix.ready_set: Set up files for refinement, including addition of hydrogens, generation of ligand restraints, and metal coordination restraints 
phenix.real_space_refine: Extensive real-space refinement 
phenix.reciprocal_space_arrays: Create MTZ file with Fmodel,Fcalc,Fbulk,Fmask,FOM,HL, resolution and more 
phenix.reduce: Run REDUCE, software for addition or trimming of hydrogens 
phenix.reel: Graphical ligand restraints editor 
phenix.refine: Carry out refinement of a model 
phenix.reflection_file_converter: Basic conversion between reflection file formats (command-line) 
phenix.reflection_statistics: Evaluation and comparison of reflection data (e.g. anomalous difference correlations) 
phenix.reindex: Reindex an MTZ file 
phenix.remove_aniso: Remove anisotropy from columns of an MTZ dataset 
phenix.remove_free_from_map: Set all map coeffs of free reflections to zero 
phenix.resolve: Run resolve 
phenix.resolve_pattern: run resolve_pattern 
phenix.rna_validate: Validate RNA sugar puckers, backbone bond and angle geometry, and backbone suite conformations 
phenix.rotalyze: Validate protein sidechain rotamers 
phenix.run_example: Run an example from the phenix_examples directory 
phenix.sculptor: Improve molecular replacment models using sequence alignment and structural infomation 
phenix.secondary_structure_restraints: generate pseudo H-bond restraints for alpha helices, beta sheets, and nucleic acid base pairs 
phenix.show_build_path: Show path to Phenix build directory 
phenix.show_dist_paths: Show paths to all components of Phenix 
phenix.simple_ncs_from_pdb: NCS from a PDB file (use instead phenix.find_ncs) 
phenix.solve: Run SOLVE 
phenix.start_coot: Coot molecular graphics 
phenix.superpose_ligands: Superimpose two ligands 
phenix.superpose_maps: Superimpose PDB files and transform map to match 
phenix.superpose_pdbs: Superimpose PDB files using aligned sequences 
phenix.trim_pdb: Remove hydrogen atoms from a PDB file 
phenix.version: Print version of Phenix 
phenix.where_mon_lib_list_cif: Show location of monomer library used by Phenix 
phenix.xmanip: Experimental tool for manipulation of reflection data 
phenix.xtriage: Analyze data files for quality and unusual conditions 
phenix_regression.phenix_doc.test_phenix_html: Test generation of documentation 
phenix_regression.run_tests_mp: Run solve-resolve tests in parallel 
phenix_regression.test_all_parallel: Test wizards 
phenix_regression.test_apps: Relatively short tests of selected major phenix applications 
phenix_regression.test_rosetta_refine: Test rosetta refine 
phenix_regression.testwizard: Run wizard tests 
phenix_regression.wizards.list: list all wizard regression tests 
phenix_regression.wizards.test_all: Run all wizard tests 
phenix_regression.wizards.test_all_parallel: Run all wizard tests in parallel 
phenix_regression.wizards.test_command_line: General wizard tests 
phenix_regression.wizards.test_command_line_build: Wizard model-building tests 
phenix_regression.wizards.test_command_line_ligands: Wizard ligand-building tests 
phenix_regression.wizards.test_command_line_loops: Wizard loop-fitting tests 
phenix_regression.wizards.test_command_line_misc: misc wizard tests 
phenix_regression.wizards.test_command_line_ncs: Wizard NCS tests 
phenix_regression.wizards.test_command_line_non_standard: Wizard non-standard SG tests 
phenix_regression.wizards.test_command_line_omit: Wizard omit tests 
phenix_regression.wizards.test_command_line_resolve_memory: resolve in memory 
phenix_regression.wizards.test_command_line_rosetta: mr_rosetta tests 
phenix_regression.wizards.test_command_line_rosetta_iter: multi-cycle mr_rosetta tests 
phenix_regression.wizards.test_command_line_rosetta_quick: quick mr_rosetta tests 
phenix_regression.wizards.test_command_line_trace: tests of trace_chain 
phenix_regression.wizards.test_commands_in_doc: Test Wizard commands in documentation 
phenix_regression.wizards.test_help: Test Wizard help commands 
phenix_regression.wizards.test_input_files: Test data files in Wizards 
phenix_regression.wizards.test_labels: Test various label formats in Wizards 
phenix_regression.wizards.test_map_to_object: Test map_to_object 
phenix_regression.wizards.test_maps_only: Test making maps in wizards 
phenix_regression.wizards.test_misc_methods: Test misc Wizard methods 
phenix_regression.wizards.test_missing_data: Test Wizards with missing data 
phenix_regression.wizards.test_mult: Test multiple-model autobuild 
phenix_regression.wizards.test_multi: Test multi-crystal averaging 
phenix_regression.wizards.test_ncs: Test NCS identification 
phenix_regression.wizards.test_ncs_in_phenix_refine: Test using NCS in phenix.refine 
phenix_regression.wizards.test_omit: Test omit maps 
phenix_regression.wizards.test_omit_lig: Test omit maps with ligand 
phenix_regression.wizards.test_residue_codes: Test residue names 
phenix_regression.wizards.test_resno: Test rebuild_in_place residue numbers 
phenix_regression.wizards.test_resolve: Run comprehensive solve/resolve tests 
phenix_regression.wizards.test_short_seq: Test Wizards with short sequence 

Tips and TricksEdit

1) To check the syntax of a Phenix parameter file (for any program, not just phenix.refine), you can run this command (replacing params.eff with the file of interest):

libtbx.phil params.eff

If it works, it will just print out the parameters - if not, the error message should give some indication where the error occurred.

2) To check the proper functioning of a Phenix program, e.g. phenix.auto_sharpen, with Phenix's regression tests, type this on the command line:

   phenix_regression.list auto_sharpen

This will then list the command(s) that you can run on your computer to test phenix.auto_sharpen. On Tom Terwilliger's computer the output looks like:

libtbx.python "/net/anaconda/raid1/terwill/misc/PHENIX/modules/phenix_regression/segment_and_split_map/tst_auto_sharpen.py"

Copy and paste the line with the regression test you are interested in, and make sure that it runs and ends with "OK". (For phenix.refine, there are >300 regression tests!)

Installation from source, and of Rosetta interfaceEdit

Phenix can be installed from a binary installer. Despite this designation, it has the source files for re-compilation. However, re-compilation is normally not required, and requires to specify the --source option to the ./install command.

phenix.rosetta_refine (and phenix.mr_rosetta) requires a working Rosetta installation. The easiest way is to download one of the weekly binary+source Rosetta bundles (to be found following this link). The tar-file only has to be unpacked; binaries and libraries are pre-compiled. Your .bashrc has to be modified to have e.g.

export PHENIX_ROSETTA_PATH=/usr/local/src/rosetta_src_2017.08.59291_bundle

(or similarly for .cshrc) and

rosetta.build_phenix_interface nproc=2

needs to be run; the latter step takes hours when doing it for the first time. (According to the docs, this is only needed for rosetta_refine.)

If this fails (for example, compiler error messages), then one must re-compile Phenix and/or Rosetta. Try to re-compile only Phenix first (and after that, try rosetta.build_phenix_interface again); Rosetta re-compilation may take hours. There are several issues associated with re-compilation:

  • if the Phenix binary installer is not used: the Phenix source installer requires (on Fedora and RHEL) the openssl-devel, libXt-devel, libtiff, libtiff-devel and bzip2-devel RPM to be installed on the system
  • to re-compile Rosetta: go to the main/source directory and issue:
phenix.python scons.py bin mode=release extras=python  -j 2

See alsoEdit

Phenix home page

Phenix mailing list

PHENIX Newsletter

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

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

  • 42 pages of general introduction to structure refinement: [6]
  • 45 pages of phenix.refine overview (including extended details about its use from the command line): [7]
  • 42 pages of "Some Facts About Maps": [8]
  • 50 pages of "Crystallographic Structure Validation": [9]
  • 31 pages of introduction to PHENIX: [10]

server producing custom RNA/DNA base pairing restraints

ReferencesEdit

  • electronic Ligand Builder and Optimization Workbench (eLBOW): a tool for ligand coordinate and restraint generation. Nigel W. Moriarty, Ralf W. Grosse-Kunstleve and Paul D. Adams, ActaCryst. (2009). D65, 1074-1080
  • phenix.model_vs_data: a high-level tool for the calculation of crystallographic model and data statistics. Afonine PV, Grosse-Kunstleve RW, Chen VB, Headd JJ, Moriarty NW, Richardson JS, Richardson DC, Urzhumtsev A, Zwart PH, Adams PD. (2010) J Appl Crystallogr. 43, 669-676. [11]