source: branches/sandbox/distrest.tcl @ 1003

Last change on this file since 1003 was 1003, checked in by chlake, 12 years ago

Fixed bugs in ::sr_restraintdist and ::sr_lookuplist variables.

File size: 25.2 KB
Line 
1
2
3
4# code for distance restraints (soft constraints)
5proc DisplayDistanceRestraints {} {
6    global expcons
7    eval destroy [winfo children $expcons(distmaster)]
8
9    set leftfr $expcons(distmaster).f1
10
11
12    grid [frame $leftfr -bd 2 -relief groove] -column 0 -row 0 \
13        -sticky nsew
14    grid [frame $expcons(distmaster).f2 -bd 2 -relief groove] -column 1 -row 0 \
15        -sticky nsew
16        grid [label $expcons(distmaster).f2.l -text "test message"]
17    grid rowconfigure $expcons(distmaster) 0 -weight 1
18    grid columnconfigure $expcons(distmaster) 1 -weight 1
19
20
21# Pick Phase to be Evaluated **********************************************
22    label $leftfr.phlabel -text Phase
23    set ::sr_phaselist $::expmap(phaselist)
24    eval tk_optionMenu $leftfr.phase sr_entryvar(softphase) $::sr_phaselist
25    grid $leftfr.phlabel -column 0 -row 0
26    grid $leftfr.phase  -column 1 -row 0
27#**************************************************************************
28
29    grid [label $leftfr.lweight -text "Restraint Weight"] -column 0 -row 2 -sticky sw
30    grid [entry $leftfr.weight -width 8 -textvariable entryvar(distrestweight)] -column 1 -row 2 -sticky sw
31    set ::entrycmd(distrestweight) "SoftConst weight"
32    set ::entrycmd(trace) 0
33    set ::entryvar(distrestweight) [SoftConst weight]
34    set ::entrycmd(trace) 1
35    grid [button $leftfr.edit -text "Edit Distance Restraints" -command SR_TEST] -column 0 -row 3 \
36        -sticky sw -columnspan 2
37}
38
39
40
41#package require Tk
42#source c:/gsas/expgui/readexp.tcl
43#source c:/gsas/expgui/gsascmds.tcl
44
45#*********************************************************************************************
46#Read Disangle File and Create Bond List (sr_bond_list)**************************************************************************
47#*********************************************************************************************
48proc SR_Read_Distances {filename} {
49        # initialiaze
50        catch {unset ::sr_lookuplist1}
51        catch {unset ::sr_lookuplist2}
52        catch {unset ::sr_restraintdist}
53        catch {unset ::sr_restraintesd}
54        set ::sr_bond_list ""
55        set ::sr_key_list ""
56
57#::sr_bond_list       0       - Phase Number
58#                     1, 2    - Atom 1 number, Atom 2 number
59#                     3, 4    - symmetry information
60#                     5, 6, 7 - cell translations
61#                     8       - bond distance
62#                     9, 10   - atom types
63#                     11, 12  - atom labels
64#                     13      - bond id key
65
66
67        # switch to run disagl here someday
68        if {[file exists $filename]} {
69                puts "$filename from [pwd] is opened"
70                set fh [open $filename r]
71#               puts $fh
72                } else {
73                       puts "$filename not found in directory [pwd]"
74        }
75        # read in the file
76        set bond_totals -1
77        while {[gets $fh line] >= 0} {
78                if {[lindex $line 2] == 0} {
79                        incr bond_totals
80                        set bond_dist_array($bond_totals) $line
81                        #puts "$bond_dist_array($bond_totals)"
82                }
83        }
84        #puts "there are [phaseinfo 1 natoms] atoms in the file"
85        #puts "$bond_totals bond distances have been read from the file"
86        close $fh
87
88        #create initial parameter for implimentation of soft restraints
89        catch (unset initsoftpar)
90        set x 0
91
92        #set ::sr_bond_list ""
93        while {$x < $bond_totals} {
94
95              #phase number (0)
96              set initsoftpar($x) [lindex $bond_dist_array($x) 1]
97
98              #atom number 1 (1)
99              lappend initsoftpar($x) [lindex $bond_dist_array($x) 5]
100
101              #atom number 2 (2)
102              lappend initsoftpar($x) [lindex $bond_dist_array($x) 6]
103
104              #extract symmetry information (3, 4)
105              set temp [lindex $bond_dist_array($x) 7]
106              lappend initsoftpar($x) [expr abs($temp) % 100 * abs($temp) / $temp]
107              lappend initsoftpar($x) [expr abs($temp)/100]
108
109              #extract unit cell translations  (5, 6, 7)
110              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 0] - 5]
111              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 1] - 5]
112              lappend initsoftpar($x) [expr [string index [lindex $bond_dist_array($x) 8] 2] - 5]
113
114              #create bond ID code
115              set t2 [string map {" " ""} [set t1 $initsoftpar($x)]]
116              set ::sr_restraintdist($t2) ""
117              set ::sr_restraintesd($t2) ""
118
119              #extract bond distance
120              lappend initsoftpar($x) [lindex $bond_dist_array($x) 3]
121
122              #extract atom type and labels
123              set num1 [lindex $bond_dist_array($x) 5]
124              set num2 [lindex $bond_dist_array($x) 6]
125              set type1 [atominfo 1 [lindex $bond_dist_array($x) 5] type]
126              set type1 [lindex [split $type1 {+-}] 0]
127              set type2 [atominfo 1 [lindex $bond_dist_array($x) 6] type]
128              set type2 [lindex [split $type2 {+-}] 0]
129              lappend initsoftpar($x) $type1
130              lappend initsoftpar($x) $type2
131
132              lappend initsoftpar($x) [atominfo 1 [lindex $bond_dist_array($x) 5] label]
133              lappend initsoftpar($x) [atominfo 1 [lindex $bond_dist_array($x) 6] label]
134
135              #puts "$initsoftpar($x)"
136              #set atom types into array
137              lappend ::sr_lookuplist1($type1) $x
138              lappend ::sr_lookuplist2($type2) $x
139
140              #add bond code to list element and key list
141              lappend initsoftpar($x) $t2
142              lappend ::sr_key_list $t2
143
144              #create master list of bonds
145              lappend ::sr_bond_list $initsoftpar($x)
146
147              incr x
148              }
149}
150
151#**************************************************************************************
152# Procedure to sort soft restraints ---------------------------------------------
153#**************************************************************************************
154proc SR_Sort {whichbutton main} {
155     # reset all button labels
156       $::sr_top.alabel1 config -text "Atom 1"
157       $::sr_top.alabel2 config -text "Atom 2"
158       $::sr_top.dlabel1 config -text "Distance"
159
160       if {$whichbutton == "atom1"} {
161          if {$::sr_atom1_button == 1} {
162             set sr_prsort [lsort -integer -decreasing -index 1 $::sr_bond_list]
163             $::sr_top.alabel1 config -text "Atom 1 \u2193"
164             } else {
165               set sr_prsort [lsort -integer -increasing -index 1 $::sr_bond_list]
166               $::sr_top.alabel1 config -text "Atom 1 \u2191"
167          }
168          set x [expr $::sr_atom1_button * -1]
169          set ::sr_atom1_button $x
170          #puts $::sr_atom1_button
171       } elseif {$whichbutton == "atom2"} {
172          if {$::sr_atom2_button == 1} {
173             set sr_prsort [lsort -integer -decreasing -index 2 $::sr_bond_list]
174             $::sr_top.alabel2 config -text "Atom 2 \u2193"
175             } else {
176               set sr_prsort [lsort -integer -increasing -index 2 $::sr_bond_list]
177               $::sr_top.alabel2 config -text "Atom 2 \u2191"
178          }
179          set x [expr $::sr_atom2_button * -1]
180          set ::sr_atom2_button $x
181       } else {
182         if {$::sr_distance_button == 1} {
183             puts "distance"
184             set sr_prsort [lsort -increasing -index 8 $::sr_bond_list]
185             $::sr_top.dlabel1 config -text "Distance \u2193"
186             } else {
187               set sr_prsort [lsort -decreasing -index 8 $::sr_bond_list]
188               $::sr_top.dlabel1 config -text "Distance \u2191"
189         }
190         set x [expr $::sr_distance_button * -1]
191         set ::sr_distance_button $x
192       }
193       set ::sr_bond_list $sr_prsort
194       SR_Fill_Display $main
195
196
197
198}
199#*********************************************************************************
200#Procedure to set up soft display ************************************************
201#*********************************************************************************
202
203proc SR_Display {args} {
204#global rprint
205destroy .mainrestraintbox.sr_rvaluebox
206set ::sr_rb .mainrestraintbox.sr_rvaluebox
207frame $::sr_rb
208pack $::sr_rb -side top -fill both -expand 1
209
210foreach {::sr_top main side lbl} [MakeScrollTable $::sr_rb] {}
211set     ::contraintmainbox $main
212
213button $::sr_top.alabel1 -text "Atom 1 "   -command "SR_Sort atom1 $main"
214button $::sr_top.alabel2 -text "Atom 2 "   -command "SR_Sort atom2 $main"
215button $::sr_top.dlabel1 -text "Distance " -command "SR_Sort distance $main"
216
217grid $::sr_top.alabel1 -column 1 -row 2
218grid $::sr_top.alabel2 -column 2 -row 2
219grid $::sr_top.dlabel1 -column 3 -row 2
220
221label  $::sr_top.rlabel1 -text "Restraint"
222label  $::sr_top.rlabel2 -text "esd"
223button $::sr_top.rcon1   -text "Check All" -width 10 -command {
224                    set ::sr_checkall 1
225                    SR_Set_All_Check_Buttons
226                    grid forget $::sr_top.rcon1
227                    grid $::sr_top.rcon2 -column 6 -row 2 -padx 5
228                    }
229
230button $::sr_top.rcon2   -text "Clear All" -width 10 -command {
231                    set ::sr_checkall 0
232                    SR_Set_All_Check_Buttons
233                    grid forget $::sr_top.rcon2
234                    grid $::sr_top.rcon1 -column 6 -row 2 -padx 5
235                    }
236
237grid $::sr_top.rlabel1 -column 4 -row 2 -padx 20
238grid $::sr_top.rlabel2 -column 5 -row 2 -padx 20
239grid $::sr_top.rcon1   -column 6 -row 2 -padx 5
240
241SR_Sort atom1 $main
242SR_Fill_Display  $main
243}
244
245#*****************************************************************************************
246#Procedure to fill in sorted Restraint and esd data **************************************
247#*****************************************************************************************
248proc SR_Fill_Display {main args} {
249eval destroy [winfo children $main]
250set choice   $::sr_entryvar(choicenum)
251set atomreq1 $::sr_entryvar(softatom1)
252set atomreq2 $::sr_entryvar(softatom2)
253set phasereq $::sr_entryvar(softphase)
254
255set len [llength $::sr_bond_list]
256set rownum 0
257for {set i 0} {$i <= $len} {incr i} {
258     set rprint  [lindex $::sr_bond_list $i]
259     set atomid1 [lindex $rprint 9]
260     set atomid2 [lindex $rprint 10]
261     if {$::sr_entryvar(softphase) == [lindex $rprint 0]} {
262        if {[string trim $::sr_dminvalue] == ""} {set Dmin 0} else {set Dmin $::sr_dminvalue}
263             if {[string trim $::sr_dmaxvalue] == ""} {set Dmax 1000} else {set Dmax $::sr_dmaxvalue}
264                  if {([lindex $rprint 8] >= $Dmin || [lindex $rprint 8] == "?.???") && ([lindex $rprint 8] <= $Dmax || [lindex $rprint 8] == "?.???")} {
265                       if {$atomreq1 == "" || $atomreq1 == "all" || $atomreq1 == $atomid1} {
266                               if {$atomreq2 == "" || $atomreq2 == "all" || $atomreq2 == $atomid2} {
267                                       if {$choice == 0 || ($choice == 1 && [string trim $::sr_restraintdist([lindex $rprint 13])] != "") \
268                                          || ($choice == 2 && [string trim $::sr_restraintdist([lindex $rprint 13])] == "") } {
269                                          label $main.ratom1$i -text [lindex $rprint 11] -justify center -anchor center
270                                          label $main.ratom2$i -text [lindex $rprint 12] -justify center -anchor center
271                                          label $main.rdistance$i -text [lindex $rprint 8] -justify center -anchor center
272                                          entry $main.restraint$i -width 8 -textvariable ::sr_restraintdist([lindex $rprint 13]) -takefocus 1
273                                          bind  $main.restraint$i <KeyRelease> {SR_Validate_Soft %W distance}
274                                          entry $main.restesd$i -width 8 -textvariable ::sr_restraintesd([lindex $rprint 13]) -takefocus 1
275                                          bind  $main.restesd$i <KeyRelease> {SR_Validate_Soft %W esd}
276                                          checkbutton $main.sr_crestraint$i -variable ::sr_crestraint([lindex $rprint 13])
277                                          incr rownum
278                                          grid $main.ratom1$i -column 1 -row $rownum
279                                          grid $main.ratom2$i -column 2 -row $rownum
280                                          grid $main.rdistance$i -column 3 -row $rownum
281                                          grid $main.restraint$i -column 4 -row $rownum
282                                          grid $main.restesd$i -column 5 -row $rownum
283                                          grid $main.sr_crestraint$i -column 6 -row $rownum
284                                          $main.ratom1$i conf -width 8
285                                          $main.ratom2$i conf -width 8
286                                          $main.rdistance$i conf -width 8
287                                          bind $main.restraint$i <ButtonPress> {SR_Set_Rval %W}
288                                       }
289                               }
290                       }
291                  }
292             }
293        }
294
295     bind $::sr_rb <Configure> {ResizeScrollTable $::sr_rb}
296     }
297#****************************************************************************
298#Procedure for updating sr_rvalue and sr_resd Boxes *******************************
299#****************************************************************************
300proc SR_Set_Rval {window} {
301         set ::sr_rvalue [$window get]
302         set ::sr_resd [[regsub ".f.restraint" $window ".f.restesd"] get]
303         }
304
305#****************************************************************************
306#Error Checking Procedures for Entry Boxes **********************************
307#****************************************************************************
308
309proc SR_Validate_Num {val1} {
310     # is it a valid number?
311     if {[string trim $val1] != ""} {
312          expr $val1
313          if {$val1 < 0} {error}
314     }
315}
316
317proc SR_Validate_Soft {win type} {
318     set val [$win get]
319     if {[catch {
320        SR_Validate_Num $val
321     }]} {
322         # error on validation
323        $win config -fg red
324        $::srcb3.rbutton3 config -bg red -text "Invalid Restraints"
325        set ::sr_error 1
326     } else {
327         # valid value
328        $win config -fg black
329        $::srcb3.rbutton3 config -bg green -text "Save Restraints to EXP File"
330        set ::sr_error 0
331     }
332}
333
334#**************************************************************************************
335#Procedure to load current restraints, flag presetraints and build restraint only list
336#**************************************************************************************
337proc SR_Load_Restraints {args} {
338set temp_res [SoftConst restraintlist]
339set lenr [llength $temp_res]
340
341#for {set i 0} {$i < $lenr} {incr i} {
342#    set temp_res1 [lindex $temp_res $i]
343#}
344  foreach temp_res1 $temp_res {
345    set t1 "[lindex $temp_res1 0] [lindex $temp_res1 1] [lindex $temp_res1 2] \
346            [lindex $temp_res1 3] [lindex $temp_res1 4] [lindex $temp_res1 5] \
347            [lindex $temp_res1 6] [lindex $temp_res1 7]"
348    set t2 [string map {" " ""} $t1]
349
350    set test [lsearch -exact $::sr_key_list $t2]
351
352        if {$test == -1} {
353          set new_restraint ""
354          set type1 [atominfo 1 [lindex $temp_res1 1] type]
355          set type1 [lindex [split $type1 {+-}] 0]
356          set type2 [atominfo 1 [lindex $temp_res1 2] type]
357          set type2 [lindex [split $type2 {+-}] 0]
358
359          lappend new_restraint [lindex $temp_res1 0] [lindex $temp_res1 1] \
360                  [lindex $temp_res1 2] [lindex $temp_res1 3] [lindex $temp_res1 4] \
361                  [lindex $temp_res1 5] [lindex $temp_res1 6] [lindex $temp_res1 7] \
362                  "?.???" $type1 $type2 \
363                  [atominfo 1 [lindex $temp_res1 1] label] [atominfo 1 [lindex $temp_res1 2] label] \
364                  $t2
365          set x [llength $::sr_bond_list]
366          lappend ::sr_lookuplist1($type1) $x
367          lappend ::sr_lookuplist2($type2) $x
368          lappend ::sr_bond_list $new_restraint
369        }
370        set ::sr_restraintdist($t2) [lindex $temp_res1 8]
371        set ::sr_restraintesd($t2) [lindex $temp_res1 9]
372
373
374
375# if $t2 not in ::sr_bond_list need to add to sr_bond_list and ::sr_lookuplist1/2
376    }
377}
378
379
380#*************************************************************************
381#write soft restraints to file *******************************************
382#*************************************************************************
383proc SR_Write_Restraints { } {
384     if {$::sr_error == 0} {
385#          set ::sr_write ""
386          set len [llength $::sr_bond_list]
387          for {set i 0} {$i <= [expr $len-1]} {incr i} {
388                    set temp [lindex $::sr_bond_list $i]
389                    if {[string trim $::sr_restraintdist([lindex $temp 13])] != ""} {
390                                set softrest "[lindex $temp 0] [lindex $temp 1] \
391                                [lindex $temp 2] [lindex $temp 3] [lindex $temp 4] \
392                                [lindex $temp 5] [lindex $temp 6] [lindex $temp 7]\
393                                $::sr_restraintdist([lindex $temp 13])\
394                                $::sr_restraintesd([lindex $temp 13])"
395                                lappend sr_write $softrest
396                    }
397          }
398          # put the entire restraint list back into the .EXP file
399          SoftConst restraintlist set $sr_write
400          # indicate a change to the .EXP file
401          incr ::expgui(changed)
402          # close the window and return access to main window
403          destroy .mainrestraintbox
404          afterputontop
405     } else {
406            bell
407             #puts "invalid restaint / esd.  Save aborted"
408            }
409}
410
411#*********************************************************************************
412#Procedure to update restraints *************************************************
413#*********************************************************************************
414
415proc SR_Update_Restraints {args} {
416     foreach i [array names ::sr_crestraint] {
417             if {$::sr_crestraint($i) == 1} {
418                #puts "::sr_restraintdist($i) $::sr_rvalue"
419                set ::sr_restraintdist($i) $::sr_rvalue
420                set ::sr_restraintesd($i) $::sr_resd
421             }
422     }
423}
424
425#*******************************************************************************
426#Procedure to delete restraints ************************************************
427#*******************************************************************************
428
429proc SR_Delete_Restraints {args} {
430      foreach i [array names ::sr_crestraint] {
431              if {$::sr_crestraint($i) == 1} {
432                            set ::sr_restraintdist($i) ""
433                            set ::sr_restraintesd($i) ""
434              }
435      }
436}
437
438#*********************************************************************************
439#set flag for restraint update ***************************************************
440#*********************************************************************************
441proc SR_Set_All_Check_Buttons { } {
442     # loop over all widgets in main frame
443     foreach w [winfo children $::contraintmainbox] {
444             # pick out checkboxes which have crest
445             if {[string first crest $w] != -1} {
446                  $w deselect
447                  if {$::sr_checkall} {
448                    $w invoke
449                    }
450             }
451     }
452}
453
454#*********************************************************************************
455#Main Program Begin***************************************************************
456#*********************************************************************************
457proc SR_Main_Editor {args} {
458
459     catch {destroy .mainrestraintbox}
460     set mrb .mainrestraintbox
461     toplevel $mrb
462     #pack $mrb -side top
463     wm title $mrb "Soft Restraint Control Panel"
464     #wm geometry $mrb 415x500+10+10
465     #wm geometry $mrb {}
466     set srcb1 $mrb.srconbox1
467     set srcb2 $mrb.srconbox2
468     set ::srcb3 $mrb.srconbox3
469     frame $srcb1 -bd 2 -relief groove -pady 5
470     frame $srcb2 -bd 2 -relief groove -pady 5
471     frame $::srcb3 -bd 2 -relief groove -pady 5
472     pack $srcb1 -side top -anchor w -fill x
473     pack $srcb2 -side top -anchor w -fill x
474     pack $::srcb3 -side bottom -anchor w -fill x
475
476     label $srcb1.atomlabel1   -text "Atom Type 1"
477     label $srcb1.atomlabel2   -text "Atom Type 2"
478     label $srcb1.dminlabel    -text "Dmin"
479     label $srcb1.dmaxlabel    -text "Dmax"
480     label $srcb2.restlabel    -text "Restraint Value" -width 16 -anchor w
481     label $srcb2.restlabelesd -text "esd"
482     eval tk_optionMenu $srcb1.atom1 ::sr_entryvar(softatom1) "[lsort [array names ::sr_lookuplist1]] all"
483     eval tk_optionMenu $srcb1.atom2 ::sr_entryvar(softatom2) "[lsort [array names ::sr_lookuplist2]] all"
484
485
486     entry  $srcb1.sr_dminvalue -width 8 -textvariable ::sr_dminvalue        -takefocus 1
487     entry  $srcb1.sr_dmaxvalue -width 8 -textvariable ::sr_dmaxvalue        -takefocus 1
488     entry  $srcb2.sr_rvalue    -width 8 -textvariable ::sr_rvalue           -takefocus 1
489     entry  $srcb2.sr_resd      -width 8 -textvariable ::sr_resd             -takefocus 1
490
491     bind  $srcb1.sr_dminvalue <KeyRelease> {SR_Validate_Soft %W dmin}
492     bind  $srcb1.sr_dmaxvalue <KeyRelease> {SR_Validate_Soft %W dmax}
493     bind  $srcb2.sr_rvalue    <KeyRelease> {SR_Validate_Soft %W sr_rvalue}
494     bind  $srcb2.sr_resd      <KeyRelease> {SR_Validate_Soft %W sr_resd}
495
496     button $srcb1.recalc   -text "Filter" -bd 6 -command {SR_Display}
497     button $srcb2.rbutton1 -text "check update" -command {SR_Update_Restraints}
498     button $srcb2.rbutton2 -text "check remove" -command {SR_Delete_Restraints}
499     button $::srcb3.rbutton3 -text "Save Restraints to EXP File" -bd 6 -bg green -command {SR_Write_Restraints}
500     button $::srcb3.rbutton4 -text "Cancel" -command {destroy .mainrestraintbox; afterputontop}
501
502     grid $srcb1.atomlabel1   -column 1 -row 0
503     grid $srcb1.atom1        -column 2 -row 0
504          $srcb1.atom1 conf -width 2
505     grid $srcb1.atomlabel2   -column 1 -row 1
506     grid $srcb1.atom2        -column 2 -row 1
507          $srcb1.atom2 conf -width 2
508     grid $srcb1.recalc       -column 4 -row 2 -padx 5
509                    $srcb1.recalc conf -width 7
510
511grid $srcb1.dminlabel       -column 3 -row 0
512grid $srcb1.sr_dminvalue    -column 4 -row 0
513grid $srcb1.dmaxlabel       -column 3 -row 1
514grid $srcb1.sr_dmaxvalue    -column 4 -row 1
515
516
517set choice {"Show All Bonds" "Restrained Bonds" "Unrestrained Bonds"}
518set ::sr_entryvar(choice) "Show All Bonds"
519
520set m1 [eval tk_optionMenu $srcb1.rcon3 sr_entryvar(choice) $choice]
521# set up a variable to track menu choices by number. Do this by adding a command
522# to each item in the option menu
523  foreach i {0 1 2} {
524          $m1 entryconfig $i -command "set ::sr_entryvar(choicenum) $i"
525  }
526grid $srcb1.rcon3 -column 1 -row 2 -padx 5
527     $srcb1.rcon3 config -width 23
528grid configure $srcb1.rcon3 -columnspan 2
529
530grid $srcb2.restlabel    -column 0 -row 3 -sticky w
531grid $srcb2.sr_rvalue    -column 1 -row 3
532grid $srcb2.restlabelesd -column 2 -row 3
533grid $srcb2.sr_resd      -column 3 -row 3
534grid $srcb2.rbutton1     -column 4 -row 3 -padx 5
535grid $srcb2.rbutton2     -column 5 -row 3 -padx 5
536
537grid $::srcb3.rbutton3     -column 0 -row 0
538grid $::srcb3.rbutton4     -column 0 -row 1 -pady 5
539
540
541
542SR_Display
543
544foreach item [trace vinfo ::sr_entryvar(softatom1)] {
545        eval trace vdelete ::sr_entryvar(softatom1) $item
546}
547trace variable ::sr_entryvar(softatom1) w SR_Display
548
549foreach item [trace vinfo ::sr_entryvar(softatom2)] {
550        eval trace vdelete ::sr_entryvar(softatom2) $item
551}
552trace variable ::sr_entryvar(softatom2) w SR_Display
553
554foreach item [trace vinfo ::sr_entryvar(choicenum)] {
555        eval trace vdelete ::sr_entryvar(choicenum) $item
556}
557trace variable ::sr_entryvar(choicenum) w SR_Display
558
559foreach item [trace vinfo ::sr_entryvar(softphase)] {
560        eval trace vdelete ::sr_entryvar(softphase) $item
561}
562#trace variable ::sr_entryvar(softphase) w SR_Display
563putontop $mrb
564
565#list of global variables and procedures
566#bond_dist_array
567#::sr_lookuplist1
568#::sr_lookuplist2
569#bond_totals
570#::sr_rb
571#::sr_top
572#::sr_checkall
573#::sr_entryvar(choicenum)
574#::sr_entryvar(softatom1)
575#::sr_entryvar(softatom2)
576#::sr_entryvar(softphase)
577#::sr_dminvalue
578#::sr_dmaxvalue
579#::sr_restraintdist
580#::sr_restraintesd
581#::sr_rvalue
582#::sr_resd
583#::srcb4.rbutton3
584#::sr_crestraint
585#::sr_phaselist
586#::sr_bond_list
587
588#SR_Read_Distances
589#SR_Make_ScrollTable
590#SR_Resize_Scroll_Table
591#SR_Display
592#SR_Set_Rval
593#SR_Validate_Num
594#SR_Load_Restraints
595#SR_Write_Restraints
596#SR_Update_Restraints
597#SR_Delete_Restraints
598#SR_Set_All_Check_Buttons
599#SR_Build
600
601}
602#************************************************************************
603#Procedure to Initialize variables ***************************************
604#*************************************************************************
605proc SR_Initialize {} {
606set ::sr_atom1_button 1
607set ::sr_atom2_button 1
608set ::sr_distance_button 1
609set ::sr_entryvar(choicenum) 0
610set ::sr_entryvar(softphase) "1"
611set ::sr_entryvar(softatom1) "all"
612set ::sr_entryvar(softatom2) "all"
613set ::sr_phaselist $::expmap(phaselist)
614set ::sr_error 0
615set ::sr_bond_list ""
616}
617
618
619
620#expload TEST3.EXP
621#mapexp
622SR_Initialize
623#SR_Read_Distances test2.disagl
624#SR_Load_Restraints
625#SR_Main_Editor
626#SR_Load_Restraints
627
628proc SR_TEST {} {
629SR_Read_Distances test2.disagl
630SR_Load_Restraints
631SR_Main_Editor
632}
633
634#***********************************************************************
635#Build Hard List of Restraints *****************************************
636#***********************************************************************
637proc SR_Hard_List {args} {
638
639destroy .sr_hardbox
640set ::sr_hb .sr_hardbox
641frame $::sr_hb
642pack $::sr_hb -side top -fill both -expand 1
643
644foreach {::sr_hard main side lbl} [MakeScrollTable $::sr_hb] {}
645set     ::contraintmainbox $main
646
647
648set resnum [llength $::sr_restraints_only]
649puts $resnum
650
651
652
653}
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
Note: See TracBrowser for help on using the repository browser.