3DNA logo A Software Package for the Analysis, Rebuilding, and Visualization of Three-dimensional Nucleic Acid Structures
Xiang-Jun Lu & Wilma K. Olson

3DNA was created in the hope that it will be useful, but without any guarantees. Nothing is perfect, and we strive to improve its functionalities. Any comments, constructive suggestions, and bug reports are welcome.
 

Frequently asked questions

  1. How do I cite 3DNA?
  2. What is the correct name of the package: 3DNA or X3DNA?
  3. Is the source code available?
  4. How do I build an A- or B-form DNA model with a particular base sequence?
  5. How do I build a nucleic acid structure with a sugar-phosphate backbone?
  6. How to fix missing (superfluous) base pairs identified by find_pair?
  7. How to handle modified (uncommon) bases?

How do I cite 3DNA?   [Back to Top]

Please use the following literature reference: Xiang-Jun Lu & Wilma K. Olson (2003). "3DNA: a software package for the analysis, rebuilding and visualization of three-dimensional nucleic acid structures", Nucleic Acids. Res., 31(17), 5108-5121.

What is the correct name of the package: 3DNA or X3DNA?   [Back to Top]

The "official" name of the package is 3DNA. In setting up the system, an environment variable called X3DNA is needed. Since an environment variable cannot start with a numerical value, an "X" was added before 3DNA, meaning eXecuting 3DNA. It should be noted that some sites linking to 3DNA use the term X3DNA.

The term 3DNA is not unique to our package. A Google search reveals at least two other products that use this name.

Is the source code available?   [Back to Top]

The program is currently available in compiled versions.

How do I build an A- or B-form DNA model with a particular base sequence?   [Back to Top]

The easiest way to build a canonical double helical structure of specific sequence is to use the fiber program. The default option is structure #4, which corresponds to the calf thymus B-DNA double helix due to Struther Arnott. To build the A-form, the user should choose structure #1. The program will automatically request the desired sequence of bases (A, C, G, T).

Coordinates of these two structures are taken from Struther Arnott: "Polynucleotide secondary structures: an historical perspective", pp. 1-38 in "Oxford Handbook of Nucleic Acid Structure", edited by Stephen Neidle (Oxford Press, 1999).

How do I build a nucleic acid structure with a sugar-phosphate backbone?   [Back to Top]

The easiest way to build a nucleic acid structure with the sugar-phosphate backbone, other than predefined fiber models, is to use the rebuild program. The backbone building scheme uses exactly the same protocol as the default base-only model building scheme. The user needs to add the -atomic option to rebuild, and to choose the desired rigid sugar-phosphate backbone to be attached to the standard base geometry.

The four currently available backbones are listed in the directory X3DNA/BASEPARS/ATOMIC. To use any of these backbones, it is necessary to copy the five standard nucleotide files associated with each backbone to X3DNA/BASEPARS or your current working directory, and to name each nucleotide as follows: Atomic_X.pdb (X = A, C, T, G, U etc). The default Atomic_X.pdb files contains only the C1' backbone atom. The base geometry is independent of the backbone conformation.

To build a DNA structure with B-DNA backbone conformation, for example, one uses the BDNA_stdX.pdb set to replace Atomic_X.pdb. There is a simple utility program cp_std (in Perl) to help with this: cp_std BDNA. This program will copy BDNA_stdX.pdb to the current working directory and rename it Atomic_X.pdb. Please note that rebuild searches for Atomic_X.pdb files first in the current working directory, then in $X3DNA/BASEPARS, and finally in $HOME/X3DNA/BASEPARS.

To make this clear, here is an example. Go to the directory X3DNA/Examples/Analyze_Rebuild, and try to reproduce the following:

  • use the command, cp_std BDNA, so that you will have Atomic_X.pdb
  • use find_pair -t bdl084.pdb stdout | analyze, to analyze the structure bdl084 and to generate a file named bp_step.par
  • use rebuild -atomic bp_step.par bdl084_3dna.pdb, to generate the PDB file bdl084_3dna.pdb with a standard B-backbone

The RMSD between all atoms in the original bdl084.pdb file and the generated bdl084_3dna.pdb file is only 0.73 Å. Please note that in the rebuilt bdl084_3dna.pdb file, some O3'(i-1) to P(i) linkages can be quite long (broken). This structure can be easily minimized to obtain a better backbone linkage.

How to fix missing (superfluous) base pairs identified by find_pair? [Back to Top]

Structural analysis of nucleic acid used to be a rather tedious process, especially for irregular, complicated RNA structures and nucleic acid - protein complexes (e.g., the large ribosomal subunit 1jj2/RR0033). Without valid base-pairing information as input, the various analysis software will produce meaningless results. The program find_pair was originally created to solve this specific problem, by generating input file to 3DNA analysis routines directly from a PDB file.

In its core, find_pair uses a pure geometric approach to identify all possible pairs (canonical A-T and C-G, or whatever pairs that actually exist in a structure), their H-bonding patterns and helix context. Specifically, the major criteria used are as follows:

  • The distance between the origins of the two bases (as defined by their standard reference frames) must be less than certain limit (15.0 Å by default) - otherwise, they would be too far away to be called a pair.
  • The vertical separation (i.e., stagger) between the two bases must be less than certain limit (2.5 Å by default) - otherwise, they would be stacking instead of pairing.
  • The angle between the two base z-axes (i.e., their normal vectors) is less than a cut-off (65.0° by default).
  • There is at least one pair of nitrogen/oxygen base atoms that are within a H-bonding cut off distance (4.0 Å by default).

If two bases fulfill these geometric requirements, they are defined to be a pair, without taking consideration of their chemical constituents. Thus our method allows for identification of unconventional pairs as easily as the canonical ones. The program then checks for possible H-bonding patterns, whether the normal donor-acceptor (noted by '-' as in O6 - N4 for a G·C pair) or the unusual donor-donor, acceptor-acceptor (noted by '*' as in O2 * N3 for a C·C pair in urx057). The non-canonical pairs, especially those with unusual H-bonding patterns, should be checked more carefully - they could be due to errors in structure determination, or they could have some special meaning/significance unnoticed previously. In this regard, users would find it helpful to search the web-based database system developed in Olson's lab which contains all base pairs collected from the NDB structures.

The default criteria mentioned above are based on a survey of the NDB structures. General speaking, they are pretty generous and work quite well in the most common cases we've encountered. However, we are aware of the possibilities of special cases where some of them might be too restrict or too generous, thus leading to find_pair to miss or produce superfluous base pairs. The default settings are stored in a text file named misc_3dna.par under the directory $X3DNA/BASEPARS where users can modify as they see fit. Changes in that directory will have a global effect - wherever you run find_pair on your system, the modified values will be used. Alternately, users could make a copy of misc_3dna.par to their current working directory and change it over there for local effect.

As an example, find_pair will miss the 127th base-pair I:..53_:[..T]T-----A[..A]:.-53_:J in structure 1kx5/PD0287 in its default settings. This is because the H-bonding distance between T:N3 - A:N1 is 4.20 Å and that for T:O4 - A:N6 is 4.85 Å; both of them are larger than the default 4.0 Å cut off. Increasing the H-bonding criterion in file misc_3dna.par from 4.0 Å to 5.0 Å will solve this problem. Please note that in 3DNA, users can start directly from the PDB file (uncompressed), without needing to extract the DNA fragment first:

  • find_pair -t pdb1kx5.ent pdb1kx5.inp to get input file for analyze
  • analyze pdb1kx5.inp to get detailed structural parameters in file pdb1kx5.out
  • The above two steps can be combined into one: find_pair -t pdb1kx5.ent stdout | analyze

How to handle modified (uncommon) bases? [Back to Top]

3DNA has been designed with modified bases in mind, and it provides a simple scheme to solve this common problem.

As always, the procedure is best illustrated using a working example. The following one is based on the case raised by a 3DNA user, concerning model #12 of NMR structure 1GV6.

  • ex_str -nmr -12 1GV6.pdb model_12.pdb to extract model #12 from PDB file 1GV6.pdb using a utility program ex_str
  • find_pair -t model_12.pdb model_12.inp to find base-pairs. find_pair will complain for unknown residue ATL 2 on chain A [#2], and ask user to check the base and add one more item in file baselist.dat. By default, file baselist.dat is stored in directory $X3DNA/BASEPARS.
  • File baselist.dat includes numerous examples and instructions (at the top) on how to add new entries in it. For the above example, one would add ATL t to BASEPARS/baselist.dat to let 3DNA know that ATL corresponds to a modified "t" (thymine). This information is used in a ls-fitting procedure to define the standard base reference frame for ATL. After adding necessary new entries in baselist.dat as the one for ATL, find_pair and analyze will run happily.

Ideally, we could keep an updated file baselist.dat at this website so users can download it. In practice, however, this has never been a problem: as long as users know the underlying principle, as documented here, they can add the necessary entries easily.

As with misc_3dna.par mentioned in the previous FAQ, modified $X3DNA/BASEPARS/baselist.dat has a global effect, whilst ./baselist.dat influences only current working directory.

Space gif image Spacer gif image