Nucleic Acid Origami Contact Map

contactmap is a Python module that manages a contact map file format for nucleic acid origami nanostructures. The code is available as an open source repository on Bitbucket under a MIT Licence.

The origami contact map file format was introduced in our 2023 paper in Computational and Structural Biotechnology Journal and an example origami contact map CSV file can be downloaded here.

An origami contact map is a purely topological description of an origami nanostructure. In a contact map, there is no explicit notion of space or geometry. Rather, a contact map simply specifies which staple strand bases hybridise (contact) to which scaffold strand bases in an origami design, and which staple/scaffold bases are not paired with anything.

An origami contact map can be visualised in a variety of ways, including as a scaffold-staple base-pair matrix, as an arc diagram, or as dot-parens notation (if there are no pseudoknots), all shown below:


Different origami contact map representations

Origami contact maps are useful in a number of applications:

  • Given a change of scaffold sequence, the contact map for an origami nanostructure can be used to re-derive the set of complementary staple sequences forming the nanostructure

  • Contact maps can be converted to an origami domain-level graph, which can in turn be converted to an approximate geometric schematic of the origami nanostructure

  • Contact maps (and domain-level graphs) can be queried for various origami metrics, like number of staples, distribution of hybridising staple section lengths, common staple split patterns, number of staples with non-hybridising sections, sub-sequence repeat distribution of the origami scaffold, average shortest path length of staple crossovers in formed nanostructure etc. In future, these metrics could be used as features in machine learning prediction of nucleic acid nanostructure properties.

  • A distance measure can be calculated between the contact maps of two origamis in order to assess the connectivity similarities of those origamis (which may be correlated with e.g. folding similarity)

First follow the Installation instructions for the contactmap module, and then try out the scripts below to see the utility of origami contact maps.

Convert Your Origami CAD Design File to an Origami Contact Map

  1. An origami design in oxDNA can be converted to a contact map using the oxdna2contact.py script. Likewise, an origami design in scadnano can be converted to a contact map with the scadnano2contact.py script. Origamis designed in caDNAno can be converted to scadnano format using the handy cad2scad.py script.

  2. An origami nanostructure specified only as raw scaffold and staple sequences in the supplementary material of a publication can be converted to an approximate contact map using our REVNANO tool.

Perform Operations on the Origami Contact Map

  1. Once a contact map has been derived for an origami nanostructure, contactutils.py can perform many useful operations on it, from changing the scaffold sequence and re-deriving the complementary staples, to listing detailed statistics about the origami.

  2. An approximate geometric schematic diagram for an origami can be reconstructed from it’s contact map by using the contact2schematic.py script. 2D or 3D origamis can be rendered.

Helper Scripts

Brief technical documentation also exists for the following helper scripts:

  • contact2dlgraph.py converts a contact map into a domain-level graph

  • contact2ambig.py quantifies how ambiguous junctions are on an origami domain-level graph, from the perspective of staple-scaffold sequence complementarity

  • oxdna2param.py performs a parameter sweep to derive optimal base pair detection parameters for script oxdna2contact.py