source: sasview/sansmodels/src/sans/models/test/utest_other_models.py @ ca4c150

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since ca4c150 was 7ef319e, checked in by Gervaise Alina <gervyh@…>, 15 years ago

test model at q=0

  • Property mode set to 100644
File size: 74.2 KB
RevLine 
[9ce41c6]1"""
2    Unit tests for specific models.
3    @since: 08/25/2009
4    @note:  The models are running also with numpy array as input.
5            Some models return limit of the function at critical point .
6            So the user should expect finite value for some critical points.
[7ef319e]7            Only critical q=0 will be tested.
8           
9            Critical points tests that fail. the user is responsible of changing
10            the model tested or document the failure.
11           
[9ce41c6]12            Initial values for models are given as the one of Igo software.
13    @author: Gervaise Alina / UTK
[7ef319e]14    @summary: Run by G. Alina 10/21/2009
15            Most of the lamellar tests are not passing. Check lamellar im
16            plementation.
17            critial points tested not passing for:
18            - Flexible Cylinder
19            - PeakLorenzt
20            - Squarewell Structure
21            - StickyHstructure
22            - hardSphereStructure
23           
24           
[9ce41c6]25"""
26
27import unittest
28import numpy 
29import math
30
31class TestCoreShell(unittest.TestCase):
32    """ Unit tests for coreshell model """
33   
34    def setUp(self):
35        from sans.models.CoreShellModel import CoreShellModel
36        self.comp = CoreShellModel()
37        #Give initial value to model
38        self.comp.setParam("scale", 1.0)
39        self.comp.setParam("radius", 60.0)
40        self.comp.setParam("thickness", 10.0)
41        self.comp.setParam("core_sld", 1.0e-6)
42        self.comp.setParam("shell_sld",2.0e-6)
43        self.comp.setParam("solvent_sld",3.0e-6)
44        self.comp.setParam("Background", 0.001)
45   
46        self.x = numpy.array([0.4, 1.3])
47        self.y = numpy.array([0.5, 1.57])
48        self.x_array = self.comp.evalDistribution(self.x)
49        self.y_array = self.comp.evalDistribution(self.y)
50        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
51        qy_prime = numpy.reshape(self.y, [len(self.y),1])
52        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
53       
54    def test1D(self):
55        """ Test 1D model for a coreshell """
56        self.assertAlmostEquals(self.comp.run(0.4),0.00169, 4)
57       
58    def test1D_2(self):
59        """ Test 2D model for a coreshell """
60        self.assertAlmostEquals(self.comp.run([0.4, 1.3]),0.00169, 4)
61       
62    def testEval_1D(self):
63        """ Test 1D model for a coreshell  with evalDistribution"""
64        self.assertEquals(self.comp.run(0.4),self.x_array[0])
65        self.assertEquals(self.comp.run(1.3),self.x_array[1])
66       
67    def testEval_2D(self):
68        """ Test 2D model for a coreshell  with evalDistribution"""
69        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
70        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
71        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
72        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
73       
[7ef319e]74    def testCriticalPoint(self):
75        """ Test coreshell at the critical point"""
76        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]77 
78class TestMultiShellModel(unittest.TestCase):
79    """ Unit tests for MultiShell Model """
80   
81    def setUp(self):
82        from sans.models.MultiShellModel import MultiShellModel
83        self.comp = MultiShellModel()
84        #Give initial value to model
85        self.comp.setParam("scale", 1.0)
86        self.comp.setParam("core_radius", 60.0)
87        self.comp.setParam("s_thickness", 10.0)
88        self.comp.setParam("w_thickness",10.0 )
89        self.comp.setParam("core_sld",6.4e-6)
90        self.comp.setParam("shell_sld",4e-7)
91        self.comp.setParam("n_pairs", 2)
92        self.comp.setParam("Background", 0.001)
93       
94        self.x = numpy.array([0.4, 1.3])
95        self.y = numpy.array([0.5, 1.57])
96        self.x_array = self.comp.evalDistribution(self.x)
97        self.y_array = self.comp.evalDistribution(self.y)
98        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
99        qy_prime = numpy.reshape(self.y, [len(self.y),1])
100        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
101       
102    def test1D(self):
103        """ Test 1D model for a MultiShell Model """
104        self.assertAlmostEquals(self.comp.run(0.001), 2442.81, 2)
105       
106    def test1D_2(self):
107        """ Test 2D model for a MultiShell Model"""
108        self.assertAlmostEquals(self.comp.run([0.001, 0.30903]), 2442.81, 2)
109     
110    def testEval_1D(self):
111        """ Test 1D model for a MultiShell  with evalDistribution"""
112        self.assertEquals(self.comp.run(0.4),self.x_array[0])
113        self.assertEquals(self.comp.run(1.3),self.x_array[1])
114       
115    def testEval_2D(self):
116        """ Test 2D model for a MultiShell  with evalDistribution"""
117        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
118        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
119        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
120        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
121   
[7ef319e]122    def testCriticalPoint(self):
123        """ Test multishell at the critical point"""
124        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]125   
126class TestVesicleModel(unittest.TestCase):
127    """ Unit tests for Vesicle Model """
128   
129    def setUp(self):
130        from sans.models.VesicleModel import VesicleModel
131        self.comp = VesicleModel()
132        #Give initial value to model
133        self.comp.setParam("scale", 1.0)
134        self.comp.setParam("radius", 100.0)
135        self.comp.setParam("core_sld", 6.36e-6)
136        self.comp.setParam("shell_sld",5e-7)
137        self.comp.setParam("thickness",30.0 )
138        self.comp.setParam("Background", 0.001)
139       
140        self.x = numpy.array([0.4, 1.3])
141        self.y = numpy.array([0.5, 1.57])
142        self.x_array = self.comp.evalDistribution(self.x)
143        self.y_array = self.comp.evalDistribution(self.y)
144        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
145        qy_prime = numpy.reshape(self.y, [len(self.y),1])
146        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
147       
148    def test1D(self):
149        """ Test 1D model for a Vesicle Model """
150        self.assertAlmostEquals(self.comp.run(0.001), 1.71399e4,1)
151       
152    def test1D_2(self):
153        """ Test 2D model for a Vesicle Model"""
154        self.assertAlmostEquals(self.comp.run([0.001, 1.3]), 1.71399e4,1)
155       
156    def testEval_1D(self):
157        """ Test 1D model for a Vesicle with evalDistribution"""
158        self.assertEquals(self.comp.run(0.4),self.x_array[0])
159        self.assertEquals(self.comp.run(1.3),self.x_array[1])
160       
161    def testEval_2D(self):
162        """ Test 2D model for a Vesicle with evalDistribution"""
163        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
164        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
165        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
166        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
167   
[7ef319e]168    def testCriticalPoint(self):
169        """ Test vesicle at the critical point"""
170        self.assert_(numpy.isfinite(self.comp.run(0.0))) 
171       
172       
[9ce41c6]173class TestBinaryHSModel(unittest.TestCase):
174    """ Unit tests for BinaryHS Model"""
175   
176    def setUp(self):
177        from sans.models.BinaryHSModel import BinaryHSModel
178        self.comp = BinaryHSModel()
179        #Give initial value to model
180        self.comp.setParam("l_radius", 100.0)
181        self.comp.setParam("ls_sld", 3.5e-6)
182        self.comp.setParam("s_radius",25)
183        self.comp.setParam("solvent_sld",6.36e-6 )
184        self.comp.setParam("ss_sld", 5e-7)
185        self.comp.setParam("vol_frac_ss", 0.1)
186        self.comp.setParam("vol_frac_ls", 0.2)
187        self.comp.setParam("Background", 0.001)
188       
189        self.x = numpy.array([0.4, 1.3])
190        self.y = numpy.array([0.5, 1.57])
191        self.x_array = self.comp.evalDistribution(self.x)
192        self.y_array = self.comp.evalDistribution(self.y)
193        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
194        qy_prime = numpy.reshape(self.y, [len(self.y),1])
195        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
196       
197    def test1D(self):
198        """ Test 1D model for a BinaryHS Model"""
199        self.assertAlmostEquals(self.comp.run(0.001),60.6785, 4)
200       
201    def test1D_2(self):
202        """ Test 2D model for a BinaryHS Model"""
203        self.assertAlmostEquals(self.comp.run([0.001, 1.3]),60.6785, 4)
204     
205    def testEval_1D(self):
206        """ Test 1D model for a BinaryHS with evalDistribution"""
207        self.assertEquals(self.comp.run(0.4),self.x_array[0])
208        self.assertEquals(self.comp.run(1.3),self.x_array[1])
209       
210    def testEval_2D(self):
211        """ Test 2D model for a BinaryHS with evalDistribution"""
212        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
213        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
214        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
215        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]216       
217    def testCriticalPoint(self):
218        """ Test BinaryHS at the critical point"""
219        self.assert_(numpy.isfinite(self.comp.run(0.0)))
220       
[9ce41c6]221     
222class TestCoreShellCylinderModel(unittest.TestCase):
223    """ Unit tests for CoreShellCylinder Model"""
224   
225    def setUp(self):
226        from sans.models.CoreShellCylinderModel import CoreShellCylinderModel
227        self.comp = CoreShellCylinderModel()
228        #Give initial value to model
229        self.comp.setParam("scale", 1.0)
230        self.comp.setParam("core_sld", 1e-6)
231        self.comp.setParam("length", 400)
232        self.comp.setParam("radius",20)
233        self.comp.setParam("solvent_sld",1e-6 )
234        self.comp.setParam("shell_sld", 4e-6)
235        self.comp.setParam("thickness", 10.0)
236        self.comp.setParam("Background", 0.01)
237       
238        self.x = numpy.array([0.4, 1.3])
239        self.y = numpy.array([0.5, 1.57])
240        self.x_array = self.comp.evalDistribution(self.x)
241        self.y_array = self.comp.evalDistribution(self.y)
242       
243        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
244        qy_prime = numpy.reshape(self.y, [len(self.y),1])
245        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
246       
247        self.q = 0.001
248        self.phi= math.pi/2
249        self.qx= self.q*math.cos(self.phi)
250        self.qy= self.q*math.sin(self.phi)
251       
252    def test1D(self):
253        """ Test 1D model for a CoreShellCylinder Model"""
254        self.assertAlmostEqual(self.comp.run(0.001), 353.56,1)
255       
256    def test1D_2(self):
257        """ Test 2D model for a CoreShellCylinder Model"""
258        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
259                              self.comp.runXY([self.qx, self.qy]),1)
260       
261    def testEval_1D(self):
262        """ Test 1D model for a CoreShellCylinder with evalDistribution"""
263        self.assertEquals(self.comp.run(0.4),self.x_array[0])
264        self.assertEquals(self.comp.run(1.3),self.x_array[1])
265       
266    def testEval_2D(self):
267        """ Test 2D model for a CoreShellCylinder with evalDistribution"""
268        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
269        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
270        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
271        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
272 
[7ef319e]273    def testCriticalPoint(self):
274        """ Test CoreShellCylinder at the critical point"""
275        self.assert_(numpy.isfinite(self.comp.run(0.0)))
276 
[9ce41c6]277 
278class TestHollowCylinderModel(unittest.TestCase):
279    """ Unit tests for HollowCylinder Model"""
280   
281    def setUp(self):
282        from sans.models.HollowCylinderModel import HollowCylinderModel
283        self.comp = HollowCylinderModel()
284        #Give initial value to model
285        self.comp.setParam("scale", 1.0)
286        self.comp.setParam("core_radius",20.0)
287        self.comp.setParam("radius",30)
288        self.comp.setParam("length", 400)
289        self.comp.setParam("contrast",5.3e-6 )
290        self.comp.setParam("Background", 0.01)
291       
292        self.x = numpy.array([0.4, 1.3])
293        self.y = numpy.array([0.5, 1.57])
294        self.x_array = self.comp.evalDistribution(self.x)
295        self.y_array = self.comp.evalDistribution(self.y)
296        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
297        qy_prime = numpy.reshape(self.y, [len(self.y),1])
298        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
299       
300        self.q = 0.001
301        self.phi= math.pi/2
302        self.qx= self.q*math.cos(self.phi)
303        self.qy= self.q*math.sin(self.phi)
304       
305    def test1D(self):
306        """ Test 1D model for a HollowCylinder Model"""
307        self.assertAlmostEqual(self.comp.run(0.001), 1756.76, 1)
308       
309    def test1D_2(self):
310        """ Test 2D model for a HollowCylinder Model"""
311        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
312                              self.comp.runXY([self.qx, self.qy]),1) 
313 
314    def testEval_1D(self):
315        """ Test 1D model for a HollowCylinder with evalDistribution"""
316        self.assertEquals(self.comp.run(0.4),self.x_array[0])
317        self.assertEquals(self.comp.run(1.3),self.x_array[1])
318       
319    def testEval_2D(self):
320        """ Test 2D model for a HollowCylinder with evalDistribution"""
321        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
322        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
323        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
324        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
325       
[7ef319e]326    def testCriticalPoint(self):
327        """ Test HollowCylinder at the critical point"""
328        self.assert_(numpy.isfinite(self.comp.run(0.0)))
329       
[9ce41c6]330       
331class TestFlexibleCylinderModel(unittest.TestCase):
332    """ Unit tests for FlexibleCylinder Model"""
333   
334    def setUp(self):
335        from sans.models.FlexibleCylinderModel import FlexibleCylinderModel
336        self.comp = FlexibleCylinderModel()
337        #Give initial value to model
338        self.comp.setParam("scale", 1.0)
339        self.comp.setParam("contrast",5.3e-6 )
340        self.comp.setParam("kuhn_length",100)
341        self.comp.setParam("length", 1000)
342        self.comp.setParam("radius",20)
343        self.comp.setParam("Background", 0.0001)
344       
345        self.x = numpy.array([0.4, 1.3])
346        self.y = numpy.array([0.5, 1.57])
347        self.x_array = self.comp.evalDistribution(self.x)
348        self.y_array = self.comp.evalDistribution(self.y)
349       
350        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
351        qy_prime = numpy.reshape(self.y, [len(self.y),1])
352        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
353       
354        self.q = 0.001
355        self.phi= math.pi/2
356        self.qx= self.q*math.cos(self.phi)
357        self.qy= self.q*math.sin(self.phi)
358       
359    def test1D(self):
360        """ Test 1D model for a FlexibleCylinder Model"""
361        self.assertAlmostEqual(self.comp.run(0.001), 3509.22, 1)
362       
363    def test1D_2(self):
364        """ Test 2D model for a FlexibleCylinder Model"""
365        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
366                              self.comp.runXY([self.qx, self.qy]),1) 
367    def testEval_1D(self):
368        """ Test 1D model for a FlexibleCylinder Model with evalDistribution"""
369        self.assertEquals(self.comp.run(0.4),self.x_array[0])
370        self.assertEquals(self.comp.run(1.3),self.x_array[1])
371       
372    def testEval_2D(self):
373        """ Test 2D model for a FlexibleCylinder Model with evalDistribution"""
374        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
375        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
376        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
377        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
378   
[7ef319e]379    def testCriticalPoint(self):
380        """ Test FlexibleCylinder at the critical point"""
381        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]382 
383             
384class TestStackedDisksModel(unittest.TestCase):
385    """ Unit tests for StackedDisks Model"""
386   
387    def setUp(self):
388        from sans.models.StackedDisksModel import StackedDisksModel
389        self.comp = StackedDisksModel()
390        #Give initial value to model
391        self.comp.setParam("scale", 0.01 )
392        self.comp.setParam("radius",3000.0 )
393        self.comp.setParam("core_thick", 10.0)
394        self.comp.setParam("layer_thick",15.0 )
395        self.comp.setParam("core_sld",4e-006 )
396        self.comp.setParam("layer_sld",-4e-007 )
397        self.comp.setParam("solvent_sld", 5e-006 )
398        self.comp.setParam("n_stacking",1.0 )
399        self.comp.setParam("sigma_d", 0.0)
400        self.comp.setParam("background",0.001)
401        self.comp.setParam("axis_theta", 0.0 )
402        self.comp.setParam("axis_phi",0.0)
403       
404        self.x = numpy.array([0.4, 1.3])
405        self.y = numpy.array([0.5, 1.57])
406        self.x_array = self.comp.evalDistribution(self.x)
407        self.y_array = self.comp.evalDistribution(self.y)
408       
409        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
410        qy_prime = numpy.reshape(self.y, [len(self.y),1])
411        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
412       
413        self.q = 0.001
414        self.phi= math.pi/2
415        self.qx= self.q*math.cos(self.phi)
416        self.qy= self.q*math.sin(self.phi)
417       
418    def test1D(self):
419        """ Test 1D model for a StackedDisks Model"""
420        self.assertAlmostEqual(self.comp.run(0.001), 5075.12, 1)
421       
422    def test1D_2(self):
423        """ Test 2D model for a StackedDisks Model"""
424        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
425                              self.comp.runXY([self.qx, self.qy]),1)
426       
427    def testEval_1D(self):
428        """ Test 1D model for a StackedDisks Model with evalDistribution"""
429        self.assertEquals(self.comp.run(0.4),self.x_array[0])
430        self.assertEquals(self.comp.run(1.3),self.x_array[1])
431       
432    def testEval_2D(self):
433        """ Test 2D model for a StackedDisks Model with evalDistribution"""
434        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
435        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
436        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
437        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]438   
439    def testCriticalPoint(self):
440        """ Test StackedDisks at the critical point"""
441        self.assert_(numpy.isfinite(self.comp.run(0.0))) 
442   
[9ce41c6]443 
444class TestParallelepipedModel(unittest.TestCase):
445    """ Unit tests for Parallelepiped Model"""
446   
447    def setUp(self):
448        from sans.models.ParallelepipedModel import ParallelepipedModel
449        self.comp = ParallelepipedModel()
450        #Give initial value to model
451        self.comp.setParam("background", 0.0 )
452        self.comp.setParam("short_a",35)
453        self.comp.setParam("short_b", 75)
454        self.comp.setParam("long_c",400 )
455        self.comp.setParam("contrast", 5.3e-006 )
456        self.comp.setParam("scale",1.0 )
457       
458        self.x = numpy.array([0.4, 1.3])
459        self.y = numpy.array([0.5, 1.57])
460        self.x_array = self.comp.evalDistribution(self.x)
461        self.y_array = self.comp.evalDistribution(self.y)
462       
463        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
464        qy_prime = numpy.reshape(self.y, [len(self.y),1])
465        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
466       
467        self.q = 0.001
468        self.phi= math.pi/2
469        self.qx= self.q*math.cos(self.phi)
470        self.qy= self.q*math.sin(self.phi)
471       
472   
473    def test1D(self):
474        """ Test 1D model for a Parallelepiped Model"""
475        self.assertAlmostEqual(self.comp.run(0.001), 2935.82, 2)
476       
477    def test1D_2(self):
478        """ Test 2D model for a Parallelepiped Model"""
479        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
480                              self.comp.runXY([self.qx, self.qy]),1)
481       
482    def testEval_1D(self):
483        """ Test 1D model for a Parallelepiped Model with evalDistribution"""
484        self.assertEquals(self.comp.run(0.4),self.x_array[0])
485        self.assertEquals(self.comp.run(1.3),self.x_array[1])
486       
487    def testEval_2D(self):
488        """ Test 2D model for a Parallelepiped Model with evalDistribution"""
489        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
490        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
491        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
492        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
493   
[7ef319e]494    def testCriticalPoint(self):
495        """ Test Parallelepiped at the critical point"""
496        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]497 
498class TestEllipticalCylinderModel(unittest.TestCase):
499    """ Unit tests for EllipticalCylinder Model"""
500   
501    def setUp(self):
502        from sans.models.EllipticalCylinderModel import EllipticalCylinderModel
503        self.comp = EllipticalCylinderModel()
504        self.comp.setParam("scale",1.0) 
505        self.comp.setParam("r_minor",20.0)
506        self.comp.setParam("r_ratio",1.5) 
507        self.comp.setParam("length",400.0)
508        self.comp.setParam("contrast",5.3e-006)
509        self.comp.setParam("background",0.0)
510        self.comp.setParam("cyl_theta",0.0)
511        self.comp.setParam("cyl_phi",0.0)
512        self.comp.setParam("cyl_psi",0.0)
513       
514        self.x = numpy.array([0.4, 1.3])
515        self.y = numpy.array([0.5, 1.57])
516        self.x_array = self.comp.evalDistribution(self.x)
517        self.y_array = self.comp.evalDistribution(self.y)
518       
519        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
520        qy_prime = numpy.reshape(self.y, [len(self.y),1])
521        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
522       
523        self.q = 0.001
524        self.phi= math.pi/2
525        self.qx= self.q*math.cos(self.phi)
526        self.qy= self.q*math.sin(self.phi)
527       
528    def test1D(self):
529        """ Test 1D model for a EllipticalCylinder Model"""
530        self.assertAlmostEqual(self.comp.run(0.001),2108.32, 1)
531       
532    def test1D_2(self):
533        """ Test 2D model for a EllipticalCylinder Model"""
534        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
535                              self.comp.runXY([self.qx, self.qy]),1)
536       
537    def testEval_1D(self):
538        """ Test 1D model for a EllipticalCylinder with evalDistribution"""
539        self.assertEquals(self.comp.run(0.4),self.x_array[0])
540        self.assertEquals(self.comp.run(1.3),self.x_array[1])
541       
542    def testEval_2D(self):
543        """ Test 2D model for a EllipticalCylinder with evalDistribution"""
544        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
545        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
546        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
547        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]548   
549    def testCriticalPoint(self):
550        """ Test EllipticalCylinder at the critical point"""
551        self.assert_(numpy.isfinite(self.comp.run(0.0))) 
[9ce41c6]552 
553       
554class TestEllipsoidModel(unittest.TestCase):
555    """ Unit tests for Ellipsoid Model"""
556   
557    def setUp(self):
558        from sans.models.EllipsoidModel import EllipsoidModel
559        self.comp = EllipsoidModel()
560        self.comp.setParam("scale",1.0) 
561        self.comp.setParam("radius_a",20.0)
562        self.comp.setParam("radius_b",400.0)
563        self.comp.setParam("contrast",3e-006)
564        self.comp.setParam("background",0.0)
565        self.comp.setParam("axis_theta",1.57)
566        self.comp.setParam("axis_phi",0.0)
567       
568        self.x = numpy.array([0.4, 1.3])
569        self.y = numpy.array([0.5, 1.57])
570        self.x_array = self.comp.evalDistribution(self.x)
571        self.y_array = self.comp.evalDistribution(self.y)
572       
573        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
574        qy_prime = numpy.reshape(self.y, [len(self.y),1])
575        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
576       
577        self.q = 0.001
578        self.phi= math.pi/2
579        self.qx= self.q*math.cos(self.phi)
580        self.qy= self.q*math.sin(self.phi)
581       
582    def test1D(self):
583        """ Test 1D model for a Ellipsoid Model"""
584        self.assertAlmostEqual(self.comp.run(1.0), 0.000733968, 4)
585       
586    def test1D_2(self):
587        """ Test 2D model for a Ellipsoid Model"""
588        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
589                              self.comp.runXY([self.qx, self.qy]),1)
590    def testEval_1D(self):
591        """ Test 1D model for a Ellipsoid Model with evalDistribution"""
592        self.assertEquals(self.comp.run(0.4),self.x_array[0])
593        self.assertEquals(self.comp.run(1.3),self.x_array[1])
594       
595    def testEval_2D(self):
596        """ Test 2D model for a Ellipsoid Model with evalDistribution"""
597        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
598        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
599        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
600        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]601   
602    def testCriticalPoint(self):
603        """ Test Ellipsoid at the critical point"""
604        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]605       
606class TestCoreShellEllipsoidModel(unittest.TestCase):
607    """ Unit tests for CoreShellEllipsoid Model"""
608   
609    def setUp(self):
610        from sans.models.CoreShellEllipsoidModel import CoreShellEllipsoidModel
611        self.comp = CoreShellEllipsoidModel()
612        #Give initial value to model
613        self.comp.setParam("scale", 1.0)
614        self.comp.setParam("equat_core", 200.0)
615        self.comp.setParam("polar_core", 20.0)
616        self.comp.setParam("equat_shell",250.0)
617        self.comp.setParam("polar_shell", 30.0)
618        self.comp.setParam("contrast",1e-006)
619        self.comp.setParam("sld_solvent",6.3e-006)
620        self.comp.setParam("background",0.001)
621        self.comp.setParam("axis_theta", 0.0)
622        self.comp.setParam("axis_phi",0.0)
623         
624        self.x = numpy.array([0.4, 1.3])
625        self.y = numpy.array([0.5, 1.57])
626        self.x_array = self.comp.evalDistribution(self.x)
627        self.y_array = self.comp.evalDistribution(self.y)
628       
629        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
630        qy_prime = numpy.reshape(self.y, [len(self.y),1])
631        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
632       
633        self.q = 0.001
634        self.phi= math.pi/2
635        self.qx= self.q*math.cos(self.phi)
636        self.qy= self.q*math.sin(self.phi)
637       
638    def test1D(self):
639        """ Test 1D model for a CoreShellEllipsoid Model"""
640        self.assertAlmostEqual(self.comp.run(1.0), 0.002578943, 4)
641       
642    def test1D_2(self):
643        """ Test 2D model for a CoreShellEllipsoid Model"""
644        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
645                              self.comp.runXY([self.qx, self.qy]),1)
646       
647    def testEval_1D(self):
648        """ Test 1D model for a CoreShellEllipsoid with evalDistribution"""
649        self.assertEquals(self.comp.run(0.4),self.x_array[0])
650        self.assertEquals(self.comp.run(1.3),self.x_array[1])
651       
652    def testEval_2D(self):
653        """ Test 2D model for a CoreShellEllipsoid with evalDistribution"""
654        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
655        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
656        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
657        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]658   
659    def testCriticalPoint(self):
660        """ Test CoreShellEllipsoid at the critical point"""
661        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]662   
663class TestTriaxialEllipsoidModel(unittest.TestCase):
664    """ Unit tests for TriaxialEllipsoid Model"""
665   
666    def setUp(self):
667        from sans.models.TriaxialEllipsoidModel import TriaxialEllipsoidModel
668        self.comp = TriaxialEllipsoidModel()
669        self.comp.setParam("scale",1.0)
670        self.comp.setParam("semi_axisA",35.0)
671        self.comp.setParam("semi_axisB", 100.0)
672        self.comp.setParam("semi_axisC",400.0 )
673        self.comp.setParam("contrast",5.3e-6)
674        self.comp.setParam("background",0.0)
675        self.comp.setParam("axis_theta", 1.0)
676        self.comp.setParam("axis_phi",0.0 )
677        self.comp.setParam("axis_psi",0.0 )
678       
679        self.x = numpy.array([0.4, 1.3])
680        self.y = numpy.array([0.5, 1.57])
681       
682        self.x_array = self.comp.evalDistribution(self.x)
683        self.y_array = self.comp.evalDistribution(self.y)
684        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
685        qy_prime = numpy.reshape(self.y, [len(self.y),1])
686        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
687       
688        self.q = 0.001
689        self.phi= math.pi/2
690        self.qx= self.q*math.cos(self.phi)
691        self.qy= self.q*math.sin(self.phi)
692       
693       
694    def test1D(self):
695        """ Test 1D model for a TriaxialEllipsoid Model"""
696        self.assertAlmostEquals(self.comp.run(0.001),16285.6, 1)
697       
698    def test1D_2(self):
699        """ Test 2D model for a TriaxialEllipsoid Model"""
700        self.assertAlmostEqual(self.comp.run([self.q, self.phi]), 
701                              self.comp.runXY([self.qx, self.qy]),1)
702     
703    def testEval_1D(self):
704        """ Test 1D model for a TriaxialEllipsoid Model with evalDistribution"""
705        self.assertEquals(self.comp.run(0.4),self.x_array[0])
706        self.assertEquals(self.comp.run(1.3),self.x_array[1])
707       
708    def testEval_2D(self):
709        """ Test 2D model for a TriaxialEllipsoid Model with evalDistribution"""
710        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
711        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
712        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
713        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]714   
715    def testCriticalPoint(self):
716        """ Test TriaxialEllipsoid at the critical point"""
717        self.assert_(numpy.isfinite(self.comp.run(0.0)))           
[9ce41c6]718   
719class TestLamellarModel(unittest.TestCase):
720    """ Unit tests for Lamellar Model"""
721   
722    def setUp(self):
723        from sans.models.LamellarModel import LamellarModel
724        self.comp = LamellarModel()
725        self.comp.setParam("scale",1.0) 
726        self.comp.setParam("bi_thick",50.0)
727        self.comp.setParam("sld_bi",1e-006)
728        self.comp.setParam("sld_sol",6.3e-006)
729        self.comp.setParam("background",0.0)
730
731        self.x = numpy.array([0.4, 1.3])
732        self.y = numpy.array([0.5, 1.57])
733       
734        self.x_array = self.comp.evalDistribution(self.x)
735        self.y_array = self.comp.evalDistribution(self.y)
736        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
737        qy_prime = numpy.reshape(self.y, [len(self.y),1])
738        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
739       
740    def test1D(self):
741        """ Test 1D model for a Lamellar Model"""
742        self.assertAlmostEquals(self.comp.run(0.001), 902120)
743       
744    def test1D_2(self):
745        """ Test 2D model for a Lamellar Model"""
746        self.assertAlmostEquals(self.comp.run([0.001, 1.3]),902120)     
747   
748    def testEval_1D(self):
749        """ Test 1D model for a Lamellar Model with evalDistribution"""
750        self.assertEquals(self.comp.run(0.4),self.x_array[0])
751        self.assertEquals(self.comp.run(1.3),self.x_array[1])
752       
753    def testEval_2D(self):
754        """ Test 2D model for a Lamellar Model with evalDistribution"""
755        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
756        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
757        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
758        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)       
759   
[7ef319e]760    def testCriticalPoint(self):
761        """ Test Lamellar at the critical point"""
762        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]763     
764class TestLamellarFFHGModel(unittest.TestCase):
765    """ Unit tests for LamellarFFHG Model"""
766   
767    def setUp(self):
768        from sans.models.LamellarFFHGModel import LamellarFFHGModel
769        self.comp = LamellarFFHGModel()
770        self.comp.setParam("scale",1.0) 
771        self.comp.setParam("t_length",15.0)
772        self.comp.setParam("h_thickness",10.0)
773        self.comp.setParam("sld_tail",4e-007)
774        self.comp.setParam("sld_head",3e-006)
775        self.comp.setParam("sld_solvent",6e-006)
776        self.comp.setParam("background",0.0)
777       
778        self.x = numpy.array([0.4, 1.3])
779        self.y = numpy.array([0.5, 1.57])
780       
781        self.x_array = self.comp.evalDistribution(self.x)
782        self.y_array = self.comp.evalDistribution(self.y)
783        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
784        qy_prime = numpy.reshape(self.y, [len(self.y),1])
785        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
786       
787       
788    def test1D(self):
789        """ Test 1D model for a LamellarFFHG Model"""
790        self.assertAlmostEquals(self.comp.run(0.001),653144)
791       
792    def test1D_2(self):
793        """ Test 2D model for a LamellarFFHG Model"""
794        self.assertAlmostEquals(self.comp.run([0.001, 1.3]),653144)
795   
796    def testEval_1D(self):
797        """ Test 1D model for a LamellarFFHG Model with evalDistribution"""
798        self.assertEquals(self.comp.run(0.4),self.x_array[0])
799        self.assertEquals(self.comp.run(1.3),self.x_array[1])
800       
801    def testEval_2D(self):
802        """ Test 2D model for a LamellarFFHG Model with evalDistribution"""
803        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
804        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
805        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
806        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)       
[7ef319e]807   
808    def testCriticalPoint(self):
809        """ Test LamellarFFHG at the critical point"""
810        self.assert_(numpy.isfinite(self.comp.run(0.0)))             
[9ce41c6]811   
812class TestLamellarPSModel(unittest.TestCase):
813    """ Unit tests for LamellarPS Model"""
814   
815    def setUp(self):
816        from sans.models.LamellarPSModel import LamellarPSModel
817        self.comp = LamellarPSModel()
818        self.comp.setParam("scale",1.0) 
819        self.comp.setParam("spacing",400.0)
820        self.comp.setParam("delta",30.0)
821        self.comp.setParam("contrast",5.3e-006)
822        self.comp.setParam("n_plates",20.0) 
823        self.comp.setParam("caille", 0.1)
824        self.comp.setParam("background",0.0)
825
826        self.x = numpy.array([0.4, 1.3])
827        self.y = numpy.array([0.5, 1.57])
828       
829        self.x_array = self.comp.evalDistribution(self.x)
830        self.y_array = self.comp.evalDistribution(self.y)
831        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
832        qy_prime = numpy.reshape(self.y, [len(self.y),1])
833        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
834       
835       
836    def test1D(self):
837        """ Test 1D model for a LamellarPS Model"""
838        self.assertAlmostEquals(self.comp.run(0.001), 28526.8, 1)
839       
840    def test1D_2(self):
841        """ Test 2D model for a LamellarPS Model"""
842        self.assertAlmostEquals(self.comp.run([0.001, 1.3]),28526.8, 1) 
843   
844    def testEval_1D(self):
845        """ Test 1D model for a LamellarPS Model with evalDistribution"""
846        self.assertEquals(self.comp.run(0.4),self.x_array[0])
847        self.assertEquals(self.comp.run(1.3),self.x_array[1])
848       
849    def testEval_2D(self):
850        """ Test 2D model for a LamellarPS Model with evalDistribution"""
851        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
852        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
853        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
854        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)       
855           
[7ef319e]856    def testCriticalPoint(self):
857        """ Test LamellarPS at the critical point"""
858        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]859     
860class TestLamellarPSHGModel(unittest.TestCase):
861    """ Unit tests for LamellarPSHG Model"""
862   
863    def setUp(self):
864        from sans.models.LamellarPSHGModel import LamellarPSHGModel
865        self.comp = LamellarPSHGModel()
866        self.comp.setParam("scale",1.0)
867        self.comp.setParam("spacing",40.0)
868        self.comp.setParam("deltaT",10.0)
869        self.comp.setParam("deltaH",2.0)
870        self.comp.setParam("sld_tail",4e-7)
871        self.comp.setParam("sld_head",2e-6)
872        self.comp.setParam("sld_solvent",6e-6)
873        self.comp.setParam("n_plates",30)
874        self.comp.setParam("caille",0.001)
875        self.comp.setParam("background",0.001)
876
877        self.x = numpy.array([0.4, 1.3])
878        self.y = numpy.array([0.5, 1.57])
879       
880        self.x_array = self.comp.evalDistribution(self.x)
881        self.y_array = self.comp.evalDistribution(self.y)
882        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
883        qy_prime = numpy.reshape(self.y, [len(self.y),1])
884        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
885       
886    def test1D(self):
887        """ Test 1D model for a LamellarPSHG Model"""
888        self.assertAlmostEquals(self.comp.run(0.001),6.83139e6, 3)
889       
890    def test1D_2(self):
891        """ Test 2D model for a LamellarPSHG Model"""
892        self.assertAlmostEquals(self.comp.run([0.001, 1.3]),6.83139e6,3)
893       
894    def testEval_1D(self):
895        """ Test 1D model for a LamellarPSHG Model with evalDistribution"""
896        self.assertEquals(self.comp.run(0.4),self.x_array[0])
897        self.assertEquals(self.comp.run(1.3),self.x_array[1])
898       
899    def testEval_2D(self):
900        """ Test 2D model for a LamellarPSHG Model with evalDistribution"""
901        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
902        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
903        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
904        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)       
[7ef319e]905   
906    def testCriticalPoint(self):
907        """ Test LamellarPSHG at the critical point"""
908        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]909     
910class TestSquareWellStructure(unittest.TestCase):
911    """ Unit tests for SquareWellStructure """
912   
913    def setUp(self):
914        from sans.models.SquareWellStructure import SquareWellStructure
915        self.comp = SquareWellStructure()
916        self.comp.setParam("effect_radius",50.0)
917        self.comp.setParam("volfraction",0.04)
918        self.comp.setParam("welldepth",1.5 )
919        self.comp.setParam("wellwidth",1.2)
920       
921        self.x = numpy.array([0.4, 1.3])
922        self.y = numpy.array([0.5, 1.57])
923       
924        self.x_array = self.comp.evalDistribution(self.x)
925        self.y_array = self.comp.evalDistribution(self.y)
926        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
927        qy_prime = numpy.reshape(self.y, [len(self.y),1])
928        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
929       
930       
931    def test1D(self):
932        """ Test 1D model for a SquareWellStructure"""
933        self.assertAlmostEqual(self.comp.run(0.001), 0.976657, 2)
934       
935    def test1D_2(self):
936        """ Test 2D model for a SquareWellStructure"""
937        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),0.9776657,2)     
938   
939    def testEval_1D(self):
940        """ Test 1D model for a SquareWellStructure with evalDistribution"""
941        self.assertEquals(self.comp.run(0.4),self.x_array[0])
942        self.assertEquals(self.comp.run(1.3),self.x_array[1])
943       
944    def testEval_2D(self):
945        """ Test 2D model for a SquareWellStructure with evalDistribution"""
946        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
947        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
948        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
949        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]950   
951    def testCriticalPoint(self):
952        """ Test SquareWellStructure at the critical point"""
953        self.assert_(numpy.isfinite(self.comp.run(0.0)))                     
[9ce41c6]954     
955class TestHardsphereStructure(unittest.TestCase):
956    """ Unit tests for HardsphereStructure"""
957   
958    def setUp(self):
959        from sans.models.HardsphereStructure import HardsphereStructure
960        self.comp = HardsphereStructure()
961        self.comp.setParam("effect_radius",50.0)
962        self.comp.setParam("volfraction", 0.2)
963        self.x = numpy.array([0.4, 1.3])
964        self.y = numpy.array([0.5, 1.57])
965       
966        self.x_array = self.comp.evalDistribution(self.x)
967        self.y_array = self.comp.evalDistribution(self.y)
968        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
969        qy_prime = numpy.reshape(self.y, [len(self.y),1])
970        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
971       
972       
973    def test1D(self):
974        """ Test 1D model for a HardsphereStructure"""
975        self.assertAlmostEqual(self.comp.run(0.001),0.209128, 4)
976       
977    def test1D_2(self):
978        """ Test 2D model for a HardsphereStructure"""
979        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),0.209128, 4)
980       
981    def testEval_1D(self):
982        """ Test 1D model for a HardsphereStructure with evalDistribution"""
983        self.assertEquals(self.comp.run(0.4),self.x_array[0])
984        self.assertEquals(self.comp.run(1.3),self.x_array[1])
985       
986    def testEval_2D(self):
987        """ Test 2D model for a HardsphereStructure with evalDistribution"""
988        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
989        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
990        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
991        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]992   
993    def testCriticalPoint(self):
994        """ Test HardsphereStructure at the critical point"""
995        self.assert_(numpy.isfinite(self.comp.run(0.0)))                 
[9ce41c6]996   
997class TestStickyHSStructure(unittest.TestCase):
998    """ Unit tests for StickyHSStructure"""
999   
1000    def setUp(self):
1001        from sans.models.StickyHSStructure import StickyHSStructure
1002        self.comp = StickyHSStructure()
1003        self.comp.setParam("effect_radius",50.0)
1004        self.comp.setParam("volfraction",0.1)
1005        self.comp.setParam("perturb",0.05)
1006        self.comp.setParam("stickiness",0.2)
1007
1008        self.x = numpy.array([0.4, 1.3])
1009        self.y = numpy.array([0.5, 1.57])
1010       
1011        self.x_array = self.comp.evalDistribution(self.x)
1012        self.y_array = self.comp.evalDistribution(self.y)
1013        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1014        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1015        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1016       
1017    def test1D(self):
1018        """ Test 1D model for a StickyHSStructure"""
1019        self.assertAlmostEqual(self.comp.run(0.001),1.09718, 4)
1020       
1021    def test1D_2(self):
1022        """ Test 2D model for a StickyHSStructure"""
1023        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),1.09718, 4)
1024       
1025    def testEval_1D(self):
1026        """ Test 1D model for a StickyHSStructure with evalDistribution"""
1027        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1028        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1029       
1030    def testEval_2D(self):
1031        """ Test 2D model for a StickyHSStructure with evalDistribution"""
1032        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1033        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1034        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1035        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1036               
[7ef319e]1037    def testCriticalPoint(self):
1038        """ Test StickyHSStructure at the critical point"""
1039        self.assert_(numpy.isfinite(self.comp.run(0.0))) 
[9ce41c6]1040       
1041class TestHayterMSAStructure(unittest.TestCase):
1042    """ Unit tests for HayterMSAStructure"""
1043   
1044    def setUp(self):
1045        from sans.models.HayterMSAStructure import HayterMSAStructure
1046        self.comp = HayterMSAStructure()
1047        self.comp.setParam("effect_radius",20.75)
1048        self.comp.setParam("charge",19.0)
1049        self.comp.setParam("volfraction",0.0192 )
1050        self.comp.setParam("temperature",298)
1051        self.comp.setParam("saltconc",0.0)
1052        self.comp.setParam("dielectconst",78)
1053       
1054        self.x = numpy.array([0.4, 1.3])
1055        self.y = numpy.array([0.5, 1.57])
1056       
1057        self.x_array = self.comp.evalDistribution(self.x)
1058        self.y_array = self.comp.evalDistribution(self.y)
1059        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1060        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1061        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1062
1063    def test1D(self):
1064        """ Test 1D model for a HayterMSAStructure"""
1065        self.assertAlmostEqual(self.comp.run(0.001),0.0712928, 4)
1066       
1067    def test1D_2(self):
1068        """ Test 2D model for a HayterMSAStructure"""
1069        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),0.0712928, 4) 
1070       
1071    def testEval_1D(self):
1072        """ Test 1D model for a HayterMSAStructure with evalDistribution"""
1073        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1074        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1075       
1076    def testEval_2D(self):
1077        """ Test 2D model for a HayterMSAStructure with evalDistribution"""
1078        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1079        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1080        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1081        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1082   
1083    def testCriticalPoint(self):
1084        """ Test HayterMSAStructure at the critical point"""
1085        self.assert_(numpy.isfinite(self.comp.run(0.0)))                   
[9ce41c6]1086     
1087     
1088class TestBEPolyelectrolyte(unittest.TestCase):
1089    """ Unit tests for BEPolyelectrolyte"""
1090   
1091    def setUp(self):
1092        from sans.models.BEPolyelectrolyte import BEPolyelectrolyte
1093        self.comp = BEPolyelectrolyte()
1094       
1095        self.comp.setParam('k',10)
1096        self.comp.setParam('lb',7.1)
1097        self.comp.setParam('h',12)
1098        self.comp.setParam('b',10)
1099        self.comp.setParam('cs', 0.0)
1100        self.comp.setParam('alpha',0.05)
1101        self.comp.setParam('c', 0.7)
1102        self.comp.setParam('background',0.001)
1103         
1104        self.x = numpy.array([0.4, 1.3])
1105        self.y = numpy.array([0.5, 1.57])
1106       
1107        self.x_array = self.comp.evalDistribution(self.x)
1108        self.y_array = self.comp.evalDistribution(self.y)
1109        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1110        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1111        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1112       
1113    def test1D(self):
1114        """ Test 1D model for a BEPolyelectrolyte"""
1115        self.assertAlmostEqual(self.comp.run(0.001),0.0948, 3)
1116       
1117    def test1D_2(self):
1118        """ Test 2D model for a BEPolyelectrolyte"""
1119        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),0.0948, 3)
1120     
1121    def testEval_1D(self):
1122        """ Test 1D model for a BEPolyelectrolyte with evalDistribution"""
1123        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1124        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1125       
1126    def testEval_2D(self):
1127        """ Test 2D model for a BEPolyelectrolyte with evalDistribution"""
1128        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1129        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1130        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1131        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1132   
1133    def testCriticalPoint(self):
1134        """ Test BEPolyelectrolyte at the critical point"""
1135        self.assert_(numpy.isfinite(self.comp.run(0.0)))           
1136             
[9ce41c6]1137             
1138class TestDABModel(unittest.TestCase):
1139    """ Unit tests for DABModel"""
1140   
1141    def setUp(self):
1142        from sans.models.DABModel import DABModel
1143        self.comp = DABModel()
1144        self.comp.setParam('length',40.0)
1145        self.comp.setParam('scale',10.0)
1146        self.comp.setParam('background',1.0)
1147       
1148        self.x = numpy.array([0.4, 1.3])
1149        self.y = numpy.array([0.5, 1.57])
1150   
1151        self.x_array = self.comp.evalDistribution(self.x)
1152        self.y_array = self.comp.evalDistribution(self.y)
1153        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1154        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1155        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1156       
1157    def test1D(self):
1158        """ Test 1D model for a DABModel"""
1159        self.assertAlmostEqual(self.comp.run(0.001),10.9681, 3)
1160       
1161    def test1D_2(self):
1162        """ Test 2D model for a DABModel"""
1163        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),10.9681, 3)
1164         
1165    def testEval_1D(self):
1166        """ Test 1D model for a DABModel with evalDistribution"""
1167        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1168        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1169       
1170    def testEval_2D(self):
1171        """ Test 2D model for a DABModel with evalDistribution"""
1172        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1173        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1174        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1175        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1176   
1177    def testCriticalPoint(self):
1178        """ Test DABModel at the critical point"""
1179        self.assert_(numpy.isfinite(self.comp.run(0.0)))           
[9ce41c6]1180             
1181   
1182class TestGuinierModel(unittest.TestCase):
1183    """ Unit tests for Guinier Model"""
1184   
1185    def setUp(self):
1186        from sans.models.GuinierModel import GuinierModel
1187        self.comp = GuinierModel()
1188        self.comp.setParam('scale',1.0)
[a65ffcb]1189        self.comp.setParam('rg', 1)
[9ce41c6]1190       
1191        self.x = numpy.array([0.4, 1.3])
1192        self.y = numpy.array([0.5, 1.57])
1193       
1194        self.x_array = self.comp.evalDistribution(self.x)
1195        self.y_array = self.comp.evalDistribution(self.y)
1196        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1197        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1198        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1199       
1200    def test1D(self):
1201        """ Test 1D model for a GuinierModel"""
[a65ffcb]1202        self.assertAlmostEqual(self.comp.run(1.0),0.716531, 4)
[9ce41c6]1203       
1204    def test1D_2(self):
1205        """ Test 2D model for a GuinierModel"""
[a65ffcb]1206        self.assertAlmostEqual(self.comp.run([1.0, 1.3]),0.716531, 4)
1207     
[9ce41c6]1208    def testEval_1D(self):
1209        """ Test 1D model for a GuinierModel with evalDistribution"""
1210        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1211        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1212       
1213    def testEval_2D(self):
1214        """ Test 2D model for a GuinierModel with evalDistribution"""
1215        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1216        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1217        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1218        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1219   
[7ef319e]1220    def testCriticalPoint(self):
1221        """ Test GuinierModel at the critical point"""
1222        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]1223       
1224       
1225class TestDebyeModel(unittest.TestCase):
1226    """ Unit tests for Debye Model"""
1227   
1228    def setUp(self):
1229        from sans.models.DebyeModel import DebyeModel
1230        self.comp = DebyeModel()
1231        self.comp.setParam('rg', 50.0)
1232        self.comp.setParam('scale',1.0)
1233        self.comp.setParam('background',0.001)
1234       
1235        self.x = numpy.array([0.4, 1.3])
1236        self.y = numpy.array([0.5, 1.57])
1237       
1238        self.x_array = self.comp.evalDistribution(self.x)
1239        self.y_array = self.comp.evalDistribution(self.y)
1240        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1241        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1242        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1243       
1244    def test1D(self):
1245        """ Test 1D model for a DebyeModel"""
1246        self.assertAlmostEqual(self.comp.run(0.001),1.00017,4)
1247       
1248    def test1D_2(self):
1249        """ Test 2D model for a DebyeModel"""
1250        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),1.00017,4)
1251       
1252    def testEval_1D(self):
1253        """ Test 1D model for a DebyeModel with evalDistribution"""
1254        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1255        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1256       
1257    def testEval_2D(self):
1258        """ Test 2D model for a DebyeModel with evalDistribution"""
1259        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1260        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1261        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1262        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1263   
[7ef319e]1264    def testCriticalPoint(self):
1265        """ Test DebyeModel at the critical point"""
1266        self.assertEquals(self.comp.run(0.0),1.001)
1267       
[9ce41c6]1268       
1269class TestPorodModel(unittest.TestCase):
1270    """ Unit tests for PorodModel"""
1271   
1272    def setUp(self):
1273        from sans.models.PorodModel import PorodModel
1274        self.comp = PorodModel()
1275        self.comp.setParam('scale', 1.0)
1276        self.comp.setParam('background', 0.0)
1277         
1278        self.x = numpy.array([0.4, 1.3])
1279        self.y = numpy.array([0.5, 1.57])
1280       
1281        self.x_array = self.comp.evalDistribution(self.x)
1282        self.y_array = self.comp.evalDistribution(self.y)
1283        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1284        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1285        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1286       
1287    def test1D(self):
1288        """ Test 1D model for a PorodModel"""
1289        self.assertEquals(self.comp.run(0.5), 16)
1290       
1291    def test1D_2(self):
1292        """ Test 2D model for a PorodModel"""
1293        self.assertEquals(self.comp.run([0.5, 1.3]),16) 
1294       
1295    def testEval_1D(self):
1296        """ Test 1D model for a PorodModel with evalDistribution"""
1297        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1298        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1299       
1300    def testEval_2D(self):
1301        """ Test 2D model for a PorodModel with evalDistribution"""
1302        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1303        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1304        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1305        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1306   
[7ef319e]1307    def testCreaticalPoint(self):
[9ce41c6]1308        """ Test for critical point for PorodModel run"""
1309        self.assertRaises(ZeroDivisionError, self.comp.run, 0.0)
1310       
1311       
1312class TestPeakGaussModel(unittest.TestCase):
1313    """ Unit tests for PeakGaussModel"""
1314   
1315    def setUp(self):
1316        from sans.models.PeakGaussModel import PeakGaussModel
1317        self.comp = PeakGaussModel()
1318        self.comp.setParam('scale', 100)
1319        self.comp.setParam('B', 0.005)
1320        self.comp.setParam('q0',0.05)
1321        self.comp.setParam('background',1.0)
1322       
1323        self.x = numpy.array([0.4, 1.3])
1324        self.y = numpy.array([0.5, 1.57])
1325       
1326        self.x_array = self.comp.evalDistribution(self.x)
1327        self.y_array = self.comp.evalDistribution(self.y)
1328        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1329        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1330        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1331       
1332    def test1D(self):
1333        """ Test 1D model for a PeakGauss Model"""
1334        self.assertEquals(self.comp.run(0.001),1)
1335       
1336    def test1D_2(self):
1337        """ Test 2D model for a PeakGauss Model"""
1338        self.assertEquals(self.comp.run([0.001, 1.3]),1) 
1339       
1340    def testEval_1D(self):
1341        """ Test 1D model for a PeakGauss Model with evalDistribution"""
1342        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1343        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1344       
1345    def testEval_2D(self):
1346        """ Test 2D model for a PeakGauss Model with evalDistribution"""
1347        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1348        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1349        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1350        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1351   
1352    def testCriticalPoint(self):
1353        """ Test PeakGauss at the critical point"""
1354        self.assert_(numpy.isfinite(self.comp.run(0.0)))   
[9ce41c6]1355       
1356class TestPeakLorentzModel(unittest.TestCase):
1357    """ Unit tests for PeakLorentzModel"""
1358   
1359    def setUp(self):
1360        from sans.models.PeakLorentzModel import PeakLorentzModel
1361        self.comp = PeakLorentzModel()
1362        self.comp.setParam('scale', 100)
1363        self.comp.setParam('B', 0.005)
1364        self.comp.setParam('q0',0.05)
1365        self.comp.setParam('background',1.0)
1366       
1367        self.x = numpy.array([0.4, 1.3])
1368        self.y = numpy.array([0.5, 1.57])
1369       
1370        self.x_array = self.comp.evalDistribution(self.x)
1371        self.y_array = self.comp.evalDistribution(self.y)
1372        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1373        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1374        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1375       
1376    def test1D(self):
1377        """ Test 1D model for a PeakLorentz Model"""
1378        self.assertAlmostEqual(self.comp.run(0.001), 2.0305, 3)
1379       
1380    def test1D_2(self):
1381        """ Test 2D model for a PeakLorentz Model"""
1382        self.assertAlmostEqual(self.comp.run([0.001, 1.3]), 2.0305, 3)
1383       
1384    def testEval_1D(self):
1385        """ Test 1D model for a PeakLorentz Model with evalDistribution"""
1386        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1387        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1388       
1389    def testEval_2D(self):
1390        """ Test 2D model for a PeakLorentz Model with evalDistribution"""
1391        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1392        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1393        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1394        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1395       
[7ef319e]1396    def testCriticalPoint(self):
1397        """ Test PeakLorentz at the critical point"""
1398        self.comp.setParam('B', 0.0)
1399        self.assertRaises(ZeroDivisionError, self.comp.run, 10)
1400        self.assert_(numpy.isfinite(self.comp.run(0.0))) 
[9ce41c6]1401       
[7ef319e]1402       
[9ce41c6]1403class TestFractalAbsModel(unittest.TestCase):
1404    """ Unit tests for FractalAbsModel"""
1405   
1406    def setUp(self):
1407        from sans.models.FractalAbsModel import FractalAbsModel
1408        self.comp = FractalAbsModel()
1409        self.comp.setParam('scale', 0.05)
1410        self.comp.setParam('radius', 5.0)
1411        self.comp.setParam('fractal_dim', 2.0)
1412        self.comp.setParam('corr_length',100.0)
1413        self.comp.setParam('block_sld', 2.0e-6)
1414        self.comp.setParam('solvent_sld', 6.35e-6)
1415        self.comp.setParam('background',0.0)
1416       
1417        self.x = numpy.array([0.4, 1.3])
1418        self.y = numpy.array([0.5, 1.57])
1419       
1420        self.x_array = self.comp.evalDistribution(self.x)
1421        self.y_array = self.comp.evalDistribution(self.y)
1422        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1423        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1424        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1425       
1426    def test1D(self):
1427        """ Test 1D model for a Fractal Abs Model"""
1428        self.assertAlmostEqual(self.comp.run(0.001), 39.2881, 3)
1429       
1430    def test1D_2(self):
1431        """ Test 2D model for a Fractal Abs Model"""
1432        self.assertAlmostEqual(self.comp.run([0.001, 1.3]), 39.2881, 3)
1433       
1434    def testEval_1D(self):
1435        """ Test 1D model for a Fractal Abs Model with evalDistribution"""
1436        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1437        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1438       
1439    def testEval_2D(self):
1440        """ Test 2D model for a Fractal Abs Model with evalDistribution"""
1441        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1442        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1443        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1444        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1445   
1446    def testCriticalPoint(self):
1447        """ Test Fractal Abs at the critical point"""
1448        self.assert_(numpy.isfinite(self.comp.run(0.0)))   
[9ce41c6]1449   
1450class TestFractalModel(unittest.TestCase):
1451    """ Unit tests for FractalModel"""
1452   
1453    def setUp(self):
1454        from sans.models.FractalModel import FractalModel
1455        self.comp = FractalModel()
1456        self.comp.setParam('scale', 0.05)
1457        self.comp.setParam('radius', 5.0)
1458        self.comp.setParam('fractal_dim', 2.0)
1459        self.comp.setParam('corr_length',100.0)
1460        self.comp.setParam('block_sld', 2.0e-6)
1461        self.comp.setParam('solvent_sld', 6.35e-6)
1462        self.comp.setParam('background',0.0)
1463       
1464        self.x = numpy.array([0.4, 1.3])
1465        self.y = numpy.array([0.5, 1.57])
1466       
1467        self.x_array = self.comp.evalDistribution(self.x)
1468        self.y_array = self.comp.evalDistribution(self.y)
1469        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1470        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1471        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1472       
1473    def test1D(self):
1474        """ Test 1D model for a Fractal Model"""
1475        self.assertAlmostEqual(self.comp.run(0.001), 39.2881, 3)
1476       
1477    def test1D_2(self):
1478        """ Test 2D model for a Fractal Model"""
1479        self.assertAlmostEqual(self.comp.run([0.001, 1.3]), 39.2881, 3)
1480       
1481    def testEval_1D(self):
1482        """ Test 1D model for a Fractal Model with evalDistribution"""
1483        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1484        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1485       
1486    def testEval_2D(self):
1487        """ Test 2D model for a Fractal Model with evalDistribution"""
1488        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1489        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1490        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1491        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1492       
[7ef319e]1493    def testCriticalPoint(self):
1494        """ Test Fractal at the critical point"""
1495        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]1496   
1497class TestLorentzModel(unittest.TestCase):
1498    """ Unit tests for LorentzModel"""
1499   
1500    def setUp(self):
1501        from sans.models.LorentzModel import LorentzModel
1502        self.comp = LorentzModel()
1503        self.comp.setParam("background",1)
1504        self.comp.setParam("length",50)
1505        self.comp.setParam("scale",100)
1506       
1507        self.x = numpy.array([0.4, 1.3])
1508        self.y = numpy.array([0.5, 1.57])
1509       
1510        self.x_array = self.comp.evalDistribution(self.x)
1511        self.y_array = self.comp.evalDistribution(self.y)
1512        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1513        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1514        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1515       
1516    def test1D(self):
1517        """ Test 1D model for a Lorentz Model"""
1518        self.assertAlmostEqual(self.comp.run(0.001),100.751, 2)
1519       
1520    def test1D_2(self):
1521        """ Test 2D model for a Lorentz Model"""
1522        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),100.751, 2)
1523   
1524    def testEval_1D(self):
1525        """ Test 1D model for a Lorentz Model with evalDistribution"""
1526        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1527        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1528       
1529    def testEval_2D(self):
1530        """ Test 2D model for a Lorentz Model with evalDistribution"""
1531        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1532        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1533        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1534        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1535         
1536    def testCriticalPoint(self):
1537        """ Test Lorentz at the critical point"""
1538        self.assert_(numpy.isfinite(self.comp.run(0.0)))
1539       
1540         
[9ce41c6]1541class TestPowerLawAbsModel(unittest.TestCase):
1542    """ Unit tests for PowerLawAbsModel"""
1543   
1544    def setUp(self):
1545        from sans.models.PowerLawAbsModel import PowerLawAbsModel
1546        self.comp = PowerLawAbsModel()
1547        self.comp.setParam("background",1)
1548        self.comp.setParam("m",4)
1549        self.comp.setParam("scale",1e-6)
1550       
1551        self.x = numpy.array([0.4, 1.3])
1552        self.y = numpy.array([0.5, 1.57])
1553        self.x_array = self.comp.evalDistribution(self.x)
1554        self.y_array = self.comp.evalDistribution(self.y)
1555        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1556        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1557        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1558       
1559    def test1D(self):
1560        """ Test 1D model for a PowerLawAbs Model"""
1561        self.assertAlmostEqual(self.comp.run(0.19189), 1.00074,4)
1562       
1563    def test1D_2(self):
1564        """ Test 2D model for a PowerLawAbs Model"""
1565        self.assertAlmostEqual(self.comp.run([0.19189,1.3]), 1.00074,4)
1566       
1567    def testEval_1D(self):
1568        """ Test 1D model for a PowerLawAbs Model with evalDistribution"""
1569        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1570        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1571       
1572    def testEval_2D(self):
1573        """ Test 2D model for a PowerLawAbs Model with evalDistribution"""
1574        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1575        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1576        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1577        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
1578   
[7ef319e]1579    def testCriticalPoint(self):
1580        """ Test PowerLawAbs at the critical point"""
1581        self.assert_(numpy.isfinite(self.comp.run(0.0)))
1582       
1583       
[9ce41c6]1584class TestPowerLawModel(unittest.TestCase):
1585    """ Unit tests for PowerLawModel"""
1586   
1587    def setUp(self):
1588        from sans.models.PowerLawModel import PowerLawModel
1589        self.comp = PowerLawModel()
1590        self.comp.setParam("background",1)
1591        self.comp.setParam("m",4)
1592        self.comp.setParam("scale",1e-6)
1593       
1594        self.x = numpy.array([0.4, 1.3])
1595        self.y = numpy.array([0.5, 1.57])
1596        self.x_array = self.comp.evalDistribution(self.x)
1597        self.y_array = self.comp.evalDistribution(self.y)
1598        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1599        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1600        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1601       
1602    def test1D(self):
1603        """ Test 1D model for a PowerLaw Model"""
1604        self.assertAlmostEquals(self.comp.run(0.19189), 1.00074,4)
1605       
1606    def test1D_2(self):
1607        """ Test 2D model for a PowerLawModel"""
1608        self.assertAlmostEquals(self.comp.run([0.19189,1.3]), 1.00074,4)
1609       
1610    def testEval_1D(self):
1611        """ Test 1D model for a PowerLawModel with evalDistribution"""
1612        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1613        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1614       
1615    def testEval_2D(self):
1616        """ Test 2D model for a PowerLawModel with evalDistribution"""
1617        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1618        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1619        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1620        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1621   
1622    def testCriticalPoint(self):
1623        """ Test PowerLawModel at the critical point"""
1624        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]1625     
1626     
1627class TestTeubnerStreyModel(unittest.TestCase):
1628    """ Unit tests for TeubnerStreyModel"""
1629   
1630    def setUp(self):
1631        from sans.models.TeubnerStreyModel import TeubnerStreyModel
1632        self.comp = TeubnerStreyModel()
1633        self.comp.setParam("background",0.1)
1634        self.comp.setParam("c1",-30)
1635        self.comp.setParam("c2",5000)
1636        self.comp.setParam("scale",0.1)
1637       
1638        self.x = numpy.array([0.4, 1.3])
1639        self.y = numpy.array([0.5, 1.57])
1640        self.x_array = self.comp.evalDistribution(self.x)
1641        self.y_array = self.comp.evalDistribution(self.y)
1642        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1643        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1644        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1645       
1646    def test1D(self):
1647        """ Test 1D model for a TeubnerStrey Model"""
1648        self.assertAlmostEqual(self.comp.run(0.001),10.103, 1)
1649       
1650    def test1D_2(self):
1651        """ Test 2D model for a TeubnerStrey Model"""
1652        self.assertAlmostEqual(self.comp.run([0.001, 1.3]),10.103, 1)
1653       
1654    def testEval_1D(self):
1655        """ Test 1D model for a TeubnerStrey  with evalDistribution"""
1656        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1657        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1658       
1659    def testEval_2D(self):
1660        """ Test 2D model for a TeubnerStrey  with evalDistribution"""
1661        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1662        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1663        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1664        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1665   
1666    def testCriticalPoint(self):
1667        """ Test TeubnerStrey at the critical point"""
1668        self.assert_(numpy.isfinite(self.comp.run(0.0)))   
1669     
[9ce41c6]1670     
1671class TestLineModel(unittest.TestCase):
1672    """ Unit tests for LineModel"""
1673   
1674    def setUp(self):
1675        from sans.models.LineModel import LineModel
1676        self.comp = LineModel()
1677        self.comp.setParam("A",1)
1678        self.comp.setParam("B",1)
1679       
1680        self.x = numpy.array([0.4, 1.3])
1681        self.y = numpy.array([0.5, 1.57])
1682        self.x_array = self.comp.evalDistribution(self.x)
1683        self.y_array = self.comp.evalDistribution(self.y)
1684        qx_prime = numpy.reshape(self.x, [1,len(self.x)])
1685        qy_prime = numpy.reshape(self.y, [len(self.y),1])
1686        self.xy_matrix = self.comp.evalDistribution([qx_prime, qy_prime])
1687       
1688    def test1D(self):
1689        """ Test 1D model for a Line Model"""
1690        self.assertEquals(self.comp.run(1.0),2)
1691       
1692    def testEval_1D(self):
1693        """ Test 1D model for a Line  with evalDistribution"""
1694        self.assertEquals(self.comp.run(0.4),self.x_array[0])
1695        self.assertEquals(self.comp.run(1.3),self.x_array[1])
1696       
1697    def testEval_2D(self):
1698        """ Test 2D model for a Line  with evalDistribution"""
1699        self.assertAlmostEquals(self.comp.runXY([0.4, 0.5]),self.xy_matrix[0][0],8)
1700        self.assertAlmostEquals(self.comp.runXY([0.4,1.57]),self.xy_matrix[1][0], 8)
1701        self.assertAlmostEquals(self.comp.runXY([1.3, 0.5]),self.xy_matrix[0][1],8)
1702        self.assertAlmostEquals(self.comp.runXY([1.3, 1.57]),self.xy_matrix[1][1],8)
[7ef319e]1703   
1704    def testCriticalPoint(self):
1705        """ Test line at the critical point"""
1706        self.assert_(numpy.isfinite(self.comp.run(0.0)))
[9ce41c6]1707 
1708if __name__ == '__main__':
1709    unittest.main()
Note: See TracBrowser for help on using the repository browser.