Neutron structure determination
An X-ray structure is always available and is used as a starting model for
neutron structure determination, therefore once the neutron data is available,
the main steps to get final refined model are:
-
model preparation (add H or D, or H/D; library files for ligands),
-
model refinement and completion (adding DOD, OD or O),
Model preparation
Model preparation (add H or D, or H/D; library files for ligands),
-
add H or D, or H/D,
-
library files for ligands (CIF file)
Solution in PHENIX:
-
add H to everything and create ligand CIF file (if any)
phenix.ready_set
model.pdb
-
add D to everything and create ligand CIF file (if any)
phenix.ready_set
model.pdb
perdeuterate=true
-
add H and exchangeable H/D:
phenix.ready_set
model.pdb
neutron_exchange_hydrogens=true
-
To see all options of phenix.ready_set:
phenix.ready_set --show-defaults
-
To remove all H and D atoms:
Model preparation
phenix.pdbtools – set of tools for PDB file manipulations
For any selected model part:
- shake coordinates, ADP, occupancies - rotation-translation shift of coordinates
- shift, scale, set ADP (add, multiply, assign a constant) - converting to isotropic / anisotropic
- removing selected part of a model Easy to run:
% phenix.pdbtools model.pdb set_b_iso=30 selection="chain A” This will sell all B-factors to 30 for all atoms in chain A.
Also:
- complete model statistics (geometry, B-factors) - geometry regularization
- output MTZ with complete calculated structure factors (that may include all scales and bulk solvent)
Model refinement
Designed to be very easy to use
Some basic examples of running phenix.refine from the command line
Refinement of individual coordinates, B-factors, and occupancies for some
atoms:
phenix.refine
model.pdb
data.hkl
Add water picking and Simulated Annealing to default run above:
phenix.refine
model.pdb
data.hkl
simulated_annealing=true
ordered_solvent=true
Refinement of individual coordinates and B-factors using neutron data:
phenix.refine
model.pdb
data.hkl
main.scattering_dictionary=neutron
To see all parameters (more than 300):
Running phenix.refine
%
phenix.refine
model.pdb
data.hkl
parameter_file
where parameter_file contains following lines:refinement.main { high_resolution = 2.0 low_resolution = 15.0 simulated_annealing = True ordered_solvent = True number_of_macro_cycles = 5 } refinement.refine.adp { tls = chain A tls = chain B }
For typing enthusiasts, the equivalent command line run would be:
% phenix.refine model.pdb data.hkl xray_data.high_resolution=2 xray_data.low_resolution=15 simmulated_annealing=true
ordered_solvent=True adp.tls=“chain A” adp.tls=“chain B” main.number_of_macro_cycles=5
Typical way of phenix.refine run from the command line
1. Get the file with all parameters:%
phenix.refine
--show-defaults=all > parameter_file
2. Edit the file parameter_file:- Remove all parameters that you are not planning to change (make sure to have all { } matched)
- Change the rest of parameters 3. Run phenix.refine as following:
%
phenix.refine
model.pdb
data.hkl
parameter_file
or (If model.pdb and data.hkl are included into parameter_file file)
%
phenix.refine
parameter_file
Useful tip: to compare the set of parameters in your parameter_file file against the set of all default parameters, type:
When running:
%
phenix.refine
model.pdb
data.hkl
each item in
model.pdb
is matched against the CCP4 Monomer Library to
extract the topology and parameters and to automatically build corresponding
restraints.
If
model.pdb
contains an item not available in CCP4 Monomer Library, e.g.
a novel ligand, use
ReadySet!
program to generate topology and parameter
definitions for refinement:
%
phenix.ready_set model.pdb
This will produce the file
LIG.cif
and updated PDB file
model.updated.pdb
with all H atoms added which can be used for refinement:
%
phenix.refine
model.pdb
data.hkl
LIG.cif
Restraints and novel ligands: REEL
%
phenix.reel LIG.cif
Refinement runs required two steps: twinning
Two steps to perform twin refinement:
- run
phenix.xtriage
to get twin operator (twin law):
% phenix.xtriage
data.mtz
- run
phenix.refine
:
Individual neutron and joint X+N refinement
Running joint X/N refinement:% phenix.refine
model.pdb
parameter_file
refinement.input.neutron_data { file_name = data.mtz labels = "F-obs-neutron,SIGF-obs-neutron" r_free_flags { file_name = data.mtz label = "R-free-flags-neutron" } } refinement.input.xray_data { file_name = data.mtz labels = "F-obs,SIGF-obs" r_free_flags { file_name = "data.mtz" label = "R-free-flags" } }
Important remark about free-R flags in joint X+N refinement
• Free-R flags in both datasets (X-ray and neutron) must match, that is: what is test reflection in X-ray dataset, must be a test reflection in neutron dataset. Same for work reflections.• phenix.refine automatically checks for this, and if there is a mismatch, phenix.refine stops and offers two options:
- keep going with existing flags (but keep in mind that Rfree will be unreliable); - create new free-R flags that will be consistent for both datasets.
Model refinement - output
Input command
phenix.refine
model.pdb
data.mtz
[parameters]
Output files
model_refine_001.eff
summary of all input parameters
model_refine_001.geo
summary of all restraints used
model_refine_001.log
complete information about refinement
model_refine_001.pdb
refined structure
model_refine_001_map_coeffs.mtz
Fourier map coefficients
model_refine_002.def
parameters for the next run
If data file is not in MTZ format, or there are multiple data files at input
(example: one with Fobs and the other one with free-R flags), then
phenix.refine will combine them into one MTZ data file called:
model_data.mtz
and this file should be used in all subsequent runs.
Model validation
• Inspect .log file created by phenix.refine.• From PHENIX GUI run “Comprehensive validation” • From the command line type:
phenix.model_vs_data
model.pdb
data.mtz
If
data.mtz
contains several data columns, thenphenix.model_vs_data
model.pdb
data.mtz
--f-obs-label=Fo
In case of neutron data:phenix.model_vs_data model.pdb data.mtz --scattering-table=neutron
Reporting bugs, problems, asking questions
Something didn’t work as expected?... program crashed?... missing feature?...
Bad: silently give up and run away looking for alternative software.
Good: report us a problem, ask a question, request a feature (explain why it’s good to have), ask for help (send data).
Reporting a bug / problem:
Bad: “Hi! phenix.refine crashed and I don’t know why and what to do. Goodbye.” Good: “Hi! phenix.refine crashed. Here are:
1) PHENIX version;
2) The exact command I used;
3) Input and output files (at least logs).”