Changes in / [793d802:997c9ca] in sasmodels


Ignore:
Files:
13 added
22 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r8a5f021 r8a5f021  
    1111/doc/api/ 
    1212/doc/model/ 
    13 /doc/guide/models 
     13/doc/ref/models 
    1414.mplconfig 
    1515/pylint_violations.txt 
  • doc/conf.py

    r8ae8532 r40a87fa  
    4242             ] 
    4343 
    44 # Redirect mathjax to a different CDN 
    45 mathjax_path = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML" 
    46  
    4744# Add any paths that contain templates here, relative to this directory. 
    4845templates_path = ['_templates'] 
  • doc/developer/calculator.rst

    r870a2f4 re822c97  
    11.. currentmodule:: sasmodels 
    2  
    3 .. _Calculator_Interface: 
    42 
    53Calculator Interface 
     
    97model calculator which implements the polydispersity and magnetic SLD 
    108calculations.  There are three separate implementations of this layer, 
    11 :mod:`kernelcl` for OpenCL, which operates on a single Q value at a time, 
    12 :mod:`kerneldll` for the DLL, which loops over a vector of Q values, and 
    13 :mod:`kernelpy` for python models which operates on vector Q values. 
     9*kernelcl.py* for OpenCL, which operates on a single Q value at a time, 
     10*kerneldll.c* for the DLL, which loops over a vector of Q values, and 
     11*kernelpy.py* for python models which operates on vector Q values. 
    1412 
    1513Each implementation provides three different calls *Iq*, *Iqxy* and *Imagnetic* 
  • doc/developer/index.rst

    r2e66ef5 rb85be2d  
    77   :maxdepth: 4 
    88 
    9    overview.rst 
    109   calculator.rst 
  • doc/genapi.py

    r2e66ef5 ra5b8477  
    22import os.path 
    33 
    4 MODULE_TEMPLATE = """.. Autogenerated by genmods.py 
     4MODULE_TEMPLATE=""".. Autogenerated by genmods.py 
    55 
    66****************************************************************************** 
     
    1919""" 
    2020 
    21 INDEX_TEMPLATE = """.. Autogenerated by genmods.py 
     21INDEX_TEMPLATE=""".. Autogenerated by genmods.py 
    2222 
    2323.. _api-index: 
     
    4646        os.makedirs(dir) 
    4747 
    48     for module, name in modules: 
    49         with open(os.path.join(dir, module+'.rst'), 'w') as f: 
     48    for module,name in modules: 
     49        with open(os.path.join(dir,module+'.rst'), 'w') as f: 
    5050            f.write(MODULE_TEMPLATE%locals()) 
    5151 
    52     rsts = "\n   ".join(module+'.rst' for module, name in modules) 
    53     with open(os.path.join(dir, 'index.rst'), 'w') as f: 
     52    rsts = "\n   ".join(module+'.rst' for module,name in modules) 
     53    with open(os.path.join(dir,'index.rst'),'w') as f: 
    5454        f.write(INDEX_TEMPLATE%locals()) 
    5555 
    5656 
    57 modules = [ 
    58     ('__init__', 'Sasmodels package'), 
     57modules=[ 
     58    #('__init__', 'Top level namespace'), 
    5959    #('alignment', 'GPU data alignment [unused]'), 
    6060    ('bumps_model', 'Bumps interface'), 
    61     ('compare_many', 'Batch compare models on different compute engines'), 
    6261    ('compare', 'Compare models on different compute engines'), 
    6362    ('convert', 'Sasview to sasmodel converter'), 
     
    6766    ('direct_model', 'Simple interface'), 
    6867    ('exception', 'Annotate exceptions'), 
     68    #('frozendict', 'Freeze a dictionary to make it immutable'), 
    6969    ('generate', 'Model parser'), 
    7070    ('kernel', 'Evaluator type definitions'), 
     
    7979    ('resolution', '1-D resolution functions'), 
    8080    ('resolution2d', '2-D resolution functions'), 
    81     ('rst2html', 'Convert doc strings the web pages'), 
    8281    ('sasview_model', 'Sasview interface'), 
    8382    ('sesans', 'SESANS calculation routines'), 
     83    #('transition', 'Model stepper for automatic model selection'), 
    8484    ('weights', 'Distribution functions'), 
    8585] 
    86 package = 'sasmodels' 
    87 package_name = 'Reference' 
     86package='sasmodels' 
     87package_name='Reference' 
    8888genfiles(package, package_name, modules) 
  • doc/gentoc.py

    r990d8df r40a87fa  
    1616    from sasmodels.modelinfo import ModelInfo 
    1717 
    18 TEMPLATE = """\ 
     18TEMPLATE="""\ 
    1919.. 
    2020    Generated from doc/gentoc.py -- DO NOT EDIT -- 
     
    3030""" 
    3131 
    32 MODEL_TOC_PATH = "guide/models" 
     32MODEL_TOC_PATH = "ref/models" 
    3333 
    3434def _make_category(category_name, label, title, parent=None): 
     
    6565        # assume model is in sasmodels/models/name.py, and ignore the full path 
    6666        model_name = basename(item)[:-3] 
    67         if model_name.startswith('_'): 
    68             continue 
     67        if model_name.startswith('_'): continue 
    6968        model_info = load_model_info(model_name) 
    7069        if model_info.category is None: 
    7170            print("Missing category for", item, file=sys.stderr) 
    7271        else: 
    73             category.setdefault(model_info.category, []).append(model_name) 
     72            category.setdefault(model_info.category,[]).append(model_name) 
    7473 
    7574    # Check category names 
    76     for k, v in category.items(): 
     75    for k,v in category.items(): 
    7776        if len(v) == 1: 
    78             print("Category %s contains only %s"%(k, v[0]), file=sys.stderr) 
     77            print("Category %s contains only %s"%(k,v[0]), file=sys.stderr) 
    7978 
    8079    # Generate category files for the table of contents. 
     
    8786    # alphabetical order before them. 
    8887 
    89     if not exists(MODEL_TOC_PATH): 
    90         mkdir(MODEL_TOC_PATH) 
     88    if not exists(MODEL_TOC_PATH): mkdir(MODEL_TOC_PATH) 
    9189    model_toc = _make_category( 
    92         'index', 'Models', 'Model Functions') 
     90        'index',  'Models', 'Model Functions') 
    9391    #shape_toc = _make_category( 
    9492    #    'shape',  'Shapes', 'Shape Functions', model_toc) 
    9593    free_toc = _make_category( 
    96         'shape-independent', 'Shape-independent', 
     94        'shape-independent',  'Shape-independent', 
    9795        'Shape-Independent Functions') 
    9896    struct_toc = _make_category( 
    99         'structure-factor', 'Structure-factor', 'Structure Factors') 
    100     #custom_toc = _make_category( 
    101     #    'custom-models', 'Custom-models', 'Custom Models') 
     97        'structure-factor',  'Structure-factor', 'Structure Factors') 
     98    custom_toc = _make_category( 
     99        'custom-models', 'Custom-models', 'Custom Models') 
    102100 
    103101    # remember to top level categories 
     
    107105        'shape-independent':free_toc, 
    108106        'structure-factor': struct_toc, 
    109         #'custom': custom_toc, 
     107        'custom': custom_toc, 
    110108        } 
    111109 
    112110    # Process the model lists 
    113     for k, v in sorted(category.items()): 
     111    for k,v in sorted(category.items()): 
    114112        if ':' in k: 
    115             cat, subcat = k.split(':') 
     113            cat,subcat = k.split(':') 
    116114            _maybe_make_category(cat, v, cat_files, model_toc) 
    117115            cat_file = cat_files[cat] 
    118             label = "-".join((cat, subcat)) 
     116            label = "-".join((cat,subcat)) 
    119117            filename = label 
    120             title = subcat.capitalize() + " Functions" 
     118            title = subcat.capitalize()+" Functions" 
    121119            sub_toc = _make_category(filename, label, title, cat_file) 
    122120            for model in sorted(v): 
     
    132130    _add_subcategory('shape-independent', model_toc) 
    133131    _add_subcategory('structure-factor', model_toc) 
    134     #_add_subcategory('custom-models', model_toc) 
     132    _add_subcategory('custom-models', model_toc) 
    135133 
    136134    # Close the top-level category files 
    137135    #model_toc.close() 
    138     for f in cat_files.values(): 
    139         f.close() 
     136    for f in cat_files.values(): f.close() 
    140137 
    141138 
  • doc/guide/index.rst

    r2e66ef5 rbb6f0f3  
    1 **************** 
    2 SAS Models Guide 
    3 **************** 
     1********** 
     2SAS Models 
     3********** 
    44 
    5 .. toctree:: 
    6    :numbered: 4 
    7    :maxdepth: 4 
     5Small angle X-ray and Neutron (SAXS and SANS) scattering examines the 
     6scattering patterns produced by a beam travelling through the sample 
     7and scattering at low angles.  The scattering is computed as a function 
     8of $q_x$ and $q_y$, which for a given beam wavelength corresponds to 
     9particular scattering angles. Each pixel on the detector corresponds to 
     10a different scattering angle. If the sample is unoriented, the scattering 
     11pattern will appear as rings on the detector.  In this case, a circular 
     12average can be taken with 1-dimension data at $q = \surd (q_x^2 + q_y^2)$ 
     13compared to the orientationally averaged SAS scattering pattern. 
    814 
    9    intro.rst 
    10    install.rst 
    11    pd/polydispersity.rst 
    12    resolution.rst 
    13    magnetism/magnetism.rst 
    14    sesans/sans_to_sesans.rst 
    15    sesans/sesans_fitting.rst 
    16    plugin.rst 
    17    scripting.rst 
    18    refs.rst 
     15Models have certain features in common. 
     16 
     17Every model has a *scale* and a *background*. 
     18 
     19Talk about orientation, with diagrams for orientation so that we don't need 
     20a link on every model page? 
     21 
     22.. _orientation: 
     23 
     24.. figure: img/orientation1.jpg 
     25 
     26    Orientation in 3D 
     27 
     28.. figure: img/orientation2.jpg 
     29 
     30    Orientation cross sections 
     31 
     32Talk about polydispersity. 
     33 
     34Talk about magnetism, converting the magnetism help file to inline text here, 
     35with links so that models can point back to it. 
     36 
     37Need to talk about structure factors even though we don't have any 
     38implemented yet. 
  • doc/index.rst

    r8ae8532 r5e1d6b0  
    1 sasmodels 
    2 ========= 
    3 Small angle X-ray and Neutron scattering (SAXS and SANS) examines the 
    4 scattering patterns produced by a beam travelling through the sample 
    5 and scattering at low angles.  The scattering is computed as a function 
    6 of reciprocal space $q$, which arises from a combination of beam wavelength 
    7 and scattering angles. Each pixel on the detector corresponds to 
    8 a different scattering angle, and has a distinct $q_x$ and $q_y$. If the 
    9 sample is unoriented, the scattering pattern will appear as rings on the 
    10 detector.  In this case, a circular average can be taken with 1-dimension 
    11 data at $q = \surd (q_x^2 + q_y^2)$ compared to the orientationally 
    12 averaged SAS scattering pattern. 
    13  
     1Introduction 
     2============ 
    143The sasmodels package provides theory functions for small angle scattering 
    15 calculations for different shapes, including the effects of resolution, 
    16 polydispersity and orientational dispersion. 
     4calculations. 
    175 
    186.. htmlonly:: 
     
    2715 
    2816   guide/index.rst 
    29    guide/models/index.rst 
    3017   developer/index.rst 
     18   ref/index.rst 
     19   ref/models/index.rst 
    3120   api/index.rst 
    3221 
     
    3928.. htmlonly:: 
    4029  * :ref:`search` 
     30 
     31 
     32 
     33 
     34   
     35 
  • example/model.py

    r2e66ef5 r1182da5  
    1717model = Model(kernel, 
    1818    scale=0.08, 
    19     radius_polar=15, radius_equatorial=800, 
     19    r_polar=15, r_equatorial=800, 
    2020    sld=.291, sld_solvent=7.105, 
    2121    background=0, 
    2222    theta=90, phi=0, 
    2323    theta_pd=15, theta_pd_n=40, theta_pd_nsigma=3, 
    24     radius_polar_pd=0.222296, radius_polar_pd_n=1, radius_polar_pd_nsigma=0, 
    25     radius_equatorial_pd=.000128, radius_equatorial_pd_n=1, radius_equatorial_pd_nsigma=0, 
     24    r_polar_pd=0.222296, r_polar_pd_n=1, r_polar_pd_nsigma=0, 
     25    r_equatorial_pd=.000128, r_equatorial_pd_n=1, r_equatorial_pd_nsigma=0, 
    2626    phi_pd=0, phi_pd_n=20, phi_pd_nsigma=3, 
    2727    ) 
    2828 
    2929# SET THE FITTING PARAMETERS 
    30 model.radius_polar.range(15, 1000) 
    31 model.radius_equatorial.range(15, 1000) 
     30model.r_polar.range(15, 1000) 
     31model.r_equatorial.range(15, 1000) 
    3232model.theta_pd.range(0, 360) 
    3333model.background.range(0,1000) 
  • sasmodels/alignment.py

    r870a2f4 r7ae2b7f  
    4242    view[:] = x 
    4343    return view 
     44 
  • sasmodels/core.py

    r2e66ef5 r650c6d2  
    117117    Load model info and build model. 
    118118 
    119     *model_name* is the name of the model, or perhaps a model expression 
    120     such as sphere*hardsphere or sphere+cylinder. 
    121  
    122     *dtype* and *platform* are given by :func:`build_model`. 
     119    *model_name* is the name of the model as used by :func:`load_model_info`. 
     120    Additional keyword arguments are passed directly to :func:`build_model`. 
    123121    """ 
    124122    return build_model(load_model_info(model_name), 
     
    130128    """ 
    131129    Load a model definition given the model name. 
    132  
    133     *model_name* is the name of the model, or perhaps a model expression 
    134     such as sphere*hardsphere or sphere+cylinder. 
    135130 
    136131    This returns a handle to the module defining the model.  This can be 
     
    232227 
    233228    Possible types include 'half', 'single', 'double' and 'quad'.  If the 
    234     type is 'fast', then this is equivalent to dtype 'single' but using 
    235     fast native functions rather than those with the precision level guaranteed 
    236     by the OpenCL standard. 
    237  
    238     Platform preference can be specfied ("ocl" vs "dll"), with the default 
    239     being OpenCL if it is availabe.  If the dtype name ends with '!' then 
    240     platform is forced to be DLL rather than OpenCL. 
    241  
    242     This routine ignores the preferences within the model definition.  This 
    243     is by design.  It allows us to test models in single precision even when 
    244     we have flagged them as requiring double precision so we can easily check 
    245     the performance on different platforms without having to change the model 
    246     definition. 
     229    type is 'fast', then this is equivalent to dtype 'single' with the 
     230    fast flag set to True. 
    247231    """ 
    248232    # Assign default platform, overriding ocl with dll if OpenCL is unavailable 
  • sasmodels/models/multilayer_vesicle.py

    r870a2f4 r5d23de2  
    7171  sufficiently fine grained in certain cases. Please report any such occurences 
    7272  to the SasView team. Generally, for the best possible experience: 
    73  
    74  - Start with the best possible guess 
    75  - Using a priori knowledge, hold as many parameters fixed as possible 
    76  - if N=1, tw (water thickness) must by definition be zero. Both N and tw should 
     73 * Start with the best possible guess 
     74 * Using a priori knowledge, hold as many parameters fixed as possible 
     75 * if N=1, tw (water thickness) must by definition be zero. Both N and tw should 
    7776   be fixed during fitting. 
    78  - If N>1, use constraints to keep N > 1 
    79  - Because N only really moves in integer steps, it may get "stuck" if the 
     77 * If N>1, use constraints to keep N > 1 
     78 * Because N only really moves in integer steps, it may get "stuck" if the 
    8079   optimizer step size is too small so care should be taken 
    8180   If you experience problems with this please contact the SasView team and let 
  • sasmodels/resolution.py

    r990d8df rb32caab  
    437437    .. math:: 
    438438 
    439          \log \Delta q = (\log q_n - \log q_1) / (n - 1) 
     439         \log \Delta q = (\log q_n - log q_1) / (n - 1) 
    440440 
    441441    From this we can compute the number of steps required to extend $q$ 
     
    451451 
    452452         n_\text{extend} = (n-1) (\log q_\text{max} - \log q_n) 
    453             / (\log q_n - \log q_1) 
     453            / (\log q_n - log q_1) 
    454454    """ 
    455455    q = np.sort(q) 
     
    459459        log_delta_q = log(10.) / points_per_decade 
    460460    if q_min < q[0]: 
    461         if q_min < 0: 
    462             q_min = q[0]*MINIMUM_ABSOLUTE_Q 
     461        if q_min < 0: q_min = q[0]*MINIMUM_ABSOLUTE_Q 
    463462        n_low = log_delta_q * (log(q[0])-log(q_min)) 
    464463        q_low = np.logspace(log10(q_min), log10(q[0]), np.ceil(n_low)+1)[:-1] 
  • sasmodels/rst2html.py

    r870a2f4 rf2f5413  
    3838    - mathml 
    3939    - mathjax 
    40     See `<http://docutils.sourceforge.net/docs/user/config.html#math-output>`_ 
     40    See `http://docutils.sourceforge.net/docs/user/config.html#math-output`_ 
    4141    for details. 
    4242 
     
    176176        from PyQt5.QtCore import QUrl 
    177177    except ImportError: 
    178         from PyQt4.QtWebKit import QWebView 
     178        from PyQt4.QtWebkit import QWebView 
    179179        from PyQt4.QtCore import QUrl 
    180180    helpView = QWebView() 
     
    204204        from PyQt5.QtCore import QUrl 
    205205    except ImportError: 
    206         from PyQt4.QtWebKit import QWebView 
     206        from PyQt4.QtWebkit import QWebView 
    207207        from PyQt4.QtCore import QUrl 
    208208    frame = QWebView() 
     
    211211    sys.exit(app.exec_()) 
    212212 
    213 def can_use_qt(): 
    214     """ 
    215     Return True if QWebView exists. 
    216  
    217     Checks first in PyQt5 then in PyQt4 
    218     """ 
    219     try: 
    220         from PyQt5.QtWebKitWidgets import QWebView 
    221         return True 
    222     except ImportError: 
    223         try: 
    224             from PyQt4.QtWebKit import QWebView 
    225             return True 
    226         except ImportError: 
    227             return False 
    228  
    229213def view_help(filename, qt=False): 
    230214    import os 
    231  
    232     if qt: 
    233         qt = can_use_qt() 
    234  
    235     url = "file:///"+os.path.abspath(filename).replace("\\", "/") 
     215    url="file:///"+os.path.abspath(filename).replace("\\","/") 
    236216    if filename.endswith('.rst'): 
    237217        html = load_rst_as_html(filename) 
Note: See TracChangeset for help on using the changeset viewer.