Changeset 36 for trunk/GSASII.py


Ignore:
Timestamp:
Mar 4, 2010 8:56:26 AM (13 years ago)
Author:
vondreel
Message:

and again

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r33 r36  
    371371        import copy
    372372        self.CheckNotebook()
    373         dlg = wx.FileDialog(self, 'Choose image file', '.', '', \
    374             'MAR345 (*.mar3450)|*.mar3450|ADSC Image (*.img)|*.img \
    375             |Perkin-Elmer TIF (*.tif)|*.tif \
    376             |GE Image sum (*.sum)|*.sum|GE Image avg (*.avg) \
    377             |*.avg|All files (*.*)|*.*',wx.OPEN)
     373        dlg = wx.FileDialog(self, 'Choose image file', '.', '',\
     374        'MAR345 (*.mar3450;*.mar2300)|*.mar3450;*.mar2300|ADSC Image (*.img)\
     375        |*.img|Perkin-Elmer TIF (*.tif)|*.tif|GE Image sum (*.sum)\
     376        |*.sum|GE Image avg (*.avg)|*.avg|All files (*.*)|*.*',wx.OPEN)
    378377        if self.dirname:
    379378            dlg.SetDirectory(self.dirname)
     
    389388                    Comments,Data,Size,Image = G2IO.GetImgData(self.imagefile)
    390389                    Image[0][0] = 0
    391                 elif ext == '.mar3450':
     390                elif ext == '.mar3450' or ext == '.mar2300':
    392391                    Comments,Data,Size,Image = G2IO.GetMAR345Data(self.imagefile)
    393392                elif ext in ['.sum','.avg']:
     
    11191118                item = self.itemPicked
    11201119                if item and self.PatternTree.GetItemText(self.PickId) == 'Image Controls':
    1121                     if 'Text' in str(item) and Data['refine'][0]:
    1122                         self.pdplot.canvas.SetToolTipString('%8.3f %8.3fmm'%(event.xdata/scalex,event.ydata/scaley))
     1120                    if 'Text' in str(item):
     1121                        self.pdplot.canvas.SetToolTipString('%8.3f %8.3fmm'%(event.xdata,event.ydata))
    11231122                    else:
    11241123                        xcent,ycent = Data['center']
    1125                         xpos = event.xdata-xcent*scalex
    1126                         ypos = event.ydata-ycent*scaley
     1124                        xpos = event.xdata-xcent
     1125                        ypos = event.ydata-ycent
    11271126                        if 'line2' in  str(item) or 'line3' in str(item) and not Data['fullIntegrate']:
    11281127                            ang = int(atan2d(-ypos,xpos))
     
    11301129                        elif 'line0' in  str(item) or 'line1' in str(item):
    11311130                            radius = math.sqrt(xpos**2+ypos**2)
    1132                             self.pdplot.canvas.SetToolTipString('%8.3fmm'%(radius/scalex))                           
     1131                            self.pdplot.canvas.SetToolTipString('%8.3fmm'%(radius))                           
    11331132                else:
    1134                     xpos = int(event.xdata)*self.imScale
    1135                     ypos = int(event.ydata)*self.imScale
    1136                     if (0 <= xpos <= size) and (0 <= ypos <= size):
    1137                         self.pdplot.canvas.SetToolTipString('%6d'%(self.ImageZ[ypos][xpos]))
     1133                    xpix = event.xdata*scalex
     1134                    ypix = event.ydata*scaley
     1135                    if (0 <= xpix <= size) and (0 <= ypix <= size):
     1136                        self.pdplot.canvas.SetToolTipString('%6d'%(self.ImageZ[ypix][xpix]))
    11381137
    11391138        def OnImPlotKeyPress(event):
     
    11431142                size = len(self.ImageZ)
    11441143                Xpos = event.xdata
    1145                 if Xpos:
    1146                     Xpos = int(Xpos)*self.imScale
    1147                 else:                   #got point out of frame
     1144                if not Xpos:            #got point out of frame
    11481145                    return
    1149                 Ypos = int(event.ydata)*self.imScale
    1150                 if event.key == 'c':
    1151                     cent = Data['center'] = [Xpos*pixelSize[0]/1000.,Ypos*pixelSize[1]/1000.] #convert to mm
    1152                 elif event.key == 'm':
    1153                     xpos = Xpos*pixelSize[0]/1000.
    1154                     ypos = Ypos*pixelSize[1]/1000.
    1155                     print 'mask = ',xpos,ypos
     1146                Ypos = event.ydata
     1147                if event.key == 'm':
     1148                    print 'mask = ',Xpos,Ypos
    11561149                self.PlotImage()
    11571150               
     
    11681161            Data = self.PatternTree.GetItemPyData(self.PickId)
    11691162            pixelSize = Data['pixelSize']
     1163            scalex = 1000./pixelSize[0]
     1164            scaley = 1000./pixelSize[1]
    11701165            if self.itemPicked is None:
    11711166                size = len(self.ImageZ)
    11721167                Xpos = event.xdata
    1173                 if Xpos and self.ifGetRing:
    1174                     Xpos = int(Xpos)*self.imScale
    1175                 else:                   #got point out of frame
     1168                if not (Xpos and self.ifGetRing):                   #got point out of frame
    11761169                    return
    1177                 Ypos = int(event.ydata)*self.imScale
     1170                Ypos = event.ydata
    11781171                if Ypos and not self.pdplot.canvas.toolbar._active:         #make sure zoom/pan not selected
    11791172                    if event.button == 1:
    1180                         Xpos,Ypos,I,J = G2cmp.ImageLocalMax(self.ImageZ,20,Xpos,Ypos)
     1173                        Xpix = Xpos*scalex
     1174                        Ypix = Ypos*scaley
     1175                        xpos,ypos,I,J = G2cmp.ImageLocalMax(self.ImageZ,20,Xpix,Ypix)
    11811176                        if I and J:
    1182                             xpos = Xpos*pixelSize[0]/1000.
    1183                             ypos = Ypos*pixelSize[1]/1000.
     1177                            xpos /= scalex
     1178                            ypos /= scaley
    11841179                            Data['ring'].append([xpos,ypos])
    11851180                    self.PlotImage()
     
    11901185                    ypos = event.ydata
    11911186                    if self.ifGetRing:
    1192                         scale = self.imScale*pixelSize[0]/1000.
    1193                         xypos = [xpos*scale,ypos*scale]
     1187                        xypos = [xpos,ypos]
    11941188                        rings = Data['ring']
    11951189                        for ring in rings:
     
    11981192                    else:
    11991193                        xcent,ycent = Data['center']
    1200                         xcent *= scalex
    1201                         ycent *= scaley
    12021194                        xpos -= xcent
    12031195                        ypos -= ycent
     
    12121204                                Data['LRazimuth'][1] = ang
    12131205                            elif 'line0' in str(self.itemPicked):
    1214                                 Data['IOradii'][0] = radius/scalex
     1206                                Data['IOradii'][0] = radius
    12151207                            elif 'line1' in str(self.itemPicked):
    1216                                 Data['IOradii'][1] = radius/scalex
     1208                                Data['IOradii'][1] = radius
    12171209                            if Data['LRazimuth'][1] < Data['LRazimuth'][0]:
    12181210                                Data['LRazimuth'][1] += 360
     
    12211213                            self.IOradText.SetValue("%8.3f,%8.3f" % (Data['IOradii'][0],Data['IOradii'][1]))
    12221214                            self.LRazim.SetValue("%6d,%6d" % (Data['LRazimuth'][0],Data['LRazimuth'][1]))
    1223 #                        elif 'Text' in str(self.itemPicked) and Data['refine'][0]:
    1224 #                            cent = Data['center'] = [event.xdata/scalex,event.ydata/scalex]
    1225 #                            try:
    1226 #                                self.centText.SetValue(("%8.3f,%8.3f" % (cent[0],cent[1])))
    1227 #                            except AttributeError:
    1228 #                                pass
    12291215                        else:
    12301216                            print event.xdata,event.ydata,event.button
     
    12591245        Data = self.PatternTree.GetItemPyData( \
    12601246            G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
    1261         self.imScale = 1
     1247        imScale = 1
    12621248        if len(self.ImageZ) > 1024:
    1263             self.imScale = len(self.ImageZ)/1024
    1264         xmax = len(self.ImageZ)/self.imScale
    1265         xlim = (-0.5,xmax-.5)
    1266         ylim = (xmax-.5,-0.5,)
     1249            imScale = len(self.ImageZ)/1024
     1250        pixelSize = Data['pixelSize']
     1251        scalex = 1000./pixelSize[0]
     1252        scaley = 1000./pixelSize[1]
     1253        xmax = len(self.ImageZ)
     1254        Xmax = len(self.ImageZ)*pixelSize[0]/1000.
     1255        xlim = (-0.5,Xmax-.5)
     1256        ylim = (Xmax-.5,-0.5,)
    12671257        if self.Img:
    12681258            xlim = self.Img.axes.get_xlim()
    12691259            ylim = self.Img.axes.get_ylim()
    1270         pixelSize = Data['pixelSize']
    1271         Data['scalex'] = scalex = 1000./(pixelSize[0]*self.imScale)
    1272         Data['scaley'] = scaley = 1000./(pixelSize[1]*self.imScale)
    12731260        Imin,Imax = Data['range'][1]
    12741261        acolor = mpl.cm.get_cmap(Data['color'])
    12751262        xcent,ycent = Data['center']
    1276         xcent *= scalex
    1277         ycent *= scaley
    1278         ax.set_xlabel('Image x-axis/'+str(self.imScale),fontsize=12)
    1279         ax.set_ylabel('Image y-axis/'+str(self.imScale),fontsize=12)
    1280         self.Img = ax.imshow(self.ImageZ[::self.imScale,::self.imScale], \
    1281             aspect='equal',origin='upper',cmap=acolor, \
    1282             interpolation='nearest',vmin=Imin,vmax=Imax,picker=1)
     1263        ax.set_xlabel('Image x-axis, mm',fontsize=12)
     1264        ax.set_ylabel('Image y-axis, mm',fontsize=12)
     1265        self.Img = ax.imshow(self.ImageZ[::imScale,::imScale], \
     1266            aspect='equal',cmap=acolor, \
     1267            interpolation='nearest',vmin=Imin,vmax=Imax,picker=1, \
     1268            extent=[0,Xmax,Xmax,0])
    12831269        ax.text(xcent,ycent,'+',ha='center',va='center',picker=3)
    12841270        if Data['showLines']:
     
    12861272            IOradii = Data['IOradii']
    12871273            arcxI = arcyI = np.array(range(LRAzim[0],LRAzim[1]+1))
    1288             arcxI = np.sin(arcxI*math.pi/180.)*scalex*Data['IOradii'][0]+xcent
    1289             arcyI = -np.cos(arcyI*math.pi/180.)*scaley*Data['IOradii'][0]+ycent
     1274            arcxI = np.sin(arcxI*math.pi/180.)*Data['IOradii'][0]+xcent
     1275            arcyI = -np.cos(arcyI*math.pi/180.)*Data['IOradii'][0]+ycent
    12901276            ax.plot(arcxI,arcyI,picker=3)
    12911277            arcxO = arcyO = np.array(range(LRAzim[0],LRAzim[1]+1))
    1292             arcxO = np.sin(arcxO*math.pi/180.)*scalex*Data['IOradii'][1]+xcent
    1293             arcyO = -np.cos(arcyO*math.pi/180.)*scaley*Data['IOradii'][1]+ycent
     1278            arcxO = np.sin(arcxO*math.pi/180.)*Data['IOradii'][1]+xcent
     1279            arcyO = -np.cos(arcyO*math.pi/180.)*Data['IOradii'][1]+ycent
    12941280            ax.plot(arcxO,arcyO,picker=3)
    12951281            if not Data['fullIntegrate']:
    12961282                xbeg = arcxI[0]
    12971283                ybeg = arcyI[0]
    1298                 ax.plot([xbeg,sind(LRAzim[0])*IOradii[1]*scalex+xcent],
    1299                     [ybeg,-cosd(LRAzim[0])*IOradii[1]*scaley+ycent],picker=3)
     1284                ax.plot([xbeg,sind(LRAzim[0])*IOradii[1]+xcent],
     1285                    [ybeg,-cosd(LRAzim[0])*IOradii[1]+ycent],picker=3)
    13001286                xbeg = arcxI[-1]
    13011287                ybeg = arcyI[-1]
    1302                 ax.plot([xbeg,sind(LRAzim[1])*IOradii[1]*scalex+xcent],
    1303                     [ybeg,-cosd(LRAzim[1])*IOradii[1]*scaley+ycent],picker=3)
     1288                ax.plot([xbeg,sind(LRAzim[1])*IOradii[1]+xcent],
     1289                    [ybeg,-cosd(LRAzim[1])*IOradii[1]+ycent],picker=3)
    13041290        for xring,yring in Data['ring']:
    1305             xring *= scalex
    1306             yring *= scaley
    1307             ax.text(xring,yring,'+',color='r',ha='center',va='center',picker=3)
     1291            ax.text(xring,yring,'+',color='b',ha='center',va='center',picker=3)
    13081292        if Data['setRings']:
    13091293            for ring in Data['rings']:
    13101294                for xring,yring in ring:
    1311                     xring *= scalex
    1312                     yring *= scaley
    13131295                    ax.text(xring,yring,'+',ha='center',va='center')           
    13141296        for ellipse in Data['ellipses']:
    13151297            cent,phi,[width,height] = ellipse
    1316             ax.add_artist(Ellipse([cent[0]*scalex,cent[1]*scaley],2*width*scalex,2*height*scalex,phi,ec='r',fc=None))
     1298            ax.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec='r',fc=None))
     1299            ax.text(cent[0],cent[1],'+',color='b',ha='center',va='center',picker=3)
    13171300        self.Img.axes.set_xlim(xlim)
    13181301        self.Img.axes.set_ylim(ylim)
Note: See TracChangeset for help on using the changeset viewer.