Changes in / [ed82794:190fc2b] in sasmodels
- Location:
- sasmodels/models
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/be_polyelectrolyte.py
r168052c r841753c 44 44 J F Joanny, L Leibler, *Journal de Physique*, 51 (1990) 545 45 45 46 A Moussaid, F Schosseler, J P Munch, S Candau, 47 *J. Journal de Physique II France*, 3 (1993) 573 46 A Moussaid, F Schosseler, J P Munch, S Candau, *J. Journal de Physique II France*, 3 (1993) 573 48 47 49 48 E Raphael, J F Joanny, *Europhysics Letters*, 11 (1990) 179 … … 56 55 title = "Polyelectrolyte with the RPA expression derived by Borue and Erukhimovich" 57 56 description = """ 58 59 60 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))) 61 60 62 63 64 65 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 """ 67 66 category = "shape-independent" 68 67 69 # pylint: disable=bad-whitespace, 70 # ["name", "units", default, [lower, upper], "type", "description"],68 # pylint: disable=bad-whitespace,line-too-long 69 # ["name", "units", default, [lower, upper], "type", "description"], 71 70 parameters = [ 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"], 79 78 ] 80 # pylint: enable=bad-whitespace, 79 # pylint: enable=bad-whitespace,line-too-long 81 80 82 81 83 82 def 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): 102 90 103 91 concentration = polymer_concentration * 6.022136e-4 104 92 105 93 k_square = 4.0 * pi * bjerrum_length * (2*salt_concentration + 106 94 ionization_degree * concentration) 107 95 108 96 r0_square = 1.0/ionization_degree/sqrt(concentration) * \ 109 97 (monomer_length/sqrt((48.0*pi*bjerrum_length))) 110 98 111 99 term1 = contrast_factor/(4.0 * pi * bjerrum_length * 112 100 ionization_degree**2) * (q**2 + k_square) 113 101 114 102 term2 = 1.0 + r0_square**2 * (q**2 + k_square) * \ … … 121 109 122 110 def 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) 131 112 132 113 Iqxy.vectorized = True # Iqxy accepts an array of qx, qy values … … 153 134 polymer_concentration='c') 154 135 136 # pylint: disable=bad-whitespace 155 137 tests = [ 156 157 138 # Accuracy tests based on content in test/utest_other_models.py 158 139 [{'contrast_factor': 10.0, … … 195 176 }, 200., 1.80664667511e-06], 196 177 ] 178 # pylint: enable=bad-whitespace -
sasmodels/models/flexible_cylinder.py
r168052c rf94d8a2 1 1 r""" 2 This model provides the form factor, $P(q)$, for a flexible cylinder 3 where the form factoris normalized by the volume of the cylinder.2 This model provides the form factor, $P(q)$, for a flexible cylinder where the form factor 3 is normalized by the volume of the cylinder. 4 4 **Inter-cylinder interactions are NOT provided for.** 5 5 … … 8 8 P(q) = \text{scale} \left<F^2\right>/V + \text{background} 9 9 10 where the averaging $\left<\ldots\right>$ is applied only for the 1D 11 calculation 10 where the averaging $\left<\ldots\right>$ is applied only for the 1D calculation 12 11 13 The 2D scattering intensity is the same as 1D, regardless of the orientation of 14 the q vector which is defined as 12 The 2D scattering intensity is the same as 1D, regardless of the orientation of the q vector which is defined as 15 13 16 14 .. math:: … … 24 22 25 23 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). 24 The chain of contour length, $L$, (the total length) can be described as a chain of some number of 25 locally stiff segments of length $l_p$, the persistence length (the length along the cylinder over 26 which the flexible cylinder can be considered a rigid rod). 30 27 The Kuhn length $(b = 2*l_p)$ is also used to describe the stiffness of a chain. 31 28 32 29 The returned value is in units of $cm^-1$, on absolute scale. 33 30 34 In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder 35 and solvent respectively. 31 In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder and solvent respectively. 36 32 37 33 … … 41 37 42 38 43 Our model uses the form factor calculations implemented in a c-library provided 44 by the NIST Centerfor Neutron Research (Kline, 2006).39 Our model uses the form factor calculations implemented in a c-library provided by the NIST Center 40 for Neutron Research (Kline, 2006). 45 41 46 42 … … 49 45 'Method 3 With Excluded Volume' is used. 50 46 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. 53 48 See equations (13,26-27) in the original reference for the details. 54 49 … … 56 51 ---------- 57 52 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 53 J S Pedersen and P Schurtenberger. *Scattering functions of semiflexible polymers with and 54 without excluded volume effects.* Macromolecules, 29 (1996) 7602-7612 61 55 62 56 Correction of the formula can be found in 63 57 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 58 W R Chen, P D Butler and L J Magid, *Incorporating Intermicellar Interactions in the Fitting of 59 SANS Data from Cationic Wormlike Micelles.* Langmuir, 22(15) 2006 6539-6548 67 60 """ 68 61 from numpy import inf 69 62 70 63 name = "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 64 title = "Flexible cylinder where the form factor is normalized by the volume of the cylinder." 65 description = """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 76 68 during model fitting. 77 69 """ … … 79 71 category = "shape:cylinder" 80 72 81 # pylint: disable=bad-whitespace, line-too-long82 73 # ["name", "units", default, [lower, upper], "type", "description"], 83 74 parameters = [ 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 91 82 source = ["lib/J1.c", "lib/wrc_cyl.c", "flexible_cylinder.c"] 92 83 … … 103 94 104 95 tests = [ 105 # Accuracy tests based on content in test/utest_other_models.py106 # Currently fails in OCL107 # [{'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], 114 105 115 # Additional tests with larger range of parameters116 [{'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 ] 138 129 -
sasmodels/models/gauss_lorentz_gel.py
r168052c r07a6700 42 42 ---------- 43 43 44 G Evmenenko, E Theunissen, K Mortensen, H Reynaers, *Polymer*, 45 42 (2001) 2907-2913 44 G Evmenenko, E Theunissen, K Mortensen, H Reynaers, *Polymer*, 42 (2001) 2907-2913 46 45 47 46 """ 48 47 49 from numpy import inf, sqrt, exp48 from numpy import inf, pi, sqrt, exp 50 49 51 50 name = "gauss_lorentz_gel" … … 64 63 """ 65 64 category = "shape-independent" 66 # pylint: disable=bad-whitespace, line-too-long 65 67 66 # ["name", "units", default, [lower, upper], "type", "description"], 68 67 parameters = [["gauss_scale_factor", "", 100.0, [-inf, inf], "", "Gauss scale factor"], … … 70 69 ["lorentz_scale_factor", "", 50.0, [-inf, inf], "", "Lorentzian scale factor"], 71 70 ["dynamic_cor_length", "Ang", 20.0, [0, inf], "", "Dynamic correlation length"], 72 ]73 # pylint: enable=bad-whitespace, line-too-long 71 ] 72 74 73 75 74 def 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): 81 79 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)) 89 84 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 96 86 97 87 Iq.vectorized = True # Iq accepts an array of q values … … 99 89 100 90 def 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) 107 92 108 return Iq(sqrt(qx**2 + qy**2), *args)93 return iq 109 94 110 95 Iqxy.vectorized = True # Iqxy accepts an array of qx, qy values … … 126 111 127 112 tests = [ 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], 128 119 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], 135 125 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], 141 131 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], 147 138 148 # Additional tests with larger range of parameters149 [{'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], 154 145 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 7 7 in the position of the polymer chains that ensure thermodynamic equilibrium, 8 8 and 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.9 accumulations of polymer pinned down by junction points or clusters of such points. 10 The latter is derived from a simple Guinier function. 11 11 12 12 … … 40 40 --------- 41 41 42 Mitsuhiro Shibayama, Toyoichi Tanaka, Charles C Han, 43 *J. Chem. Phys.* 1992, 97 (9),6829-684142 Mitsuhiro Shibayama, Toyoichi Tanaka, Charles C Han, J. Chem. Phys. 1992, 97 (9), 43 6829-6841 44 44 45 45 Simon Mallam, Ferenc Horkay, Anne-Marie Hecht, Adrian R Rennie, Erik Geissler, 46 *Macromolecules*1991, 24, 543-54846 Macromolecules 1991, 24, 543-548 47 47 48 48 """ … … 62 62 category = "shape-independent" 63 63 64 # pylint: disable=bad-whitespace, line-too-long65 64 # ["name", "units", default, [lower, upper], "type","description"], 66 65 parameters = [["guinier_scale", "cm^{-1}", 1.7, [-inf, inf], "", "Guinier length scale"], … … 69 68 ["fractal_exp", "", 2.0, [0, inf], "", "Fractal exponent"], 70 69 ["cor_length", "Ang", 16.0, [0, inf], "", "Correlation length"] 71 ]72 # pylint: enable=bad-whitespace, line-too-long 70 ] 71 73 72 74 73 source = ["gel_fit.c"] … … 93 92 'fractal_exp': 10.0, 94 93 'cor_length': 20.0 95 }, 0.1, 0.716532],94 }, 0.1, 0.716532], 96 95 97 96 [{'guinier_scale': 4.0, … … 101 100 'cor_length': 20.0, 102 101 'background': 20.0, 103 }, 5.0, 20.1224653026], 104 ] 102 }, 5.0, 20.1224653026], 103 104 ] -
sasmodels/models/mass_fractal.py
r168052c r87edabf 52 52 --------- 53 53 54 D Mildner and P Hall, *J. Phys. D: Appl. Phys.*, 55 19 (1986) 1535-1545 Equation(9) 54 D Mildner and P Hall, *J. Phys. D: Appl. Phys.*, 19 (1986) 1535-1545 Equation(9) 56 55 57 56 … … 80 79 category = "shape-independent" 81 80 82 # pylint: disable=bad-whitespace, line-too-long83 81 # ["name", "units", default, [lower, upper], "type","description"], 84 82 parameters = [["radius", "Ang", 10.0, [0.0, inf], "", "Particle radius"], 85 83 ["mass_dim", "", 1.9, [1.0, 6.0], "", "Mass fractal dimension"], 86 84 ["cutoff_length", "Ang", 100.0, [0.0, inf], "", "Cut-off length"], 87 ]88 # pylint: enable=bad-whitespace, line-too-long 85 ] 86 89 87 90 88 source = ["lib/sph_j1c.c", "lib/lanczos_gamma.c", "mass_fractal.c"] … … 101 99 102 100 tests = [ 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], 103 106 104 # Accuracy tests based on content in test/utest_other_models.py105 [{'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], 109 112 110 # Additional tests with larger range of parameters111 [{'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], 115 118 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 54 54 P Schmidt, *J Appl. Cryst.*, 24 (1991) 414-435 Equation(19) 55 55 56 A J Hurd, D W Schaefer, J E Martin, *Phys. Rev. A*, 57 35 (1987) 2361-2364 Equation(2) 56 A J Hurd, D W Schaefer, J E Martin, *Phys. Rev. A*, 35 (1987) 2361-2364 Equation(2) 58 57 59 58 """ … … 80 79 category = "shape-independent" 81 80 82 # pylint: disable=bad-whitespace, line-too-long83 81 # ["name", "units", default, [lower, upper], "type","description"], 84 82 parameters = [["mass_dim", "", 1.8, [1e-16, 6.0], "", … … 90 88 ["primary_rg", "Ang", 4000., [0.0, inf], "", 91 89 "Primary particle radius of gyration"], 92 ]93 # pylint: enable=bad-whitespace, line-too-long 90 ] 91 94 92 95 93 source = ["mass_surface_fractal.c"] … … 109 107 110 108 tests = [ 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], 111 115 112 # Accuracy tests based on content in test/utest_other_models.py113 [{'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], 118 122 119 # Additional tests with larger range of parameters120 [{'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], 125 129 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 113 113 category = "shape-independent" 114 114 115 # pylint: disable=bad-whitespace, line-too-long116 115 # ["name", "units", default, [lower, upper], "type", "description"], 117 116 parameters = [["rg", "Ang", 60.0, [0, inf], "", "Radius of Gyration"], 118 117 ["porod_exp", "", 3.0, [-inf, inf], "", "Porod exponent"], 119 ] 120 # pylint: enable=bad-whitespace, line-too-long 118 ] 121 119 122 120 123 def Iq(q, 124 rg=60.0, 125 porod_exp=3.0): 121 def Iq(q, rg, porod_exp): 122 126 123 """ 127 124 :param q: Input q-value (float or [float, float]) … … 134 131 o2nu = 1.0/(2.0*nu) 135 132 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) - 138 134 1.0/power(u, o2nu) * gamma(porod_exp) * 139 135 gammainc(porod_exp, u))) * (q > 0) + 1.0*(q <= 0) … … 145 141 146 142 def 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) 153 144 154 return Iq(sqrt(qx**2 + qy**2), *args)145 return iq 155 146 156 147 Iqxy.vectorized = True # Iqxy accepts an array of qx, qy values … … 167 158 168 159 tests = [ 169 # Accuracy tests based on content in test/polyexclvol_default_igor.txt170 [{'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], 173 164 174 # Additional tests with larger range of parameters175 [{'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 55 55 """ 56 56 category = "shape-independent" 57 # pylint: disable=bad-whitespace, line-too-long 57 58 58 # ["name", "units", default, [lower, upper], "type","description"], 59 59 parameters = [["radius2", "Ang", 100.0, [0.0, inf], "", "Ensemble radius of gyration squared of an arm"], 60 60 ["arms", "", 3, [1.0, 6.0], "", "Number of arms in the model"], 61 ]62 # pylint: enable=bad-whitespace, line-too-long 61 ] 62 63 63 64 64 source = ["star_polymer.c"] … … 75 75 tests = [[{'radius2': 2.0, 76 76 'arms': 3.3, 77 }, 0.5, 0.850646091108],77 }, 0.5, 0.850646091108], 78 78 79 79 [{'radius2': 1.0, 80 80 'arms': 2.0, 81 81 'background': 1.8, 82 }, 1.0, 2.53575888234],83 ]82 }, 1.0, 2.53575888234], 83 ] -
sasmodels/models/surface_fractal.py
r168052c r07a6700 80 80 category = "shape-independent" 81 81 82 # pylint: disable=bad-whitespace, line-too-long83 82 # ["name", "units", default, [lower, upper], "type","description"], 84 83 parameters = [["radius", "Ang", 10.0, [0, inf], "", … … 88 87 ["cutoff_length", "Ang", 500., [0.0, inf], "", 89 88 "Cut-off Length"], 90 ]91 # pylint: enable=bad-whitespace, line-too-long 89 ] 90 92 91 93 92 source = ["lib/sph_j1c.c", "lib/lanczos_gamma.c", "surface_fractal.c"] … … 102 101 103 102 tests = [ 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], 109 106 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], 115 110 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], 121 114 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 54 54 category = "shape-independent" 55 55 56 # pylint: disable=bad-whitespace, line-too-long57 56 # ["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 57 parameters = [["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 ] 66 70 67 71 68 72 def 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): 75 79 76 80 """ … … 84 88 :return: Calculated intensity 85 89 """ 86 # pylint: disable=bad-whitespace 90 87 91 intensity = lorentz_scale_1/(1.0 + 88 92 power(q*lorentz_length_1, lorentz_exp_1)) 89 93 intensity += lorentz_scale_2/(1.0 + 90 94 power(q*lorentz_length_2, lorentz_exp_2)) 91 # pylint: enable=bad-whitespace92 95 93 96 return intensity … … 97 100 98 101 def 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) 105 103 106 return Iq(sqrt(qx**2 + qy**2), *args)104 return iq 107 105 108 106 Iqxy.vectorized = True # Iqxy accepts an array of qx, qy values … … 110 108 111 109 demo = 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) 118 112 119 113 oldname = "TwoLorentzianModel" 120 114 oldpars = 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') 127 118 128 119 tests = [ 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], 129 129 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], 139 138 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], 148 147 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], 157 156 158 # Additional tests with larger range of parameters159 [{'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], 166 165 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.