source: branches/sandbox/distrest.tcl @ 1004

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

Added restraint only list to main restraints window.

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