Changeset 249 for trunk/GSASII.py


Ignore:
Timestamp:
Feb 18, 2011 3:36:51 PM (11 years ago)
Author:
vondreele
Message:

Modify export powder & delete data to allow global selections
make sure azimuth goes with pattern
refactor powderXyeSave & powderFxyeSave

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r248 r249  
    162162    def _init_coll_Export_Items(self,parent):
    163163        self.ExportPattern = parent.Append(help='Select PWDR item to enable',id=wxID_EXPORTPATTERN, kind=wx.ITEM_NORMAL,
    164             text='Export Powder Pattern...')
     164            text='Export Powder Patterns...')
    165165        self.ExportPeakList = parent.Append(help='',id=wxID_EXPORTPEAKLIST, kind=wx.ITEM_NORMAL,
    166166            text='Export All Peak Lists...')
     
    176176        self.ExportPhase.Enable(False)
    177177        self.ExportCIF.Enable(False)
    178         self.Bind(wx.EVT_MENU, self.OnExportPattern, id=wxID_EXPORTPATTERN)
     178        self.Bind(wx.EVT_MENU, self.OnExportPatterns, id=wxID_EXPORTPATTERN)
    179179        self.Bind(wx.EVT_MENU, self.OnExportPeakList, id=wxID_EXPORTPEAKLIST)
    180180        self.Bind(wx.EVT_MENU, self.OnExportHKL, id=wxID_EXPORTHKL)
     
    358358                                v = Iparm['INS  1PRCF11'].split()
    359359                                data.extend([float(v[0]),float(v[1]),float(v[2])])                  #get GU, GV & GW - always here
     360                                try:
     361                                    azm = float(Iparm['INS  1DETAZM'])
     362                                except KeyError:                                                #not in this Iparm file
     363                                    azm = 0.0
    360364                                v = Iparm['INS  1PRCF12'].split()
    361365                                if v1[0] == 3:
    362                                     data.extend([float(v[0]),float(v[1]),float(v[2])+float(v[3],0.0)])  #get LX, LY, S+H/L & azimuth
     366                                    data.extend([float(v[0]),float(v[1]),float(v[2])+float(v[3],azm)])  #get LX, LY, S+H/L & azimuth
    363367                                else:
    364                                     data.extend([0.0,0.0,0.002,0.0])                                      #OK defaults if fxn #3 not 1st in iprm file
     368                                    data.extend([0.0,0.0,0.002,azm])                                      #OK defaults if fxn #3 not 1st in iprm file
    365369                                codes.extend([0,0,0,0,0,0,0])
    366370                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(data),data,codes,names])
     
    900904       
    901905    def OnDataDelete(self, event):
    902         TextList = []
     906        TextList = ['All Data']
    903907        DelList = []
    904908        DelItemList = []
     909        ifPWDR = False
     910        ifIMG = False
     911        ifHKLF = False
    905912        if self.PatternTree.GetCount():
    906913            item, cookie = self.PatternTree.GetFirstChild(self.root)
     
    908915                name = self.PatternTree.GetItemText(item)
    909916                if 'PWDR' in name or 'HKLF' in name or 'IMG' in name:
     917                    if 'PWDR' in name: ifPWDR = True
     918                    if 'IMG' in name: ifIMG = True
     919                    if 'HKLF' in name: ifHKLF = True
    910920                    TextList.append(name)
    911                 item, cookie = self.PatternTree.GetNextChild(self.root, cookie)               
     921                item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     922            if ifPWDR: TextList.insert(1,'All PWDR')
     923            if ifIMG: TextList.insert(1,'All IMG')
     924            if ifHKLF: TextList.insert(1,'All HKLF')               
    912925            dlg = wx.MultiChoiceDialog(self, 'Which data to delete?', 'Delete data', TextList, wx.CHOICEDLG_STYLE)
    913926            try:
     
    915928                    result = dlg.GetSelections()
    916929                    for i in result: DelList.append(TextList[i])
     930                    if 'All Data' in DelList:
     931                        DelList = [item for item in TextList if item[:3] != 'All']
     932                    elif 'All PWDR' in DelList:
     933                        DelList = [item for item in TextList if item[:4] == 'PWDR']
     934                    elif 'All IMG' in DelList:
     935                        DelList = [item for item in TextList if item[:3] == 'IMG']
     936                    elif 'All HKLF' in DelList:
     937                        DelList = [item for item in TextList if item[:4] == 'HKLF']
    917938                    item, cookie = self.PatternTree.GetFirstChild(self.root)
    918939                    while item:
     
    10241045       
    10251046    def OnImportPattern(self,event):
    1026             dlg = wx.FileDialog(self, 'Choose nonGSAS powder file', '.', '',
    1027                 '(*.*)|*.*',wx.OPEN)
     1047        dlg = wx.FileDialog(self, 'Choose nonGSAS powder file', '.', '',
     1048            '(*.*)|*.*',wx.OPEN)
     1049        if self.dirname:
     1050            dlg.SetDirectory(self.dirname)
     1051        try:
     1052            if dlg.ShowModal() == wx.ID_OK:
     1053                self.powderfile = dlg.GetPath()
     1054                self.dirname = dlg.GetDirectory()
     1055        finally:
     1056            dlg.Destroy()
     1057           
     1058    def OnImportHKL(self,event):
     1059        dlg = wx.FileDialog(self, 'Choose structure factor file', '.', '',
     1060            '(*.*)|*.*',wx.OPEN)
     1061        if self.dirname:
     1062            dlg.SetDirectory(self.dirname)
     1063        try:
     1064            if dlg.ShowModal() == wx.ID_OK:
     1065                self.HKLfile = dlg.GetPath()
     1066                self.dirname = dlg.GetDirectory()
     1067        finally:
     1068            dlg.Destroy()
     1069       
     1070    def OnImportPhase(self,event):
     1071        dlg = wx.FileDialog(self, 'Choose GSAS EXP file', '.', '',
     1072            'EXP file (*.EXP)|*.EXP',wx.OPEN)
     1073        if self.dirname:
     1074            dlg.SetDirectory(self.dirname)
     1075        try:
     1076            Phase = {}
     1077            if dlg.ShowModal() == wx.ID_OK:
     1078                EXPfile = dlg.GetPath()
     1079                self.dirname = dlg.GetDirectory()
     1080                Phase = G2IO.ReadEXPPhase(self,EXPfile)
     1081        finally:
     1082            dlg.Destroy()
     1083        if Phase:
     1084            PhaseName = Phase['General']['Name']
     1085            if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
     1086                sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
     1087            else:
     1088                sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     1089            sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
     1090            self.PatternTree.SetItemPyData(sub,Phase)
     1091           
     1092    def OnImportPDB(self,event):
     1093        dlg = wx.FileDialog(self, 'Choose PDB file', '.', '',
     1094            'PDB file (*.pdb,*.ent)|*.pdb;*.ent|All files (*.*)|*.*',wx.OPEN)
     1095        if self.dirname:
     1096            dlg.SetDirectory(self.dirname)
     1097        try:
     1098            if dlg.ShowModal() == wx.ID_OK:
     1099                PDBfile = dlg.GetPath()
     1100                self.dirname = dlg.GetDirectory()
     1101                Phase = G2IO.ReadPDBPhase(PDBfile)
     1102        finally:
     1103            dlg.Destroy()
     1104        if Phase:
     1105            PhaseName = Phase['General']['Name']
     1106            if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
     1107                sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
     1108            else:
     1109                sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     1110            sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
     1111            self.PatternTree.SetItemPyData(sub,Phase)       
     1112       
     1113    def OnImportCIF(self,event):
     1114        dlg = wx.FileDialog(self, 'Choose CIF file', '.', '',
     1115            'CIF file (*.cif)|*.cif',wx.OPEN)
     1116        if self.dirname:
     1117            dlg.SetDirectory(self.dirname)
     1118        try:
     1119            if dlg.ShowModal() == wx.ID_OK:
     1120                CIFfile = dlg.GetPath()
     1121                self.dirname = dlg.GetDirectory()
     1122                Phase = G2IO.ReadCIFPhase(CIFfile)
     1123        finally:
     1124            dlg.Destroy()
     1125        if Phase:
     1126            PhaseName = Phase['General']['Name']
     1127            if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
     1128                sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
     1129            else:
     1130                sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     1131            sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
     1132            self.PatternTree.SetItemPyData(sub,Phase)       
     1133       
     1134    def OnExportPatterns(self,event):
     1135        names = ['All']
     1136        exports = []
     1137        item, cookie = self.PatternTree.GetFirstChild(self.root)
     1138        while item:
     1139            name = self.PatternTree.GetItemText(item)
     1140            if 'PWDR' in name:
     1141                names.append(name)
     1142            item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1143        if names:
     1144            dlg = wx.MultiChoiceDialog(self,'Select','Powder patterns to export',names)
     1145            if dlg.ShowModal() == wx.ID_OK:
     1146                sel = dlg.GetSelections()
     1147                if sel[0] == 0:
     1148                    exports = names[1:]
     1149                else:
     1150                    for x in sel:
     1151                        exports.append(names[x])
     1152            dlg.Destroy()
     1153        if exports:
     1154            dlg = wx.FileDialog(self, 'Choose output powder file name', '.', '',
     1155                'GSAS fxye file (*.fxye)|*.fxye|xye file (*.xye)|*.xye',
     1156                wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
    10281157            if self.dirname:
    10291158                dlg.SetDirectory(self.dirname)
    10301159            try:
    10311160                if dlg.ShowModal() == wx.ID_OK:
    1032                     self.powderfile = dlg.GetPath()
     1161                    powderfile = dlg.GetPath()
     1162                    if 'fxye' in powderfile:
     1163                        G2IO.powderFxyeSave(self,exports,powderfile)
     1164                    else:       #just xye
     1165                        G2IO.powderXyeSave(self,exports,powderfile)
    10331166                    self.dirname = dlg.GetDirectory()
    10341167            finally:
    10351168                dlg.Destroy()
    1036                
    1037     def OnImportHKL(self,event):
    1038             dlg = wx.FileDialog(self, 'Choose structure factor file', '.', '',
    1039                 '(*.*)|*.*',wx.OPEN)
    1040             if self.dirname:
    1041                 dlg.SetDirectory(self.dirname)
    1042             try:
    1043                 if dlg.ShowModal() == wx.ID_OK:
    1044                     self.HKLfile = dlg.GetPath()
    1045                     self.dirname = dlg.GetDirectory()
    1046             finally:
    1047                 dlg.Destroy()
    1048        
    1049     def OnImportPhase(self,event):
    1050             dlg = wx.FileDialog(self, 'Choose GSAS EXP file', '.', '',
    1051                 'EXP file (*.EXP)|*.EXP',wx.OPEN)
    1052             if self.dirname:
    1053                 dlg.SetDirectory(self.dirname)
    1054             try:
    1055                 Phase = {}
    1056                 if dlg.ShowModal() == wx.ID_OK:
    1057                     EXPfile = dlg.GetPath()
    1058                     self.dirname = dlg.GetDirectory()
    1059                     Phase = G2IO.ReadEXPPhase(self,EXPfile)
    1060             finally:
    1061                 dlg.Destroy()
    1062             if Phase:
    1063                 PhaseName = Phase['General']['Name']
    1064                 if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
    1065                     sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
    1066                 else:
    1067                     sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
    1068                 sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
    1069                 self.PatternTree.SetItemPyData(sub,Phase)
    1070                
    1071     def OnImportPDB(self,event):
    1072             dlg = wx.FileDialog(self, 'Choose PDB file', '.', '',
    1073                 'PDB file (*.pdb,*.ent)|*.pdb;*.ent|All files (*.*)|*.*',wx.OPEN)
    1074             if self.dirname:
    1075                 dlg.SetDirectory(self.dirname)
    1076             try:
    1077                 if dlg.ShowModal() == wx.ID_OK:
    1078                     PDBfile = dlg.GetPath()
    1079                     self.dirname = dlg.GetDirectory()
    1080                     Phase = G2IO.ReadPDBPhase(PDBfile)
    1081             finally:
    1082                 dlg.Destroy()
    1083             if Phase:
    1084                 PhaseName = Phase['General']['Name']
    1085                 if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
    1086                     sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
    1087                 else:
    1088                     sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
    1089                 sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
    1090                 self.PatternTree.SetItemPyData(sub,Phase)       
    1091        
    1092     def OnImportCIF(self,event):
    1093             dlg = wx.FileDialog(self, 'Choose CIF file', '.', '',
    1094                 'CIF file (*.cif)|*.cif',wx.OPEN)
    1095             if self.dirname:
    1096                 dlg.SetDirectory(self.dirname)
    1097             try:
    1098                 if dlg.ShowModal() == wx.ID_OK:
    1099                     CIFfile = dlg.GetPath()
    1100                     self.dirname = dlg.GetDirectory()
    1101                     Phase = G2IO.ReadCIFPhase(CIFfile)
    1102             finally:
    1103                 dlg.Destroy()
    1104             if Phase:
    1105                 PhaseName = Phase['General']['Name']
    1106                 if not G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
    1107                     sub = self.PatternTree.AppendItem(parent=self.root,text='Phases')
    1108                 else:
    1109                     sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
    1110                 sub = self.PatternTree.AppendItem(parent=sub,text=PhaseName)
    1111                 self.PatternTree.SetItemPyData(sub,Phase)       
    1112        
    1113     def OnExportPattern(self,event):
    1114         dlg = wx.FileDialog(self, 'Choose output powder file name', '.', '',
    1115             'GSAS fxye file (*.fxye)|*.fxye|xye file (*.xye)|*.xye',
    1116             wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
    1117         if self.dirname:
    1118             dlg.SetDirectory(self.dirname)
    1119         try:
    1120             if dlg.ShowModal() == wx.ID_OK:
    1121                 powderfile = dlg.GetPath()
    1122                 if 'fxye' in powderfile:
    1123                     G2IO.powderFxyeSave(self,powderfile)
    1124                 else:       #just xye
    1125                     G2IO.powderXyeSave(self,powderfile)
    1126                 self.dirname = dlg.GetDirectory()
    1127         finally:
    1128             dlg.Destroy()
    11291169       
    11301170    def OnExportPeakList(self,event):
Note: See TracChangeset for help on using the changeset viewer.