Modernizing the 3DNA/DSSR Ecosystem: Welcome to Our New GitHub Home

Over the past two decades, the 3DNA and DSSR software ecosystem has grown alongside the structural biology community. What began in 2003 with the classic 3DNA suite has evolved into DSSR—our automated engine for dissecting the spatial structure of RNA—and most recently into wDSSR, our registration-free web platform for 3D nucleic acid analysis and modeling.

As part of our ongoing efforts under the X3DNA-DSSR National Resource (supported by NIH/NIGMS grant R24GM153869), we are transitioning our development workflow and community support to modern, open infrastructure on GitHub.


A New GitHub Organization: x3dna-dssr

We have centralized our software repositories, plugins, and web resources under an official GitHub organization:

https://github.com/x3dna-dssr

This organization serves as the primary home for:

  • wDSSR (Shuxiang Li): The official repository for our web interface, tracking front-end enhancements, feature roadmaps, and server releases.
  • DSSR-PyMOL: (Eric Chen and Bener Dulger) an integrated PyMOL plugin that bridges 3D structural analysis, stylized cartoon block modeling, and an interactive pure-Python RNA 2D layout studio. Powered by DSSR (Dissecting the Spatial Structure of RNA), the plugin allows structural biologists to explore, identify, select, and edit secondary/tertiary nucleic acid features seamlessly in real time.
  • Historical Source Code Archives: Preserving foundational codebases—including SCHNAaP/SCHNArP, 3DNA v1.5 (accompanying the 2003 NAR paper), and 3DNA v2.4—for long-term reproducibility.

Retiring the 3DNA Forum & Transitioning to GitHub Discussions

Since December 2011, the self-hosted 3DNA Forum (forum.x3dna.org) has been the primary venue for user support, troubleshooting, and scientific exchanges. Over nearly 15 years, our community has expanded to 5,918 members, generating 958 topics and 3,770 posts.

While the forum has served us well, maintaining a legacy Simple Machines Forum (SMF) board has become increasingly unsustainable due to broken SMTP email relays and relentless automated bot registrations.

To provide a modern, frictionless experience, community discussions and user support have moved to GitHub Discussions:

https://github.com/orgs/x3dna-dssr/discussions

Benefits of the New Discussion Platform

  • No Separate Registration: Anyone with a GitHub account can participate immediately—no manual account approvals or verification delays.
  • Reliable Email Notifications: Subscribe to threads or categories to receive immediate updates when someone replies.
  • Native Markdown & Formatting: Easily paste command outputs, syntax-highlighted scripts, and inline mathematical notation.
  • Seamless Screenshots: Drag and drop or paste images directly into posts to illustrate structural questions and bug reports.

The 3DNA Forum Is Now a Permanent Read-Only Archive

All 958 historical topics and 3,770 posts remain permanently online and searchable at forum.x3dna.org. To eliminate spam registrations and administrative overhead, new postings and account creations have been disabled, but no historical knowledge has been removed.


Key Community Resources

Whether you are looking for web-based analysis or downloads, here is where to find our core tools:

  • Web Interface (wDSSR): web.x3dna-dssr.org
    Analyze, Rebuild, Model, Circularize, Mutate, Assemble, and Visualize 3D nucleic acids directly in your browser without registration.
  • Community Q&A & Support: github.com/orgs/x3dna-dssr/discussions
    Ask questions, report edge cases, and share feature ideas across the entire tool suite.
  • Legacy Downloads (DSSR v1.9.10): docs.x3dna-dssr.org/download.php
    Freely accessible binaries accompanying our 2020 NAR DSSR-PyMOL publication.
  • Software Releases & Legacy Downloads: github.com/x3dna-dssr
    Access software distributions, including standalone binaries DSSR v1.9.10 (accompanying our 2020 NAR DSSR-PyMOL publication), 3DNA v2.4, 3DNA v1.5, and foundational SCHNAaP/SCHNArP packages.

Acknowledgements

We express our gratitude to every researcher, student, and collaborator who contributed questions, shared datasets, and reported edge cases on the 3DNA Forum over the past 15 years. Your feedback has directly guided the evolution of 3DNA and DSSR.

We invite you to star our repositories, join our discussions on GitHub, and help us shape the next generation of nucleic acid structural bioinformatics tools!

---

Standardized Annotation of CASP16 RNA Predictions Using DSSR

Overview & Background

The 16th Critical Assessment of Structure Prediction (CASP16) evaluated blind predictions for both monomeric RNAs and RNA–RNA multimeric complexes. In a study published in Bioinformatics, Chandran Nithin, Smita P. Pilla, and Sebastian Kmiecik (Laboratory of Computational Biology, University of Warsaw) examined their group's (LCBio, group G189) CASP16 submissions—which ranked first in the official CASP16 best-of-submitted-models assessment for RNA–RNA multimers—to diagnose where modeling accuracy degrades across the RNA structural hierarchy. Rather than relying solely on global superposition metrics (TM-score, RMSD), the authors established an automated evaluation pipeline centered on DSSR (Dissecting the Spatial Structure of RNA; Lu et al., 2015) to benchmark local, modular, and tertiary structural features.


Methodological & Parameter Details

To ensure objective comparisons between experimental reference structures and predicted 3D models, the authors relied on DSSR for consistent feature extraction:

Structural features were extracted from both reference and predicted RNA structures using DSSR (Lu et al. 2015) to ensure consistent annotation across all models.

As detailed in Supplementary Methods S3.2:

All structural features used in the analysis were derived from reference and predicted RNA structures using DSSR, which provided a standardized annotation of base pairs, stacking interactions, secondary structure elements, junctions, and tertiary motifs.

Using DSSR outputs, the authors computed F1-scores across key structural tiers:

  • Base Pairs: Canonical Watson–Crick pairs were evaluated by strict residue correspondence. Non-Watson–Crick (nWC) pairs were scored on a 6-point rubric based on DSSR's Leontis–Westhof classifications (residue identity, cis/trans orientation, and interacting edges).
  • Base Stacking: Pairwise contacts from DSSR-annotated stacking segments were scored using residue identity, inter-planar distance (≤ 0.5 Å deviation), and base-ring normal angles (≤ 15° deviation).
  • Secondary Structure & Junctions: Secondary structure elements—including hairpins, bulges, internal loops, and both helices (defined by DSSR via base-stacking interactions regardless of pairing type or backbone continuity) and stems (helices consisting strictly of canonical Watson–Crick/wobble pairs with a continuous backbone)—were matched at ≥ 50% residue overlap. Multi-helix junctions were evaluated via a topology-gated framework assessing branch count, helix connectivity, terminal base pairs, unpaired linkers, and coaxial stacking.
  • Tertiary Motifs & Interfaces: A-minor interactions, ribose zippers, K-turns, kissing loops, pseudoknots, and multiplets were scored by residue overlap, while multimer interfaces were quantified by inter-chain base-pair recovery.

Step-by-Step Workflow

  1. Consensus 2D Restraints: Secondary structures were predicted using thermodynamic, probabilistic, pseudoknot-capable, and alignment-based tools (RNAfold, RNAstructure, CentroidFold, IPknot, RNAalifold, ScanFold 2.0), then combined into dot-bracket restraints.
  2. 3D Modeling & Refinement: Monomers were generated via deep learning (AlphaFold 3, DeepFoldRNA, RhoFold+, NuFold, trRosettaRNA) and physics/fragment-based tools (SimRNA, FARFAR2, RNAComposer, Vfold2, BriQ), refined with QRNAS, and filtered for entanglements with RNAspider.
  3. Multimer Assembly: Higher-order complexes were modeled by screening AlphaFold 3 across candidate stoichiometries and ionic/cofactor conditions, supplemented by manual assembly in PyMOL.
  4. DSSR Benchmarking: Representative models were processed with DSSR alongside experimental references to quantify feature recovery (F1-scores) across the structural hierarchy.

Conclusion & Paper References

Using DSSR's standardized annotations, Nithin et al. showed that while current prediction pipelines reliably recover Watson–Crick base pairs (monomer F1 ≈ 0.84), accuracy drops sharply for non-canonical pairs, stacking geometry, multi-helix junctions, and tertiary motifs—errors that compound across RNA–RNA multimer interfaces.

  • Primary Publication: Nithin, C., Pilla, S. P., & Kmiecik, S. (2026). Hierarchical breakdown of RNA structure prediction in CASP16: from reliable local helices to speculative multimer assembly. Bioinformatics, 42(10), btag689. https://doi.org/10.1093/bioinformatics/btag689
  • DSSR: Lu, X.-J., Bussemaker, H. J., & Olson, W. K. (2015). DSSR: an integrated software tool for dissecting the spatial structure of RNA. Nucleic Acids Research, 43(21), e142. https://doi.org/10.1093/nar/gkv716
---

Analyzing DNA/RNA structures with Curves+ and 3DNA

Curves+ and 3DNA are currently the most widely used programs for analyzing nucleic acid structures (predominantly double helices). As noted in my blog post, Curves+ vs 3DNA, these two programs also complement each other in terms of features. It thus makes sense to run both to get a better understanding of the DNA/RNA structures one is interested in.

Indeed, over the past few years, I have seen quite a few articles citing both 3DNA and Curves+. Listed below are three recent examples:

The helical parameters were measured with 3DNA33 and Curves+.34 The local helical parameters are defined with regard to base steps and without regard to a global axis.

Structure analysis. Helix, base and base pair parameters were calculated with 3DNA or curve+ software packages23,24.

The major global difference between the native and mixed backbone structures is that the RNA backbone is compressed or kinked in strands containing the modified linkage (Fig. 3 B and C, by CURVES) (30). … To compare the three RNA structures at a more detailed and local level, we calculated the base pair helical and step parameters for all three structures using the 3DNA software tools (31) (Fig. 4 and Table S2). [In the Results section]

For each snapshot, the structural parameters—including six base pair parameters, six local base pair step parameters, and pseudorotation angles for each nucleotide—were calculated using 3DNA (31). The two terminal base pairs are omitted for the 3DNA analysis, because they unwind frequently in the triple 2′-5′-linked duplex. [In the Materials and Methods section]

Reading through these papers, however, it is not clear to me if the authors took advantage of the find_pair -curves+ option in 3DNA, as detailed in Building a bridge between Curves+ and 3DNA. Hopefully, this post will help draw more attention to this connection between Curves+ and 3DNA.

Comment

---

DSSR --symmetry/--nmr options and MODEL/ENDMDL ensemble

Over the past couple of weeks, I’ve added two more DSSR options, --symmetry and --nmr, that are closely related to an ensemble of MODEL/ENDMDL-delineated structures in PDB files. However, there exist subtle differences between the two cases, and the usage of the same MODEL/ENDMDL ensemble format can be ambiguous to the uninitiated. This blog post aims to clarify the issues, using concrete examples.

The --symmetry options applies to X-ray crystal structures where an asymmetric unit represents only part of the whole biological assembly. In standard PDB format, the asymmetric unit contains instructions to produce crystallographic symmetry
related molecules.
. Nevertheless, the biological assembly are also provided by the PDB (or NDB), with coordinate files ending with .pdb1 or such. For example, the PDB entry 2d94 has the single-stranded sequence GGGCGCCC in its asymmetric unit (2d94.pdb). It is the biological assembly in file 2d94.pdb1 that contains the DNA double helix.

x3dna-dssr -i=2d94.pdb # no pairs found
x3dna-dssr -i=2d94.pdb1 # still no pairs found
x3dna-dssr -i=2d94.pdb1 --symm # 8 pairs found
x3dna-dssr -i=2d94.pdb --symm # no pairs found

As shown by the above examples, DSSR by default reads only the first model even given the biological assemble file 2d94.pdb1. It is with --symmetry (abbreviated to --symm) explicitly specified that DSSR takes all models in the input biological assemble file into consideration. The last case also illustrates that DSSR does not generate crystallographic symmetry related molecules. The --symm simply informs DSSR to take all models, which already exist in the input file, into consideration.

On the other hand, the --nmr option is for auto-processing an ensemble of structures solved by solution NMR method (or trajectories of molecular dynamics simulations). The key point here is that each of the MODEL/ENDMDL-delinated structures is independent and thus can be processed separately, even though they are obviously closely related. Using the PDB entry 2n2d as an example, here are some sample usages:

x3dna-dssr -i=2n2d.pdb -o= 2n2d-first.out # only the first structure is processed
x3dna-dssr -i=2n2d.pdb --nmr -o=2n2d-all.out # all 10 structures are processed
x3dna-dssr -i=2n2d.pdb --nmr --json -o=2n2d-all.json # ibid., with output in JSON

Note that the NMR file is named 2n2d.pdb, and it contains 10 structures.

Interesting mixes show up when an X-ray biological assembly with multiple MODEL/ENDMDL entries is analyzed with --nmr, or an NMR entry is handled with --symmetry. Here are two such examples:

x3dna-dssr -i=2d94.pdb1 --nmr -o=temp # models 1 and 2 are handled sepatately
x3dna-dssr -i=2n2d.pdb --symm -o=temp # wrong -- does not make sense!

In summary, the --symmetry option is intended to treat symmetry-related molecules as a whole, as in a biological assembly of X-ray crystal structures. In contrast, the --nmr option aims to automate the analysis of each structure in a MODEL/ENDMDL-delineated ensemble, as in NMR structures or trajectories of MD simulations. The distinction between the two MODEL/ENDMDL usages is most clearly seen via a molecular visualization program: for example, check the figure below for 2d94.pdb1 (left) and 2n2d.pdb (right) when all frames are selected using Jmol.

2d94 (2 models) 2n2d (10 models)
biological assembly of a DNA duplex (2d94) solution structure of a DNA quadruplex (2n2d)

Comment

---

The 3DNA mutate_bases program is cited in Nature

It was a nice surprise to notice the following 3DNA citation in a Nature article, titled Selective small-molecule inhibition of an RNA structural element (doi:10.1038/nature15542). Moreover, the work came from Merck Research Laboratories, reporting a novel selective chemical modulator (ribocil) to repress riboswitch-mediated ribB gene expression and inhibit bacterial cell growth.

Homology modelling. A homology model of the E. coli FMN aptamer was constructed using program mutate_bases53 of the 3DNA package using the F. nucleatum impX riboswitch aptamer X-ray structure as the template and the FMN aptamer alignment of E. coli, F. nucleatum, P. aeruginosa and A. baumannii (Extended Data Fig. 5). All nucleotide insertions in the E. coli sequence were removed in the model (Extended Data Fig. 5). There are 34 base changes among the 111 nucleotides modelled. Base pairing when present remains consistent. Energy minimization at A92 was performed to avoid VDW clashes using Macromodel (Schrodinger, LLC).

In retrospect, the mutate_bases program was created in response to repeated requests from 3DNA users, initially mostly for modeling DNA-protein complexes. The program was first coded as a Perl script, and later on rewritten in ANSI C for efficiency. Since v2.1, mutate_bases has become an essential component of 3DNA, on a par with find_pair, analyze, rebuild and fiber etc. As I noted in the post documenting the program

Overall, mutate_bases has been designed to solve the in silico base mutation problem in a practical sense: robust and efficient, getting its job done and then out of the way. The program can have many possible applications: in addition to perform base-pair mutations in DNA-protein complexes, it should also prove handy in RNA modeling and in providing initial structures for QM/MM/MD energy calculations, and in DNA/RNA modeling studies.

The Merck Nature paper is the first time ever that the 3DNA mutate_bases program has been put in the spotlight. Hopefully more such applications/citations will appear in the future as the community begin to appreciate the value of this little gem.

Comment

---

Parsing DSSR json output

JSON (JavaScript Object Notation) is a simple human-readable format that expresses data objects in name-value pairs. Over the years, it has surpassed XML to become the preferred data exchange format between applications. As a result, I’ve recently added the --json command-line option to DSSR to make its numerous derived parameters easily accessible.

The DSSR JSON output is contained in a compact one-line text string that may look cryptic to the uninitiated. Yet, with commonly available JSON parsers or libraries, it is straightforward to make sense of the DSSR JSON output. In this blogpost, I am illustrating how to parse DSSR-derived .json file via two command-line tools, jq and Underscore-CLI.

jq — lightweight and flexible command-line JSON processor

According to its website,

jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

Moreover, like DSSR per se, “jq is written in portable C, and it has zero runtime dependencies.” Prebuilt binaries are available for Linux, OS X and Windows. So it is trivial to get jq up and running. The current stable version is 1.5, released on August 15, 2015.

Using the crystal structure of yeast phenylalanine tRNA (1ehz) as an example, here are some sample usages with DSSR-derived JSON output:

    # Pretty print JSON
x3dna-dssr -i=1ehz.pdb --json | jq .
    # Extract the top-level keys, in insertion order 
x3dna-dssr -i=1ehz.pdb --json | jq keys_unsorted
    # Extract parameters for nucleotides
x3dna-dssr -i=1ehz.pdb --json | jq .nts
    # Extract nucleotide id and its base reference frame
x3dna-dssr -i=1ehz.pdb --json | jq '.nts[] | (.nt_id, .frame)'

Underscore-CLI — command-line utility-belt for hacking JSON and Javascript.

Underscore-CLI is built upon Node.js, and can be installed using the npm package manager. It is claimed as ‘the “swiss-army-knife” tool for processing JSON data – can be used as a simple pretty-printer, or as a full-powered Javascript command-line.’

Following the above examples illustrating jq, here are the corresponding commands for Underscore-CLI:

x3dna-dssr -i=1ehz.pdb --json | underscore print --color
x3dna-dssr -i=1ehz.pdb --json | underscore keys --color
x3dna-dssr -i=1ehz.pdb --json | underscore select .nts --color
x3dna-dssr -i=1ehz.pdb --json | underscore select .nts | underscore select '.nt_id, .frame' --color

jq or Underscore-CLI — which one to use?

As always, it depends. While jq feels more like a standard Unix utility (as sed, awk, grep etc), Underscore-CLI is better integrated into the Javascript language. For simple applications such as parsing DSSR output, either jq or Underscore-CLI is more than sufficient.

I use jq most of the time, but resort to Underscore-CLI for its “smart whitespace”. Here is an example to illustrate the difference between the two:

# z-axis of A.G1 (1ehz) base reference frame
# jq output, split in 5 lines
    "z_axis": [
      0.799,
      0.488,
      -0.352
    ]
# Underscore-CLI, in a more-readable one line
    "z_axis": [0.799, 0.488, -0.352]

Comment

---

Simple base-pair parameters

Recently, I read with great interest an article titled A context-sensitive guide to RNA & DNA base-pair & base-stack geometry by Dr. Jane Richardson, published in CCN (Computational Crystallography Newsletter, 2015, 5, 42—49). Highlighted in the article are Buckle and Propeller twist (see bottom left of the figure below), two of the angular parameters that characterize base-pair (bp) non-planarity. Particularly, I was intrigued by the “Notes on measures and figures” at the end:

Base normals were constructed in Mage (Richardson 2001) and twist torsions and buckle angles were measured from them; propeller-twists were measured as dihedral angles around an axis between N1/9 atoms.

Schematic diagram of six rigid-body base-pair parameters

The Richardson CCN article prompted me to think more on intuitive description of bp geometry that can be easily grasped by experimentalist, especially X-ray crystallographers or cryo-EM practitioners. Without worrying about model building as with the six rigid-body parameters, it is straightforward to come up with a new set of four ‘simple’ parameters (Shear, Stretch, Buckle and Propeller) with the following characteristics:

  • Each parameter can be positive or negative. For type M–N pairs (as in the canonical cases), Shear and Buckle reverse their signs when the two bases are swapped (i.e. counted as N–M instead of M–N). In all other cases, the signs of the parameters remain unchanged. See the DSSR paper for the definition of M+N vs M–N type of pairs.
  • Intuitive results for non-canonical pairs, even when Opening is ~180º.
  • Consistent definition between Shear/Buckle (_x_-axis) vs Stretch/Propeller (_y_-axis).
  • As in 3DNA and DSSR, Buckle^2 + Propeller^2 = interBase_angle^2. Either Buckle or Propeller can render the two base planes of a pair non-parallel. Combined together, they introduce a non-zero inter-base angle. By definition, each parameter should not be larger than the overall inter-base angle.

With the cartoon-block representation introduced in DSSR, base-stacking interactions and bp deformations (especially Buckle and Propeller) are immediately obvious. Two example are illustrated in the figure below: one is the classic Dickerson B-DNA dodecamer (355d, DSSR output), and the other is the parallel double-stranded helix of poly(A) RNA (4jrd, DSSR output).

Dickerson B-DNA dodecamer (355d) in cartoon-block representation Parallel double-stranded helix of poly(A) RNA (4jrd)
DSSR Output for 355d DSSR Output for 4jrd

A portion of DSSR output for the B-DNA duplex 355d is shown below. Note that the first bp (at the bottom left in the figure above) has a Propeller of –17º (and a Buckle of +7º). As beautifully explained by Calladine et al. in their book Understanding DNA,
The Molecule & How It Works
, Watson-Crick pairs prefer to have negative Propeller in right-handed DNA double helices to improve same-strand base-stacking interactions. The average value of Propeller in A- and B-DNA crystal structures is around –11º (see Table 3 of the Olson et al. standard base reference frame paper).

     nt1            nt2           bp  name        Saenger    LW  DSSR
   1 A.DC1          B.DG24         C-G WC          19-XIX    cWW  cW-W
       [-105.9(anti) ~C2'-endo lambda=53.5] [-141.3(anti) ~C3'-endo lambda=52.7]
       d(C1'-C1')=10.71 d(N1-N9)=8.96 d(C6-C8)=9.88 tor(C1'-N1-N9-C1')=-21.4
       H-bonds[3]: "O2(carbonyl)-N2(amino)[2.83],N3-N1(imino)[2.90],N4(amino)-O6(carbonyl)[2.98]"
       interBase-angle=19  Simple-bpParams: Shear=0.28 Stretch=-0.13 Buckle=7.3 Propeller=-17.2
       bp-pars: [0.28    -0.14   0.07    6.93    -17.31  -0.61]
   2 A.DG2          B.DC23         G-C WC          19-XIX    cWW  cW-W
       [-85.4(anti) ~C2'-endo lambda=53.4] [-150.3(anti) ~C3'-endo lambda=55.4]
       d(C1'-C1')=10.61 d(N1-N9)=8.92 d(C6-C8)=9.83 tor(C1'-N1-N9-C1')=-21.7
       H-bonds[3]: "O6(carbonyl)-N4(amino)[2.91],N1(imino)-N3[2.88],N2(amino)-O2(carbonyl)[2.88]"
       interBase-angle=17  Simple-bpParams: Shear=-0.24 Stretch=-0.18 Buckle=9.0 Propeller=-14.5
       bp-pars: [-0.24   -0.18   0.49    9.34    -14.30  -2.08]

A portion of DSSR output for the parallel A-DNA duplex 4jrd is shown below. Note that the values of ‘simple’ Propeller are positive for both bps #7 and #8. In contrast, the rigid-body bp parameters have their signs flipped over when Opening is switched from –179.56º for bp#7 to +179.23º for bp#8. This sign ‘ambiguity’ around 180º Opening could be confusing. Yet, all the six bp parameters must be kept as they are for rigorous rebuilding, especially within a larger context than a bp per se. From the very beginning, 3DNA has adopted the convention of keeping angular parameters in the range of [–180º, +180º] instead of [0, 360º], allowing left-handed Z-DNA to have negative twist.

   7 A.A8           B.A7           A+A --          02-II     tHH  tM+M
       [-175.8(anti) ~C3'-endo lambda=10.2] [-172.7(anti) ~C3'-endo lambda=12.6]
       d(C1'-C1')=11.15 d(N1-N9)=8.29 d(C6-C8)=6.31 tor(C1'-N1-N9-C1')=160.1
       H-bonds[4]: "OP2-N6(amino)[2.97],N7-N6(amino)[2.97],N6(amino)-OP2[2.92],N6(amino)-N7[2.91]"
       interBase-angle=14  Simple-bpParams: Shear=-7.88 Stretch=0.66 Buckle=-7.8 Propeller=11.9
       bp-pars: [-6.00   5.15    -0.02   0.63    14.22   -179.56]
   8 A.A9           B.A8           A+A --          02-II     tHH  tM+M
       [-177.4(anti) ~C3'-endo lambda=12.4] [-175.8(anti) ~C3'-endo lambda=10.3]
       d(C1'-C1')=11.01 d(N1-N9)=8.15 d(C6-C8)=6.18 tor(C1'-N1-N9-C1')=158.5
       H-bonds[4]: "OP2-N6(amino)[2.93],N7-N6(amino)[2.88],N6(amino)-OP2[2.97],N6(amino)-N7[2.92]"
       interBase-angle=15  Simple-bpParams: Shear=-7.91 Stretch=0.56 Buckle=-7.0 Propeller=13.7
       bp-pars: [6.11    -5.06   -0.05   -2.26   -15.22  179.23]

Comment

---

Updates on x3dna.org

From early on, the x3dna.org domain and its related sub-domains (e.g., for the forum and the web-interface to DSSR) has been served via shared hosting. By and large, this simple arrangement has worked quite well. Over the years, though, I’ve gradually realized some of its inherent limitations. One is the limited resources available to the 3DNA-related websites. Another is the accessibility issue from countries like China.

To remedy such issues, I’ve recently moved the 3DNA Forum and the web-interface to DSSR to a dedicated web server at Columbia University. Moreover, a duplicate copy of the 3DNA homepage is made available via http://home.x3dna.org hosted at Columbia. The three new websites have been verified to be accessible directly from China.

These updates on x3dna.org not only ensure global accessibility to 3DNA/DSSR, but also allow for more web services to be made available.

Comment

---

Output of reference frames in DSSR JSON output

As of v1.3.3-2015sep03, DSSR outputs the reference frame of any base or base-pair (bp). With an explicit list of such reference frames, one can better understand how the 3DNA/DSSR bp parameters are calculated. Moreover, third-party bioinformatics tools can take advantage of the frames for further exploration of nucleic acid structures, including visualization.

Let’s use the G1–C72 bp (detailed below) in the yeast phenylalanine tRNA (1ehz) as an example:

1 A.G1           A.C72          G-C WC          19-XIX    cWW  cW-W

The standard base reference frame for A.G1 is:

{
  rsmd: 0.008,
  origin: [53.757, 41.868, 52.93],
  x_axis: [-0.259, -0.25, -0.933],
  y_axis: [-0.543, 0.837, -0.073],
  z_axis: [0.799, 0.488, -0.352]
}

And the one for A.C72 is:

{
  rsmd: 0.006,
  origin: [53.779, 42.132, 52.224],
  x_axis: [-0.402, -0.311, -0.861],
  y_axis: [0.451, -0.886, 0.109],
  z_axis: [-0.797, -0.345, 0.497]
}

The G1–C72 bp reference frame is:

{
  rsmd: null,
  origin: [53.768, 42, 52.577],
  x_axis: [-0.331, -0.283, -0.9],
  y_axis: [-0.497, 0.863, -0.089],
  z_axis: [0.802, 0.418, -0.427]
}

The beauty of the DSSR JSON output is that the above information can be extracted on the fly. For example, the following commands extract the above frames:

x3dna-dssr -i=1ehz.pdb --json | jq '.ntParams[] | select(.nt_id=="A.G1") | .frame'
x3dna-dssr -i=1ehz.pdb --json | jq '.ntParams[] | select(.nt_id=="A.C72") | .frame'
x3dna-dssr -i=1ehz.pdb --json --more | jq .pairs[0].frame

Note that in JSON, the array is 0-indexed, so the first bp (G1–C72) has an index of 0. In addition to jq, I also used underscore to pretty-print the frames.

Comment

---

Quantifying base-pair geometry by six rigid-body parameters

Standard nitrogenous bases in DNA and RNA (A, C, G, T, and U) are aromatic compounds, each with a planar geometry. In the analyses of three-dimensional (3D) nucleic acid structures, the planar bases are normally taken as rigid bodies. The relative geometry of the two bases in base pair (bp) can then be rigorously quantified by six rigid-body parameters (see figure below). The three translations along the _x_-, _y_- and _z_-axes are termed Shear, Stretch, and Stagger, respectively. The three corresponding rotations are called Buckle, Propeller (twist), and Opening.

Schematic diagram of six rigid-body base-pair parameters

3DNA is unique with its coupled analyze and rebuild programs. The former calculates six bp parameters given 3D atomic coordinates (in PDB or PDBx/mmCIF format), while the later takes a set of such parameters to generate the corresponding structure. The rigor of the description can be easily verified in two equivalent ways: the close to zero root-mean-square deviation (RMSD) between the rebuilt structure and the original coordinates, after a least-squares superposition; or the identical six bp parameters when the rebuilt structure is analyzed.

As is often the case, a concrete example would make the point clear. Here I am using the reverse Hoogsteen (rHoogsteen) bp between U8 and A14 (see image below) in the yeast phenylalanine tRNA (1ehz) as an example. The PDB atomic coordinates of the U8–A14 rHoogsteen pair, excluding backbone atoms except for C1′, is stored in file 1ehz-U8-A14.pdb.

The reverse Hoogsteen U8–A14 base pair in tRNA (1ehz)

find_pair 1ehz-U8-A14.pdb stdout | analyze stdin
    # bp parameters in file '1ehz-U8-A14.out'
    # also generated 'bp_step.par' for rebuilding below
rebuild -atomic bp_step.par 1ehz-U8-A14-3DNA.pdb
    # rmsd is 0.044 Å between '1ehz-U8-A14.pdb' and '1ehz-U8-A14-3DNA.pdb'
find_pair 1ehz-U8-A14-3DNA.pdb stdout | analyze stdin
    # bp parameters of the rebuilt structure in '1ehz-U8-A14-3DNA.out'
rebuild -atomic bp_step.par 1ehz-U8-A14-3DNA-new.pdb
    # rmsd is 0 Å between '1ehz-U8-A14-3DNA.pdb' and '1ehz-U8-A14-3DNA-new.pdb'

Note that the above commands should be performed in order, since the file bp_step.par is overwritten after each analyze run. For your verification, here are the links to the five files:

The 0.044 Å rmsd between the original PDB coordinates in 1ehz-U8-A14.pdb and the 3DNA rebuilt structure in 1ehz-U8-A14-3DNA.pdb is due to the slight non-planarity of experimental bases. The rmsd is 0 between the two rounds of 3DNA rebuilt structures, 1ehz-U8-A14-3DNA.pdb and 1ehz-U8-A14-3DNA-new.pdb, as expected.

The bp parameters in 1ehz-U8-A14.out and 1ehz-U8-A14-3DNA.out are identical, as expected, and they are shown below.

Local base-pair parameters
     bp        Shear    Stretch   Stagger    Buckle  Propeller  Opening
    1 U-A       4.14     -1.91      0.77     -4.62     12.12   -103.09 

Running DSSR on 1ehz-U8-A14.pdb gives the following results. Note that the six bp parameters (last row prefixed with bp-pars) are the exactly same as in 3DNA — we are consistent.

# x3dna-dssr -i=1ehz-U8-A14.pdb --more
List of 1 base pair
      nt1            nt2           bp  name        Saenger    LW  DSSR
   1 A.U8           A.A14          U-A rHoogsteen  24-XXIV   tWH  tW-M
       [n/a(n/a) ---- lambda=28.3] [n/a(n/a) ---- lambda=21.5]
       d(C1'-C1')=9.63 d(N1-N9)=7.06 d(C6-C8)=6.00 tor(C1'-N1-N9-C1')=174.4
       H-bonds[2]: "O2(carbonyl)-N6(amino)[3.00],N3(imino)-N7[2.74]"
       interBase-angle=12.97  Simple-bpParams: Shear=4.28 Stretch=1.55 Buckle=-11.8 Propeller=5.4
       bp-pars: [4.14    -1.91   0.77    -4.62   12.12   -103.09]

As mentioned in the recent DSSR paper:

As in 3DNA (6,7), DSSR takes advantage of the six standard base-pair parameters––three translations (Shear, Stretch, Stagger) and three rotations (Buckle, Propeller, Opening)––to quantify the relative spatial position and orientation of any two interacting bases rigorously. Among the six parameters, only Shear, Stretch, and Opening are critical for characterizing different types of pairs. Buckle, Propeller and Stagger, on the other hand, describe the nonplanarity of a given pair (6). By virtue of the definition of the standard base reference frame, Shear, Stretch, and Opening are all close to zero for Watson-Crick pairs. Moreover, every other type of pair has a set of characteristic parameters. For example, the wobble G–U pair is characterized by an average Shear of –2.2 Å, and the Hoogsteen A+U pair is distinguished by a Stretch of approximately –3.5 Å and an Opening of near 66º.

In a follow-up post, I will talk about the “simple” bp parameters (Simple-bpParams in the above DSSR output list) recently introduced into DSSR — stay tuned!

Comment

---

DSSR output in JSON format

As of DSSR v1.3.0-2015aug27, the --json option is available for producing analysis results that is strictly compliant with the JSON data exchange format. The JSON file contains numerous DSSR-derived structural features, including those in the default main output, backbone torsions in dssr-torsions.txt, and a detailed list of hydrogen bonds.

According to the official JSON website:

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language… JSON is a text format that is completely language independent… These properties make JSON an ideal data-interchange language.

Indeed, the JSON output file makes DSSR readily accessible for integration with other bioinformatics tools or normal usages from the command line. Using the classic yeast phenylalanine tRNA 1ehz as an example (1ehz.pdb), let’s go over some simple use-cases. Note that the following examples take advantage of jq, a lightweight and flexible command-line JSON processor.

x3dna-dssr -i=1ehz.pdb --json -o=1ehz-dssr.json
jq . 1ehz-dssr.json  # reformatted for pretty output
x3dna-dssr -i=1ehz.pdb --json | jq .  # the above 2 steps combined

With 1ehz-dssr.json in hand, we can easily extract DSSR-derived structural features of interest:

jq .pairs 1ehz-dssr.json   # list of 34 pairs
jq .multiplets 1ehz-dssr.json  # list of 4 base triplets
jq .hbonds 1ehz-dssr.json  # list of hydrogen bonds
jq .helices 1ehz-dssr.json
jq .stems 1ehz-dssr.json
  # list of nucleotide parameters, including torsion angles and suites
jq .ntParams 1ehz-dssr.json
  # list of 14 modified nucleotides
jq '.ntParams[] | select(.is_modified)' 1ehz-dssr.json
  # select nucleotide id, delta torsion, sugar puckering and cluster of suite name
jq '.ntParams[] | {nt_id, delta, puckering, cluster}' 1ehz-dssr.json
  # same selection as above, but in 'Comma Separated Values' format
jq -r '.ntParams[] | [.nt_id, .delta, .puckering, .cluster] | @csv' 1ehz-dssr.json

Here is the result of running jq (v1.5) to select multiplets:

# jq .multiplets 1ehz-dssr.json
[
  {
    "index": 1,
    "num_nts": 3,
    "nts_short": "UAA",
    "nts_long": "A.U8,A.A14,A.A21"
  },
  {
    "index": 2,
    "num_nts": 3,
    "nts_short": "AUA",
    "nts_long": "A.A9,A.U12,A.A23"
  },
  {
    "index": 3,
    "num_nts": 3,
    "nts_short": "gCG",
    "nts_long": "A.2MG10,A.C25,A.G45"
  },
  {
    "index": 4,
    "num_nts": 3,
    "nts_short": "CGg",
    "nts_long": "A.C13,A.G22,A.7MG46"
  }
]

With the JSON file, DSSR can now be connected with the bioinformatics community in a ‘structured’ way, with a clearly delineated boundary. Now I can enjoy the freedom of refining the default main output format, without worrying too much about breaking third-party parsers. Moreover, I no longer need to write an adapter for each integration of DSSR with other tools. So nice!

For your reference, here is the output file 1ehz-dssr.json. It may be possible that the identifiers (names) of the JSON output will be refined in the next few iterations. I welcome your comments to make the DSSR-derived JSON better suite your needs.

Comment

---

« Older · Newer »

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