Changeset 3600


Ignore:
Timestamp:
Sep 13, 2018 4:04:15 PM (3 years ago)
Author:
vondreele
Message:

add capability to save & load background parameters to/from a file

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r3586 r3600  
    50115011        # PDR / Background
    50125012        G2G.Define_wxId('wxID_BACKCOPY', 'wxID_BACKFLAGCOPY','wxID_MAKEBACKRDF',
    5013             'wxID_RESCALEALL','wxID_BACKPEAKSMOVE',)
     5013            'wxID_RESCALEALL','wxID_BACKPEAKSMOVE','wxID_BACKSAVE','wxID_BACKLOAD')
    50145014        self.BackMenu = wx.MenuBar()
    50155015        self.PrefillDataMenu(self.BackMenu)
     
    50195019        self.BackEdit.Append(G2G.wxID_BACKFLAGCOPY,'Copy flags',
    50205020            'Copy background refinement flags to other histograms')
     5021        self.BackEdit.Append(G2G.wxID_BACKSAVE,'Save ...','Save background parameters to file')
     5022        self.BackEdit.Append(G2G.wxID_BACKLOAD,'Load ...','Load background parameters from file')
    50215023        self.BackEdit.Append(G2G.wxID_BACKPEAKSMOVE,'Move peaks','Move background peaks to Peak List')
    50225024        self.BackEdit.Append(G2G.wxID_MAKEBACKRDF,'Plot RDF','Plot radial distribution from differences')
  • trunk/GSASIIpwdGUI.py

    r3593 r3600  
    10191019            G2frame.GPXtree.SetItemPyData(
    10201020                G2gd.GetGPXtreeItemId(G2frame,Id,'Background'),copy.deepcopy(data))
     1021           
     1022    def OnBackSave(event):
     1023        pth = G2G.GetExportPath(G2frame)
     1024        dlg = wx.FileDialog(G2frame, 'Set name to save GSAS-II background parameters file', pth, '',
     1025            'background parameter files (*.pwdrbck)|*.pwdrbck',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
     1026        try:
     1027            if dlg.ShowModal() == wx.ID_OK:
     1028                filename = dlg.GetPath()
     1029                # make sure extension is .pwdrbck
     1030                filename = os.path.splitext(filename)[0]+'.pwdrbck'
     1031                File = open(filename,'w')
     1032                File.write("#GSAS-II background parameter file; do not add/delete items!\n")
     1033                File.write(str(data[0])+'\n')
     1034                for item in data[1]:
     1035                    if item in ['nPeaks','background PWDR','nDebye'] or not len(data[1][item]):
     1036                        File.write(item+':'+str(data[1][item])+'\n')
     1037                    else:
     1038                        File.write(item+':\n')
     1039                        for term in data[1][item]:
     1040                            File.write(str(term)+'\n')
     1041                File.close()
     1042                print ('Background parameters saved to: '+filename)
     1043        finally:
     1044            dlg.Destroy()
     1045       
     1046    def OnBackLoad(event):
     1047        pth = G2G.GetImportPath(G2frame)
     1048        if not pth: pth = '.'
     1049        dlg = wx.FileDialog(G2frame, 'Choose GSAS-II background parameters file', pth, '',
     1050            'background parameter files (*.pwdrbck)|*.pwdrbck',wx.FD_OPEN)
     1051        try:
     1052            if dlg.ShowModal() == wx.ID_OK:
     1053                newback = [[],{}]
     1054                filename = dlg.GetPath()
     1055                File = open(filename,'r')
     1056                S = File.readline()
     1057                if S[0] == '#':    #skip the heading
     1058                    S = File.readline()     #should contain the std. bck fxn
     1059                newback[0] = eval(S[:-1])
     1060                S = File.readline()               
     1061                while S:
     1062                    [item,vals] = S[:-1].split(':')
     1063                    if item in ['nPeaks','nDebye']:
     1064                        newback[1][item] = int(vals)
     1065                    elif 'PWDR' in item:
     1066                        newback[1][item] = eval(vals)
     1067                    elif item in ['FixedPoints','debyeTerms','peakList']:
     1068                        newback[1][item] = []
     1069                        S = File.readline()
     1070                        while ':' not in S:
     1071                            newback[1][item].append(eval(S[:-1]))
     1072                            S = File.readline()
     1073                        else:
     1074                            continue
     1075                    S = File.readline()               
     1076                File.close()
     1077                G2frame.GPXtree.SetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.PatternId,'Background'),newback)
     1078        finally:
     1079            dlg.Destroy()
     1080        G2plt.PlotPatterns(G2frame,plotType='PWDR')
     1081        wx.CallLater(100,UpdateBackground,G2frame,newback)
    10211082
    10221083    def OnBkgFit(event):
     
    11101171            return
    11111172        else:
    1112             del data[1]['FixedPoints']
     1173            data[1]['FixedPoints'] = []
    11131174            G2plt.PlotPatterns(G2frame,plotType='PWDR')
    11141175   
     
    13561417    G2frame.Bind(wx.EVT_MENU,OnBackCopy,id=G2G.wxID_BACKCOPY)
    13571418    G2frame.Bind(wx.EVT_MENU,OnBackFlagCopy,id=G2G.wxID_BACKFLAGCOPY)
     1419    G2frame.Bind(wx.EVT_MENU,OnBackSave,id=G2G.wxID_BACKSAVE)
     1420    G2frame.Bind(wx.EVT_MENU,OnBackLoad,id=G2G.wxID_BACKLOAD)
    13581421    G2frame.Bind(wx.EVT_MENU,OnPeaksMove,id=G2G.wxID_BACKPEAKSMOVE)
    13591422    G2frame.Bind(wx.EVT_MENU,OnMakeRDF,id=G2G.wxID_MAKEBACKRDF)
Note: See TracChangeset for help on using the changeset viewer.