Changeset 697


Ignore:
Timestamp:
Aug 3, 2012 1:34:38 PM (10 years ago)
Author:
vondreele
Message:

add ranId to PWDR histograms & each PhaseSelector?
implement 'Use' for every histogram & restraint
remove OnPwdrRead? dead code from GSASII.py
implement stress/strain GUI stuff
implement a clear map menu item
remove getBackupName2 dead code from GSASIIstruct.py

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r696 r697  
    1111
    1212import os
    13 #import os.path as ospath
    1413import sys
    1514import math
    1615import copy
    17 #import cPickle
     16import random as ran
    1817import time
    1918import copy
     
    146145       
    147146    def _init_coll_Data_Items(self,parent):
    148 #        parent.Append(help='', id=wxID_PWDRREAD, kind=wx.ITEM_NORMAL,
    149 #            text='Read powder data...')
    150147        parent.Append(help='',id=wxID_IMGREAD, kind=wx.ITEM_NORMAL,
    151148            text='Read image data...')
    152149        parent.Append(help='',id=wxID_READPEAKS, kind=wx.ITEM_NORMAL,
    153150            text='Read Powder Pattern Peaks...')
    154 #        parent.Append(help='', id=wxID_SNGLREAD, kind=wx.ITEM_NORMAL,
    155 #            text='Read single crystal data...')
    156151        parent.Append(help='', id=wxID_PWDSUM, kind=wx.ITEM_NORMAL,
    157152            text='Sum powder data')
     
    166161        parent.Append(help='', id=wxID_DATADELETE, kind=wx.ITEM_NORMAL,
    167162            text='Delete data')
    168         self.Bind(wx.EVT_MENU, self.OnPwdrRead, id=wxID_PWDRREAD)
     163#        self.Bind(wx.EVT_MENU, self.OnPwdrRead, id=wxID_PWDRREAD)
    169164        self.Bind(wx.EVT_MENU, self.OnPwdrSum, id=wxID_PWDSUM)
    170165        self.Bind(wx.EVT_MENU, self.OnReadPowderPeaks, id=wxID_READPEAKS)
     
    806801                parent=self.root,
    807802                text='PWDR '+rd.idstring)
    808 #            self.PatternTree.SetItemPyData(Id,[rd.powderentry,rd.powderdata])
    809803            self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata])
    810804            self.PatternTree.SetItemPyData(
     
    10341028            self.PatternTree.GetNextSibling(item)
    10351029               
    1036     def OnPwdrRead(self, event):
    1037         self.CheckNotebook()
    1038         dlg = wx.FileDialog(self, 'Choose files', '.', '',
    1039             'GSAS fxye files (*.fxye)|*.fxye|GSAS fxy files (*.fxy)|*.fxy|Topas xye files (*.xye)|*.xye|All files (*.*)|*.*',
    1040             wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR)
    1041         try:
    1042             if dlg.ShowModal() == wx.ID_OK:
    1043                 filenames = dlg.GetPaths()
    1044                 filenames.sort()
    1045                 for filename in filenames:
    1046                     Data,Iparm,Comments,Temperature = G2IO.SelectPowderData(self, filename)              #Data: list of tuples (filename,Pos,Bank)
    1047                     if not Data:                                                    #if Data rejected by user - go to next one
    1048                         continue
    1049                     DataType = Iparm['INS   HTYPE ']                                #expect only 4 char string
    1050                     DataType = DataType.strip()[0:3]                                #just 1st 3 chars
    1051                     wx.BeginBusyCursor()
    1052                     Sample = G2pdG.SetDefaultSample()
    1053                     Sample['Temperature'] = Temperature
    1054                     try:
    1055                         for Item in Data:
    1056                             vals = Item[2].split()          #split up the BANK record
    1057                             Id = self.PatternTree.AppendItem(parent=self.root,text='PWDR '+os.path.basename(Item[0])+': '+vals[0]+vals[1])
    1058                             data = G2IO.GetPowderData(filename,Item[1],Item[2],DataType)
    1059                             self.PatternTree.SetItemPyData(Id,[Item,data])
    1060                             '''
    1061                             Each tree item data is a list with:
    1062                             Item: the (filename,Pos,Bank) tuple
    1063                             data: (x,y,w,yc,yb,yd) list  of np.arrays from GetPowderData
    1064                             '''
    1065                            
    1066                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments)                           
    1067                             Tmin = min(data[0])
    1068                             Tmax = max(data[0])
    1069                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Limits'),[(Tmin,Tmax),[Tmin,Tmax]])
    1070                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',True,3,1.0,0.0,0.0],
    1071                                 {'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}])
    1072        
    1073                             data = [DataType,]
    1074                             if 'C' in DataType:
    1075                                 s = Iparm['INS  1 ICONS']
    1076                                 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
    1077                                 if not v[1]:
    1078                                     names = ['Type','Lam','Zero','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
    1079                                     v = (v[0],v[2],v[4])
    1080                                     codes = [0,0,0,0]
    1081                                     Sample['Type'] = 'Debye-Scherrer'               #default instrument type
    1082                                 else:
    1083                                     names = ['Type','Lam1','Lam2','Zero','I(L2)/I(L1)','Polariz.','U','V','W','X','Y','SH/L','Azimuth']
    1084                                     codes = [0,0,0,0,0,0]
    1085                                     Sample['Type'] = 'Bragg-Brentano'               #default instrument type
    1086                                     Sample['Shift'] = [0.0,False]
    1087                                     Sample['Transparency'] = [0.0,False]
    1088                                 data.extend(v)
    1089                                 v1 = Iparm['INS  1PRCF1 '].split()                                                 
    1090                                 v = Iparm['INS  1PRCF11'].split()
    1091                                 data.extend([float(v[0]),float(v[1]),float(v[2])])                  #get GU, GV & GW - always here
    1092                                 try:
    1093                                     azm = float(Iparm['INS  1DETAZM'])
    1094                                 except KeyError:                                                #not in this Iparm file
    1095                                     azm = 0.0
    1096                                 v = Iparm['INS  1PRCF12'].split()
    1097                                 if v1[0] == '3':
    1098                                     data.extend([float(v[0]),float(v[1]),float(v[2])+float(v[3]),azm])  #get LX, LY, S+H/L & azimuth
    1099                                 else:
    1100                                     data.extend([0.0,0.0,0.002,azm])                                      #OK defaults if fxn #3 not 1st in iprm file
    1101                                 codes.extend([0,0,0,0,0,0,0])
    1102                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(data),data,codes,names])
    1103                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Sample Parameters'),Sample)
    1104                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Peak List'),[])
    1105                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Index Peak List'),[])
    1106                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Unit Cells List'),[])
    1107                             self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Reflection Lists'),{})             
    1108                             self.PatternId = G2gd.GetPatternTreeItemId(self,Id,'Limits')
    1109                     finally:
    1110                         wx.EndBusyCursor()
    1111                 self.PatternTree.Expand(Id)
    1112                 self.PatternTree.SelectItem(Id)
    1113    
    1114         finally:
    1115             dlg.Destroy()
    1116        
    11171030    def OnReadPowderPeaks(self,event):
    11181031        Cuka = 1.54052
     
    12091122                        Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]}
    12101123                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks)
    1211                         self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'),{})
     1124                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'),
     1125                            {'Type':'True','d-zero':[],'Sample phi':0.0,'Sample z':0.0,'strain':np.zeros((3,3))})
    12121126                        self.PatternTree.SetItemPyData(Id,[Npix,imagefile])
    12131127                        self.PickId = Id
     
    17521666                    self.PatternTree.DeleteChildren(self.root)
    17531667                    self.GSASprojectfile = ''
    1754 #                    self.PatternTree.DeleteChildren(self.root)
    17551668                    if self.HKL: self.HKL = []
    17561669                    if self.G2plotNB.plotList:
     
    19951908        PWDRdata['Sample Parameters'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Sample Parameters'))
    19961909        PWDRdata['Reflection Lists'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Reflection Lists'))
     1910        if 'ranId' not in PWDRdata['Sample Parameters']:
     1911            PWDRdata['Sample Parameters']['ranId'] = ran.randint(0,sys.maxint)
     1912        PWDRdata['ranId'] = PWDRdata['Sample Parameters']['ranId']
    19971913        return PWDRdata
    19981914
     
    20241940            item, cookie = self.PatternTree.GetFirstChild(sub)
    20251941            while item:
    2026                 phaseData[self.PatternTree.GetItemText(item)] =  self.PatternTree.GetItemPyData(item)               
     1942                phaseName = self.PatternTree.GetItemText(item)
     1943                phaseData[phaseName] =  self.PatternTree.GetItemPyData(item)
     1944                if 'ranId' not in phaseData[phaseName]:
     1945                    phaseData[phaseName]['ranId'] = ran.randint(0,sys.maxint)         
    20271946                item, cookie = self.PatternTree.GetNextChild(sub, cookie)
    20281947        return phaseData               
  • trunk/GSASIIIO.py

    r695 r697  
    655655def SetNewPhase(Name='New Phase',SGData=G2spc.SpcGroup('P 1')[1],cell=[1.0,1.0,1.0,90.,90,90.,1.]):
    656656    phaseData = {
     657        'ranId':ran.randint(0,sys.maxint),
    657658        'General':{
    658659            'Name':Name,
  • trunk/GSASIIgrid.py

    r696 r697  
    3838htmlFirstUse = True
    3939
    40 [ wxID_FOURCALC, wxID_FOURSEARCH, wxID_PEAKSMOVE, wxID_PEAKSCLEAR, wxID_CHARGEFLIP,
    41     wxID_PEAKSUNIQUE, wxID_PEAKSDELETE,
    42 ] = [wx.NewId() for item in range(7)]
     40[ wxID_FOURCALC, wxID_FOURSEARCH, wxID_FOURCLEAR, wxID_PEAKSMOVE, wxID_PEAKSCLEAR,
     41    wxID_CHARGEFLIP, wxID_PEAKSUNIQUE, wxID_PEAKSDELETE,
     42] = [wx.NewId() for item in range(8)]
    4343
    4444[ wxID_PWDRADD, wxID_HKLFADD, wxID_DATADELETE,
     
    7171] = [wx.NewId() for item in range(3)]
    7272
    73 [ wxID_STRSTACOPY, wxID_STRSTAFIT, wxID_STRSTASAVE, wxID_STRSTALOAD,
    74 ] = [wx.NewId() for item in range(4)]
     73[ wxID_STRSTACOPY, wxID_STRSTAFIT, wxID_STRSTASAVE, wxID_STRSTALOAD,wxID_APPENDDZERO,
     74] = [wx.NewId() for item in range(5)]
    7575
    7676[ wxID_BACKCOPY,wxID_LIMITCOPY,wxID_SAMPLECOPY, wxID_BACKFLAGCOPY, wxID_SAMPLEFLAGCOPY,
     
    446446        self.StrStaMenu.Append(menu=self.StrStaEdit, title='Operations')
    447447        self.StrStaMenu.Append(menu=MyHelp(self,helpType='Stress/Strain'),title='&Help')
     448        self.StrStaEdit.Append(help='Append d-zero for one ring',
     449            id=wxID_APPENDDZERO, kind=wx.ITEM_NORMAL,text='Append d-zero')
    448450        self.StrStaEdit.Append(help='Fit stress/strain data',
    449451            id=wxID_STRSTAFIT, kind=wx.ITEM_NORMAL,text='Fit stress/strain')
     
    486488        self.GeneralCalc.Append(help='Run charge flipping',id=wxID_CHARGEFLIP, kind=wx.ITEM_NORMAL,
    487489            text='Charge flipping')
     490        self.GeneralCalc.Append(help='Clear map',id=wxID_FOURCLEAR, kind=wx.ITEM_NORMAL,
     491            text='Clear map')
    488492       
    489493# Phase / Data tab
     
    16141618    restrData = data[phaseName]
    16151619    if 'Bond' not in restrData:
    1616         restrData['Bond'] = {'wtFactor':1.0,'Bonds':[]}
     1620        restrData['Bond'] = {'wtFactor':1.0,'Bonds':[],'Use':True}
    16171621    if 'Angle' not in restrData:
    1618         restrData['Angle'] = {'wtFactor':1.0,'Angles':[]}
     1622        restrData['Angle'] = {'wtFactor':1.0,'Angles':[],'Use':True}
    16191623    if 'Plane' not in restrData:
    1620         restrData['Plane'] = {'wtFactor':1.0,'Planes':[]}
     1624        restrData['Plane'] = {'wtFactor':1.0,'Planes':[],'Use':True}
    16211625    if 'Chiral' not in restrData:
    1622         restrData['Chiral'] = {'wtFactor':1.0,'Volumes':[]}
     1626        restrData['Chiral'] = {'wtFactor':1.0,'Volumes':[],'Use':True}
    16231627   
    16241628    def OnSelectPhase(event):
     
    16641668            wtfactor.SetValue('%.2f'%(value))
    16651669           
     1670        def OnUseData(event):
     1671            restData['Use'] = Obj.GetValue()
     1672
    16661673        wtBox = wx.BoxSizer(wx.HORIZONTAL)
    16671674        wtBox.Add(wx.StaticText(wind,-1,'Restraint weight factor:'),0,wx.ALIGN_CENTER_VERTICAL)
     
    16701677        wtfactor.Bind(wx.EVT_KILL_FOCUS,OnWtFactor)
    16711678        wtBox.Add(wtfactor,0,wx.ALIGN_CENTER_VERTICAL)
     1679        useData = wx.CheckBox(wind,-1,label=' Use?')
     1680        useData.Bind(wx.EVT_CHECKBOX, OnUseData)
     1681        useData.SetValue(restData['Use'])       
     1682        wtBox.Add(useData,0,wx.ALIGN_CENTER_VERTICAL)
    16721683        return wtBox
    16731684       
     
    17101721                for c in range(2):
    17111722                    Bonds.SetReadOnly(r,c,True)
     1723                    Bonds.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    17121724            Bonds.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    17131725            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
     
    17611773                for c in range(2):
    17621774                    Angles.SetReadOnly(r,c,True)
     1775                    Angles.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    17631776            Angles.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    17641777            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
     
    18171830                for c in range(3):
    18181831                    Planes.SetReadOnly(r,c,True)
     1832                    Planes.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    18191833            Planes.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    18201834            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
     
    18681882                for c in range(2):
    18691883                    Volumes.SetReadOnly(r,c,True)
     1884                    Volumes.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    18701885            Volumes.Bind(wg.EVT_GRID_CELL_CHANGE, ChangeCell)
    18711886            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=wxID_RESTDELETE)
  • trunk/GSASIIimgGUI.py

    r696 r697  
    10801080def UpdateStressStrain(G2frame,data):
    10811081   
     1082    def OnAppendDzero(event):
     1083        data['d-zero'].append({'Dset':1.0,'Dcalc':0.0,'pixLimit':10,'cutoff':10.0,'ImxyObs':[[],[]],'Imxycalc':[[],[]]})
     1084        UpdateStressStrain(G2frame,data)
     1085           
    10821086    def OnCopyStrSta(event):
    1083         print 'Copy stress/strain data - does nothing yet'
    1084         event.Skip()
     1087        import copy
     1088        TextList = [[False,'All IMG',0]]
     1089        Names = []
     1090        if G2frame.PatternTree.GetCount():
     1091            id, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
     1092            while id:
     1093                name = G2frame.PatternTree.GetItemText(id)
     1094                Names.append(name)
     1095                if 'IMG' in name:
     1096                    if id == G2frame.Image:
     1097                        Source = name
     1098                        Data = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Stress/Strain')))
     1099                    else:
     1100                        TextList.append([False,name,id])
     1101                id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
     1102            if len(TextList) == 1:
     1103                G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "IMG" pattern')
     1104                return
     1105            dlg = G2frame.CopyDialog(G2frame,'Copy stress/strain controls','Copy controls from '+Source+' to:',TextList)
     1106            try:
     1107                if dlg.ShowModal() == wx.ID_OK:
     1108                    result = dlg.GetData()
     1109                    if result[0][0]:
     1110                        result = TextList[1:]
     1111                        for item in result: item[0] = True
     1112                    for i,item in enumerate(result):
     1113                        ifcopy,name,id = item
     1114                        if ifcopy:
     1115                            oldData = copy.deepcopy(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Stress/Strain')))
     1116                            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'Stress/Strain'),copy.deepcopy(Data))
     1117            finally:
     1118                dlg.Destroy()
    10851119
    10861120    def OnLoadStrSta(event):
     
    10891123
    10901124    def OnSaveStrSta(event):
    1091         print 'Save stress/strain data - does nothing yet'
    1092         event.Skip()
     1125        dlg = wx.FileDialog(G2frame, 'Choose stress/strain file', '.', '',
     1126            'image control files (*.strsta)|*.strsta',wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT|wx.CHANGE_DIR)
     1127        try:
     1128            if dlg.ShowModal() == wx.ID_OK:
     1129                filename = dlg.GetPath()
     1130                File = open(filename,'w')
     1131                save = {}
     1132                keys = ['Type','Sample phi','Sample z','strain']
     1133                keys2 = ['Dset','Dcalc','pixLimit','cutoff']
     1134                File.write('{\n\t')
     1135                for key in keys:
     1136                    if key in 'strain':
     1137                        File.write("'"+key+"':["+str(data[key][0])+','+str(data[key][1])+','+str(data[key][2])+'],')
     1138                    else:
     1139                        File.write("'"+key+"':"+str(data[key])+',')
     1140                File.write('\n\t'+"'d-zero':[\n")
     1141                for data2 in data['d-zero']:
     1142                    File.write('\t\t{')
     1143                    for key in keys2:
     1144                        File.write("'"+key+"':"+':'+str(data2[key])+',')
     1145                    File.write("'ImxyObs':[[],[]],'Imxycalc':[[],[]]},\n")
     1146                File.write('\t]\n}')
     1147                File.close()
     1148        finally:
     1149            dlg.Destroy()
    10931150
    10941151    def OnFitStrSta(event):
    10951152        print 'Fit stress/strain data - does nothing yet'
    10961153        event.Skip()
    1097 
     1154       
     1155    def SamSizer():
     1156       
     1157        def OnStrainType(event):
     1158            data['Type'] = strType.GetValue()
     1159       
     1160        def OnSamPhi(event):
     1161            try:
     1162                value = float(samPhi.GetValue())
     1163            except ValueError:
     1164                value = data['Sample phi']
     1165            data['Sample phi'] = value
     1166            samPhi.SetValue("%.3f" % (data['Sample phi']))
     1167               
     1168        def OnSamZ(event):
     1169            try:
     1170                value = float(samZ.GetValue())
     1171            except ValueError:
     1172                value = data['Sample z']
     1173            data['Sample z'] = value
     1174            samZ.SetValue("%.3f" % (data['Sample z']))
     1175               
     1176        samSizer = wx.BoxSizer(wx.HORIZONTAL)
     1177        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Strain type: '),0,wx.ALIGN_CENTER_VERTICAL)
     1178        strType = wx.ComboBox(G2frame.dataDisplay,value=data['Type'],choices=['True','Conventional'],
     1179            style=wx.CB_READONLY|wx.CB_DROPDOWN)
     1180        strType.SetValue(data['Type'])
     1181        strType.Bind(wx.EVT_COMBOBOX, OnStrainType)
     1182        samSizer.Add(strType,0,wx.ALIGN_CENTER_VERTICAL)
     1183       
     1184        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Sample phi: '),0,wx.ALIGN_CENTER_VERTICAL)
     1185        samPhi = wx.TextCtrl(G2frame.dataDisplay,-1,value=("%.3f" % (data['Sample phi'])),
     1186            style=wx.TE_PROCESS_ENTER)
     1187        samSizer.Add(samPhi,0,wx.ALIGN_CENTER_VERTICAL)
     1188        samPhi.Bind(wx.EVT_TEXT_ENTER,OnSamPhi)
     1189        samPhi.Bind(wx.EVT_KILL_FOCUS,OnSamPhi)
     1190        samSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=' Sample delta-z(mm): '),0,wx.ALIGN_CENTER_VERTICAL)
     1191        samZ = wx.TextCtrl(G2frame.dataDisplay,-1,value=("%.3f" % (data['Sample z'])),
     1192            style=wx.TE_PROCESS_ENTER)
     1193        samSizer.Add(samZ,0,wx.ALIGN_CENTER_VERTICAL)
     1194        samZ.Bind(wx.EVT_TEXT_ENTER,OnSamZ)
     1195        samZ.Bind(wx.EVT_KILL_FOCUS,OnSamZ)
     1196        return samSizer
     1197       
     1198    def DzeroSizer():
     1199   
     1200        def OnDzero(event):
     1201            Obj = event.GetEventObject()
     1202            try:
     1203                value = min(10.0,max(1.0,float(Obj.GetValue())))
     1204            except ValueError:
     1205                value = 1.0
     1206            Obj.SetValue("%.5f"%(value))
     1207            data['d-zero'][Indx[Obj.GetId()]]['Dset'] = value
     1208           
     1209        def OnDeleteDzero(event):
     1210            Obj = event.GetEventObject()
     1211            del(data['d-zero'][delIndx.index(Obj)])
     1212            UpdateStressStrain(G2frame,data)
     1213       
     1214        def OnCutOff(event):
     1215            Obj = event.GetEventObject()
     1216            try:
     1217                value = min(10.0,max(0.5,float(Obj.GetValue())))
     1218            except ValueError:
     1219                value = 10.0
     1220            Obj.SetValue("%.1f"%(value))
     1221            data['d-zero'][Indx[Obj.GetId()]]['cutoff'] = value
     1222       
     1223        def OnPixLimit(event):
     1224            Obj = event.GetEventObject()
     1225            data['d-zero'][Indx[Obj.GetId()]]['pixLimit'] = int(Obj.GetValue())
     1226           
     1227        Indx = {}
     1228        delIndx = []   
     1229        dzeroSizer = wx.FlexGridSizer(1,8,5,5)
     1230        for id,dzero in enumerate(data['d-zero']):
     1231            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=(' d-zero #%d: '%(id))),
     1232                0,wx.ALIGN_CENTER_VERTICAL)
     1233            dZero = wx.TextCtrl(G2frame.dataDisplay,-1,value=('%.5f'%(dzero['Dset'])),
     1234                style=wx.TE_PROCESS_ENTER)
     1235            dzeroSizer.Add(dZero,0,wx.ALIGN_CENTER_VERTICAL)
     1236            dZero.Bind(wx.EVT_TEXT_ENTER,OnDzero)
     1237            dZero.Bind(wx.EVT_KILL_FOCUS,OnDzero)
     1238            Indx[dZero.GetId()] = id
     1239            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=(' d-zero calc: %.5f'%(dzero['Dcalc']))),
     1240                0,wx.ALIGN_CENTER_VERTICAL)
     1241               
     1242            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Min ring I/Ib '),0,
     1243                wx.ALIGN_CENTER_VERTICAL)
     1244            cutOff = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.1f" % (dzero['cutoff'])),
     1245                style=wx.TE_PROCESS_ENTER)
     1246            cutOff.Bind(wx.EVT_TEXT_ENTER,OnCutOff)
     1247            cutOff.Bind(wx.EVT_KILL_FOCUS,OnCutOff)
     1248            Indx[cutOff.GetId()] = id
     1249            dzeroSizer.Add(cutOff,0,wx.ALIGN_CENTER_VERTICAL)
     1250       
     1251            dzeroSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Pixel search range '),0,
     1252                wx.ALIGN_CENTER_VERTICAL)
     1253            pixLimit = wx.ComboBox(parent=G2frame.dataDisplay,value=str(dzero['pixLimit']),choices=['1','2','5','10','15','20'],
     1254                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     1255            pixLimit.Bind(wx.EVT_COMBOBOX, OnPixLimit)
     1256            Indx[pixLimit.GetId()] = id
     1257            dzeroSizer.Add(pixLimit,0,wx.ALIGN_CENTER_VERTICAL)               
     1258               
     1259            dzeroDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?')
     1260            dzeroDelete.Bind(wx.EVT_CHECKBOX,OnDeleteDzero)
     1261            delIndx.append(dzeroDelete)
     1262            dzeroSizer.Add(dzeroDelete,0,wx.ALIGN_CENTER_VERTICAL)
     1263        return dzeroSizer
     1264       
     1265    def StrainSizer():
     1266       
     1267        strainSizer = wx.BoxSizer(wx.VERTICAL)
     1268        strainSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=(' Strain tensor:')),
     1269            0,wx.ALIGN_CENTER_VERTICAL)
     1270        tensorSizer = wx.FlexGridSizer(3,6,5,5)
     1271        names = [[' e11','e12','e13'],[' e21','e22','e23'],[' e31','e32','e33']]
     1272        for i in range(3):
     1273            for j in range(3):
     1274                tensorSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=names[i][j]),0,wx.ALIGN_CENTER_VERTICAL)
     1275                tensorElem = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2f'%(data['strain'][i][j]),style=wx.TE_READONLY)
     1276                tensorElem.SetBackgroundColour(VERY_LIGHT_GREY)
     1277                tensorSizer.Add(tensorElem,0,wx.ALIGN_CENTER_VERTICAL)
     1278        strainSizer.Add(tensorSizer)
     1279        return strainSizer
    10981280
    10991281    if G2frame.dataDisplay:
    11001282        G2frame.dataDisplay.Destroy()
    11011283    G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.StrStaMenu)
     1284    G2frame.dataFrame.Bind(wx.EVT_MENU, OnAppendDzero, id=G2gd.wxID_APPENDDZERO)
    11021285    G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitStrSta, id=G2gd.wxID_STRSTAFIT)
    11031286    G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyStrSta, id=G2gd.wxID_STRSTACOPY)
     
    11081291        Status.SetStatusText(" test  ")
    11091292    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
    1110     if not data:
    1111         data = {'d-zero':[],'Sample phi':0.0,'Sample z':0.0,'strain':np.zeros((3,3))}
    11121293    mainSizer = wx.BoxSizer(wx.VERTICAL)
    11131294    mainSizer.Add((5,10),0)
    1114 
    1115 
    1116 
     1295    mainSizer.Add(SamSizer())
     1296    mainSizer.Add((5,10),0)
     1297    mainSizer.Add(DzeroSizer())
     1298    mainSizer.Add((5,10),0)
     1299    mainSizer.Add(StrainSizer())
     1300   
    11171301    mainSizer.Layout()   
    11181302    G2frame.dataDisplay.SetSizer(mainSizer)
  • trunk/GSASIIphsGUI.py

    r696 r697  
    3636WHITE = wx.Colour(255,255,255)
    3737BLACK = wx.Colour(0,0,0)
    38 
     38mapDefault = {'MapType':'','RefList':'','Resolution':0.5,
     39                'rho':[],'rhoMax':0.,'mapSize':10.0,'cutOff':50.,'Flip':False}
    3940# trig functions in degrees
    4041sind = lambda x: math.sin(x*math.pi/180.)
     
    322323            generalData['POhkl'] = [0,0,1]
    323324        if 'Map' not in generalData:
    324             generalData['Map'] = {'MapType':'','RefList':'','Resolution':0.5,
    325                 'rho':[],'rhoMax':0.,'mapSize':10.0,'cutOff':50.,'Flip':False}
     325            generalData['Map'] = mapDefault
    326326        if 'Flip' not in generalData:
    327327            generalData['Flip'] = {'RefList':'','Resolution':0.5,'Norm element':'None',
     
    28162816            return scaleSizer
    28172817           
     2818        def OnUseData(event):
     2819            Obj = event.GetEventObject()
     2820            hist = Indx[Obj.GetId()]
     2821            UseList[hist]['Use'] = Obj.GetValue()
     2822           
    28182823        def OnShowData(event):
    28192824            Obj = event.GetEventObject()
     
    34193424        for item in keyList:
    34203425            histData = UseList[item]
     3426            if 'Use' not in UseList[item]:      #patch
     3427                UseList[item]['Use'] = True
    34213428            showSizer = wx.BoxSizer(wx.HORIZONTAL)
    34223429            showData = wx.CheckBox(DData,-1,label=' Show '+item)
     
    34253432            showData.Bind(wx.EVT_CHECKBOX, OnShowData)
    34263433            showSizer.Add(showData,0,wx.ALIGN_CENTER_VERTICAL)
     3434            useData = wx.CheckBox(DData,-1,label='Use?')
     3435            Indx[useData.GetId()] = item
     3436            showSizer.Add(useData,0,wx.ALIGN_CENTER_VERTICAL)
     3437            useData.Bind(wx.EVT_CHECKBOX, OnUseData)
     3438            useData.SetValue(UseList[item]['Use'])
    34273439            copyData = wx.Button(DData,-1,label=' Copy?')
    34283440            Indx[copyData.GetId()] = item
     
    38503862        G2plt.PlotStructure(G2frame,data)
    38513863       
     3864    def OnFourClear(event):
     3865        generalData = data['General']
     3866        generalData['Map'] = mapDefault
     3867        G2plt.PlotStructure(G2frame,data)
     3868       
    38523869    def printRho(SGLaue,rho,rhoMax):                         
    38533870# map printing for testing purposes
     
    38833900        print ' Begin fourier map search - can take some time'
    38843901        time0 = time.time()
    3885 
    3886         pgbar = wx.ProgressDialog('Map search','No. Peaks found =',301.0,
    3887             style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
    3888         screenSize = wx.ClientDisplayRect()
    3889         Size = pgbar.GetSize()
    3890         Size = (int(Size[0]*1.2),Size[1]) # increase size a bit along x
    3891         pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
    3892         pgbar.SetSize(Size)
    3893         try:
    3894             peaks,mags = G2mth.SearchMap(data,keepDup=True,Pgbar=pgbar)
    3895         finally:
    3896             pgbar.Destroy()
    3897         sortIdx = np.argsort(mags.flatten())
    3898         if len(peaks):
    3899             data['Map Peaks'] = np.concatenate((mags,peaks),axis=1)           
    3900             print ' Map search finished, time = %.2fs'%(time.time()-time0)
    3901         Page = G2frame.dataDisplay.FindPage('Map peaks')
    3902         G2frame.dataDisplay.ChangeSelection(Page)
    3903         G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.MapPeaksMenu)
    3904         G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksMove, id=G2gd.wxID_PEAKSMOVE)
    3905         G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksUnique, id=G2gd.wxID_PEAKSUNIQUE)
    3906         G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksDelete, id=G2gd.wxID_PEAKSDELETE)
    3907         G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksClear, id=G2gd.wxID_PEAKSCLEAR)
    3908         UpdateDrawAtoms()
    3909         FillMapPeaksGrid()
    3910         G2plt.PlotStructure(G2frame,data)
     3902        generalData = data['General']
     3903        mapData = generalData['Map']
     3904        if len(mapData['rho']):
     3905            pgbar = wx.ProgressDialog('Map search','No. Peaks found =',301.0,
     3906                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
     3907            screenSize = wx.ClientDisplayRect()
     3908            Size = pgbar.GetSize()
     3909            Size = (int(Size[0]*1.2),Size[1]) # increase size a bit along x
     3910            pgbar.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
     3911            pgbar.SetSize(Size)
     3912            try:
     3913                peaks,mags = G2mth.SearchMap(data,keepDup=True,Pgbar=pgbar)
     3914            finally:
     3915                pgbar.Destroy()
     3916            sortIdx = np.argsort(mags.flatten())
     3917            if len(peaks):
     3918                data['Map Peaks'] = np.concatenate((mags,peaks),axis=1)           
     3919                print ' Map search finished, time = %.2fs'%(time.time()-time0)
     3920            Page = G2frame.dataDisplay.FindPage('Map peaks')
     3921            G2frame.dataDisplay.ChangeSelection(Page)
     3922            G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.MapPeaksMenu)
     3923            G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksMove, id=G2gd.wxID_PEAKSMOVE)
     3924            G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksUnique, id=G2gd.wxID_PEAKSUNIQUE)
     3925            G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksDelete, id=G2gd.wxID_PEAKSDELETE)
     3926            G2frame.dataFrame.Bind(wx.EVT_MENU, OnPeaksClear, id=G2gd.wxID_PEAKSCLEAR)
     3927            UpdateDrawAtoms()
     3928            FillMapPeaksGrid()
     3929        else:
     3930            print 'No map available'
    39113931       
    39123932    def OnChargeFlip(event):
     
    39783998            G2frame.dataFrame.Bind(wx.EVT_MENU, OnSearchMaps, id=G2gd.wxID_FOURSEARCH)
    39793999            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChargeFlip, id=G2gd.wxID_CHARGEFLIP)
     4000            G2frame.dataFrame.Bind(wx.EVT_MENU, OnFourClear, id=G2gd.wxID_FOURCLEAR)
    39804001            UpdateGeneral()
    39814002        elif text == 'Data':
     
    40414062    G2frame.dataFrame.Bind(wx.EVT_MENU, OnSearchMaps, id=G2gd.wxID_FOURSEARCH)
    40424063    G2frame.dataFrame.Bind(wx.EVT_MENU, OnChargeFlip, id=G2gd.wxID_CHARGEFLIP)
     4064    G2frame.dataFrame.Bind(wx.EVT_MENU, OnFourClear, id=G2gd.wxID_FOURCLEAR)
    40434065    SetupGeneral()
    40444066    GeneralData = data['General']
  • trunk/GSASIIpwdGUI.py

    r694 r697  
    88# $Id$
    99########### SVN repository information ###################
     10import sys
    1011import os.path
    1112import wx
     
    1516import time
    1617import copy
     18import random as ran
    1719import cPickle
    1820import GSASIIpath
     
    5153
    5254def SetDefaultSample():
    53     return {'Scale':[1.0,True],'Type':'Debye-Scherrer','Absorption':[0.0,False],
     55    return {'ranId':ran.randint(0,sys.maxint),
     56        'Scale':[1.0,True],'Type':'Debye-Scherrer','Absorption':[0.0,False],
    5457        'DisplaceX':[0.0,False],'DisplaceY':[0.0,False],'Diffuse':[],
    5558        'Temperature':300.,'Pressure':1.0,'Humidity':0.0,
     
    10871090
    10881091#patch
     1092    if 'ranId' not in data:
     1093        data['ranId'] = ran.randint(0,sys.maxint)
    10891094    if not 'Gonio. radius' in data:
    10901095        data['Gonio. radius'] = 200.0
  • trunk/GSASIIstruct.py

    r696 r697  
    288288                Phases[phase] = Phase
    289289            for hist in Phase['Histograms']:
    290                 if hist not in Histograms:
     290                if 'Use' not in Phase['Histograms'][hist]:      #patch
     291                    Phase['Histograms'][hist]['Use'] = True         
     292                if hist not in Histograms and Phase['Histograms'][hist]['Use']:
    291293                    Histograms[hist] = allHistograms[hist]
    292294                    #future restraint, etc. histograms here           
     
    295297    return Histograms,Phases
    296298   
    297 def getBackupName2(GPXfile,makeBack=True):      #not work correctly
    298     GPXpath,GPXname = ospath.split(GPXfile)
    299     if GPXpath == '': GPXpath = '.'
    300     Name = ospath.splitext(GPXname)[0]
    301     files = os.listdir(GPXpath)
    302     last = 0
    303     for name in files:
    304         name = name.split('.')
    305         if len(name) >= 3 and name[0] == Name and 'bak' in name[-2]:
    306             if makeBack:
    307                 last = max(last,int(name[-2].strip('bak'))+1)
    308             else:
    309                 last = max(last,int(name[-2].strip('bak')))
    310     GPXback = ospath.join(GPXpath,GPXname.rstrip('.'.join(name[-2:]))+'.bak'+str(last)+'.gpx')
    311     return GPXback
    312 
    313 def getBackupName(GPXfile,makeBack):       #recovered old one
     299def getBackupName(GPXfile,makeBack):
    314300    GPXpath,GPXname = ospath.split(GPXfile)
    315301    if GPXpath == '': GPXpath = '.'
Note: See TracChangeset for help on using the changeset viewer.