1 """
2 Some Auxiliary functions for plotReflPanel
3 """
4
5 import numpy
6 from reflectometry.model1d.model.auxs import isfactory, isvector
7
8
9
11 s0 = cmd
12 cmdLists = s0.strip().split('\n')
13 for i in range( len(cmdLists) ):
14 currStr = cmdLists[i]
15 n = currStr.find('incident')
16 if n != -1:
17 break
18
19 return currStr.split('.')[0].strip()
20
21
22
23
24
25
29 ret = []
30 n = len( p )
31 for i in xrange(n):
32
33 if isfactory( p[i] ):
34
35 ret.append( "BSpline( %s )"%(Lp[i]._val) )
36
37 else:
38
39 ret.append( Lp[i]._val )
40
41 return ret
42
43
44
45
46
47
51 ret = []
52 n = len( p )
53 for i in xrange(n):
54 ret.append( Lp[i]._val )
55
56 return ret
57
58
59
60
61 -def extendQ( q,
62 ndata,
63 nlow,
64 nhigh
65 ):
66
67 qstep = q[1] - q[0]
68 qtemp = numpy.zeros( nlow+nhigh+ndata, 'd')
69 for j in xrange(nlow):
70 qtemp[j] = q[0] - (nlow -j)*qstep
71
72 for j in xrange(ndata):
73 qtemp[j+nlow] = q[j]
74
75 qstep = q[ndata-1] - q[ndata-2]
76
77 for j in xrange(nhigh):
78 qtemp[j+nlow+ndata] = q[ndata-1] + (j+1.0)*qstep
79
80 return qtemp
81
82
83
84
85
86 -def parseStaj(pLists,
87 nT,
88 nM,
89 nB
90 ):
91 _name = []; _depth = []; _rough = []; _rho = []; _mu = []
92
93 for x in xrange( len(pLists) ):
94 if x <= nT:
95 _name.append( 'T%d'%(x) )
96 elif x >nT and x <= nT + nM:
97 _name.append( 'M%d'%(x-nT) )
98 else:
99 _name.append( 'B%d'%(x-nT-nM) )
100
101 _rho.append( pLists[x][0] )
102 _depth.append( [ pLists[x][2]*0.5,
103 pLists[x][2],
104 pLists[x][2]*1.5]
105 )
106 _rough.append( pLists[x][3] )
107 _mu.append( pLists[x][4] )
108
109 return [_name, _depth, _rough, _rho, _mu ]
110
111
112
113
114
115
143
144
145
146
147
148
149 -def _toPyScript(parser, printit, modelname, filename, name,
150 depth, rough, rho, mu,
151 wavelength, background, wavelengthDiv, angularDiv
152 ):
153 txts = "from %s import *\n\n"%(parser)
154 txts += "%s = ReflModel(\"%s\", file=\"%s\", magnetic=False)\n"%(modelname, modelname, filename)
155
156 txts+="%s.incident(\'%s\', rho=%g, mu=%g)\n"%(modelname, name[0],
157 rho[0],mu[0])
158
159 for i in xrange(len(depth)-2):
160 txts+="%s.interface(%s)\n"%(modelname, rough[i])
161 txts+="%s.layer(\'%s\', depth=%s, rho=%s, mu=%s)\n"%(modelname,
162 name[i+1],depth[i+1],rho[i+1],mu[i+1])
163
164 txts+="%s.interface(%g)\n"%(modelname, rough[-1])
165 txts+="%s.substrate(\'%s\', rho=%g, mu=%g)\n"%(modelname, name[-1],rho[-1],mu[-1])
166
167 txts+="%s.addMetadata(wavelength=%g, background=%g,wavelengthdivergence=%g, angulardivergence=%g)\n"%(modelname, wavelength, background, wavelengthDiv, angularDiv)
168
169 txts+="\nfit = ParkFit([%s])\n"%(modelname)
170
171 if printit==1:
172 txts+="print fit.Request()\n"
173
174 return txts
175
176
177
178
179
180
181 -def _toPyScriptM(parser, printit, modelname, filename, name,
182 depth, rough, rho, mu, phi, theta,
183 wavelength, background, wavelengthDiv, angularDiv
184 ):
185 txts = "from %s import *\n\n"%(parser)
186 txts += "%s = ReflModel(\"%s\", file=\"%s\", magnetic=True)\n"%(modelname, modelname, filename)
187
188 txts+="%s.incident(\'%s\', rho=%g, mu=%g)\n"%(modelname, name[0],
189 rho[0],mu[0])
190
191 for i in xrange(len(depth)-2):
192 txts+="%s.interface(%g)\n"%(modelname, rough[i])
193 txts+="%s.layer(\'%s\', depth=%s, rho=%s, mu=%s, phi=%s, theta=%s)\n"%(modelname, name[i+1],depth[i+1],rho[i+1],mu[i+1], phi[i+1], theta[i+1] )
194
195 txts+="%s.interface(%s)\n"%(modelname, rough[-1])
196 txts+="%s.substrate(\'%s\', rho=%g, mu=%g)\n"%(modelname, name[-1],rho[-1],mu[-1])
197 txts+="%s.addMetadata(wavelength=%g, background=%g,wavelengthdivergence=%g, angulardivergence=%g)\n"%(modelname, wavelength, background, wavelengthDiv, angularDiv)
198
199 txts+="\nfit = ParkFit([%s])\n"%(modelname)
200
201 if printit==1:
202 txts+="print fit.Request()\n"
203
204 return txts
205
206
207
208
209
220
221
222
223
224
225
227 return xmlStr.split("Data")[1].strip()[14:].split("Data")[0][0:-2].strip()
228
229
230
231
232
233
235 newcb = []
236 for i in xrange( len(oldcb[0]) ):
237 _tb=[]
238 for j in xrange( len(oldcb) ):
239 _tb.append( oldcb[j][i] )
240 newcb.append(_tb)
241 return newcb
242