Next: , Previous: Trimming Atoms, Up: Map-Related Features


6.19 Map Transformation

If you want to transform a map, you can do it thusly:

(transform-map imol rotation-matrix trans point radius)

where:

rotation-matrix is a 9-membered list of numbers for an orthogonal rotation matrix.

trans is a 3-membered list of numbers (distances in Ångstöms).

point is a 3-membered list of numbers (centre point in Ångstöms).

radius is a single number (also in Ångstöms).

This applies the rotation rotation-matrix and a translation trans to a map fragment, so that when the transformation is applied the centre of the new map is at point.

Example usage:

(transform-map 2 '(1 0 0 0 1 0 0 0 1) '(0 0 1) (rotation-centre) 10)

which transforms map number 2 by a translation of 1Å along the Z axis, centred at the screen centre for 10Å around that centre.

Here's a more real-world example:

Let's say we want to tranform the density over the “B” molecule to a position over the “A” molecule. First we do a LSQ transformation to get the rotation and translation that moves the “B” coordinates over the “A” coordinates:

In the terminal output we get:

|    0.9707,    0.2351,   0.05033|
|  -0.04676,      0.39,   -0.9196|
|   -0.2358,    0.8903,    0.3896|
(    -33.34,     21.14,     18.82)

The centre of the “A” molecule is at (58.456, 5.65, 11.108). So we do:

(transform-map 3 (list 0.9707 0.2351 0.05033 -0.04676 0.39 -0.9196 -0.2358 0.8903 0.3896) (list -33.34 21.14 18.82) (list 58.456 5.65 11.108) 8)

Which creates a map over the middle of the “A” molecule. Note that using a too high radius can cause overlap problems, so try with a small radius (e.g. 5.0) if the resulting map looks problematic.

Alternatively, instead of typing the whole matrix, you can use a coordinates least-squares fit to generate the matrix for you. (transform-map-using-lsq-matrix) does just that.

Heres how to use it:

(transform-map-using-lsq-matrix imol-ref ref-chain ref-resno-start ref-resno-end imol-mov mov-chain mov-resno-start mov-resno-end imol-map about-pt radius)

Hopefully the arguments are self explanatory (ref refers to the reference molecule, of course and about-pt is a 3-number list such as is returned by (rotation-centre)).

We can now export that map, if we want.