1 import wx
2 import numpy
3 import traceback
4
5 from reflectometry.model1d.theoryview.plotPanelNCNR import PlotPanelBlackRed as PlotPanelF
6
7
9
10 - def __init__(self,
11 parent,
12 id=-1,
13 pos=wx.DefaultPosition,
14 size=(200, 150)
15 ):
20
21
26
27 if calcR == None: return None
28 if data == None: return None
29 if calcR[0].getData() == None: return
30
31 _lenData = len( data )/4
32 if _lenData == 1:
33
34 try:
35 R = data[2].getData()
36 dR = data[3].getData()
37 except:
38 R = data[2]
39 dR = data[3]
40
41
42 if dR == None or len(dR)==0:
43 dy = R - calcR[0].getData()
44 else:
45 R0 = numpy.ones(len(dR))*1.0e-10
46 dR = numpy.choose( dR<1.0e-10, (dR,R0) )
47 dy = (R - calcR[0].getData())/dR
48
49 if len(R) >=1: return numpy.dot(dy,dy)/len(R)
50 else: return numpy.dot(dy,dy)
51
52 else:
53 try:
54 R = [ data[2 ].getData(), data[6 ].getData(),
55 data[10].getData(), data[14].getData() ]
56 dR = [ data[3 ].getData(), data[7 ].getData(),
57 data[11].getData(), data[15].getData() ]
58 except:
59 R = [data[2], data[6], data[10], data[14]]
60 dR = [data[3], data[7], data[11], data[15]]
61
62 _sum = 0.0
63 for i in xrange(4):
64
65 R0 = numpy.ones(len(dR[i]))*1.0e-10
66 dRi = numpy.choose( dR[i]<1.0e-10, (dR[i],R0) )
67 dy = (R[i] - calcR[i].getData() )/dRi
68 _sum += numpy.sum(dy*dy)
69
70 return _sum/ ( len(R[0]) + len(R[1]) + len(R[2]) + len(R[3]) )
71
72
73
75
76 if model is None:
77 self.Clear()
78 return
79
80 dataset = model.getXmlDataset()
81 if dataset is None or \
82 dataset.getXmlReductionData() is None:
83
84 self.Clear()
85 return
86
87
88 expData = dataset.getXmlData()
89 if (len(expData) <1): return
90
91 if model.getXmlTheoryData() is None:
92 theoryData = None
93 else:
94 theoryData = model.getXmlTheoryData().getXmlDataArray()
95
96 viewdata = []
97 exp0 = expData[0].getXmlReductionData().getDataArrayList()
98 if len(exp0)<1: return
99
100 _lenData = len( exp0 )/4
101 if _lenData == 1:
102 viewdata.append( exp0[0] )
103 viewdata.append( exp0[2] )
104 viewdata.append( exp0[3] )
105
106 _theory = numpy.zeros( len( exp0[0] ), 'd')
107 if theoryData is None:
108 viewdata.append( _theory )
109 else:
110 if theoryData[0].getData() == None:
111 viewdata.append( _theory )
112 else:
113 viewdata.append(theoryData[0].getData() )
114
115 else:
116 for x in xrange( _lenData ):
117 viewdata.append( exp0[0+x*4] )
118 viewdata.append( exp0[2+x*4] )
119 viewdata.append( exp0[3+x*4] )
120
121 _theory = numpy.zeros( len( exp0[0+x*4] ), 'd')
122 if theoryData is None:
123 viewdata.append( _theory )
124 else:
125 if theoryData[x].getData() == None:
126 viewdata.append( _theory )
127 else:
128 _theory = theoryData[x].getData()
129 viewdata.append( _theory )
130
131
132 self.exp0 = exp0
133 try:
134 chisq = model.getXmlTheoryData().chisq
135 except:
136 chisq = self._calcChisq( self.exp0, theoryData )
137
138
139 self.SetChisq( chisq )
140 self.SetData(viewdata)
141
142
143
145
146 if model is None:
147 self.Clear()
148 return
149
150 if self._data == None:
151 return
152
153 if model.getXmlTheoryData() is None:
154 theoryData = None
155 return
156 else:
157 theoryData = model.getXmlTheoryData().getXmlDataArray()
158
159 _theorydata = []
160 _lenData = len(theoryData)
161 if _lenData == 1:
162 _theorydata.append( theoryData[0].getData() )
163
164 else:
165 for x in xrange( _lenData ):
166 _theorydata.append( theoryData[x].getData() )
167
168 if self.exp0!= None:
169 try:
170 chisq = model.getXmlTheoryData().chisq
171 except:
172 chisq = self._calcChisq( self.exp0, theoryData )
173
174 self.SetChisq( chisq )
175
176 self.RefreshTheoryData(_theorydata)
177