Changeset 952ea1f in sasview
- Timestamp:
- Oct 11, 2018 1:33:22 PM (6 years ago)
- Branches:
- master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249
- Children:
- 7ba6470
- Parents:
- 67ed543
- git-author:
- Paul Kienzle <pkienzle@…> (10/11/18 13:22:07)
- git-committer:
- Paul Kienzle <pkienzle@…> (10/11/18 13:33:22)
- Files:
-
- 3 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
run.py
rbc8b8a1 r952ea1f 67 67 68 68 69 def prepare( ):69 def prepare(rebuild=True): 70 70 # Don't create *.pyc files 71 71 sys.dont_write_bytecode = True … … 95 95 try: 96 96 import periodictable 97 except :97 except ImportError: 98 98 addpath(joinpath(root, '..', 'periodictable')) 99 99 100 100 try: 101 101 import bumps 102 except :102 except ImportError: 103 103 addpath(joinpath(root, '..', 'bumps')) 104 104 105 105 try: 106 106 import tinycc 107 except :107 except ImportError: 108 108 addpath(joinpath(root, '../tinycc/build/lib')) 109 109 … … 111 111 #addpath(os.path.join(root, '..','wxPython-src-3.0.0.0','wxPython')) 112 112 113 # Build project if the build directory does not already exist. 114 # PAK: with "update" we can always build since it is fast 115 if True or not os.path.exists(build_path): 113 # Put the sas source tree on the path 114 addpath(joinpath(root, 'src')) 115 116 # Put sasmodels on the path 117 addpath(joinpath(root, '../sasmodels/')) 118 119 # Check if the C extensions are already built 120 try: 121 from sas.sascalc.pr import _pr_inversion 122 from sas.sascalc.calculator import _sld2i 123 from sas.sascalc.file_converter import _bsl_loader 124 except ImportError: 125 rebuild = True 126 127 # Build C extensions if necessary. Do an inplace build to simplify path. 128 if rebuild: 116 129 import subprocess 117 build_cmd = [sys.executable, "setup.py", "build ", "update"]130 build_cmd = [sys.executable, "setup.py", "build_ext", "--inplace", "update"] 118 131 if os.name == 'nt': 119 132 build_cmd.append('--compiler=tinycc') … … 122 135 with cd(root): 123 136 subprocess.call(build_cmd, shell=shell) 124 125 # Put the source trees on the path126 addpath(joinpath(root, 'src'))127 128 # sasmodels on the path129 addpath(joinpath(root, '../sasmodels/'))130 131 # The sas.models package Compiled Model files should be pulled in from the build directory even though132 # the source is stored in src/sas/models.133 134 # Compiled modules need to be pulled from the build directory.135 # Some packages are not where they are needed, so load them explicitly.136 import sas.sascalc.pr137 sas.sascalc.pr.core = import_package('sas.sascalc.pr.core',138 joinpath(build_path, 'sas', 'sascalc', 'pr', 'core'))139 140 # Compiled modules need to be pulled from the build directory.141 # Some packages are not where they are needed, so load them explicitly.142 import sas.sascalc.file_converter143 sas.sascalc.file_converter.core = import_package('sas.sascalc.file_converter.core',144 joinpath(build_path, 'sas', 'sascalc', 'file_converter', 'core'))145 146 import sas.sascalc.calculator147 sas.sascalc.calculator.core = import_package('sas.sascalc.calculator.core',148 joinpath(build_path, 'sas', 'sascalc', 'calculator', 'core'))149 150 sys.path.append(build_path)151 137 152 138 set_git_tag() -
setup.py
rc16172d r952ea1f 12 12 import shutil 13 13 import sys 14 from distutils.command.build_ext import build_ext15 from distutils.core import Command16 14 17 15 import numpy as np 16 18 17 from setuptools import Extension, setup 18 from setuptools import Command 19 from setuptools.command.build_ext import build_ext 19 20 20 21 try: … … 22 23 except ImportError: 23 24 pass 25 26 # Convert "test" argument to "pytest" so 'python setup.py test' works 27 sys.argv = [("pytest" if s == "test" else s) for s in sys.argv] 24 28 25 29 # Manage version number ###################################### … … 246 250 # sas.sascalc.calculator 247 251 gen_dir = os.path.join("src", "sas", "sascalc", "calculator", "c_extensions") 248 package_dir["sas.sascalc.calculator.core"] = gen_dir249 252 package_dir["sas.sascalc.calculator"] = os.path.join( 250 253 "src", "sas", "sascalc", "calculator") 251 packages. extend(["sas.sascalc.calculator", "sas.sascalc.calculator.core"])252 ext_modules.append(Extension("sas.sascalc.calculator. core.sld2i",254 packages.append("sas.sascalc.calculator") 255 ext_modules.append(Extension("sas.sascalc.calculator._sld2i", 253 256 sources=[ 254 257 os.path.join(gen_dir, "sld2i_module.c"), … … 258 261 ], 259 262 include_dirs=[gen_dir], 260 ) 261 ) 263 )) 262 264 263 265 # sas.sascalc.pr 264 266 srcdir = os.path.join("src", "sas", "sascalc", "pr", "c_extensions") 265 package_dir["sas.sascalc.pr.core"] = srcdir266 267 package_dir["sas.sascalc.pr"] = os.path.join("src", "sas", "sascalc", "pr") 267 packages. extend(["sas.sascalc.pr", "sas.sascalc.pr.core"])268 ext_modules.append(Extension("sas.sascalc.pr. core.pr_inversion",268 packages.append("sas.sascalc.pr") 269 ext_modules.append(Extension("sas.sascalc.pr._pr_inversion", 269 270 sources=[os.path.join(srcdir, "Cinvertor.c"), 270 271 os.path.join(srcdir, "invertor.c"), … … 276 277 # sas.sascalc.file_converter 277 278 mydir = os.path.join("src", "sas", "sascalc", "file_converter", "c_ext") 278 package_dir["sas.sascalc.file_converter.core"] = mydir279 279 package_dir["sas.sascalc.file_converter"] = os.path.join( 280 280 "src", "sas", "sascalc", "file_converter") 281 packages.extend(["sas.sascalc.file_converter", 282 "sas.sascalc.file_converter.core"]) 283 ext_modules.append(Extension("sas.sascalc.file_converter.core.bsl_loader", 281 packages.append("sas.sascalc.file_converter") 282 ext_modules.append(Extension("sas.sascalc.file_converter._bsl_loader", 284 283 sources=[os.path.join(mydir, "bsl_loader.c")], 285 284 include_dirs=[np.get_include()], … … 443 442 cmdclass={'build_ext': build_ext_subclass, 444 443 'docs': BuildSphinxCommand, 445 'disable_openmp': DisableOpenMPCommand} 444 'disable_openmp': DisableOpenMPCommand}, 445 setup_requires=['pytest-runner'] if 'pytest' in sys.argv else [], 446 tests_require=['pytest'], 446 447 ) -
src/sas/sascalc/calculator/c_extensions/sld2i_module.c
ra1daf86 r952ea1f 2 2 SLD2I module to perform point and I calculations 3 3 */ 4 #include <stdio.h> 5 6 //#define Py_LIMITED_API 0x03020000 4 7 #include <Python.h> 5 #include <stdio.h> 8 6 9 #include "sld2i.h" 7 10 … … 160 163 161 164 #define MODULE_DOC "Sld2i C Library" 162 #define MODULE_NAME " sld2i"163 #define MODULE_INIT2 init sld2i164 #define MODULE_INIT3 PyInit_ sld2i165 #define MODULE_NAME "_sld2i" 166 #define MODULE_INIT2 init_sld2i 167 #define MODULE_INIT3 PyInit__sld2i 165 168 #define MODULE_METHODS module_methods 166 169 -
src/sas/sascalc/calculator/sas_gen.py
r144e032a r952ea1f 14 14 import numpy as np 15 15 16 from . core import sld2i as mod16 from . import _sld2i 17 17 from .BaseComponent import BaseComponent 18 18 … … 145 145 self.params['Up_frac_out'], 146 146 self.params['Up_theta']) 147 model = mod.new_GenI(*args)147 model = _sld2i.new_GenI(*args) 148 148 if len(qy): 149 149 qx, qy = _vec(qx), _vec(qy) 150 150 I_out = np.empty_like(qx) 151 151 #print("npoints", qx.shape, "npixels", pos_x.shape) 152 mod.genicomXY(model, qx, qy, I_out)152 _sld2i.genicomXY(model, qx, qy, I_out) 153 153 #print("I_out after", I_out) 154 154 else: 155 155 qx = _vec(qx) 156 156 I_out = np.empty_like(qx) 157 mod.genicom(model, qx, I_out)157 _sld2i.genicom(model, qx, I_out) 158 158 vol_correction = self.data_total_volume / self.params['total_volume'] 159 159 result = (self.params['scale'] * vol_correction * I_out … … 304 304 z_dir2 *= z_dir2 305 305 mask = (x_dir2 + y_dir2 + z_dir2) <= 1.0 306 except Exception :307 logger.error( sys.exc_value)306 except Exception as exc: 307 logger.error(exc) 308 308 self.output = MagSLD(self.pos_x[mask], self.pos_y[mask], 309 309 self.pos_z[mask], self.sld_n[mask], … … 600 600 y_lines.append(y_line) 601 601 z_lines.append(z_line) 602 except Exception :603 logger.error( sys.exc_value)602 except Exception as exc: 603 logger.error(exc) 604 604 605 605 output = MagSLD(pos_x, pos_y, pos_z, sld_n, sld_mx, sld_my, sld_mz) … … 691 691 _vol_pix = float(toks[7]) 692 692 vol_pix = np.append(vol_pix, _vol_pix) 693 except Exception :693 except Exception as exc: 694 694 vol_pix = None 695 except Exception :695 except Exception as exc: 696 696 # Skip non-data lines 697 logger.error( sys.exc_value)697 logger.error(exc) 698 698 output = MagSLD(pos_x, pos_y, pos_z, sld_n, 699 699 sld_mx, sld_my, sld_mz) -
src/sas/sascalc/file_converter/bsl_loader.py
rf00691d4 r952ea1f 1 from sas.sascalc.file_converter. core.bsl_loader import CLoader1 from sas.sascalc.file_converter._bsl_loader import CLoader 2 2 from sas.sascalc.dataloader.data_info import Data2D 3 3 from copy import deepcopy … … 67 67 'swap_bytes': int(metadata[3]) 68 68 } 69 except :69 except Exception: 70 70 is_valid = False 71 71 err_msg = "Invalid metadata in header file for {}" -
src/sas/sascalc/file_converter/c_ext/bsl_loader.c
rd5aeaa3 r952ea1f 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 //#define Py_LIMITED_API 0x03020000 1 5 #include <Python.h> 6 #include <structmember.h> 2 7 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION 3 8 #include <numpy/arrayobject.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include "structmember.h" 9 7 10 #include "bsl_loader.h" 8 11 … … 292 295 293 296 #define MODULE_DOC "C module for loading bsl." 294 #define MODULE_NAME " bsl_loader"295 #define MODULE_INIT2 init bsl_loader296 #define MODULE_INIT3 PyInit_ bsl_loader297 #define MODULE_NAME "_bsl_loader" 298 #define MODULE_INIT2 init_bsl_loader 299 #define MODULE_INIT3 PyInit__bsl_loader 297 300 #define MODULE_METHODS module_methods 298 301 -
src/sas/sascalc/pr/c_extensions/Cinvertor.c
ra52f32f r952ea1f 5 5 * 6 6 */ 7 #include <Python.h>8 #include "structmember.h"9 7 #include <stdio.h> 10 8 #include <stdlib.h> … … 12 10 #include <time.h> 13 11 12 //#define Py_LIMITED_API 0x03050000 13 #include <Python.h> 14 #include <structmember.h> 15 14 16 #include "invertor.h" 15 16 17 17 18 /// Error object for raised exceptions … … 1121 1122 1122 1123 #define MODULE_DOC "C extension module for inversion to P(r)." 1123 #define MODULE_NAME " pr_inversion"1124 #define MODULE_INIT2 init pr_inversion1125 #define MODULE_INIT3 PyInit_ pr_inversion1124 #define MODULE_NAME "_pr_inversion" 1125 #define MODULE_INIT2 init_pr_inversion 1126 #define MODULE_INIT3 PyInit__pr_inversion 1126 1127 #define MODULE_METHODS module_methods 1127 1128 -
src/sas/sascalc/pr/invertor.py
r2469df7 r952ea1f 17 17 from numpy.linalg import lstsq 18 18 from scipy import optimize 19 from sas.sascalc.pr. core.pr_inversion import Cinvertor19 from sas.sascalc.pr._pr_inversion import Cinvertor 20 20 21 21 logger = logging.getLogger(__name__) … … 71 71 A[j][i] = (Fourier transformed base function for point j) 72 72 73 We the mchoose a number of r-points, n_r, to evaluate the second73 We then choose a number of r-points, n_r, to evaluate the second 74 74 derivative of P(r) at. This is used as our regularization term. 75 75 For a vector r of length n_r, the following n_r rows are set to :: … … 144 144 x, y, err, d_max, q_min, q_max and alpha 145 145 """ 146 if 146 if name == 'x': 147 147 if 0.0 in value: 148 148 msg = "Invertor: one of your q-values is zero. " … … 268 268 A[i][j] = (Fourier transformed base function for point j) 269 269 270 We the mchoose a number of r-points, n_r, to evaluate the second270 We then choose a number of r-points, n_r, to evaluate the second 271 271 derivative of P(r) at. This is used as our regularization term. 272 272 For a vector r of length n_r, the following n_r rows are set to :: … … 416 416 A[i][j] = (Fourier transformed base function for point j) 417 417 418 We the mchoose a number of r-points, n_r, to evaluate the second418 We then choose a number of r-points, n_r, to evaluate the second 419 419 derivative of P(r) at. This is used as our regularization term. 420 420 For a vector r of length n_r, the following n_r rows are set to :: … … 473 473 474 474 # Perform the inversion (least square fit) 475 c, chi2, _, _ = lstsq(a, b )475 c, chi2, _, _ = lstsq(a, b, rcond=None) 476 476 # Sanity check 477 477 try: … … 497 497 cov = np.linalg.pinv(inv_cov) 498 498 err = math.fabs(chi2 / float(npts - nfunc)) * cov 499 except :499 except Exception as exc: 500 500 # We were not able to estimate the errors 501 501 # Return an empty error matrix 502 logger.error( sys.exc_value)502 logger.error(exc) 503 503 504 504 # Keep a copy of the last output … … 537 537 538 538 """ 539 from num_term import NTermEstimator539 from .num_term import NTermEstimator 540 540 estimator = NTermEstimator(self.clone()) 541 541 try: 542 542 return estimator.num_terms(isquit_func) 543 except :543 except Exception as exc: 544 544 # If we fail, estimate alpha and return the default 545 545 # number of terms 546 546 best_alpha, _, _ = self.estimate_alpha(self.nfunc) 547 logger.warning("Invertor.estimate_numterms: %s" % sys.exc_value)547 logger.warning("Invertor.estimate_numterms: %s" % exc) 548 548 return self.nfunc, best_alpha, "Could not estimate number of terms" 549 549 … … 631 631 return best_alpha, message, elapsed 632 632 633 except :634 message = "Invertor.estimate_alpha: %s" % sys.exc_value633 except Exception as exc: 634 message = "Invertor.estimate_alpha: %s" % exc 635 635 return 0, message, elapsed 636 636 … … 748 748 self.cov[i][i] = float(toks2[1]) 749 749 750 except :751 msg = "Invertor.from_file: corrupted file\n%s" % sys.exc_value750 except Exception as exc: 751 msg = "Invertor.from_file: corrupted file\n%s" % exc 752 752 raise RuntimeError(msg) 753 753 else:
Note: See TracChangeset
for help on using the changeset viewer.