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