Changes in / [ed82794:190fc2b] in sasmodels


Ignore:
Location:
sasmodels/models
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/be_polyelectrolyte.py

    r168052c r841753c  
    4444J F Joanny, L Leibler, *Journal de Physique*, 51 (1990) 545 
    4545 
    46 A Moussaid, F Schosseler, J P Munch, S Candau, 
    47 *J. Journal de Physique II France*, 3 (1993) 573 
     46A Moussaid, F Schosseler, J P Munch, S Candau, *J. Journal de Physique II France*, 3 (1993) 573 
    4847 
    4948E Raphael, J F Joanny, *Europhysics Letters*, 11 (1990) 179 
     
    5655title = "Polyelectrolyte with the RPA expression derived by Borue and Erukhimovich" 
    5756description = """ 
    58             Evaluate 
    59             F(x) = K 1/(4 pi Lb (alpha)^(2)) (q^(2)+k2)/(1+(r02)^(2)) 
    60                  (q^(2)+k2) (q^(2)-(12 h C/b^(2))) 
     57    Evaluate 
     58    F(x) = K 1/(4 pi Lb (alpha)^(2)) (q^(2)+k2)/(1+(r02)^(2)) 
     59         (q^(2)+k2) (q^(2)-(12 h C/b^(2))) 
    6160 
    62             has 3 internal parameters : 
    63                    The inverse Debye Length: K2 = 4 pi Lb (2 Cs+alpha C) 
    64                    r02 =1/alpha/Ca^(0.5) (B/(48 pi Lb)^(0.5)) 
    65                    Ca = 6.022136e-4 C 
    66             """ 
     61    has 3 internal parameters : 
     62           The inverse Debye Length: K2 = 4 pi Lb (2 Cs+alpha C) 
     63           r02 =1/alpha/Ca^(0.5) (B/(48 pi Lb)^(0.5)) 
     64           Ca = 6.022136e-4 C 
     65    """ 
    6766category = "shape-independent" 
    6867 
    69 # pylint: disable=bad-whitespace, line-too-long 
    70 #   ["name", "units", default, [lower, upper], "type", "description"], 
     68# pylint: disable=bad-whitespace,line-too-long 
     69#   ["name",                  "units", default, [lower, upper], "type", "description"], 
    7170parameters = [ 
    72     ["contrast_factor",       "barns",   10.0,  [-inf, inf], "", "Contrast factor of the polymer"], 
    73     ["bjerrum_length",        "Ang",      7.1,  [0, inf],    "", "Bjerrum length"], 
    74     ["virial_param",          "1/Ang^2", 12.0,  [-inf, inf], "", "Virial parameter"], 
    75     ["monomer_length",        "Ang",     10.0,  [0, inf],    "", "Monomer length"], 
    76     ["salt_concentration",    "mol/L",    0.0,  [-inf, inf], "", "Concentration of monovalent salt"], 
    77     ["ionization_degree",     "",         0.05, [0, inf],    "", "Degree of ionization"], 
    78     ["polymer_concentration", "mol/L",    0.7,  [0, inf],    "", "Polymer molar concentration"], 
     71    ["contrast_factor",       "barns",    10.0,  [-inf, inf], "", "Contrast factor of the polymer"], 
     72    ["bjerrum_length",        "Ang",       7.1,  [0, inf],    "", "Bjerrum length"], 
     73    ["virial_param",          "1/Ang^2",  12.0,  [-inf, inf], "", "Virial parameter"], 
     74    ["monomer_length",        "Ang",      10.0,  [0, inf],    "", "Monomer length"], 
     75    ["salt_concentration",    "mol/L",     0.0,  [-inf, inf], "", "Concentration of monovalent salt"], 
     76    ["ionization_degree",     "",          0.05, [0, inf],    "", "Degree of ionization"], 
     77    ["polymer_concentration", "mol/L",     0.7,  [0, inf],    "", "Polymer molar concentration"], 
    7978    ] 
    80 # pylint: enable=bad-whitespace, line-too-long 
     79# pylint: enable=bad-whitespace,line-too-long 
    8180 
    8281 
    8382def Iq(q, 
    84        contrast_factor=10.0, 
    85        bjerrum_length=7.1, 
    86        virial_param=12.0, 
    87        monomer_length=10.0, 
    88        salt_concentration=0.0, 
    89        ionization_degree=0.05, 
    90        polymer_concentration=0.7): 
    91     """ 
    92     :param q:                     Input q-value 
    93     :param contrast_factor:       Contrast factor of the polymer 
    94     :param bjerrum_length:        Bjerrum length 
    95     :param virial_param:          Virial parameter 
    96     :param monomer_length:        Monomer length 
    97     :param salt_concentration:    Concentration of monovalent salt 
    98     :param ionization_degree:     Degree of ionization 
    99     :param polymer_concentration: Polymer molar concentration 
    100     :return:                      1-D intensity 
    101     """ 
     83       contrast_factor, 
     84       bjerrum_length, 
     85       virial_param, 
     86       monomer_length, 
     87       salt_concentration, 
     88       ionization_degree, 
     89       polymer_concentration): 
    10290 
    10391    concentration = polymer_concentration * 6.022136e-4 
    10492 
    10593    k_square = 4.0 * pi * bjerrum_length * (2*salt_concentration + 
    106                                             ionization_degree * concentration) 
     94            ionization_degree * concentration) 
    10795 
    10896    r0_square = 1.0/ionization_degree/sqrt(concentration) * \ 
    109                 (monomer_length/sqrt((48.0*pi*bjerrum_length))) 
     97            (monomer_length/sqrt((48.0*pi*bjerrum_length))) 
    11098 
    11199    term1 = contrast_factor/(4.0 * pi * bjerrum_length * 
    112                              ionization_degree**2) * (q**2 + k_square) 
     100        ionization_degree**2) * (q**2 + k_square) 
    113101 
    114102    term2 = 1.0 + r0_square**2 * (q**2 + k_square) * \ 
     
    121109 
    122110def Iqxy(qx, qy, *args): 
    123     """ 
    124     :param qx:   Input q_x-value 
    125     :param qy:   Input q_y-value 
    126     :param args: Remaining arguments 
    127     :return:     2D-Intensity 
    128     """ 
    129     iq = Iq(sqrt(qx**2 + qy**2), *args) 
    130     return iq 
     111    return Iq(sqrt(qx**2 + qy**2), *args) 
    131112 
    132113Iqxy.vectorized = True  # Iqxy accepts an array of qx, qy values 
     
    153134               polymer_concentration='c') 
    154135 
     136# pylint: disable=bad-whitespace 
    155137tests = [ 
    156  
    157138    # Accuracy tests based on content in test/utest_other_models.py 
    158139    [{'contrast_factor':       10.0, 
     
    195176     }, 200., 1.80664667511e-06], 
    196177    ] 
     178# pylint: enable=bad-whitespace 
  • sasmodels/models/flexible_cylinder.py

    r168052c rf94d8a2  
    11r""" 
    2 This model provides the form factor, $P(q)$, for a flexible cylinder 
    3 where the form factor is normalized by the volume of the cylinder. 
     2This model provides the form factor, $P(q)$, for a flexible cylinder where the form factor 
     3is normalized by the volume of the cylinder. 
    44**Inter-cylinder interactions are NOT provided for.** 
    55 
     
    88    P(q) = \text{scale} \left<F^2\right>/V + \text{background} 
    99 
    10 where the averaging $\left<\ldots\right>$ is applied only for the 1D 
    11 calculation 
     10where the averaging $\left<\ldots\right>$ is applied only for the 1D calculation 
    1211 
    13 The 2D scattering intensity is the same as 1D, regardless of the orientation of 
    14 the q vector which is defined as 
     12The 2D scattering intensity is the same as 1D, regardless of the orientation of the q vector which is defined as 
    1513 
    1614.. math:: 
     
    2422 
    2523 
    26 The chain of contour length, $L$, (the total length) can be described as a 
    27 chain of some number of locally stiff segments of length $l_p$, the persistence 
    28 length (the length along the cylinder over which the flexible cylinder can be 
    29 considered a rigid rod). 
     24The chain of contour length, $L$, (the total length) can be described as a chain of some number of 
     25locally stiff segments of length $l_p$, the persistence length (the length along the cylinder over 
     26which the flexible cylinder can be considered a rigid rod). 
    3027The Kuhn length $(b = 2*l_p)$ is also used to describe the stiffness of a chain. 
    3128 
    3229The returned value is in units of $cm^-1$, on absolute scale. 
    3330 
    34 In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder 
    35 and solvent respectively. 
     31In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder and solvent respectively. 
    3632 
    3733 
     
    4137 
    4238 
    43 Our model uses the form factor calculations implemented in a c-library provided 
    44 by the NIST Center for Neutron Research (Kline, 2006). 
     39Our model uses the form factor calculations implemented in a c-library provided by the NIST Center 
     40for Neutron Research (Kline, 2006). 
    4541 
    4642 
     
    4945    'Method 3 With Excluded Volume' is used. 
    5046    The model is a parametrization of simulations of a discrete representation 
    51     of the worm-like chain model of Kratky and Porod applied in the 
    52     pseudocontinuous limit. 
     47    of the worm-like chain model of Kratky and Porod applied in the pseudocontinuous limit. 
    5348    See equations (13,26-27) in the original reference for the details. 
    5449 
     
    5651---------- 
    5752 
    58 J S Pedersen and P Schurtenberger. *Scattering functions of semiflexible 
    59 polymers with and without excluded volume effects.* Macromolecules, 
    60 29 (1996) 7602-7612 
     53J S Pedersen and P Schurtenberger. *Scattering functions of semiflexible polymers with and 
     54without excluded volume effects.* Macromolecules, 29 (1996) 7602-7612 
    6155 
    6256Correction of the formula can be found in 
    6357 
    64 W R Chen, P D Butler and L J Magid, *Incorporating Intermicellar Interactions 
    65 in the Fitting of SANS Data from Cationic Wormlike Micelles.* Langmuir, 
    66 22(15) 2006 6539-6548 
     58W R Chen, P D Butler and L J Magid, *Incorporating Intermicellar Interactions in the Fitting of 
     59SANS Data from Cationic Wormlike Micelles.* Langmuir, 22(15) 2006 6539-6548 
    6760""" 
    6861from numpy import inf 
    6962 
    7063name = "flexible_cylinder" 
    71 title = "Flexible cylinder where the form factor is normalized by the volume" \ 
    72         "of the cylinder." 
    73 description = """Note : scale and contrast=sld-solvent_sld are both 
    74                 multiplicative factors in the model and are perfectly 
    75                 correlated. One or both of these parameters must be held fixed 
     64title = "Flexible cylinder where the form factor is normalized by the volume of the cylinder." 
     65description = """Note : scale and contrast=sld-solvent_sld are both multiplicative factors in the 
     66                model and are perfectly correlated. One or 
     67                both of these parameters must be held fixed 
    7668                during model fitting. 
    7769              """ 
     
    7971category = "shape:cylinder" 
    8072 
    81 # pylint: disable=bad-whitespace, line-too-long 
    8273#             ["name", "units", default, [lower, upper], "type", "description"], 
    8374parameters = [ 
    84     ["length",      "Ang",       1000.0, [0, inf],    "volume", "Length of the flexible cylinder"], 
    85     ["kuhn_length", "Ang",        100.0, [0, inf],    "volume", "Kuhn length of the flexible cylinder"], 
    86     ["radius",      "Ang",         20.0, [0, inf],    "volume", "Radius of the flexible cylinder"], 
    87     ["sld",         "1e-6/Ang^2",   1.0, [-inf, inf], "",       "Cylinder scattering length density"], 
    88     ["solvent_sld", "1e-6/Ang^2",   6.3, [-inf, inf], "",       "Solvent scattering length density"], 
    89     ] 
    90 # pylint: enable=bad-whitespace, line-too-long 
     75              ["length",      "Ang",       1000.0, [0, inf],    "volume", "Length of the flexible cylinder"], 
     76              ["kuhn_length", "Ang",        100.0, [0, inf],    "volume", "Kuhn length of the flexible cylinder"], 
     77              ["radius",      "Ang",         20.0, [0, inf],    "volume", "Radius of the flexible cylinder"], 
     78              ["sld",         "1e-6/Ang^2",   1.0, [-inf, inf], "",       "Cylinder scattering length density"], 
     79              ["solvent_sld", "1e-6/Ang^2",   6.3, [-inf, inf], "",       "Solvent scattering length density"], 
     80             ] 
     81 
    9182source = ["lib/J1.c", "lib/wrc_cyl.c", "flexible_cylinder.c"] 
    9283 
     
    10394 
    10495tests = [ 
    105     # Accuracy tests based on content in test/utest_other_models.py 
    106     # Currently fails in OCL 
    107     # [{'length':     1000.0, 
    108     #  'kuhn_length': 100.0, 
    109     #  'radius':       20.0, 
    110     #  'sld':           1.0, 
    111     #  'solvent_sld':   6.3, 
    112     #  'background':    0.0001, 
    113     #  }, 0.001, 3509.2187], 
     96         # Accuracy tests based on content in test/utest_other_models.py 
     97         # Currently fails in OCL 
     98         # [{'length':     1000.0, 
     99         #  'kuhn_length': 100.0, 
     100         #  'radius':       20.0, 
     101         #  'sld':           1.0, 
     102         #  'solvent_sld':   6.3, 
     103         #  'background':    0.0001, 
     104         #  }, 0.001, 3509.2187], 
    114105 
    115     # Additional tests with larger range of parameters 
    116     [{'length':    1000.0, 
    117       'kuhn_length': 100.0, 
    118       'radius':       20.0, 
    119       'sld':           1.0, 
    120       'solvent_sld':   6.3, 
    121       'background':    0.0001, 
    122      }, 1.0, 0.000595345], 
    123     [{'length':        10.0, 
    124       'kuhn_length': 800.0, 
    125       'radius':        2.0, 
    126       'sld':           6.0, 
    127       'solvent_sld':  12.3, 
    128       'background':    0.001, 
    129      }, 0.1, 1.55228], 
    130     [{'length':        100.0, 
    131       'kuhn_length': 800.0, 
    132       'radius':       50.0, 
    133       'sld':           0.1, 
    134       'solvent_sld':   5.1, 
    135       'background':    0.0, 
    136      }, 1.0, 0.000938456] 
    137     ] 
     106         # Additional tests with larger range of parameters 
     107         [{'length':     1000.0, 
     108           'kuhn_length': 100.0, 
     109           'radius':       20.0, 
     110           'sld':           1.0, 
     111           'solvent_sld':   6.3, 
     112           'background':    0.0001, 
     113           }, 1.0, 0.000595345], 
     114        [{'length':        10.0, 
     115           'kuhn_length': 800.0, 
     116           'radius':        2.0, 
     117           'sld':           6.0, 
     118           'solvent_sld':  12.3, 
     119           'background':    0.001, 
     120           }, 0.1, 1.55228], 
     121       [{'length':        100.0, 
     122           'kuhn_length': 800.0, 
     123           'radius':       50.0, 
     124           'sld':           0.1, 
     125           'solvent_sld':   5.1, 
     126           'background':    0.0, 
     127           }, 1.0, 0.000938456] 
     128         ] 
    138129 
  • sasmodels/models/gauss_lorentz_gel.py

    r168052c r07a6700  
    4242---------- 
    4343 
    44 G Evmenenko, E Theunissen, K Mortensen, H Reynaers, *Polymer*, 
    45 42 (2001) 2907-2913 
     44G Evmenenko, E Theunissen, K Mortensen, H Reynaers, *Polymer*, 42 (2001) 2907-2913 
    4645 
    4746""" 
    4847 
    49 from numpy import inf, sqrt, exp 
     48from numpy import inf, pi, sqrt, exp 
    5049 
    5150name = "gauss_lorentz_gel" 
     
    6463            """ 
    6564category = "shape-independent" 
    66 # pylint: disable=bad-whitespace, line-too-long 
     65 
    6766#            ["name", "units", default, [lower, upper], "type", "description"], 
    6867parameters = [["gauss_scale_factor",   "",    100.0,  [-inf, inf], "", "Gauss scale factor"], 
     
    7069              ["lorentz_scale_factor", "",     50.0,  [-inf, inf], "", "Lorentzian scale factor"], 
    7170              ["dynamic_cor_length",   "Ang",  20.0,  [0, inf],    "", "Dynamic correlation length"], 
    72              ] 
    73 # pylint: enable=bad-whitespace, line-too-long 
     71              ] 
     72 
    7473 
    7574def Iq(q, 
    76        gauss_scale_factor=100.0, 
    77        static_cor_length=100.0, 
    78        lorentz_scale_factor=50.0, 
    79        dynamic_cor_length=20.0): 
    80     """ 
     75       gauss_scale_factor, 
     76       static_cor_length, 
     77       lorentz_scale_factor, 
     78       dynamic_cor_length): 
    8179 
    82     :param q:                    Input q-value 
    83     :param gauss_scale_factor:   Gauss scale factor 
    84     :param static_cor_length:    Static correlation length 
    85     :param lorentz_scale_factor: Lorentzian scale factor 
    86     :param dynamic_cor_length:   Dynamic correlation length 
    87     :return:                     1-D intensity 
    88     """ 
     80        term1 = gauss_scale_factor *\ 
     81                exp(-1.0*q*q*static_cor_length*static_cor_length/2.0) 
     82        term2 = lorentz_scale_factor /\ 
     83                (1.0+(q*dynamic_cor_length)*(q*dynamic_cor_length)) 
    8984 
    90     term1 = gauss_scale_factor *\ 
    91             exp(-1.0*q*q*static_cor_length*static_cor_length/2.0) 
    92     term2 = lorentz_scale_factor /\ 
    93             (1.0+(q*dynamic_cor_length)*(q*dynamic_cor_length)) 
    94  
    95     return term1 + term2 
     85        return term1 + term2 
    9686 
    9787Iq.vectorized = True  # Iq accepts an array of q values 
     
    9989 
    10090def Iqxy(qx, qy, *args): 
    101     """ 
    102     :param qx:   Input q_x-value 
    103     :param qy:   Input q_y-value 
    104     :param args: Remaining aruments 
    105     :return:     2-D intensity 
    106     """ 
     91        iq = Iq(sqrt(qx**2 + qy**2), *args) 
    10792 
    108     return Iq(sqrt(qx**2 + qy**2), *args) 
     93        return iq 
    10994 
    11095Iqxy.vectorized = True  # Iqxy accepts an array of qx, qy values 
     
    126111 
    127112tests = [ 
     113         # Accuracy tests based on content in test/utest_extra_models.py 
     114         [{'gauss_scale_factor':  100.0, 
     115           'static_cor_length':   100.0, 
     116           'lorentz_scale_factor': 50.0, 
     117           'dynamic_cor_length':   20.0, 
     118           }, 0.001, 149.481], 
    128119 
    129     # Accuracy tests based on content in test/utest_extra_models.py 
    130     [{'gauss_scale_factor':  100.0, 
    131       'static_cor_length':   100.0, 
    132       'lorentz_scale_factor': 50.0, 
    133       'dynamic_cor_length':   20.0, 
    134      }, 0.001, 149.481], 
     120         [{'gauss_scale_factor':  100.0, 
     121           'static_cor_length':   100.0, 
     122           'lorentz_scale_factor': 50.0, 
     123           'dynamic_cor_length':   20.0, 
     124           }, 0.105363, 9.1903], 
    135125 
    136     [{'gauss_scale_factor':  100.0, 
    137       'static_cor_length':   100.0, 
    138       'lorentz_scale_factor': 50.0, 
    139       'dynamic_cor_length':   20.0, 
    140      }, 0.105363, 9.1903], 
     126         [{'gauss_scale_factor':  100.0, 
     127           'static_cor_length':   100.0, 
     128           'lorentz_scale_factor': 50.0, 
     129           'dynamic_cor_length':   20.0, 
     130           }, 0.441623, 0.632811], 
    141131 
    142     [{'gauss_scale_factor':  100.0, 
    143       'static_cor_length':   100.0, 
    144       'lorentz_scale_factor': 50.0, 
    145       'dynamic_cor_length':   20.0, 
    146      }, 0.441623, 0.632811], 
     132         # Additional tests with larger range of parameters 
     133         [{'gauss_scale_factor':  10.0, 
     134           'static_cor_length':  100.0, 
     135           'lorentz_scale_factor': 3.0, 
     136           'dynamic_cor_length':   1.0, 
     137           }, 0.1, 2.9702970297], 
    147138 
    148     # Additional tests with larger range of parameters 
    149     [{'gauss_scale_factor':  10.0, 
    150       'static_cor_length':  100.0, 
    151       'lorentz_scale_factor': 3.0, 
    152       'dynamic_cor_length':   1.0, 
    153      }, 0.1, 2.9702970297], 
     139         [{'gauss_scale_factor':  10.0, 
     140           'static_cor_length':  100.0, 
     141           'lorentz_scale_factor': 3.0, 
     142           'dynamic_cor_length':   1.0, 
     143           'background':         100.0 
     144           }, 5.0, 100.115384615], 
    154145 
    155     [{'gauss_scale_factor':  10.0, 
    156       'static_cor_length':  100.0, 
    157       'lorentz_scale_factor': 3.0, 
    158       'dynamic_cor_length':   1.0, 
    159       'background':         100.0 
    160      }, 5.0, 100.115384615], 
    161  
    162     [{'gauss_scale_factor':  10.0, 
    163       'static_cor_length':  100.0, 
    164       'lorentz_scale_factor': 3.0, 
    165       'dynamic_cor_length':   1.0, 
    166      }, 200., 7.49981250469e-05], 
    167     ] 
     146         [{'gauss_scale_factor':  10.0, 
     147           'static_cor_length':  100.0, 
     148           'lorentz_scale_factor': 3.0, 
     149           'dynamic_cor_length':   1.0, 
     150           }, 200., 7.49981250469e-05], 
     151         ] 
  • sasmodels/models/gel_fit.py

    r168052c r513efc5  
    77in the position of the polymer chains that ensure thermodynamic equilibrium, 
    88and a longer distance (denoted here as $a2$ ) needed to account for the static 
    9 accumulations of polymer pinned down by junction points or clusters of such 
    10 points. The latter is derived from a simple Guinier function. 
     9accumulations of polymer pinned down by junction points or clusters of such points. 
     10The latter is derived from a simple Guinier function. 
    1111 
    1212 
     
    4040--------- 
    4141 
    42 Mitsuhiro Shibayama, Toyoichi Tanaka, Charles C Han, 
    43 *J. Chem. Phys.* 1992, 97 (9), 6829-6841 
     42Mitsuhiro Shibayama, Toyoichi Tanaka, Charles C Han, J. Chem. Phys. 1992, 97 (9), 
     436829-6841 
    4444 
    4545Simon Mallam, Ferenc Horkay, Anne-Marie Hecht, Adrian R Rennie, Erik Geissler, 
    46 *Macromolecules* 1991, 24, 543-548 
     46Macromolecules 1991, 24, 543-548 
    4747 
    4848""" 
     
    6262category = "shape-independent" 
    6363 
    64 # pylint: disable=bad-whitespace, line-too-long 
    6564#             ["name", "units", default, [lower, upper], "type","description"], 
    6665parameters = [["guinier_scale",    "cm^{-1}",   1.7, [-inf, inf], "", "Guinier length scale"], 
     
    6968              ["fractal_exp",      "",          2.0, [0, inf],    "", "Fractal exponent"], 
    7069              ["cor_length",       "Ang",      16.0, [0, inf],    "", "Correlation length"] 
    71              ] 
    72 # pylint: enable=bad-whitespace, line-too-long 
     70              ] 
     71 
    7372 
    7473source = ["gel_fit.c"] 
     
    9392           'fractal_exp': 10.0, 
    9493           'cor_length': 20.0 
    95           }, 0.1, 0.716532], 
     94           }, 0.1, 0.716532], 
    9695 
    9796         [{'guinier_scale': 4.0, 
     
    101100           'cor_length': 20.0, 
    102101           'background': 20.0, 
    103           }, 5.0, 20.1224653026], 
    104         ] 
     102           }, 5.0, 20.1224653026], 
     103 
     104         ] 
  • sasmodels/models/mass_fractal.py

    r168052c r87edabf  
    5252--------- 
    5353 
    54 D Mildner and P Hall, *J. Phys. D: Appl. Phys.*, 
    55 19 (1986) 1535-1545 Equation(9) 
     54D Mildner and P Hall, *J. Phys. D: Appl. Phys.*,  19 (1986) 1535-1545 Equation(9) 
    5655 
    5756 
     
    8079category = "shape-independent" 
    8180 
    82 # pylint: disable=bad-whitespace, line-too-long 
    8381#             ["name", "units", default, [lower, upper], "type","description"], 
    8482parameters = [["radius",        "Ang",  10.0, [0.0, inf], "", "Particle radius"], 
    8583              ["mass_dim",      "",      1.9, [1.0, 6.0], "", "Mass fractal dimension"], 
    8684              ["cutoff_length", "Ang", 100.0, [0.0, inf], "", "Cut-off length"], 
    87              ] 
    88 # pylint: enable=bad-whitespace, line-too-long 
     85              ] 
     86 
    8987 
    9088source = ["lib/sph_j1c.c", "lib/lanczos_gamma.c", "mass_fractal.c"] 
     
    10199 
    102100tests = [ 
     101         # Accuracy tests based on content in test/utest_other_models.py 
     102         [{'radius':         10.0, 
     103           'mass_dim':        1.9, 
     104           'cutoff_length': 100.0, 
     105           }, 0.05, 279.59322], 
    103106 
    104     # Accuracy tests based on content in test/utest_other_models.py 
    105     [{'radius':         10.0, 
    106       'mass_dim':        1.9, 
    107       'cutoff_length': 100.0, 
    108      }, 0.05, 279.59322], 
     107         # Additional tests with larger range of parameters 
     108         [{'radius':        2.0, 
     109           'mass_dim':      3.3, 
     110           'cutoff_length': 1.0, 
     111           }, 0.5, 1.29016774904], 
    109112 
    110     # Additional tests with larger range of parameters 
    111     [{'radius':        2.0, 
    112       'mass_dim':      3.3, 
    113       'cutoff_length': 1.0, 
    114      }, 0.5, 1.29016774904], 
     113         [{'radius':        1.0, 
     114           'mass_dim':      1.3, 
     115           'cutoff_length': 1.0, 
     116           'background':    0.8, 
     117           }, 0.001, 1.69747015932], 
    115118 
    116     [{'radius':        1.0, 
    117       'mass_dim':      1.3, 
    118       'cutoff_length': 1.0, 
    119       'background':    0.8, 
    120      }, 0.001, 1.69747015932], 
    121  
    122     [{'radius':        1.0, 
    123       'mass_dim':      2.3, 
    124       'cutoff_length': 1.0, 
    125       'scale':        10.0, 
    126      }, 0.051, 11.6227966145], 
    127     ] 
     119         [{'radius':        1.0, 
     120           'mass_dim':      2.3, 
     121           'cutoff_length': 1.0, 
     122           'scale':        10.0, 
     123           }, 0.051, 11.6227966145], 
     124         ] 
  • sasmodels/models/mass_surface_fractal.py

    r168052c r07a6700  
    5454P Schmidt, *J Appl. Cryst.*, 24 (1991) 414-435 Equation(19) 
    5555 
    56 A J Hurd, D W Schaefer, J E Martin, *Phys. Rev. A*, 
    57 35 (1987) 2361-2364 Equation(2) 
     56A J Hurd, D W Schaefer, J E Martin, *Phys. Rev. A*, 35 (1987) 2361-2364 Equation(2) 
    5857 
    5958""" 
     
    8079category = "shape-independent" 
    8180 
    82 # pylint: disable=bad-whitespace, line-too-long 
    8381#             ["name", "units", default, [lower, upper], "type","description"], 
    8482parameters = [["mass_dim",      "",    1.8, [1e-16, 6.0], "", 
     
    9088              ["primary_rg", "Ang", 4000.,  [0.0, inf], "", 
    9189               "Primary particle radius of gyration"], 
    92              ] 
    93 # pylint: enable=bad-whitespace, line-too-long 
     90              ] 
     91 
    9492 
    9593source = ["mass_surface_fractal.c"] 
     
    109107 
    110108tests = [ 
     109         # Accuracy tests based on content in test/utest_other_models.py 
     110         [{'mass_dim':      1.8, 
     111           'surface_dim':   2.3, 
     112           'cluster_rg':   86.7, 
     113           'primary_rg': 4000.0, 
     114           }, 0.05, 1.77537e-05], 
    111115 
    112     # Accuracy tests based on content in test/utest_other_models.py 
    113     [{'mass_dim':      1.8, 
    114       'surface_dim':   2.3, 
    115       'cluster_rg':   86.7, 
    116       'primary_rg': 4000.0, 
    117      }, 0.05, 1.77537e-05], 
     116         # Additional tests with larger range of parameters 
     117         [{'mass_dim':      3.3, 
     118           'surface_dim':   1.0, 
     119           'cluster_rg':   90.0, 
     120           'primary_rg': 4000.0, 
     121           }, 0.001, 0.18462699016], 
    118122 
    119     # Additional tests with larger range of parameters 
    120     [{'mass_dim':      3.3, 
    121       'surface_dim':   1.0, 
    122       'cluster_rg':   90.0, 
    123       'primary_rg': 4000.0, 
    124      }, 0.001, 0.18462699016], 
     123         [{'mass_dim':      1.3, 
     124           'surface_dim':   1.0, 
     125           'cluster_rg':   90.0, 
     126           'primary_rg': 2000.0, 
     127           'background':    0.8, 
     128           }, 0.001, 1.16539753641], 
    125129 
    126     [{'mass_dim':      1.3, 
    127       'surface_dim':   1.0, 
    128       'cluster_rg':   90.0, 
    129       'primary_rg': 2000.0, 
    130       'background':    0.8, 
    131      }, 0.001, 1.16539753641], 
    132  
    133     [{'mass_dim':      2.3, 
    134       'surface_dim':   1.0, 
    135       'cluster_rg':   90.0, 
    136       'primary_rg': 1000.0, 
    137       'scale':        10.0, 
    138      }, 0.051, 0.000169548800377], 
    139     ] 
     130         [{'mass_dim':      2.3, 
     131           'surface_dim':   1.0, 
     132           'cluster_rg':   90.0, 
     133           'primary_rg': 1000.0, 
     134           'scale':        10.0, 
     135           }, 0.051, 0.000169548800377], 
     136         ] 
  • sasmodels/models/polymer_excl_volume.py

    r168052c r07a6700  
    113113category = "shape-independent" 
    114114 
    115 # pylint: disable=bad-whitespace, line-too-long 
    116115#             ["name", "units", default, [lower, upper], "type", "description"], 
    117116parameters = [["rg",        "Ang", 60.0, [0, inf],    "", "Radius of Gyration"], 
    118117              ["porod_exp", "",     3.0, [-inf, inf], "", "Porod exponent"], 
    119              ] 
    120 # pylint: enable=bad-whitespace, line-too-long 
     118              ] 
    121119 
    122120 
    123 def Iq(q, 
    124        rg=60.0, 
    125        porod_exp=3.0): 
     121def Iq(q, rg, porod_exp): 
     122 
    126123    """ 
    127124    :param q:         Input q-value (float or [float, float]) 
     
    134131    o2nu = 1.0/(2.0*nu) 
    135132 
    136     intensity = ((1.0/(nu*power(u, o2nu))) * 
    137                  (gamma(o2nu)*gammainc(o2nu, u) - 
     133    intensity = ((1.0/(nu*power(u, o2nu))) * (gamma(o2nu)*gammainc(o2nu, u) - 
    138134                  1.0/power(u, o2nu) * gamma(porod_exp) * 
    139135                  gammainc(porod_exp, u))) * (q > 0) + 1.0*(q <= 0) 
     
    145141 
    146142def Iqxy(qx, qy, *args): 
    147     """ 
    148     :param qx:   Input q_x-value 
    149     :param qy:   Input q_y-value 
    150     :param args: Remaining arguments 
    151     :return:     2D-Intensity 
    152     """ 
     143        iq = Iq(sqrt(qx**2 + qy**2), *args) 
    153144 
    154     return Iq(sqrt(qx**2 + qy**2), *args) 
     145        return iq 
    155146 
    156147Iqxy.vectorized = True  # Iqxy accepts an array of qx, qy values 
     
    167158 
    168159tests = [ 
    169     # Accuracy tests based on content in test/polyexclvol_default_igor.txt 
    170     [{'rg': 60, 'porod_exp': 3.0}, 0.001, 0.998801], 
    171     [{'rg': 60, 'porod_exp': 3.0}, 0.105363, 0.0162751], 
    172     [{'rg': 60, 'porod_exp': 3.0}, 0.665075, 6.56261e-05], 
     160         # Accuracy tests based on content in test/polyexclvol_default_igor.txt 
     161         [{'rg': 60, 'porod_exp': 3.0}, 0.001, 0.998801], 
     162         [{'rg': 60, 'porod_exp': 3.0}, 0.105363, 0.0162751], 
     163         [{'rg': 60, 'porod_exp': 3.0}, 0.665075, 6.56261e-05], 
    173164 
    174     # Additional tests with larger range of parameters 
    175     [{'rg': 10, 'porod_exp': 4.0}, 0.1, 0.723436675809], 
    176     [{'rg': 2.2, 'porod_exp': 22.0, 'background': 100.0}, 5.0, 100.0], 
    177     [{'rg': 1.1, 'porod_exp': 1, 'background': 10.0, 'scale': 1.25}, 
    178      20000., 10.0000712097] 
    179     ] 
     165         # Additional tests with larger range of parameters 
     166         [{'rg': 10, 'porod_exp': 4.0}, 0.1, 0.723436675809], 
     167         [{'rg': 2.2, 'porod_exp': 22.0, 'background': 100.0}, 5.0, 100.0], 
     168         [{'rg': 1.1, 'porod_exp': 1, 'background': 10.0, 'scale': 1.25}, 
     169         20000., 10.0000712097] 
     170         ] 
  • sasmodels/models/star_polymer.py

    r168052c r55b283e8  
    5555        """ 
    5656category = "shape-independent" 
    57 # pylint: disable=bad-whitespace, line-too-long 
     57 
    5858#             ["name", "units", default, [lower, upper], "type","description"], 
    5959parameters = [["radius2", "Ang", 100.0, [0.0, inf], "", "Ensemble radius of gyration squared of an arm"], 
    6060              ["arms",    "",      3,   [1.0, 6.0], "", "Number of arms in the model"], 
    61              ] 
    62 # pylint: enable=bad-whitespace, line-too-long 
     61              ] 
     62 
    6363 
    6464source = ["star_polymer.c"] 
     
    7575tests = [[{'radius2': 2.0, 
    7676           'arms':    3.3, 
    77           }, 0.5, 0.850646091108], 
     77           }, 0.5, 0.850646091108], 
    7878 
    7979         [{'radius2':    1.0, 
    8080           'arms':       2.0, 
    8181           'background': 1.8, 
    82           }, 1.0, 2.53575888234], 
    83         ] 
     82           }, 1.0, 2.53575888234], 
     83         ] 
  • sasmodels/models/surface_fractal.py

    r168052c r07a6700  
    8080category = "shape-independent" 
    8181 
    82 # pylint: disable=bad-whitespace, line-too-long 
    8382#             ["name", "units", default, [lower, upper], "type","description"], 
    8483parameters = [["radius",        "Ang", 10.0, [0, inf],   "", 
     
    8887              ["cutoff_length", "Ang", 500., [0.0, inf], "", 
    8988               "Cut-off Length"], 
    90              ] 
    91 # pylint: enable=bad-whitespace, line-too-long 
     89              ] 
     90 
    9291 
    9392source = ["lib/sph_j1c.c", "lib/lanczos_gamma.c", "surface_fractal.c"] 
     
    102101 
    103102tests = [ 
    104     # Accuracy tests based on content in test/utest_other_models.py 
    105     [{'radius': 10.0, 
    106       'surface_dim': 2.0, 
    107       'cutoff_length': 500.0, 
    108      }, 0.05, 301428.65916], 
     103         # Accuracy tests based on content in test/utest_other_models.py 
     104         [{'radius': 10.0, 'surface_dim': 2.0, 'cutoff_length': 500.0, 
     105           }, 0.05, 301428.65916], 
    109106 
    110     # Additional tests with larger range of parameters 
    111     [{'radius': 1.0, 
    112       'surface_dim': 1.0, 
    113       'cutoff_length': 10.0, 
    114      }, 0.332070182643, 1125.00321004], 
     107         # Additional tests with larger range of parameters 
     108         [{'radius': 1.0, 'surface_dim': 1.0, 'cutoff_length': 10.0, 
     109           }, 0.332070182643, 1125.00321004], 
    115110 
    116     [{'radius': 3.5, 
    117       'surface_dim': 0.1, 
    118       'cutoff_length': 30.0, 
    119       'background': 0.01, 
    120      }, 5.0, 0.00999998891322], 
     111         [{'radius': 3.5, 'surface_dim': 0.1, 'cutoff_length': 30.0, 
     112           'background': 0.01, 
     113           }, 5.0, 0.00999998891322], 
    121114 
    122     [{'radius': 3.0, 
    123       'surface_dim': 1.0, 
    124       'cutoff_length': 33.0, 
    125       'scale': 0.1, 
    126      }, 0.51, 2.50020147004], 
    127     ] 
     115         [{'radius': 3.0, 'surface_dim': 1.0, 'cutoff_length': 33.0, 
     116           'scale': 0.1, 
     117           }, 0.51, 2.50020147004], 
     118         ] 
  • sasmodels/models/two_lorentzian.py

    r168052c r07a6700  
    5454category = "shape-independent" 
    5555 
    56 # pylint: disable=bad-whitespace, line-too-long 
    5756#            ["name", "units", default, [lower, upper], "type", "description"], 
    58 parameters = [["lorentz_scale_1",  "",     10.0, [-inf, inf], "", "First power law scale factor"], 
    59               ["lorentz_length_1", "Ang", 100.0, [-inf, inf], "", "First Lorentzian screening length"], 
    60               ["lorentz_exp_1",    "",      3.0, [-inf, inf], "", "First exponent of power law"], 
    61               ["lorentz_scale_2",  "",      1.0, [-inf, inf], "", "Second scale factor for broad Lorentzian peak"], 
    62               ["lorentz_length_2", "Ang",  10.0, [-inf, inf], "", "Second Lorentzian screening length"], 
    63               ["lorentz_exp_2",    "",      2.0, [-inf, inf], "", "Second exponent of power law"], 
    64              ] 
    65 # pylint: enable=bad-whitespace, line-too-long 
     57parameters = [["lorentz_scale_1",  "",     10.0, [-inf, inf], "", 
     58               "First power law scale factor"], 
     59              ["lorentz_length_1", "Ang", 100.0, [-inf, inf], "", 
     60               "First Lorentzian screening length"], 
     61              ["lorentz_exp_1",    "",      3.0, [-inf, inf], "", 
     62               "First exponent of power law"], 
     63              ["lorentz_scale_2",  "",      1.0, [-inf, inf], "", 
     64               "Second scale factor for broad Lorentzian peak"], 
     65              ["lorentz_length_2", "Ang",  10.0, [-inf, inf], "", 
     66               "Second Lorentzian screening length"], 
     67              ["lorentz_exp_2",    "",      2.0, [-inf, inf], "", 
     68               "Second exponent of power law"], 
     69              ] 
    6670 
    6771 
    6872def Iq(q, 
    69        lorentz_scale_1=10.0, 
    70        lorentz_length_1=100.0, 
    71        lorentz_exp_1=3.0, 
    72        lorentz_scale_2=1.0, 
    73        lorentz_length_2=10.0, 
    74        lorentz_exp_2=2.0): 
     73       lorentz_scale_1, 
     74       lorentz_length_1, 
     75       lorentz_exp_1, 
     76       lorentz_scale_2, 
     77       lorentz_length_2, 
     78       lorentz_exp_2): 
    7579 
    7680    """ 
     
    8488    :return:                    Calculated intensity 
    8589    """ 
    86 # pylint: disable=bad-whitespace 
     90 
    8791    intensity  = lorentz_scale_1/(1.0 + 
    8892                                  power(q*lorentz_length_1, lorentz_exp_1)) 
    8993    intensity += lorentz_scale_2/(1.0 + 
    9094                                  power(q*lorentz_length_2, lorentz_exp_2)) 
    91 # pylint: enable=bad-whitespace 
    9295 
    9396    return intensity 
     
    97100 
    98101def Iqxy(qx, qy, *args): 
    99     """ 
    100     :param qx:   Input q_x-value 
    101     :param qy:   Input q_y-value 
    102     :param args: Remaining arguments 
    103     :return:     2D-Intensity 
    104     """ 
     102        iq = Iq(sqrt(qx**2 + qy**2), *args) 
    105103 
    106     return Iq(sqrt(qx**2 + qy**2), *args) 
     104        return iq 
    107105 
    108106Iqxy.vectorized = True  # Iqxy accepts an array of qx, qy values 
     
    110108 
    111109demo = dict(scale=1, background=0.1, 
    112             lorentz_scale_1=10, 
    113             lorentz_length_1=100.0, 
    114             lorentz_exp_1=3.0, 
    115             lorentz_scale_2=1, 
    116             lorentz_length_2=10, 
    117             lorentz_exp_2=2.0) 
     110            lorentz_scale_1=10, lorentz_length_1=100.0, lorentz_exp_1=3.0, 
     111            lorentz_scale_2=1,  lorentz_length_2=10,    lorentz_exp_2=2.0) 
    118112 
    119113oldname = "TwoLorentzianModel" 
    120114oldpars = dict(background='background', 
    121                lorentz_scale_1='scale_1', 
    122                lorentz_scale_2='scale_2', 
    123                lorentz_length_1='length_1', 
    124                lorentz_length_2='length_2', 
    125                lorentz_exp_1='exponent_1', 
    126                lorentz_exp_2='exponent_2') 
     115               lorentz_scale_1='scale_1',   lorentz_scale_2='scale_2', 
     116               lorentz_length_1='length_1', lorentz_length_2='length_2', 
     117               lorentz_exp_1='exponent_1',  lorentz_exp_2='exponent_2') 
    127118 
    128119tests = [ 
     120         # Accuracy tests based on content in test/utest_extra_models.py 
     121         [{'lorentz_scale_1':   10.0, 
     122           'lorentz_length_1': 100.0, 
     123           'lorentz_exp_1':      3.0, 
     124           'lorentz_scale_2':    1.0, 
     125           'lorentz_length_2':  10.0, 
     126           'lorentz_exp_2':      2.0, 
     127           'background':         0.1, 
     128           }, 0.001, 11.08991], 
    129129 
    130     # Accuracy tests based on content in test/utest_extra_models.py 
    131     [{'lorentz_scale_1':   10.0, 
    132       'lorentz_length_1': 100.0, 
    133       'lorentz_exp_1':      3.0, 
    134       'lorentz_scale_2':    1.0, 
    135       'lorentz_length_2':  10.0, 
    136       'lorentz_exp_2':      2.0, 
    137       'background':         0.1, 
    138      }, 0.001, 11.08991], 
     130         [{'lorentz_scale_1':   10.0, 
     131           'lorentz_length_1': 100.0, 
     132           'lorentz_exp_1':      3.0, 
     133           'lorentz_scale_2':    1.0, 
     134           'lorentz_length_2':  10.0, 
     135           'lorentz_exp_2':      2.0, 
     136           'background':         0.1, 
     137           }, 0.150141, 0.410245], 
    139138 
    140     [{'lorentz_scale_1':   10.0, 
    141       'lorentz_length_1': 100.0, 
    142       'lorentz_exp_1':      3.0, 
    143       'lorentz_scale_2':    1.0, 
    144       'lorentz_length_2':  10.0, 
    145       'lorentz_exp_2':      2.0, 
    146       'background':         0.1, 
    147      }, 0.150141, 0.410245], 
     139         [{'lorentz_scale_1':   10.0, 
     140           'lorentz_length_1': 100.0, 
     141           'lorentz_exp_1':      3.0, 
     142           'lorentz_scale_2':    1.0, 
     143           'lorentz_length_2':  10.0, 
     144           'lorentz_exp_2':      2.0, 
     145           'background':         0.1, 
     146           }, 0.442528, 0.148699], 
    148147 
    149     [{'lorentz_scale_1':   10.0, 
    150       'lorentz_length_1': 100.0, 
    151       'lorentz_exp_1':      3.0, 
    152       'lorentz_scale_2':    1.0, 
    153       'lorentz_length_2':  10.0, 
    154       'lorentz_exp_2':      2.0, 
    155       'background':         0.1, 
    156      }, 0.442528, 0.148699], 
     148         # Additional tests with larger range of parameters 
     149         [{'lorentz_scale_1':   10.0, 
     150           'lorentz_length_1': 100.0, 
     151           'lorentz_exp_1':      3.0, 
     152           'lorentz_scale_2':    1.0, 
     153           'lorentz_length_2':  10.0, 
     154           'lorentz_exp_2':      2.0, 
     155           }, 0.000332070182643, 10.9996228107], 
    157156 
    158     # Additional tests with larger range of parameters 
    159     [{'lorentz_scale_1':   10.0, 
    160       'lorentz_length_1': 100.0, 
    161       'lorentz_exp_1':      3.0, 
    162       'lorentz_scale_2':    1.0, 
    163       'lorentz_length_2':  10.0, 
    164       'lorentz_exp_2':      2.0, 
    165      }, 0.000332070182643, 10.9996228107], 
     157         [{'lorentz_scale_1':  0.0, 
     158           'lorentz_length_1': 0.0, 
     159           'lorentz_exp_1':    0.0, 
     160           'lorentz_scale_2':  0.0, 
     161           'lorentz_length_2': 0.0, 
     162           'lorentz_exp_2':    0.0, 
     163           'background':     100.0 
     164           }, 5.0, 100.0], 
    166165 
    167     [{'lorentz_scale_1':  0.0, 
    168       'lorentz_length_1': 0.0, 
    169       'lorentz_exp_1':    0.0, 
    170       'lorentz_scale_2':  0.0, 
    171       'lorentz_length_2': 0.0, 
    172       'lorentz_exp_2':    0.0, 
    173       'background':     100.0 
    174      }, 5.0, 100.0], 
    175  
    176     [{'lorentz_scale_1': 200.0, 
    177       'lorentz_length_1': 10.0, 
    178       'lorentz_exp_1':     0.1, 
    179       'lorentz_scale_2':   0.1, 
    180       'lorentz_length_2':  5.0, 
    181       'lorentz_exp_2':     2.0 
    182      }, 20000., 45.5659201896], 
    183     ] 
     166         [{'lorentz_scale_1': 200.0, 
     167           'lorentz_length_1': 10.0, 
     168           'lorentz_exp_1':     0.1, 
     169           'lorentz_scale_2':   0.1, 
     170           'lorentz_length_2':  5.0, 
     171           'lorentz_exp_2':     2.0 
     172           }, 20000., 45.5659201896], 
     173         ] 
Note: See TracChangeset for help on using the changeset viewer.