source: sasview/sansview/perspectives/fitting/console.py @ 8d82a1a

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 8d82a1a was 8d82a1a, checked in by Jae Cho <jhjcho@…>, 13 years ago

removed updatinf fit string on mac

  • Property mode set to 100644
File size: 4.6 KB
Line 
1
2
3
4from sans.guiframe.events import StatusEvent
5import time
6import wx
7import park
8from park.fitresult import FitHandler
9IS_MAC = True
10if sys.platform.count("win32") > 0:
11    IS_MAC = False
12class ConsoleUpdate(FitHandler):
13    """
14    Print progress to the console.
15    """
16    isbetter = False
17    """Record whether results improved since last update"""
18    progress_delta =  60
19    """Number of seconds between progress updates"""
20    improvement_delta = 5
21    """Number of seconds between improvement updates"""
22    def __init__(self, parent, manager=None,
23                 quiet=False,progress_delta=60,improvement_delta=5):
24        """
25        If quiet is true, only print out final summary, not progress and
26        improvements.
27       
28        :attr parent: the object that handle the messages
29       
30        """
31        self.parent= parent
32        self.manager = manager
33        self.progress_time = time.time()
34        self.progress_percent = 0
35        self.improvement_time = self.progress_time
36        self.isbetter = False
37        self.quiet = quiet
38        self.progress_delta = progress_delta
39        self.improvement_delta = improvement_delta
40        self.elapsed_time = self.progress_time
41       
42    def progress(self, k, n):
43        """
44        Report on progress.
45        """
46        if self.quiet: return
47
48        t = time.time()
49        p = int((100*k)//n)
50       
51        # Show improvements if there are any
52        dt = t - self.improvement_time
53        if self.isbetter and dt > self.improvement_delta:
54            self.result.print_summary()
55            self.isbetter = False
56            self.improvement_time = t
57           
58            wx.PostEvent(self.parent, StatusEvent(status=\
59             "%d%% complete ..."%(p),type="progress"))
60       
61        # Update percent complete
62        dp = p-self.progress_percent
63        if dp < 1: return
64        dt = t - self.progress_time
65        if dt > self.progress_delta:
66            if 1 <= dp <= 2:
67                self.progress_percent = p
68                self.progress_time = t
69                wx.PostEvent(self.parent, StatusEvent(status=\
70                                                      "%d%% complete ..."%(p),
71                                                      type="progress"))
72       
73            elif 2 < dp <= 5:
74                if p//5 != self.progress_percent//5:
75                    wx.PostEvent(self.parent, StatusEvent(status=\
76                        "%d%% complete ..."%(5*(p//5)),type="progress"))
77                    self.progress_percent = p
78                    self.progress_time = t
79            else:
80                if p//10 != self.progress_percent//10:
81                    self.progress_percent = p
82                    self.progress_time = t
83                    wx.PostEvent(self.parent, StatusEvent(status=\
84                   "%d%% complete ..."%(10*(p//10)),type="progress"))
85       
86    def improvement(self):
87        """
88        Called when a result is observed which is better than previous
89        results from the fit.
90        """
91        self.isbetter = True
92   
93    def error(self, msg):
94        """
95        Model had an error; print traceback
96        """
97        if self.isbetter:
98            self.result.print_summary()
99        message = "Fit Abort:"
100        message = str(msg)+ " \n %s"%self.result.__str__()
101        wx.PostEvent(self.parent, StatusEvent(status=message,
102                                   info="error", type="stop"))
103    def finalize(self):
104        """
105        """
106        if self.isbetter:
107            self.result.print_summary()
108
109    def abort(self):
110        """
111        """
112        if self.isbetter:
113            self.result.print_summary()
114           
115       
116    def update_fit(self, msg=""):
117        """
118        """
119        self.elapsed_time = time.time() - self.elapsed_time
120        if IS_MAC:
121            msg = ''
122        else:
123            msg = " Updating fit ...\n result:\n %s \n"%self.result.__str__()
124        wx.PostEvent(self.parent, StatusEvent(status=msg, info="info",
125                                              type="progress"))
126        time.sleep(0.01)
127       
128    def starting_fit(self):
129        """
130        """
131        wx.PostEvent(self.parent, StatusEvent(status="Starting the Fit...",
132                                        info="info",type="progress"))
133       
134    def set_result(self, result):
135        """
136        """
137        self.result = result
138   
139    def get_result(self):
140        """
141        """
142        return self.result
143       
144   
Note: See TracBrowser for help on using the repository browser.