Changeset 53


Ignore:
Timestamp:
Apr 27, 2010 10:10:29 AM (12 years ago)
Author:
vondreel
Message:

finish image integration
problems still with motion, picking pts., etc. on patterns

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r52 r53  
    313313                                v = (G2IO.sfloat(s[:10]),G2IO.sfloat(s[10:20]),G2IO.sfloat(s[20:30]),G2IO.sfloat(s[55:65]),G2IO.sfloat(s[40:50])) #get lam1, lam2, zero, pola & ratio
    314314                                if not v[1]:
    315                                     names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L']
     315                                    names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
    316316                                    v = (v[0],v[2],v[4])
    317317                                    codes = [0,0,0,0]
    318318                                else:
    319                                     names = ['Type','Lam1','Lam2','Zero','I(L2)/I(L1)','Polariz.','U','V','W','X','Y','SH/L']
     319                                    names = ['Type','Lam1','Lam2','Zero','I(L2)/I(L1)','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
    320320                                    codes = [0,0,0,0,0,0]
    321321                                data.extend(v)
     
    325325                                v = Iparm['INS  1PRCF12'].split()
    326326                                if v1[0] == 3:
    327                                     data.extend([float(v[0]),float(v[1]),float(v[2])+float(v[3])])  #get LX, LY & S+H/L
     327                                    data.extend([float(v[0]),float(v[1]),float(v[2])+float(v[3],0.0)])  #get LX, LY, S+H/L & azimuth
    328328                                else:
    329                                     data.extend([0.0,0.0,0.002])                                      #OK defaults if fxn #3 not 1st in iprm file
    330                                 codes.extend([0,0,0,0,0,0])
     329                                    data.extend([0.0,0.0,0.002,0.0])                                      #OK defaults if fxn #3 not 1st in iprm file
     330                                codes.extend([0,0,0,0,0,0,0])
    331331                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(data),data,codes,names])
    332332                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Peak List'),[])
     
    603603                            else:
    604604                                Xminmax = [x[0],x[-1]]
    605                                 YCsum = [0.0 for i in range(lenX)]
    606                                 YBsum = [0.0 for i in range(lenX)]
    607                                 YDsum = [0.0 for i in range(lenX)]
     605                                YCsum = YBsum = YDsum = [0.0 for i in range(lenX)]
    608606                                for j,yi in enumerate(y):
    609607                                    Xsum.append(x[j])
  • trunk/GSASIIIO.py

    r49 r53  
    564564                datum[1] = [datum[1][0],X]
    565565                print 'powder data converted to numpy arrays'
    566             if 'PKS' not in datum[0]:
     566            if 'PKS' not in datum[0] and 'IMG' not in datum[0] and 'SNGL' not in datum[0]:
    567567                if datum[0] not in ['Notebook','Controls','Phases'] and 'PWDR' not in datum[0]:            #temporary fix
    568568                    datum[0] = 'PWDR '+datum[0]
     
    571571            for datus in data[1:]:
    572572                print '    load: ',datus[0]
     573                if 'PWDR' in datum[0] and 'Instrument Parameters' in datus[0]:
     574                    if len(datus[1][0]) == 10 or len(datus[1][0]) == 12:
     575                        datus[1][0] += (0.0,)                   #add missing azimuthal angle
     576                        datus[1][1].append(0.0)
     577                        datus[1][2].append(0.0)
     578                        datus[1][3].append('Azimuth')
    573579                sub = self.PatternTree.AppendItem(Id,datus[0])
    574580                self.PatternTree.SetItemPyData(sub,datus[1])
  • trunk/GSASIIcomp.py

    r51 r53  
    122122    DataType = inst[1][0]
    123123    instVal = inst[1][1:]
    124     insref = inst[2][1:]
     124    Insref = inst[2][1:]
    125125    insLabels = inst[3][1:]
    126126    Ka2 = False
    127127    Ioff = 3
    128     if len(instVal) == 11:
     128    if len(instVal) == 12:
    129129        lamratio = instVal[1]/instVal[0]
    130130        Ka2 = True
    131131        Ioff = 5
    132     insref = insref[len(insref)-6:]
     132    insref = Insref[len(Insref)-7:-1]               #just U,V,W,X,Y,SH/L
    133133    for peak in peaks:
    134134        dip = []
     
    270270    k = 0
    271271    delt = []
    272     siginst = []
    273     for i in range(len(instVal)-6):
    274         siginst.append(0.0)
     272    if Ka2:
     273        siginst = [0,0,0,0,0]
     274    else:
     275        siginst = [0,0,0]
    275276    for j in range(6):
    276277        if insref[j]:
     
    282283            delt.append(0.0)
    283284            siginst.append(0.0)
     285    delt.append(0.0)                    #dummies for azm
     286    siginst.append(0.0)
    284287    instPrint(instVal,siginst,insLabels)
    285288    inst[1] = [DataType,]
  • trunk/GSASIIgrid.py

    r52 r53  
    368368        inst = self.PatternTree.GetItemPyData(GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))
    369369        data = self.PatternTree.GetItemPyData(PatternId)[1]
    370         smin = 1.0e10
     370        smin = 1.0e15
    371371        GoOn = True
    372372        while GoOn:
     
    469469           
    470470    self.dataFrame.SetMenuBar(self.dataFrame.PeakMenu)
    471     Status = self.dataFrame.CreateStatusBar()
     471    if not self.dataFrame.GetStatusBar():
     472        Status = self.dataFrame.CreateStatusBar()
    472473    self.Bind(wx.EVT_MENU, OnUnDo, id=wxID_UNDO)
    473474    self.Bind(wx.EVT_MENU, OnPeakFit, id=wxID_PEAKFIT)
     
    587588    Ka2 = False
    588589    Xwid = 720
    589     if len(data[0]) == 12:
     590    if len(data[0]) == 13:
    590591        Ka2 = True
    591592        Xwid = 800       
     
    609610       
    610611    self.InstrumentTable = []
    611     if 'P' in data[1][0]:
     612    if 'P' in data[1][0]:                   #powder data
    612613        if Ka2:
    613614            Types = [wg.GRID_VALUE_CHOICE+":PXC,PNC,PNT",wg.GRID_VALUE_FLOAT+':10,6',wg.GRID_VALUE_FLOAT+':10,6',               #type, lam-1 & lam-2
    614615                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3', #zero, ratio, pola
    615616                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3', #u,v,w
    616                 wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,5']
     617                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_FLOAT+':10,2']
    617618        else:
    618619            Types = [wg.GRID_VALUE_CHOICE+":PXC,PNC,PNT",wg.GRID_VALUE_FLOAT+':10,6',               #type & lam-1
    619620                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3', #zero, pola
    620621                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3', #u,v,w
    621                 wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,5']
     622                wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_FLOAT+':10,2']
    622623        colLabels = data[3]
    623624        rowLabels = ['original','changed','refine']
     
    632633        if Ka2: beg = 6
    633634        for i in range(len(data[2])):
    634             if i < beg:
     635            if i < beg or i == beg+6:
    635636                self.dataDisplay.SetCellRenderer(2,i,wg.GridCellStringRenderer())
    636637                self.dataDisplay.SetCellValue(2,i,'')
     
    639640                self.dataDisplay.SetCellRenderer(2,i,wg.GridCellBoolRenderer())
    640641                self.dataDisplay.SetCellEditor(2,i,wg.GridCellBoolEditor())
    641     else:
     642    else:                       #single crystal data
    642643        Types = [wg.GRID_VALUE_CHOICE+":SXC,SNC,SNT",wg.GRID_VALUE_FLOAT+':10,6']
    643644        colLabels = data[2]
     
    929930        self.dataDisplay.Destroy()
    930931    self.dataFrame.SetMenuBar(self.dataFrame.IndexMenu)
    931     Status = self.dataFrame.CreateStatusBar()
     932    if not self.dataFrame.GetStatusBar():
     933        Status = self.dataFrame.CreateStatusBar()
    932934    self.Bind(wx.EVT_MENU, OnIndexPeaks, id=wxID_INDEXPEAKS)
    933935    self.Bind(wx.EVT_MENU, CopyUnitCell, id=wxID_COPYCELL)
     
    10571059    if self.dataDisplay:
    10581060        self.dataDisplay.Destroy()
    1059     Status = self.dataFrame.CreateStatusBar()
     1061    if not self.dataFrame.GetStatusBar():
     1062        Status = self.dataFrame.CreateStatusBar()
    10601063    SetStatusLine()
    10611064    zones = ['100','010','001']
     
    12341237            data['setRings'] = True
    12351238        setRings.SetValue(data['setRings'])
    1236         G2plt.PlotImage(self)
     1239        G2plt.PlotExposedImage(self)
    12371240           
    12381241    def OnClearCalib(event):
     
    12721275       
    12731276    def OnSaveIntegrate(event):
     1277        import numpy as np
    12741278        print 'save integration'
    1275        
     1279        azms = self.Integrate[1]
     1280        X = self.Integrate[2].flatten()[:-1]
     1281        Xminmax = [X[0],X[-1]]
     1282        N = len(X)
     1283        Id = self.PatternTree.GetItemParent(self.PickId)
     1284        name = self.PatternTree.GetItemText(Id)
     1285        Comments = self.PatternTree.GetItemPyData(GetPatternTreeItemId(self,Id, 'Comments'))
     1286        name = name.replace('IMG ','PWDR ')
     1287        names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
     1288        codes = [0 for i in range(11)]
     1289        parms = ['PXC',data['wavelength'],0.0,0.0,1.0,-1.0,0.3,0.0,1.0,0.0,0.0]
     1290        Azms = [(azms[i+1]+azms[i])/2. for i in range(len(azms)-1)]
     1291        for i,azm in enumerate(Azms):
     1292            Id = self.PatternTree.AppendItem(parent=self.root,text=name+"Azm= %.2f"%(azm))
     1293            parms[10] = azm
     1294            Y = self.Integrate[0][i].flatten()
     1295            W = np.sqrt(Y)
     1296            self.PatternTree.SetItemPyData(Id,[[''],[np.array(X),np.array(Y),np.array(W),np.zeros(N),np.zeros(N),np.zeros(N)]])
     1297            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments)                   
     1298            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Limits'),[tuple(Xminmax),Xminmax])
     1299            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',1,3,1.0,0.0,0.0]])
     1300            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(parms),parms,codes,names])
     1301            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Peak List'),[])
     1302            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Index Peak List'),[])
     1303            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Unit Cells List'),[])             
     1304        self.PatternTree.SelectItem(Id)
     1305        self.PatternTree.Expand(Id)
     1306        self.PatternId = Id
     1307           
     1308                               
    12761309    colorList = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
    12771310    calList = [m for m in calFile.Calibrants.keys()]
     
    12791312        self.dataDisplay.Destroy()
    12801313    self.dataFrame.SetMenuBar(self.dataFrame.ImageMenu)
    1281     Status = self.dataFrame.CreateStatusBar()
     1314    if not self.dataFrame.GetStatusBar():
     1315        Status = self.dataFrame.CreateStatusBar()
    12821316    self.dataFrame.Bind(wx.EVT_MENU, OnCalibrate, id=wxID_IMCALIBRATE)
    12831317    self.dataFrame.Bind(wx.EVT_MENU, OnClearCalib, id=wxID_IMCLEARCALIB)
  • trunk/GSASIIplot.py

    r51 r53  
    195195            if ind.all() != [0]:                                    #picked a data point
    196196                inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PatternId, 'Instrument Parameters'))
    197                 if len(inst[1]) == 10:
     197                if len(inst[1]) == 11:
    198198                    ins = inst[1][4:10]
    199199                else:
     
    327327        ContourY = []
    328328        Nseq = 0
    329     for Pattern in PlotList:
     329    for N,Pattern in enumerate(PlotList):
    330330        ifpicked = False
    331331        LimitId = 0
     
    334334            ifpicked = Pattern[2] == self.PatternTree.GetItemText(PatternId)
    335335            LimitId = G2gd.GetPatternTreeItemId(self,PatternId, 'Limits')
    336         N = PlotList.index(Pattern)
    337336        X = xye[0]
    338337        Y = xye[1]+offset*N
     
    707706            Plot.plot([arcxI[-1],arcxO[-1]],[arcyI[-1],arcyO[-1]],picker=3)
    708707    for xring,yring in Data['ring']:
    709         Plot.text(xring,yring,'+',color='b',ha='center',va='center',picker=3)
     708        Plot.plot(xring,yring,'r+',picker=3)
    710709    if Data['setRings']:
    711710        rings = np.concatenate((Data['rings']),axis=0)
    712711        for xring,yring,dsp in rings:
    713             Plot.text(xring,yring,'+',ha='center',va='center')           
     712            Plot.plot(xring,yring,'r+')           
    714713    for ellipse in Data['ellipses']:
    715714        cent,phi,[width,height],col = ellipse
     
    812811    if Data['showLines']:
    813812        IOtth = Data['IOtth']
    814         LRAzim = Data['LRazimuth']                  #NB: integers
     813        if Data['fullIntegrate']:
     814            LRAzim = [-180,180]
     815        else:
     816            LRAzim = Data['LRazimuth']                  #NB: integers
    815817        Plot.plot([LRAzim[0],LRAzim[1]],[IOtth[0],IOtth[0]],picker=True)
    816818        Plot.plot([LRAzim[0],LRAzim[1]],[IOtth[1],IOtth[1]],picker=True)
    817         Plot.plot([LRAzim[0],LRAzim[0]],[IOtth[0],IOtth[1]],picker=True)
    818         Plot.plot([LRAzim[1],LRAzim[1]],[IOtth[0],IOtth[1]],picker=True)
     819        if not Data['fullIntegrate']:
     820            Plot.plot([LRAzim[0],LRAzim[0]],[IOtth[0],IOtth[1]],picker=True)
     821            Plot.plot([LRAzim[1],LRAzim[1]],[IOtth[0],IOtth[1]],picker=True)
     822    if Data['setRings']:
     823        rings = np.concatenate((Data['rings']),axis=0)
     824        for xring,yring,dsp in rings:
     825            x,y = G2cmp.GetTthAzm(xring,yring,Data)
     826            Plot.plot(y,x,'r+')           
    819827    if not newPlot:
    820828        Page.toolbar.push_current()
     
    841849        Page.canvas.SetToolTipString('')
    842850        Page.canvas.SetCursor(wx.CROSS_CURSOR)
    843         azm = event.xdata
    844         tth = event.ydata
     851        azm = event.ydata
     852        tth = event.xdata
    845853        if azm and tth:
    846854            self.G2plotNB.status.SetFields(\
     
    876884    Plot.imshow(image,cmap=acolor,vmin=Imin,vmax=Imax,interpolation='nearest', \
    877885        extent=[ysc[0],ysc[-1],xsc[0],xsc[-1]],aspect='auto')
     886    if Data['setRings']:
     887        rings = np.concatenate((Data['rings']),axis=0)
     888        for xring,yring,dsp in rings:
     889            x,y = G2cmp.GetTthAzm(xring,yring,Data)
     890            Plot.plot(x,y,'r+')           
    878891    if not newPlot:
    879892        Page.toolbar.push_current()
Note: See TracChangeset for help on using the changeset viewer.