O > read arcade_keyboard.odb
O > arcade
New> Option [ON] :
New> Defined codes : 16
O > $ cat $ODAT/arcade_keyboard.odb
.ARCADE_CODES T 16 24
q GRAB_ROT_X -3.00000
w GRAB_ROT_X 3.00000
a GRAB_ROT_Y -3.00000
s GRAB_ROT_Y 3.00000
z GRAB_ROT_Z 3.00000
x GRAB_ROT_Z -3.00000
e DIAL_05 -.200000
r DIAL_05 .200000
d DIAL_06 .200000
f DIAL_06 -.200000
c DIAL_07 .200000
v DIAL_07 -.200000
1 DIAL_04 -1.00000
2 DIAL_04 1.00000
3 DIAL_08 -1.00000
4 DIAL_08 1.00000
Now when the user activates a grab command, such as grab_build, hitting the q & w keys cause a rotation about the X-axis (the horizontal), while a & s rotate about the vertical axis, and z & x rotate about the axis perpendicular to the screen. Similarly, neighboring keys have been allocated to act as virtual dials to control zoom (characters 1,2), slab (3,4), and translations (characters e,r,d,f,c,v).
The controlling ODB is a text datablock, with one line per mapping. The first item in the line must be a single printing character (not space), the second item is one of the logical events, the third item is a generated value.
Arcade mode is needed when using input devices such as the X-Arcade and Belkin N52 devices. Both devices can be reprogrammed to generate particular characters for particular actions. If they have a default setting that generates a non-printing character or tab, this setting at least must be re-programmed.
Note that the Griffin Technology PowerMate does not need to be used with the arcade option.
![]() |
The PowerMate can be programmed to generate key codes that correspond to left and right arrows. In use, therefore, the user keeps open the Fake-Dial pull-down, clicks on a desired entry and starts turning the dial of the PowerMate. Here is a screen shot of the required settings under OSX. |
![]() |
Belkin N42 and PowerMate.The PowerMate is rather small, and suitable for a crowded desk. The N52 is larger but has more input options. The N52 has a sophisticated applet that gives a great deal of control over the key actions. |
![]() |
The X-Arcade comes in two sizes; one with a pair of joysticks, the other with just one. Both have an array of buttons. The X-Arcade joysticks generate single events whatever their settings. Although rather large, both X-Arcades are very well built |
![]() |
No system is complete without iTunes. |
Applets for the PowerMate and N52 are only available under OSX and Windows XP. Plugging a Powermate into my Sony VGN-S3VP laptop running Linux generates no useful key events. An interface to O has been made, however, by ....
The N52, out of the box, generates 11 useable events from the 14 available keys, as well as the 4 arrow movements from the thumb control. An informed Linux user can, no doubt, do better.

This command tries to build a protein, of known sequence, in an electron density map. It only works on proteins, and requires a map where peptide bumps are visible. The user needs to generate a skeleton around the molecule (or molecules) and to have already used SST_setup with ALPH5 and BETA5 fragments. The user can, of course, have already edited the skeleton, to improve the connectivity or atom assignments. The user can also have worked with the SST system in O to generate an initial TRACE molecule which could then be extended by Auto_build.
A complete set of ODB entries for the molecule getting built must be present in the user’s database. These entries are usually generated from the sequence with the Build_init or Sam_init command. The TRACE ODB entries must also be loaded into the user’s database.
The various steps in this command try to build and extend portions of the poly-alanine TRACE molecule. The final TRACE could be a large number of small fragments if unsuccessful or a smaller number of larger fragments. The end result of running this option is that the molecule is built starting from the longest fragments. If a smaller fragment is found to have a best fit to a portion of the sequence that has already been built, it does not get incorporated into the new structure. The user has the option of saving the complete poly-alanine TRACE molecule that is generated, or just the portions that are not merged into the new structure. A mosaic PDB file is generated at the end, which contains the parts of the molecule with known sequence, parts of the unused TRACE, and water molecules placed in unaccounted electron density.
The following is an automatic run on the structure Rv0130 (Johansson et al., 2006, visit the RAPID part of my site for more information on this structure). The output has been edited for brevity, and is the second cycle of auto-building (i.e. the first model was auto-built in the experimental map, refined with Refmac, and used for a new map calculation).
If the unknown structure has NCS and the operators are known, this can be used in the auto-building.
O > aut_b
New> What map? [F21]:
New> Skeleton molecule [S1]:
New> Number of atoms in skeleton 8510
New> New structure getting built [?]: m2
New> Number of residues in molecule 300
New> Do we have NCS symmetry (Y/[N]) ? [N]: y
New> O will try to locate and/or use NCS
New> Specify an O NCS operator name (if you have one): []: q
New> Specify an O NCS operator name (if you have one): []:
New> Number of NCS OPS 1
New> Number of chains 2
New> Each of 150 residues
New> Zap the TRACE ([Y]/N) ? [Y]:
New> Backup made of trace_residue_trace
New> TRACE is zapped
New> Save the complete TRACE at the end ([Y]/N) ? [Y]: n
New> Just the unused segments of the TRACE will be saved at the end
level 0.4849288
New> Build at ~ 48.5 13.7 41.3
In the above, I have specified that I will use the NCS symmetry when auto_building and that the operator for the dimer is stored in O as part of the lsq-system named q. This implies an ODB entry .lsq_rt_q exists. Note that the sequence of the dimer has been used to make the entries associated with the molecule M2. The TRACE has been zapped before auto-building. The electron density in the Fm-slider system has been set at an appropriate level, and is used as part of the rotamer calculations. I have also centred roughly on the middle of the molecule. This has some influence on how the fragments coalesce into the final asymmetric unit.
In Step 1, the first TRACE is made. The 5-mers are fitted into the density, best fitting ones first. Close 5-mers are extended and the ends of each remaining fragment are cropped.
New> ***************************Step 1: make a TRACE
New> ***This is done with short a5, b5 templates***
New> ***************************Add a5 and b5 templates
New> ***************************Optimize their fit
New> ***************************Filter by ED level
New> ***************************Filter by skeleton proximity
New> ***************************Join close a5s
New> ***************************Extend close a5s
New> ***************************Extend close b5s
New> ***************************Crop ends
In Step 2, the TRACE is extended by building from free ends of the fragments and by trying to connect close segments. The extension process forces good fit to the density and no bad clashes. The skeleton connectivity is used to decide how to extend segments. If there are branch points, the direction of the main-chain will be used. If the branches are all main-chain, each one gets checked in turn. If more than one path is possible after applying the rejection criteria, the extension stalls. As the segments get built, the skeleton gets cleaned up. Symmetry merging and compaction also takes place.
New> ***************************Step 2: extend TRACE
New> ***Use short connections, tough criteria***
New> ***************************Cleanup skeleton
New> ***************************Connect close segments
New> ***************************Symmetry merge
New> ***************************Compact segments
New> ***************************Filter overlap
New> ***************************Cleanup skeleton
New> ***************************Connect close segments
New> ***************************Cleanup skeleton
New> ***************************Extend at N-termini
New> ***************************Cleanup skeleton
New> ***************************Extend at C-termini
New> ***************************Compact segments
New> ***************************Filter overlap
New> ***************************Cleanup skeleton
New> ***************************Connect close segments
New> ***************************Cleanup skeleton
New> ***************************Extend at N-termini
New> ***************************Cleanup skeleton
New> ***************************Extend at C-termini
New> ***************************Compact segments
In Step 3, the TRACE is extended with less stringent rejection criteria.
New> ***************************Step 3: extend TRACE
New> ***Less tough criteria***
New> ***************************Cleanup skeleton
New> ***************************Connect close segments
New> ***************************Cleanup skeleton
New> ***************************Compact segments
New> ***************************Filter overlap
New> ***************************Cleanup skeleton
New> ***************************Symmetry merge
New> ***************************Filter overlap
New> ***************************Tidy-up segments
New> ***************************Assign NCS if present
New> ***************************Tidy-up segments
New> ***************************Save segments in TRACE
In Step 4, the TRACE will get decorated to find where the sequence matches the density.The longest segment is tested first, and each segment is tested in turn (generating a lot of output).If the optimal path of each segment has not been built yet, it is merged into the molecule, and side-chains are added.
New> ***************************Step 4: decorate TRACE
New> ***Each segment is checked, longest first***
New> ***************************YASSPA the TRACE
New> ***************************Decor_guess each segment
New> ***************************Merge TRACE into <mol>
New> ***************************Decor_guess each segment
New> ***************************Merge TRACE into <mol>
In Step 5, the results of the auto-building are produced. In this example, 234 of the 300 residues in M2 have been built, and no bits of TRACE are left over. 706 water molecule are needed to fill the unaccounted electron density in the asymmetric unit. Therefore, in this example the mosaic model auto.pdb contains just parts of the molecule and solvent.
New> ***************************Step 5: output the results
New> ***The results consist of 3 parts
New> ***The molecule getting built - in the ODB
New> ***Any TRACE segments not incorporated
New> ***A mosaic molecule saved as a PDB file
New> ***************************These residues are built:
00001111111110000000001111111111111111111111111111
00000001111111111111111111110000001111111111111111
11111111111111111000001111111111111111111111111110
00000011111110000000001111111111111111111111111111
00000001111111111111111111110000001111111111111111
11111111111111111000001111111111111111111111111110
New> ***************************Make a pool of water
New> ***************************Make mosaic PDB file
New> File auto.pdb generated.
New> There were 234 built residues.
New> There were 0 trace residues.
New> There were 706 solvents.
New> Only unused segments of the TRACE are saved
New> ***************************Done
The output matrix of 1/0 shows which parts of M2 have been built. The user can now continue with a round of refinement of the mosaic molecule, or can use the Grab_build tools in O to complete the structure.
Here is the Ca of Rv0130 at this stage, looking down the 2-fold axis:

Here is a close up with the auto-built structure having yellow carbons and the final, fully refined coordinates with white carbons. Note how well they fit, except for a PHE side chain at bottom left:

h is is worth looking at in more detail:

The side-chain density is not continuous with the main-chain, and so the rotamer fitting did not work. However, there is density for the ring and so the mosaic molecule has 4 water molecules fitted into it.
Here is a piece of the structure where auto-building failed to generate a main-chain (something to do this summer):

The complete run of Auto_build took less than 20 minutes on my Apple Macbook Pro laptop.
Disclaimer: I have used this one only 2 structures (Rv0130 & Rv0216). These are the only structures my co-workers and I have worked on recently where carbonyl bumps were visible. Things worked very well on both. If things do not work for you, I’d be interested in knowing more.
This command works with Bone_repeat and Bone_skip to build a rough representation of a molecule by identifying skeleton atoms as C(entral)A(toms) atoms. The command now works with the residue ‘central atom’ (defined for each residue in the stereo_chem.odb dictionary) rather than protein CA atoms and can, therefore, be used to build proteins or nucleic acids. When activated you must specify where you wish to start in the sequence and if you wish to go forward or backward through the sequence.
O > bon_ca_id
Bone> What molecule [TRACE ]? p2
Bone> Start residue : a8
Bone> Backwards or Forwards (B/[F])?
You can then pick any atom and its coordinates get associated with the CA atom of the current residue shown in the prompt window. The identified atom is usually a skeleton atom but can in fact be any kind of atom. As the molecule is developed, a text object is generated to show what has been built (residue name & 1 letter code at each CA), and the <mol>_CA object gets updated as you work. It is not recommend for ab initio model building, but if the Decor system has a problem with building a poorly defined loop, say, this command could be used to produce a rough initial CA-model, before improving it with the Loop commands.
The command can be paused by setting a variable in the ODB to a non-zero value (via Db_Set_data .bones_integer 12 12 1), and re-activated by setting the same variable back to zero (via Db_Set_data .bones_integer 12 12 0).
The program halts when it recognizes a terminus of the molecule or with Clear_flag
![]() |
In the following P2 myelin example, some of the skeleton connections in the middle of the molecule are broke, and the command activated |
![]() |
The previously assigned main-chain atoms are reclassified as side-chain, and the skeleton object is updated with the new codes. |
Any group of coonected atoms can be defined with this command. To illustrate the use of this command, I shall build an ADP molecule. The ADP is first built at the screen centre, roughly where we have some denisty. The Build_residue command requres that we have a stereochemical description of the ADP (i.e. it is described in the stereo_chem.odb, and refi_init/refi_gener have been used)
O > bui_res
Mnp> Molecule getting built [M6A]: adp
Mnp> Residue : [?]: a501
Mnp> Build direction ([F]/B/C): [F]: c
O > z ; end ! adenine ring separated from the ribose via Bond_break
O > bu_ed_gr ! skeleton and N9 atom ID'ed
New> Score: 0.873
New> Fm_rsr_group ! activated from the Pull-down, N9 ID'ed
Fm> Score: 1.135
![]() |
The adenine ring is first separated from the ribose ring (using Bond_break) to form a group |
![]() |
Build_ed_group is then activated and a skeleton atom roughly where the N9 atom is to be placed, and the N9 in the group are identified. The adenine then moves as a rigid body to fit the density, and can be further optimized with the Fm_rsr_group command (also accessible from the Density/E.D.Fit pull-down) |
![]() |
We wish to build residue 230, a tyrosine. The map and skeleton clearly show good density for this residue. Note that the peptide bump is clearly defined. The map has been specified in the Density pull-down. The residue to be built has been highlighted in the Sequence pull-down |
![]() |
Build_ed_res has been activated, and a skeleton atom close to the branch point has been identified |
![]() |
Fm_rsr_zone has been used to slightly improve the fit. |
![]() |
The adenine ring has been fitted to the density and seoparated from the rest of the ADP (see Build_ED_group above) |
![]() |
Build_nucelus has been activated and an atom in the ring ID'ed. The rest of the ADP has been generated from the stereochemistry. |
![]() |
The adenine ring has been used as a nucleus to build the rest of the ADP using Build_nucleus
The the C2*-C3* bond in the ribose ring has then been broken. |
![]() |
Fm_rsr_tor has been used with the largest allowed number of connected bonds, from C8 in the adenine to PA, to give a roughly fitting ADP |
![]() |
Fm_rsr_zone has been used to optimize the fit |
If the residue has too many connected torsion angles to use Fm_rsr_tor directly, it can be trimmed back to make a new, larger nucleus that can be fitted with Fm_rsr_tor. After fitting, this larger group can then be extended with Build_nucleus, and the process repeated, if necessary. Once a complete, roughly fitting residue has been built, it can be optimized to the density with Fm_rsr_zone.
- O > bu_res
Mnp> Molecule getting built [A]:
Mnp> Residue : [?]: a22
Mnp> Build direction ([F]/B/C):
- O> Buil_rot
Mnp> Molecule getting built [A]:
Mnp> Residue : [?]: a22
Mnp> Rotamer number: 2
Mnp> No rotamers found for ALA
![]() |
![]() |
![]() |
Connectivity code ALL |
![]() |
Connectivity code SC |
![]() |
Connectivity code MC |