Exemple #1
0
 def replot(self):
     self.setflag('busy',True)
     fsn=self.getfsn()
     data,dataerr,param=B1python.read2dintfile(fsn,dirs=self.getinputdirs())
     self.setflag('busy',False)
     if len(data)!=1 and len(dataerr)!=1 and len(param)!=1:
         self.logger("Could not find files for FSN %d"%fsn,priority="error")
         return
     else:
         self.logger('Files for FSN %d loaded successfully'%fsn,priority='INFO')
     mask=self.maskmatrix
     self.setflag('busy',True)
     if self.getplottype()=='2D':
         try:
             self.figure.show()
         except:
             self.figure=pylab.figure(self.figurenum)
         pylab.figure(self.figurenum)
         self.figure.clf()
         B1python.plot2dmatrix(data[0],header=param[0],showqscale=True,mask=self.maskmatrix)
         pylab.xlabel(u'q (1/%c)'%197)
         pylab.ylabel(u'q (1/%c)'%197)
         pylab.colorbar()
     elif self.getplottype()=='1D':
         if mask is None:
             mask=np.ones(data[0].shape,dtype=np.uint8)
         if not (self.qminmanual.get() and self.qmaxmanual.get() and self.Nqmanual.get()):
             qmin,qmax,Nq=B1python.qrangefrommask(mask, param[0]['EnergyCalibrated'],param[0]['Dist'],param[0]['PixelSize'],param[0]['BeamPosX'],param[0]['BeamPosY'])
             self.logger('Auto-determined integration bounds: %.8f < q < %.8f, optimal number of bins is %d' %(qmin,qmax,Nq))
         if self.qminmanual.get():
             qmin=float(self.qmin.get())
         else:
             self.qmin['state']='normal'
             self.qmin.delete(0,Tkinter.END)
             self.qmin.insert(0,'%.8f' % qmin)
             self.qmin['state']='disabled'
         if self.qmaxmanual.get():
             qmax=float(self.qmax.get())
         else:
             self.qmax['state']='normal'
             self.qmax.delete(0,Tkinter.END)
             self.qmax.insert(0,'%.8f' % qmax)
             self.qmax['state']='disabled'
         if self.Nqmanual.get():
             Nq=long(self.Nq.get())
         else:
             self.Nq['state']='normal'
             self.Nq.delete(0,Tkinter.END)
             self.Nq.insert(0,'%.8f' % Nq)
             self.Nq['state']='disabled'
         phi0=None
         dphi=None
         if self.phi0manual.get():
             phi0=float(self.phi0.get())*np.pi/180.0
         if self.dphimanual.get():
             dphi=float(self.dphi.get())*np.pi/180.0
         qrange=np.linspace(qmin,qmax,Nq)
         self.logger('Integration starting...',"INFO")
         t0=time.time()
         q,I,E,A,maskout=B1python.radintC(data[0],dataerr[0],param[0]['EnergyCalibrated'],param[0]['Dist'],param[0]['PixelSize'],param[0]['BeamPosX'],param[0]['BeamPosY'],1-mask,qrange,phi0=phi0,dphi=dphi,returnmask=True,returnavgq=True)
         maskout=1-maskout
         self.currentdataset=B1python.SASDict(q,I,E,Area=A)
         self.currentdataset.sanitize()
         self.currentparam=param[0]
         self.setflag('intdata',True)
         self.logger('Integration finished in %.2f seconds'%(time.time()-t0),"INFO")
         try:
             self.figure.show()
         except:
             self.figure=pylab.figure(self.figurenum)
         pylab.figure(self.figurenum)
         B1python.plotintegrated(data[0],q,I,E,A,qrange,maskout,param[0],mode='radial')
     elif self.setplottype()=='Azimuthal':
         self.logger('Azimuthal integration not yet supported!','WARNING')
     self.setflag('busy',False)
     pylab.draw()
     pylab.gcf().show()
     del data
     del dataerr
     del param