Changeset 88 for trunk/GSASIIplot.py


Ignore:
Timestamp:
Jun 17, 2010 3:15:33 PM (12 years ago)
Author:
vondreel
Message:

complete ring & arc masks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIplot.py

    r87 r88  
    563563    from matplotlib.patches import Ellipse,Arc,Circle
    564564    import numpy.ma as ma
     565    Dsp = lambda tth,wave: wave/(2.*sind(tth/2.))
    565566
    566567    def OnImMotion(event):
     568        Data = self.PatternTree.GetItemPyData(
     569            G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
    567570        Page.canvas.SetToolTipString('')
    568571        size = len(self.ImageZ)
     
    601604    def OnImPlotKeyPress(event):
    602605        if self.PatternTree.GetItemText(self.PickId) == 'Masks':
    603             Mask = self.PatternTree.GetItemPyData(self.PickId)
     606            Data = self.PatternTree.GetItemPyData(
     607                G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
     608            Masks = self.PatternTree.GetItemPyData(
     609                G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))
    604610            Xpos = event.xdata
    605611            if not Xpos:            #got point out of frame
     
    608614            if event.key == 's':
    609615                print 'spot mask @ ',Xpos,Ypos
    610                 Mask['Points'].append([Xpos,Ypos,1])
     616                Masks['Points'].append([Xpos,Ypos,1.])
    611617            elif event.key == 'r':
    612                 print 'ring mask @ ',Xpos,Ypos
     618                tth = G2img.GetTth(Xpos,Ypos,Data)
     619                print 'ring mask @ ',Xpos,Ypos,tth
     620                Masks['Rings'].append([tth,0.1])
    613621            elif event.key == 'a':
     622                tth,azm = G2img.GetTthAzm(Xpos,Ypos,Data)
     623                azm = int(azm)               
    614624                print 'arc mask @ ', Xpos,Ypos
    615             G2imG.UpdateMasks(self,Mask)
     625                Masks['Arcs'].append([tth,[azm-5,azm+5],0.1])
     626            G2imG.UpdateMasks(self,Masks)
    616627        PlotImage(self)
    617628           
     
    627638        if PickName not in ['Image Controls','Masks']:
    628639            return
     640        Data = self.PatternTree.GetItemPyData(
     641            G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
     642        Masks = self.PatternTree.GetItemPyData(
     643            G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))
    629644        pixelSize = Data['pixelSize']
    630645        scalex = 1000./pixelSize[0]
     
    663678                    itemPicked = str(self.itemPicked)
    664679                    if 'Line2D' in itemPicked and PickName == 'Image Controls':
    665                         if 'line1' in str(self.itemPicked):
     680                        print int(itemPicked.split('_line')[1].strip(')'))
     681                        if 'line1' in itemPicked:
    666682                            Data['IOtth'][0] = tth
    667                         elif 'line2' in str(self.itemPicked):
     683                        elif 'line2' in itemPicked:
    668684                            Data['IOtth'][1] = tth
    669                         elif 'line3' in str(self.itemPicked) and not Data['fullIntegrate']:
     685                        elif 'line3' in itemPicked and not Data['fullIntegrate']:
    670686                            Data['LRazimuth'][0] = int(azm)
    671                         elif 'line4' in str(self.itemPicked) and not Data['fullIntegrate']:
     687                        elif 'line4' in itemPicked and not Data['fullIntegrate']:
    672688                            Data['LRazimuth'][1] = int(azm)
    673689                           
     
    689705                                spot[:2] = xpos,ypos
    690706                        G2imG.UpdateMasks(self,Masks)
    691                     else:
    692                         print str(self.itemPicked),event.xdata,event.ydata,event.button
     707                    elif 'Line2D' in itemPicked and PickName == 'Masks':
     708                        Obj = self.itemPicked.findobj()
     709                        rings = Masks['Rings']
     710                        arcs = Masks['Arcs']
     711                        for ring in self.ringList:
     712                            if Obj == ring[0]:
     713                                rN = ring[1]
     714                                if ring[2] == 'o':
     715                                    rings[rN][0] = G2img.GetTth(xpos,ypos,Data)-rings[rN][1]/2.
     716                                else:
     717                                    rings[rN][0] = G2img.GetTth(xpos,ypos,Data)+rings[rN][1]/2.
     718                        for arc in self.arcList:
     719                            if Obj == arc[0]:
     720                                aN = arc[1]
     721                                if arc[2] == 'o':
     722                                    arcs[aN][0] = G2img.GetTth(xpos,ypos,Data)-arcs[aN][2]/2
     723                                elif arc[2] == 'i':
     724                                    arcs[aN][0] = G2img.GetTth(xpos,ypos,Data)+arcs[aN][2]/2
     725                                elif arc[2] == 'l':
     726                                    arcs[aN][1][0] = int(G2img.GetAzm(xpos,ypos,Data))
     727                                else:
     728                                    arcs[aN][1][1] = int(G2img.GetAzm(xpos,ypos,Data))
     729                        G2imG.UpdateMasks(self,Masks)
     730#                    else:                  #keep for future debugging
     731#                        print str(self.itemPicked),event.xdata,event.ydata,event.button
    693732                PlotImage(self)
    694733            self.itemPicked = None
     
    737776    Plot.set_xlabel('Image x-axis, mm',fontsize=12)
    738777    Plot.set_ylabel('Image y-axis, mm',fontsize=12)
    739     #need "applyMask" routine here
     778    #do threshold mask - "real" mask - others are just bondaries
    740779    Zlim = Masks['Thresholds'][1]
    741     spots = Masks['Points']
    742780    MA = ma.masked_greater(ma.masked_less(self.ImageZ,Zlim[0]),Zlim[1])
    743781    MaskA = ma.getmaskarray(MA)
     
    749787    Img = Plot.imshow(A,aspect='equal',cmap=acolor,
    750788        interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Xmax,0])
    751     for x,y,d in spots:
    752         Plot.add_artist(Circle((x,y),radius=d/2,fc='r',ec='r',picker=3))
    753789
    754790    Plot.plot(xcent,ycent,'x')
     
    792828        Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none'))
    793829        Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
     830    #masks - mask lines numbered after integration limit lines
     831    spots = Masks['Points']
     832    rings = Masks['Rings']
     833    arcs = Masks['Arcs']
     834    for x,y,d in spots:
     835        Plot.add_artist(Circle((x,y),radius=d/2,fc='none',ec='r',picker=3))
     836    self.ringList = []
     837    for iring,(tth,thick) in enumerate(rings):
     838        wave = Data['wavelength']
     839        x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data))),2)
     840        x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data))),2)
     841        self.ringList.append([Plot.plot(x1,y1,'r',picker=3),iring,'o'])           
     842        self.ringList.append([Plot.plot(x2,y2,'r',picker=3),iring,'i'])
     843    self.arcList = []
     844    for iarc,(tth,azm,thick) in enumerate(arcs):           
     845        wave = Data['wavelength']
     846        x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data),azm)),2)
     847        x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data),azm)),2)
     848        self.arcList.append([Plot.plot(x1,y1,'r',picker=3),iarc,'o'])           
     849        self.arcList.append([Plot.plot(x2,y2,'r',picker=3),iarc,'i'])
     850        self.arcList.append([Plot.plot([x1[0],x2[0]],[y1[0],y2[0]],'r',picker=3),iarc,'l'])
     851        self.arcList.append([Plot.plot([x1[-1],x2[-1]],[y1[-1],y2[-1]],'r',picker=3),iarc,'u'])
    794852    colorBar = Page.figure.colorbar(Img)
    795853    Plot.set_xlim(xlim)
Note: See TracChangeset for help on using the changeset viewer.