Changes in / [a75347f:9dcb21d] in sasmodels


Ignore:
Files:
3 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/compare.py

    r630156b r650c6d2  
    7373    -1d*/-2d computes 1d or 2d data 
    7474    -preset*/-random[=seed] preset or random parameters 
    75     -mono*/-poly force monodisperse or allow polydisperse demo parameters 
     75    -mono/-poly* force monodisperse/polydisperse 
    7676    -magnetic/-nonmagnetic* suppress magnetism 
    7777    -cutoff=1e-5* cutoff value for including a point in polydispersity 
     
    8484    -edit starts the parameter explorer 
    8585    -default/-demo* use demo vs default parameters 
    86     -help/-html shows the model docs instead of running the model 
     86    -html shows the model docs instead of running the model 
    8787    -title="note" adds note to the plot title, after the model name 
    8888    -data="path" uses q, dq from the data file 
     
    753753    comp = opts['engines'][1] if have_comp else None 
    754754    data = opts['data'] 
    755     use_data = (opts['datafile'] is not None) and (have_base ^ have_comp) 
     755    use_data = have_base ^ have_comp 
    756756 
    757757    # Plot if requested 
    758758    view = opts['view'] 
    759759    import matplotlib.pyplot as plt 
    760     if limits is None and not use_data: 
     760    if limits is None: 
    761761        vmin, vmax = np.Inf, -np.Inf 
    762762        if have_base: 
     
    836836    'linear', 'log', 'q4', 
    837837    'hist', 'nohist', 
    838     'edit', 'html', 'help', 
     838    'edit', 'html', 
    839839    'demo', 'default', 
    840840    ]) 
     
    947947        'cutoff'    : 0.0, 
    948948        'seed'      : -1,  # default to preset 
    949         'mono'      : True, 
     949        'mono'      : False, 
    950950        # Default to magnetic a magnetic moment is set on the command line 
    951951        'magnetic'  : False, 
     
    958958        'html'      : False, 
    959959        'title'     : None, 
    960         'datafile'  : None, 
     960        'data'      : None, 
    961961    } 
    962962    engines = [] 
     
    980980        elif arg.startswith('-random='):   opts['seed'] = int(arg[8:]) 
    981981        elif arg.startswith('-title='):    opts['title'] = arg[7:] 
    982         elif arg.startswith('-data='):     opts['datafile'] = arg[6:] 
     982        elif arg.startswith('-data='):     opts['data'] = arg[6:] 
    983983        elif arg == '-random':  opts['seed'] = np.random.randint(1000000) 
    984984        elif arg == '-preset':  opts['seed'] = -1 
     
    10051005        elif arg == '-default':    opts['use_demo'] = False 
    10061006        elif arg == '-html':    opts['html'] = True 
    1007         elif arg == '-help':    opts['html'] = True 
    10081007    # pylint: enable=bad-whitespace 
    10091008 
     
    11221121 
    11231122    # Create the computational engines 
    1124     if opts['datafile'] is not None: 
    1125         data = load_data(os.path.expanduser(opts['datafile'])) 
     1123    if opts['data'] is not None: 
     1124        data = load_data(os.path.expanduser(opts['data'])) 
    11261125    else: 
    11271126        data, _ = make_data(opts) 
  • sasmodels/data.py

    r630156b ra769b54  
    5151    from sas.sascalc.dataloader.loader import Loader  # type: ignore 
    5252    loader = Loader() 
    53     # Allow for one part in multipart file 
    54     if '[' in filename: 
    55         filename, indexstr = filename[:-1].split('[') 
    56         index = int(indexstr) 
    57     else: 
    58         index = None 
    59     datasets = loader.load(filename) 
    60     if datasets is None: 
     53    data = loader.load(filename) 
     54    if data is None: 
    6155        raise IOError("Data %r could not be loaded" % filename) 
    62     if not isinstance(datasets, list): 
    63         datasets = [datasets] 
    64     if index is None and len(datasets) > 1: 
    65         raise ValueError("Need to specify filename[index] for multipart data") 
    66     data = datasets[index if index is not None else 0] 
    6756    if hasattr(data, 'x'): 
    6857        data.qmin, data.qmax = data.x.min(), data.x.max() 
    6958        data.mask = (np.isnan(data.y) if data.y is not None 
    7059                     else np.zeros_like(data.x, dtype='bool')) 
    71     elif hasattr(data, 'qx_data'): 
    72         data.mask = ~data.mask 
    7360    return data 
    7461 
     
    463450            if view is 'log': 
    464451                mtheory[mtheory <= 0] = masked 
    465             plt.plot(data.x, scale*mtheory, '-') 
     452            plt.plot(data.x, scale*mtheory, '-', hold=True) 
    466453            all_positive = all_positive and (mtheory > 0).all() 
    467454            some_present = some_present or (mtheory.count() > 0) 
     
    470457            plt.ylim(*limits) 
    471458 
    472         plt.xscale('linear' if not some_present or non_positive_x 
    473                    else view if view is not None 
    474                    else 'log') 
     459        plt.xscale('linear' if not some_present or non_positive_x  else view) 
    475460        plt.yscale('linear' 
    476461                   if view == 'q4' or not some_present or not all_positive 
    477                    else view if view is not None 
    478                    else 'log') 
     462                   else view) 
    479463        plt.xlabel("$q$/A$^{-1}$") 
    480464        plt.ylabel('$I(q)$') 
    481         title = ("data and model" if use_theory and use_data 
    482                  else "data" if use_data 
    483                  else "model") 
    484         plt.title(title) 
    485465 
    486466    if use_calc: 
     
    502482        if num_plots > 1: 
    503483            plt.subplot(1, num_plots, use_calc + 2) 
    504         plt.plot(data.x, mresid, '.') 
     484        plt.plot(data.x, mresid, '-') 
    505485        plt.xlabel("$q$/A$^{-1}$") 
    506486        plt.ylabel('residuals') 
    507         plt.xscale('linear') 
    508         plt.title('(model - Iq)/dIq') 
     487        plt.xscale('linear' if not some_present or non_positive_x else view) 
    509488 
    510489 
     
    533512        if theory is not None: 
    534513            if is_tof: 
    535                 plt.plot(data.x, np.log(theory)/(data.lam*data.lam), '-') 
     514                plt.plot(data.x, np.log(theory)/(data.lam*data.lam), '-', hold=True) 
    536515            else: 
    537                 plt.plot(data.x, theory, '-') 
     516                plt.plot(data.x, theory, '-', hold=True) 
    538517        if limits is not None: 
    539518            plt.ylim(*limits) 
  • sasmodels/models/spherical_sld.py

    r63a7fe8 r3330bb4  
    199199category = "shape:sphere" 
    200200 
    201 SHAPES = ["erf(|nu|*z)", "Rpow(z^|nu|)", "Lpow(z^|nu|)", 
    202           "Rexp(-|nu|z)", "Lexp(-|nu|z)"] 
     201SHAPES = [["erf(|nu|*z)", "Rpow(z^|nu|)", "Lpow(z^|nu|)", 
     202           "Rexp(-|nu|z)", "Lexp(-|nu|z)"]] 
    203203 
    204204# pylint: disable=bad-whitespace, line-too-long 
     
    209209              ["thickness[n_shells]",  "Ang",        100.0,  [0, inf],       "volume", "thickness shell"], 
    210210              ["interface[n_shells]",  "Ang",        50.0,   [0, inf],       "volume", "thickness of the interface"], 
    211               ["shape[n_shells]",      "",           0,      [SHAPES],       "", "interface shape"], 
     211              ["shape[n_shells]",      "",           0,      SHAPES,         "", "interface shape"], 
    212212              ["nu[n_shells]",         "",           2.5,    [0, inf],       "", "interface shape exponent"], 
    213213              ["n_steps",              "",           35,     [0, inf],       "", "number of steps in each interface (must be an odd integer)"], 
  • sasmodels/rst2html.py

    rf2f5413 rc4e3215  
    155155    return frame 
    156156 
    157 def view_html_wxapp(html, url=""): 
    158     import wx  # type: ignore 
    159     app = wx.App() 
    160     frame = wxview(html, url) 
    161     app.MainLoop() 
    162  
    163 def view_url_wxapp(url): 
    164     import wx  # type: ignore 
    165     from wx.html2 import WebView 
    166     app = wx.App() 
    167     frame = wx.Frame(None, -1, size=(850, 540)) 
    168     view = WebView.New(frame) 
    169     view.LoadURL(url) 
    170     frame.Show() 
    171     app.MainLoop() 
    172  
    173157def qtview(html, url=""): 
    174158    try: 
     
    183167    return helpView 
    184168 
     169def view_html_wxapp(html, url=""): 
     170    import wx  # type: ignore 
     171    app = wx.App() 
     172    frame = wxview(html, url) 
     173    app.MainLoop() 
     174 
    185175def view_html_qtapp(html, url=""): 
    186176    import sys 
     
    193183    sys.exit(app.exec_()) 
    194184 
    195 def view_url_qtapp(url): 
    196     import sys 
    197     try: 
    198         from PyQt5.QtWidgets import QApplication 
    199     except ImportError: 
    200         from PyQt4.QtGui import QApplication 
    201     app = QApplication([]) 
    202     try: 
    203         from PyQt5.QtWebKitWidgets import QWebView 
    204         from PyQt5.QtCore import QUrl 
    205     except ImportError: 
    206         from PyQt4.QtWebkit import QWebView 
    207         from PyQt4.QtCore import QUrl 
    208     frame = QWebView() 
    209     frame.load(QUrl(url)) 
    210     frame.show() 
    211     sys.exit(app.exec_()) 
    212  
    213 def view_help(filename, qt=False): 
     185def view_rst_app(filename, qt=False): 
    214186    import os 
    215     url="file:///"+os.path.abspath(filename).replace("\\","/") 
    216     if filename.endswith('.rst'): 
    217         html = load_rst_as_html(filename) 
    218         if qt: 
    219             view_html_qtapp(html, url) 
    220         else: 
    221             view_html_wxapp(html, url) 
     187    html = load_rst_as_html(filename) 
     188    url="file://"+os.path.abspath(filename)+"/" 
     189    if qt: 
     190        view_html_qtapp(html, url) 
    222191    else: 
    223         if qt: 
    224             view_url_qtapp(url) 
    225         else: 
    226             view_url_wxapp(url) 
     192        view_html_wxapp(html, url) 
    227193 
    228194if __name__ == "__main__": 
    229195    import sys 
    230     view_help(sys.argv[1], qt=True) 
     196    view_rst_app(sys.argv[1], qt=True) 
    231197 
Note: See TracChangeset for help on using the changeset viewer.