Changeset 3976 for trunk/fprime.py


Ignore:
Timestamp:
May 13, 2019 1:57:30 PM (2 years ago)
Author:
vondreele
Message:

finish cleanup of fprime and absorb

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fprime.py

    r3975 r3976  
    8383    Wmin = 0.05        #wavelength range
    8484    Wmax = 3.0
    85     Wres = 0.004094    #plot resolution step size as const delta-lam/lam - gives 1000 steps for Wmin to Wmax
     85    Wres = 0.004094    #plot resolution step size as const delta-lam/lam - gives 1000 steps for Wmin to Wmself.ax
    8686    Eres = 1.5e-4      #typical energy resolution for synchrotron x-ray sources
    8787    ffpfignum = 1
     
    186186              size=wx.Size(25,24), style=wx.SP_VERTICAL | wx.SP_ARROW_KEYS)
    187187        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)
    190190        self.SpinButton.Bind(wx.EVT_SPIN, self.OnSpinButton, id=wxID_SPINBUTTON)
    191191
     
    212212        def OnChoice2(event):
    213213            if event.GetString() == ' sin('+Gktheta+')/'+Gklambda:
    214                 self.FFxaxis = 'S'
     214                self.FFxself.axis = 'S'
    215215            elif event.GetString() == ' Q':
    216                 self.FFxaxis = 'Q'
     216                self.FFxself.axis = 'Q'
    217217            else:
    218                 self.FFxaxis = 'T'
     218                self.FFxself.axis = 'T'
    219219            self.UpDateFPlot(self.Wave,rePlot=False)
    220220           
     
    313313       
    314314    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)
    320319
    321320    def OnSlider1(self, event):
     
    334333        """Plot f' & f" vs wavelength 0.05-3.0A"""
    335334        "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 = []
    338337        try:
    339338            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()
    343341            newPlot = False
    344342        except:
     
    349347            self.Page.canvas.mpl_connect('key_press_event', self.OnKeyPress)
    350348            newPlot = True
     349            self.ax,self.bx = self.Page.figure.subplots(1,2)
    351350        self.Page.Choice = (' key press','g: toggle grid',)
    352351        self.Page.keyPress = self.OnKeyPress
    353352        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)
    359357        Ymin = 0.0
    360358        Ymax = 0.0
     
    368366                fppsP2 = np.array(Fpps[2])
    369367                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 "')
    372370        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)
    380378        if self.FPPS:
    381             ax.legend(loc='best')
     379            self.ax.legend(loc='best')
    382380        self.Page.figure.subplots_adjust(hspace=0.25)
    383381        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')
    387385        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)
    389387        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)
    394392        E = self.Energy
    395393        DE = E*self.Eres                         #smear by defined source resolution
     
    424422            ffop = np.array(ffo)
    425423            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'")
    428426        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)
    431429       
    432430        if newPlot:
     
    437435                tb = self.Page.canvas.toolbar
    438436                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 = []
    442440                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 = []
    446444                tb.push_current()
    447445            self.Page.canvas.draw()
     
    483481        if self.ifWave:
    484482            self.slider1.SetValue(int(1000.*self.Wave))
    485             self.SpinButton.SetValue(int(10000.*self.Wave))
    486483        else:
    487484            self.slider1.SetValue(int(1000.*self.Energy))
    488             self.SpinButton.SetValue(int(10000.*self.Energy))
    489485        Text = ''
    490486        for Elem in self.Elems:
     
    555551            self.NewFPPlot = True
    556552            self.Wave = round(self.Wave,4)
    557             self.slider1.SetRange(int(1000.*self.Wmin),int(1000.*self.Wmax))
     553            self.slider1.SetRange(int(1000.*self.Wmin),int(1000.*self.Wmself.ax))
    558554            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))
    561555            self.SpinText1.SetValue("%6.4f" % (self.Wave))
    562556            self.SpinText2.SetValue("%7.4f" % (self.Energy))
     
    564558            self.ifWave = False
    565559            self.NewFPPlot = True
    566             Emin = self.Kev/self.Wmax
     560            Emin = self.Kev/self.Wmself.ax
    567561            Emax = self.Kev/self.Wmin
    568562            self.Energy = round(self.Energy,4)
    569563            self.slider1.SetRange(int(1000.*Emin),int(1000.*Emax))
    570564            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))
    573565            self.SpinText1.SetValue("%6.4f" % (self.Wave))
    574566            self.SpinText2.SetValue("%7.4f" % (self.Energy))
Note: See TracChangeset for help on using the changeset viewer.