Although originally developed for fitting crystal structures into cryo-EM densities,
MDFF can also be used to refine structures from low-resolution x-ray crystallographic
diffraction data, termed xMDFF.
For use with low-resolution X-ray crystallography, the MDFF protocol
is modified to work with densities derived from molecular replacement,
which uses the phases
calculated from a tentative model and the amplitudes
from the X-ray diffraction data.
The density is biased by the model, but contains enough information from the
to determine the experimental structure. These densities are created using
the PHENIX
software suite to generate
maps.
Because of this reliance on PHENIX, you will need to have a recent version
installed and executable from the command line, which can be obtained from
http://www.phenix-online.org/.
Unlike in standard MDFF simulations, the density map in xMDFF changes throughout the
course of the refinement. Once the tentative model is fit to the generated density,
the xMDFF-fitted structure provides new
that,
together with
, are used to regenerate
the electron density. The fitted structure is then employed as an updated
search model to be driven into the new density map obtained from a molecular
replacement procedure, and this process continues iteratively until a sufficiently
low
R
and
R
are obtained.
Please note that you should at least briefly read through Section 2 or refer back to it as you work through this section of the tutorial. xMDFF shares many of the same initial steps with MDFF which are covered in earlier sections. Overlapping material will be presented here in a complete yet more concise form to avoid excessive repetition.
Normally xMDFF would require the low-resolution experimental reflection data and an initial homology model or predicted structure to begin refinement. For the following example, we will use the open conformation of the D ribose binding protein (PDB: 1URP) as an initial model and refine it against synthetically created diffraction data from a known closed conformation (PDB: 2DRI) at 5 Å resolution (Fig. 13).
![]() |
The initial steps of xMDFF are identical to a standard MDFF simulation outlined in Section 2 which you should refer to for further information. First we must generate a PSF file to provide NAMD with connectivity and partial aotmic charge information.
mol new 1urp-initial.pdb |
As in previous sections, we need to generate secondary structure, chirality, and cispeptide restraints to help prevent overfitting during the simulation.
ssrestraints -psf 1urp-initial_autopsf.psf | |
-pdb 1urp-initial_autopsf.pdb -o 1urp-extrabonds.txt -hbonds |
mol new 1urp-initial_autopsf.psf | |
mol addfile 1urp-initial_autopsf.pdb |
cispeptide restrain -o 1urp-extrabonds-cispeptide.txt |
chirality restrain -o 1urp-extrabonds-chirality.txt |
mdff gridpdb -psf 1urp-initial_autopsf.psf | |
-pdb 1urp-iniitial_autopsf.pdb -o cagrid.pdb -seltext "name CA" | |
mdff gridpdb -psf 1urp-initial_autopsf.psf | |
-pdb 1urp-iniitial_autopsf.pdb -o backgrid.pdb -seltext "backbone" | |
mdff gridpdb -psf 1urp-initial_autopsf.psf | |
-pdb 1urp-iniitial_autopsf.pdb -o nohgrid.pdb -seltext "protein and noh" |
mdff setup -o 2dri -psf 1urp-initial_autopsf.psf | |
-pdb 1urp-initial_autopsf.pdb | |
-griddx step1.dx | |
-gridpdb cagrid.pdb | |
-extrab {1urp-extrabonds.txt 1urp-extrabonds-cispeptide.txt | |
1urp-extrabonds-chirality.txt} -gscale 0.1 -numsteps 700000 | |
--xmdff -refs 2DRI.mtz |
set REFINESTEP 20000 | |
set REFS 2DRI.mtz | |
set BFS 0 | |
set MASK 0 | |
set CRYSTPDB 0 |
REFINESTEP sets the number of timesteps in between regenerating the density map from
the new phases taken from the current structure. 20,000 was found to provide enough time
for the structure to fit to the current density. You can increase this number to allow
for increased sampling of each density, or lower it to capture smaller changes in phases,
at the cost of computational speed. 20,000 is the defualt value, but this can be
changed with the -refsteps option of mdff setup.
REFS indicates the reflection data file as discussed previously.
BFS turns on (1) or off (0) individual adp refinement using phenix for the calculation of B-factors.
This option causes the refinement to take longer every time a map is
regenerated, and is not necessarily required for this example so we will leave it turned off.
This option can be turned on with mdff setup using the --bfs flag.
MASK turns on (1) or off (0) masking the generated density so that only the density
immediately around the structure is used during fitting. Masking the density can help
remove noise, but is not always needed. This option can be turned on with
mdff setup using the --mask flag.
CRYSTPDB gives the name of a text file (can be a PDB) with a properly formatted
CRYST1 line with space group and unit cell information.
This is not always required as the reflection data file usually contains this information,
but in the case that it does not or is improperly specified, you can supply the
information with this file. This file can be given with mdff setup using the
-crystpdb option.
This section marks the beginning of the most significant changes to the standard MDFF NAMD configuration file. This first block generates the initial density map to which the structure will be fit. If you are restarting from a previous run, it will use the last restart coordinates provided by INPUTNAME as the phasing model. If you are beginning from just a PDB, then that will be used instead. The important part of this section of code is the line beginning exec -ignorestderr vmd ... which runs a tcl script through VMD to perform the required steps of map generation. This script will be investigated in the next section.
if {$ITEMP != $FTEMP} {
set ANNEALSTEP [expr abs($FTEMP-$ITEMP)*100]
run $ANNEALSTEP
set env(VMDARG) [list $PSFFILE $OUTPUTNAME $GRIDFILE $REFS $BFS $MASK $CRYSTPDB $MASKRES $MASKCUTOFF $XMDFFSEL $AVERAGE]
exec -ignorestderr vmd -dispdev text -e xmdff_phenix.tcl > map.log
for {set i 0} {$i < [llength $REFS]} {incr i} {
set grid [expr [llength $GRIDFILE]-[llength $REFS]+$i]
reloadGridforceGrid $grid
}
}
This block of code will perform perform the appropriate amount of steps for any simulated annealing you might do, followed by generating the map just as in the previous section. There is a new command here, reloadGridforceGrid, which tells NAMD to reload the potential map derived from the density which we are fitting to (since we just created a new one).
for {set i 0} {$i < $TS/$REFINESTEP} {incr i} {
run $REFINESTEP
set env(VMDARG) [list $PSFFILE $OUTPUTNAME $GRIDFILE $REFS $BFS $MASK $CRYSTPDB $MASKRES $MASKCUTOFF $XMDFFSEL $AVERAGE]
exec -ignorestderr vmd -dispdev text -e xmdff_phenix.tcl > map.log
for {set j 0} {$j < [llength $REFS]} {incr j} {
set grid [expr [llength $GRIDFILE]-[llength $REFS]+$j]
reloadGridforceGrid $grid
}
}
This is where the standard refinement occurs by running NAMD for the number of specified refinement steps while iteratively re-generating the map each time from the latest restart coordinates.
namd2 2dri-step1.namd > 2dri-step1.log |
mdff check -rmsd |
mdff check -rmsd -refpdb 2DRI.pdb |
In VMD make sure the molecule containing your refinement trajectory is the "top" molecule,
then in the VMD TKConsole type:
set sel [atomselect top "protein and noh"] | |
$sel frame last | |
$sel writepdb final.pdb |
phenix.refine final.pdb 2DRI.mtz refinement.refine.strategy=individual_adp --overwrite
Now we will run phenix.model_vs_data on the structure with the beta factors:
phenix.model_vs_data final_refine_001.pdb 2DRI.mtz > model.log
Once this is complete, you can open model.log with a text editor and view the statistics of your refined structure.
Copy 2dri-step1.namd to 2dri-step2.namd, then
open 2dri-step2.namd with a text editor and make the following changes:
Edit the following lines to reflect these new values:
set GRIDPDB backgrid.pdb to couple all backbone atoms to the density.
set GSCALE 0.3 to increase the global scaling factor of the applied forces.
Add the following line just before OUTPUTNAME:
set INPUTNAME test-step1 to restart from the previous step's progress.
Edit the following line:
set OUTPUTNAME test-step2 to name the output of this simulation as step2.
Run NAMD again using the new configuration file:
namd2 2dri-step2.namd > 2dri-step2.log
Once this simulation is complete, repeat the previous steps by making a 2dri-step3.namd
and using the nohgrid.pdb as the GRIDPDB and increasing the GSCALE to 0.6.
You should also experiment with using kicked maps and beta factor sharpening for different
steps and analyze the difference in the resulting structures. An example of a more complete refinement
trajectory, 2dri_result.dcd, can be found in the tutorial files.