Changeset 26e4a24 in sasview for sansmodels/src/sans
- Timestamp:
- Aug 7, 2009 11:24:39 AM (15 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- ecc58e72
- Parents:
- 58c6ba6
- Location:
- sansmodels/src/sans/models
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/BaseComponent.py
r83a25da r26e4a24 72 72 q_array = numpy.asarray(qdist) 73 73 iq_array = numpy.zeros(len(q_array)) 74 for i in len(q_array):74 for i in xrange(len(q_array)): 75 75 iq_array[i] = self.runXY(q_array[i]) 76 76 -
sansmodels/src/sans/models/DebyeModel.py
rd37ba31 r26e4a24 64 64 # an exception 65 65 y = (x * self.params['rg'])**2.0 66 if y== 0:67 return 1e+1666 if x == 0: 67 D=1 68 68 else: 69 70 69 D = 2.0*( math.exp(-y) + y -1.0 )/y**2.0 70 return self.params['scale']* D + self.params['background'] 71 71 72 72 def run(self, x = 0.0): -
sansmodels/src/sans/models/c_extensions/elliptical_cylinder.h
r1ed3834 r26e4a24 7 7 * [DESCRIPTION] = Please see details... 8 8 * [FIXED]= <text> cyl_phi.width; 9 * cyl_theta.width; cyl_psi.width; length.width; r_minor.width; r_ratio.width </text> 9 * cyl_theta.width; cyl_psi.width; length.width; r_minor.width; r_ratio.width 10 *</text> 10 11 * [ORIENTATION_PARAMS]= cyl_phi; cyl_theta; cyl_psi; cyl_phi.width; cyl_theta.width; cyl_psi.width 11 12 * */ -
sansmodels/src/sans/models/c_models/classTemplate.txt
r8344c50 r26e4a24 149 149 return PyArray_Return(result); 150 150 } 151 /** 152 * Function to call to evaluate model 153 * @param args: input numpy array [q[],phi[]] 154 * @return: numpy array object 155 */ 156 static PyObject * evaluateTwoDim( [CMODEL]* model, 157 PyArrayObject *q, PyArrayObject *phi) 158 { 159 PyArrayObject *result; 160 //check validity of input vectors 161 if (q->nd != 1 || q->descr->type_num != PyArray_DOUBLE 162 || phi->nd != 1 || phi->descr->type_num != PyArray_DOUBLE 163 || phi->dimensions[0] != q->dimensions[0]){ 164 165 //const char * message= "Invalid array: q->nd=%d,type_num=%d\n",q->nd,q->descr->type_num; 166 PyErr_SetString(PyExc_ValueError ,"wrong input"); 167 return NULL; 168 } 169 result= (PyArrayObject *)PyArray_FromDims(q->nd,(int*)(q->dimensions), PyArray_DOUBLE); 170 171 if (result == NULL){ 172 const char * message= "Could not create result "; 173 PyErr_SetString(PyExc_RuntimeError , message); 174 return NULL; 175 } 176 177 for (int i = 0; i < q->dimensions[0]; i++) { 178 double q_value = *(double *)(q->data + i*q->strides[0]); 179 double phi_value = *(double *)(phi->data + i*phi->strides[0]); 180 double *result_value = (double *)(result->data + i*result->strides[0]); 181 if (q_value == 0) 182 *result_value = 0.0; 183 else 184 *result_value = model->evaluate_rphi(q_value, phi_value); 185 } 186 return PyArray_Return(result); 187 } 151 188 152 /** 189 153 * Function to call to evaluate model -
sansmodels/src/sans/models/test/utest_dispersity.py
reba9885 r26e4a24 57 57 58 58 new_model = self.model.clone() 59 print "gaussian",self.model.run(0.001)60 59 self.assertAlmostEqual(new_model.run(0.001), 4723.32213339, 3) 61 60 self.assertAlmostEqual(new_model.runXY([0.001,0.001]), 4743.56, 2) 62 63 def test_schulz_zero(self):64 from sans.models.dispersion_models import SchulzDispersion65 disp = SchulzDispersion()66 self.model.set_dispersion('radius', disp)67 self.model.dispersion['radius']['width'] = 5.068 #self.model.dispersion['radius']['width'] = 0.069 self.model.dispersion['radius']['npts'] = 10070 #self.model.setParam('scale', 1.0)71 self.model.setParam('scale', 10.0)72 print "schulz",self.model.run(0.001), self.model.dispersion73 self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)74 self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)75 76 def test_lognormal_zero(self):77 from sans.models.dispersion_models import LogNormalDispersion78 disp = LogNormalDispersion()79 self.model.set_dispersion('radius', disp)80 self.model.dispersion['radius']['width'] = 5.081 #self.model.dispersion['radius']['width'] = 0.082 self.model.dispersion['radius']['npts'] = 10083 #self.model.setParam('scale', 1.0)84 self.model.setParam('scale', 10.0)85 print "model dispersion",self.model.dispersion86 print "lognormal",self.model.run(0.001)87 self.assertAlmostEqual(self.model.run(0.001), 450.355, 3)88 self.assertAlmostEqual(self.model.runXY([0.001,0.001]), 452.299, 3)89 61 90 62 def test_gaussian_zero(self): -
sansmodels/src/sans/models/test/utest_models.py
reba9885 r26e4a24 24 24 def test1D(self): 25 25 """ Test 1D model for a sphere """ 26 self.assertAlmostEqual(self.comp.run(1.0), 5 .6387e-5, 4)26 self.assertAlmostEqual(self.comp.run(1.0), 56.3878, 4) 27 27 28 28 def test1D_2(self): 29 29 """ Test 2D model for a sphere """ 30 self.assertAlmostEqual(self.comp.run([1.0, 1.3]), 5 .63878e-5, 4)30 self.assertAlmostEqual(self.comp.run([1.0, 1.3]), 56.3878, 4) 31 31 32 32 class TestCyl(unittest.TestCase):
Note: See TracChangeset
for help on using the changeset viewer.