Changeset 3976
Legend:
- Unmodified
- Added
- Removed
-
trunk/Absorb.py
r3968 r3976 259 259 size=wx.Size(25,24), style=wx.SP_VERTICAL | wx.SP_ARROW_KEYS) 260 260 slideSizer.Add(self.SpinButton,0,wx.ALIGN_RIGHT) 261 self.SpinButton.SetRange( int(10000.*self.Wmin),int(10000.*self.Wmax))262 self.SpinButton.SetValue( int(10000.*self.Wave))261 self.SpinButton.SetRange(-1,1) 262 self.SpinButton.SetValue(0) 263 263 self.SpinButton.Bind(wx.EVT_SPIN, self.OnSpinButton, id=wxID_SPINBUTTON) 264 264 … … 405 405 406 406 def OnSpinButton(self, event): 407 if self.ifWave: 408 Wave = float(self.SpinButton.GetValue())/10000. 409 else: 410 Wave = self.Kev/(float(self.SpinButton.GetValue())/10000.) 411 self.SetWaveEnergy(Wave) 407 move = self.SpinButton.GetValue()/10000. 408 self.Wave = min(max(self.Wave+move,self.Wmin),self.Wmax) 409 self.SpinButton.SetValue(0) 410 self.SetWaveEnergy(self.Wave) 412 411 413 412 def OnSlider1(self, event): … … 430 429 if self.ifWave: 431 430 self.slider1.SetValue(int(1000.*self.Wave)) 432 self.SpinButton.SetValue(int(10000.*self.Wave))433 431 else: 434 432 self.slider1.SetValue(int(1000.*self.Energy)) 435 self.SpinButton.SetValue(int(10000.*self.Energy))436 433 Text = '' 437 434 if not self.ifVol: … … 552 549 self.slider1.SetRange(int(1000.*self.Wmin),int(1000.*self.Wmax)) 553 550 self.slider1.SetValue(int(1000.*self.Wave)) 554 self.SpinButton.SetRange(int(10000.*self.Wmin),int(10000.*self.Wmax))555 self.SpinButton.SetValue(int(10000.*self.Wave))556 551 self.SpinText1.SetValue("%6.4f" % (self.Wave)) 557 552 self.SpinText2.SetValue("%7.4f" % (self.Energy)) … … 564 559 self.slider1.SetRange(int(1000.*Emin),int(1000.*Emax)) 565 560 self.slider1.SetValue(int(1000.*self.Energy)) 566 self.SpinButton.SetRange(int(10000.*Emin),int(10000.*Emax))567 self.SpinButton.SetValue(int(10000.*self.Energy))568 561 self.SpinText1.SetValue("%6.4f" % (self.Wave)) 569 562 self.SpinText2.SetValue("%7.4f" % (self.Energy)) … … 581 574 try: 582 575 if rePlot: 583 asb = self.Page. get_children()[1]576 asb = self.Page.figure.get_axes()[1] 584 577 xylim = asb.get_xlim(),asb.get_ylim() 585 578 newPlot = False … … 591 584 self.Page.canvas.mpl_connect('key_press_event', self.OnKeyPress) 592 585 newPlot = True 593 ax = self.Page.figure.add_subplot(111,label='absorb') 586 ax = self.Page.figure.add_subplot(111,label='absorb') 587 self.fplot.set_visible(False) 594 588 self.Page.Choice = (' key press','g: toggle grid',) 595 589 self.Page.keyPress = self.OnKeyPress … … 637 631 if self.linePicked: 638 632 xpos = event.xdata 639 if xpos >0.1:633 if xpos and xpos>0.1: 640 634 if self.ifWave: 641 635 Wave = xpos -
trunk/fprime.py
r3975 r3976 83 83 Wmin = 0.05 #wavelength range 84 84 Wmax = 3.0 85 Wres = 0.004094 #plot resolution step size as const delta-lam/lam - gives 1000 steps for Wmin to Wm ax85 Wres = 0.004094 #plot resolution step size as const delta-lam/lam - gives 1000 steps for Wmin to Wmself.ax 86 86 Eres = 1.5e-4 #typical energy resolution for synchrotron x-ray sources 87 87 ffpfignum = 1 … … 186 186 size=wx.Size(25,24), style=wx.SP_VERTICAL | wx.SP_ARROW_KEYS) 187 187 slideSizer.Add(self.SpinButton,0,wx.ALIGN_RIGHT) 188 self.SpinButton.SetRange( int(10000.*self.Wmin),int(10000.*self.Wmax))189 self.SpinButton.SetValue( int(10000.*self.Wave))188 self.SpinButton.SetRange(-1,1) 189 self.SpinButton.SetValue(0) 190 190 self.SpinButton.Bind(wx.EVT_SPIN, self.OnSpinButton, id=wxID_SPINBUTTON) 191 191 … … 212 212 def OnChoice2(event): 213 213 if event.GetString() == ' sin('+Gktheta+')/'+Gklambda: 214 self.FFx axis = 'S'214 self.FFxself.axis = 'S' 215 215 elif event.GetString() == ' Q': 216 self.FFx axis = 'Q'216 self.FFxself.axis = 'Q' 217 217 else: 218 self.FFx axis = 'T'218 self.FFxself.axis = 'T' 219 219 self.UpDateFPlot(self.Wave,rePlot=False) 220 220 … … 313 313 314 314 def OnSpinButton(self, event): 315 if self.ifWave: 316 Wave = float(self.SpinButton.GetValue())/10000. 317 else: 318 Wave = self.Kev/(float(self.SpinButton.GetValue())/10000.) 319 self.SetWaveEnergy(Wave) 315 move = self.SpinButton.GetValue()/10000. 316 self.Wave = min(max(self.Wave+move,self.Wmin),self.Wmax) 317 self.SpinButton.SetValue(0) 318 self.SetWaveEnergy(self.Wave) 320 319 321 320 def OnSlider1(self, event): … … 334 333 """Plot f' & f" vs wavelength 0.05-3.0A""" 335 334 "generate a set of form factor curves & plot them vs sin-theta/lambda or q or 2-theta" 336 axylim = []337 bxylim = []335 self.axylim = [] 336 self.bxylim = [] 338 337 try: 339 338 if rePlot: 340 asb,bsb = self.Page.figure.get_axes()[1:3] 341 axylim = asb.get_xlim(),asb.get_ylim() 342 bxylim = bsb.get_xlim(),bsb.get_ylim() 339 self.axylim = self.ax.get_xlim(),self.ax.get_ylim() 340 self.bxylim = self.bx.get_xlim(),self.bx.get_ylim() 343 341 newPlot = False 344 342 except: … … 349 347 self.Page.canvas.mpl_connect('key_press_event', self.OnKeyPress) 350 348 newPlot = True 349 self.ax,self.bx = self.Page.figure.subplots(1,2) 351 350 self.Page.Choice = (' key press','g: toggle grid',) 352 351 self.Page.keyPress = self.OnKeyPress 353 352 self.fplot.set_visible(False) 354 ax,bx = self.Page.figure.subplots(1,2) 355 ax.cla() 356 bx.cla() 357 ax.set_title('Resonant Scattering Factors',x=0,ha='left') 358 ax.set_ylabel("f ',"+' f ", e-',fontsize=14) 353 self.ax.cla() 354 self.bx.cla() 355 self.ax.set_title('Resonant Scattering Factors',x=0,ha='left') 356 self.ax.set_ylabel("f ',"+' f ", e-',fontsize=14) 359 357 Ymin = 0.0 360 358 Ymax = 0.0 … … 368 366 fppsP2 = np.array(Fpps[2]) 369 367 fppsP3 = np.array(Fpps[3]) 370 ax.plot(fppsP1,fppsP2,Color,label=Fpps[0]+" f '")371 ax.plot(fppsP1,fppsP3,Color,label=Fpps[0]+' f "')368 self.ax.plot(fppsP1,fppsP2,Color,label=Fpps[0]+" f '") 369 self.ax.plot(fppsP1,fppsP3,Color,label=Fpps[0]+' f "') 372 370 if self.ifWave: 373 ax.set_xlabel(r'$\mathsf{\lambda, \AA}$',fontsize=14)374 ax.axvline(x=Wave,picker=3,color='black')375 else: 376 ax.set_xlabel(r'$\mathsf{E, keV}$',fontsize=14)377 ax.set_xscale('log')378 ax.axvline(x=self.Kev/Wave,picker=3,color='black')379 ax.set_ylim(Ymin,Ymax)371 self.ax.set_xlabel(r'$\mathsf{\lambda, \AA}$',fontsize=14) 372 self.ax.axvline(x=Wave,picker=3,color='black') 373 else: 374 self.ax.set_xlabel(r'$\mathsf{E, keV}$',fontsize=14) 375 self.ax.set_xscale('log') 376 self.ax.axvline(x=self.Kev/Wave,picker=3,color='black') 377 self.ax.set_ylim(Ymin,Ymax) 380 378 if self.FPPS: 381 ax.legend(loc='best')379 self.ax.legend(loc='best') 382 380 self.Page.figure.subplots_adjust(hspace=0.25) 383 381 if self.ifWave: 384 bx.set_title('%s%s%6.4f%s'%('Form factors (',r'$\lambda=$',self.Wave,r'$\AA)$'),x=0,ha='left')385 else: 386 bx.set_title('%s%6.2f%s'%('Form factors (E =',self.Energy,'keV)'),x=0,ha='left')382 self.bx.set_title('%s%s%6.4f%s'%('Form factors (',r'$\lambda=$',self.Wave,r'$\AA)$'),x=0,ha='left') 383 else: 384 self.bx.set_title('%s%6.2f%s'%('Form factors (E =',self.Energy,'keV)'),x=0,ha='left') 387 385 if self.FFxaxis == 'S': 388 bx.set_xlabel(r'$\mathsf{sin(\theta)/\lambda}$',fontsize=14)386 self.bx.set_xlabel(r'$\mathsf{sin(\theta)/\lambda}$',fontsize=14) 389 387 elif self.FFxaxis == 'T': 390 bx.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14)391 else: 392 bx.set_xlabel(r'$Q, \AA$',fontsize=14)393 bx.set_ylabel("f+f ', e-",fontsize=14)388 self.bx.set_xlabel(r'$\mathsf{2\theta}$',fontsize=14) 389 else: 390 self.bx.set_xlabel(r'$Q, \AA$',fontsize=14) 391 self.bx.set_ylabel("f+f ', e-",fontsize=14) 394 392 E = self.Energy 395 393 DE = E*self.Eres #smear by defined source resolution … … 424 422 ffop = np.array(ffo) 425 423 ffp = np.array(ff) 426 bx.plot(Xp,ffop,Color+'--',label=Els+" f")427 bx.plot(Xp,ffp,Color,label=Els+" f+f'")424 self.bx.plot(Xp,ffop,Color+'--',label=Els+" f") 425 self.bx.plot(Xp,ffp,Color,label=Els+" f+f'") 428 426 if self.Elems: 429 bx.legend(loc='best')430 bx.set_ylim(0.0,Ymax+1.0)427 self.bx.legend(loc='best') 428 self.bx.set_ylim(0.0,Ymax+1.0) 431 429 432 430 if newPlot: … … 437 435 tb = self.Page.canvas.toolbar 438 436 tb.push_current() 439 ax.set_xlim(axylim[0])440 ax.set_ylim(axylim[1])441 axylim = []437 self.ax.set_xlim(self.axylim[0]) 438 self.ax.set_ylim(self.axylim[1]) 439 self.axylim = [] 442 440 tb.push_current() 443 bx.set_xlim(bxylim[0])444 bx.set_ylim(bxylim[1])445 bxylim = []441 self.bx.set_xlim(self.bxylim[0]) 442 self.bx.set_ylim(self.bxylim[1]) 443 self.bxylim = [] 446 444 tb.push_current() 447 445 self.Page.canvas.draw() … … 483 481 if self.ifWave: 484 482 self.slider1.SetValue(int(1000.*self.Wave)) 485 self.SpinButton.SetValue(int(10000.*self.Wave))486 483 else: 487 484 self.slider1.SetValue(int(1000.*self.Energy)) 488 self.SpinButton.SetValue(int(10000.*self.Energy))489 485 Text = '' 490 486 for Elem in self.Elems: … … 555 551 self.NewFPPlot = True 556 552 self.Wave = round(self.Wave,4) 557 self.slider1.SetRange(int(1000.*self.Wmin),int(1000.*self.Wm ax))553 self.slider1.SetRange(int(1000.*self.Wmin),int(1000.*self.Wmself.ax)) 558 554 self.slider1.SetValue(int(1000.*self.Wave)) 559 self.SpinButton.SetRange(int(10000.*self.Wmin),int(10000.*self.Wmax))560 self.SpinButton.SetValue(int(10000.*self.Wave))561 555 self.SpinText1.SetValue("%6.4f" % (self.Wave)) 562 556 self.SpinText2.SetValue("%7.4f" % (self.Energy)) … … 564 558 self.ifWave = False 565 559 self.NewFPPlot = True 566 Emin = self.Kev/self.Wm ax560 Emin = self.Kev/self.Wmself.ax 567 561 Emax = self.Kev/self.Wmin 568 562 self.Energy = round(self.Energy,4) 569 563 self.slider1.SetRange(int(1000.*Emin),int(1000.*Emax)) 570 564 self.slider1.SetValue(int(1000.*self.Energy)) 571 self.SpinButton.SetRange(int(10000.*Emin),int(10000.*Emax))572 self.SpinButton.SetValue(int(10000.*self.Energy))573 565 self.SpinText1.SetValue("%6.4f" % (self.Wave)) 574 566 self.SpinText2.SetValue("%7.4f" % (self.Energy))
Note: See TracChangeset
for help on using the changeset viewer.