Changeset 2567
- Timestamp:
- Dec 8, 2016 1:11:10 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIpwd.py
r2561 r2567 361 361 nR = len(xydata['GofR'][1][1]) 362 362 # mul = 12 363 mul = int(round(2.*np.pi*nR/(data ['Rmax']*qLimits[1])))363 mul = int(round(2.*np.pi*nR/(data.get('Rmax',100.)*qLimits[1]))) 364 364 xydata['GofR'][1][0] = 2.*np.pi*np.linspace(0,nR,nR)/(mul*qLimits[1]) 365 365 xydata['GofR'][1][1] = -dq*np.imag(ft.fft(xydata['FofQ'][1][1],mul*nR)[:nR]) -
trunk/GSASIIpwdGUI.py
r2564 r2567 75 75 def OnSmCombo(event): 76 76 self.result['Smooth'] = smCombo.GetValue() 77 78 def OnMaxR(event): 79 event.Skip() 80 try: 81 val = float(maxR.GetValue()) 82 if val <= 0.: 83 raise ValueError 84 except ValueError: 85 val = self.result['maxR'] 86 self.result['maxR'] = val 87 maxR.SetValue('%.1f'%(val)) 88 77 89 78 self.panel.Destroy() 90 79 self.panel = wx.Panel(self) … … 103 92 dataSizer.Add(smCombo,0,WACV) 104 93 dataSizer.Add(wx.StaticText(self.panel,label=' Maximum radial dist.: '),0,WACV) 105 maxR = wx.TextCtrl(self.panel,value='%.1f'%(self.result['maxR']),style=wx.TE_PROCESS_ENTER) 106 maxR.Bind(wx.EVT_TEXT_ENTER,OnMaxR) 107 maxR.Bind(wx.EVT_KILL_FOCUS,OnMaxR) 94 maxR = G2G.ValidatedTxtCtrl(self.panel,self.result,'maxR',nDig=(10,1),min=10.,max=50., 95 typeHint=float) 108 96 dataSizer.Add(maxR,0,WACV) 109 97 mainSizer.Add(dataSizer,0,WACV) … … 869 857 if 'nPeaks' not in data[1]: 870 858 data[1].update({'nPeaks':0,'peaksList':[]}) 871 ValObj = {}872 859 873 860 def OnBackFlagCopy(event): … … 1072 1059 wx.CallLater(100,UpdateBackground,G2frame,data) 1073 1060 1074 def OnBakVal(event):1075 event.Skip()1076 Obj = event.GetEventObject()1077 item = ValObj[Obj.GetId()][0]1078 try:1079 value = float(Obj.GetValue())1080 except ValueError:1081 value = data[0][item]1082 data[0][item] = value1083 Obj.SetValue('%10.4f'%(value))1084 1085 1061 backSizer = wx.BoxSizer(wx.VERTICAL) 1086 1062 topSizer = wx.BoxSizer(wx.HORIZONTAL) … … 1105 1081 bakSizer = wx.FlexGridSizer(0,5,5,5) 1106 1082 for i,value in enumerate(data[0][3:]): 1107 bakVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4g'%(value),style=wx.TE_PROCESS_ENTER)1083 bakVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data[0],i+3,nDig=(10,4),typeHint=float) 1108 1084 bakSizer.Add(bakVal,0,WACV) 1109 ValObj[bakVal.GetId()] = [i+3]1110 bakVal.Bind(wx.EVT_TEXT_ENTER,OnBakVal)1111 bakVal.Bind(wx.EVT_KILL_FOCUS,OnBakVal)1112 1085 backSizer.Add(bakSizer) 1113 1086 return backSizer … … 1267 1240 '''respond to selection of PWDR Limits data tree item. 1268 1241 ''' 1269 # if G2frame.dataDisplay:1270 # G2frame.dataFrame.Clear()1271 # G2frame.ifGetExclude = False1272 #1273 # def KeyEditPeakGrid(event):1274 # '''for deleting excluded regions1275 # '''1276 # if event.GetKeyCode() == wx.WXK_DELETE:1277 # row = G2frame.dataDisplay.GetSelectedRows()[0]1278 # if row > 1: #can't delete limits!1279 # del(data[row])1280 # wx.CallAfter(UpdateLimitsGrid,G2frame,data,plottype)1281 # G2plt.PlotPatterns(G2frame,plotType=plottype)1282 #1283 # def RefreshLimitsGrid(event):1284 # event.StopPropagation()1285 # data = G2frame.LimitsTable.GetData()1286 # old = data[0]1287 # new = data[1]1288 # new[0] = max(old[0],new[0])1289 # new[1] = max(new[0],min(old[1],new[1]))1290 # excl = []1291 # if len(data) > 2:1292 # excl = data[2:]1293 # for item in excl:1294 # item[0] = max(old[0],item[0])1295 # item[1] = max(item[0],min(old[1],item[1]))1296 # data = [old,new]+excl1297 # G2frame.LimitsTable.SetData(data)1298 # G2plt.PlotPatterns(G2frame,plotType=plottype)1299 #1300 # def OnLimitCopy(event):1301 # hst = G2frame.PatternTree.GetItemText(G2frame.PatternId)1302 # histList = GetHistsLikeSelected(G2frame)1303 # if not histList:1304 # G2frame.ErrorDialog('No match','No histograms match '+hst,G2frame.dataFrame)1305 # return1306 # copyList = []1307 # dlg = G2G.G2MultiChoiceDialog(1308 # G2frame.dataFrame,1309 # 'Copy limits from\n'+str(hst[5:])+' to...',1310 # 'Copy limits', histList)1311 # try:1312 # if dlg.ShowModal() == wx.ID_OK:1313 # for i in dlg.GetSelections():1314 # item = histList[i]1315 # Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item)1316 # G2frame.PatternTree.SetItemPyData(1317 # G2gd.GetPatternTreeItemId(G2frame,Id,'Limits'),copy.copy(data))1318 # finally:1319 # dlg.Destroy()1320 #1321 # def OnAddExcl(event):1322 # G2frame.ifGetExclude = True1323 # print 'Add excluded region'1324 #1325 # G2frame.LimitsTable = []1326 # colLabels = ['Tmin','Tmax']1327 # rowLabels = ['original','changed']1328 # for i in range(len(data)-2):1329 # rowLabels.append('exclude')1330 # Types = 2*[wg.GRID_VALUE_FLOAT+':12,5',]1331 # G2frame.LimitsTable = G2G.Table(data,rowLabels=rowLabels,colLabels=colLabels,types=Types)1332 # G2frame.dataFrame.SetLabel('Limits')1333 # G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LimitMenu)1334 # if not G2frame.dataFrame.GetStatusBar():1335 # Status = G2frame.dataFrame.CreateStatusBar()1336 # if len(data)>2:1337 # Status.SetStatusText('To delete excluded region: select & press Delete key')1338 # G2frame.Bind(wx.EVT_MENU,OnLimitCopy,id=G2gd.wxID_LIMITCOPY)1339 # G2frame.Bind(wx.EVT_MENU,OnAddExcl,id=G2gd.wxID_ADDEXCLREGION)1340 # G2frame.dataDisplay = G2G.GSGrid(parent=G2frame.dataFrame)1341 # G2frame.dataDisplay.SetTable(G2frame.LimitsTable, True)1342 # G2frame.dataDisplay.SetCellStyle(0,0,VERY_LIGHT_GREY,True)1343 # G2frame.dataDisplay.SetCellStyle(0,1,VERY_LIGHT_GREY,True)1344 # G2frame.dataDisplay.Bind(wg.EVT_GRID_CELL_CHANGE, RefreshLimitsGrid)1345 # G2frame.dataDisplay.Bind(wx.EVT_KEY_DOWN, KeyEditPeakGrid)1346 # G2frame.dataDisplay.SetMargins(0,0)1347 # G2frame.dataDisplay.AutoSizeColumns(False)1348 # G2frame.dataFrame.setSizePosLeft([230,260])1349 # G2frame.dataFrame.SendSizeEvent()1350 #1351 #1352 1242 def LimitSizer(): 1353 1243 limits = wx.FlexGridSizer(2,3,0,5) … … 4779 4669 data[fileKey][itemKey] = value 4780 4670 UpdatePDFGrid(G2frame,data) 4781 4782 def OnValueChange(event):4783 event.Skip()4784 Obj = event.GetEventObject()4785 fileKey,itemKey,fmt = itemDict[Obj.GetId()]4786 try:4787 value = float(Obj.GetValue())4788 except ValueError:4789 value = -1.04790 Obj.SetValue(fmt%(value))4791 data[fileKey][itemKey] = value4792 wx.CallAfter(OnComputePDF,None)4793 4671 4794 4672 def OnMoveMult(event): 4795 4673 data[key]['Mult'] += multSpin.GetValue()*0.01 4796 mult.SetValue( '%.3f'%(data[key]['Mult']))4674 mult.SetValue(data[key]['Mult']) 4797 4675 wx.CallAfter(OnComputePDF,None) 4798 4676 4677 def AfterChange(invalid,value,tc): 4678 if invalid: return 4679 wx.CallAfter(OnComputePDF,None) 4680 4799 4681 item = data[key] 4800 4682 fileList = GetFileList('PWDR') … … 4807 4689 fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Multiplier:'),0,WACV) 4808 4690 mulBox = wx.BoxSizer(wx.HORIZONTAL) 4809 mult = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(item['Mult']),style=wx.TE_PROCESS_ENTER) 4810 itemDict[mult.GetId()] = [key,'Mult','%.3f'] 4811 mult.Bind(wx.EVT_TEXT_ENTER,OnValueChange) 4812 mult.Bind(wx.EVT_KILL_FOCUS,OnValueChange) 4691 mult = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,item,'Mult',nDig=(10,3), 4692 typeHint=float,OnLeave=AfterChange) 4813 4693 mulBox.Add(mult,0,) 4814 4694 multSpin = wx.SpinButton(G2frame.dataDisplay,style=wx.SP_VERTICAL,size=wx.Size(20,20)) … … 4819 4699 fileSizer.Add(mulBox,0,WACV) 4820 4700 fileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Add:'),0,WACV) 4821 add = wx.TextCtrl(G2frame.dataDisplay,value='%.0f'%(item['Add']),style=wx.TE_PROCESS_ENTER) 4822 itemDict[add.GetId()] = [key,'Add','%.0f'] 4823 add.Bind(wx.EVT_TEXT_ENTER,OnValueChange) 4824 add.Bind(wx.EVT_KILL_FOCUS,OnValueChange) 4825 fileSizer.Add(add,0,) 4701 fileSizer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,item,'Add',nDig=(10,0), 4702 typeHint=float,OnLeave=AfterChange),0,) 4826 4703 4827 4704 def SumElementVolumes(): … … 4836 4713 def FillElemSizer(elemSizer,ElData): 4837 4714 4838 def OnFractionChange(event): 4839 event.Skip() 4840 try: 4841 value = max(0.0,float(num.GetValue())) 4842 except ValueError: 4843 value = 0.0 4844 num.SetValue('%.3f'%(value)) 4845 ElData['FormulaNo'] = value 4715 def AfterChange(invalid,value,tc): 4716 if invalid: return 4846 4717 data['Form Vol'] = max(10.0,SumElementVolumes()) 4847 formVol.SetValue('%.2f'%(data['Form Vol']))4848 4718 wx.CallAfter(UpdatePDFGrid,G2frame,data) 4849 4719 wx.CallAfter(OnComputePDF,None) 4850 4720 4851 4721 elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay, 4852 4722 label=' Element: '+'%2s'%(ElData['Symbol'])+' * '),0,WACV) 4853 num = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(ElData['FormulaNo']),style=wx.TE_PROCESS_ENTER) 4854 num.Bind(wx.EVT_TEXT_ENTER,OnFractionChange) 4855 num.Bind(wx.EVT_KILL_FOCUS,OnFractionChange) 4723 num = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,ElData,'FormulaNo',nDig=(10,3),min=0.0, 4724 typeHint=float,OnLeave=AfterChange) 4856 4725 elemSizer.Add(num,0,WACV) 4857 4726 elemSizer.Add(wx.StaticText(parent=G2frame.dataDisplay, … … 4869 4738 wx.CallAfter(OnComputePDF,None) 4870 4739 4871 def OnFormVol(event): 4872 event.Skip() 4873 try: 4874 value = float(formVol.GetValue()) 4875 if value <= 0.0: 4876 raise ValueError 4877 except ValueError: 4878 value = data['Form Vol'] 4879 data['Form Vol'] = value 4880 UpdatePDFGrid(G2frame,data) 4740 def AfterChange(invalid,value,tc): 4741 if invalid: return 4742 wx.CallAfter(UpdatePDFGrid,G2frame,data) 4881 4743 wx.CallAfter(OnComputePDF,None) 4882 4744 4883 def OnDiameter(event): 4884 event.Skip() 4885 try: 4886 value = float(diam.GetValue()) 4887 if value <= 0.0: 4888 raise ValueError 4889 except ValueError: 4890 value = data['Diam'] 4891 data['Diam'] = value 4892 UpdatePDFGrid(G2frame,data) 4745 def AfterChangeNoRefresh(invalid,value,tc): 4746 if invalid: return 4893 4747 wx.CallAfter(OnComputePDF,None) 4894 4748 4895 # def OnPolaVal(event): 4896 # event.Skip() 4897 # try: 4898 # value = float(polaVal.GetValue()) 4899 # if not (0.0 <= value <= 1.0): 4900 # raise ValueError 4901 # except ValueError: 4902 # value = inst['Polariz.'][1] 4903 # inst['Polariz.'][1] = value 4904 # polaVal.SetValue('%.2f'%(inst['Polariz.'][1])) 4905 # UpdatePDFGrid(G2frame,data) 4906 # auxPlot = ComputePDF(data) 4907 # G2plt.PlotISFG(G2frame,newPlot=False) 4908 # 4909 # def OnAzimVal(event): 4910 # event.Skip() 4911 # try: 4912 # value = float(azimVal.GetValue()) 4913 # if not (0. <= value <= 360.): 4914 # raise ValueError 4915 # except ValueError: 4916 # value = inst['Azimuth'][1] 4917 # inst['Azimuth'][1] = value 4918 # azimVal.SetValue('%.1f'%(inst['Azimuth'][1])) 4919 # UpdatePDFGrid(G2frame,data) 4920 # auxPlot = ComputePDF(data) 4921 # G2plt.PlotISFG(G2frame,newPlot=False) 4922 # 4923 def OnObliqCoeff(event): 4924 event.Skip() 4925 try: 4926 value = float(obliqCoeff.GetValue()) 4927 if value < 0.0: 4928 raise ValueError 4929 elif value > 1.0: 4930 value = 1.0 4931 except ValueError: 4932 value = data['ObliqCoeff'] 4933 data['ObliqCoeff'] = value 4934 obliqCoeff.SetValue('%.3f'%(value)) 4935 wx.CallAfter(OnComputePDF,None) 4936 4937 def OnBackVal(event): 4938 event.Skip() 4939 try: 4940 value = float(backVal.GetValue()) 4941 value = min(max(0.,value),1.0) 4942 except ValueError: 4943 value = data['BackRatio'] 4944 data['BackRatio'] = value 4945 backVal.SetValue('%.3f'%(value)) 4749 def NewQmax(invalid,value,tc): 4750 if invalid: return 4751 data['QScaleLim'][0] = 0.9*value 4752 SQmin.SetValue(data['QScaleLim'][0]) 4946 4753 wx.CallAfter(OnComputePDF,None) 4947 4754 … … 4949 4756 value = int(backSldr.GetValue())/100. 4950 4757 data['BackRatio'] = value 4951 backVal.SetValue('%.3f'%(data['BackRatio'])) 4952 wx.CallAfter(OnComputePDF,None) 4953 4954 def OnRulandWdt(event): 4955 event.Skip() 4956 try: 4957 value = float(rulandWdt.GetValue()) 4958 if value <= 0.001: 4959 raise ValueError 4960 elif value > 1.0: 4961 value = 1.0 4962 except ValueError: 4963 value = data['Ruland'] 4964 data['Ruland'] = value 4965 rulandWdt.SetValue('%.3f'%(value)) 4758 backVal.SetValue(data['BackRatio']) 4966 4759 wx.CallAfter(OnComputePDF,None) 4967 4760 … … 4969 4762 value = int(rulandSldr.GetValue())/1000. 4970 4763 data['Ruland'] = max(0.001,value) 4971 rulandWdt.SetValue( '%.3f'%(data['Ruland']))4764 rulandWdt.SetValue(data['Ruland']) 4972 4765 wx.CallAfter(OnComputePDF,None) 4973 4766 … … 4976 4769 wx.CallAfter(OnComputePDF,None) 4977 4770 4978 def OnPacking(event):4979 event.Skip()4980 try:4981 value = float(pack.GetValue())4982 if value <= 0.0:4983 raise ValueError4984 except ValueError:4985 value = data['Pack']4986 data['Pack'] = value4987 UpdatePDFGrid(G2frame,data)4988 wx.CallAfter(OnComputePDF,None)4989 4990 def OnSQmin(event):4991 event.Skip()4992 try:4993 value = float(SQmin.GetValue())4994 if value < qLimits[0]:4995 raise ValueError4996 except ValueError:4997 value = max(qLimits[0],data['QScaleLim'][0])4998 data['QScaleLim'][0] = value4999 SQmin.SetValue('%.1f'%(value))5000 wx.CallAfter(OnComputePDF,None)5001 5002 def OnSQmax(event):5003 event.Skip()5004 try:5005 value = float(SQmax.GetValue())5006 if value > qLimits[1]:5007 raise ValueError5008 except ValueError:5009 value = min(qLimits[1],data['QScaleLim'][1])5010 data['QScaleLim'][1] = value5011 if value < data['QScaleLim'][0]:5012 data['QScaleLim'][0] = 0.90*value5013 SQmin.SetValue('%.1f'%(data['QScaleLim'][0]))5014 SQmax.SetValue('%.1f'%(value))5015 wx.CallAfter(OnComputePDF,None)5016 5017 def OnRmax(event):5018 event.Skip()5019 try:5020 value = float(rmax.GetValue())5021 if value > 200. or value < 10.:5022 raise ValueError5023 except ValueError:5024 value = data['Rmax']5025 data['Rmax'] = value5026 rmax.SetValue('%.1f'%(value))5027 wx.CallAfter(OnComputePDF,None)5028 5029 4771 def OnResetQ(event): 5030 4772 resetQ.SetValue(False) 5031 4773 data['QScaleLim'][1] = qLimits[1] 5032 SQmax.SetValue( '%.1f'%(data['QScaleLim'][1]))4774 SQmax.SetValue(data['QScaleLim'][1]) 5033 4775 data['QScaleLim'][0] = 0.9*qLimits[1] 5034 SQmin.SetValue( '%.1f'%(data['QScaleLim'][0]))4776 SQmin.SetValue(data['QScaleLim'][0]) 5035 4777 wx.CallAfter(OnComputePDF,None) 5036 4778 … … 5196 4938 print ' Done calculating PDFs:' 5197 4939 5198 def OnShowTip(G2frame,tip):5199 print tip5200 5201 4940 if G2frame.dataDisplay: 5202 4941 G2frame.dataFrame.Clear() … … 5215 4954 5216 4955 ElList = data['ElList'] 4956 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,WACV) 4957 mainSizer.Add((5,5),0) 4958 if 'C' in inst['Type'][0]: 4959 str = ' Sample file: PWDR %s Wavelength, A: %.5f Energy, keV: %.3f Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz) 4960 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV) 5217 4961 mainSizer.Add((5,5),0) 4962 fileSizer = wx.FlexGridSizer(0,6,5,1) 4963 select = ['Sample Bkg.','Container'] 4964 if data['Container']['Name']: 4965 select.append('Container Bkg.') 4966 for key in select: 4967 FillFileSizer(fileSizer,key) 4968 mainSizer.Add(fileSizer,0) 4969 G2G.HorizontalLine(mainSizer,G2frame.dataDisplay) 5218 4970 if not ElList: 5219 4971 mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample information: fill in this 1st'),0,WACV) … … 5230 4982 midSizer = wx.BoxSizer(wx.HORIZONTAL) 5231 4983 midSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Formula volume: '),0,WACV) 5232 formVol = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Form Vol'])) 5233 formVol.Bind(wx.EVT_TEXT_ENTER,OnFormVol) 5234 formVol.Bind(wx.EVT_KILL_FOCUS,OnFormVol) 4984 formVol = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Form Vol',nDig=(10,3),min=10.0, 4985 typeHint=float,OnLeave=AfterChange) 5235 4986 midSizer.Add(formVol,0) 5236 4987 midSizer.Add(wx.StaticText(G2frame.dataDisplay, … … 5247 4998 geoBox.Add(geometry,0) 5248 4999 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample diameter/thickness, mm: '),0,WACV) 5249 diam = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Diam'])) 5250 diam.Bind(wx.EVT_TEXT_ENTER,OnDiameter) 5251 diam.Bind(wx.EVT_KILL_FOCUS,OnDiameter) 5252 # diam.Bind(wx.EVT_SET_FOCUS,OnShowTip(G2frame,'tip')) #this doesn't work - what would???? 5000 diam = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Diam',nDig=(10,3),min=0.01, 5001 typeHint=float,OnLeave=AfterChange) 5253 5002 geoBox.Add(diam,0) 5254 5003 mainSizer.Add(geoBox,0) … … 5256 5005 geoBox = wx.BoxSizer(wx.HORIZONTAL) 5257 5006 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Packing: '),0,WACV) 5258 pack = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(data['Pack'])) 5259 pack.Bind(wx.EVT_TEXT_ENTER,OnPacking) 5260 pack.Bind(wx.EVT_KILL_FOCUS,OnPacking) 5007 pack = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Pack',nDig=(10,2),min=0.01, 5008 typeHint=float,OnLeave=AfterChange) 5261 5009 geoBox.Add(pack,0) 5262 5010 geoBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Sample transmission: %.3f %%'%(Trans)),0,WACV) 5263 5011 mainSizer.Add(geoBox,0) 5264 mainSizer.Add((5,5),0) 5265 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,WACV) 5266 mainSizer.Add((5,5),0) 5267 if 'C' in inst['Type'][0]: 5268 str = ' Sample file: PWDR %s Wavelength, A: %.5f Energy, keV: %.3f Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz) 5269 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV) 5270 # dataSizer = wx.BoxSizer(wx.HORIZONTAL) 5271 # dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Azimuth'),0,WACV) 5272 # azimVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Azimuth'])) 5273 # azimVal.Bind(wx.EVT_TEXT_ENTER,OnAzimVal) 5274 # azimVal.Bind(wx.EVT_KILL_FOCUS,OnAzimVal) 5275 # dataSizer.Add(azimVal,0) 5276 # dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Polarization'),0,WACV) 5277 # polaVal = wx.TextCtrl(G2frame.dataDisplay,value='%.2f'%(inst['Polariz.'])) 5278 # polaVal.Bind(wx.EVT_TEXT_ENTER,OnPolaVal) 5279 # polaVal.Bind(wx.EVT_KILL_FOCUS,OnPolaVal) 5280 # dataSizer.Add(polaVal,0) 5281 # mainSizer.Add(dataSizer,0) 5282 mainSizer.Add((5,5),0) 5283 fileSizer = wx.FlexGridSizer(0,6,5,1) 5284 select = ['Sample Bkg.','Container'] 5285 if data['Container']['Name']: 5286 select.append('Container Bkg.') 5287 for key in select: 5288 FillFileSizer(fileSizer,key) 5289 mainSizer.Add(fileSizer,0) 5290 mainSizer.Add((5,5),0) 5291 5292 5012 5013 G2G.HorizontalLine(mainSizer,G2frame.dataDisplay) 5293 5014 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' S(Q)->F(Q)->G(R) controls: '),0,WACV) 5294 5015 mainSizer.Add((5,5),0) … … 5302 5023 if data['DetType'] == 'Image plate': 5303 5024 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' IP transmission coeff.: '),0,WACV) 5304 obliqCoeff = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['ObliqCoeff'])) 5305 obliqCoeff.Bind(wx.EVT_TEXT_ENTER,OnObliqCoeff) 5306 obliqCoeff.Bind(wx.EVT_KILL_FOCUS,OnObliqCoeff) 5025 obliqCoeff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'ObliqCoeff',nDig=(10,3),min=0.0,max=1.0, 5026 typeHint=float,OnLeave=AfterChangeNoRefresh) 5307 5027 sqBox.Add(obliqCoeff,0) 5308 5028 mainSizer.Add(sqBox,0) … … 5314 5034 bkBox.Add(backSldr,1,wx.EXPAND) 5315 5035 backSldr.Bind(wx.EVT_SLIDER, OnBackSlider) 5316 backVal = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['BackRatio'])) 5317 backVal.Bind(wx.EVT_TEXT_ENTER,OnBackVal) 5318 backVal.Bind(wx.EVT_KILL_FOCUS,OnBackVal) 5036 backVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'BackRatio',nDig=(10,3),min=0.0,max=1.0, 5037 typeHint=float,OnLeave=AfterChangeNoRefresh) 5319 5038 bkBox.Add(backVal,0,WACV) 5320 5039 mainSizer.Add(bkBox,0,wx.ALIGN_LEFT|wx.EXPAND) … … 5326 5045 sqBox.Add(rulandSldr,1,wx.EXPAND) 5327 5046 rulandSldr.Bind(wx.EVT_SLIDER, OnRulSlider) 5328 rulandWdt = wx.TextCtrl(G2frame.dataDisplay,value='%.3f'%(data['Ruland'])) 5329 rulandWdt.Bind(wx.EVT_TEXT_ENTER,OnRulandWdt) 5330 rulandWdt.Bind(wx.EVT_KILL_FOCUS,OnRulandWdt) 5047 rulandWdt = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Ruland',nDig=(10,3),min=0.001,max=1.0, 5048 typeHint=float,OnLeave=AfterChangeNoRefresh) 5331 5049 sqBox.Add(rulandWdt,0,WACV) 5332 5050 mainSizer.Add(sqBox,0,wx.ALIGN_LEFT|wx.EXPAND) … … 5334 5052 sqBox = wx.BoxSizer(wx.HORIZONTAL) 5335 5053 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Scaling q-range: '),0,WACV) 5336 SQmin = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][0]),size=wx.Size(50,20)) 5337 SQmin.Bind(wx.EVT_KILL_FOCUS,OnSQmin) 5338 SQmin.Bind(wx.EVT_TEXT_ENTER,OnSQmin) 5054 SQmin = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['QScaleLim'],0,nDig=(10,3),min=qLimits[0],max=.95*data['QScaleLim'][1], 5055 typeHint=float,OnLeave=AfterChangeNoRefresh) 5339 5056 sqBox.Add(SQmin,0,WACV) 5340 5057 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' to Qmax '),0,WACV) 5341 SQmax = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['QScaleLim'][1]),size=wx.Size(50,20)) 5342 SQmax.Bind(wx.EVT_KILL_FOCUS,OnSQmax) 5343 SQmax.Bind(wx.EVT_TEXT_ENTER,OnSQmax) 5058 SQmax = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['QScaleLim'],1,nDig=(10,3),min=qLimits[0],max=qLimits[1], 5059 typeHint=float,OnLeave=NewQmax) 5344 5060 sqBox.Add(SQmax,0,WACV) 5345 5061 resetQ = wx.CheckBox(parent=G2frame.dataDisplay,label='Reset?') … … 5347 5063 resetQ.Bind(wx.EVT_CHECKBOX, OnResetQ) 5348 5064 sqBox.Add(wx.StaticText(G2frame.dataDisplay,label=' Rmax: '),0,WACV) 5349 rmax = wx.TextCtrl(G2frame.dataDisplay,value='%.1f'%(data['Rmax']),size=wx.Size(50,20)) 5350 rmax.Bind(wx.EVT_KILL_FOCUS,OnRmax) 5351 rmax.Bind(wx.EVT_TEXT_ENTER,OnRmax) 5065 rmax = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'Rmax',nDig=(10,1),min=10.,max=200., 5066 typeHint=float,OnLeave=AfterChangeNoRefresh,size=wx.Size(50,20)) 5352 5067 sqBox.Add(rmax,0,WACV) 5353 5068 lorch = wx.CheckBox(parent=G2frame.dataDisplay,label='Lorch damping?') -
trunk/GSASIIspc.py
r2549 r2567 423 423 (see ``SGOps`` in the :ref:`Space Group object<SGData_table>`) 424 424 * G2oprList: The GSAS-II operations for each symmetry operation as 425 a tuple with (center,mult,opnum ), where center is (0,0,0), (0.5,0,0),425 a tuple with (center,mult,opnum,opcode), where center is (0,0,0), (0.5,0,0), 426 426 (0.5,0.5,0.5),...; where mult is 1 or -1 for the center of symmetry 427 andopnum is the number for the symmetry operation, in ``SGOps``428 (starting with 0) .427 where opnum is the number for the symmetry operation, in ``SGOps`` 428 (starting with 0) and opcode is mult*(100*icen+j+1). 429 429 ''' 430 430 SGTextList = [] … … 432 432 symOpList = [] 433 433 G2oprList = [] 434 G2opcodes = [] 434 435 onebar = (1,) 435 436 if SGData['SGInv']: 436 437 onebar += (-1,) 437 for cen in SGData['SGCen']:438 for icen,cen in enumerate(SGData['SGCen']): 438 439 for mult in onebar: 439 440 for j,(M,T) in enumerate(SGData['SGOps']): … … 453 454 symOpList.append((mult*M,Tprime)) 454 455 G2oprList.append((cen,mult,j)) 455 return SGTextList,offsetList,symOpList,G2oprList 456 G2opcodes.append(mult*(100*icen+j+1)) 457 return SGTextList,offsetList,symOpList,G2oprList,G2opcodes 456 458 457 459 def MT2text(Opr): -
trunk/exports/G2export_CIF.py
r2543 r2567 35 35 import GSASIIgrid as G2gd 36 36 import GSASIIctrls as G2G 37 import GSASIIstrIO as G2stIO38 37 import GSASIImath as G2mth 39 import GSASIIlattice as G2lat40 38 import GSASIIspc as G2spc 41 import GSASIIphsGUI as G2pg42 39 import GSASIIstrMain as G2stMn 43 import GSASIIctrls as G2G44 40 45 41 DEBUG = False #True to skip printing of reflection/powder profile lists … … 751 747 DisAglData['OrigAtoms'] = xyz 752 748 DisAglData['TargAtoms'] = xyz 753 SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(749 SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps( 754 750 generalData['SGData']) 755 751 756 xpandSGdata = generalData['SGData'].copy() 757 xpandSGdata.update({'SGOps':symOpList, 758 'SGInv':False, 759 'SGLatt':'P', 760 'SGCen':np.array([[0, 0, 0]]),}) 761 DisAglData['SGData'] = xpandSGdata 752 # xpandSGdata = generalData['SGData'].copy() 753 # xpandSGdata.update({'SGOps':symOpList, 754 # 'SGInv':False, 755 # 'SGLatt':'P', 756 # 'SGCen':np.array([[0, 0, 0]]),}) 757 # DisAglData['SGData'] = xpandSGdata 758 DisAglData['SGData'] = generalData['SGData'].copy() 762 759 763 760 DisAglData['Cell'] = generalData['Cell'][1:] #+ volume … … 790 787 line += PutInCol(G2mth.ValEsd(D[3],sig,True),10) 791 788 line += " 1_555 " 792 line += " {:3d}_".format( D[2])789 line += " {:3d}_".format(G2opcodes.index(D[2])+1) 793 790 for d in D[1]: 794 791 line += "{:1d}".format(d+5) … … 819 816 if sig == 0: sig = -0.009 820 817 line += PutInCol(G2mth.ValEsd(tup[0],sig,True),10) 821 line += " {:3d}_".format( Dj[2])818 line += " {:3d}_".format(G2opcodes.index(Dj[2])+1) 822 819 for d in Dj[1]: 823 820 line += "{:1d}".format(d+5) 824 821 line += " 1_555 " 825 line += " {:3d}_".format( Dk[2])822 line += " {:3d}_".format(G2opcodes.index(Dk[2])+1) 826 823 for d in Dk[1]: 827 824 line += "{:1d}".format(d+5) … … 861 858 862 859 # generate symmetry operations including centering and center of symmetry 863 SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(860 SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps( 864 861 phasedict['General']['SGData']) 865 862 WriteCIFitem('loop_\n _space_group_symop_id\n _space_group_symop_operation_xyz') … … 1244 1241 hklmin[i] = min(hkl,hklmin[i]) 1245 1242 s += PutInCol(int(hkl),4) 1246 import sys1247 1243 if ref[5] == 0.0: 1248 1244 s += PutInCol(G2mth.ValEsd(ref[8],0),12) … … 1471 1467 phasenam = event.GetEventObject().phase 1472 1468 phasedict = self.Phases[phasenam] 1473 SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(phasedict['General']['SGData'])1469 SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps(phasedict['General']['SGData']) 1474 1470 generalData = phasedict['General'] 1475 1471 # create a dict for storing Pub flag for bonds/angles, if needed … … 1515 1511 DisAglData['OrigAtoms'] = xyz 1516 1512 DisAglData['TargAtoms'] = xyz 1517 SymOpList,offsetList,symOpList,G2oprList = G2spc.AllOps(1513 SymOpList,offsetList,symOpList,G2oprList,G2opcodes = G2spc.AllOps( 1518 1514 generalData['SGData']) 1519 1515 1520 xpandSGdata = generalData['SGData'].copy() 1521 xpandSGdata.update({'SGOps':symOpList, 1522 'SGInv':False, 1523 'SGLatt':'P', 1524 'SGCen':np.array([[0, 0, 0]]),}) 1525 DisAglData['SGData'] = xpandSGdata 1516 # xpandSGdata = generalData['SGData'].copy() 1517 # xpandSGdata.update({'SGOps':symOpList, 1518 # 'SGInv':False, 1519 # 'SGLatt':'P', 1520 # 'SGCen':np.array([[0, 0, 0]]),}) 1521 # DisAglData['SGData'] = xpandSGdata 1522 DisAglData['SGData'] = generalData['SGData'].copy() 1526 1523 1527 1524 DisAglData['Cell'] = generalData['Cell'][1:] #+ volume
Note: See TracChangeset
for help on using the changeset viewer.