Changeset 1179
- Timestamp:
- Nov 9, 2011 10:33:23 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sandbox/liveplot
r1178 r1179 15 15 set exitstat 0 16 16 set expnam [file root [lindex $argv 0]] 17 if {$expnam == ""} {catch {puts "error -- no experiment name"}; set exitstat 1}17 #if {$expnam == ""} {catch {puts "error -- no experiment name"}; set exitstat 1} 18 18 if $exitstat { 19 19 catch {puts "usage: $argv0 expnam \[hist #\] \[legend\]"} … … 252 252 global expgui modtime expnam 253 253 if [catch { 254 set modtime [file mtime $expnam.EXP]255 254 set loadtime [time { 256 if {$expgui(tcldump) == ""} { 255 set modtime 0 256 if {$::topasfile != ""} { 257 set p "TOPAS import" 258 readdata_topas $box 259 } elseif {$expgui(tcldump) == ""} { 260 set modtime [file mtime $expnam.EXP] 257 261 set p HSTDMP 258 262 readdata_hst $box 259 263 } else { 264 set modtime [file mtime $expnam.EXP] 260 265 set p TCLDUMP 261 266 readdata_tcl $box … … 357 362 calcvec set $calclist 358 363 bckvec set $bcklist 359 diffvec set [obsvec - calcvec]360 foreach vec {obsvec calcvec diffvec} {364 #diffvec set [obsvec - calcvec] 365 foreach vec {obsvec calcvec} { 361 366 # probably not needed with recent versions of BLT: 362 367 global $vec … … 450 455 } 451 456 457 set ::topasfile "" 458 proc get_topas_file {} { 459 set ::topasfile [tk_getOpenFile -title "Select Topas File" -parent . \ 460 -defaultextension .ascii \ 461 -filetypes {{"Topas ascii export" ".ascii"}}] 462 if {$::topasfile == ""} return 463 if {[catch {set input [open $::topasfile r]} errmsg]} { 464 MyMessageBox -parent . -title "Open Error" \ 465 -message "An error occured trying to open file $::topasfile: $errmsg" \ 466 -icon error -type Ignore -default ignore 467 set ::topasfile "" 468 return 469 } 470 close $input 471 } 472 473 proc readdata_topas {box} { 474 global expgui expnam reflns graph 475 global lasthst 476 global hst peakinfo xunits weightlist 477 #set file "liveplot_output.ascii" 478 if {$::topasfile == ""} return 479 if {[catch {set input [open $::topasfile r]} errmsg]} { 480 MyMessageBox -parent . -title "Open Error" \ 481 -message "An error occured trying to open file $::topasfile: $errmsg" \ 482 -icon error -type Ignore -default ignore 483 return 484 } 485 486 $box config -title "(TOPAS import in progress)" 487 update 488 # parse the output of a file 489 set lasthst $hst 490 # initalize arrays 491 set num -1 492 set xlist {} 493 set obslist {} 494 set calclist {} 495 set bcklist {} 496 set xunits {} 497 set weightlist {} 498 global refhkllist refphaselist refpos 499 set refhkllist {} 500 set refphaselist {} 501 set refpos {} 502 # define a list of reflection positions for each phase 503 for {set i 1} {$i < 10} {incr i} { 504 set reflns($i) {} 505 } 506 set i 0 507 while {[gets $input line] >= 0} { 508 incr i 509 if {[string first ":" $line] != -1} continue 510 # run update every 50th line 511 if {$i > 50} {set i 0; update} 512 if {[llength $line] == 5} { 513 scan $line %e%e%e%e%e X d Iobs Icalc Isig 514 if {$Isig > 0} { 515 if {$graph(xunits) == 0} { 516 lappend xlist $X 517 } elseif {$graph(xunits) == 1} { 518 lappend xlist $d 519 } else { 520 lappend xlist [expr {6.283185307179586 / $d}] 521 } 522 lappend obslist $Iobs 523 lappend calclist $Icalc 524 #lappend bcklist 0 525 lappend weightlist [expr {1./($Isig * $Isig)}] 526 } 527 } elseif {[llength $line] == 7} { 528 scan $line %e%e%e%e%e%e%d h k l m d tt ph 529 if {$graph(xunits) == 0} { 530 set x $tt 531 } elseif {$graph(xunits) == 1} { 532 set x $d 533 } else { 534 set x [expr {6.283185307179586 / $d}] 535 } 536 set ph [expr {int($ph)}] 537 lappend reflns($ph) $x 538 lappend refhkllist "$h,$k,$l" 539 lappend refphaselist $ph 540 lappend refpos $x 541 } elseif {[llength $line] == 3} { 542 scan $line %e%e%e x d b 543 lappend bcklist $b 544 } else { 545 puts "unexpected input: $line" 546 } 547 } 548 close $input 549 550 if {$graph(xunits) == 0} { 551 set xunits "2-Theta" 552 } elseif {$graph(xunits) == 1} { 553 set xunits "d" 554 } else { 555 set xunits "Q" 556 } 557 foreach elem [$box element names] { 558 eval $box element config $elem $graph(ElementShowOption) 559 } 560 xvec set $xlist 561 obsvec set $obslist 562 calcvec set $calclist 563 bckvec set $bcklist 564 #diffvec set [obsvec - calcvec] 565 refposvec set $refpos 566 set ::expmap(phaselist) [lsort -unique $refphaselist] 567 RegisterPhases $::expmap(phaselist) 568 if {$expgui(autotick)} { 569 foreach i $::expmap(phaselist) { 570 set peakinfo(flag$i) 1 571 } 572 } 573 #wifdvec length 0 574 # if {$graph(chi2)} { 575 # wifdvec set $WGT 576 # wifdvec set [wifdvec * diffvec] 577 # wifdvec set [wifdvec * diffvec] 578 # # now do a running sum 579 # set sum 0 580 # set sumlist {} 581 # foreach n [wifdvec range 0 end] { 582 # set sum [expr {$sum + $n}] 583 # lappend sumlist $sum 584 # } 585 # wifdvec set $sumlist 586 # wifdvec set [wifdvec / [wifdvec length]] 587 # } elseif {$graph(OmCoS)} { 588 # wifdvec set $WGT 589 # wifdvec expr sqrt(wifdvec) 590 # wifdvec set [wifdvec * diffvec] 591 # } 592 if $graph(backsub) { 593 obsvec set [obsvec - bckvec] 594 calcvec set [calcvec - bckvec] 595 } 596 foreach vec {obsvec calcvec} { 597 # probably not needed with recent versions of BLT: 598 global $vec 599 # sometimes needed for latest version of BLT (2.4z) 600 catch {$vec variable $vec} 601 } 602 ApplyMag 603 plotdata 604 } 605 452 606 proc SetTitle {} { 453 607 set bx .title … … 574 728 global obsvec calcvec diffvec bckvec 575 729 576 if {$graph(yunits) == 2} { 730 if {$graph(yunits) == 0} { 731 diffvec set [obsvec - calcvec] 732 $box element config 1 -label bckgr -line 1 -hide 0 733 $box element config 4 -label diff -line 1 -hide 0 734 } elseif {$graph(yunits) == 1} { 735 diffvec set [obsvec - calcvec] 736 $box element config 1 -label bckgr -line 1 -hide 0 737 $box element config 4 -label diff -line 1 -hide 0 738 } elseif {$graph(yunits) == 2} { 577 739 set yunits {Intensity/sigma(I)} 578 740 wifdvec set $::weightlist … … 2189 2351 } 2190 2352 2353 .a.file.menu add command -label "Import from Topas" \ 2354 -command {get_topas_file; readdata .g} 2355 2191 2356 .a.file.menu add command -label Quit -command "destroy ." 2192 2357 .a.file.menu.export add command -label "as .csv file" \ … … 2398 2563 .g marker create line -coords "$xl -Inf $xl Inf" -name mag[incr i] 2399 2564 .g marker create text -coords "$xl Inf" -name mag[incr i] -text "x$ym" -anchor w 2400 foreach vec {obsvec calcvec bckvec diffvec} {2565 foreach vec {obsvec calcvec bckvec} { 2401 2566 global $vec 2402 2567 $vec expr {$vec * ymult} … … 2747 2912 } 2748 2913 2749 expload $expnam.EXP 2750 mapexp 2751 if {$expgui(autotick)} { 2752 foreach i $::expmap(phaselist) { 2753 set peakinfo(flag$i) 1 2754 } 2755 } 2756 2914 if {$expnam != ""} { 2915 expload $expnam.EXP 2916 mapexp 2917 if {$expgui(autotick)} { 2918 foreach i $::expmap(phaselist) { 2919 set peakinfo(flag$i) 1 2920 } 2921 } 2922 } else { 2923 mapexp 2924 } 2925 2757 2926 # fill the histogram menu 2758 2927 if {[llength $expmap(powderlist)] > 15} { … … 2805 2974 } 2806 2975 2807 foreach num $expmap(phaselist) { 2808 .a.file.menu.tick add checkbutton -label "Phase $num" \ 2976 proc RegisterPhases {phaselist } { 2977 foreach num $phaselist { 2978 .a.file.menu.tick add checkbutton -label "Phase $num" \ 2809 2979 -variable peakinfo(flag$num) \ 2810 2980 -command plotdata 2811 if {$program != "bkgedit"} {2812 2813 }2814 .a.options.menu.tick add command -label "Phase $num opts" \2981 if {$::program != "bkgedit"} { 2982 bind . <Key-$num> ".a.file.menu.tick invoke [.a.file.menu.tick index end]" 2983 } 2984 .a.options.menu.tick add command -label "Phase $num opts" \ 2815 2985 -command "minioptionsbox $num" 2816 } 2986 } 2987 } 2988 RegisterPhases $expmap(phaselist) 2817 2989 2818 2990 # N = load next histogram
Note: See TracChangeset
for help on using the changeset viewer.