3DNA can build DNA/RNA structures with a precise base but approximate sugar-phosphate backbone geometry. In the 2003 3DNA-NAR paper, Table 3 of the section “Structures built with sugar–phosphate backbone” lists “root mean square deviation (in Å) between rebuilt 3DNA models and experimental DNA structures” for three representative DNA structures (in A-form, B-form, and a protein-DNA complex). It was noted that The RMSD of reconstructed versus observed base positions is virtually zero and that for both base and backbone coordinates is <0.85 Å, even for the 146 bp nucleosomal DNA structure.
The backbone geometry is approximate because 3DNA uses a fixed sugar-phosphate conformation (in A-DNA, B-DNA or RNA) that is attached to the corresponding bases in the model building process. The most noticeable effect is the long O3′(i)···P(i+1) bond that connects consecutive nucleotides along a chain. The imprecise structure was intended as a starting point for other objectives (e.g., all-atom molecular dynamics simulations) that are out of the design scope of 3DNA. Nevertheless, over the years, I have been concerned with the overlong O3′—P distance issue. I tried but failed to find a satisfying third-party (command-line driven) tool that can perform restraint optimization of the sugar-phosphate backbone geometry while keeping base atoms fixed.
The problem was finally solved after I attended the 43rd Mid-Atlantic Macromolecular Crystallography Meeting held at Duke University a few months ago. At the meeting, I had the opportunities to talk to several members of the PHENIX team. Particularly, Jeff Headd revised the geometry_minimization
component of PHENIX to do the trick. Here is the mail reply from Jeff, using a 3DNA-generated DNA duplex (355d-3dna.pdb
) as an example (see full details below):
Here’s a first go at refining just the backbone atoms of you input DNA model. You’ll need the most recently nightly build of Phenix (dev-1395 would work) and then run:
phenix.geometry_minimization 355d-3dna.pdb min.params
using the attached min.params file.
What I specify in the params file is to only move the backbone atoms, which I’ve done with a selection. You can modify the atoms that are allowed to move to your liking.
The only other change was to allow longer distance linkages, as some of the backbone linkages start quite far apart.
The content of file min.params
is:
pdb_interpretation { link_distance_cutoff = 7.0 } selection = name " P " or name " OP1" or name " OP2" or \ name " O5'" or name " C5'" or name " C4'" or \ name " O4'" or name " C3'" or name " O3'" or \ name " C2'"
To make the story complete, given below is the step-by-step procedure, using 355d, a B-DNA dodecamer at 1.4 Å resolution as an example. The corresponding PDB file is named 355d.pdb
.
find_pair 355d.pdb stdout | analyze stdin x3dna_utils cp_std bdna rebuild -atomic bp_step.par 355d-3dna.pdb # the rebuilt structure is called '355d-3dna.pdb' # with Phenix dev-1395 and above phenix.geometry_minimization 355d-3dna.pdb min.params # the optimized structure is called '355d-3dna_minimized.pdb' # to verify: find_pair 355d-3dna.pdb stdout | analyze stdin find_pair 355d-3dna_minimized.pdb stdout | analyze stdin # check files '355d-3dna.out' and '355d-3dna_minimized.out'
The three key files mentioned above are provided here for your verification:
Finally, the following figure illustrates the B-DNA dodecamer duplex in experimental (left), 3DNA-generated (middle) and PHENIX-optimized (right) coordinates. Note that disconnected O3′—P linkages (marked by red dots for two cases, see bottom of the middle image) due to overlong distances in 3DNA-rebuilt structure are fixed following the restraint PHENIX optimization.
355d-experimental | 3DNA-rebuilt | PHENIX-optimized |
Note added on 2016-11-11: In the min.params
file, the selection
is in one long line. For illustration purpose, the selection
section (see below) is split into serveral short lines in the blog post. However, PHENIX requires ending backslashes (\
) to combine the split lines into a single grammatical unit. I was not aware of this strict rule, and missed to add the ending \
s in the original post. Thanks to Oleg Sobolev from the PHENIX team for pointing out this omission to my attention. Note that the content of min.params
did not have a problem, and thus no change is made.
pdb_interpretation { link_distance_cutoff = 7.0 } selection = name " P " or name " OP1" or name " OP2" or \ name " O5'" or name " C5'" or name " C4'" or \ name " O4'" or name " C3'" or name " O3'" or \ name " C2'"