Changeset e090ba90 in sasview for src/sas/sascalc
- Timestamp:
- Oct 11, 2018 1:59:57 PM (6 years ago)
- Branches:
- master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1249
- Children:
- 88d2e70
- Parents:
- 67ed543
- Location:
- src/sas/sascalc
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/instrument.py
rf4775563 re090ba90 128 128 self.size = 0 129 129 else: 130 self.size = size 130 # TODO: Make sure detector size is number of pixels 131 # Could be detector dimensions in e.g., mm, but 132 # the resolution calculator assumes it is pixels. 133 # Being pixels, it has to be integers rather than float 134 self.size = [int(s) for s in size] 131 135 validate(size[0]) 132 136 -
src/sas/sascalc/calculator/resolution_calculator.py
r574adc7 re090ba90 1007 1007 try: 1008 1008 detector_offset = self.sample2detector_distance[1] 1009 except :1010 logger.error( sys.exc_value)1009 except Exception as exc: 1010 logger.error(exc) 1011 1011 1012 1012 # detector size in [no of pix_x,no of pix_y] … … 1094 1094 output.qx_data = qx_value 1095 1095 output.qy_data = qy_value 1096 except :1097 logger.error( sys.exc_value)1096 except Exception as exc: 1097 logger.error(exc) 1098 1098 1099 1099 return output -
src/sas/sascalc/corfunc/corfunc_calculator.py
ra26f67f re090ba90 30 30 self.start = start 31 31 self.stop = stop 32 self._lastx = []33 self._lasty = []32 self._lastx = np.empty(0, dtype='d') 33 self._lasty = None 34 34 35 35 def __call__(self, x): 36 36 # If input is a single number, evaluate the function at that number 37 37 # and return a single number 38 if type(x) == float or type(x) == int:38 if isinstance(x, (float, int)): 39 39 return self._smoothed_function(np.array([x]))[0] 40 40 # If input is a list, and is different to the last input, evaluate … … 42 42 # the function was called, return the result that was calculated 43 43 # last time instead of explicity evaluating the function again. 44 elif self._lastx == [] or x.tolist() != self._lastx.tolist(): 45 self._lasty = self._smoothed_function(x) 46 self._lastx = x 44 if not np.array_equal(x, self._lastx): 45 self._lastx, self._lasty = x, self._smoothed_function(x) 47 46 return self._lasty 48 47 … … 88 87 # Only process data of the class Data1D 89 88 if not issubclass(data.__class__, Data1D): 90 raise ValueError(" Data must be of the type DataLoader.Data1D")89 raise ValueError("Correlation function cannot be computed with 2D data.") 91 90 92 91 # Prepare the data … … 246 245 """Fit the Guinier region of the curve""" 247 246 A = np.vstack([q**2, np.ones(q.shape)]).T 248 return lstsq(A, np.log(iq) )247 return lstsq(A, np.log(iq), rcond=None) 249 248 250 249 def _fit_porod(self, q, iq): -
src/sas/sascalc/data_util/calcthread.py
r574adc7 re090ba90 6 6 from __future__ import print_function 7 7 8 import traceback9 8 import sys 10 9 import logging 10 import traceback 11 from time import sleep 12 11 13 try: 12 14 import _thread as thread 13 15 except ImportError: # CRUFT: python 2 support 14 16 import thread 15 16 if sys.platform.count("darwin") > 0: 17 import time 18 stime = time.time() 19 20 def clock(): 21 return time.time() - stime 22 23 def sleep(t): 24 return time.sleep(t) 25 else: 26 from time import clock 27 from time import sleep 17 try: 18 from time import perf_counter as clock 19 except ImportError: # CRUFT: python < 3.3 20 if sys.platform.count("darwin") > 0: 21 from time import time as clock 22 else: 23 from time import clock 28 24 29 25 logger = logging.getLogger(__name__) 30 31 26 32 27 class CalcThread: … … 248 243 self.exception_handler(*sys.exc_info()) 249 244 return 250 except Exception :245 except Exception as exc: 251 246 pass 252 247 logger.error(traceback.format_exc()) -
src/sas/sascalc/data_util/nxsunit.py
r574adc7 re090ba90 99 99 Strip '^' from unit names. 100 100 101 * WARNING * this will incorrect transform 10^3 to 103. 102 """ 103 s.update((k.replace('^',''),v) 104 for k, v in list(s.items()) 105 if '^' in k) 101 * WARNING * this will incorrectly transform 10^3 to 103. 102 """ 103 stripped = [(k.replace('^',''),v) for k, v in s.items() if '^' in k] 104 s.update(stripped) 106 105 107 106 def _build_all_units(): -
src/sas/sascalc/data_util/ordereddicttest.py
rb699768 re090ba90 147 147 ]): 148 148 self.assert_(dup is not od) 149 self.assertEqual s(dup, od)150 self.assertEqual s(list(dup.items()), list(od.items()))151 self.assertEqual s(len(dup), len(od))152 self.assertEqual s(type(dup), type(od))149 self.assertEqual(dup, od) 150 self.assertEqual(list(dup.items()), list(od.items())) 151 self.assertEqual(len(dup), len(od)) 152 self.assertEqual(type(dup), type(od)) 153 153 154 154 def test_repr(self): -
src/sas/sascalc/data_util/registry.py
ra26f67f re090ba90 148 148 # If file has associated loader(s) and they;ve failed 149 149 raise last_exc 150 raise NoKnownLoaderException( e.message) # raise generic exception150 raise NoKnownLoaderException(str(message)) # raise generic exception -
src/sas/sascalc/data_util/uncertainty.py
r574adc7 re090ba90 19 19 import numpy as np 20 20 21 from . import err1d21 from . import err1d 22 22 from .formatnum import format_uncertainty 23 23 -
src/sas/sascalc/dataloader/data_info.py
r9e6aeaf re090ba90 26 26 import numpy as np 27 27 import math 28 from math import fabs 28 29 29 30 class plottable_1D(object): … … 656 657 return self._perform_operation(other, operation) 657 658 658 def __ div__(self, other):659 def __truediv__(self, other): 659 660 """ 660 661 Divided a data set by another … … 667 668 return a/b 668 669 return self._perform_operation(other, operation) 669 670 def __rdiv__(self, other): 670 __div__ = __truediv__ 671 672 def __rtruediv__(self, other): 671 673 """ 672 674 Divided a data set by another … … 679 681 return b/a 680 682 return self._perform_operation(other, operation) 683 __rdiv__ = __rtruediv__ 681 684 682 685 def __or__(self, other): … … 800 803 TOLERANCE = 0.01 801 804 for i in range(len(self.x)): 802 if math.fabs((self.x[i] - other.x[i])/self.x[i]) >TOLERANCE:805 if fabs(self.x[i] - other.x[i]) > self.x[i]*TOLERANCE: 803 806 msg = "Incompatible data sets: x-values do not match" 804 807 raise ValueError(msg) … … 1022 1025 raise ValueError(msg) 1023 1026 for ind in range(len(self.data)): 1024 if math.fabs((self.qx_data[ind] - other.qx_data[ind])/self.qx_data[ind]) >TOLERANCE:1027 if fabs(self.qx_data[ind] - other.qx_data[ind]) > fabs(self.qx_data[ind])*TOLERANCE: 1025 1028 msg = "Incompatible data sets: qx-values do not match: %s %s" % (self.qx_data[ind], other.qx_data[ind]) 1026 1029 raise ValueError(msg) 1027 if math.fabs((self.qy_data[ind] - other.qy_data[ind])/self.qy_data[ind]) >TOLERANCE:1030 if fabs(self.qy_data[ind] - other.qy_data[ind]) > fabs(self.qy_data[ind])*TOLERANCE: 1028 1031 msg = "Incompatible data sets: qy-values do not match: %s %s" % (self.qy_data[ind], other.qy_data[ind]) 1029 1032 raise ValueError(msg) -
src/sas/sascalc/dataloader/loader.py
r4a8d55c re090ba90 169 169 if self._identify_plugin(module): 170 170 readers_found += 1 171 except :171 except Exception as exc: 172 172 msg = "Loader: Error importing " 173 msg += "%s\n %s" % (item, sys.exc_value)173 msg += "%s\n %s" % (item, exc) 174 174 logger.error(msg) 175 175 … … 191 191 if self._identify_plugin(module): 192 192 readers_found += 1 193 except :193 except Exception as exc: 194 194 msg = "Loader: Error importing" 195 msg += " %s\n %s" % (mfile, sys.exc_value)195 msg += " %s\n %s" % (mfile, exc) 196 196 logger.error(msg) 197 197 198 except :198 except Exception as exc: 199 199 msg = "Loader: Error importing " 200 msg += " %s\n %s" % (item, sys.exc_value)200 msg += " %s\n %s" % (item, exc) 201 201 logger.error(msg) 202 202 … … 242 242 self.writers[ext].append(loader.write) 243 243 244 except :244 except Exception as exc: 245 245 msg = "Loader: Error accessing" 246 msg += " Reader in %s\n %s" % (module.__name__, sys.exc_value)246 msg += " Reader in %s\n %s" % (module.__name__, exc) 247 247 logger.error(msg) 248 248 return reader_found … … 275 275 self.wildcards.append(wcard) 276 276 277 except :277 except Exception as exc: 278 278 msg = "Loader: Error accessing Reader " 279 msg += "in %s\n %s" % (loader.__name__, sys.exc_value)279 msg += "in %s\n %s" % (loader.__name__, exc) 280 280 logger.error(msg) 281 281 return reader_found … … 320 320 self.writers[ext].insert(0, loader.write) 321 321 322 except :322 except Exception as exc: 323 323 msg = "Loader: Error accessing Reader" 324 msg += " in %s\n %s" % (module.__name__, sys.exc_value)324 msg += " in %s\n %s" % (module.__name__, exc) 325 325 logger.error(msg) 326 326 return reader_found -
src/sas/sascalc/dataloader/manipulations.py
r574adc7 re090ba90 928 928 929 929 # Organize the results 930 for i in range(self.nbins): 931 y[i] = y[i] / y_counts[i] 932 y_err[i] = math.sqrt(y_err[i]) / y_counts[i] 933 930 with np.errstate(divide='ignore', invalid='ignore'): 931 y = y/y_counts 932 y_err = np.sqrt(y_err)/y_counts 934 933 # The type of averaging: phi,q2, or q 935 934 # Calculate x[i]should be at the center of the bin 936 935 if run.lower() == 'phi': 937 x[i] = (self.phi_max - self.phi_min) / self.nbins * \938 (1.0 * i + 0.5)+ self.phi_min936 step = (self.phi_max - self.phi_min) / self.nbins 937 x = (np.arange(self.nbins) + 0.5) * step + self.phi_min 939 938 else: 940 939 # We take the center of ring area, not radius. … … 944 943 # r_outer = r_inner + delta_r 945 944 # x[i] = math.sqrt((r_inner * r_inner + r_outer * r_outer) / 2) 946 x [i] = x[i] / y_counts[i]947 y_err[y_err == 0] = np.average(y_err) 945 x = x/y_counts 946 948 947 idx = (np.isfinite(y) & np.isfinite(y_err)) 949 948 if x_err is not None: -
src/sas/sascalc/dataloader/readers/associations.py
ra32c19c re090ba90 53 53 exec("loader.associate_file_type('%s', %s)" 54 54 % (ext.upper(), reader)) 55 except :55 except Exception as exc: 56 56 msg = "read_associations: skipping association" 57 msg += " for %s\n %s" % (ext.lower(), sys.exc_value)57 msg += " for %s\n %s" % (ext.lower(), exc) 58 58 logger.error(msg) -
src/sas/sascalc/dataloader/readers/cansas_reader.py
r2469df7 re090ba90 1239 1239 conv = Converter(units) 1240 1240 setattrchain(storage, variable, conv(value, units=local_unit)) 1241 except Exception: 1242 _, exc_value, _ = sys.exc_info() 1241 except Exception as exc: 1243 1242 err_mess = "CanSAS reader: could not convert" 1244 1243 err_mess += " %s unit [%s]; expecting [%s]\n %s" \ 1245 % (variable, units, local_unit, exc _value)1244 % (variable, units, local_unit, exc) 1246 1245 self.errors.add(err_mess) 1247 1246 if optional: -
src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py
r61f329f0 re090ba90 475 475 for i in range(0, dataset.mask.size - 1): 476 476 zeros[i] = dataset.mask[i] 477 except :478 self.errors.add( sys.exc_value)477 except Exception as exc: 478 self.errors.add(exc) 479 479 dataset.mask = zeros 480 480 # Calculate the actual Q matrix -
src/sas/sascalc/fit/expression.py
r574adc7 re090ba90 210 210 211 211 #print("Function: "+functiondef) 212 exec functiondef in globals,locals212 exec(functiondef, globals, locals) 213 213 retfn = locals['eval_expressions'] 214 214 -
src/sas/sascalc/fit/models.py
rb963b20 re090ba90 12 12 import py_compile 13 13 import shutil 14 15 from six import reraise 14 16 15 17 from sasmodels.sasview_model import load_custom_model, load_standard_models … … 62 64 try: 63 65 new_instance = model() 64 except Exception: 65 msg = "Plugin %s error in __init__ \n\t: %s %s\n" % (str(name), 66 str(sys.exc_type), 67 sys.exc_info()[1]) 66 except Exception as exc: 67 msg = ("Plugin %s error in __init__ \n\t: %s %s\n" 68 % (name, type(exc), exc)) 68 69 plugin_log(msg) 69 70 return None … … 72 73 try: 73 74 value = new_instance.function() 74 except Exception :75 except Exception as exc: 75 76 msg = "Plugin %s: error writing function \n\t :%s %s\n " % \ 76 (str(name), str( sys.exc_type), sys.exc_info()[1])77 (str(name), str(type(exc)), exc) 77 78 plugin_log(msg) 78 79 return None … … 139 140 if type is not None and issubclass(type, py_compile.PyCompileError): 140 141 print("Problem with", repr(value)) 141 r aise type, value, tb142 reraise(type, value, tb) 142 143 return 1 143 144 … … 153 154 compileall.compile_dir(dir=dir, ddir=dir, force=0, 154 155 quiet=report_problem) 155 except Exception :156 return sys.exc_info()[1]156 except Exception as exc: 157 return exc 157 158 return None 158 159 … … 185 186 model.name = PLUGIN_NAME_BASE + model.name 186 187 plugins[model.name] = model 187 except Exception :188 except Exception as exc: 188 189 msg = traceback.format_exc() 189 190 msg += "\nwhile accessing model in %r" % path -
src/sas/sascalc/fit/pagestate.py
r863ac2c re090ba90 650 650 #Truncating string so print doesn't complain of being outside margins 651 651 if sys.platform != "win32": 652 MAX_STRING_LENG HT= 50653 if len(file_value) > MAX_STRING_LENG HT:654 file_value = "File name:.."+file_value[-MAX_STRING_LENG HT+10:]652 MAX_STRING_LENGTH = 50 653 if len(file_value) > MAX_STRING_LENGTH: 654 file_value = "File name:.."+file_value[-MAX_STRING_LENGTH+10:] 655 655 file_name = CENTRE % file_value 656 656 if len(title) == 0: … … 905 905 doc_model = newdoc.createElement('model_list_item') 906 906 doc_model.setAttribute('checked', str(model[0].GetValue())) 907 keys = model[1].keys()907 keys = list(model[1].keys()) 908 908 doc_model.setAttribute('name', str(keys[0])) 909 909 values = model[1].get(keys[0]) … … 964 964 if node.get('version'): 965 965 # Get the version for model conversion purposes 966 x = re.sub( '[^\d.]', '', node.get('version'))966 x = re.sub(r'[^\d.]', '', node.get('version')) 967 967 self.version = tuple(int(e) for e in str.split(x, ".")) 968 968 # The tuple must be at least 3 items long … … 984 984 try: 985 985 self.timestamp = float(entry.get('epoch')) 986 except Exception :986 except Exception as exc: 987 987 msg = "PageState.fromXML: Could not" 988 msg += " read timestamp\n %s" % sys.exc_value988 msg += " read timestamp\n %s" % exc 989 989 logger.error(msg) 990 990 … … 1282 1282 if isinstance(data.run_name, dict): 1283 1283 # Note: key order in dict is not guaranteed, so sort 1284 name = data.run_name.keys()[0]1284 name = list(data.run_name.keys())[0] 1285 1285 else: 1286 1286 name = data.run_name -
src/sas/sascalc/invariant/invariant.py
r574adc7 re090ba90 344 344 else: 345 345 A = np.vstack([linearized_data.x / linearized_data.dy, 1.0 / linearized_data.dy]).T 346 (p, residuals, _, _) = np.linalg.lstsq(A, linearized_data.y / linearized_data.dy) 346 p, residuals, _, _ = np.linalg.lstsq(A, linearized_data.y / linearized_data.dy, 347 rcond=None) 347 348 348 349 # Get the covariance matrix, defined as inv_cov = a_transposed * a -
src/sas/sascalc/pr/distance_explorer.py
r959eb01 re090ba90 99 99 results.pos_err.append(pos_err) 100 100 results.osc.append(osc) 101 except :101 except Exception as exc: 102 102 # This inversion failed, skip this D_max value 103 103 msg = "ExploreDialog: inversion failed for " 104 msg += "D_max=%s\n %s" % (str(d), sys.exc_value)104 msg += "D_max=%s\n %s" % (str(d), exc) 105 105 results.errors.append(msg) 106 106 -
src/sas/sascalc/pr/fit/expression.py
r574adc7 re090ba90 210 210 211 211 #print("Function: "+functiondef) 212 exec functiondef in globals,locals212 exec(functiondef, globals, locals) 213 213 retfn = locals['eval_expressions'] 214 214 -
src/sas/sascalc/pr/num_term.py
r2469df7 re090ba90 182 182 data_y = np.append(data_y, test_y) 183 183 data_err = np.append(data_err, err) 184 except :185 logger.error( sys.exc_value)184 except Exception as exc: 185 logger.error(exc) 186 186 187 187 return data_x, data_y, data_err -
src/sas/sascalc/realspace/VolumeCanvas.py
r98e3f24 re090ba90 472 472 Return a list of the shapes 473 473 """ 474 return self.shapes.keys()474 return list(self.shapes.keys()) 475 475 476 476 def _addSingleShape(self, shapeDesc):
Note: See TracChangeset
for help on using the changeset viewer.