Changeset 2782


Ignore:
Timestamp:
Apr 14, 2017 10:45:44 AM (5 years ago)
Author:
vondreele
Message:

add autoscaling to autointegration
impose check on rescale limits - need to be in right order

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimgGUI.py

    r2775 r2782  
    22982298      processing loop. (Default is 30.0 seconds.)
    22992299    '''
    2300 
    23012300    def __init__(self,G2frame,PollTime=30.0):
    23022301        def OnStart(event):
     
    24642463            fInp4.invalid = not os.path.exists(fInp4.GetValue())
    24652464            fInp4._IndicateValidity()
     2465           
     2466        def OnAutoScale(event):
     2467            self.AutoScale = autoscale.GetValue()
     2468           
     2469        def OnAutoScaleName(event):
     2470            self.AutoScaleName = scalename.GetValue()
     2471            self.Scale[0] = self.AutoScales[self.AutoScaleName]
     2472            scaleval.SetValue(self.Scale[0])
    24662473               
    24672474        ##################################################
     
    24892496        self.params['optPDF'] = True
    24902497        self.pdfControls = {}
     2498        self.AutoScale = False
     2499        self.Scale = [1.0,]
    24912500
    24922501        G2frame.PatternTree.GetSelection()
    2493         size,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(self.imageBase)        
     2502        size,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(self.imageBase)
    24942503        self.imagedir,fileroot = os.path.split(imagefile)
     2504        Comments = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(
     2505            G2frame,self.imageBase, 'Comments'))
     2506        DefaultAutoScaleNames = GSASIIpath.GetConfigValue('Autoscale_ParmNames')
     2507        self.AutoScaleName = GSASIIpath.GetConfigValue('DefaultAutoScale')
     2508        self.AutoScales = {}
     2509        for comment in Comments:
     2510            if '=' in comment:
     2511                name,val = comment.split('=',1)
     2512                if name in DefaultAutoScaleNames:
     2513                    try:
     2514                        self.AutoScales[name] = float(val)
     2515                        if name == self.AutoScaleName:
     2516                            self.Scale[0] = float(val)
     2517                    except ValueError:
     2518                        continue
    24952519        self.params['filter'] = '*'+os.path.splitext(fileroot)[1]
    24962520        self.params['outdir'] = os.path.abspath(self.imagedir)
     
    25572581        sizer.Add(G2G.G2CheckBox(mnpnl,'',self.params,'SeparateDir'))
    25582582        lblsizr.Add(sizer)
     2583        if self.AutoScales:
     2584            sizer = wx.BoxSizer(wx.HORIZONTAL)
     2585            autoscale = wx.CheckBox(mnpnl,label='Do autoscaling with:')
     2586            autoscale.Bind(wx.EVT_CHECKBOX,OnAutoScale)
     2587            sizer.Add(autoscale,0,WACV)
     2588            scalename = wx.ComboBox(mnpnl,value=self.AutoScaleName,choices=self.AutoScales.keys(),
     2589                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     2590            scalename.Bind(wx.EVT_COMBOBOX,OnAutoScaleName)
     2591            sizer.Add(scalename,0,WACV)
     2592            sizer.Add(wx.StaticText(mnpnl,label=' to '),0,WACV)
     2593            scaleval = G2G.ValidatedTxtCtrl(mnpnl,self.Scale,0,nDig=(10,2),min=1.)
     2594            sizer.Add(scaleval,0,WACV)
     2595            lblsizr.Add(sizer,0)
     2596        #ToDO: Autonormalize, parm name?, scaling value?
    25592597        sizer = wx.BoxSizer(wx.HORIZONTAL)
    25602598        sizer.Add(wx.StaticText(mnpnl, wx.ID_ANY,'Autocompute PDF:'),0,wx.ALIGN_CENTER_VERTICAL)
     
    27162754        # do integration
    27172755        size,imagefile,imagetag = G2frame.PatternTree.GetImageLoc(imgId)
     2756        if self.AutoScale:
     2757            Comments = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(
     2758                G2frame,imgId, 'Comments'))
     2759            for comment in Comments:
     2760                if '=' in comment:
     2761                    name,val = comment.split('=',1)
     2762                    if name == self.AutoScaleName:
     2763                        val = float(val)
     2764                        if val > 0.:
     2765                            Scale = self.Scale[0]/val
     2766                        break
    27182767        masks = G2frame.PatternTree.GetItemPyData(
    27192768            G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks'))
     
    27372786            # write out the images in the selected formats
    27382787            Sdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Sample Parameters'))
     2788            if self.AutoScale:
     2789                print 'Rescale by %.4f'%(Scale)
     2790                y,w = G2frame.PatternTree.GetItemPyData(Id)[1][1:3]
     2791                y *= Scale
     2792                w /= Scale**2
    27392793            # determine the name for the current file
    27402794            fileroot = namepre
  • trunk/GSASIIpwdGUI.py

    r2780 r2782  
    22212221                iBeg = np.searchsorted(x0,Xmin)
    22222222                iFin = np.searchsorted(x0,Xmax)
    2223                 sum0 = np.sum(y0[iBeg:iFin])
    2224                 result = dlg.GetSelections()
    2225                 for i in result:
    2226                     item = histList[i]
    2227                     Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
    2228                     xi,yi,wi = G2frame.PatternTree.GetItemPyData(Id)[1][:3]
    2229                     sumi = np.sum(yi[iBeg:iFin])
    2230                     if sumi:
    2231                         Scale = sum0/sumi
    2232                         yi *= Scale
    2233                         wi /= Scale**2
     2223                if iBeg > iFin:
     2224                    wx.MessageBox('Wrong order for Xmin, Xmax','Error',style=wx.ICON_EXCLAMATION)
     2225                else:
     2226                    sum0 = np.sum(y0[iBeg:iFin])
     2227                    result = dlg.GetSelections()
     2228                    for i in result:
     2229                        item = histList[i]
     2230                        Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)
     2231                        xi,yi,wi = G2frame.PatternTree.GetItemPyData(Id)[1][:3]
     2232                        sumi = np.sum(yi[iBeg:iFin])
     2233                        if sumi:
     2234                            Scale = sum0/sumi
     2235                            yi *= Scale
     2236                            wi /= Scale**2
    22342237        finally:
    22352238            dlg.Destroy()
    22362239        G2plt.PlotPatterns(G2frame,plotType=histName[:4],newPlot=True)
    2237            
    22382240       
    22392241    def OnSampleCopy(event):
  • trunk/config_example.py

    r2775 r2782  
    125125Default is 30 seconds
    126126'''
     127
     128Autoscale_ParmNames = ['userComment2',r'extraInputs\1\extraInputs','Ion_Chamber_I0',]
     129DefaultAutoScale = "userComment2"
     130'''Gives the possible selection of incident monitor names as found in an image metadata file.
     131DefaultAutoScale must be one of the AutoScale_ParmNames
     132Used in AutoIntegration
     133'''
Note: See TracChangeset for help on using the changeset viewer.