Changeset 1109
- Timestamp:
- Jan 18, 2011 4:19:26 PM (13 years ago)
- Location:
- branches/sandbox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sandbox/Geo_Viewer.tcl
r1027 r1109 280 280 label $top.toplabel1 -text "Atom 2" -width 8 281 281 label $top.toplabel2 -text "symm" -width 8 282 label $top.toplabel3 -text "Distance" -width 8282 label $top.toplabel3 -text "Distance" -width 10 283 283 label $top.toplabel4 -text "Angle" 284 284 # grid $top.toplabel0 -column 0 -row 0 … … 315 315 set bondesd [lindex $j 8] 316 316 set bondentry [formatSU $bonddist $bondesd] 317 label $::geo_main.bonddist${bondnum} -text $bondentry -width 8317 label $::geo_main.bonddist${bondnum} -text $bondentry -width 10 318 318 319 319 grid $::geo_side.atom1${bondnum} -row $rownum -column 0 -
branches/sandbox/addcmds.tcl
r1103 r1109 1936 1936 ] -row 2 -column 0 -columnspan 10 1937 1937 } 1938 #xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x 1939 1940 proc Fix_Initialize {numberList} { 1941 set phaselist $::expmap(phaselist) 1942 catch {unset ::fix_param} 1943 foreach i $phaselist { 1944 set ::fix_list(X,$i) "" 1945 set ::fix_list(Y,$i) "" 1946 set ::fix_list(Z,$i) "" 1947 1948 set temp [atom_constraint_read $i] 1949 foreach j $temp { 1950 set atomnum [string trim [string range $j 2 3]] 1951 set param [string trim [string range $j 4 6]] 1952 set ::fix_param($i,$atomnum,$param) 1 1953 if {$param == "X"} {lappend ::fix_list(X,$i) $atomnum} 1954 if {$param == "Y"} {lappend ::fix_list(Y,$i) $atomnum} 1955 if {$param == "Z"} {lappend ::fix_list(Z,$i) $atomnum} 1956 } 1957 } 1958 1959 set ::fix_state_X [Fix_State 1 $numberList X] 1960 set ::fix_state_Y [Fix_State 1 $numberList Y] 1961 set ::fix_state_Z [Fix_State 1 $numberList Z] 1962 1963 } 1964 1965 proc Fix_State {phase numberList coord} { 1966 set status_fixed "-1" 1967 set status_unfixed "-1" 1968 puts "$coord before: $status_fixed $status_unfixed" 1969 foreach i $numberList { 1970 set temp [info exists ::fix_param($phase,$i,$coord)] 1971 puts "::fix_param($phase,$i,$coord) is variable present?: $temp" 1972 if {$temp != 0} {set status_fixed 1} 1973 if {$temp == 0} {set status_unfixed 1} 1974 } 1975 puts "$coord after $status_fixed $status_unfixed" 1976 if {$status_fixed == 1 && $status_unfixed != 1} {return "fixed"} 1977 if {$status_fixed == 1 && $status_unfixed == 1} {return "mixed"} 1978 if {$status_fixed != 1 && $status_unfixed == 1} {return "unfixed"} 1979 } 1980 1981 proc Fix_Write {} { 1982 incr ::expgui(changed) 1983 puts "Prepare to write [array names ::fix_Param]" 1984 foreach j [array names ::fix_param] { 1985 regexp {[0-9]+} $j temp_phase 1986 regexp {,[0-9]+} $j ans 1987 set temp_atom [string range $ans 1 end] 1988 regexp {[a-zA-Z]+} $j temp_param 1989 if {$temp_param == "U"} {regexp {[a-zA-Z]+[0-9]+} $j temp_param} 1990 set temp_entry [format "%1s %+2s%-4s" $temp_phase $temp_atom $temp_param] 1991 lappend fix_list($temp_phase) $temp_entry 1992 } 1993 set phaselist $::expmap(phaselist) 1994 foreach i $phaselist { 1995 catch {atom_constraint_write $i $fix_list($i)} 1996 puts $fix_list($i) 1997 } 1998 } 1999 2000 proc Fix_Atoms {phase numberList coord but} { 2001 # puts "before ::fix_state_$coord [set ::fix_state_$coord]" 2002 puts " before operationi: $::fix_list($coord,$phase)" 2003 switch [set ::fix_state_$coord] { 2004 "unfixed" {$but config -text "fixed" 2005 set ::fix_state_$coord "fixed" 2006 } 2007 "fixed" {$but config -text "unfixed" 2008 set ::fix_state_$coord "unfixed" 2009 } 2010 "mixed" {$but config -text "unfixed" 2011 set ::fix_state_$coord "unfixed" 2012 } 2013 } 2014 if {[set ::fix_state_$coord] == "fixed"} { 2015 puts "fixing atom number $numberList" 2016 foreach i $numberList { 2017 lappend ::fix_list($coord,$phase) $i 2018 set ::fix_list($coord,$phase) [lsort -uniq -integer $::fix_list($coord,$phase)] 2019 set ::fix_param($phase,$i,$coord) 1 2020 } 2021 } 2022 if {[set ::fix_state_$coord] == "unfixed"} { 2023 puts "unfixing atoms $numberList" 2024 foreach i $numberList { 2025 set temp [lsearch $::fix_list($coord,$phase) $i] 2026 if {$temp != -1} { 2027 set ::fix_list($coord,$phase) [lreplace $::fix_list($coord,$phase) $temp $temp] 2028 catch {unset ::fix_param($phase,$i,$coord)} 2029 } 2030 } 2031 } 2032 puts "after operation: $::fix_list($coord,$phase)" 2033 2034 2035 } 2036 2037 #******Main Fixing Program 2038 if {[lindex $expmap(phasetype) [expr {$p - 1}]] != 4} { 2039 grid [TitleFrame $w.10 -bd 6 -relief groove \ 2040 -text "Fix Atom$suffix Coordinates"] \ 2041 -row 9 -column 0 -columnspan 10 -sticky news 2042 set fix [$w.10 getframe] 2043 Fix_Initialize $numberList 2044 2045 label $fix.xlab -text " x " -width 8 2046 label $fix.ylab -text " y " -width 8 2047 label $fix.zlab -text " z " -width 8 2048 grid $fix.xlab -row 2 -column 0 2049 grid $fix.ylab -row 2 -column 1 2050 grid $fix.zlab -row 2 -column 2 2051 2052 2053 button $fix.x -text "$::fix_state_X" -width 8 \ 2054 -command "Fix_Atoms $phase [list $numberList] X $fix.x; 2055 Fix_Write 2056 DisplayAllAtoms $phase" 2057 2058 button $fix.y -text "$::fix_state_Y" -width 8 \ 2059 -command "Fix_Atoms $phase [list $numberList] Y $fix.y 2060 Fix_Write 2061 DisplayAllAtoms $phase" 2062 button $fix.z -text "$::fix_state_Z" -width 8 \ 2063 -command "Fix_Atoms $phase [list $numberList] Z $fix.z 2064 Fix_Write 2065 DisplayAllAtoms $phase" 2066 grid $fix.x -row 3 -column 0 2067 grid $fix.y -row 3 -column 1 2068 grid $fix.z -row 3 -column 2 2069 } 2070 2071 2072 2073 2074 #xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1938 2075 1939 2076 grid rowconfigure $w 11 -minsize 5 … … 1954 2091 if {[llength $expgui(selectedatomlist)] != 0} editRecord 1955 2092 } 2093 2094 1956 2095 1957 2096 # transform the coordinates -
branches/sandbox/distrest.tcl
r1032 r1109 115 115 116 116 label $top.rlabel1 -text "Restraint" -width 9 -anchor center 117 label $top.rlabel2 -text " esd"-width 9 -anchor center117 label $top.rlabel2 -text "Tolerance" -width 9 -anchor center 118 118 119 119 grid $top.alabel1 -column 1 -row 2 -padx 3 … … 338 338 339 339 label $sr_top.rlabel1 -text "Restraint" 340 label $sr_top.rlabel2 -text " esd"340 label $sr_top.rlabel2 -text "Tolerance" 341 341 grid $sr_top.rlabel1 -column 4 -row 2 -padx 20 342 342 grid $sr_top.rlabel2 -column 5 -row 2 -padx 20 -
branches/sandbox/expgui
r1108 r1109 1248 1248 } else { 1249 1249 append refflag " [mmatominfo $phase $atom ${type}damp] " 1250 } 1250 } 1251 1251 } 1252 1252 set line [format \ … … 1263 1263 [mmatominfo $phase $atom z] \ 1264 1264 [mmatominfo $phase $atom frac] \ 1265 [mmatominfo $phase $atom Uiso] 1265 [mmatominfo $phase $atom Uiso] 1266 1266 ] 1267 1267 } elseif {[atominfo $phase $atom temptype] == "A"} { … … 1277 1277 set maxline A 1278 1278 # aniso 1279 set line [format "%3d %-6s %-6s %8s %10.6f%10.6f%10.6f%4d%9.4f" \ 1279 set fmt "%3d %-6s %-6s %8s %s%s%s%4d%9.4f" 1280 set line [format $fmt \ 1280 1281 $atom \ 1281 1282 [atominfo $phase $atom label] \ 1282 1283 [atominfo $phase $atom type] \ 1283 1284 $refflag \ 1284 [ atominfo$phase $atom x] \1285 [ atominfo$phase $atom y] \1286 [ atominfo$phase $atom z] \1285 [ShowFixAtom $phase $atom x] \ 1286 [ShowFixAtom $phase $atom y] \ 1287 [ShowFixAtom $phase $atom z] \ 1287 1288 [atominfo $phase $atom mult] \ 1288 [atominfo $phase $atom frac] 1289 [atominfo $phase $atom frac] 1289 1290 ] 1290 1291 append line [format " %9.5f%9.5f%9.5f%9.5f%9.5f%9.5f" \ … … 1294 1295 [atominfo $phase $atom U12] \ 1295 1296 [atominfo $phase $atom U23] \ 1296 [atominfo $phase $atom U13] 1297 [atominfo $phase $atom U13] 1297 1298 ] 1298 1299 } else { … … 1302 1303 } else { 1303 1304 append refflag " [atominfo $phase $atom ${type}damp] " 1304 } 1305 } 1306 set line [format \ 1307 "%3d %-6s %-6s %8s %10.6f%10.6f%10.6f%4d%9.4f %9.5f" \ 1305 } 1306 } 1307 #set fmt "%3d %-6s %-6s %8s %10.6f%10.6f%10.6f%4d%9.4f %9.5f" 1308 set fmt "%3d %-6s %-6s %8s %s%s%s%4d%9.4f %9.5f" 1309 set line [format $fmt \ 1308 1310 $atom \ 1309 1311 [atominfo $phase $atom label] \ 1310 1312 [atominfo $phase $atom type] \ 1311 1313 $refflag \ 1312 [ atominfo$phase $atom x] \1313 [ atominfo$phase $atom y] \1314 [ atominfo$phase $atom z] \1314 [ShowFixAtom $phase $atom x] \ 1315 [ShowFixAtom $phase $atom y] \ 1316 [ShowFixAtom $phase $atom z] \ 1315 1317 [atominfo $phase $atom mult] \ 1316 1318 [atominfo $phase $atom frac] \ 1317 [atominfo $phase $atom Uiso] 1319 [atominfo $phase $atom Uiso] 1318 1320 ] 1319 1321 } 1320 1322 return $line 1323 } 1324 1325 # format a coordinate from a non-mm phase as 10 chars; mark fixed coordinates differently 1326 proc ShowFixAtom {phase atom var} { 1327 # is this fixed? 1328 set param [string toupper $var] 1329 if {[array name ::fix_param "$phase,$atom,$param"] != ""} { 1330 return [format "%9.5fF" [atominfo $phase $atom $var]] 1331 } else { 1332 return [format "%10.6f" [atominfo $phase $atom $var]] 1333 } 1321 1334 } 1322 1335 -
branches/sandbox/readexp.tcl
r1106 r1109 187 187 } 188 188 } 189 # load the constrained parameters 190 atom_constraint_load 189 191 set expgui(mapstat) 1 190 192 } … … 2162 2164 } 2163 2165 2166 # read fixed constraints 2167 2168 proc atom_constraint_read {phase} { 2169 2170 set fix_list "" 2171 foreach k {1 2 3 4 5 6 7 8 9} { 2172 set key [format "LEQV HOLD%1d%2d" $phase $k] 2173 set line [readexp $key] 2174 foreach j {2 10 18 26 34 42 50 58} { 2175 set fix_param [string range $line $j [expr $j+7]] 2176 if {[string trim $fix_param] == ""} {return $fix_list} 2177 lappend fix_list $fix_param 2178 } 2179 } 2180 } 2181 2182 # load all atom constraints into global array fix_param 2183 proc atom_constraint_load { } { 2184 catch {unset ::fix_param} 2185 foreach i $::expmap(phaselist) { 2186 set temp [atom_constraint_read $i] 2187 foreach j $temp { 2188 set atomnum [string trim [string range $j 2 3]] 2189 set param [string trim [string range $j 4 6]] 2190 set ::fix_param($i,$atomnum,$param) 1 2191 2192 } 2193 } 2194 } 2195 2196 proc atom_constraint_write {phase fix_list} { 2197 2198 foreach key [array names ::exparray "LEQV HOLD$phase*"] { 2199 delexp $key 2200 } 2201 set k 0 2202 set j 1 2203 set line "" 2204 foreach fix $fix_list { 2205 incr k 2206 append line $fix 2207 if {$k == 8} { 2208 set key [format "LEQV HOLD%1d%2d" $phase $j] 2209 makeexprec $key 2210 setexp $key $line 3 [expr ($k * 8) + 2] 2211 set k 0 2212 incr j 2213 set line "" 2214 } 2215 } 2216 if {$line != ""} { 2217 set key [format "LEQV HOLD%1d%2d" $phase $j] 2218 makeexprec $key 2219 setexp $key $line 3 [expr ($k * 8) + 2] 2220 } 2221 2222 } 2223 2224 2225 2164 2226 # get a logical constraint 2165 2227 #
Note: See TracChangeset
for help on using the changeset viewer.