Changeset 9316609 in sasview for sansmodels


Ignore:
Timestamp:
Oct 28, 2008 3:22:22 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
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:
92320e5
Parents:
89fef2c
Message:

added description to model

Location:
sansmodels/src/sans/models
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/CoreShellCylinderModel.py

    r96672c0 r9316609  
    4242        ## Name of the model 
    4343        self.name = "CoreShellCylinderModel" 
    44  
     44        self.description= """P(q,alpha)= scale/Vs*f(q)^(2) + bkg  Where:\n\ 
     45                f(q)= 2(core_sld- solvant_sld)* Vc*sin[qLcos(alpha/2)]/\n\ 
     46                [qLcos(alpha/2)]*J1(qRsin(alpha))/[qRsin(alpha)] +\n 2(shell_sld-solvent_sld)*Vs 
     47                *sin[q(L+T)cos(alpha/2)]/[[q(L+T)cos(alpha/2)] 
     48                *J1(q(R+T)sin(alpha))/q(R+T)sin(alpha)] 
     49                alpha:is the angle between the axis of the cylinder and the q-vector 
     50                Vs: the volume of the outer shell 
     51                Vc: the volume of the core 
     52                L: the length of the core 
     53                shell_sld: the scattering length density of the shell 
     54                solvent_sld: the scattering length density of the solvent 
     55                bkg: the background 
     56                T: the thickness 
     57                R+T: is the outer radius 
     58                L+2T: The total length of the outershell 
     59                J1: the first order Bessel function 
     60                theta: axis_theta of the cylinder 
     61                phi: the axis_phi of the cylinder""" 
    4562                ## Parameter details [units, min, max] 
    4663        self.details = {} 
  • sansmodels/src/sans/models/CoreShellModel.py

    r96672c0 r9316609  
    3939        ## Name of the model 
    4040        self.name = "CoreShellModel" 
    41  
     41        self.description= """""""" 
    4242                ## Parameter details [units, min, max] 
    4343        self.details = {} 
  • sansmodels/src/sans/models/CylinderModel.py

    r96672c0 r9316609  
    33 
    44        WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    5                  DO NOT MODIFY THIS FILE, MODIFY cylinder.h 
     5                 DO NOT MODIFY THIS FILE, MODIFY Cylinder.h 
    66                 AND RE-RUN THE GENERATOR SCRIPT 
    77 
     
    1616class CylinderModel(CCylinderModel, BaseComponent): 
    1717    """ Class that evaluates a CylinderModel model.  
    18         This file was auto-generated from cylinder.h. 
     18        This file was auto-generated from Cylinder.h. 
    1919        Refer to that file and the structure it contains 
    2020        for details of the model. 
     
    3939        ## Name of the model 
    4040        self.name = "CylinderModel" 
    41  
     41        self.description= """P(q,alpha)= scale/V*f(q)^(2)+bkg 
     42                f(q)= 2*(scatter_sld - solvent_sld)*V*sin(qLcos(alpha/2))/[qLcos(alpha/2)]* 
     43                J1(qRsin(alpha/2))/[qRsin(alpha)] 
     44                V: Volume of the cylinder 
     45                R: Radius of the cylinder 
     46                L: Length of the cylinder 
     47                J1: The bessel function 
     48                alpha: angle betweenthe axis of the cylinder and the q-vector 
     49                for 1D:the ouput is P(q)=scale/V*integral from pi/2 to zero of f(q)^(2)* 
     50                sin(alpha)*dalpha+ bkg""" 
    4251                ## Parameter details [units, min, max] 
    4352        self.details = {} 
  • sansmodels/src/sans/models/EllipsoidModel.py

    r96672c0 r9316609  
    11#!/usr/bin/env python 
    2 """ 
    3         This software was developed by the University of Tennessee as part of the 
    4         Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
    5         project funded by the US National Science Foundation. 
    6  
    7         If you use DANSE applications to do scientific research that leads to 
    8         publication, we ask that you acknowledge the use of the software with the 
    9         following sentence: 
    10  
    11         "This work benefited from DANSE software developed under NSF award DMR-0520547." 
    12  
    13         copyright 2008, University of Tennessee 
    14 """ 
    15  
    162""" Provide functionality for a C extension model 
    173 
    184        WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    19                  DO NOT MODIFY THIS FILE, MODIFY ../c_extensions/ellipsoid.h 
     5                 DO NOT MODIFY THIS FILE, MODIFY ellipsoid.h 
    206                 AND RE-RUN THE GENERATOR SCRIPT 
    217 
     8    @author: Mathieu Doucet / UTK 
     9    @contact: mathieu.doucet@nist.gov 
    2210""" 
    2311 
     
    2816class EllipsoidModel(CEllipsoidModel, BaseComponent): 
    2917    """ Class that evaluates a EllipsoidModel model.  
    30         This file was auto-generated from ../c_extensions/ellipsoid.h. 
     18        This file was auto-generated from ellipsoid.h. 
    3119        Refer to that file and the structure it contains 
    3220        for details of the model. 
     
    5139        ## Name of the model 
    5240        self.name = "EllipsoidModel" 
    53          
     41        self.description= """"P(q.alpha)= scale*f(q)^(2)+ bkg\n\ 
     42                f(q)= 3*(scatter_sld- scatter_solvent)*V*[sin(q*r(Ra,Rb,alpha)) - q*r*cos(qr(Ra,Rb,alpha))] 
     43                /[qr(Ra,Rb,alpha)]^(3)" 
     44                r(Ra,Rb,alpha)= [Rb^(2)*(sin(alpha))^(2) + Ra^(2)*(cos(alpha))^(2)]^(1/2) 
     45                scatter_sld: scattering length density of the scatter 
     46                solvent_sld: scattering length density of the solvent 
     47                V: volune of the Eliipsoid 
     48                Ra: radius along the rotation axis of the Ellipsoid 
     49                Rb: radius perpendicular to the rotation axis of the ellipsoid""" 
    5450                ## Parameter details [units, min, max] 
    5551        self.details = {} 
     
    6561    def clone(self): 
    6662        """ Return a identical copy of self """ 
    67         return self._clone(EllipsoidModel())    
     63        obj = EllipsoidModel() 
     64        obj.params = copy.deepcopy(self.params) 
     65        return obj    
    6866    
    6967    def run(self, x = 0.0): 
     
    8280         
    8381        return CEllipsoidModel.runXY(self, x) 
    84          
    85     def set_dispersion(self, parameter, dispersion): 
    86         """ 
    87             Set the dispersion object for a model parameter 
    88             @param parameter: name of the parameter [string] 
    89             @dispersion: dispersion object of type DispersionModel 
    90         """ 
    91         return CEllipsoidModel.set_dispersion(self, parameter, dispersion.cdisp) 
    92          
    9382    
    9483# End of file 
  • sansmodels/src/sans/models/EllipticalCylinderModel.py

    r8809e48 r9316609  
    11#!/usr/bin/env python 
    2 """ 
    3         This software was developed by the University of Tennessee as part of the 
    4         Distributed Data Analysis of Neutron Scattering Experiments (DANSE) 
    5         project funded by the US National Science Foundation. 
    6  
    7         If you use DANSE applications to do scientific research that leads to 
    8         publication, we ask that you acknowledge the use of the software with the 
    9         following sentence: 
    10  
    11         "This work benefited from DANSE software developed under NSF award DMR-0520547." 
    12  
    13         copyright 2008, University of Tennessee 
    14 """ 
    15  
    162""" Provide functionality for a C extension model 
    173 
    184        WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    19                  DO NOT MODIFY THIS FILE, MODIFY ../c_extensions/elliptical_cylinder.h 
     5                 DO NOT MODIFY THIS FILE, MODIFY elliptical_cylinder.h 
    206                 AND RE-RUN THE GENERATOR SCRIPT 
    217 
     8    @author: Mathieu Doucet / UTK 
     9    @contact: mathieu.doucet@nist.gov 
    2210""" 
    2311 
     
    2816class EllipticalCylinderModel(CEllipticalCylinderModel, BaseComponent): 
    2917    """ Class that evaluates a EllipticalCylinderModel model.  
    30         This file was auto-generated from ../c_extensions/elliptical_cylinder.h. 
     18        This file was auto-generated from elliptical_cylinder.h. 
    3119        Refer to that file and the structure it contains 
    3220        for details of the model. 
     
    5341        ## Name of the model 
    5442        self.name = "EllipticalCylinderModel" 
    55  
     43        self.description= """""""" 
    5644                ## Parameter details [units, min, max] 
    5745        self.details = {} 
     
    6957    def clone(self): 
    7058        """ Return a identical copy of self """ 
    71         return self._clone(EllipticalCylinderModel())    
     59        obj = EllipticalCylinderModel() 
     60        obj.params = copy.deepcopy(self.params) 
     61        return obj    
    7262    
    7363    def run(self, x = 0.0): 
     
    8676         
    8777        return CEllipticalCylinderModel.runXY(self, x) 
    88          
    89     def set_dispersion(self, parameter, dispersion): 
    90         """ 
    91             Set the dispersion object for a model parameter 
    92             @param parameter: name of the parameter [string] 
    93             @dispersion: dispersion object of type DispersionModel 
    94         """ 
    95         return CEllipticalCylinderModel.set_dispersion(self, parameter, dispersion.cdisp) 
    96          
    9778    
    9879# End of file 
  • sansmodels/src/sans/models/Gaussian.py

    r96672c0 r9316609  
    3535        ## Name of the model 
    3636        self.name = "Gaussian" 
    37  
     37        self.description= """f(x)=scale * 1/(sigma^2*2pi)e^(-(x-mu)^2/2sigma^2)""" 
    3838                ## Parameter details [units, min, max] 
    3939        self.details = {} 
  • sansmodels/src/sans/models/Lorentzian.py

    r5f89fb8 r9316609  
    3535        ## Name of the model 
    3636        self.name = "Lorentzian" 
    37         self.description='' 
     37        self.description= """f(x)=scale * 1/pi 0.5gamma / [ (x-x_0)^2 + (0.5gamma)^2 ]""" 
    3838                ## Parameter details [units, min, max] 
    3939        self.details = {} 
  • sansmodels/src/sans/models/SphereModel.py

    r96672c0 r9316609  
    3636        ## Name of the model 
    3737        self.name = "SphereModel" 
    38  
     38        self.description= """P(q)=(scale/V)*[3V(scatter_sld-solvent_sld)*(sin(qR)-qRcos(qR))/(qR)^3]^(2) 
     39                +bkg 
     40                bkg: background level 
     41                R: radius of the sphere 
     42                V:The volume of the scatter 
     43                scatter_sld: the scattering length density of the scatter 
     44                solvent_sld: the scattering length density of the solvent""" 
    3945                ## Parameter details [units, min, max] 
    4046        self.details = {} 
  • sansmodels/src/sans/models/c_extensions/CCoreShellCylinderModel.c

    rae3ce4e r9316609  
    1 /** CCoreShellCylinderModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
     
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CCoreShellCylinderModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        CoreShellCylinderParameters model_pars; 
    34 } CCoreShellCylinderModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CCoreShellCylinderModel_dealloc(CCoreShellCylinderModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CCoreShellCylinderModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CCoreShellCylinderModel *self; 
     48    [PYTHONCLASS] *self; 
    4949     
    50     self = (CCoreShellCylinderModel *)type->tp_alloc(type, 0); 
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CCoreShellCylinderModel_init(CCoreShellCylinderModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    8383} 
    8484 
    85 static PyMemberDef CCoreShellCylinderModel_members[] = { 
    86     {"params", T_OBJECT, offsetof(CCoreShellCylinderModel, params), 0, 
     85static PyMemberDef [PYTHONCLASS]_members[] = { 
     86    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8787     "Parameters"}, 
    88     {"log", T_OBJECT, offsetof(CCoreShellCylinderModel, log), 0, 
     88    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8989     "Log"}, 
    9090    {NULL}  /* Sentinel */ 
     
    9595    @return double 
    9696*/ 
    97 double CCoreShellCylinderModel_readDouble(PyObject *p) { 
     97double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9898    if (PyFloat_Check(p)==1) { 
    9999        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    113113 * @return: function value 
    114114 */ 
    115 static PyObject * run(CCoreShellCylinderModel *self, PyObject *args) { 
     115static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    116116        double q_value, phi_value; 
    117117        PyObject* pars; 
     
    135135        // Get input and determine whether we have to supply a 1D or 2D return value. 
    136136        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    137             PyErr_SetString(CCoreShellCylinderModelError,  
    138                 "CCoreShellCylinderModel.run expects a q value."); 
     137            PyErr_SetString([PYTHONCLASS]Error,  
     138                "[PYTHONCLASS].run expects a q value."); 
    139139                return NULL; 
    140140        } 
     
    146146            npars = PyList_GET_SIZE(pars);  
    147147            if(npars!=2) { 
    148                 PyErr_SetString(CCoreShellCylinderModelError,  
    149                         "CCoreShellCylinderModel.run expects a double or a list of dimension 2."); 
     148                PyErr_SetString([PYTHONCLASS]Error,  
     149                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    150150                return NULL; 
    151151            } 
    152152            // We have a vector q, get the q and phi values at which 
    153153            // to evaluate I(q,phi) 
    154             q_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    155             phi_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
     154            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     155            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    156156            // Skip zero 
    157157            if (q_value==0) { 
     
    163163 
    164164                // We have a scalar q, we will evaluate I(q) 
    165                 q_value = CCoreShellCylinderModel_readDouble(pars);              
     165                q_value = [PYTHONCLASS]_readDouble(pars);                
    166166                 
    167167                return Py_BuildValue("d",core_shell_cylinder_analytical_1D(&(self->model_pars),q_value)); 
     
    174174 * @return: function value 
    175175 */ 
    176 static PyObject * runXY(CCoreShellCylinderModel *self, PyObject *args) { 
     176static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    177177        double qx_value, qy_value; 
    178178        PyObject* pars; 
     
    196196        // Get input and determine whether we have to supply a 1D or 2D return value. 
    197197        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    198             PyErr_SetString(CCoreShellCylinderModelError,  
    199                 "CCoreShellCylinderModel.run expects a q value."); 
     198            PyErr_SetString([PYTHONCLASS]Error,  
     199                "[PYTHONCLASS].run expects a q value."); 
    200200                return NULL; 
    201201        } 
     
    207207            npars = PyList_GET_SIZE(pars);  
    208208            if(npars!=2) { 
    209                 PyErr_SetString(CCoreShellCylinderModelError,  
    210                         "CCoreShellCylinderModel.run expects a double or a list of dimension 2."); 
     209                PyErr_SetString([PYTHONCLASS]Error,  
     210                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    211211                return NULL; 
    212212            } 
    213213            // We have a vector q, get the qx and qy values at which 
    214214            // to evaluate I(qx,qy) 
    215             qx_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    216             qy_value = CCoreShellCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
     215            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     216            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    217217                return Py_BuildValue("d",core_shell_cylinder_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    218218 
     
    220220 
    221221                // We have a scalar q, we will evaluate I(q) 
    222                 qx_value = CCoreShellCylinderModel_readDouble(pars);             
     222                qx_value = [PYTHONCLASS]_readDouble(pars);               
    223223                 
    224224                return Py_BuildValue("d",core_shell_cylinder_analytical_1D(&(self->model_pars),qx_value)); 
     
    226226} 
    227227 
    228 static PyObject * reset(CCoreShellCylinderModel *self, PyObject *args) { 
     228static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    229229     
    230230 
     
    233233 
    234234 
    235 static PyMethodDef CCoreShellCylinderModel_methods[] = { 
     235static PyMethodDef [PYTHONCLASS]_methods[] = { 
    236236    {"run",      (PyCFunction)run     , METH_VARARGS, 
    237237      "Evaluate the model at a given Q or Q, phi"}, 
     
    245245}; 
    246246 
    247 static PyTypeObject CCoreShellCylinderModelType = { 
     247static PyTypeObject [PYTHONCLASS]Type = { 
    248248    PyObject_HEAD_INIT(NULL) 
    249249    0,                         /*ob_size*/ 
    250     "CCoreShellCylinderModel",             /*tp_name*/ 
    251     sizeof(CCoreShellCylinderModel),             /*tp_basicsize*/ 
     250    "[PYTHONCLASS]",             /*tp_name*/ 
     251    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    252252    0,                         /*tp_itemsize*/ 
    253     (destructor)CCoreShellCylinderModel_dealloc, /*tp_dealloc*/ 
     253    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    254254    0,                         /*tp_print*/ 
    255255    0,                         /*tp_getattr*/ 
     
    267267    0,                         /*tp_as_buffer*/ 
    268268    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    269     "CCoreShellCylinderModel objects",           /* tp_doc */ 
     269    "[PYTHONCLASS] objects",           /* tp_doc */ 
    270270    0,                         /* tp_traverse */ 
    271271    0,                         /* tp_clear */ 
     
    274274    0,                         /* tp_iter */ 
    275275    0,                         /* tp_iternext */ 
    276     CCoreShellCylinderModel_methods,             /* tp_methods */ 
    277     CCoreShellCylinderModel_members,             /* tp_members */ 
     276    [PYTHONCLASS]_methods,             /* tp_methods */ 
     277    [PYTHONCLASS]_members,             /* tp_members */ 
    278278    0,                         /* tp_getset */ 
    279279    0,                         /* tp_base */ 
     
    282282    0,                         /* tp_descr_set */ 
    283283    0,                         /* tp_dictoffset */ 
    284     (initproc)CCoreShellCylinderModel_init,      /* tp_init */ 
     284    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    285285    0,                         /* tp_alloc */ 
    286     CCoreShellCylinderModel_new,                 /* tp_new */ 
     286    [PYTHONCLASS]_new,                 /* tp_new */ 
    287287}; 
    288288 
     
    296296 * @param module: module to add the class to 
    297297 */  
    298 void addCCoreShellCylinderModel(PyObject *module) { 
     298void add[PYTHONCLASS](PyObject *module) { 
    299299        PyObject *d; 
    300300         
    301     if (PyType_Ready(&CCoreShellCylinderModelType) < 0) 
     301    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    302302        return; 
    303303 
    304     Py_INCREF(&CCoreShellCylinderModelType); 
    305     PyModule_AddObject(module, "CCoreShellCylinderModel", (PyObject *)&CCoreShellCylinderModelType); 
     304    Py_INCREF(&[PYTHONCLASS]Type); 
     305    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    306306     
    307307    d = PyModule_GetDict(module); 
    308     CCoreShellCylinderModelError = PyErr_NewException("CCoreShellCylinderModel.error", NULL, NULL); 
    309     PyDict_SetItemString(d, "CCoreShellCylinderModelError", CCoreShellCylinderModelError); 
    310 } 
    311  
     308    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     309    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     310} 
     311 
  • sansmodels/src/sans/models/c_extensions/CCoreShellModel.c

    rae3ce4e r9316609  
    1 /** CCoreShellModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
     
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CCoreShellModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        CoreShellParameters model_pars; 
    34 } CCoreShellModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CCoreShellModel_dealloc(CCoreShellModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CCoreShellModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CCoreShellModel *self; 
     48    [PYTHONCLASS] *self; 
    4949     
    50     self = (CCoreShellModel *)type->tp_alloc(type, 0); 
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CCoreShellModel_init(CCoreShellModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    8080} 
    8181 
    82 static PyMemberDef CCoreShellModel_members[] = { 
    83     {"params", T_OBJECT, offsetof(CCoreShellModel, params), 0, 
     82static PyMemberDef [PYTHONCLASS]_members[] = { 
     83    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8484     "Parameters"}, 
    85     {"log", T_OBJECT, offsetof(CCoreShellModel, log), 0, 
     85    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8686     "Log"}, 
    8787    {NULL}  /* Sentinel */ 
     
    9292    @return double 
    9393*/ 
    94 double CCoreShellModel_readDouble(PyObject *p) { 
     94double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9595    if (PyFloat_Check(p)==1) { 
    9696        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    110110 * @return: function value 
    111111 */ 
    112 static PyObject * run(CCoreShellModel *self, PyObject *args) { 
     112static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    113113        double q_value, phi_value; 
    114114        PyObject* pars; 
     
    129129        // Get input and determine whether we have to supply a 1D or 2D return value. 
    130130        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    131             PyErr_SetString(CCoreShellModelError,  
    132                 "CCoreShellModel.run expects a q value."); 
     131            PyErr_SetString([PYTHONCLASS]Error,  
     132                "[PYTHONCLASS].run expects a q value."); 
    133133                return NULL; 
    134134        } 
     
    140140            npars = PyList_GET_SIZE(pars);  
    141141            if(npars!=2) { 
    142                 PyErr_SetString(CCoreShellModelError,  
    143                         "CCoreShellModel.run expects a double or a list of dimension 2."); 
     142                PyErr_SetString([PYTHONCLASS]Error,  
     143                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    144144                return NULL; 
    145145            } 
    146146            // We have a vector q, get the q and phi values at which 
    147147            // to evaluate I(q,phi) 
    148             q_value = CCoreShellModel_readDouble(PyList_GET_ITEM(pars,0)); 
    149             phi_value = CCoreShellModel_readDouble(PyList_GET_ITEM(pars,1)); 
     148            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     149            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    150150            // Skip zero 
    151151            if (q_value==0) { 
     
    157157 
    158158                // We have a scalar q, we will evaluate I(q) 
    159                 q_value = CCoreShellModel_readDouble(pars);              
     159                q_value = [PYTHONCLASS]_readDouble(pars);                
    160160                 
    161161                return Py_BuildValue("d",core_shell_analytical_1D(&(self->model_pars),q_value)); 
     
    168168 * @return: function value 
    169169 */ 
    170 static PyObject * runXY(CCoreShellModel *self, PyObject *args) { 
     170static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    171171        double qx_value, qy_value; 
    172172        PyObject* pars; 
     
    187187        // Get input and determine whether we have to supply a 1D or 2D return value. 
    188188        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    189             PyErr_SetString(CCoreShellModelError,  
    190                 "CCoreShellModel.run expects a q value."); 
     189            PyErr_SetString([PYTHONCLASS]Error,  
     190                "[PYTHONCLASS].run expects a q value."); 
    191191                return NULL; 
    192192        } 
     
    198198            npars = PyList_GET_SIZE(pars);  
    199199            if(npars!=2) { 
    200                 PyErr_SetString(CCoreShellModelError,  
    201                         "CCoreShellModel.run expects a double or a list of dimension 2."); 
     200                PyErr_SetString([PYTHONCLASS]Error,  
     201                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    202202                return NULL; 
    203203            } 
    204204            // We have a vector q, get the qx and qy values at which 
    205205            // to evaluate I(qx,qy) 
    206             qx_value = CCoreShellModel_readDouble(PyList_GET_ITEM(pars,0)); 
    207             qy_value = CCoreShellModel_readDouble(PyList_GET_ITEM(pars,1)); 
     206            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     207            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    208208                return Py_BuildValue("d",core_shell_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    209209 
     
    211211 
    212212                // We have a scalar q, we will evaluate I(q) 
    213                 qx_value = CCoreShellModel_readDouble(pars);             
     213                qx_value = [PYTHONCLASS]_readDouble(pars);               
    214214                 
    215215                return Py_BuildValue("d",core_shell_analytical_1D(&(self->model_pars),qx_value)); 
     
    217217} 
    218218 
    219 static PyObject * reset(CCoreShellModel *self, PyObject *args) { 
     219static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    220220     
    221221 
     
    224224 
    225225 
    226 static PyMethodDef CCoreShellModel_methods[] = { 
     226static PyMethodDef [PYTHONCLASS]_methods[] = { 
    227227    {"run",      (PyCFunction)run     , METH_VARARGS, 
    228228      "Evaluate the model at a given Q or Q, phi"}, 
     
    236236}; 
    237237 
    238 static PyTypeObject CCoreShellModelType = { 
     238static PyTypeObject [PYTHONCLASS]Type = { 
    239239    PyObject_HEAD_INIT(NULL) 
    240240    0,                         /*ob_size*/ 
    241     "CCoreShellModel",             /*tp_name*/ 
    242     sizeof(CCoreShellModel),             /*tp_basicsize*/ 
     241    "[PYTHONCLASS]",             /*tp_name*/ 
     242    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    243243    0,                         /*tp_itemsize*/ 
    244     (destructor)CCoreShellModel_dealloc, /*tp_dealloc*/ 
     244    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    245245    0,                         /*tp_print*/ 
    246246    0,                         /*tp_getattr*/ 
     
    258258    0,                         /*tp_as_buffer*/ 
    259259    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    260     "CCoreShellModel objects",           /* tp_doc */ 
     260    "[PYTHONCLASS] objects",           /* tp_doc */ 
    261261    0,                         /* tp_traverse */ 
    262262    0,                         /* tp_clear */ 
     
    265265    0,                         /* tp_iter */ 
    266266    0,                         /* tp_iternext */ 
    267     CCoreShellModel_methods,             /* tp_methods */ 
    268     CCoreShellModel_members,             /* tp_members */ 
     267    [PYTHONCLASS]_methods,             /* tp_methods */ 
     268    [PYTHONCLASS]_members,             /* tp_members */ 
    269269    0,                         /* tp_getset */ 
    270270    0,                         /* tp_base */ 
     
    273273    0,                         /* tp_descr_set */ 
    274274    0,                         /* tp_dictoffset */ 
    275     (initproc)CCoreShellModel_init,      /* tp_init */ 
     275    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    276276    0,                         /* tp_alloc */ 
    277     CCoreShellModel_new,                 /* tp_new */ 
     277    [PYTHONCLASS]_new,                 /* tp_new */ 
    278278}; 
    279279 
     
    287287 * @param module: module to add the class to 
    288288 */  
    289 void addCCoreShellModel(PyObject *module) { 
     289void add[PYTHONCLASS](PyObject *module) { 
    290290        PyObject *d; 
    291291         
    292     if (PyType_Ready(&CCoreShellModelType) < 0) 
     292    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    293293        return; 
    294294 
    295     Py_INCREF(&CCoreShellModelType); 
    296     PyModule_AddObject(module, "CCoreShellModel", (PyObject *)&CCoreShellModelType); 
     295    Py_INCREF(&[PYTHONCLASS]Type); 
     296    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    297297     
    298298    d = PyModule_GetDict(module); 
    299     CCoreShellModelError = PyErr_NewException("CCoreShellModel.error", NULL, NULL); 
    300     PyDict_SetItemString(d, "CCoreShellModelError", CCoreShellModelError); 
    301 } 
    302  
     299    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     300    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     301} 
     302 
  • sansmodels/src/sans/models/c_extensions/CCylinderModel.c

    rae3ce4e r9316609  
    1 /** CCylinderModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
    44 * 
    55 * WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY 
    6  *          DO NOT MODIFY THIS FILE, MODIFY cylinder.h 
     6 *          DO NOT MODIFY THIS FILE, MODIFY Cylinder.h 
    77 *          AND RE-RUN THE GENERATOR SCRIPT 
    88 * 
     
    1717#include <time.h> 
    1818 
    19 #include "cylinder.h" 
     19#include "Cylinder.h" 
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CCylinderModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        CylinderParameters model_pars; 
    34 } CCylinderModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CCylinderModel_dealloc(CCylinderModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CCylinderModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CCylinderModel *self; 
     48    [PYTHONCLASS] *self; 
    4949     
    50     self = (CCylinderModel *)type->tp_alloc(type, 0); 
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CCylinderModel_init(CCylinderModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    8080} 
    8181 
    82 static PyMemberDef CCylinderModel_members[] = { 
    83     {"params", T_OBJECT, offsetof(CCylinderModel, params), 0, 
     82static PyMemberDef [PYTHONCLASS]_members[] = { 
     83    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8484     "Parameters"}, 
    85     {"log", T_OBJECT, offsetof(CCylinderModel, log), 0, 
     85    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8686     "Log"}, 
    8787    {NULL}  /* Sentinel */ 
     
    9292    @return double 
    9393*/ 
    94 double CCylinderModel_readDouble(PyObject *p) { 
     94double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9595    if (PyFloat_Check(p)==1) { 
    9696        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    110110 * @return: function value 
    111111 */ 
    112 static PyObject * run(CCylinderModel *self, PyObject *args) { 
     112static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    113113        double q_value, phi_value; 
    114114        PyObject* pars; 
     
    129129        // Get input and determine whether we have to supply a 1D or 2D return value. 
    130130        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    131             PyErr_SetString(CCylinderModelError,  
    132                 "CCylinderModel.run expects a q value."); 
     131            PyErr_SetString([PYTHONCLASS]Error,  
     132                "[PYTHONCLASS].run expects a q value."); 
    133133                return NULL; 
    134134        } 
     
    140140            npars = PyList_GET_SIZE(pars);  
    141141            if(npars!=2) { 
    142                 PyErr_SetString(CCylinderModelError,  
    143                         "CCylinderModel.run expects a double or a list of dimension 2."); 
     142                PyErr_SetString([PYTHONCLASS]Error,  
     143                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    144144                return NULL; 
    145145            } 
    146146            // We have a vector q, get the q and phi values at which 
    147147            // to evaluate I(q,phi) 
    148             q_value = CCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    149             phi_value = CCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
     148            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     149            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    150150            // Skip zero 
    151151            if (q_value==0) { 
    152152                return Py_BuildValue("d",0.0); 
    153153            } 
    154                 return Py_BuildValue("d",cylinder_analytical_2D(&(self->model_pars),q_value,phi_value)); 
     154                return Py_BuildValue("d",Cylinder_analytical_2D(&(self->model_pars),q_value,phi_value)); 
    155155 
    156156        } else { 
    157157 
    158158                // We have a scalar q, we will evaluate I(q) 
    159                 q_value = CCylinderModel_readDouble(pars);               
     159                q_value = [PYTHONCLASS]_readDouble(pars);                
    160160                 
    161                 return Py_BuildValue("d",cylinder_analytical_1D(&(self->model_pars),q_value)); 
     161                return Py_BuildValue("d",Cylinder_analytical_1D(&(self->model_pars),q_value)); 
    162162        }        
    163163} 
     
    168168 * @return: function value 
    169169 */ 
    170 static PyObject * runXY(CCylinderModel *self, PyObject *args) { 
     170static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    171171        double qx_value, qy_value; 
    172172        PyObject* pars; 
     
    187187        // Get input and determine whether we have to supply a 1D or 2D return value. 
    188188        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    189             PyErr_SetString(CCylinderModelError,  
    190                 "CCylinderModel.run expects a q value."); 
     189            PyErr_SetString([PYTHONCLASS]Error,  
     190                "[PYTHONCLASS].run expects a q value."); 
    191191                return NULL; 
    192192        } 
     
    198198            npars = PyList_GET_SIZE(pars);  
    199199            if(npars!=2) { 
    200                 PyErr_SetString(CCylinderModelError,  
    201                         "CCylinderModel.run expects a double or a list of dimension 2."); 
     200                PyErr_SetString([PYTHONCLASS]Error,  
     201                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    202202                return NULL; 
    203203            } 
    204204            // We have a vector q, get the qx and qy values at which 
    205205            // to evaluate I(qx,qy) 
    206             qx_value = CCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    207             qy_value = CCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
    208                 return Py_BuildValue("d",cylinder_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
     206            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     207            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
     208                return Py_BuildValue("d",Cylinder_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    209209 
    210210        } else { 
    211211 
    212212                // We have a scalar q, we will evaluate I(q) 
    213                 qx_value = CCylinderModel_readDouble(pars);              
     213                qx_value = [PYTHONCLASS]_readDouble(pars);               
    214214                 
    215                 return Py_BuildValue("d",cylinder_analytical_1D(&(self->model_pars),qx_value)); 
     215                return Py_BuildValue("d",Cylinder_analytical_1D(&(self->model_pars),qx_value)); 
    216216        }        
    217217} 
    218218 
    219 static PyObject * reset(CCylinderModel *self, PyObject *args) { 
     219static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    220220     
    221221 
     
    224224 
    225225 
    226 static PyMethodDef CCylinderModel_methods[] = { 
     226static PyMethodDef [PYTHONCLASS]_methods[] = { 
    227227    {"run",      (PyCFunction)run     , METH_VARARGS, 
    228228      "Evaluate the model at a given Q or Q, phi"}, 
     
    236236}; 
    237237 
    238 static PyTypeObject CCylinderModelType = { 
     238static PyTypeObject [PYTHONCLASS]Type = { 
    239239    PyObject_HEAD_INIT(NULL) 
    240240    0,                         /*ob_size*/ 
    241     "CCylinderModel",             /*tp_name*/ 
    242     sizeof(CCylinderModel),             /*tp_basicsize*/ 
     241    "[PYTHONCLASS]",             /*tp_name*/ 
     242    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    243243    0,                         /*tp_itemsize*/ 
    244     (destructor)CCylinderModel_dealloc, /*tp_dealloc*/ 
     244    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    245245    0,                         /*tp_print*/ 
    246246    0,                         /*tp_getattr*/ 
     
    258258    0,                         /*tp_as_buffer*/ 
    259259    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    260     "CCylinderModel objects",           /* tp_doc */ 
     260    "[PYTHONCLASS] objects",           /* tp_doc */ 
    261261    0,                         /* tp_traverse */ 
    262262    0,                         /* tp_clear */ 
     
    265265    0,                         /* tp_iter */ 
    266266    0,                         /* tp_iternext */ 
    267     CCylinderModel_methods,             /* tp_methods */ 
    268     CCylinderModel_members,             /* tp_members */ 
     267    [PYTHONCLASS]_methods,             /* tp_methods */ 
     268    [PYTHONCLASS]_members,             /* tp_members */ 
    269269    0,                         /* tp_getset */ 
    270270    0,                         /* tp_base */ 
     
    273273    0,                         /* tp_descr_set */ 
    274274    0,                         /* tp_dictoffset */ 
    275     (initproc)CCylinderModel_init,      /* tp_init */ 
     275    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    276276    0,                         /* tp_alloc */ 
    277     CCylinderModel_new,                 /* tp_new */ 
     277    [PYTHONCLASS]_new,                 /* tp_new */ 
    278278}; 
    279279 
     
    287287 * @param module: module to add the class to 
    288288 */  
    289 void addCCylinderModel(PyObject *module) { 
     289void add[PYTHONCLASS](PyObject *module) { 
    290290        PyObject *d; 
    291291         
    292     if (PyType_Ready(&CCylinderModelType) < 0) 
     292    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    293293        return; 
    294294 
    295     Py_INCREF(&CCylinderModelType); 
    296     PyModule_AddObject(module, "CCylinderModel", (PyObject *)&CCylinderModelType); 
     295    Py_INCREF(&[PYTHONCLASS]Type); 
     296    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    297297     
    298298    d = PyModule_GetDict(module); 
    299     CCylinderModelError = PyErr_NewException("CCylinderModel.error", NULL, NULL); 
    300     PyDict_SetItemString(d, "CCylinderModelError", CCylinderModelError); 
    301 } 
    302  
     299    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     300    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     301} 
     302 
  • sansmodels/src/sans/models/c_extensions/CEllipsoidModel.c

    rae3ce4e r9316609  
    1 /** CEllipsoidModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
     
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CEllipsoidModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        EllipsoidParameters model_pars; 
    34 } CEllipsoidModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CEllipsoidModel_dealloc(CEllipsoidModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CEllipsoidModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CEllipsoidModel *self; 
     48    [PYTHONCLASS] *self; 
    4949     
    50     self = (CEllipsoidModel *)type->tp_alloc(type, 0); 
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CEllipsoidModel_init(CEllipsoidModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    8080} 
    8181 
    82 static PyMemberDef CEllipsoidModel_members[] = { 
    83     {"params", T_OBJECT, offsetof(CEllipsoidModel, params), 0, 
     82static PyMemberDef [PYTHONCLASS]_members[] = { 
     83    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8484     "Parameters"}, 
    85     {"log", T_OBJECT, offsetof(CEllipsoidModel, log), 0, 
     85    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8686     "Log"}, 
    8787    {NULL}  /* Sentinel */ 
     
    9292    @return double 
    9393*/ 
    94 double CEllipsoidModel_readDouble(PyObject *p) { 
     94double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9595    if (PyFloat_Check(p)==1) { 
    9696        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    110110 * @return: function value 
    111111 */ 
    112 static PyObject * run(CEllipsoidModel *self, PyObject *args) { 
     112static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    113113        double q_value, phi_value; 
    114114        PyObject* pars; 
     
    129129        // Get input and determine whether we have to supply a 1D or 2D return value. 
    130130        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    131             PyErr_SetString(CEllipsoidModelError,  
    132                 "CEllipsoidModel.run expects a q value."); 
     131            PyErr_SetString([PYTHONCLASS]Error,  
     132                "[PYTHONCLASS].run expects a q value."); 
    133133                return NULL; 
    134134        } 
     
    140140            npars = PyList_GET_SIZE(pars);  
    141141            if(npars!=2) { 
    142                 PyErr_SetString(CEllipsoidModelError,  
    143                         "CEllipsoidModel.run expects a double or a list of dimension 2."); 
     142                PyErr_SetString([PYTHONCLASS]Error,  
     143                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    144144                return NULL; 
    145145            } 
    146146            // We have a vector q, get the q and phi values at which 
    147147            // to evaluate I(q,phi) 
    148             q_value = CEllipsoidModel_readDouble(PyList_GET_ITEM(pars,0)); 
    149             phi_value = CEllipsoidModel_readDouble(PyList_GET_ITEM(pars,1)); 
     148            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     149            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    150150            // Skip zero 
    151151            if (q_value==0) { 
     
    157157 
    158158                // We have a scalar q, we will evaluate I(q) 
    159                 q_value = CEllipsoidModel_readDouble(pars);              
     159                q_value = [PYTHONCLASS]_readDouble(pars);                
    160160                 
    161161                return Py_BuildValue("d",ellipsoid_analytical_1D(&(self->model_pars),q_value)); 
     
    168168 * @return: function value 
    169169 */ 
    170 static PyObject * runXY(CEllipsoidModel *self, PyObject *args) { 
     170static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    171171        double qx_value, qy_value; 
    172172        PyObject* pars; 
     
    187187        // Get input and determine whether we have to supply a 1D or 2D return value. 
    188188        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    189             PyErr_SetString(CEllipsoidModelError,  
    190                 "CEllipsoidModel.run expects a q value."); 
     189            PyErr_SetString([PYTHONCLASS]Error,  
     190                "[PYTHONCLASS].run expects a q value."); 
    191191                return NULL; 
    192192        } 
     
    198198            npars = PyList_GET_SIZE(pars);  
    199199            if(npars!=2) { 
    200                 PyErr_SetString(CEllipsoidModelError,  
    201                         "CEllipsoidModel.run expects a double or a list of dimension 2."); 
     200                PyErr_SetString([PYTHONCLASS]Error,  
     201                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    202202                return NULL; 
    203203            } 
    204204            // We have a vector q, get the qx and qy values at which 
    205205            // to evaluate I(qx,qy) 
    206             qx_value = CEllipsoidModel_readDouble(PyList_GET_ITEM(pars,0)); 
    207             qy_value = CEllipsoidModel_readDouble(PyList_GET_ITEM(pars,1)); 
     206            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     207            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    208208                return Py_BuildValue("d",ellipsoid_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    209209 
     
    211211 
    212212                // We have a scalar q, we will evaluate I(q) 
    213                 qx_value = CEllipsoidModel_readDouble(pars);             
     213                qx_value = [PYTHONCLASS]_readDouble(pars);               
    214214                 
    215215                return Py_BuildValue("d",ellipsoid_analytical_1D(&(self->model_pars),qx_value)); 
     
    217217} 
    218218 
    219 static PyObject * reset(CEllipsoidModel *self, PyObject *args) { 
     219static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    220220     
    221221 
     
    224224 
    225225 
    226 static PyMethodDef CEllipsoidModel_methods[] = { 
     226static PyMethodDef [PYTHONCLASS]_methods[] = { 
    227227    {"run",      (PyCFunction)run     , METH_VARARGS, 
    228228      "Evaluate the model at a given Q or Q, phi"}, 
     
    236236}; 
    237237 
    238 static PyTypeObject CEllipsoidModelType = { 
     238static PyTypeObject [PYTHONCLASS]Type = { 
    239239    PyObject_HEAD_INIT(NULL) 
    240240    0,                         /*ob_size*/ 
    241     "CEllipsoidModel",             /*tp_name*/ 
    242     sizeof(CEllipsoidModel),             /*tp_basicsize*/ 
     241    "[PYTHONCLASS]",             /*tp_name*/ 
     242    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    243243    0,                         /*tp_itemsize*/ 
    244     (destructor)CEllipsoidModel_dealloc, /*tp_dealloc*/ 
     244    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    245245    0,                         /*tp_print*/ 
    246246    0,                         /*tp_getattr*/ 
     
    258258    0,                         /*tp_as_buffer*/ 
    259259    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    260     "CEllipsoidModel objects",           /* tp_doc */ 
     260    "[PYTHONCLASS] objects",           /* tp_doc */ 
    261261    0,                         /* tp_traverse */ 
    262262    0,                         /* tp_clear */ 
     
    265265    0,                         /* tp_iter */ 
    266266    0,                         /* tp_iternext */ 
    267     CEllipsoidModel_methods,             /* tp_methods */ 
    268     CEllipsoidModel_members,             /* tp_members */ 
     267    [PYTHONCLASS]_methods,             /* tp_methods */ 
     268    [PYTHONCLASS]_members,             /* tp_members */ 
    269269    0,                         /* tp_getset */ 
    270270    0,                         /* tp_base */ 
     
    273273    0,                         /* tp_descr_set */ 
    274274    0,                         /* tp_dictoffset */ 
    275     (initproc)CEllipsoidModel_init,      /* tp_init */ 
     275    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    276276    0,                         /* tp_alloc */ 
    277     CEllipsoidModel_new,                 /* tp_new */ 
     277    [PYTHONCLASS]_new,                 /* tp_new */ 
    278278}; 
    279279 
     
    287287 * @param module: module to add the class to 
    288288 */  
    289 void addCEllipsoidModel(PyObject *module) { 
     289void add[PYTHONCLASS](PyObject *module) { 
    290290        PyObject *d; 
    291291         
    292     if (PyType_Ready(&CEllipsoidModelType) < 0) 
     292    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    293293        return; 
    294294 
    295     Py_INCREF(&CEllipsoidModelType); 
    296     PyModule_AddObject(module, "CEllipsoidModel", (PyObject *)&CEllipsoidModelType); 
     295    Py_INCREF(&[PYTHONCLASS]Type); 
     296    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    297297     
    298298    d = PyModule_GetDict(module); 
    299     CEllipsoidModelError = PyErr_NewException("CEllipsoidModel.error", NULL, NULL); 
    300     PyDict_SetItemString(d, "CEllipsoidModelError", CEllipsoidModelError); 
    301 } 
    302  
     299    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     300    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     301} 
     302 
  • sansmodels/src/sans/models/c_extensions/CEllipticalCylinderModel.c

    rae3ce4e r9316609  
    1 /** CEllipticalCylinderModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
     
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CEllipticalCylinderModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        EllipticalCylinderParameters model_pars; 
    34 } CEllipticalCylinderModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CEllipticalCylinderModel_dealloc(CEllipticalCylinderModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CEllipticalCylinderModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CEllipticalCylinderModel *self; 
     48    [PYTHONCLASS] *self; 
    4949     
    50     self = (CEllipticalCylinderModel *)type->tp_alloc(type, 0); 
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CEllipticalCylinderModel_init(CEllipticalCylinderModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    8282} 
    8383 
    84 static PyMemberDef CEllipticalCylinderModel_members[] = { 
    85     {"params", T_OBJECT, offsetof(CEllipticalCylinderModel, params), 0, 
     84static PyMemberDef [PYTHONCLASS]_members[] = { 
     85    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8686     "Parameters"}, 
    87     {"log", T_OBJECT, offsetof(CEllipticalCylinderModel, log), 0, 
     87    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8888     "Log"}, 
    8989    {NULL}  /* Sentinel */ 
     
    9494    @return double 
    9595*/ 
    96 double CEllipticalCylinderModel_readDouble(PyObject *p) { 
     96double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9797    if (PyFloat_Check(p)==1) { 
    9898        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    112112 * @return: function value 
    113113 */ 
    114 static PyObject * run(CEllipticalCylinderModel *self, PyObject *args) { 
     114static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    115115        double q_value, phi_value; 
    116116        PyObject* pars; 
     
    133133        // Get input and determine whether we have to supply a 1D or 2D return value. 
    134134        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    135             PyErr_SetString(CEllipticalCylinderModelError,  
    136                 "CEllipticalCylinderModel.run expects a q value."); 
     135            PyErr_SetString([PYTHONCLASS]Error,  
     136                "[PYTHONCLASS].run expects a q value."); 
    137137                return NULL; 
    138138        } 
     
    144144            npars = PyList_GET_SIZE(pars);  
    145145            if(npars!=2) { 
    146                 PyErr_SetString(CEllipticalCylinderModelError,  
    147                         "CEllipticalCylinderModel.run expects a double or a list of dimension 2."); 
     146                PyErr_SetString([PYTHONCLASS]Error,  
     147                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    148148                return NULL; 
    149149            } 
    150150            // We have a vector q, get the q and phi values at which 
    151151            // to evaluate I(q,phi) 
    152             q_value = CEllipticalCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    153             phi_value = CEllipticalCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
     152            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     153            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    154154            // Skip zero 
    155155            if (q_value==0) { 
     
    161161 
    162162                // We have a scalar q, we will evaluate I(q) 
    163                 q_value = CEllipticalCylinderModel_readDouble(pars);             
     163                q_value = [PYTHONCLASS]_readDouble(pars);                
    164164                 
    165165                return Py_BuildValue("d",elliptical_cylinder_analytical_1D(&(self->model_pars),q_value)); 
     
    172172 * @return: function value 
    173173 */ 
    174 static PyObject * runXY(CEllipticalCylinderModel *self, PyObject *args) { 
     174static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    175175        double qx_value, qy_value; 
    176176        PyObject* pars; 
     
    193193        // Get input and determine whether we have to supply a 1D or 2D return value. 
    194194        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    195             PyErr_SetString(CEllipticalCylinderModelError,  
    196                 "CEllipticalCylinderModel.run expects a q value."); 
     195            PyErr_SetString([PYTHONCLASS]Error,  
     196                "[PYTHONCLASS].run expects a q value."); 
    197197                return NULL; 
    198198        } 
     
    204204            npars = PyList_GET_SIZE(pars);  
    205205            if(npars!=2) { 
    206                 PyErr_SetString(CEllipticalCylinderModelError,  
    207                         "CEllipticalCylinderModel.run expects a double or a list of dimension 2."); 
     206                PyErr_SetString([PYTHONCLASS]Error,  
     207                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    208208                return NULL; 
    209209            } 
    210210            // We have a vector q, get the qx and qy values at which 
    211211            // to evaluate I(qx,qy) 
    212             qx_value = CEllipticalCylinderModel_readDouble(PyList_GET_ITEM(pars,0)); 
    213             qy_value = CEllipticalCylinderModel_readDouble(PyList_GET_ITEM(pars,1)); 
     212            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     213            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    214214                return Py_BuildValue("d",elliptical_cylinder_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    215215 
     
    217217 
    218218                // We have a scalar q, we will evaluate I(q) 
    219                 qx_value = CEllipticalCylinderModel_readDouble(pars);            
     219                qx_value = [PYTHONCLASS]_readDouble(pars);               
    220220                 
    221221                return Py_BuildValue("d",elliptical_cylinder_analytical_1D(&(self->model_pars),qx_value)); 
     
    223223} 
    224224 
    225 static PyObject * reset(CEllipticalCylinderModel *self, PyObject *args) { 
     225static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    226226     
    227227 
     
    230230 
    231231 
    232 static PyMethodDef CEllipticalCylinderModel_methods[] = { 
     232static PyMethodDef [PYTHONCLASS]_methods[] = { 
    233233    {"run",      (PyCFunction)run     , METH_VARARGS, 
    234234      "Evaluate the model at a given Q or Q, phi"}, 
     
    242242}; 
    243243 
    244 static PyTypeObject CEllipticalCylinderModelType = { 
     244static PyTypeObject [PYTHONCLASS]Type = { 
    245245    PyObject_HEAD_INIT(NULL) 
    246246    0,                         /*ob_size*/ 
    247     "CEllipticalCylinderModel",             /*tp_name*/ 
    248     sizeof(CEllipticalCylinderModel),             /*tp_basicsize*/ 
     247    "[PYTHONCLASS]",             /*tp_name*/ 
     248    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    249249    0,                         /*tp_itemsize*/ 
    250     (destructor)CEllipticalCylinderModel_dealloc, /*tp_dealloc*/ 
     250    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    251251    0,                         /*tp_print*/ 
    252252    0,                         /*tp_getattr*/ 
     
    264264    0,                         /*tp_as_buffer*/ 
    265265    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    266     "CEllipticalCylinderModel objects",           /* tp_doc */ 
     266    "[PYTHONCLASS] objects",           /* tp_doc */ 
    267267    0,                         /* tp_traverse */ 
    268268    0,                         /* tp_clear */ 
     
    271271    0,                         /* tp_iter */ 
    272272    0,                         /* tp_iternext */ 
    273     CEllipticalCylinderModel_methods,             /* tp_methods */ 
    274     CEllipticalCylinderModel_members,             /* tp_members */ 
     273    [PYTHONCLASS]_methods,             /* tp_methods */ 
     274    [PYTHONCLASS]_members,             /* tp_members */ 
    275275    0,                         /* tp_getset */ 
    276276    0,                         /* tp_base */ 
     
    279279    0,                         /* tp_descr_set */ 
    280280    0,                         /* tp_dictoffset */ 
    281     (initproc)CEllipticalCylinderModel_init,      /* tp_init */ 
     281    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    282282    0,                         /* tp_alloc */ 
    283     CEllipticalCylinderModel_new,                 /* tp_new */ 
     283    [PYTHONCLASS]_new,                 /* tp_new */ 
    284284}; 
    285285 
     
    293293 * @param module: module to add the class to 
    294294 */  
    295 void addCEllipticalCylinderModel(PyObject *module) { 
     295void add[PYTHONCLASS](PyObject *module) { 
    296296        PyObject *d; 
    297297         
    298     if (PyType_Ready(&CEllipticalCylinderModelType) < 0) 
     298    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    299299        return; 
    300300 
    301     Py_INCREF(&CEllipticalCylinderModelType); 
    302     PyModule_AddObject(module, "CEllipticalCylinderModel", (PyObject *)&CEllipticalCylinderModelType); 
     301    Py_INCREF(&[PYTHONCLASS]Type); 
     302    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    303303     
    304304    d = PyModule_GetDict(module); 
    305     CEllipticalCylinderModelError = PyErr_NewException("CEllipticalCylinderModel.error", NULL, NULL); 
    306     PyDict_SetItemString(d, "CEllipticalCylinderModelError", CEllipticalCylinderModelError); 
    307 } 
    308  
     305    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     306    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     307} 
     308 
  • sansmodels/src/sans/models/c_extensions/CSphereModel.c

    rae3ce4e r9316609  
    1 /** CSphereModel 
     1/** [PYTHONCLASS] 
    22 * 
    33 * C extension  
     
    2020 
    2121/// Error object for raised exceptions 
    22 static PyObject * CSphereModelError = NULL; 
     22static PyObject * [PYTHONCLASS]Error = NULL; 
    2323 
    2424 
     
    3232    /// Model parameters 
    3333        SphereParameters model_pars; 
    34 } CSphereModel; 
     34} [PYTHONCLASS]; 
    3535 
    3636 
    3737static void 
    38 CSphereModel_dealloc(CSphereModel* self) 
     38[PYTHONCLASS]_dealloc([PYTHONCLASS]* self) 
    3939{ 
    4040    self->ob_type->tp_free((PyObject*)self); 
     
    4444 
    4545static PyObject * 
    46 CSphereModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
     46[PYTHONCLASS]_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 
    4747{ 
    48     CSphereModel *self; 
    49      
    50     self = (CSphereModel *)type->tp_alloc(type, 0); 
     48    [PYTHONCLASS] *self; 
     49     
     50    self = ([PYTHONCLASS] *)type->tp_alloc(type, 0); 
    5151    
    5252    return (PyObject *)self; 
     
    5454 
    5555static int 
    56 CSphereModel_init(CSphereModel *self, PyObject *args, PyObject *kwds) 
     56[PYTHONCLASS]_init([PYTHONCLASS] *self, PyObject *args, PyObject *kwds) 
    5757{ 
    5858    if (self != NULL) { 
     
    7777} 
    7878 
    79 static PyMemberDef CSphereModel_members[] = { 
    80     {"params", T_OBJECT, offsetof(CSphereModel, params), 0, 
     79static PyMemberDef [PYTHONCLASS]_members[] = { 
     80    {"params", T_OBJECT, offsetof([PYTHONCLASS], params), 0, 
    8181     "Parameters"}, 
    82     {"log", T_OBJECT, offsetof(CSphereModel, log), 0, 
     82    {"log", T_OBJECT, offsetof([PYTHONCLASS], log), 0, 
    8383     "Log"}, 
    8484    {NULL}  /* Sentinel */ 
     
    8989    @return double 
    9090*/ 
    91 double CSphereModel_readDouble(PyObject *p) { 
     91double [PYTHONCLASS]_readDouble(PyObject *p) { 
    9292    if (PyFloat_Check(p)==1) { 
    9393        return (double)(((PyFloatObject *)(p))->ob_fval); 
     
    107107 * @return: function value 
    108108 */ 
    109 static PyObject * run(CSphereModel *self, PyObject *args) { 
     109static PyObject * run([PYTHONCLASS] *self, PyObject *args) { 
    110110        double q_value, phi_value; 
    111111        PyObject* pars; 
     
    123123        // Get input and determine whether we have to supply a 1D or 2D return value. 
    124124        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    125             PyErr_SetString(CSphereModelError,  
    126                 "CSphereModel.run expects a q value."); 
     125            PyErr_SetString([PYTHONCLASS]Error,  
     126                "[PYTHONCLASS].run expects a q value."); 
    127127                return NULL; 
    128128        } 
     
    134134            npars = PyList_GET_SIZE(pars);  
    135135            if(npars!=2) { 
    136                 PyErr_SetString(CSphereModelError,  
    137                         "CSphereModel.run expects a double or a list of dimension 2."); 
     136                PyErr_SetString([PYTHONCLASS]Error,  
     137                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    138138                return NULL; 
    139139            } 
    140140            // We have a vector q, get the q and phi values at which 
    141141            // to evaluate I(q,phi) 
    142             q_value = CSphereModel_readDouble(PyList_GET_ITEM(pars,0)); 
    143             phi_value = CSphereModel_readDouble(PyList_GET_ITEM(pars,1)); 
     142            q_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     143            phi_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    144144            // Skip zero 
    145145            if (q_value==0) { 
     
    151151 
    152152                // We have a scalar q, we will evaluate I(q) 
    153                 q_value = CSphereModel_readDouble(pars);                 
     153                q_value = [PYTHONCLASS]_readDouble(pars);                
    154154                 
    155155                return Py_BuildValue("d",sphere_analytical_1D(&(self->model_pars),q_value)); 
     
    162162 * @return: function value 
    163163 */ 
    164 static PyObject * runXY(CSphereModel *self, PyObject *args) { 
     164static PyObject * runXY([PYTHONCLASS] *self, PyObject *args) { 
    165165        double qx_value, qy_value; 
    166166        PyObject* pars; 
     
    178178        // Get input and determine whether we have to supply a 1D or 2D return value. 
    179179        if ( !PyArg_ParseTuple(args,"O",&pars) ) { 
    180             PyErr_SetString(CSphereModelError,  
    181                 "CSphereModel.run expects a q value."); 
     180            PyErr_SetString([PYTHONCLASS]Error,  
     181                "[PYTHONCLASS].run expects a q value."); 
    182182                return NULL; 
    183183        } 
     
    189189            npars = PyList_GET_SIZE(pars);  
    190190            if(npars!=2) { 
    191                 PyErr_SetString(CSphereModelError,  
    192                         "CSphereModel.run expects a double or a list of dimension 2."); 
     191                PyErr_SetString([PYTHONCLASS]Error,  
     192                        "[PYTHONCLASS].run expects a double or a list of dimension 2."); 
    193193                return NULL; 
    194194            } 
    195195            // We have a vector q, get the qx and qy values at which 
    196196            // to evaluate I(qx,qy) 
    197             qx_value = CSphereModel_readDouble(PyList_GET_ITEM(pars,0)); 
    198             qy_value = CSphereModel_readDouble(PyList_GET_ITEM(pars,1)); 
     197            qx_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,0)); 
     198            qy_value = [PYTHONCLASS]_readDouble(PyList_GET_ITEM(pars,1)); 
    199199                return Py_BuildValue("d",sphere_analytical_2DXY(&(self->model_pars),qx_value,qy_value)); 
    200200 
     
    202202 
    203203                // We have a scalar q, we will evaluate I(q) 
    204                 qx_value = CSphereModel_readDouble(pars);                
     204                qx_value = [PYTHONCLASS]_readDouble(pars);               
    205205                 
    206206                return Py_BuildValue("d",sphere_analytical_1D(&(self->model_pars),qx_value)); 
     
    208208} 
    209209 
    210 static PyObject * reset(CSphereModel *self, PyObject *args) { 
     210static PyObject * reset([PYTHONCLASS] *self, PyObject *args) { 
    211211     
    212212 
     
    215215 
    216216 
    217 static PyMethodDef CSphereModel_methods[] = { 
     217static PyMethodDef [PYTHONCLASS]_methods[] = { 
    218218    {"run",      (PyCFunction)run     , METH_VARARGS, 
    219219      "Evaluate the model at a given Q or Q, phi"}, 
     
    227227}; 
    228228 
    229 static PyTypeObject CSphereModelType = { 
     229static PyTypeObject [PYTHONCLASS]Type = { 
    230230    PyObject_HEAD_INIT(NULL) 
    231231    0,                         /*ob_size*/ 
    232     "CSphereModel",             /*tp_name*/ 
    233     sizeof(CSphereModel),             /*tp_basicsize*/ 
     232    "[PYTHONCLASS]",             /*tp_name*/ 
     233    sizeof([PYTHONCLASS]),             /*tp_basicsize*/ 
    234234    0,                         /*tp_itemsize*/ 
    235     (destructor)CSphereModel_dealloc, /*tp_dealloc*/ 
     235    (destructor)[PYTHONCLASS]_dealloc, /*tp_dealloc*/ 
    236236    0,                         /*tp_print*/ 
    237237    0,                         /*tp_getattr*/ 
     
    249249    0,                         /*tp_as_buffer*/ 
    250250    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ 
    251     "CSphereModel objects",           /* tp_doc */ 
     251    "[PYTHONCLASS] objects",           /* tp_doc */ 
    252252    0,                         /* tp_traverse */ 
    253253    0,                         /* tp_clear */ 
     
    256256    0,                         /* tp_iter */ 
    257257    0,                         /* tp_iternext */ 
    258     CSphereModel_methods,             /* tp_methods */ 
    259     CSphereModel_members,             /* tp_members */ 
     258    [PYTHONCLASS]_methods,             /* tp_methods */ 
     259    [PYTHONCLASS]_members,             /* tp_members */ 
    260260    0,                         /* tp_getset */ 
    261261    0,                         /* tp_base */ 
     
    264264    0,                         /* tp_descr_set */ 
    265265    0,                         /* tp_dictoffset */ 
    266     (initproc)CSphereModel_init,      /* tp_init */ 
     266    (initproc)[PYTHONCLASS]_init,      /* tp_init */ 
    267267    0,                         /* tp_alloc */ 
    268     CSphereModel_new,                 /* tp_new */ 
     268    [PYTHONCLASS]_new,                 /* tp_new */ 
    269269}; 
    270270 
     
    278278 * @param module: module to add the class to 
    279279 */  
    280 void addCSphereModel(PyObject *module) { 
     280void add[PYTHONCLASS](PyObject *module) { 
    281281        PyObject *d; 
    282282         
    283     if (PyType_Ready(&CSphereModelType) < 0) 
     283    if (PyType_Ready(&[PYTHONCLASS]Type) < 0) 
    284284        return; 
    285285 
    286     Py_INCREF(&CSphereModelType); 
    287     PyModule_AddObject(module, "CSphereModel", (PyObject *)&CSphereModelType); 
     286    Py_INCREF(&[PYTHONCLASS]Type); 
     287    PyModule_AddObject(module, "[PYTHONCLASS]", (PyObject *)&[PYTHONCLASS]Type); 
    288288     
    289289    d = PyModule_GetDict(module); 
    290     CSphereModelError = PyErr_NewException("CSphereModel.error", NULL, NULL); 
    291     PyDict_SetItemString(d, "CSphereModelError", CSphereModelError); 
    292 } 
    293  
     290    [PYTHONCLASS]Error = PyErr_NewException("[PYTHONCLASS].error", NULL, NULL); 
     291    PyDict_SetItemString(d, "[PYTHONCLASS]Error", [PYTHONCLASS]Error); 
     292} 
     293 
  • sansmodels/src/sans/models/c_extensions/WrapperGenerator.py

    r4d3acb6 r9316609  
    131131                            self.description=temp[0] 
    132132                            break 
    133                         print self.description 
     133                        #print self.description 
    134134                    else: 
    135135                        self.description=temp 
     
    147147                    break 
    148148                else: 
    149                     if re.search("*",line)!=None: 
    150                         temp=line.split("//",1) 
    151                         self.description+='\n'+temp[1].lstrip().rstrip() 
     149                    #if re.search("*",line)!=None: 
     150                    #    temp=line.split("*",1) 
     151                    #    self.description+='\n'+temp[1].lstrip().rstrip() 
    152152                    if re.search("//",line)!=None: 
    153153                        temp=line.split("//",1) 
    154                         self.description+='\n'+temp[1].lstrip().rstrip() 
     154                        self.description+='\n\t\t'+temp[1].lstrip().rstrip() 
    155155                         
    156156                    else: 
    157                         self.description+='\n'+line.lstrip().rstrip() 
     157                        self.description+='\n\t\t'+line.lstrip().rstrip() 
    158158                     
    159159                 
     
    224224            if line.count(key)>0: 
    225225                self.modelCalcFlag = True 
    226                  
     226             
    227227                 
    228228                 
     
    244244            newline = self.replaceToken(tmp_line,  
    245245                                        "[PYTHONCLASS]", 'C'+self.pythonClass) 
    246              
     246            ##catch description 
     247            #newline = self.replaceToken(tmp_line,  
     248            #                            "[DESCRIPTION]", self.description) 
    247249            # Catch class name 
    248250            newline = self.replaceToken(newline,  
     
    336338            newline = self.replaceToken(newline,  
    337339                                        "[PAR_DETAILS]", self.details) 
    338  
     340            #print"write",tmp_line  
    339341            # Write new line to the wrapper .c file 
    340342            file.write(newline+'\n') 
    341                 
     343            
    342344        file.close() 
    343345         
  • sansmodels/src/sans/models/c_extensions/modelTemplate.txt

    rae3ce4e r9316609  
    3131        ## Name of the model 
    3232        self.name = "[PYTHONCLASS]" 
    33  
     33        self.description= """[DESCRIPTION]""" 
    3434                [PAR_DETAILS] 
    3535    
  • sansmodels/src/sans/models/c_models/WrapperGenerator.py

    r96672c0 r9316609  
    109109         # Catch Description 
    110110        key = "[DESCRIPTION]" 
    111         find_description= False 
     111        find_description= 0 
    112112        temp="" 
    113113        for line in lines: 
    114114            if line.count(key)>0 : 
    115                 find_description= True 
     115                 
    116116                try: 
     117                    find_description= 1 
    117118                    index = line.index(key) 
    118119                    toks = line[index:].split("=",1 ) 
    119120                    temp=toks[1].lstrip().rstrip() 
    120121                    text='text' 
    121                     key2="<%s>"%text.lower 
     122                    key2="<%s>"%text.lower() 
    122123                    if re.match(key2,temp)!=None: 
    123                         index2 = line.index(key2) 
    124                         temp=line[index:] 
     124                        #index2 = line.index(key2) 
     125                        #temp = temp[index2:] 
     126                        toks2=temp.split(key2,1) 
     127                        self.description=toks2[1] 
     128                        text='text' 
     129                        key2="</%s>"%text.lower() 
     130                        if re.search(key2,toks2[1])!=None: 
     131                            temp=toks2[1].split(key2,1) 
     132                            self.description=temp[0] 
     133                            break 
     134                        #print self.description 
    125135                    else: 
    126136                        self.description=temp 
     137                        break 
    127138                except: 
    128139                     raise ValueError, "Could not parse file %s" % self.file 
    129                 if find_description: 
    130                     text='text' 
    131                     key2="</%s>"%text.lower 
    132                     if re.match(key2,temp)!=None: 
    133                         index2 = line.index(key2) 
    134                         temp=line[:index] 
    135                     temp+=line 
    136         self.description= temp 
     140            elif find_description==1: 
     141                text='text' 
     142                key2="</%s>"%text.lower() 
     143                #print "second line",line,key2,re.search(key2,line) 
     144                if re.search(key2,line)!=None: 
     145                    tok=line.split(key2,1) 
     146                    temp=tok[0].split("//",1) 
     147                    self.description+=tok[1].lstrip().rstrip() 
     148                    break 
     149                else: 
     150                    #if re.search("*",line)!=None: 
     151                    #    temp=line.split("*",1) 
     152                    #    self.description+='\n'+temp[1].lstrip().rstrip() 
     153                    if re.search("//",line)!=None: 
     154                        temp=line.split("//",1) 
     155                        self.description+='\n\t\t'+temp[1].lstrip().rstrip() 
     156                         
     157                    else: 
     158                        self.description+='\n\t\t'+line.lstrip().rstrip() 
     159                     
     160                 
    137161                 
    138162        for line in lines: 
     
    235259            newline = self.replaceToken(tmp_line,  
    236260                                        "[PYTHONCLASS]", 'C'+self.pythonClass) 
    237              
     261            #Catch model description 
     262            newline = self.replaceToken(tmp_line,  
     263                                        "[DESCRIPTION]", self.description) 
    238264            # Catch C model name 
    239265            newline = self.replaceToken(newline,  
  • sansmodels/src/sans/models/c_models/modelTemplate.txt

    r8809e48 r9316609  
    4343        ## Name of the model 
    4444        self.name = "[PYTHONCLASS]" 
    45  
     45        self.description ="""[DESCRIPTION]""" 
    4646                [PAR_DETAILS] 
    4747    
Note: See TracChangeset for help on using the changeset viewer.