Changeset db3947c in sasmodels


Ignore:
Timestamp:
Mar 30, 2019 2:41:34 AM (5 years ago)
Author:
richardh
Branches:
master, ticket_1156, ticket_822_more_unit_tests
Children:
934a001
Parents:
065d77d
Message:

more comprehensive unit tests in sphere, but still issues with beta approx

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/sphere.py

    ra34b811 rdb3947c  
    9494     [{}, 0.2, 0.726362], # each test starts with default parameter values inside { }, unless modified. Then Q and expected value of I(Q) 
    9595     [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1., 
     96       "radius": 120.}, [0.01,0.1,0.2], [1.34836265e+04, 6.20114062e+00, 1.04733914e-01]], # each test starts with default parameter values inside { }, unless modified. Then Q and expected value of I(Q) 
     97     [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1.,  # careful tests here R=120 Pd=.2,  
     98      #                                        then with S(Q) at default Reff=50 (but this gets changeded to 120) phi=0,2 
    9699       "radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
    97       0.2, 0.2288431], 
    98     [{"radius": 120., "radius_pd": 0.02, "radius_pd_n":45}, 
    99       0.2, 792.0646662454202, 1166737.0473152, 120.0, 7246723.820358589, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
     100      [0.01,0.1,0.2], [1.74395295e+04, 3.68016987e+00, 2.28843099e-01]],  # a list of Q values and list of expected results is also possible 
     101    [{"scale": 1., "background": 0., "sld": 6., "sld_solvent": 1.,"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
     102      0.01, 335839.88055473, 1.41045057e+11, 120.0, 8087664.122641933, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
     103    [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
     104      0.1, 482.93824329, 29763977.79867414, 120.0, 8087664.122641933, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
     105    [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
     106      0.2, 1.23330406, 1850806.1197361, 120.0, 8087664.122641933, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
    100107   #  But note P(Q) = F2/volume 
    101108   #  F and F^2 are "unscaled", with for  n <F F*>S(q) or for beta approx I(q) = n [<F F*> + <F><F*> (S(q) - 1)] 
     
    103110   #  The number density is volume fraction divided by particle volume. 
    104111   #  Effectively, this leaves F = V drho form, where form is the usual 3 j1(qr)/(qr) or whatever depending on the shape. 
    105    # [{"@S": "hardsphere"}, 
    106    #    0.01, 55.881884232102124], # this is current value, not verified elsewhere yet 
    107    # [{"radius": 120., "radius_pd": 0.2, "radius_pd_n":45}, 
    108    #   0.2, 1.233304061, [1850806.119736], 120.0, 8087664.1226, 1.0], # the longer list here checks  F1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 
    109    # [{"@S": "hardsphere"}, 
    110    #     0.2, 0.14730859242492958], #  this is current value, not verified elsewhere yet 
    111     # [{"@S": "hardsphere"}, 
    112     #    0.1, 0.7940350343811906], #  this is current value, not verified elsewhere yet 
     112   # NOTE the @S multiplication by S(Q) also multiplies the answer by volfraction, thus you may like to put in scale at 1/volfraction 
    113113    [{"@S": "hardsphere", 
    114114     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
    115115     "volfraction":0.2, 
    116      "radius_effective":45.0,     # uses this (check) 
     116     "radius_effective":45.0,     # uses this as gives different answer to either 50 or 120 (check) 
    117117     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
    118118     "radius_effective_mode": 0   # equivalent sphere, there is only one valid mode for sphere. says -this used r_eff =0 or default 50? 
     
    121121     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
    122122     "volfraction":0.2, 
    123      "radius_effective":50.0,        # hard sphere structure factor 
     123     #"radius_effective":50.0,        # hard sphere structure factor 
    124124     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
    125      "radius_effective_mode": 0   # this used r_eff =0 or default 50? 
    126      }, 0.01, 1324.7375636587356 ], 
     125     "radius_effective_mode": 0   # this used default 50? 
     126     }, [0.01,0.1,0.2], [1.32473756e+03, 7.36633631e-01, 4.67686201e-02] ], 
    127127    [{"@S": "hardsphere", 
    128128     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
    129129     "volfraction":0.2, 
    130      "radius_effective":50.0,        # hard sphere structure factor 
     130     "radius_effective":120.0,        # hard sphere structure factor 
    131131     "structure_factor_mode": 1,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
    132      "radius_effective_mode": 1   # this used 120 ??? 
    133      }, 0.01, 1579.2858949296565 ] 
    134 ] 
    135 # putting None for expected result will pass the test if there are no errors from the routine, but without any check on the value of the result 
     132     "radius_effective_mode": 0   # 1 uses 120,  
     133     }, [0.01,0.1,0.2], [1.57928589e+03, 7.37067923e-01, 4.67686197e-02  ]], 
     134    [{"@S": "hardsphere", 
     135     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
     136     "volfraction":0.2, 
     137     #"radius_effective":120.0,        # hard sphere structure factor 
     138     "structure_factor_mode": 0,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
     139     "radius_effective_mode": 1   # this used 120 from the form factor 
     140     }, [0.01,0.1,0.2], [1.10112335e+03, 7.41366536e-01, 4.66630207e-02]], 
     141    [{"@S": "hardsphere", 
     142     "radius": 120., "radius_pd": 0.2, "radius_pd_n":45, 
     143     "volfraction":0.2, 
     144     #"radius_effective":50.0,        # hard sphere structure factor 
     145     "structure_factor_mode": 0,  # 0 = normal decoupling approximation, 1 = beta(Q) approx 
     146     "radius_effective_mode": 0   # this used 50 the default for hardsphere 
     147     }, [0.01,0.1,0.2], [7.82803598e+02, 6.85943611e-01, 4.71586457e-02 ]] 
     148]# putting None for expected result will pass the test if there are no errors from the routine, but without any check on the value of the result 
Note: See TracChangeset for help on using the changeset viewer.