1 import os
2 import wx
3 import wx.aui
4 import numpy
5
6 from park.parkAui.common.fittingResidual import FittingResidual
7 from park.parkAui.common.auiPanel import AuiPanel
8 from reflectometry.model1d.theoryview.plotResidualPanel import PlotPanelR as \
9 PlotPanelR2
10
11
12 RESIDUAL_X_LABEL = 'x value'
13 RESIDUAL_Y_LABEL = 'Residual'
14 RESIDUAL_TITLE = 'Residual'
15
17 """ Return the filename from the fullfilename. """
18 return os.path.split(fullfilename)[1]
19
20
22 """ The base class for the fitting residual. """
23 - def __init__(self,
24 parent,
25 id=-1,
26 pos=wx.DefaultPosition,
27 size=(400, 300)
28 ):
32
33
35 return self._updateFlag
36
37
39 self._updateFlag = show
40
41
43 """ Update the view when the dataset is changed. """
44 print 'update residual for dataset @ fittingResidual'
45 self.Enable(self.model is not None)
46
47 if self.model is None:
48 self.Clear()
49 return
50 dataset = self.model.getXmlDataset()
51 if dataset is None:
52 self.Clear()
53 return
54
55 self.panel.SetResidualIndex(dataset.getResidualIndex())
56 self.panel.SetExperimentData(
57 self.model.getXmlDataset().getXmlReductionData())
58
59
61 """ Update the view when the model is changed. """
62 print 'update residual for model @ fittingResidual'
63 self.Enable(self.model is not None)
64
65 if self.model is None:
66 self.Clear()
67 return
68
69 self.panel.SetTheoryData(
70 self.model.getXmlTheoryData() )
71
73 """ Update the the residual panel. """
74 self.RefreshModelView()
75
76
78 """ Update the view when the dataset and model are changed. """
79 self.Enable(self.model is not None)
80
81 if self.model is None:
82 self.Clear()
83 return
84
85 dataset = self.model.getXmlDataset()
86 if dataset is None:
87 self.Clear()
88 return
89
90 legends = []
91 for qdata in dataset.getXmlData():
92 legends.append(getFileName(qdata.getSource()))
93
94
95 viewdata = []
96 expData = dataset.getXmlReductionData()
97 if expData == None:
98 return
99
100 if self.model.getXmlTheoryData() is None:
101 theoryData = None
102 else:
103 theoryData = self.model.getXmlTheoryData().getXmlDataArray()
104
105
106 exp0 = expData.getDataArrayList()
107 _lenData = len( exp0 )/4
108 if _lenData == 1:
109 viewdata.append( exp0[0] )
110 viewdata.append( exp0[2] )
111 viewdata.append( exp0[3] )
112
113 if theoryData is None:
114 viewdata.append( numpy.ones( len( exp0[0] ), 'd') )
115 else:
116 if theoryData[0].getData() == None:
117 viewdata.append( numpy.ones( len( exp0[0] ), 'd') )
118 else:
119 viewdata.append( theoryData[0].getData() )
120 else:
121 for x in xrange( _lenData ):
122 viewdata.append( exp0[0+x*4] )
123 viewdata.append( exp0[2+x*4] )
124 viewdata.append( exp0[3+x*4] )
125
126 if theoryData is None:
127 viewdata.append( numpy.zeros( len( exp0[0+x*4] ), 'd') )
128 else:
129 if theoryData[x].getData() == None:
130 viewdata.append( numpy.zeros( len( exp0[0+x*4] ), 'd') )
131 else:
132 viewdata.append( theoryData[x].getData() )
133
134
135 if legends != []:
136 self.panel.SetLegends(legends)
137
138 self.panel.SetData(viewdata)
139
140
141
143 """ Update the view when the dataset and model are changed. """
144 self.Enable(self.model is not None)
145
146 if self.model is None:
147 self.Clear()
148 return
149
150 dataset = self.model.getXmlDataset()
151 if dataset is None:
152 self.Clear()
153 return
154
155 legends = []
156 for qdata in dataset.getXmlData():
157 legends.append(getFileName(qdata.getSource()))
158
159
160 viewdata = []
161 expData = dataset.getXmlReductionData()
162 if expData == None:
163 return
164
165 if self.model.getXmlTheoryData() is None:
166 theoryData = None
167 else:
168 theoryData = self.model.getXmlTheoryData().getXmlDataArray()
169
170
171 exp0 = expData.getDataArrayList()
172 _lenData = len( exp0 )/4
173 if _lenData == 1:
174 viewdata.append( exp0[0] )
175 viewdata.append( exp0[2] )
176 viewdata.append( exp0[3] )
177
178 if theoryData is None:
179 viewdata.append( numpy.ones( len( exp0[0] ), 'd') )
180 else:
181 if theoryData[0].getData() == None:
182 viewdata.append( numpy.ones( len( exp0[0] ), 'd') )
183 else:
184 viewdata.append( theoryData[0].getData() )
185 else:
186 for x in xrange( _lenData ):
187 viewdata.append( exp0[0+x*4] )
188 viewdata.append( exp0[2+x*4] )
189 viewdata.append( exp0[3+x*4] )
190
191 if theoryData is None:
192 viewdata.append( numpy.zeros( len( exp0[0+x*4] ), 'd') )
193 else:
194 if theoryData[x].getData() == None:
195 viewdata.append( numpy.zeros(len( exp0[0+x*4] ), 'd') )
196 else:
197 viewdata.append( theoryData[x].getData() )
198
199
200 if legends != []:
201
202 self.panel.SetLegends(legends)
203
204 self.panel.SetData(viewdata)
205
206
207
215