Friday, June 19, 2009

RasMol 2.6.4 and 3DNA base rectangular block schematic representation

Over the years, I have been using RasMol v2.6.4, the last release in December 1998 by Roger Sayle, the original author of this molecular graphics visualization tool. According to the README file, RasMol v2.6.4 "includes mainly minor bug fixes and portability enhancements" to the version Sayle used internally.

Back in 1990s and early 2000s, RasMol was the most popular tool of its kind. However, even though RasMol v2.7.x series is actively maintained, in recent years JMol, PyMol and other similar tools have surpassed RasMol in popularity. So why still RasMol v2.6.4? To me, RasMol is a light-weight, robust tool for molecular structure visualization, just like ls, grep Unix commands for my daily computing life. Moreover, RasMol v2.6.4 is connected to 3DNA with the visualization of Alchemy format for rectangular base (or base-pair) block representation.

It is straightforward to install RasMol v2.6.4 in a modern computer system with a C compiler. You may also want to customize it, and more importantly, get to know how to use it effectively.
  • RasMol v2.6.4 can be downloaded from
  • In Linux, type "xmkmf; make" to compile, and this gives executable rasmol. By default, this is for 8-bit graphics. I normally renamed it to rasmol8 by "mv rasmol rasmol8" because the 8-bit version is useful for generating gif images (for web graphics, for example). To make a 32-bit version as default, edit Makefile macro DEPTHDEF: "# DEPTHDEF = -DEIGHTBIT" to "DEPTHDEF = -DTHIRTYTWOBIT", then "make clean; make". Move "rasmol8" and "rasmol" to a directory in your command line search path (e.g., ~/bin), copy "rasmol.hlp" to some location and set up environmental variable RASMOLPATH accordingly, you are all set.
  • By default, rasmol binary does not allow for outputting graphics in (automatic) scripting mode, this can be overwritten by changing AllowWrite = False; at line 1163 of "rasmol.c" (in function InitDefaultValues()) to AllowWrite = True;. While you are at it, you may also want to change other defaults. Just remember to "make clean; make".
  • It is worthwhile to study the help file to get family with its contents, especially the syntax for selections. The real power of RasMol comes with its scripting capability. It can be used to automate an otherwise tedious operation.
In relation to 3DNA (and SCHNArP for that matter), RasMol v2.6.4 can be used to visualize the Calladine-Drew style rectangular representation of bases (base-pairs) in Alchemy format. As a matter of fact, I initially picked up Alchemy format in SCHNArP (and later in 3DNA) primarily because it is one of the structure file formats supported by RasMol 2.6.x. JMol does not support 3DNA generated Alchemy format file until recently when I made a request, and PyMol does not support Alchemy format the last time I tried it.

I once upgraded to v2.7.x series, but noticed immediately a problem with visualization of Alchemy files from 3DNA. Initially, I thought it was a bug in 3DNA introduced in the source code somewhere. After some late night debugging, I re-tried to display the Alchemy in RasMol v2.6.4, and found that the fault was due to v2.7.x! It is actually quite easy to verify this v2.7.x bug: simply load a PDB structure, write to alchemy, then re-load the alchemy file, and you will see it. I reported this bug to the maintainer of v2.7.x, but was told that the bug was in v2.6.4. That's the reason I have stayed with v2.6.4 thereafter, and made the point that v2.7.x does not work with 3DNA generated schematic. As my programming experience grows, I realize more clearly the subtlety of a software product, and would normally trust the original author unless proved otherwise. It is far too easy to introduce a bug somewhere while fixing/improving other parts, unless you know every detail and/or have a through regression test suite for quality control.

In visualizing 3DNA generated Alchemy files with RasMol v2.6.4, it is important to remember to use command line options "-alchemy -noconnect". While the former option is obvious, the later one is to ensure that RasMol respects the connections explicitly specified by 3DNA generated Alchemy files, which are, after all, schematic, not real atomic structures. Sometimes (not always), this option would make a difference.