Changeset 1300


Ignore:
Timestamp:
Apr 25, 2014 12:47:06 PM (8 years ago)
Author:
vondreele
Message:

Add additional column to SASD profile - contains fixed background
remove contour plotting from SASD data
Add background file to SASD models GUI
this change breaks old SASD gpx files, they will need to be recreated!

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIIO.py

    r1298 r1300  
    18131813                np.array(yc), # calc. intensities (zero)
    18141814                np.array(yd), # obs-calc profiles
     1815                np.array(yb), # preset bkg
    18151816        '''                           
    18161817        self.comments = []
  • trunk/GSASIIplot.py

    r1297 r1300  
    450450        elif event.key == 'e' and 'SASD' in plottype:
    451451            G2frame.ErrorBars = not G2frame.ErrorBars
    452         elif event.key == 'b' and 'PWDR' in plottype:
     452        elif event.key == 'b':
    453453            G2frame.SubBack = not G2frame.SubBack
    454454            if not G2frame.SubBack:
     
    479479            G2frame.Cmax = 1.0
    480480            G2frame.Offset = [0,0]
    481         elif event.key == 'c':
     481        elif event.key == 'c' and 'PWDR' in plottype:
    482482            newPlot = True
    483483            G2frame.Contour = not G2frame.Contour
     
    766766                    'c: contour on','q: toggle q plot','s: toggle single plot','+: no selection')
    767767            elif 'SASD' in plottype:
    768                 Page.Choice = (' key press','c: contour on','n: semilog on',
     768                Page.Choice = (' key press','b: toggle subtract background','n: semilog on',
    769769                    'd: offset down','l: offset left','r: offset right','u: offset up','o: reset offset',
    770770                    'q: toggle S(q) plot','s: toggle single plot','+: no selection')
     
    775775                    'q: toggle q plot','s: toggle single plot','w: toggle divide by sig','+: no selection')
    776776            elif 'SASD' in plottype:
    777                 Page.Choice = (' key press','c: contour on','n: loglog on','e: toggle error bars',
     777                Page.Choice = (' key press','b: toggle subtract background','n: loglog on','e: toggle error bars',
    778778                    'd: offset down','l: offset left','r: offset right','u: offset up','o: reset offset',
    779779                    'q: toggle S(q) plot','s: toggle single plot','+: no selection')
     
    896896            Y = xye[1]+offset*N
    897897        elif 'SASD' in plottype:
     898            B = xye[5]
    898899            if G2frame.sqPlot:
    899900                Y = xye[1]*Sample['Scale'][0]*(1.005)**(offset*N)*X**4
     
    934935                elif 'SASD' in plottype:
    935936                    if G2frame.sqPlot:
    936                         D = xye[4]*X**4
     937                        W = xye[4]*X**4
    937938                        Z = xye[3]*X**4
     939                        B = B*X**4
    938940                    else:
    939                         D = xye[4]
     941                        W = xye[4]
     942                    if G2frame.SubBack:
     943                        YB = Y-B
     944                        ZB = Z
     945                    else:
     946                        YB = Y
     947                        ZB = Z+B
    940948                    Plot.set_yscale("log",nonposy='mask')
    941949                    Plot.set_ylim(bottom=np.min(np.trim_zeros(Y))/2.,top=np.max(Y)*2.)
     
    951959                        if G2frame.ErrorBars:
    952960                            if G2frame.sqPlot:
    953                                 Plot.errorbar(X,Y,yerr=X**4*Sample['Scale'][0]*np.sqrt(1./(Pattern[0]['wtFactor']*xye[2])),
     961                                Plot.errorbar(X,YB,yerr=X**4*Sample['Scale'][0]*np.sqrt(1./(Pattern[0]['wtFactor']*xye[2])),
    954962                                    ecolor=colors[N%6],picker=3.,clip_on=False)
    955963                            else:
    956                                 Plot.errorbar(X,Y,yerr=Sample['Scale'][0]*np.sqrt(1./(Pattern[0]['wtFactor']*xye[2])),
     964                                Plot.errorbar(X,YB,yerr=Sample['Scale'][0]*np.sqrt(1./(Pattern[0]['wtFactor']*xye[2])),
    957965                                    ecolor=colors[N%6],picker=3.,clip_on=False)
    958966                        else:
    959                             Plot.plot(X,Y,colors[N%6]+'+',picker=3.,clip_on=False)
    960                         Plot.plot(X,D,colors[(N+2)%6],picker=False)
    961                         Plot.plot(X,Z,colors[(N+1)%6],picker=False)
     967                            Plot.plot(X,YB,colors[N%6]+'+',picker=3.,clip_on=False)
     968                        Plot.plot(X,W,colors[(N+2)%6],picker=False)
     969                        Plot.plot(X,ZB,colors[(N+1)%6],picker=False)
    962970                elif G2frame.Weight and 'PWDR' in plottype:
    963971                    DY = xye[1]*np.sqrt(xye[2])
     
    970978                    Plot.axhline(0.,color=wx.BLACK)
    971979                else:
    972                     if G2frame.SubBack and 'PWDR' in plottype:
     980                    if G2frame.SubBack:
    973981                        Plot.plot(Xum,Y-W,colors[N%6]+'+',picker=3.,clip_on=False)
    974982                        Plot.plot(X,Z-W,colors[(N+1)%6],picker=False)
     
    981989                    if 'PWDR' in plottype:
    982990                        Plot.plot(X,W,colors[(N+2)%6],picker=False)
    983                     Plot.plot(X,D,colors[(N+3)%6],picker=False)
     991                        Plot.plot(X,D,colors[(N+3)%6],picker=False)
    984992                    Plot.axhline(0.,color=wx.BLACK)
    985993                Page.canvas.SetToolTipString('')
  • trunk/GSASIIpwdGUI.py

    r1297 r1300  
    121121        'IPG':{'Niter':100,'Approach':0.8,'Power':-1},'Reg':{},},           
    122122        'Particle':{'Matrix':{'Name':'vacuum','VolFrac':[0.0,False]},'Levels':[],},
    123         'Current':'Size dist.',
     123        'Current':'Size dist.','BackFile':'',
    124124        }
    125125       
     
    26672667    if 'Matrix' not in data['Particle']:
    26682668        data['Particle']['Matrix'] = {'Name':'vacuum','VolFrac':[0.0,False]}
     2669    if 'BackFile' not in data:
     2670        data['BackFile'] = ''
    26692671    #end patches
    26702672   
     
    27192721        for item in copyList:
    27202722            Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
    2721             G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Models'),
    2722                 copy.deepcopy(data))
     2723            newdata = copy.deepcopy(data)
     2724            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Models'),newdata)
     2725            if newdata['BackFile']:
     2726                Profile = G2frame.PatternTree.GetItemPyData(Id)[1]
     2727                BackId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,newdata['BackFile'])
     2728                BackSample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,BackId, 'Sample Parameters'))
     2729                Profile[5] = BackSample['Scale'][0]*G2frame.PatternTree.GetItemPyData(BackId)[1][1]
     2730        RefreshPlots(True)
    27232731               
    27242732    def OnCopyFlags(event):
     
    27542762        finally:
    27552763            dlg.Destroy()
    2756 
    2757        
    27582764               
    27592765    def OnFitModelAll(event):
     
    28182824                return
    28192825            G2sasd.SizeDistribution(Profile,ProfDict,Limits,Substances,Sample,data)
     2826            G2plt.PlotSASDSizeDist(G2frame)
    28202827            RefreshPlots(True)
    28212828           
     
    28592866        data['Current'] = fitSel.GetValue()
    28602867        wx.CallAfter(UpdateModelsGrid,G2frame,data)
    2861        
    2862     def OnValueChange(event):
    2863         Obj = event.GetEventObject()
    2864         itemKey,ind,fmt = Indx[Obj.GetId()]
    2865         try:
    2866             value = float(Obj.GetValue())
    2867         except ValueError:
    2868             value = 0.0
    2869         Obj.SetValue(fmt%(value))
    2870         data[itemKey][ind] = value
    2871         if itemKey == 'Back':
    2872             Profile[4][:] = value
    2873         RefreshPlots()
    28742868       
    28752869    def OnCheckBox(event):
     
    32313225        RefreshPlots(True)
    32323226       
     3227    def OnBackChange(event):
     3228        try:
     3229            value = float(backVal.GetValue())
     3230        except ValueError:
     3231            value = 0.0
     3232        backVal.SetValue('%.3g'%(value))
     3233        data['Back'][0] = value
     3234        Profile[4][:] = value
     3235        RefreshPlots()
     3236       
     3237    def OnBackFile(event):
     3238        data['BackFile'] = backFile.GetValue()
     3239        if data['BackFile']:
     3240            fixBack =  data['Back'][0]
     3241            BackId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,data['BackFile'])
     3242            BackSample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,BackId, 'Sample Parameters'))
     3243            Profile[5] = BackSample['Scale'][0]*G2frame.PatternTree.GetItemPyData(BackId)[1][1]
     3244            RefreshPlots(True)
     3245           
    32333246    Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Sample Parameters'))
    32343247    Limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Limits'))
     
    32363249    Substances = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Substances'))
    32373250    ProfDict,Profile = G2frame.PatternTree.GetItemPyData(G2frame.PatternId)[:2]
    3238 
     3251    if data['BackFile']:
     3252        BackId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,data['BackFile'])
     3253        BackSample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,BackId, 'Sample Parameters'))
     3254        Profile[5] = BackSample['Scale'][0]*G2frame.PatternTree.GetItemPyData(BackId)[1][1]
    32393255    if G2frame.dataDisplay:
    32403256        G2frame.dataFrame.DestroyChildren()
     
    32793295    backVal = wx.TextCtrl(G2frame.dataDisplay,value='%.3g'%(data['Back'][0]),style=wx.TE_PROCESS_ENTER)
    32803296    Indx[backVal.GetId()] = ['Back',0,'%.3g']
    3281     backVal.Bind(wx.EVT_TEXT_ENTER,OnValueChange)       
    3282     backVal.Bind(wx.EVT_KILL_FOCUS,OnValueChange)
     3297    backVal.Bind(wx.EVT_TEXT_ENTER,OnBackChange)       
     3298    backVal.Bind(wx.EVT_KILL_FOCUS,OnBackChange)
    32833299    backSizer.Add(backVal,0,WACV)
    32843300    backVar = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
     
    32863302    backVar.SetValue(data['Back'][1])
    32873303    backVar.Bind(wx.EVT_CHECKBOX, OnCheckBox)
    3288     backSizer.Add(backVar,0,WACV)
     3304    backSizer.Add(backVar,0,WACV)   
     3305    backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background file: '),0,WACV)
     3306    Choices = ['',]+G2gd.GetPatternTreeDataNames(G2frame,['SASD',])
     3307    backFile = wx.ComboBox(parent=G2frame.dataDisplay,value=data['BackFile'],choices=Choices,
     3308        style=wx.CB_READONLY|wx.CB_DROPDOWN)
     3309    backFile.Bind(wx.EVT_COMBOBOX,OnBackFile)
     3310    backSizer.Add(backFile)   
    32893311    mainSizer.Add(backSizer)
    32903312
  • trunk/imports/G2sad_xye.py

    r1299 r1300  
    106106                np.zeros(N), # calc. intensities (zero)
    107107                np.zeros(N), # obs-calc profiles
     108                np.zeros(N), # fix bkg
    108109                ]
    109110            self.smallangleentry[0] = filename
     
    203204                np.zeros(N), # calc. intensities (zero)
    204205                np.zeros(N), # obs-calc profiles
     206                np.zeros(N), # fix bkg
    205207                ]
    206208            self.smallangleentry[0] = filename
     
    302304                np.zeros(N), # calc. intensities (zero)
    303305                np.zeros(N), # obs-calc profiles
     306                np.zeros(N), # fix bkg
    304307                ]
    305308            self.smallangleentry[0] = filename
     
    399402                np.zeros(N), # calc. intensities (zero)
    400403                np.zeros(N), # obs-calc profiles
     404                np.zeros(N), # fix bkg
    401405                ]
    402406            self.smallangleentry[0] = filename
Note: See TracChangeset for help on using the changeset viewer.