1,328
edits
(fix links II) |
(→Tips and Tricks: regression tests) |
||
(16 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 | 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 | ||
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 105: | Line 103: | ||
=== [http://www.phenix-online.org/documentation/reference/phaser_ep.html 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/reference/phaser_ep. | [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 207: | Line 205: | ||
=== [http://www.phenix-online.org/documentation/reference/elbow.html phenix.elbow] - electronic Ligand Builder and Optimisation Workbench === | === [http://www.phenix-online.org/documentation/reference/elbow.html 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_components=TA1 | |||
== Model building and completion == | == Model building and completion == | ||
Line 214: | Line 221: | ||
=== [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/reference/ligandfit.html phenix.ligandfit] - "wizard" carrying out fitting of flexible ligands to electron density maps === | ||
=== [http://www.phenix-online.org/documentation/reference/ | === [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/reference/assign_sequence.html 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 === | ||
Line 257: | Line 264: | ||
definitions for unknown ligands. | definitions for unknown ligands. | ||
In that case, just running | In that case, just running | ||
phenix. | phenix.ready_set model.pdb | ||
will produce | will produce model.updated.pdb and model.ligands.cif, which may be fed to phenix.refine by | ||
phenix.refine model.pdb data.mtz | 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) | 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. | ||
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 | 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 | 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: | ||
} | } | ||
* switching to torsion-angle NCS: | * switching to torsion-angle NCS: | ||
ncs.type=torsion | ncs.type=torsion | ||
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/ | ||
* 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 | * use these selections for TLS refinement in PHENIX: see http://www.phenix-online.org/documentation/reference/refinement.html | ||
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> | ||
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 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/reference/refinement.html#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: | ||
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. | ||
== Maps == | == Maps == | ||
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. | |||
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 | 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. | 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 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 | * 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: | ||
. | phenix.python scons.py bin mode=release extras=python -j 2 | ||
== See also == | == See also == |