Thanks for visiting the 3DNA website. With the support from a dedicated NIH grant, I’ve been able to set up a domain name for 3DNA ( to host the homepage ( and the forum ( What to know more about 3DNA? Browse around, and ask questions — I greatly appreciate all user feedback.

Listed below are news items related to 3DNA’s further development.

  • 2017-03-13* — DSSR v1.6.7-2017mar14 released: fixed a bug in derived dot-bracket notation (DBN) with pseudoknots in special cases; revised --json to work with --get-hbonds for a full list of all H-bonds (DSSR and SNAP); changed type=O to type=X for eXtended A-minor motifs to avoid confusion with the previously documented type 0; lowered the default angle for splayed-apart dinucleotides from 100 degrees to 85; miscellaneous code/documentation refinements.

  • 2017-02-20* — DSSR v1.6.6-2017feb20 released: extended A-minor motifs to include a miscellaneous type other than I and II; added groove widths to helices/@stems@ and sequential number to nts of the JSON output; updated the user manual.
  • 2017-01-22DSSR v1.6.5-2017jan22 released: revised detection of pairs and helices/stems in rare cases; miscellaneous minor refinements.
  • 2016-12-14 — 3DNA v2.3-2016dec14 released: revised find_pair to work properly for circular DNA double helices (such as 4nnu) — thanks to Zukang Feng (RCSB PDB) for drawing this issue to my attention. Note that DSSR does not have such deficiency and it works for circular DNA.
  • 2016-11-19DSSR v1.6.4-2016nov19 released: refined detection of base multiplets; added the characterization of terminal bases of helices/stems in the ‘Summary’ section; revised Jmol-DSSR web interface.
  • 2016-11-16 — 3DNA v2.3-2016nov16 released: added the --pauling option to the fiber program for easy generation of DNA/RNA triplex models based on Pauling and Corey, revised fiber to run consistently in Windows as in Linux and Mac OS X, removed the ditrbuted tarball for Cygwin since the Msys2 version runs in native Windows as well as in MinGW/MSYS and Cygwin.
  • 2016-10-19DSSR v1.6.3-2016oct19 released: added a new section of splayed-apart dinucleotides and larger units; plus miscellaneous code refinements and minor bug fixes.
  • 2016-09-19DSSR v1.6.2-2016sept19 released: refined the algorithm for identifying kink-turns (K-turns), among many other internal improvements.
  • 2016-09-06 — 3DNA v2.3-v2.3-2016sept06 released: made the C source code freely available; added reference to the A/B index parameter in the main output file.
  • 2016-08-22DSSR v1.6.1-2016aug22 released: added the identification and characterization of i-motifs (e.g., 1a83 and 2n89); refined algorithms for the identification of H-bonds and helices; miscellaneous code refactoring.
  • 2016-08-06DSSR v1.6.0-2016aug06 released: added the --pair-list option to allow for user customizations of base pairs to be analyzed; added an analysis of the global curvature for each nucleic acid chain; plus various code refinements.
  • 2016-07-22DSSR v1.5.9-2016jul22 released: further refinements of the algorithm for H-bonding detection.
  • 2016-06-16DSSR v1.5.7-2016jun16 released: refined the algorithm for H-bonding detection in corner cases (such as G-tetrads with poor geometry).
  • 2016-06-09DSSR v1.5.6-2016jun09 released: revised the summary line of DNA/RNA chains when multiple models are involved; consolidated/extended cartoob-block related functionality; internal code refinements and minor bug fixes.

Furthermore, although the recently released beta-r06-2015oct23 version of 3DNA-SNAP (Lu and Olson 2008) is able to distinguish between such errors, and accurately detects stacking interactions between nucleobases and amino acids, it unfortunately is currently unable to identify T-shaped interactions (see, for example, Supplemental Table S1).

  • 2016-05-25DSSR v1.5.5-2016may25 released: added the --view option (and related variants) to reset a structure via the principle moment of inertia, as in rotate_mol of 3DNA. The output orientation is in the most extended form, vertically; option --blocview (or --block-view, --cartoon-block-view) is also accepted to mimic the 3DNA blocview script; simplified the command-line help/examble message, and revised the user manual accordingly.
  • 2016-05-21SNAP beta-r07-2016may21 released: fixed the Segmentation fault bug (due to undefined reference frames for certain amino acids with missing side-chain atoms); miscellaneous internal code refinements.
  • 2016-05-16DSSR v1.5.4-2016may16 released: significantly refined and extended the --frame option to reorient a structure based on a selected reference frame, including the middle frame of two base-pair frames, as in frame_mol of 3DNA; added output of the suite string in ‘dssr-torsions.txt’; minor bug fixed and refinements; updated user manual.
  • 2016-04-11DSSR v1.5.3-2016apr11 released: derived a set of virtual torsion angles using the phosphorus atoms and base origins (see output file ‘dssr-torsions.txt’). This set of P-base virtual torsions was first implemented in analyze -torsion of 3DNA v2.1, released in early 2012. See my blogpost titled Pseudo-torsions to simplify the representation of DNA/RNA backbone conformation (dated 2012-04-22) for details. Moreover, functions related to the --block-color option have been refined.
  • 2016-04-01 — 3DNA v2.3-v2.3-2016apr02 released: added the --abi option (A/B index) to the 3DNA analyze program to follow the transition between A- and B-form DNA. This work is in collaboration with Dr. Steve Harvey.
  • 2016-04-01DSSR v1.5.2-2016apr02 released: added the --block-color option to facilitate flexible color customizations of blocks/edges (e.g. minor groove); expanded the definition of junction loops to include the special case of a kissing loop motif mediated by an isolated canonical pair (e.g., 1ehz); various minor internal refinements.
  • 2016-03-11DSSR v1.5.1-2016mar11 released: miscellaneous code refinements and function enhancements.
  • 2016-02-12DSSR v1.5.0-2016feb12 released: removed the obsolete --jmol option since the DSSR-Jmol integration is now better served via JSON; added more styles in the cartoon-block representation.
  • 2016-01-25DSSR v1.4.9-2016jan25 released: fixed inconsistency in the dot-bracket-notation (dbn) output section regarding chain names with more than 1-char (as for 1vy6, in .cif format) — thanks to Eugene for reporting the bug; refined .r3d output of base blocks for PyMOL rendering, following feedback from Thomas Holder.
  • 2016-01-20 — 3DNA v2.3-2016jan20 released: refined the code and section note of the ‘simple’ base-pair and step parameters. This functionality is no longer marked as ‘experimental’, but regarded as an integral component of 3DNA v2.3. These ‘simple’ parameters are more ‘intuitive’, useful for describing structures with non-Waton-Crick pairs.
  • 2016-01-16DSSR v1.4.8-2016jan16 released: refined the definition of extended base-pair names (”~Wobble”, “~Hoogsteen”, “~rHoogsteen”, and “~Shear”); fixed a bug in the identification of G quartets in rare cases.
  • 2016-01-06DSSR v1.4.7-2016jan06 released: extended definition of base-pair names, with “~Wobble”, “~Hoogsteen”, “~rHoogsteen”, and “~Shear” for corresponding pairs with similar geometry but sequences other than G–U, A+U, A–U, G–A, respectively.
  • 2016-01-01 — 3DNA v2.3-2016jan01 released: a new experimental section of ‘simple’ base-pair and step parameters is now provided by default, useful for a more ‘intuitive’ description of structures with non-Waton-Crick pairs; various other refinements.
  • 2015-12-16DSSR v1.4.6-2015dec16 released: refined detection of H-bonds, base-pairs, multiplets, and helices for boundary cases.
  • 2015-11-18DSSR v1.4.4-2015nov18 released: refined detection of base-pairs and multiplets in boundary cases; made the output of base-capping interactions by default (i.e., the --more option is no longer needed to be specified).
  • 2015-10-23SNAP beta-r06-2015oct23 released: added detection of aromatic stacking interactions between bases and amino acids. Behind the scene, there have been numerous code refinements to SNAP. It shares the same new codebase with DSSR, and both programs are always compiled and released simultaneously.
  • 2015-10-23DSSR v1.4.3-2015oct23 released: added detection of metallo-base pairs, such as T-Hg-T (4l24) and C-Ag-C (5ay2) from the work of Kondo et al.
  • 2015-10-19 — 3DNA v2.3-2015oct19 released: (1) set ‘stdout’ as the default output of find_pair and ‘stdin’ as the default input of analyze to facilitate piping: find_pair 355d.pdb | analyze. This change makes the most common use-case easier to type, and it is compatible with previous releases; (2) fix a bug in unconventional glycosidic linkage, such as C1‘–C1 in DY (3) added -symm to handle symmetric-related units in X-ray crystal structures (e.g., 4ms9) together; (4) numerous minor refinements.
  • 2015-10-19DSSR v1.4.2-2015oct19 released: revised code for circular DNA or RNA molecules and unconventional glycosidic linkages (such as C1‘–C1 in DY).
  • 2015-10-12DSSR 1.4.1-2015oct12 released: checked for potential erroneous usage of option --symmetry with an NMR ensemble (which leads to DSSR effectively taking the models all together); revised output width of id strings.
  • 2015-10-10DSSR v1.4.0-2015oct10 released: introduced the --nmr option to facilitate processing of NMR ensembles or trajectories of molecular dynamics simulations; added a new section summarizing structural features per nucleotide. Up to this point, DSSR contains all the fundamental features I have had in mind!
  • 2015-10-08DSSR v1.3.9-2015oct08 released: simplified diagnostic message, and refactored code.
  • 2015-10-02DSSR v1.3.8-2015oct02 released: added option --cartoon-block, plus a few minor refinements.
  • 2015-10-01DSSR v1.3.7-2015oct01 released: added option --symmetry (short form: --symm) to take symmetry-related MODEL/ENDMDL ensemble as a whole. This option is useful for x-ray crystal structures where the asymmetric unit is ‘half’ of the biological unit (e.g., PDB id: 467dx3dna-dssr -i=467d.pdb1 --symm).
  • 2015-09-18DSSR v1.3.6-2015sep18 released: revised JSON output for better DSSR-Jmol integration (thanks to Dr. Robert Hanson). Specifically, a “metadata” property is introduced to collect miscellaneous information, thus simplifying the top-level name space. Moreover, “ntParams” is renamed “nts” for consistency.
  • 2015-09-09DSSR v1.3.5-2015sep09 released: bug fixes for edge cases in JSON output, based on tests against all nucleic acid structures in PDB; minor code refactoring. The DSSR JSON output has now reached a stable, useable state.
  • 2015-09-06DSSR v1.3.4-2015sep06 released: fixed a bug in parsing .cif files as in PDB entry 5aj0 (thanks to Eugene for reporting the issue).
  • 2015-09-03DSSR v1.3.3-2015sep03 released: added output of reference frames of bases and base-pairs in JSON, exposing more of DSSR’s functionality to other third-party tools (e.g., for visualization).
  • 2015-09-02DSSR v1.3.2-2015sep02 released: introduced a new set of “simple” base-pair (bp) parameters that are more intuitive for non-canonical bps. The simple parameters, including Shear, Stretch, Buckle and Propeller, are for structural description only, not suitable for model rebuilding. The non-planarity bp parameters, Buckle and Propeller in particular, have recently received attention in the RNA structure community. This simple set of bp parameter is provided to make DSSR more readily accessible to X-ray crystallographers or cryo-EM practitioners. The new parameters complement, but not replace, the original six rigid-body bp parameters for rigorous description and exact rebuilding of nucleic acid structures.

    When the --more option is specified, the new parameters are available in the main output file, taking an extra line for each bp. For --non-pair, the inter-base angle and minimum distance between base atoms are also listed. The new additions break backward compatibility of the main output file; use the --nar option to stay with DSSR v1.2, as reported in the NAR article. Better yet, users are strongly encouraged to switch to the JSON output format for better connection with DSSR.
  • 2015-08-29DSSR v1.3.1-2015aug29 released: revised tag names for the --json output based on feedback from Dr. Wilma Olson; along the line, changed the file name ‘dssr-a2bases.pdb’ to ‘dssr-atom2bases.pdb’ to make its meaning more explicit for atom over base capping interactions.
  • 2015-08-27DSSR v1.3.0-2015aug27 released: added option --json to collect all DSSR-derived structural features in the standard JSON data exchange format. This single JSON file makes DSSR results easily parsable, allowing for its seamless integration with other RNA bioinformatics tools. Plus various other minor refinements.
  • 2015-07-25DSSR v1.2.9-2015jul25 released: added a new section with details for Reproducing results published in the DSSR-NAR paper to the 3DNA Forum, and documented several additional auxiliary options in the User Manual.
  • 2015-06-15DSSR v1.2.8-2015jun15 released: added a new section titled “Additional options” to the User Manual; refined the algorithm for hydration identification.
  • 2015-06-09 — 3DNA v2.2-2015jun09 released: refined parser for input parameter files to the rebuild program; DSSR v1.2.7-2015jun09 released: documented two related options: --prefix to customize the prefix of DSSR auxiliary files, and --cleanup to remove those files.
  • 2015-05-03SNAP beta-r05-2015may03 released: added option --get-hbond to output a list of H-bonds between protein and nucleic acid; numerous internal code refinements.
  • 2015-04-10 — 3DNA v2.2-2015apr10 released: This is the first v2.2 release of 3DNA. The -c1 option is added to the ‘analyze’ program to calculate six local base-pair step parameters based on consecutive C1'--C1' vectors. The numerical values of this new set of parameters are sensible even for dinucleotide steps involving non-Watson-Crick (such as Hoogsteen) base pairs. This novel feature should help clarify the long-standing issue of “weird” step parameters (e.g., twist/rise) involving non-WC pairs, which has become increasing frequent even in DNA structures. Also in this release, the Ruby script x3dna_ensemble analyze and the rebuild program are refined, based on user feedback.
  • 2015-03-28DSSR v1.2.6-2015mar28 released: revised the interpretation of DSSR to “Dissecting the Spatial Structure of RNA”; added a new option --loop-isolated-pair to exclude isolated canonical pairs in delineating loops; updated the user manual (now 60 pages).
  • 2015-03-19DSSR v1.2.5-2015mar19 released: revised the helix/stem detection algorithm for circular DNA/RNA structures.
  • 2015-03-11 — 3DNA v2.1-2015mar11 released: refined the algorithm for identifying nucleotides; updated the baselist.dat file.
  • 2015-03-03DSSR v1.2.4-2015mar03 released: refined the algorithm for assigning dot-bracket notation (dbn) in rare cases, plus miscellaneous minor improvements.
  • 2015-02-18DSSR v1.2.3-2015feb18 released: improved the identification of multiplets.
  • 2015-02-06DSSR v1.2.2-2015feb06 released: refined the algorithm for assigning helices, plus several code refactoring and enhancements.
  • 2015-02-01DSSR v1.2.1-2015feb01 released: added the functionality for the characterization of H-type pseudoknots and refined the underlying algorithms for identifying H-bonds and base pairs.
  • 2015-01-01DSSR v1.2.0-2015jan01 released: numerous code refinements and refactoring; added classification of base-stacking interactions (option --non-pair); introduced the helix index that an isolated canonical pair is part of; included metal coordination bonds that phosphate OP1/OP2 atoms are involved in (option --po4); replaced option --long-idstr with --idstr; made option --nested explicit; added a new section on base stacks.
  • 2014-12-22 — 3DNA v2.1-2014dec22 released: added checking for Z-RNA (as in 1t4x); refined the PDB parser; updated the baselist.dat file.
  • 2014-11-04DSSR v1.1.10-2014nov04 released: refined the algorithm for identifying multiplets; expanded option --non-pair to include all non-pairing interactions; various minor improvements.
  • 2014-10-22DSSR v1.1.9-2014oct22 released: refined H-bond identification and significantly fine-tuned base pair classification; updated the user manual.
  • 2014-10-09DSSR v1.1.8-2014oct09 released: fixed a bug in assigning G+A pairs to Saenger type X (10); further refined algorithms for finding H-bonds and base pairs.
  • 2014-09-30SNAP beta-r04-2014sep30 released: removed the (undocumented) --rna option so that RNA-protein complexes are handled the same way as DNA-protein complexes; relaxed default settings so SNAP now runs on pure nucleic acid or protein structures in addition to their complexes; added DSSP output for the protein component in file snap-dssp.txt.
  • 2014-09-24DSSR v1.1.7-2014sep24 released: added auxiliary files (where available) dssr-bulges.pdb, dssr-iloops.pdb and dssr-junctions.pdb to parallel dssr-hairpins.pdb; further refined the algorithm for H-bond detection; significantly improved the User Manual — by switching to LaTeX, all the hyperlinks and cross references are active, and the excerpted output listings in the manual are auto-synced with the latest DSSR release via a Ruby script.
  • 2014-09-16SNAP beta-r03-2014sep16 released: listed base-amino acid pseudo-pairs and output an associated PDB ensemble file (snap-pseudoPairs.pdb); significant code speed-up.
  • 2014-09-09DSSR v1.1.6-2014sep09 released: refined algorithms for detecting H-bonding and base-stacking interactions; removed the 4-line header in .bpseq output; checked for chain breaks in pseudoknot report; various code polishing.
  • 2014-08-28DSSR v1.1.5-2014aug28 released: added the section of atom-base stacking interactions (as in the case of the phosphate OP2 atom of G57 capping over the uracil ring of PSU55 in tRNA 1ehz); significantly sped up the --non-pair and --phosphate options; miscellaneous code refinements.
  • 2014-08-09DSSR v1.1.4-2014aug09 released: added the option --nest to remove pseudo-knots (if any), leaving only nested pairs; added a new section to list modified nucleotides; numerous minor refinements.
  • 2014-06-18DSSR v1.1.3-2014jun18 released: refined the algorithm for deriving dot-bracket notation (.dbn) in RNA structures with higher-order pseudo knots (thanks to Jan Hajic); added secondary structure output in .bpseq format to parallel .ct and .dbn; miscellaneous code improvements.
  • 2014-05-31SNAP beta-r02-2014may31 released: added detailed listing of H-bonding interactions between a component of nucleotide (base/phosphate/sugar) and an amino acid.
  • 2014-05-23 — 3DNA v2.1-2014may23 released: refined the heuristic for auto-identification of nucleotides from atomic coordinates; updated baselist.dat file.
  • 2014-05-05SNAP beta-r01-2014may05 released: initial release to kick the ball rolling. SNAP is a new 3DNA for the characterization of three-dimensional Structures of Nucleic Acid-Protein complexes. It identifies base-AA or BP-AA interactions based on a distance cutoff (default to 4.5 angstrom), calculates six parameters to uniquely quantify the spatial relationships, and sets the coordinates in the standard base or BP reference frame for easy visualization and for deriving knowledge-based potentials.
  • 2014-04-19DSSR v1.1.2-2014apr19 released: added the option --torsion360 to output (virtual) torsional angle in the range of [0, 360] instead of the default range [-180, +180], following Cathy Lawson’s suggestion renamed 00-n/a to n/a for unclassified Saenger pairs, plus a few other refinements of the User Manual based on feedback from Pascal Auffinger; revised A-minor separator character from / to | (i.e., from A/G-C to A|G-C) based on communications with Bob Hanson.
  • 2014-04-11DSSR v1.1.1-2014apr11 released: added the option --get-hbonds to find and output all H-bonds in a structure; renamed file ‘dssr-torsions.dat’ to ‘dssr-torsions.txt’; update the User Manual (50 pages).
  • 2014-04-09DSSR v1.1.0-2014apr09 released: denoted unnamed bps as -- for easy parsing (thanks to feedback from Dr. Robert Hanson); added helical radius info for helices/stems, and made the helical rise parameter explicit (thanks to Dr. Wilma Olson); changed _pars to -pars in the output file for consistency; upgraded DSSR to v1.1.0-2014apr09 due to format changes.
  • 2014-04-04DSSR v1.0.6-2014apr04 released: revised the algorithm for detecting kissing loops, plus other minor refinements; updated the User Manual accordingly.
  • 2014-03-25 — 3DNA v2.1-2014mar25 released: refined identification of nucleotides from atomic coordinates; updated baselist.dat file; plus a few minor revisions.
  • 2014-03-24DSSR v1.0.5-2014mar24 released: removed the --note option which has become redundant with notes in the main output file and the DSSR User Manual; shortened output from the --help option by deleting the ‘Summary’ section; minor code refinements. Added the overlooked subsection “Orientation of helices/stems” and fixed a few typos and inconsistencies in the User Manual (48 pages).
  • 2014-03-19DSSR v1.0.4-2014mar19 released: minor updates on notes in the main output file to synchronize with an significantly improved DSSR User Manual (46 pages) based on feedback from Dr. Wilma Olson.
  • 2014-03-09DSSR v1.0.3-2014mar09 released: various improvements for consistency, and finally and most importantly, the DSSR User Manual (45 pages) is out!
  • 2014-02-16DSSR v1.0.2-2014feb16 released: numerous minor refinements, mostly as a result of writing up the DSSR User Manual (coming soon!).
  • 2014-01-31DSSR v1.0.1-2014jan31 released: refined the algorithm for detecting multiplets [thanks to Eugene]; fixed a bug for handling circular DNA/RNA structures [thanks to Pascal]; plus consistency improvements.
  • 2014-01-25DSSR v1.0-2014jan25 released: the program is robust and mature enough to warrant a v1.0 release. While DSSR will be continuously refined, top priority will be on bug fixes. Wherever practical, future DSSR v1.x releases will remain backward compatible.
  • 2014-01-18DSSR beta-r30-on-20140118 released: considerably improved annotation and consistency of the main DSSR output file with help from Dr. Wilma Olson, refined algorithms for detecting internal and junction loops, added output of secondary structures in the connect (.ct) format and the extended DBN notation to allow for multiple molecules or fragments, removed the --break-symbol option. This will be the last beta release, and shortly we will move to DSSR v1.0! Please give it a try and let me know anything you’d like to change!
  • 2014-01-06DSSR beta-r29-on-20140106 released: significantly improved the algorithms for detecting various loops (hairpin, bulge, internal or junction loops), covering many corner cases. List of nucleotides in loops and single-stranded fragments are now presented consistently. Plus many code refinements. DSSR is now mature and should be mostly stable, ready to quickly move over the ‘beta’ stage. This is a major revision with format changes, and all current DSSR users are encouraged to upgrade.
  • 2013-12-25DSSR beta-r28-on-20131225 released: fixed a bug for missing 0-by-N type (right-side) bulge. Thanks to Eugene.
  • 2013-12-03DSSR beta-r27-on-20131203 released: added the missing [ in detailed output of base-pair parameters for helices/stems. Thanks to Eugene.
  • 2013-11-28DSSR beta-r26-on-20131128 released: code refinements and refactoring, plus minor bug fixes.
  • 2013-11-19DSSR beta-r25-on-20131119 released: added option --break-symbol to delineate chain breaks in dot-bracket notation; listed terminal single-stranded segments; plus code refinements/refactoring.
  • 2013-10-30DSSR beta-r24-on-20131030 released: simplified the algorithm for identifying nucleotides based on coordinates, and added annotation for the Levitt pair as in tRNA.
  • 2013-09-18DSSR beta-r23-on-20130918 released: bug fixes on U-turn identification and missing base pairs.
  • 2013-09-10DSSR beta-r22-on-20130910 released: minor bug fixes and code refinements; release the DSSR web-interface.
  • 2013-09-03DSSR beta-r21-on-20130903 released: fixed a rare bug (thanks to Pascal), and refined the mmCIF parsing code.
  • 2013-08-30DSSR beta-r20-on-20130830 released: added option --u-turn to detect UNR- or GNRA-type U-turns, plus numerous code refinements.
  • 2013-08-19DSSR beta-r19-on-20130819 released: added option --po4 (--phosphate) to list H-bonds involving phosphate groups; removed the segid info from nucleotide id-string by default; refined code internally and fixed minor bugs.
  • 2013-08-01DSSR beta-r18-on-20130801 released: added support for the mmCIF format refined code for parsing the PDB format.
  • 2013-07-23DSSR beta-r17-on-20130723 released: assigned backbone suite names (in file "dssr-torsion.dat") following Richardson et al. RNA backbone: consensus all-angle conformers and modular string nomenclature, plus numerous code refinements and help-note revisions.
  • 2013-07-10 (3DNA v2.1) — updated README files and scripts in X3DNA/examples/ to v2.1 (a long overdue!), plus various other minor revisions.
  • 2013-07-09DSSR beta-r16-on-20130709 released: classified each dinucleotide step into A-, B- or Z-form conformation; simplified DSSR output by default. Users are advised to upgrade to this release.
  • 2013-07-03DSSR beta-r15-on-20130703 released: added output of base morphology parameters for each identified helix/stem.
  • 2013-06-26DSSR beta-r14-on-20130626 released: added auto-detection of ‘canonical’ kink-turns and reverse k-turns; numerous code refinements.
  • 2013-06-18DSSR beta-r13-on-20130618 released: added segid to nucleotide id string, and refined the algorithm for finding A-minor motifs.
  • 2013-06-10DSSR beta-r12-on-20130610 released: delineated the components of bulges, internal loops, and junctions, per user request.
  • 2013-06-07 (3DNA v2.1) — fixed a bug in rotate_mol/frame_mol (thanks to a bug report by Pascal Affinger); updated baselist.dat with nucleic-acid-containing entries in the PDB (as of June 7, 2013).
  • 2013-06-03DSSR beta-r11-on-20130603 released: refined the descriptive note with help of Dr. Wilma Olson; added the --long-idstr option to explicitly delineate fields of a residue id string for easy machine parsing; added the --pucker option to output the sugar pucker following either Altona & Sundaralingam (1972) or Westhof & Sundaralingam (1983) — see the post Two slightly different definitions of sugar pucker.
  • 2013-05-02 (3DNA v2.1) — updated baselist.dat with nucleic-acid-containing entries in the PDB (as of May 1, 2013); revised rotate_mol and frame_mol so that atom/residue names in the original PDB file are preserved.
  • 2013-04-30DSSR beta-r10-on-20130430 released: added a brief descriptive note and a list of generated files to the main DSSR output; revised the command-line --help with more detailed usage info; improved output format, and refined code. Now DSSR is not only self-contained, but also (at least should be) self-explanatory.
  • 2013-04-21DSSR beta-r09-on-20130421 released: added a least-squares fitted helical axis for each identified helix/stem; classified the backbone into BI/BII conformations and the sugar into C2’/C3’-endo like (see file dssr-torsions.dat); checked for non-pairing interactions (H-bonds or base stacking) with option -non-pair; refined code and revised output format.
  • 2013-03-26 (3DNA v2.1) — refined structure classification method to avoid false assignments of uncommon types (e.g., B-Z junction, W-form left-handed DNA) to structures with many non-canonical base pairs.
  • 2013-03-23 — new release of DSSR-beta and 3DNA v2.1 update
    • DSSR beta-r08-on-20130323 released: refined algorithm for detecting multiplets, revised the header section to output the numbers of DNA/RNA chains, nucleotides, waters, and metals. As of this release, it appears safe to say that DSSR-beta contains all the basic features and has been well tested. The program is ready serve as a handy tool for RNA structure analysis.
    • 3DNA v2.1 has been updated with baselist.dat and atomlist.dat to accommodate all DNA/RNA entries in the latest PDB, plus minor code refinements.
  • 2013-03-22DSSR beta-r07-on-20130322 released: code refinements, minor bug fixes, and more extensive tests; added metal info in the output.
  • 2013-03-19DSSR beta-r06-on-20130319 released: fixed the segmentation fault bug reported by MarcParisien for PDB entry 2a64; updated the DSSR help message.
  • 2013-03-16DSSR beta-r05-on-20130316 released: detection of ribose zippers; revision of help message; code refactoring.
  • 2013-03-14DSSR beta-r04-on-20130314 released, with the detection of kissing loops, and revised output format.
  • 2013-03-09DSSR beta-r03-on-20130309 released. This version was tested against all RNA/DNA-containing entries in the PDB as of March 2013, with all identified bugs fixed and internal code refinements. DSSR should now be ready for real-world applications. The first 3DNA newsletter was sent via the Forum to its 800+ registered users, announcing the availability of this DSSR release.
  • 2013-03-06DSSR beta-r02-on-20130306 released, mostly to fix bugs reported by the first DSSR user.
  • 2013-03-03DSSR: Software for Defining the (Secondary) Structures of RNA released (v3.0beta r01-on-20130303). The program is the first member of what would become 3DNA v3.0, and it is currently under beta testing. Yet, DSSR should be robust and efficient enough for real-world applications. It contains neat features not available in other RNA structural analysis programs.
  • 2013-02-22 — fixed a documentation bug in option fiber -single: now either -single or -s works (thanks to Leonardo); revised documentation of find_pair and added an example for Curves+.
  • 2013-01-28 — added RA, RA5, RA3 etc AMBER-related nucleotide names to file baselist.dat; minor refinements of documentation.
  • 2013-01-26 — revised the default value of helix_break from 7.5 Å to 7.8 Å so 2o8b/c/d won’t be divided into two segments.
  • 2013-01-10 — recompiled the 3DNA macosx-intel binaries on Mac OS X 10.6 (Snow Leopard) to avoid backward compatibility issue.
  • 2013-01-08 — revised the algorithm for identifying nucleotides, and introduced the -ntc option for setting cutoff.
  • 2012-12-29 — refined calculation of base overlap areas (to quantify stacking interactions).
  • 2012-12-15 — added option analyze -ring to output centers of base ring atoms (plus base normal vectors); updated x3dna_ensemble related Ruby scripts with the corresponding functionality. This -ring option is added in response to a user request and it’s not set by default for backward compatibility.
  • 2012-12-10 — updated baselist.dat to include AMBER specific nucleotides (e.g., DA5, DA3 etc); made checking of atom occupancy optional to process AMBER molecular dynamics trajectories where it is assigned 0.00.
  • 2012-12-09 — miscellaneous refinements:
    • revised x3dna_ensemble to parse the section “Origin (Ox, Oy, Oz) and mean normal vector (Nx, Ny, Nz) of each base-pair in the coordinate system of the given structure” from analyses of duplexes.
    • added checking for atoms with zero occupancy — they are ignored from further analysis.
    • revised command-line help message for analyze/fiber.
  • 2012-11-26 — miscellaneous refinements and minor bug fixes:
    • revised classification of chi (χ) torsion angle into syn (45° to 95°) and anti (165° to 315°) conformations.
    • modified format for listing nucleotide sequential numbers so the find_pair -c+ option interfaces better with Curves+. Spaces seem to make a difference; now use %ld instead of %5ld.
    • updated command-line documentation for fiber by adding the -rna and -seq options
  • 2012-10-26 — significant functionality enhancements:
    • 3DNA now checks for each base reference frame file (Atomic*.pdb) independently: first in the current working directory, (if necessary) then the default system directory X3DNA/config. This allows for greater flexibility in picking up customized base reference frames for analysis and rebuilding.
    • Added support of 3-letter nucleotide name in base reference frame file (e.g., Atomic_5CM.pdb) so mutate_bases can now be easily applied for mutating cytosine to 5-methylcytosine.
    • Added a new FAQ entry ‘How can I mutate cytosine to 5-methylcytosine’
  • 2012-10-16MODEL/ENDMDL delineated multiple-structure ensemble becomes default with the utility program ex_str, so the -nmr option is redundant; minor refinements of source code.
  • 2012-10-06 — updated file ‘baselist.dat’ to include all canonical and modified nucleotides as of the October 6, 2012 release of PDB/NDB; added output of file ‘ref_frames.dat’ with find_pair -s option; refined atom-name parsing to accommodate AMBER generated PDB files which has e.g., "OP1 " instead of the standard compliant form " OP1".
  • 2012-09-07 — added thread Datasets and scripts for reproducing Figure 5 of the 3DNA NAR03 paper on the 3DNA Forum.
  • 2012-08-09 — implemented the option -chain_markers for the analysis of single-stranded DNA/RNA structures per Pascal Auffinger’s request; further code refinements.
  • 2012-08-06 — added the command-line option -chain_markers to specify chain continuation character following Pascal Auffinger’s suggestion; made P…P distances and helix radii from analyze output two decimals, parameters in files bp_step.par and bp_helical.par three decimals; refined alc2img -pdb option by changing ATOM to HETATM for atomic coordinate records.
  • 2012-07-26 — refined mutate_bases to take comma as well as space(s) to separate fields and updated the help file; added a corresponding command line option for each misc_3dna.par setting — e.g.,
    find_pair -max_dv=2.0 355d.pdb stdout
    to set maximum vertical separation for base pairs to 2.0 Å instead of the default 2.5 Å without modifying file misc_3dna.par.
  • 2012-07-19 — updated command-line help to v2.1; added option -r to frame_mol — see the example section for a use case.
  • 2012-07-09 — added option -original_bp_coordinate (can be abbreviated to -ori) to find_pair so that the identified base pairs (bp) are written in their original PDB coordinates instead of being reoriented in their bp reference frames.
  • 2012-06-26 — added support for Mac OS X PPC.
  • 2012-06-25 — minor refinements.
  • 2012-06-22 — revised x3dna_setup to handle the most common shells bash/sh and tcsh/csh more explicitly; made PDB chain identifier case sensitive by default, i.e., ‘A’ and ‘a’ are different chains.
  • 2012-06-20 — further tidy-ups and refinements
    • Refined the x3dna_setup Ruby script to take care of the tcsh/csh shell properly.
    • Made the option -pdbv3 default to comply with PDB format v3.x. The Gromacs pdb2gmx program is strict with PDB v3.x OP1/OP2 and C7 (thymine) atom naming, and DNA residue names DA/DC/DG/DT.
    • Split the following two analyze -torsion generated columns for easy parsing (thanks to Pascal Auffinger): (1) sugar-base torsion angle chi(anti/syn) from e.g. -105.9(anti) to -105.9 anti; (2) backbone BI/BII classification from e.g. 113.6(BII) to 113.6 BII.
    • Added option --single (-s) to x3dna_ensemble reorient for single-stranded nucleic acid structure.
    • Added --one (-n) option to x3dna_ensemble analyze to process only a single structure.
  • 2012-06-06 — extended x3dna_ensemble (for NMR ensembles or MD trajectories) to automatically process single-stranded DNA/RNA structures [option --single (-s)] and the recently added/expanded list of torsion angles [option --torsion (-t)]; further code refactoring.
  • 2012-05-04 — added the -pdb option to alc2img to readily convert 3DNA-generated alchemy files to PDB format — along with the -mol option, I’m hoping the Calladine-Drew style schematic representation of rectangular base-pair blocks would be more widely used in the community of DNA/RNA structures; tidied up code and documentation.
  • 2012-05-02 — refined blocview so it now runs properly even if any third-party tool — Raster3D, PyMOL, MolScript, or ImageMagick — is not available.
  • 2012-04-29 — renamed the Perl scripts (within directory $X3DNA/perl_scripts/), and to avoid confusion with the corresponding Ruby versions within $X3DNA/bin/.
  • 2012-04-25 — further tidy-ups and refinements
    • Moved all Perl scripts from bin/ into perl_scripts/ — while still available, their key functionality has now been consolidated, enhanced, and superseded by the Ruby scripts blocview, x3dna_ensemble, x3dna_setup, and x3dna_utils. Moreover, the recipes (under $X3DNA/np_recipes/) reported in the 3DNA Nature Protocols (2008) paper have been updated to work with the new Ruby scripts.
    • Refined x3dna_setup to output sensible settings for the X3DNA environment variable and PATH, even when SHELL is not set or unknown to the Ruby script.
    • Enhanced analyze to generate file stacking.pdb etc. with single-stranded DNA/RNA structures.
  • 2012-04-21 — added the -enum option that enumerates all bases in a format easily adaptable to mutate_bases; as a sample application, it facilitates methylation of cytosine bases in a structure.
  • 2012-04-18 — fixed a minor bug with analyze -torsion for edge cases as in PNA; updated documentation for analyze to include the -torsion option, and to explicitly specify an input file name (including ‘stdin’).
  • 2012-04-16 — new features and refinements
    • added the new option -torsion to analyze to readily calculate the various DNA/RNA backbone torsion angles (α, β, γ, δ, ε, ζ, and χ), pseudo-torsions (η/θ, η′/θ′ etc), and classify backbone BI/BII, base syn/anti-conformations; to extend the Zp parameter to single-stranded DNA/RNA structures. A sample run would be analyze -torsion=6tna.txt 6tna.pdb for the yeast phenylalanine transfer RNA (6tna), and the output file is 6tna.txt.
    • extended 3DNA parser for x3dna_ensemble to include helical axis vector and position, as well as helix radii.
    • added detailed nucleotide information for each base or pair to file ref_frames.dat following analyze, e.g. 6 A-T # A:...6_:[.DA]A - B:..19_:[.DT]T
    • removed checking for mean twist angle when classifying dinucleotide steps so the B-steps in B-Z junction (2acj) are categorized.
    • added support for converting Alchmey format to molfile v3000: either specified explicitly through command line, or implicitly when the number of atoms or bonds is over 999.
  • 2012-03-28 — various minor corrections and refinements
  • 2012-03-13 — The v2.1beta now includes a global -pdbv3 option so that fiber/rebuild can directly generate structures compliant with PDB format v3.x; added the -molfile option in alc2img to convert 3DNA-generated base rectangular blocks in Alchemy to the MDL molfile format, which is more widely accepted (e.g., in PyMOL).
  • 2012-03-09 — The v2.1beta version was updated to make 3DNA-generated PDB files compatible with HADDock and PdbViewer.
    • added option -three_letter_nts to allow for nucleotide names ADE/CYT/GUA/THY/URA in fiber/rebuild-generated strcuctures.
    • added option -connect to include CONECT records in fiber-generated models
    • For ATOM records in 3DNA generated PDB structures, set occupancy to 1.00, tempFactor to 1.00 (not 0.00, which PdbViewer complains as unrealistic B-factor), and include element symbol
    • added utility cvt2pdbv3 (within x3dna_utils) to make fiber/rebuild-generated PDB files comply with PDB format v3. Specifically, re-label O1P to OP1, O2P to OP2, and C5M to C7 for thymine. For DNA structures, also change nucleotide names from the one letter code A/C/G/T to two-letter DA/DC/DG/DT.
  • 2012-03-05 — the two new sites and formally replace the following three 3DNA-related websites previously hosted at Rutgers University.
    • — the v1.5 site which has received the most outside links, to which the ~olson variant is just a symbolic link.
    • — the v2.0 site
    • — the forum site



Hi Xiang-Jun,

Just a small bug report not worth going to the 3DNA forum.

You wrote:

SwS — a Solvation Web Service for Nulceic Acids where 3DNA plays a role.

nucleic is misspelled
Solvation Web Service is better with “web” (small w)

Thanks for that.
Hope that I will be able to show you more soon.

and looking forward to see the new help pages (now that you are working on them).

Also wanted to tell you that up to now, for my needs, 2.1 is working fine.

Spring is coming


— Pascal Auffinger · 2012-03-27 08:26 · #


Hi Pascal,

Thanks for pointing out the nucleic typo — it’s been fixed. Also, I have changed Web to web so it now matches SwS.

It seems this comment should belong to Outside links where SwS and other resources are mentioned.


xiangjun · 2012-03-27 09:36 · #


The DNA pdb file generated by X3DNA has only A T C G, but no terminal base, e.g. A3, A5, T3, T5, …
How to use X3DNA generate a pdb file with terminal bases?

The reason why I ask this question is because I am using X3DNA to generate initial DNA conformation for MD simulations by Gromacs.

In addition to the above question, is it possible to generate a pdb file that is fully compatible with Gromacs. Now there are some incompatible things. Such as Gromacs using DA, DT, DC, DG, rather than A, T, C, G.


— Dai Liang · 2016-01-21 03:42 · #


Hi Dai Liang,

Thanks for stopping by and making a comment.

First, it is better off to ask such questions on the 3DNA Forum where one can start a new thread with a clearly defined subject line. Here your comment is under the long “What’s new” section which is not directly related to the question asked.

Now, to briefly answer your questions:

  • The DNA pdb file generated by X3DNA does not have specific designation of terminal nucleotides, such as A3, A5 etc. These are not standard terminology as far as I can tell, and they do not appear in RCSB PDB entries.
  • With the -pdbv3 option of ‘rebuild’, i.e. rebuild -pdbv3 -atomic, the 3DNA generated PDB file will have DA, DT etc for DNA structures.
  • There are several packages for MD simulations, including AMBER, CHARMM, and Gromacs. I am not sure if they all adopt the same input format for PDB files. However, I believe even PDB files directly downloaded from RCSB must go through a preparation step (e.g., adding hydrogen atoms, charge neutralization etc) to be useable in AMBER.

So in your case, you need to do some extra work from 3DNA-gererated PDB files to feed into Gromacs.

Hope this helps.

— Xiangjun · 2016-01-21 11:30 · #



Thank you for printing this article from Please do not forget to visit back for more 3DNA-related information. — Xiang-Jun Lu