In message <[log in to unmask]>
[log in to unmask] writes:
> Hello
>
> I would like to rotate/translate a multi-subunit complex, each subunit
> having a different chain name. Is there a way (maybe a script) that allows
> this to be done in Coot without attempting to change to a single chain
> name?
I presume that the rotation/translation matrix (m in this case)
is given by a LSQ match. If so, you can use the following.
If not, you can supply the rotation/translation matrix directly
to the transform-coords-molecule function.
a rotation/translation matrix is a
(list
(list m11 m12 m13
m12 m12 m23
m31 m32 m33)
(list t1 t2 t3))
Paul.
;; Set these for your case:
;;
;; match residues 10 to 20 in "B" chain of moving molecule to residues
;; 11 to 21 in chain "A" of reference molecule. The final 2 means "CA
;; match" 0 means "all atom)
(define match-params '(11 21 "A" 10 20 "B" 2))
(define ref-mol 0)
(define moving-mol 2)
(clear-lsq-matches)
(apply add-lsq-match match-params)
(let* ((rc (copy-molecule moving-mol))
(m (apply-lsq-matches ref-mol rc)))
(delete-molecule rc)
(if m
(transform-coords-molecule moving-mol m)))
|