Changeset b659551 in sasview for prview/perspectives/pr/pr.py
- Timestamp:
- Jun 13, 2008 1:10:42 PM (16 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:
- ad8bcd6
- Parents:
- b00b487
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
prview/perspectives/pr/pr.py
r660b1e6 rb659551 13 13 class Plugin: 14 14 15 DEFAULT_ALPHA = 0.0001 16 DEFAULT_NFUNC = 10 17 DEFAULT_DMAX = 140.0 18 15 19 def __init__(self): 16 20 ## Plug-in name … … 27 31 28 32 ## State data 29 self.alpha = 0.000130 self.nfunc = 1031 self.max_length = 140.033 self.alpha = self.DEFAULT_ALPHA 34 self.nfunc = self.DEFAULT_NFUNC 35 self.max_length = self.DEFAULT_DMAX 32 36 self.q_min = None 33 37 self.q_max = None … … 48 52 ## Currently views plottable 49 53 self.current_plottable = None 54 ## Number of P(r) points to display on the output plot 55 self._pr_npts = 51 50 56 51 57 def populate_menu(self, id, owner): … … 118 124 119 125 # Show input P(r) 120 new_plot = Data1D(pr.x, pr.y, pr.err)126 new_plot = Data1D(pr.x, pr.y, dy=pr.err) 121 127 new_plot.name = "P_{obs}(r)" 122 128 new_plot.xaxis("\\rm{r}", 'A') … … 157 163 #Put this call in plottables/guitools 158 164 wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title="Sphere P(r)")) 165 166 def get_npts(self): 167 """ 168 Returns the number of points in the I(q) data 169 """ 170 try: 171 return len(self.pr.x) 172 except: 173 return 0 159 174 160 175 def show_iq(self, out, pr, q=None): … … 203 218 204 219 220 def _on_pr_npts(self, evt): 221 """ 222 Redisplay P(r) with a different number of points 223 """ 224 from inversion_panel import PrDistDialog 225 dialog = PrDistDialog(None, -1) 226 dialog.set_content(self._pr_npts) 227 if dialog.ShowModal() == wx.ID_OK: 228 self._pr_npts= dialog.get_content() 229 dialog.Destroy() 230 self.show_pr(self.pr.out, self.pr, self.pr.cov) 231 else: 232 dialog.Destroy() 205 233 206 234 … … 213 241 214 242 # Show P(r) 215 x = pylab.arange(0.0, pr.d_max, pr.d_max/ 51.0)243 x = pylab.arange(0.0, pr.d_max, pr.d_max/self._pr_npts) 216 244 217 245 y = numpy.zeros(len(x)) … … 253 281 return self.parent.choose_file() 254 282 255 def load(self, path = "sphere_ test_data.txt"):283 def load(self, path = "sphere_60_q0_2.txt"): 256 284 import numpy, math, sys 257 285 # Read the data from the data file … … 259 287 data_y = numpy.zeros(0) 260 288 data_err = numpy.zeros(0) 289 scale = None 290 min_err = 0.0 261 291 if not path == None: 262 292 input_f = open(path,'r') … … 268 298 x = float(toks[0]) 269 299 y = float(toks[1]) 270 try: 271 scale = 0.05/math.sqrt(data_x[0]) 272 except: 273 scale = 1.0 274 #data_err = numpy.append(data_err, 10.0*math.sqrt(y)+1000.0) 300 if len(toks)>2: 301 err = float(toks[2]) 302 else: 303 if scale==None: 304 scale = 0.05*math.sqrt(y) 305 #scale = 0.05/math.sqrt(y) 306 min_err = 0.01*y 307 err = scale*math.sqrt(y)+min_err 308 #err = 0 309 275 310 data_x = numpy.append(data_x, x) 276 311 data_y = numpy.append(data_y, y) 277 data_err = numpy.append(data_err, scale*math.sqrt(math.fabs(y)))312 data_err = numpy.append(data_err, err) 278 313 except: 279 print "Error reading line: ", line 280 print sys.exc_value 314 pass 281 315 282 print "Lines read:", len(data_x) 283 return data_x, data_y, data_err 316 return data_x, data_y, data_err 284 317 285 318 def pr_theory(self, r, R): … … 303 336 304 337 return [["Compute P(r)", "Compute P(r) from distribution", self._on_context_inversion], 305 ["Add P(r) data", "Load a data file and display it on this plot", self._on_add_data]] 338 ["Add P(r) data", "Load a data file and display it on this plot", self._on_add_data], 339 ["Change number of P(r) points", "Change the number of points on the P(r) output", self._on_pr_npts]] 306 340 307 341 return [["Compute P(r)", "Compute P(r) from distribution", self._on_context_inversion]] … … 318 352 x, y, err = self.parent.load_ascii_1D(path) 319 353 320 new_plot = Data1D(x, y, dy=err) 354 #new_plot = Data1D(x, y, dy=err) 355 new_plot = Theory1D(x, y) 321 356 new_plot.name = "P_{loaded}(r)" 322 357 new_plot.xaxis("\\rm{r}", 'A') … … 369 404 # Save useful info 370 405 self.elapsed = elapsed 406 # Save Pr invertor 407 self.pr = pr 408 371 409 message = "Computation completed in %g seconds [chi2=%g]" % (elapsed, pr.chi2) 372 410 wx.PostEvent(self.parent, StatusEvent(status=message)) … … 387 425 print "%d: %g +- %g" % (i, out[i], math.sqrt(math.fabs(cov[i][i]))) 388 426 except: 427 print sys.exc_value 389 428 print "%d: %g +- ?" % (i, out[i]) 390 429 391 430 # Make a plot of I(q) data 392 new_plot = Data1D(self.pr.x, self.pr.y, self.pr.err)431 new_plot = Data1D(self.pr.x, self.pr.y, dy=self.pr.err) 393 432 new_plot.name = "I_{obs}(q)" 394 433 new_plot.xaxis("\\rm{Q}", 'A^{-1}') … … 411 450 412 451 # Make a plot of I(q) data 413 new_plot = Data1D(self.pr.x, self.pr.y, self.pr.err)452 new_plot = Data1D(self.pr.x, self.pr.y, dy=self.pr.err) 414 453 new_plot.name = "I_{obs}(q)" 415 454 new_plot.xaxis("\\rm{Q}", 'A^{-1}')
Note: See TracChangeset
for help on using the changeset viewer.