Changeset d84a90c in sasview for pr_inversion/num_term.py
- Timestamp:
- Jun 3, 2010 4:47:46 PM (14 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.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 7116b6e0
- Parents:
- aa36f96
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pr_inversion/num_term.py
r97d69d9 rd84a90c 3 3 4 4 class Num_terms(): 5 6 def __init__(self, invertor): 7 self.invertor = invertor 8 self.nterm_min = 10 9 self.nterm_max = len(self.invertor.x) 10 if self.nterm_max>50: 11 self.nterm_max=50 12 self.isquit_func = None 13 14 self.osc_list = [] 15 self.err_list = [] 16 self.alpha_list = [] 17 self.mess_list = [] 18 19 self.dataset = [] 5 """ 6 """ 7 def __init__(self, invertor): 8 """ 9 """ 10 self.invertor = invertor 11 self.nterm_min = 10 12 self.nterm_max = len(self.invertor.x) 13 if self.nterm_max>50: 14 self.nterm_max=50 15 self.isquit_func = None 16 17 self.osc_list = [] 18 self.err_list = [] 19 self.alpha_list = [] 20 self.mess_list = [] 21 22 self.dataset = [] 20 23 21 def is_odd(self, n): 22 return bool(n%2) 23 24 def sort_osc(self): 25 import copy 26 osc = copy.deepcopy(self.dataset) 27 lis = [] 28 for i in range(len(osc)): 29 osc.sort() 30 re = osc.pop(0) 31 lis.append(re) 32 return lis 24 def is_odd(self, n): 25 """ 26 """ 27 return bool(n%2) 28 29 def sort_osc(self): 30 """ 31 """ 32 import copy 33 osc = copy.deepcopy(self.dataset) 34 lis = [] 35 for i in range(len(osc)): 36 osc.sort() 37 re = osc.pop(0) 38 lis.append(re) 39 return lis 33 40 34 def median_osc(self): 35 osc = self.sort_osc() 36 dv = len(osc) 37 med = float(dv) / 2.0 38 odd = self.is_odd(dv) 39 medi = 0 40 for i in range(dv): 41 if odd == True: 42 medi = osc[int(med)] 43 else: 44 medi = osc[int(med) - 1] 45 return medi 46 47 def get0_out(self): 41 def median_osc(self): 42 """ 43 """ 44 osc = self.sort_osc() 45 dv = len(osc) 46 med = float(dv) / 2.0 47 odd = self.is_odd(dv) 48 medi = 0 49 for i in range(dv): 50 if odd == True: 51 medi = osc[int(med)] 52 else: 53 medi = osc[int(med) - 1] 54 return medi 55 56 def get0_out(self): 57 """ 58 """ 48 59 inver = self.invertor 49 60 self.osc_list = [] … … 96 107 return self.dataset 97 108 98 def ls_osc(self): 109 def ls_osc(self): 110 """ 111 """ 99 112 # Generate data 100 113 ls_osc = self.get0_out() … … 109 122 return ls 110 123 111 def compare_err(self): 124 def compare_err(self): 125 """ 126 """ 112 127 ls = self.ls_osc() 113 128 #print "ls", ls … … 122 137 return nt_ls 123 138 124 def num_terms(self, isquit_func=None): 125 try: 126 self.isquit_func = isquit_func 127 #self.nterm_max = len(self.invertor.x) 128 #self.nterm_max = 32 129 nts = self.compare_err() 130 #print "nts", nts 131 div = len(nts) 132 tem = float(div)/2.0 133 odd = self.is_odd(div) 134 if odd == True: 135 nt = nts[int(tem)] 136 else: 137 nt = nts[int(tem) - 1] 138 return nt, self.alpha_list[nt - 10], self.mess_list[nt-10] 139 except: 140 return self.nterm_min, self.alpha_list[10], self.mess_list[10] 139 def num_terms(self, isquit_func=None): 140 """ 141 """ 142 try: 143 self.isquit_func = isquit_func 144 #self.nterm_max = len(self.invertor.x) 145 #self.nterm_max = 32 146 nts = self.compare_err() 147 #print "nts", nts 148 div = len(nts) 149 tem = float(div)/2.0 150 odd = self.is_odd(div) 151 if odd == True: 152 nt = nts[int(tem)] 153 else: 154 nt = nts[int(tem) - 1] 155 return nt, self.alpha_list[nt - 10], self.mess_list[nt-10] 156 except: 157 return self.nterm_min, self.alpha_list[10], self.mess_list[10] 141 158 142 159 #For testing 143 160 def load(path): 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 161 import numpy, math, sys 162 # Read the data from the data file 163 data_x = numpy.zeros(0) 164 data_y = numpy.zeros(0) 165 data_err = numpy.zeros(0) 166 scale = None 167 min_err = 0.0 168 if not path == None: 169 input_f = open(path,'r') 170 buff = input_f.read() 171 lines = buff.split('\n') 172 for line in lines: 173 try: 174 toks = line.split() 175 x = float(toks[0]) 176 y = float(toks[1]) 177 if len(toks)>2: 178 err = float(toks[2]) 179 else: 180 if scale==None: 181 scale = 0.05*math.sqrt(y) 182 #scale = 0.05/math.sqrt(y) 183 min_err = 0.01*y 184 err = scale*math.sqrt(y)+min_err 185 #err = 0 186 187 data_x = numpy.append(data_x, x) 188 data_y = numpy.append(data_y, y) 189 data_err = numpy.append(data_err, err) 190 except: 191 pass 192 193 return data_x, data_y, data_err 194 178 195 179 196 if __name__ == "__main__":
Note: See TracChangeset
for help on using the changeset viewer.