/[escript]/trunk/escript/test/python/SliceGetting.py
ViewVC logotype

Annotation of /trunk/escript/test/python/SliceGetting.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 540 - (hide annotations)
Mon Feb 20 06:05:32 2006 UTC (14 years, 8 months ago) by jgs
File MIME type: text/x-python
File size: 7693 byte(s)
reinstate sliceGetting testing for DataTagged objects

1 jgs 102 """
2    
3     Tests slice getting for Data objects.
4    
5     Version $Id$
6    
7     """
8    
9     import sys
10     import unittest
11     import os
12    
13 jgs 149 from esys.escript import *
14 jgs 153 from esys import bruce
15 jgs 102
16     import numarray
17     from numarray import array,Float64,ones,greater
18    
19 jgs 540 Tag1=1
20     Tag2=2
21 jgs 102
22     tol=1.E-15
23    
24 jgs 540 # a rank 1 test argument
25     a_r1=[ [1,2,3], [-1,-2,-3], [100,200,300] ]
26 jgs 102
27 jgs 540 # a rank 4 test argument
28 jgs 102 a_r4=[ \
29     [ [ [[ 1,2,3],[11,12,13]], [[21,22,23],[31,32,33]], [[41,42,43],[51,52,53]] ], [ [[101,102,103],[111,112,113]], [[121,122,123],[131,132,133]], [[141,142,143],[151,152,153]] ], [ [[201,202,203],[211,212,213]], [[221,222,223],[231,232,233]], [[241,242,243],[251,252,253]] ] ], \
30     [ [ [[ -1,-2,-3],[-11,-12,-13]], [[-21,-22,-23],[-31,-32,-33]], [[-41,-42,-43],[-51,-52,-53]] ], [ [[-101,-102,-103],[-111,-112,-113]], [[-121,-122,-123],[-131,-132,-133]], [[-141,-142,-143],[-151,-152,-153]] ], [ [[-201,-202,-203],[-211,-212,-213]], [[-221,-222,-223],[-231,-232,-233]], [[-241,-242,-243],[-251,-252,-253]] ] ], \
31     [ [[[ 11,12,13],[111,112,113]], [[121,122,123],[131,132,133]], [[141,142,143],[151,152,153]] ], [ [[1101,1102,1103],[1111,1112,1113]], [[1121,1122,1123],[1131,1132,1133]], [[1141,1142,1143],[1151,1152,1153]] ], [ [[1201,1202,1203],[1211,1212,1213]], [[1221,1222,1223],[1231,1232,1233]], [[1241,1242,1243],[1251,1252,1253]] ] ] ]
32    
33 jgs 540 def prepareArg(val,ex,wh):
34     if ex=="Expanded":
35     exx=True
36     else:
37     exx=False
38     out=Data(val[0],what=wh,expand=exx)
39     if ex=="Tagged1":
40     out.setTaggedValue(Tag1,val[1])
41     elif ex=="Tagged2":
42     out.setTaggedValue(Tag1,val[1])
43     out.setTaggedValue(Tag2,val[2])
44     return out
45    
46 jgs 102 def turnToArray(val,tagged):
47 jgs 540 if tagged=="Tagged1":
48     out=[array(val[0],Float64),array(val[1],Float64),array(val[0],Float64)]
49     elif tagged=="Tagged2":
50     out=[array(val[0],Float64),array(val[1],Float64),array(val[2],Float64)]
51     else:
52     out=[array(val[0],Float64),array(val[0],Float64),array(val[0],Float64)]
53     return out
54 jgs 102
55     def checkResult(text,res,val0,val1,val2,wh):
56 jgs 540 ref=Data(val0,what=wh,expand=False)
57     ref.setTaggedValue(Tag1,val1)
58     ref.setTaggedValue(Tag2,val2)
59     norm=Lsup(ref)+tol
60     error=Lsup(ref-res)/norm
61     print "@@ %s, shape %s: error = %e"%(text,ref.getShape(),error)
62     if error>tol:
63     print "**** %s: error is too large"%(text)
64     raise SystemError,"@@ %s at %s: error is too large"%(text,wh)
65     sys.exit(1)
66 jgs 102
67     #
68     # ==============================================================
69     #
70     # test slice getting:
71     #
72    
73 jgs 153 msh=bruce.Rectangle(20,6)
74 jgs 102
75 jgs 540 for wh in [ContinuousFunction(msh), Function(msh)]:
76    
77 jgs 102 print wh
78    
79 jgs 540 for ex1 in ["Constant", "Expanded", "Tagged1", "Tagged2"]:
80 jgs 102
81 jgs 540 print "Slice getting: ", ex1
82 jgs 102
83     # rank 1
84    
85     arg=prepareArg(a_r1,ex1,wh)
86     arrays=turnToArray(a_r1,ex1)
87    
88     checkResult("slicing: rank=1 [:] "+ex1, \
89     arg[:], \
90     arrays[0][:], \
91     arrays[1][:], \
92     arrays[2][:], \
93     wh)
94    
95     checkResult("slicing: rank=1 [1] "+ex1, \
96     arg[1], \
97     arrays[0][1], \
98     arrays[1][1], \
99     arrays[2][1], \
100     wh)
101    
102     checkResult("slicing: rank=1 [1:3] "+ex1, \
103     arg[1:3], \
104     arrays[0][1:3], \
105     arrays[1][1:3], \
106     arrays[2][1:3], \
107     wh)
108    
109     checkResult("slicing: rank=1 [2:] "+ex1, \
110     arg[2:], \
111     arrays[0][2:], \
112     arrays[1][2:], \
113     arrays[2][2:], \
114     wh)
115 jgs 540
116 jgs 102 checkResult("slicing: rank=1 [:1] "+ex1, \
117     arg[:1], \
118     arrays[0][:1], \
119     arrays[1][:1], \
120     arrays[2][:1], \
121     wh)
122    
123     # rank 4
124    
125     arg=prepareArg(a_r4,ex1,wh)
126     arrays=turnToArray(a_r4,ex1)
127    
128     checkResult("slicing: rank=4 [:] "+ex1, \
129     arg[:], \
130     arrays[0][:], \
131     arrays[1][:], \
132     arrays[2][:], \
133     wh)
134    
135     checkResult("slicing: rank=4 [1] "+ex1, \
136     arg[1], \
137     arrays[0][1], \
138     arrays[1][1], \
139     arrays[2][1], \
140     wh)
141    
142     checkResult("slicing: rank=4 [1,1,1,1] "+ex1, \
143     arg[1,1,1,1], \
144     arrays[0][1,1,1,1], \
145     arrays[1][1,1,1,1], \
146     arrays[2][1,1,1,1], \
147     wh)
148    
149     checkResult("slicing: rank=4 [1:3] "+ex1, \
150     arg[1:3], \
151     arrays[0][1:3], \
152     arrays[1][1:3], \
153     arrays[2][1:3], \
154     wh)
155    
156     checkResult("slicing: rank=4 [:2] "+ex1, \
157     arg[:2], \
158     arrays[0][:2], \
159     arrays[1][:2], \
160     arrays[2][:2], \
161     wh)
162    
163     checkResult("slicing: rank=4 [1:] "+ex1, \
164     arg[1:], \
165     arrays[0][1:], \
166     arrays[1][1:], \
167     arrays[2][1:], \
168     wh)
169    
170     checkResult("slicing: rank=4 [:,:] "+ex1, \
171     arg[:,:], \
172     arrays[0][:,:], \
173     arrays[1][:,:], \
174     arrays[2][:,:], \
175     wh)
176    
177     checkResult("slicing: rank=4 [:,1] "+ex1, \
178     arg[:,1], \
179     arrays[0][:,1], \
180     arrays[1][:,1], \
181     arrays[2][:,1], \
182     wh)
183    
184     checkResult("slicing: rank=4 [:,1:3] "+ex1, \
185     arg[:,1:3], \
186     arrays[0][:,1:3], \
187     arrays[1][:,1:3], \
188     arrays[2][:,1:3], \
189     wh)
190    
191     checkResult("slicing: rank=4 [1:2,1:3] "+ex1, \
192     arg[1:2,1:3], \
193     arrays[0][1:2,1:3], \
194     arrays[1][1:2,1:3], \
195     arrays[2][1:2,1:3], \
196     wh)
197    
198     checkResult("slicing: rank=4 [:,1:2,1:2] "+ex1, \
199     arg[:,1:2,1:2], \
200     arrays[0][:,1:2,1:2], \
201     arrays[1][:,1:2,1:2], \
202     arrays[2][:,1:2,1:2], \
203     wh)
204    
205     checkResult("slicing: rank=4 [:,:,1:2,1:3] "+ex1, \
206     arg[:,:,1:2,1:3], \
207     arrays[0][:,:,1:2,1:3], \
208     arrays[1][:,:,1:2,1:3], \
209     arrays[2][:,:,1:2,1:3], \
210     wh)
211    
212     checkResult("slicing: rank=4 [1:2,1:3,1,1] "+ex1, \
213     arg[1:2,1:3,1,1], \
214     arrays[0][1:2,1:3,1,1], \
215     arrays[1][1:2,1:3,1,1], \
216     arrays[2][1:2,1:3,1,1], \
217     wh)
218    
219     checkResult("slicing: rank=4 [1:2,1:3,:,1] "+ex1, \
220     arg[1:2,1:3,:,1], \
221     arrays[0][1:2,1:3,:,1], \
222     arrays[1][1:2,1:3,:,1], \
223     arrays[2][1:2,1:3,:,1], \
224     wh)
225    
226     checkResult("slicing: rank=4 [1:2,1:3,0,:] "+ex1, \
227     arg[1:2,1:3,0,:], \
228     arrays[0][1:2,1:3,0,:], \
229     arrays[1][1:2,1:3,0,:], \
230     arrays[2][1:2,1:3,0,:], \
231     wh)
232    
233     checkResult("slicing: rank=4 [1:2,1:3,0,1] "+ex1, \
234     arg[1:2,1:3,0,1], \
235     arrays[0][1:2,1:3,0,1], \
236     arrays[1][1:2,1:3,0,1], \
237     arrays[2][1:2,1:3,0,1], \
238     wh)
239    
240     checkResult("slicing: rank=4 [1,1,0,1] "+ex1, \
241     arg[1,1,0,1], \
242     arrays[0][1,1,0,1], \
243     arrays[1][1,1,0,1], \
244     arrays[2][1,1,0,1], \
245     wh)
246    
247 jgs 147 sys.exit(0)
248 jgs 102 # end

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26