Changes in / [6e5c0b7:933af72] in sasmodels
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LICENSE.txt
rf68e2a5 rc8de1bd 1 Copyright (c) 2009-2017, SasView Developers 2 All rights reserved. 1 This program is in the public domain. 3 2 4 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 6 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 8 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 10 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 12 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3 Individual files may be copyright different authors, with licences that 4 allow modification and redistribution in source or binary form with or 5 without modification, and a disclaimer of warranty. -
sasmodels/compare.py
rc4e3215 r01ea374 30 30 31 31 import sys 32 import os33 32 import math 34 33 import datetime … … 41 40 from . import kerneldll 42 41 from . import exception 43 from .data import plot_theory, empty_data1D, empty_data2D , load_data42 from .data import plot_theory, empty_data1D, empty_data2D 44 43 from .direct_model import DirectModel 45 44 from .convert import revert_name, revert_pars, constrain_new_to_old … … 86 85 -help/-html shows the model docs instead of running the model 87 86 -title="note" adds note to the plot title, after the model name 88 -data="path" uses q, dq from the data file89 87 90 88 Any two calculation engines can be selected for comparison: … … 749 747 comp = opts['engines'][1] if have_comp else None 750 748 data = opts['data'] 751 use_data = have_base ^ have_comp752 749 753 750 # Plot if requested … … 766 763 if have_base: 767 764 if have_comp: plt.subplot(131) 768 plot_theory(data, base_value, view=view, use_data= use_data, limits=limits)765 plot_theory(data, base_value, view=view, use_data=False, limits=limits) 769 766 plt.title("%s t=%.2f ms"%(base.engine, base_time)) 770 767 #cbar_title = "log I" … … 772 769 if have_base: plt.subplot(132) 773 770 if not opts['is2d'] and have_base: 774 plot_theory(data, base_value, view=view, use_data= use_data, limits=limits)775 plot_theory(data, comp_value, view=view, use_data= use_data, limits=limits)771 plot_theory(data, base_value, view=view, use_data=False, limits=limits) 772 plot_theory(data, comp_value, view=view, use_data=False, limits=limits) 776 773 plt.title("%s t=%.2f ms"%(comp.engine, comp_time)) 777 774 #cbar_title = "log I" … … 787 784 err[err>cutoff] = cutoff 788 785 #err,errstr = base/comp,"ratio" 789 plot_theory(data, None, resid=err, view=errview, use_data= use_data)786 plot_theory(data, None, resid=err, view=errview, use_data=False) 790 787 if view == 'linear': 791 788 plt.xscale('linear') … … 837 834 VALUE_OPTIONS = [ 838 835 # Note: random is both a name option and a value option 839 'cutoff', 'random', 'nq', 'res', 'accuracy', 'title', 'data',836 'cutoff', 'random', 'nq', 'res', 'accuracy', 'title', 840 837 ] 841 838 … … 954 951 'html' : False, 955 952 'title' : None, 956 'data' : None,957 953 } 958 954 engines = [] … … 975 971 elif arg.startswith('-cutoff='): opts['cutoff'] = float(arg[8:]) 976 972 elif arg.startswith('-random='): opts['seed'] = int(arg[8:]) 977 elif arg.startswith('-title='): opts['title'] = arg[7:] 978 elif arg.startswith('-data='): opts['data'] = arg[6:] 973 elif arg.startswith('-title'): opts['title'] = arg[7:] 979 974 elif arg == '-random': opts['seed'] = np.random.randint(1000000) 980 975 elif arg == '-preset': opts['seed'] = -1 … … 1118 1113 1119 1114 # Create the computational engines 1120 if opts['data'] is not None: 1121 data = load_data(os.path.expanduser(opts['data'])) 1122 else: 1123 data, _ = make_data(opts) 1115 data, _ = make_data(opts) 1124 1116 if n1: 1125 1117 base = make_engine(model_info, data, engines[0], opts['cutoff']) … … 1151 1143 show html docs for the model 1152 1144 """ 1153 import os 1154 from .generate import make_html 1155 from . import rst2html 1156 1157 info = opts['def'][0] 1158 html = make_html(info) 1159 path = os.path.dirname(info.filename) 1160 url = "file://"+path.replace("\\","/")[2:]+"/" 1161 rst2html.view_html_qtapp(html, url) 1145 import wx # type: ignore 1146 from .generate import view_html_from_info 1147 app = wx.App() if wx.GetApp() is None else None 1148 view_html_from_info(opts['def'][0]) 1149 if app: app.MainLoop() 1150 1162 1151 1163 1152 def explore(opts): -
sasmodels/data.py
ra769b54 r40a87fa 54 54 if data is None: 55 55 raise IOError("Data %r could not be loaded" % filename) 56 if hasattr(data, 'x'):57 data.qmin, data.qmax = data.x.min(), data.x.max()58 data.mask = (np.isnan(data.y) if data.y is not None59 else np.zeros_like(data.x, dtype='bool'))60 56 return data 61 57 … … 352 348 # data, but they already handle the masking and graph markup already, so 353 349 # do not repeat. 354 if hasattr(data, ' isSesans') and data.isSesans:350 if hasattr(data, 'lam'): 355 351 _plot_result_sesans(data, None, None, use_data=True, limits=limits) 356 352 elif hasattr(data, 'qx_data'): … … 380 376 *Iq_calc* is the raw theory values without resolution smearing 381 377 """ 382 if hasattr(data, ' isSesans') and data.isSesans:378 if hasattr(data, 'lam'): 383 379 _plot_result_sesans(data, theory, resid, use_data=True, limits=limits) 384 380 elif hasattr(data, 'qx_data'): -
sasmodels/direct_model.py
ra769b54 rb397165 192 192 193 193 # interpret data 194 if hasattr(data, ' isSesans') and data.isSesans:194 if hasattr(data, 'lam'): 195 195 self.data_type = 'sesans' 196 196 elif hasattr(data, 'qx_data'): -
sasmodels/generate.py
rc4e3215 r1e7b0db0 928 928 from . import rst2html 929 929 url = "file://"+dirname(info.filename)+"/" 930 rst2html. view_html(make_html(info), url=url)930 rst2html.wxview(make_html(info), url=url) 931 931 932 932 def demo_time(): -
sasmodels/rst2html.py
rc4e3215 r0890871 29 29 from docutils.writers.html4css1 import HTMLTranslator 30 30 from docutils.nodes import SkipNode 31 32 def wxview(html, url="", size=(850, 540)): 33 import wx 34 from wx.html2 import WebView 35 frame = wx.Frame(None, -1, size=size) 36 view = WebView.New(frame) 37 view.SetPage(html, url) 38 frame.Show() 39 return frame 40 41 def view_rst(filename): 42 from os.path import expanduser 43 with open(expanduser(filename)) as fid: 44 rst = fid.read() 45 html = rst2html(rst) 46 wxview(html) 31 47 32 48 def rst2html(rst, part="whole", math_output="mathjax"): … … 139 155 assert replace_dollar(u"a (again $in parens$) a") == u"a (again :math:`in parens`) a" 140 156 141 def load_rst_as_html(filename): 142 from os.path import expanduser 143 with open(expanduser(filename)) as fid: 144 rst = fid.read() 145 html = rst2html(rst) 146 return html 147 148 def wxview(html, url="", size=(850, 540)): 149 import wx 150 from wx.html2 import WebView 151 frame = wx.Frame(None, -1, size=size) 152 view = WebView.New(frame) 153 view.SetPage(html, url) 154 frame.Show() 155 return frame 156 157 def qtview(html, url=""): 158 try: 159 from PyQt5.QtWebKitWidgets import QWebView 160 from PyQt5.QtCore import QUrl 161 except ImportError: 162 from PyQt4.QtWebkit import QWebView 163 from PyQt4.QtCore import QUrl 164 helpView = QWebView() 165 helpView.setHtml(html, QUrl(url)) 166 helpView.show() 167 return helpView 168 169 def view_html_wxapp(html, url=""): 157 def view_rst_app(filename): 170 158 import wx # type: ignore 171 159 app = wx.App() 172 frame = wxview(html, url)160 view_rst(filename) 173 161 app.MainLoop() 174 162 175 def view_html_qtapp(html, url=""):176 import sys177 try:178 from PyQt5.QtWidgets import QApplication179 except ImportError:180 from PyQt4.QtGui import QApplication181 app = QApplication([])182 frame = qtview(html, url)183 sys.exit(app.exec_())184 185 def view_rst_app(filename, qt=False):186 import os187 html = load_rst_as_html(filename)188 url="file://"+os.path.abspath(filename)+"/"189 if qt:190 view_html_qtapp(html, url)191 else:192 view_html_wxapp(html, url)193 163 194 164 if __name__ == "__main__": 195 165 import sys 196 view_rst_app(sys.argv[1] , qt=True)166 view_rst_app(sys.argv[1]) 197 167
Note: See TracChangeset
for help on using the changeset viewer.