S. Shanmuga Sundara Raj wrote:
Is there a way to export the environmental distances to a text file?
These distances are not saved in the saved state (*.scm). Can you save
the session with the environment distances?
Not exactly, but you can find the residues that are close (5.5A say) to
a given residue (in this case, the residue nearest the centre of the
screen):
(residues-near-residue (car (active-residue)) (map (lambda (n)
(list-ref (active-residue) n)) (list 1 2 3)) 5.5)
And we can use that to get to atom position and distance between atoms
(see attached). (Note this does not filter the main-chain contacts like
environment distances does.)
Paul.
(define contact-dist-cut-off 3.2)
(define (bond-length-from-atoms atom-1 atom-2)
(define (bond-length pos-1 pos-2)
(define (square x)
(* x x))
(sqrt (apply + (map square (map - pos-1 pos-2)))))
(bond-length (list-ref atom-1 2)
(list-ref atom-2 2)))
(let* ((aa (active-residue))
(imol (car aa))
(active-res-spec (map (lambda (n) (list-ref (active-residue) n)) (list 1 2 3))))
(let ((residue-specs (residues-near-residue imol active-res-spec contact-dist-cut-off))
(active-res-atoms (apply residue-info (cons imol active-res-spec))))
(for-each (lambda (residue-spec)
(let ((atom-list (apply residue-info (cons imol residue-spec))))
(for-each (lambda (neighbour-atom)
;; (format #t " active atom: ~s~%" neighbour-atom)
(for-each (lambda (active-atom)
(let ((d (bond-length-from-atoms
active-atom neighbour-atom)))
(if (< d contact-dist-cut-off)
(format #t " contact: ~sA: ~s ~s to ~s ~s~%"
d
residue-spec
(car neighbour-atom)
active-res-spec
(car active-atom)))))
active-res-atoms))
atom-list)))
residue-specs)))