Skip to content
Ricardo M. Ferraz Leal edited this page Apr 11, 2019 · 2 revisions

Add a model here when you are working on it. Mark it as converted when it is tested and pushed.

The err columns are the result of running multi_compare.sh, which generates random parameters for comparison against sasview. double should be at most 5e-14 relative error, single should be 5e-5.

./multi_compare.sh MODEL 200 1d200 mono double
./multi_compare.sh MODEL 200 1d200 mono single
./multi_compare.sh MODEL 200 2d32 mono double
./multi_compare.sh MODEL 200 2d32 mono single

Some models still have issues when run using single precision (lamellarPC for example).

We are not dealing with magnetism at this point as it requires some work on the wrapper functionality. Thus the *Magnetic* column below is for reference as to which models need attention. The *SESANS* column should be used to indicate if the model is a priority (1 highest, 4 lowest). The Multiply column indicates whether the model can be multiplied by a structure factor. This is currently hardcoded into src/sas/perspectives/fitting/models.py

SasView name sasmodels name P(Q) S(Q) Multiply Multiplicity Magnetic SESANS Assigned Converted UTest double err single err double 2D single 2D
Core2ndMomentModel adsorbed_layer Y . . . . 3 SMK Y - good good - -
BarBellModel barbell Y . . . . 3 AJJ Y - good good FAIL FAIL
BCCrystalModel bcc Y . . . . 3 AJJ Y - good FAIL 9e-14 2e-2
BEPolyelectrolyte be_polyelectrolyte Y . . . . 3 PR Y Y good good - -
BinaryHSModel binary_hard_sphere Y N N N N 1 PDB Y Y OK FAIL - -
BroadPeakModel broad_peak Y . . . . 4 PDB Y - good good - -
CappedCylinderModel capped_cylinder Y . . . . 3 HP Y - good good 2e-11 3e-3
CoreMultiShellModel core_multi_shell Y . Y Y Y 3 . - - - - -
CoreShellBicelleModel core_shell_bicelle Y . Y . . 2 PR Y Y good good 1e-12 1e-4
CoreShellCylinderModel core_shell_cylinder Y . Y . . 3 HP Y - good good 9e-14 4e-4
CoreShellEllipsoidModel core_shell_ellipsoid Y . Y . . 3 PR Y Y good 1e-4 good 1e-3
CoreShellEllipsoidXTModel core_shell_ellipsoid_xt Y . Y . . 3 PR Y Y good 1e-4 good 1e-3
CoreShellModel core_shell_sphere Y . Y . Y 2 MD Y Y good good - -
CorrLength correlation_length Y . . . . 3 JRK Y Y good good - -
CSParallelepipedModel core_shell_parallelepiped Y . Y . . 3 MAG Y Y good good 5e-13 8e-4
CylinderModel cylinder Y . Y . Y 1 HP Y - good good 2e-13 1e-4
DABModel dab Y . . . . 1 DM Y - good good - -
EllipsoidModel ellipsoid Y . Y . . 1 HP Y - good* good 3e-14 1e-4
EllipticalCylinderModel elliptical_cylinder Y . Y . . 3 MD Y Y good good - -
FCCrystalModel fcc Y . . . . 3 AJJ Y - good FAIL 6e-12 7e-2
FlexibleCylinderModel flexible_cylinder Y . . . . 2 PR Y Y good FAIL - -
FlexCylEllipXModel flexible_cylinder_ex Y . . . . 3 PR Y Y good FAIL - -
FractalModel fractal Y . . . . 1 PDB Y Y good* good* - -
FractalCoreShell fractal_core_shell Y . . . . 3 PR Y Y good good - -
FuzzySphereModel fuzzy_sphere Y . Y . . 2 TRN Y Y good* good - -
PeakGaussModel gaussian_peak Y . . . . 4 AJJ Y - good 1e-3 - -
GaussLorentzGel gauss_lorentz_gel Y . . . . 2 PR Y Y good good - -
GelFitModel gel_fit Y . . . . 1 PR Y Y good good - -
Guinier guinier Y . . . . 1 JRK Y Y good good - -
GuinierPorod guinier_porod Y . . . . 2 MD Y Y good good - -
HardsphereStructure hardsphere . Y . . . 1 RKH Y Y good FAIL - -
HayterMSAStructure hayter_msa . Y . . . 1 RKH Y Y OK FAIL - -
HollowCylinderModel hollow_cylinder Y . Y . . 2 JRK Y Y good good 4e-13 2e-3
RectangularHollowPrismModel hollow_rectangular_prism Y . Y . . 3 MAG Y Y good good - -
RectangularHollowPrismInfThinWallsModel hollow_rectangular_prism_infinitely_thin_walls Y . . . . 3 MAG Y Y good good - -
LamellarModel lamellar Y . . . . 2 PAK Y Y good good - -
LamellarPSModel lamellarCaille Y . . . . 3 RKH Y Y good 5e-2 - -
LamellarPSHGModel lamellarCailleHG Y . . . . 3 RKH Y Y 3e-12 5e-3 - -
LamellarFFHGModel lamellarFFHG Y . . . . 3 RKH Y Y good good - -
LamellarPCrystallModel lamellarPC Y . . . . 3 RKH Y Y good FAIL - -
LineModel line Y . . . . 4 WP Y Y good good - -
LinearPearlsModel linear_pearls Y . . . . 3 PR Y N good fail - -
Lorentz lorentz Y . . . . 1 JRK Y Y good good - -
MassFractalModel mass_fractal Y . . . . 1 PR Y Y good 5e-5 - -
MassSurfaceFractal mass_surface_fractal Y . . . . 1 PR Y Y good good - -
MicelleSphCore micelle_sphere_core Y . Y . . PR Y - 1e-09 FAIL - -
sum_p1_p2 mixture Y . . . . 3 PAK Y - - - - -
Debye mono_gauss_coil Y . . . . 1 SMK Y Y good good - -
MultiShellModel multilayer_vesicle Y . Y Y . 3 PR Y Y 2e-09 1e-3 - -
OnionExpShellModel onion Y . Y Y . 3 PAK Y - - - - -
ParallelepipedModel parallelepiped Y . Y . Y 2 MAG Y Y good good 5e-13 2e-4
PeakLorentzModel peak_lorentz Y . . . . 4 AJJ Y Y good good - -
PearlNecklaceModel pearl_necklace Y . . . . 3 JRK Y Y 6e-14 FAIL - -
Poly_GaussCoil poly_gauss_coil Y . . . . 2 SMK Y Y FAIL FAIL - -
PolyExclVolume polymer_excl_volume Y . . . . 3 PR Y Y good good - -
PorodModel porod Y . . . . 3 MD Y Y good good - -
PringleModel pringle Y . . . . 3 WP Y Y FAIL good - -
!AbsolutePower_Law power_law Y . . . . 3 SMK Y Y good good - -
MultiplicationModel product . . . . . PAK Y - - - - -
RaspBerryModel raspberry Y . . . . 2 PDB Y Y good good - -
RectangularPrismModel rectangular_prism Y . Y . . 2 MAG Y Y good good - -
RPA10Model rpa Y . . Y . 3 PAK . - - - - -
SCCrystalModel sc_crystal Y . . . . 3 PR Y Y good FAIL good 1e-3
SphereModel sphere Y . Y . Y 1 HP Y - good* good - -
SphericalSLDModel spherical_sld Y . Y Y . 3 WP . - - - - -
SquareWellStructure squarewell . Y . . . 1 RKH Y Y good OK - -
StackedDisksModel stacked_disk Y . Y . . 2 PR Y Y good 1e-5 good 1e-5
StarPolymer star_polymer Y . . . . 2 PR Y Y good fail - -
StickyHSStructure stickyhardsphere . Y . . . 1 PAK Y Y good FAIL - -
SurfaceFractalModel surface_fractal Y . . . . 1 PR Y Y good 5e-5 - -
TeubnerStrey teubner_strey Y . . . . 1 PAK Y - good* good - -
TriaxialEllipsoidModel triaxial_ellipsoid Y . Y . . 3 HP Y - good* good good good
TwoLorentzian two_lorentzian Y . . . . 4 PR Y Y good good - -
TwoPowerLaw two_power_law Y . . . . 4 WP Y Y good good - -
UnifiedPowerRg unified_power_Rg Y . . Y . 4 PAK . - good N/A - -
VesicleModel vesicle Y . Y . . 2 PDB Y Y good* good - -
ReflectivityModel Y . . Y . 4 . - - - - -
ReflectivityIIModel Y . . Y . 4 . - - - - -
sum_Ap1_1_Ap2 Y . . . . 3 . - - - - -
polynomial5 Y . . . . 3 . - - - - -
sph_bessel_jn Y . . . . 3 . - - - - -
testmodel Y . . . . 3 . - - - - -
testmodel_2 Y . . . . 3 . - - - - -

^*^ using taylor expansion near 0 for fq = 3 (sin(qr)/qr - cos(qr))/qr ^2^ ; using quad precision as a cross check, this is more accurate than computing the direct expression for qr < 0.1 in double precision, and so the values will differ from those in sasview. It is much more accurate in single precision. This affects many models, including sphere and ellipsoid models. The cylinder models are using J1(qr)/qr, which has its own numerical expansion and does not suffer from this problem. Should probably settle on one or the other and move it into the library. So even though the double precision values for sphere, ellipsoid and triaxial ellipsoid differ by more than 5e-14, they are still marked good. Similarly, the Teubner-Strey model checks out against the quad precision version and so is marked good.

OK. some models such as binary hard sphere and raspberry are inherently "unstable" in certain regions of parameter space. They require double precision but the difference between old SasView and sasmodels is still higher than nominally allowed. However hard to say which is more correct at this point.

List of standard parameters has moved to the instructions page

Clone this wiki locally