Upon user requests, I’ve recently introduced the
--block-color option to DSSR, available as of v1.5.2-2016apr02. As its name implies, the
--block-color option facilitate user customization of PyMOL rendered colors of the base rectangular blocks or their edges (e.g., the minor-groove) directly from the command-line. A simple example goes like this:
--block-color='A blue; T red', which makes A colored blue and T colored red. As detailed below, the new option is very flexible with regard to the specification of colors, bases, or some edges to highlight. Before that, a little background is in order.
The DSSR cartoon-block representation follows the color convention of the original 3DNA
blocview script, where A is red; C is yellow; G is green; T is blue; and U is cyan. If I remember correctly, the
blocview coloring was based on the scheme adopted by the Nucleic Acid Database (NDB). To allow for some flexibility, 3DNA includes a config file named
$X3DNA/config/raster3d.par where users can change the RGB values of the corresponding bases. However, I do not know if any user has ever bothered to play around with the configuration file for customized base colors.
Over the years,
blocview-generated images have become popular, due to its simplicity, and (maybe more importantly) its endorsement by the NDB and PDB for nucleic acid structures. Via NDB, the
blocview-generated images have also been used in RNA FRABASE 2.0 and RNA Structure Atlas. Nevertheless, the
blocview script has several dependencies: MolScript for protein or DNA/RNA backbone ribbons,
render from Raster3D for rendering, and ImageMagick for image processing. Moreover, the
blocview script used by NDB/PDB is (likely to be) based on 3DNA v1.5, the last version before I left Rutgers in 2002.
Over the years, 3DNA has been continuously refined, with significant changes introduced in v2.0 around 2008 to accompany the Nature Protocols paper. Currently at v2.3, the codebase for 3DNA version 2 is in maintenance mode: the software will still be supported with identified bugs fixed, but no more new feature is planned. 3DNA version 3, as represented by DSSR and SNAP, is the way to go.
DSSR has no third-party dependencies
While creating DSSR, I set it as one of the design goals to make the program fully self-contained, without any third-party dependencies. Connections to other tools are clearly delineated via text files. If anything goes wrong, one can easily identify where the problem is. Experience over the past few years has unambiguously proved the effectiveness of this zero-dependency approach. Other than being directly distributed with an operating system, DSSR is the easiest to get up and running. Moreover, DSSR can be easily integrated into other pipelines, including Jmol and PyMOL, among many other bioinformatics tools.
For the cartoon-block representation, DSSR produces
.r3d files that can be loaded into PyMOL, mixed and matched with other visualization styles PyMOL has to offer. No more direct dependencies on MolScript, Raster3D, and ImageMagick as is the case for
blocview. It is also worth mentioning that DSSR does not need PyMOL to run. DSSR and PyMOL are connected via
.r3d files, a process which can be streamlined with the Dssr_block PyMOL plugin.
DSSR releases before
v1.5.2-2016apr02 have the color coding of base blocks fixed within the source code, following the default style of
blocview. Over the past few months, I’ve received at least two explicit requests on customizing the default colors of DSSR-generated base blocks. The
--block-color option has been introduced for this purpose.
Details of the
The general format of the option is as follows:
--block-color='id color [; id2 color2 ...]'
A, C, G, T, U, or the degenerated IUPAC code, including
R, Y, Netc. See UPAC nucleotide code for details.
idcan also be
wc-edgeto specify one of the six faces of a 3D rectangular block. See Fig.1D of the DSSR paper for details.
idcan further be
pair, and variants thereof, to specify the colors of the corresponding long base-pair rectangular blocks.
colorcan be a common name (144 total), as specified in the RGB Color website. For example,
colorcan also be a single number in the range [0, 1] or [0, 255] to specify a shade of gray. DSSR repeat the number twice to get the RGB triple consisting of the same number.
colorcan further be a set of three space-delimited numbers to specify the RGB triple. Again, the number can be in [0, 1] or [0, 255]. Moreover, the three numbers can be put in square brackets. For example
--block-color='A 0 1 1'and
--block-color='A [0 1 1]'specify adenine to be colored with RGB triple [0 1 1] (aqua/cyan, corresponding to
- More than one identity (bases) can be specified, separated by
|also works). Note: within the PyMOL
:can be used as a separator: comma (
,) or semicolon (
;) cannot be used as a separator within a PyMOL command argument (thanks to Thomas Holder for drawing this point to my attention).
- Case does not matter when specifying
idor color. So either ‘A’ or ‘a’, and ‘blue’ or ‘Blue’ or ‘BLUE’ can be used to make adenine blue:
Some example usages
While the above description may appears to be quite complicated, the actual usage of the
--block-color option is very straightforward. As always, the cases are best made with concrete examples, as shown below using the classic Dickerson B-DNA dodecamer 355d.
# all bases in blue x3dna-dssr -i=355d.pdb --cartoon-block=orient --block-color='N blue' -o=355d-all-blue.pml # # all WC-pairs in red, with the minor-groove edge in 'dim gary' x3dna-dssr -i=355d.pdb --cartoon-block=orient --block-color='wc-pair red; minor dim gray' -o=355d-pair-minor.pml # # thymine (T) in purple, and the upper (+z) face in white # see Figure below, which shows the two bases in WC-pairs are anti-parallel x3dna-dssr -i=355d.pdb --cartoon-block=orient --block-color='T purple; upper 1' -o=355d-T-upper.pml