Changeset 9c0f3c17 in sasview for src/sas/sascalc/calculator/sas_gen.py
- Timestamp:
- Apr 4, 2017 12:50:04 PM (7 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- f2940c4
- Parents:
- 463e7ffc (diff), 1779e72 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/sas_gen.py
r463e7ffc r9c0f3c17 7 7 from periodictable import formula 8 8 from periodictable import nsf 9 import numpy 9 import numpy as np 10 10 import os 11 11 import copy … … 82 82 ## Parameter details [units, min, max] 83 83 self.details = {} 84 self.details['scale'] = ['', 0.0, n umpy.inf]85 self.details['background'] = ['[1/cm]', 0.0, n umpy.inf]86 self.details['solvent_SLD'] = ['1/A^(2)', -n umpy.inf, numpy.inf]87 self.details['total_volume'] = ['A^(3)', 0.0, n umpy.inf]84 self.details['scale'] = ['', 0.0, np.inf] 85 self.details['background'] = ['[1/cm]', 0.0, np.inf] 86 self.details['solvent_SLD'] = ['1/A^(2)', -np.inf, np.inf] 87 self.details['total_volume'] = ['A^(3)', 0.0, np.inf] 88 88 self.details['Up_frac_in'] = ['[u/(u+d)]', 0.0, 1.0] 89 89 self.details['Up_frac_out'] = ['[u/(u+d)]', 0.0, 1.0] 90 self.details['Up_theta'] = ['[deg]', -n umpy.inf, numpy.inf]90 self.details['Up_theta'] = ['[deg]', -np.inf, np.inf] 91 91 # fixed parameters 92 92 self.fixed = [] … … 173 173 msg = "Not a 1D." 174 174 raise ValueError, msg 175 i_out = n umpy.zeros_like(x[0])175 i_out = np.zeros_like(x[0]) 176 176 # 1D I is found at y =0 in the 2D pattern 177 177 out = self._gen(x[0], [], i_out) … … 189 189 """ 190 190 if x.__class__.__name__ == 'list': 191 i_out = n umpy.zeros_like(x[0])191 i_out = np.zeros_like(x[0]) 192 192 out = self._gen(x[0], x[1], i_out) 193 193 return out … … 239 239 self.omfdata = omfdata 240 240 length = int(omfdata.xnodes * omfdata.ynodes * omfdata.znodes) 241 pos_x = n umpy.arange(omfdata.xmin,241 pos_x = np.arange(omfdata.xmin, 242 242 omfdata.xnodes*omfdata.xstepsize + omfdata.xmin, 243 243 omfdata.xstepsize) 244 pos_y = n umpy.arange(omfdata.ymin,244 pos_y = np.arange(omfdata.ymin, 245 245 omfdata.ynodes*omfdata.ystepsize + omfdata.ymin, 246 246 omfdata.ystepsize) 247 pos_z = n umpy.arange(omfdata.zmin,247 pos_z = np.arange(omfdata.zmin, 248 248 omfdata.znodes*omfdata.zstepsize + omfdata.zmin, 249 249 omfdata.zstepsize) 250 self.pos_x = n umpy.tile(pos_x, int(omfdata.ynodes * omfdata.znodes))250 self.pos_x = np.tile(pos_x, int(omfdata.ynodes * omfdata.znodes)) 251 251 self.pos_y = pos_y.repeat(int(omfdata.xnodes)) 252 self.pos_y = n umpy.tile(self.pos_y, int(omfdata.znodes))252 self.pos_y = np.tile(self.pos_y, int(omfdata.znodes)) 253 253 self.pos_z = pos_z.repeat(int(omfdata.xnodes * omfdata.ynodes)) 254 254 self.mx = omfdata.mx 255 255 self.my = omfdata.my 256 256 self.mz = omfdata.mz 257 self.sld_n = n umpy.zeros(length)257 self.sld_n = np.zeros(length) 258 258 259 259 if omfdata.mx == None: 260 self.mx = n umpy.zeros(length)260 self.mx = np.zeros(length) 261 261 if omfdata.my == None: 262 self.my = n umpy.zeros(length)262 self.my = np.zeros(length) 263 263 if omfdata.mz == None: 264 self.mz = n umpy.zeros(length)264 self.mz = np.zeros(length) 265 265 266 266 self._check_data_length(length) 267 267 self.remove_null_points(False, False) 268 mask = n umpy.ones(len(self.sld_n), dtype=bool)268 mask = np.ones(len(self.sld_n), dtype=bool) 269 269 if shape.lower() == 'ellipsoid': 270 270 try: … … 330 330 """ 331 331 if remove: 332 is_nonzero = (n umpy.fabs(self.mx) + numpy.fabs(self.my) +333 n umpy.fabs(self.mz)).nonzero()332 is_nonzero = (np.fabs(self.mx) + np.fabs(self.my) + 333 np.fabs(self.mz)).nonzero() 334 334 if len(is_nonzero[0]) > 0: 335 335 self.pos_x = self.pos_x[is_nonzero] … … 371 371 """ 372 372 desc = "" 373 mx = n umpy.zeros(0)374 my = n umpy.zeros(0)375 mz = n umpy.zeros(0)373 mx = np.zeros(0) 374 my = np.zeros(0) 375 mz = np.zeros(0) 376 376 try: 377 377 input_f = open(path, 'rb') … … 391 391 _my = mag2sld(_my, valueunit) 392 392 _mz = mag2sld(_mz, valueunit) 393 mx = n umpy.append(mx, _mx)394 my = n umpy.append(my, _my)395 mz = n umpy.append(mz, _mz)393 mx = np.append(mx, _mx) 394 my = np.append(my, _my) 395 mz = np.append(mz, _mz) 396 396 except: 397 397 # Skip non-data lines … … 503 503 :raise RuntimeError: when the file can't be opened 504 504 """ 505 pos_x = n umpy.zeros(0)506 pos_y = n umpy.zeros(0)507 pos_z = n umpy.zeros(0)508 sld_n = n umpy.zeros(0)509 sld_mx = n umpy.zeros(0)510 sld_my = n umpy.zeros(0)511 sld_mz = n umpy.zeros(0)512 vol_pix = n umpy.zeros(0)513 pix_symbol = n umpy.zeros(0)505 pos_x = np.zeros(0) 506 pos_y = np.zeros(0) 507 pos_z = np.zeros(0) 508 sld_n = np.zeros(0) 509 sld_mx = np.zeros(0) 510 sld_my = np.zeros(0) 511 sld_mz = np.zeros(0) 512 vol_pix = np.zeros(0) 513 pix_symbol = np.zeros(0) 514 514 x_line = [] 515 515 y_line = [] … … 545 545 _pos_y = float(line[38:46].strip()) 546 546 _pos_z = float(line[46:54].strip()) 547 pos_x = n umpy.append(pos_x, _pos_x)548 pos_y = n umpy.append(pos_y, _pos_y)549 pos_z = n umpy.append(pos_z, _pos_z)547 pos_x = np.append(pos_x, _pos_x) 548 pos_y = np.append(pos_y, _pos_y) 549 pos_z = np.append(pos_z, _pos_z) 550 550 try: 551 551 val = nsf.neutron_sld(atom_name)[0] 552 552 # sld in Ang^-2 unit 553 553 val *= 1.0e-6 554 sld_n = n umpy.append(sld_n, val)554 sld_n = np.append(sld_n, val) 555 555 atom = formula(atom_name) 556 556 # cm to A units 557 557 vol = 1.0e+24 * atom.mass / atom.density / NA 558 vol_pix = n umpy.append(vol_pix, vol)558 vol_pix = np.append(vol_pix, vol) 559 559 except: 560 560 print "Error: set the sld of %s to zero"% atom_name 561 sld_n = n umpy.append(sld_n, 0.0)562 sld_mx = n umpy.append(sld_mx, 0)563 sld_my = n umpy.append(sld_my, 0)564 sld_mz = n umpy.append(sld_mz, 0)565 pix_symbol = n umpy.append(pix_symbol, atom_name)561 sld_n = np.append(sld_n, 0.0) 562 sld_mx = np.append(sld_mx, 0) 563 sld_my = np.append(sld_my, 0) 564 sld_mz = np.append(sld_mz, 0) 565 pix_symbol = np.append(pix_symbol, atom_name) 566 566 elif line[0:6].strip().count('CONECT') > 0: 567 567 toks = line.split() … … 632 632 """ 633 633 try: 634 pos_x = n umpy.zeros(0)635 pos_y = n umpy.zeros(0)636 pos_z = n umpy.zeros(0)637 sld_n = n umpy.zeros(0)638 sld_mx = n umpy.zeros(0)639 sld_my = n umpy.zeros(0)640 sld_mz = n umpy.zeros(0)634 pos_x = np.zeros(0) 635 pos_y = np.zeros(0) 636 pos_z = np.zeros(0) 637 sld_n = np.zeros(0) 638 sld_mx = np.zeros(0) 639 sld_my = np.zeros(0) 640 sld_mz = np.zeros(0) 641 641 try: 642 642 # Use numpy to speed up loading 643 input_f = n umpy.loadtxt(path, dtype='float', skiprows=1,643 input_f = np.loadtxt(path, dtype='float', skiprows=1, 644 644 ndmin=1, unpack=True) 645 pos_x = n umpy.array(input_f[0])646 pos_y = n umpy.array(input_f[1])647 pos_z = n umpy.array(input_f[2])648 sld_n = n umpy.array(input_f[3])649 sld_mx = n umpy.array(input_f[4])650 sld_my = n umpy.array(input_f[5])651 sld_mz = n umpy.array(input_f[6])645 pos_x = np.array(input_f[0]) 646 pos_y = np.array(input_f[1]) 647 pos_z = np.array(input_f[2]) 648 sld_n = np.array(input_f[3]) 649 sld_mx = np.array(input_f[4]) 650 sld_my = np.array(input_f[5]) 651 sld_mz = np.array(input_f[6]) 652 652 ncols = len(input_f) 653 653 if ncols == 8: 654 vol_pix = n umpy.array(input_f[7])654 vol_pix = np.array(input_f[7]) 655 655 elif ncols == 7: 656 656 vol_pix = None … … 671 671 _sld_my = float(toks[5]) 672 672 _sld_mz = float(toks[6]) 673 pos_x = n umpy.append(pos_x, _pos_x)674 pos_y = n umpy.append(pos_y, _pos_y)675 pos_z = n umpy.append(pos_z, _pos_z)676 sld_n = n umpy.append(sld_n, _sld_n)677 sld_mx = n umpy.append(sld_mx, _sld_mx)678 sld_my = n umpy.append(sld_my, _sld_my)679 sld_mz = n umpy.append(sld_mz, _sld_mz)673 pos_x = np.append(pos_x, _pos_x) 674 pos_y = np.append(pos_y, _pos_y) 675 pos_z = np.append(pos_z, _pos_z) 676 sld_n = np.append(sld_n, _sld_n) 677 sld_mx = np.append(sld_mx, _sld_mx) 678 sld_my = np.append(sld_my, _sld_my) 679 sld_mz = np.append(sld_mz, _sld_mz) 680 680 try: 681 681 _vol_pix = float(toks[7]) 682 vol_pix = n umpy.append(vol_pix, _vol_pix)682 vol_pix = np.append(vol_pix, _vol_pix) 683 683 except: 684 684 vol_pix = None … … 714 714 sld_n = data.sld_n 715 715 if sld_n == None: 716 sld_n = n umpy.zeros(length)716 sld_n = np.zeros(length) 717 717 sld_mx = data.sld_mx 718 718 if sld_mx == None: 719 sld_mx = n umpy.zeros(length)720 sld_my = n umpy.zeros(length)721 sld_mz = n umpy.zeros(length)719 sld_mx = np.zeros(length) 720 sld_my = np.zeros(length) 721 sld_mz = np.zeros(length) 722 722 else: 723 723 sld_my = data.sld_my … … 895 895 if self.is_data: 896 896 # For data, put the value to only the pixels w non-zero M 897 is_nonzero = (n umpy.fabs(self.sld_mx) +898 n umpy.fabs(self.sld_my) +899 n umpy.fabs(self.sld_mz)).nonzero()900 self.sld_n = n umpy.zeros(len(self.pos_x))897 is_nonzero = (np.fabs(self.sld_mx) + 898 np.fabs(self.sld_my) + 899 np.fabs(self.sld_mz)).nonzero() 900 self.sld_n = np.zeros(len(self.pos_x)) 901 901 if len(self.sld_n[is_nonzero]) > 0: 902 902 self.sld_n[is_nonzero] = sld_n … … 905 905 else: 906 906 # For non-data, put the value to all the pixels 907 self.sld_n = n umpy.ones(len(self.pos_x)) * sld_n907 self.sld_n = np.ones(len(self.pos_x)) * sld_n 908 908 else: 909 909 self.sld_n = sld_n … … 914 914 """ 915 915 if sld_mx.__class__.__name__ == 'float': 916 self.sld_mx = n umpy.ones(len(self.pos_x)) * sld_mx916 self.sld_mx = np.ones(len(self.pos_x)) * sld_mx 917 917 else: 918 918 self.sld_mx = sld_mx 919 919 if sld_my.__class__.__name__ == 'float': 920 self.sld_my = n umpy.ones(len(self.pos_x)) * sld_my920 self.sld_my = np.ones(len(self.pos_x)) * sld_my 921 921 else: 922 922 self.sld_my = sld_my 923 923 if sld_mz.__class__.__name__ == 'float': 924 self.sld_mz = n umpy.ones(len(self.pos_x)) * sld_mz924 self.sld_mz = np.ones(len(self.pos_x)) * sld_mz 925 925 else: 926 926 self.sld_mz = sld_mz 927 927 928 sld_m = n umpy.sqrt(sld_mx * sld_mx + sld_my * sld_my + \928 sld_m = np.sqrt(sld_mx * sld_mx + sld_my * sld_my + \ 929 929 sld_mz * sld_mz) 930 930 self.sld_m = sld_m … … 938 938 return 939 939 if symbol.__class__.__name__ == 'str': 940 self.pix_symbol = n umpy.repeat(symbol, len(self.sld_n))940 self.pix_symbol = np.repeat(symbol, len(self.sld_n)) 941 941 else: 942 942 self.pix_symbol = symbol … … 952 952 self.vol_pix = vol 953 953 elif vol.__class__.__name__.count('float') > 0: 954 self.vol_pix = n umpy.repeat(vol, len(self.sld_n))954 self.vol_pix = np.repeat(vol, len(self.sld_n)) 955 955 else: 956 956 self.vol_pix = None … … 995 995 for x_pos in self.pos_x: 996 996 if xpos_pre != x_pos: 997 self.xstepsize = n umpy.fabs(x_pos - xpos_pre)997 self.xstepsize = np.fabs(x_pos - xpos_pre) 998 998 break 999 999 for y_pos in self.pos_y: 1000 1000 if ypos_pre != y_pos: 1001 self.ystepsize = n umpy.fabs(y_pos - ypos_pre)1001 self.ystepsize = np.fabs(y_pos - ypos_pre) 1002 1002 break 1003 1003 for z_pos in self.pos_z: 1004 1004 if zpos_pre != z_pos: 1005 self.zstepsize = n umpy.fabs(z_pos - zpos_pre)1005 self.zstepsize = np.fabs(z_pos - zpos_pre) 1006 1006 break 1007 1007 #default pix volume 1008 self.vol_pix = n umpy.ones(len(self.pos_x))1008 self.vol_pix = np.ones(len(self.pos_x)) 1009 1009 vol = self.xstepsize * self.ystepsize * self.zstepsize 1010 1010 self.set_pixel_volumes(vol) … … 1073 1073 y2 = output.pos_y+output.sld_my/max_m * gap 1074 1074 z2 = output.pos_z+output.sld_mz/max_m * gap 1075 x_arrow = n umpy.column_stack((output.pos_x, x2))1076 y_arrow = n umpy.column_stack((output.pos_y, y2))1077 z_arrow = n umpy.column_stack((output.pos_z, z2))1075 x_arrow = np.column_stack((output.pos_x, x2)) 1076 y_arrow = np.column_stack((output.pos_y, y2)) 1077 z_arrow = np.column_stack((output.pos_z, z2)) 1078 1078 unit_x2 = output.sld_mx / max_m 1079 1079 unit_y2 = output.sld_my / max_m 1080 1080 unit_z2 = output.sld_mz / max_m 1081 color_x = n umpy.fabs(unit_x2 * 0.8)1082 color_y = n umpy.fabs(unit_y2 * 0.8)1083 color_z = n umpy.fabs(unit_z2 * 0.8)1084 colors = n umpy.column_stack((color_x, color_y, color_z))1081 color_x = np.fabs(unit_x2 * 0.8) 1082 color_y = np.fabs(unit_y2 * 0.8) 1083 color_z = np.fabs(unit_z2 * 0.8) 1084 colors = np.column_stack((color_x, color_y, color_z)) 1085 1085 plt.show() 1086 1086 … … 1105 1105 model = GenSAS() 1106 1106 model.set_sld_data(foutput.output) 1107 x = n umpy.arange(1000)/10000. + 1e-51108 y = n umpy.arange(1000)/10000. + 1e-51109 i = n umpy.zeros(1000)1107 x = np.arange(1000)/10000. + 1e-5 1108 y = np.arange(1000)/10000. + 1e-5 1109 i = np.zeros(1000) 1110 1110 model.runXY([x, y, i]) 1111 1111
Note: See TracChangeset
for help on using the changeset viewer.