Changes in / [14e08bf:d810d96] in sasmodels
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
.travis.yml
r01e551a rbec0e75 1 # Test Travis CL 2 1 3 language: python 2 4 python: 3 - '2.7' 5 - "2.7" 6 # whitelist 4 7 branches: 5 8 only: 6 - master 9 - master 10 # command to install dependencies 7 11 virtualenv: 8 12 system_site_packages: true 9 13 before_install: 10 - sudo apt-get update; 11 - sudo apt-get install python-numpy python-scipy 14 - sudo apt-get update; 15 - sudo apt-get install python-numpy python-scipy 16 # - sudo apt-get install opencl-headers 17 12 18 install: 13 - pip install bumps 14 - pip install unittest-xml-reporting 19 # - pip install pyopencl 20 - pip install bumps 21 - pip install unittest-xml-reporting 15 22 script: 16 - export WORKSPACE=/home/travis/build/SasView/sasmodels/ 17 - python -m sasmodels.model_test dll all 18 notifications: 19 slack: 20 secure: xNAUeSu1/it/x9Q2CSg79aw1LLc7d6mLpcqSCTeKROp71RhkFf8VjJnJm/lEbKHNC8yj5H9UHrz5DmzwJzI+6oMt4NdEeS6WvGhwGY/wCt2IcJKxw0vj1DAU04qFMS041Khwclo6jIqm76DloinXvmvsS+K/nSyQkF7q4egSlwA= 23 - export WORKSPACE=/home/travis/build/SasView/sasmodels/ 24 - python -m sasmodels.model_test dll all -
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
r650c6d2 rf72d70a 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 -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: … … 546 544 'f32': '32', 547 545 'f64': '64', 548 'float16': '16',549 'float32': '32',550 'float64': '64',551 'float128': '128',552 546 'longdouble': '128', 553 547 } … … 753 747 comp = opts['engines'][1] if have_comp else None 754 748 data = opts['data'] 755 use_data = have_base ^ have_comp756 749 757 750 # Plot if requested … … 770 763 if have_base: 771 764 if have_comp: plt.subplot(131) 772 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) 773 766 plt.title("%s t=%.2f ms"%(base.engine, base_time)) 774 767 #cbar_title = "log I" … … 776 769 if have_base: plt.subplot(132) 777 770 if not opts['is2d'] and have_base: 778 plot_theory(data, base_value, view=view, use_data= use_data, limits=limits)779 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) 780 773 plt.title("%s t=%.2f ms"%(comp.engine, comp_time)) 781 774 #cbar_title = "log I" … … 791 784 err[err>cutoff] = cutoff 792 785 #err,errstr = base/comp,"ratio" 793 plot_theory(data, None, resid=err, view=errview, use_data= use_data)786 plot_theory(data, None, resid=err, view=errview, use_data=False) 794 787 if view == 'linear': 795 788 plt.xscale('linear') … … 841 834 VALUE_OPTIONS = [ 842 835 # Note: random is both a name option and a value option 843 'cutoff', 'random', 'nq', 'res', 'accuracy', 'title', 'data',836 'cutoff', 'random', 'nq', 'res', 'accuracy', 'title', 844 837 ] 845 838 … … 958 951 'html' : False, 959 952 'title' : None, 960 'data' : None,961 953 } 962 954 engines = [] … … 979 971 elif arg.startswith('-cutoff='): opts['cutoff'] = float(arg[8:]) 980 972 elif arg.startswith('-random='): opts['seed'] = int(arg[8:]) 981 elif arg.startswith('-title='): opts['title'] = arg[7:] 982 elif arg.startswith('-data='): opts['data'] = arg[6:] 973 elif arg.startswith('-title'): opts['title'] = arg[7:] 983 974 elif arg == '-random': opts['seed'] = np.random.randint(1000000) 984 975 elif arg == '-preset': opts['seed'] = -1 … … 1121 1112 1122 1113 # Create the computational engines 1123 if opts['data'] is not None: 1124 data = load_data(os.path.expanduser(opts['data'])) 1125 else: 1126 data, _ = make_data(opts) 1114 data, _ = make_data(opts) 1127 1115 if n1: 1128 1116 base = make_engine(model_info, data, engines[0], opts['cutoff']) … … 1154 1142 show html docs for the model 1155 1143 """ 1156 import os 1157 from .generate import make_html 1158 from . import rst2html 1159 1160 info = opts['def'][0] 1161 html = make_html(info) 1162 path = os.path.dirname(info.filename) 1163 url = "file://"+path.replace("\\","/")[2:]+"/" 1164 rst2html.view_html_qtapp(html, url) 1144 import wx # type: ignore 1145 from .generate import view_html_from_info 1146 app = wx.App() if wx.GetApp() is None else None 1147 view_html_from_info(opts['def'][0]) 1148 if app: app.MainLoop() 1149 1165 1150 1166 1151 def explore(opts): -
sasmodels/core.py
r650c6d2 r5124c969 250 250 dtype = "longdouble" 251 251 elif dtype == "half": 252 dtype = "f loat16"252 dtype = "f16" 253 253 254 254 # Convert dtype string to numpy dtype. -
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/models/hayter_msa.py
r5702f52 ra807206 74 74 ["radius_effective", "Ang", 20.75, [0, inf], "volume", "effective radius of charged sphere"], 75 75 ["volfraction", "None", 0.0192, [0, 0.74], "", "volume fraction of spheres"], 76 ["charge", "e", 19.0, [0, 200], "", "charge on sphere (in electrons)"],77 ["temperature", "K", 318.16, [0, 450], "", "temperature, in Kelvin, for Debye length calculation"],78 ["concentration_salt", "M", 0.0, [ 0, inf], "", "conc of salt, moles/litre, 1:1 electolyte, for Debye length"],76 ["charge", "e", 19.0, [0, inf], "", "charge on sphere (in electrons)"], 77 ["temperature", "K", 318.16, [0, inf], "", "temperature, in Kelvin, for Debye length calculation"], 78 ["concentration_salt", "M", 0.0, [-inf, inf], "", "conc of salt, moles/litre, 1:1 electolyte, for Debye length"], 79 79 ["dielectconst", "None", 71.08, [-inf, inf], "", "dielectric constant (relative permittivity) of solvent, default water, for Debye length"] 80 80 ] -
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.