Oliver Clarke wrote:
I like the fit protein script - at low resolution, initial rounds of
fitting and refinement often result in my leucines/isoleucines having
fairly implausible rotamers, and fit protein is a great way of quickly
fixing up the worst of these.
However, it doesn't seem to deal so well with residue types where there
are many almost equally probably rotamers (eg lys, arg), and in poor
density these often end up with sidechains lodged firmly in density that
belongs to the neighbouring strand of a beta sheet, for example.
Yes. this can happen. A bit of sphere refinement can help when this
happens. I aim to improve the rotamer search for low resolution cases
for 0.6.
Is there any way to script a function that will allow rotamer-fitting of
specific residue types (eg all except lys, arg and maybe glu and gln)?
Hmm... sort of. The fit-protein and friends have been reworked
recently. You can redefine fit-protein-fit-function. You will notice
that there is now a test for the residue name. You will need a recent
coot pre-release for this to work.
Paul.
(define (fit-protein-fit-function res-spec imol-map)
(let ((imol (list-ref res-spec 0))
(chain-id (list-ref res-spec 1))
(res-no (list-ref res-spec 2))
(ins-code (list-ref res-spec 3)))
(let ((res-name (apply residue-name res-spec)))
(if (not (or (string=? res-name "ARG")
(string=? res-name "LYS")))
(map (lambda (alt-conf)
(with-auto-accept
(format #t "centering on ~s ~s ~s~%" chain-id res-no "CA")
(set-go-to-atom-chain-residue-atom-name chain-id res-no "CA")
(rotate-y-scene 10 0.3) ; n-frames frame-interval(degrees)
(if (string=? alt-conf "")
(auto-fit-best-rotamer res-no alt-conf ins-code chain-id
imol
imol-map 1 0.1))
(if (>= imol-map 0)
(begin
;; (refine-auto-range imol chain-id res-no "")
(refine-zone imol chain-id res-no res-no alt-conf)
(accept-regularizement)))
(rotate-y-scene 10 0.3)))
(residue-alt-confs imol chain-id res-no ins-code))))))
Paul.