Skip to content
Snippets Groups Projects
num-nt-contacts.tcl 1.95 KiB
source loadRigidBody.tcl

proc abs {a} {
    return $a > 0. ? $a : [expr { -1.*$a}]
}
proc wrapDiff {coords1 coords2} {
    set cell { 300. 300. 300. }
    set r 0.
    for {set i 0} { $i < 3} { incr i } {

        set x1 [lindex $coords1 $i]
        set x2 [lindex $coords2 $i]
        set x  [abs [expr { $x1 - $x2 }]]
        set l  [lindex $cell $i]
        while { $x > [expr { 0.5 *$l }]  } {
            set x [ expr {$x - $l} ]
        }
        set r [expr { $r + $x*$x}]
    }
    return $r
}

proc MeasureContactPBC {dna protein} {

    set count 0
    set cutoff 20
    set cutoff2 [expr { $cutoff * $cutoff } ]
    foreach coords1 $dna {
        foreach coords2 $protein {
            set r [wrapDiff $coords1 $coords2]
            if {$r < $cutoff2} {
                set count [ expr { $count + 1} ]
                break
            }
        }
    }
    return $count
} 

set sel1 [atomselect $IDs "name P0"]
set sel2 [atomselect $IDs "name P1"]
set pro  [atomselect $rbIDs "name CA"]
#set id3 [$pro molid]
#package require pbctools
#pbc set {200. 200. 200.} -all
#pbc wrap -center origin -molid 0 -all
#pbc wrap -centersel {0 0 0} -molid $id1 -all
#pbc wrap -centersel {0 0 0} -molid $id2 -all
set ch [open num-nt-contacts.dat w]

for {set f 0} {$f < [molinfo $IDs get numframes]} {incr f} {
    animate goto $f
    $sel1 frame $f
    $sel2 frame $f
    #set c [$pro get {x y z}]
    #set id1 [$sel1 molid]
    #puts $id1
    #set id2 [$sel2 molid]
    #puts $id2
    #set id3 [$pro molid]
    #pbc wrap -center origin -molid 0 -now
    #pbc wrap -center origin -molid 1 -now
    #pbc wrap -center origin -molid 1 -now
    lassign [measure contacts 10 $sel1 $pro] is js
    set c1 [llength [lsort -unique $is]]
    #set c1 [MeasureContact [$sel1 get {x y z}] [$pro get {x y z}]]
    lassign [measure contacts 10 $sel2 $pro] is js
    set c2 [llength [lsort -unique $is]]
    #set c2 [MeasureContact [$sel2 get {x y z}] [$pro get {x y z}]]
    puts $ch "$f $c1 $c2"
}
close $ch