Pauls-key-bindings-for-coot

Revision as of 14:26, 12 September 2009 by Emsley (talk | contribs)

(add-key-binding "Refine Active Residue" "r" (lambda () (manual-refine-residues 0)))
(add-key-binding "Refine Active Residue AA" "x" (lambda () (refine-active-residue)))
(add-key-binding "Triple Refine" "t" (lambda () (manual-refine-residues 1)))
(add-key-binding "Triple Refine AA" "h" (lambda () (refine-active-residue-triple)))
(add-key-binding "Autofit Rotamer" "j" (lambda () (auto-fit-rotamer-active-residue)))
(add-key-binding "Pepflip" "q" (lambda () (pepflip-active-residue)))
(add-key-binding "Go To Blob" "g" (lambda () (blob-under-pointer-to-screen-centre)))
(add-key-binding "Add Water" "w" (lambda () (place-typed-atom-at-pointer "Water")))
(add-key-binding "Eigen-flip Ligand" "e" (lambda() (flip-active-ligand)))
(add-key-binding "Add terminal residue" "y" (lambda () 
                        (let ((active-atom (active-residue)))
                          (if (not active-atom)
                              (format #t "No active atom~%")
                              (let ((imol      (list-ref active-atom 0))
                                    (chain-id  (list-ref active-atom 1))
                                    (res-no    (list-ref active-atom 2))
                                    (ins-code  (list-ref active-atom 3))
                                    (atom-name (list-ref active-atom 4))
                                    (alt-conf  (list-ref active-atom 5)))
                                (add-terminal-residue imol chain-id res-no "auto" 1))))))
(add-key-binding "Fill Partial" "k" (lambda ()
                        (let ((active-atom (active-residue)))
                          (if (not active-atom)
                              (format #t "No active atom~%")
                              (let ((imol      (list-ref active-atom 0))
                                    (chain-id  (list-ref active-atom 1))
                                    (res-no    (list-ref active-atom 2))
                                    (ins-code  (list-ref active-atom 3))
                                    (atom-name (list-ref active-atom 4))
                                    (alt-conf  (list-ref active-atom 5)))
                                (fill-partial-residue imol chain-id res-no ins-code))))))

(add-key-binding "Kill Sidechain" "K" 
   (lambda ()		 
       (using-active-atom
	(delete-residue-sidechain aa-imol aa-chain-id aa-res-no aa-ins-code 0))))


(define *refine-residue-sphere-radius* 3.5) ;; Angstroms

(add-key-binding "Refine residues in a sphere" "R"
    (lambda ()
      (let ((active-atom (active-residue)))
        (if (not (list? active-atom))
            (format #t "No active atom~%")
            (let* ((centred-residue (list-head (cdr active-atom) 3))
                   (imol (car active-atom))
                   (other-residues (residues-near-residue imol centred-residue *refine-residue-sphere-radius*))
                   (all-residues (if (list? other-residues)
                                     (cons centred-residue other-residues)
                                     (list centred-residue))))
              (refine-residues imol all-residues))))))


(add-key-binding "Load RNAs files" "F9" 
                 (lambda ()
                   (let* ((home (getenv "HOME"))
                          (dir-1 (append-dir-dir home "data"))
                          (dir-2 (append-dir-dir dir-1 "rnase")))
                     (read-pdb (append-dir-file dir-2 "tutorial-modern.pdb"))
                     (make-and-draw-map (append-dir-file dir-2
                                                         "rnasa-1.8-all_refmac1.mtz")
                                        "/RNASE3GMP/COMPLEX/FWT" 
                                        "/RNASE3GMP/COMPLEX/PHWT" "" 0 0))))
(add-key-binding "Toggle Ghosts" ":" 
                 (lambda () 
                   (let ((keyboard-ghosts-mol 
                          (let ((ls (model-molecule-list)))
                            (let loop ((ls ls))
                              (cond
                               ((null? ls) -1)
                               ((ncs-ghosts (car ls))
                                (car ls))
                               (else
                                (loop (cdr ls))))))))
                     (if (= (draw-ncs-ghosts-state keyboard-ghosts-mol) 0)
                         (set-draw-ncs-ghosts keyboard-ghosts-mol 1)
                         (set-draw-ncs-ghosts keyboard-ghosts-mol 0)))))

(add-key-binding "Hydrogens off" "["
                 (lambda ()
                   (let ((imol
                          (let ((active-atom (active-residue)))
                            (if active-atom
                                (car active-atom)
                                0))))
                   (set-draw-hydrogens imol 0))))
(add-key-binding "Hydrogens on" "]"
                 (lambda ()
                   (let ((imol
                          (let ((active-atom (active-residue)))
                            (if active-atom
                                (car active-atom)
                                0))))
                   (set-draw-hydrogens imol 1))))



(add-key-binding "Rotamer name in Status Bar" "~" 
   (lambda ()
     (let ((active-atom (active-residue)))
       (if (not active-residue)
	   (add-status-bar-text "No residue found")
	   (let ((imol      (list-ref active-atom 0))
		 (chain-id  (list-ref active-atom 1))
		 (res-no    (list-ref active-atom 2))
		 (ins-code  (list-ref active-atom 3))
		 (atom-name (list-ref active-atom 4))
		 (alt-conf  (list-ref active-atom 5)))
	     (let ((name (get-rotamer-name imol chain-id res-no ins-code)))
	       (if (not name)
		   (add-status-bar-text "No name found")
		   (if (string=? "" name)
		       (add-status-bar-text "No name for this")
		       (add-status-bar-text (string-append "Rotamer name: " name))))))))))


(add-key-binding "Add Terminal Residue" "bar" 
		 (lambda ()
		   (let ((active-atom (active-residue)))
		     (if (not active-atom)
			 (format #t "No active atom~%")
			 (let ((imol      (list-ref active-atom 0))
			       (chain-id  (list-ref active-atom 1))
			       (res-no    (list-ref active-atom 2))
			       (ins-code  (list-ref active-atom 3))
			       (atom-name (list-ref active-atom 4))
			       (alt-conf  (list-ref active-atom 5)))
			   (add-terminal-residue imol chain-id res-no "auto" 1))))))