Exemple #1
0
 def saveto(self):
     if self.currentdataset is None or self.currentparam is None:
         self.logger('Error: No integrated dataset present! Integrate or load something first!',"ERROR")
         return
     try:
         B1python.write1dsasdict(self.currentdataset,self.savefilename.get())
         self.logger('Successfully saved file %s' % self.savefilename.get(),'Info')
     except:
         self.logger('Error saving file %s'%self.savefilename.get(),'Error')
Exemple #2
0
 def adjustmask(self):
     fsn=self.getfsn()
     data,dataerr,param=B1python.read2dintfile(fsn,dirs=self.getinputdirs())
     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
     if self.maskmatrix is None:
         self.maskmatrix=np.zeros(data[0].shape,dtype=np.uint8)
     try:
         self.maskmatrix=B1python.makemask(self.maskmatrix,data[0])
     except:
         self.logger("Mask editing was interrupted by user!",'WARNING')
Exemple #3
0
 def loadfrom(self):
     data=B1python.readintfile(self.savefilename.get())
     if len(data)==0:
         self.logger('Error: Cannot load intensity from file %s' % self.savefilename.get(),'ERROR')
     self.currentdataset=data
     self.currentparam=self.savefilename.get()
     self.setflag('intdata',True)
Exemple #4
0
 def createmask(self):
     fsn=self.getfsn()
     data,dataerr,param=B1python.read2dintfile(fsn,dirs=self.getinputdirs())
     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
     self.maskmatrix=np.ones(data.shape,dtype=np.uint8)
     self.logger('Created an empty %d x %d mask'%data[0].shape)
     self.setflag('mask',True)
Exemple #5
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
Exemple #6
0
 def fit(self):
     if self.currentdataset is None or self.currentparam is None:
         self.logger('Error: No integrated dataset present! Integrate or load something first!',"ERROR")
         return
     B1python.basicfittinggui(B1python.SASDict(**(self.currentdataset)))