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!

---

What find_pair in 3DNA can do

Structural analysis of nucleic acids used to be a rather tedious process, especially for irregular, complicated RNA structures and nucleic-acid/protein complexes [e.g., the large ribosomal subunit of H. marismortui (1jj2)]. Without valid base-pairing information arranged properly in a duplex fragment as input, analysis programs such as Curves+ and analyze/cehs in 3DNA would produce meaningless results. The program find_pair in 3DNA was originally created to solve this specific problem, i.e., to generate an input file to 3DNA analysis routines directly from a nucleic-acid containing structure in PDB format. It is what makes nucleic acids structural analysis a routine process — running through thousands of structures from NDB/PDB can be fully automated.

Overall, find_pair has more than fulfilled the goal of its initial design (as stated above). Over the past few years, its functionality has been expanded and continuously refined (kaizen 改善), making find_pair itself a full-featured application. Now, it is efficient, robust, and its simple command line interface allows for easy integration with other bioinformatics tools. Properly acknowledged or otherwise, find_pair has served (at least) as one of the key components in many other applications (RNAView, BPS, SwS, ARTS, to name just a few). Indeed, find_pair is by far the single program in 3DNA that has received the most questions (as evident from the 3DNA forum).

While I still have to write a method paper to describe the underlying algorithms of find_pair in detail — i.e., for identifying nucleotides, H-bonds, base pairs, high-order base associations, and double helical regions — the basic idea is intuitive and very easy to understand: as summarized in our recent GpU paper”, find_pair is purely geometric based (with user adjustable parameters) and allows for the identification of canonical Watson–Crick as well as non-canonical base pairs, made up of normal or modified bases, regardless of tautomeric or protonation state. For example, in the GpU paper”, we chose the following set of stringent parameters to ensure that the geometry of each identified base pair is nearly planar and supports at least one inter-base H-bond: (i) a vertical distance (stagger) between base planes ≤ 1.5 Å; (ii) an angle between base normal vectors ≤ 30°; and (iii) a pair of nitrogen and/or oxygen base atoms at a distance ≤ 3.3 Å. Other criteria (documented or otherwise), such as the distance between the origins of the two standard base reference frames, are just filters to speed up the calculations.

In a nutshell, find_pair has the following two core functionalities:

  • The default is to generate input to the analysis routines in 3DNA (analyze/cehs) for double helices. However, there are many more job to perform under the hood than just identifying base pairs: the base pairs must be in proper sequential order, and each strand must be in 5’ to 3’ direction, for the calculated step parameters (twist, roll etc) to make sense. Moreover, with the “-c” option, one gets an input file to Curves (but not Curves+, yet); with the “-s” or “-1” option, find_pair treats the whole structure as one single strand, and is useful for getting all backbone torsion angles.
  • Detect all base pairs (regardless of double helical regions) and higher-oder (3+) base associations with the “-p” option. This feature (in its preliminary form) was there starting from at least v1.5, which was released at the end of 2002 (just before I left Rutgers), but it was intentionally undocumented. The source code of find_pair (as part of 3DNA) was tested and shared within Rutgers (NDB and Dr. Olson’s laboratory) before any 3DNA paper was published, and served as the basis for several other projects. We also offered 3DNA (with source code) to a few RNA experts for comments; but we received either no responses or politely-worded negative ones. Things did not work out as (what I thought) they should have been, but that’s life and I have learned my lessons. The “-p” option was first explicitly mentioned in the 3DNA 2008 Nature Protocols paper, to illustrate how to identify the two pentaplets in the large ribosomal subunit of H. marismortui (1jj2).

It is interesting to mention the two papers I’ve recently come across: the first is on DNA-protein interactions and the second on RNA base-pairing, where new algorithms were developed to detect base pairs and their performances were compared with find_pair. In each of the two cases, it was claimed that find_pair missed certain pairs where the new methods succeeded. As it turned out, however, in the first case, simply relaxing find_pair’s default H-bond distance cut-off 4.0 Å to 4.5 Å, as used by the authors, virtually all the missing pairs were recovered. In the second case, the “-p” option, which should have been, was simply not specified.

After nearly a decade of extensive real-world applications and refinements, it is safe to say that find_pair is now a versatile and practical tool for nucleic acids structure analysis. Of course, I will continue to support and further refine find_pair as I see fit. Once in a while, I just cannot stop but to think that find_pair is to nucleic acids what DSSP is to proteins: simple and elegant. As more people become aware of its existence, I would expect find_pair to gain even more widespread usage, especially in RNA-structure related research areas.

Comment

---

Curves+ vs 3DNA

While browsing Nucleic Acids Research recently, I noticed the paper titled Conformational analysis of nucleic acids revisited: Curves+ by Dr. Lavery et al. I read it through carefully during the weekend and played around with the software. Overall, I was fairly impressed, and also happy to see that “It [Curves+] adopts the generally accepted reference frame for nucleic acid bases and no longer shows any significant difference with analysis programs such as 3DNA for intra- or inter-base pair parameters.”

Anyone who has ever worked on nucleic acid structures (especially DNA) should be familiar with Curves, an analysis program that has been widely used over the past twenty years. Only in recent years has 3DNA become popular. By and large, though, it is my opinion that 3DNA and Curves are constructive competitors in nucleic acid structure analysis with complementary functionality. As I put it six years ago, before the 13th Conversation at Albany: “Curves has special features that 3DNA does not want to repeat/compete (e.g. global parameters, groove dimension parameters). Nevertheless, we provide an option in a 3DNA utility program (find_pair) to generate input to Curves directly from a PDB data file” on June 6, 2003, and emphasized again on June 09, 2003: “We also see Curves unique in defining global parameters, bending analysis and groove dimensions.” 3DNA’s real strength, as demonstrated in our 2008 Nature Protocols paper, lies in its integrated approach that combines nucleic acid structure analysis, rebuilding, and visualization into a single software package (see image below).

3DNA v2 composite image

Now the nucleic acid structure community is blessed with the new Curves+, which “is algorithmically simpler and computationally much faster than the earlier Curves approach”, yet still provides its ‘hallmark’ curvilinear axis and “a full analysis of groove widths and depths”. When I read the text, I especially liked the INTRODUCTION section, which provides a nice summary of relevant background information on nucleic acid conformational analysis. An important feature of Curves+ is its integration of the analysis of molecular dynamics trajectories. In contrast, 3DNA lacks direct support in this area (even though I know of such applications from questions posted on the 3DNA forum), mostly due to the fact that I am not an ‘energetic’ person. Of special note is a policy-related advantage Curves+ has over 3DNA: Curves+ is distributed freely, and with source code available. On the other hand, due to Rutgers’ license constraints and various other (undocumented) reasons, 3DNA users are still having difficulty in accessing 3DNA v2.0 I compiled several months ago!

It is worth noting that the major differences in slide (+0.47 Å) and x-displacement (+0.77 Å) in Curves+ vs the old Curves (~0.5 Å and ~0.8 Å, respectively) are nearly exactly those uncovered a decade ago in Resolving the discrepancies among nucleic acid conformational analyses [Lu and Olson (1999), J. Mol. Biol., 285(4), 1563-75]:

Except for Curves, which defines the local frame in terms of the canonical B-DNA fiber structure (Leslie et al., 1980), the base origins are roughly coincident in the different schemes, but are significantly displaced (~0.8 Å along the positive x-axis) from the Curves reference. As illustrated below, this offset gives rise to systematic discrepancies of ~0.5 Å in slide and ~0.8 Å in global x-displacement in Curves compared with other programs, and also contributes to differences in rise at kinked steps. (p. 1566)

Please note that Curves+ has introduced new name list variables — most notably, lib= — and other subtle format changes, thus rendering the find_pair generated input files (with option ‘-c’) no longer valid. However, it would be easy to manually edit the input file to make it work for Curves+, since the most significant part — i.e., specifying paired nucleotides — does not change. Given time and upon user request, however, I would consider to write a new script to automate the process.

Overall, it is to the user community’s advantage to have both 3DNA and Curves+ or a choice between the two programs, and I am more than willing to build a bridge between them to make users’ lives easier.

Comment [2]

---

· 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