Changeset 9c0f3c17 in sasview for src/sas/sascalc/calculator
- Timestamp:
- Apr 4, 2017 12:50:04 PM (8 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. - Location:
- src/sas/sascalc/calculator
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/BaseComponent.py
rdeddda1 r9a5097c 9 9 from collections import OrderedDict 10 10 11 import numpy 11 import numpy as np 12 12 #TO DO: that about a way to make the parameter 13 13 #is self return if it is fittable or not … … 119 119 Then get :: 120 120 121 q = n umpy.sqrt(qx_prime^2+qy_prime^2)121 q = np.sqrt(qx_prime^2+qy_prime^2) 122 122 123 123 that is a qr in 1D array; :: … … 150 150 151 151 # calculate q_r component for 2D isotropic 152 q = n umpy.sqrt(qx**2+qy**2)152 q = np.sqrt(qx**2+qy**2) 153 153 # vectorize the model function runXY 154 v_model = n umpy.vectorize(self.runXY, otypes=[float])154 v_model = np.vectorize(self.runXY, otypes=[float]) 155 155 # calculate the scattering 156 156 iq_array = v_model(q) … … 160 160 elif qdist.__class__.__name__ == 'ndarray': 161 161 # We have a simple 1D distribution of q-values 162 v_model = n umpy.vectorize(self.runXY, otypes=[float])162 v_model = np.vectorize(self.runXY, otypes=[float]) 163 163 iq_array = v_model(qdist) 164 164 return iq_array -
src/sas/sascalc/calculator/instrument.py
rb699768 r9a5097c 3 3 control instrumental parameters 4 4 """ 5 import numpy 5 import numpy as np 6 6 7 7 # defaults in cgs unit … … 168 168 self.spectrum = self.get_default_spectrum() 169 169 # intensity in counts/sec 170 self.intensity = n umpy.interp(self.wavelength,170 self.intensity = np.interp(self.wavelength, 171 171 self.spectrum[0], 172 172 self.spectrum[1], … … 203 203 """ 204 204 spectrum = self.spectrum 205 intensity = n umpy.interp(self.wavelength,205 intensity = np.interp(self.wavelength, 206 206 spectrum[0], 207 207 spectrum[1], … … 244 244 self.wavelength = wavelength 245 245 validate(wavelength) 246 self.intensity = n umpy.interp(self.wavelength,246 self.intensity = np.interp(self.wavelength, 247 247 self.spectrum[0], 248 248 self.spectrum[1], … … 305 305 get default spectrum 306 306 """ 307 return n umpy.array(_LAMBDA_ARRAY)307 return np.array(_LAMBDA_ARRAY) 308 308 309 309 def get_band(self): … … 345 345 get list of the intensity wrt wavelength_list 346 346 """ 347 out = n umpy.interp(self.wavelength_list,347 out = np.interp(self.wavelength_list, 348 348 self.spectrum[0], 349 349 self.spectrum[1], -
src/sas/sascalc/calculator/resolution_calculator.py
r463e7ffc r9c0f3c17 12 12 from math import sqrt 13 13 import math 14 import numpy 14 import numpy as np 15 15 import sys 16 16 import logging … … 395 395 dx_size = (self.qx_max - self.qx_min) / (1000 - 1) 396 396 dy_size = (self.qy_max - self.qy_min) / (1000 - 1) 397 x_val = n umpy.arange(self.qx_min, self.qx_max, dx_size)398 y_val = n umpy.arange(self.qy_max, self.qy_min, -dy_size)399 q_1, q_2 = n umpy.meshgrid(x_val, y_val)397 x_val = np.arange(self.qx_min, self.qx_max, dx_size) 398 y_val = np.arange(self.qy_max, self.qy_min, -dy_size) 399 q_1, q_2 = np.meshgrid(x_val, y_val) 400 400 #q_phi = numpy.arctan(q_1,q_2) 401 401 # check whether polar or cartesian … … 889 889 x_value = x_val - x0_val 890 890 y_value = y_val - y0_val 891 phi_i = n umpy.arctan2(y_val, x_val)891 phi_i = np.arctan2(y_val, x_val) 892 892 893 893 # phi correction due to the gravity shift (in phi) … … 895 895 phi_i = phi_i - phi_0 + self.gravity_phi 896 896 897 sin_phi = n umpy.sin(self.gravity_phi)898 cos_phi = n umpy.cos(self.gravity_phi)897 sin_phi = np.sin(self.gravity_phi) 898 cos_phi = np.cos(self.gravity_phi) 899 899 900 900 x_p = x_value * cos_phi + y_value * sin_phi … … 910 910 nu_value = -0.5 * (new_x * new_x + new_y * new_y) 911 911 912 gaussian = n umpy.exp(nu_value)912 gaussian = np.exp(nu_value) 913 913 # normalizing factor correction 914 914 gaussian /= gaussian.sum() … … 956 956 nu_value *= nu_value 957 957 nu_value *= -0.5 958 gaussian *= n umpy.exp(nu_value)958 gaussian *= np.exp(nu_value) 959 959 gaussian /= sigma 960 960 # normalize … … 1028 1028 offset_x, offset_y) 1029 1029 # distance [cm] from the beam center on detector plane 1030 detector_ind_x = n umpy.arange(detector_pix_nums_x)1031 detector_ind_y = n umpy.arange(detector_pix_nums_y)1030 detector_ind_x = np.arange(detector_pix_nums_x) 1031 detector_ind_y = np.arange(detector_pix_nums_y) 1032 1032 1033 1033 # shif 0.5 pixel so that pix position is at the center of the pixel … … 1043 1043 detector_ind_y = detector_ind_y * pix_y_size 1044 1044 1045 qx_value = n umpy.zeros(len(detector_ind_x))1046 qy_value = n umpy.zeros(len(detector_ind_y))1045 qx_value = np.zeros(len(detector_ind_x)) 1046 qy_value = np.zeros(len(detector_ind_y)) 1047 1047 i = 0 1048 1048 … … 1063 1063 1064 1064 # p min and max values among the center of pixels 1065 self.qx_min = n umpy.min(qx_value)1066 self.qx_max = n umpy.max(qx_value)1067 self.qy_min = n umpy.min(qy_value)1068 self.qy_max = n umpy.max(qy_value)1065 self.qx_min = np.min(qx_value) 1066 self.qx_max = np.max(qx_value) 1067 self.qy_min = np.min(qy_value) 1068 self.qy_max = np.max(qy_value) 1069 1069 1070 1070 # Appr. min and max values of the detector display limits … … 1090 1090 from sas.sascalc.dataloader.data_info import Data2D 1091 1091 output = Data2D() 1092 inten = n umpy.zeros_like(qx_value)1092 inten = np.zeros_like(qx_value) 1093 1093 output.data = inten 1094 1094 output.qx_data = qx_value … … 1109 1109 plane_dist = dx_size 1110 1110 # full scattering angle on the x-axis 1111 theta = n umpy.arctan(plane_dist / det_dist)1112 qx_value = (2.0 * pi / wavelength) * n umpy.sin(theta)1111 theta = np.arctan(plane_dist / det_dist) 1112 qx_value = (2.0 * pi / wavelength) * np.sin(theta) 1113 1113 return qx_value 1114 1114 -
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.