Changeset 3561
- Timestamp:
- Aug 15, 2018 10:38:53 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrlGUI.py
r3553 r3561 3128 3128 tableSizer.Add((20,0)) 3129 3129 j += 1 3130 3131 def OnPrintOps(event): 3132 print(' Symmetry operations for %s:'%self.text[0].split(':')[1]) 3133 for opText in G2spc.TextOps(self.text,self.table,reverse=True): 3134 print(opText.replace(' ','')) 3135 3130 3136 mainSizer.Add(tableSizer,0,wx.ALIGN_LEFT) 3131 btnsizer = wx. StdDialogButtonSizer()3137 btnsizer = wx.BoxSizer(wx.HORIZONTAL) 3132 3138 OKbtn = wx.Button(self.panel, wx.ID_OK) 3133 3139 OKbtn.Bind(wx.EVT_BUTTON, self.OnOk) 3134 OKbtn.SetDefault() 3135 btnsizer.AddButton(OKbtn) 3136 btnsizer.Realize() 3140 btnsizer.Add(OKbtn) 3141 printBtn = wx.Button(self.panel,label='Print Ops') 3142 printBtn.Bind(wx.EVT_BUTTON, OnPrintOps) 3143 btnsizer.Add(printBtn) 3137 3144 mainSizer.Add((0,10)) 3138 3145 mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER) … … 3236 3243 print(item) 3237 3244 3238 btnsizer = wx.StdDialogButtonSizer() 3245 btnsizer = wx.BoxSizer(wx.HORIZONTAL) 3246 OKbtn = wx.Button(self.panel, wx.ID_OK) 3247 btnsizer.Add(OKbtn) 3239 3248 printBtn = wx.Button(self.panel,label='Print Ops') 3240 3249 printBtn.Bind(wx.EVT_BUTTON, OnPrintOps) 3241 3250 btnsizer.Add(printBtn) 3242 OKbtn = wx.Button(self.panel, wx.ID_OK)3243 OKbtn.SetDefault()3244 btnsizer.AddButton(OKbtn)3245 btnsizer.Realize()3246 3251 OKbtn.SetFocus() 3247 3252 mainSizer.Add((0,10)) 3248 mainSizer.Add(btnsizer,0 )3253 mainSizer.Add(btnsizer,0,wx.ALIGN_CENTER) 3249 3254 3250 3255 self.panel.SetSizer(mainSizer) -
trunk/GSASIIplot.py
r3543 r3561 2732 2732 Plot1.set_yscale("linear") 2733 2733 wtFactor = Pattern[0]['wtFactor'] 2734 DZ = (xye[1]-xye[3])*np.sqrt(wtFactor*xye[2]) 2734 if plottype in ['SASD','REFD']: 2735 DZ = (Y-B-Z)*np.sqrt(wtFactor*xye[2]) 2736 else: 2737 DZ = (xye[1]-xye[3])*np.sqrt(wtFactor*xye[2]) 2735 2738 DifLine = Plot1.plot(X[Ibeg:Ifin],DZ[Ibeg:Ifin],colors[3],picker=1.,label='_diff') #(Io-Ic)/sig(Io) 2736 2739 Plot1.axhline(0.,color='k') -
trunk/GSASIIpwd.py
r3500 r3561 472 472 piDQ = np.pi/(maxQ-minQ) 473 473 Qpoints = np.linspace(minQ,maxQ,len(pwddata[0]),endpoint=True) 474 if RDFcontrols['UseObsCalc'] :474 if RDFcontrols['UseObsCalc'] == 'obs-calc': 475 475 Qdata = si.griddata(powQ,pwddata[1]-pwddata[3],Qpoints,method=RDFcontrols['Smooth'],fill_value=0.) 476 el se:476 elif RDFcontrols['UseObsCalc'] == 'obs-back': 477 477 Qdata = si.griddata(powQ,pwddata[1]-pwddata[4],Qpoints,method=RDFcontrols['Smooth'],fill_value=pwddata[1][0]) 478 elif RDFcontrols['UseObsCalc'] == 'calc-back': 479 Qdata = si.griddata(powQ,pwddata[3]-pwddata[4],Qpoints,method=RDFcontrols['Smooth'],fill_value=pwddata[1][0]) 478 480 Qdata *= np.sin((Qpoints-minQ)*piDQ)/piDQ 479 481 Qdata *= 0.5*np.sqrt(Qpoints) #Qbin normalization … … 489 491 DofR = dq*np.imag(fft.fft(Qsmooth,16*nR)[:nR]) 490 492 # DofR = dq*np.imag(ft.fft(Qsmooth,16*nR)[:nR]) 491 auxPlot.append([R[:iFin],DofR[:iFin],'D(R) '])493 auxPlot.append([R[:iFin],DofR[:iFin],'D(R) for '+RDFcontrols['UseObsCalc']]) 492 494 return auxPlot 493 495 -
trunk/GSASIIpwdGUI.py
r3560 r3561 87 87 pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE) 88 88 self.panel = None 89 self.result = {'UseObsCalc': True,'maxR':20.0,'Smooth':'linear'}89 self.result = {'UseObsCalc':'obs-calc','maxR':20.0,'Smooth':'linear'} 90 90 91 91 self.Draw() … … 94 94 95 95 def OnUseOC(event): 96 self.result['UseObsCalc'] = not self.result['UseObsCalc']96 self.result['UseObsCalc'] = useOC.GetValue() 97 97 98 98 def OnSmCombo(event): … … 103 103 mainSizer = wx.BoxSizer(wx.VERTICAL) 104 104 mainSizer.Add(wx.StaticText(self.panel,label='Background RDF controls:'),0,WACV) 105 useOC = wx.CheckBox(self.panel,label=' Use obs - calc intensities?') 105 plotType = wx.BoxSizer(wx.HORIZONTAL) 106 plotType.Add(wx.StaticText(self.panel,label=' Select plot type:'),0,WACV) 107 Choices = ['obs-back','calc-back','obs-calc'] 108 useOC = wx.ComboBox(self.panel,value=Choices[2],choices=Choices, 109 style=wx.CB_READONLY|wx.CB_DROPDOWN) 106 110 useOC.SetValue(self.result['UseObsCalc']) 107 useOC.Bind(wx.EVT_CHECKBOX,OnUseOC) 108 mainSizer.Add(useOC,0,WACV) 111 useOC.Bind(wx.EVT_COMBOBOX,OnUseOC) 112 plotType.Add(useOC,0,WACV) 113 mainSizer.Add(plotType,0,WACV) 109 114 dataSizer = wx.BoxSizer(wx.HORIZONTAL) 110 115 dataSizer.Add(wx.StaticText(self.panel,label=' Smoothing type: '),0,WACV) … … 1121 1126 if dlg.ShowModal() == wx.ID_OK: 1122 1127 RDFcontrols = dlg.GetSelection() 1128 print(RDFcontrols) 1123 1129 else: 1124 1130 return … … 1130 1136 pwddata = G2frame.GPXtree.GetItemPyData(PatternId)[1] 1131 1137 auxPlot = G2pwd.MakeRDF(RDFcontrols,background,inst,pwddata) 1132 superMinusOne = unichr(0xaf)+unichr(0xb9) 1138 if '2' in platform.python_version_tuple()[0]: 1139 superMinusOne = unichr(0xaf)+unichr(0xb9) 1140 else: 1141 superMinusOne = chr(0xaf)+chr(0xb9) 1133 1142 for plot in auxPlot: 1134 1143 XY = np.array(plot[:2]) … … 2572 2581 min=0.,max=1.,nDig=(10,3),typeHint=float,OnLeave=OnVolFrac) 2573 2582 subSizer.Add(volfrac,0,WACV) 2574 material = Substances['Substances'][item['Name']] 2583 try: 2584 material = Substances['Substances'][item['Name']] 2585 except KeyError: 2586 print('ERROR - missing substance: '+item['Name']) 2587 material = Substances['Substances']['vacuum'] 2575 2588 mu += item['VolFrac']*material.get('XAbsorption',0.) 2576 2589 rho[id] = material['Scatt density'] … … 3030 3043 def LoadUnitCell(event): 3031 3044 controls,bravais,cells,dminx,ssopt = G2frame.GPXtree.GetItemPyData(UnitCellsId) 3032 controls = controls[:5]+10*[0.,]3033 3045 pId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Phases') 3034 3046 if not pId: return … … 3054 3066 def ImportUnitCell(event): 3055 3067 controls,bravais,cells,dminx,ssopt = G2frame.GPXtree.GetItemPyData(UnitCellsId) 3056 controls = controls[:5]+10*[0.,]3057 3068 reqrdr = G2frame.dataWindow.ReImportMenuId.get(event.GetId()) 3058 3069 rdlist = G2frame.OnImportGeneric(reqrdr, -
trunk/GSASIIspc.py
r3558 r3561 501 501 G2opcodes.append(mult*(100*icen+j+1)) 502 502 return SGTextList,offsetList,symOpList,G2oprList,G2opcodes 503 504 def TextOps(text,table,reverse=False): 505 ''' Makes formatted operator list 506 :param text,table: arrays of text made by SGPrint 507 :param reverse: True for x+1/2 form; False for 1/2+x form 508 :returns: OpText: full list of symmetry operators; one operation per line 509 generally printed to console for use via cut/paste in other programs, but 510 could be used for direct input 511 ''' 512 OpText = [] 513 Inv = True 514 if 'noncentro' in text[1]: 515 Inv = False 516 Cent = [[0,0,0],] 517 if '0,0,0' in text[-1]: 518 Cent = np.array(eval(text[-1].split('+')[0].replace(';','),('))) 519 OpsM = [] 520 OpsT = [] 521 for item in table: 522 M,T = Text2MT(item.split(')')[1].replace(' ',''),CIF=True) 523 OpsM.append(M) 524 OpsT.append(T) 525 OpsM = np.array(OpsM) 526 OpsT = np.array(OpsT) 527 if Inv: 528 OpsM = np.concatenate((OpsM,-OpsM)) 529 OpsT = np.concatenate((OpsT,-OpsT%1.)) 530 for cent in Cent: 531 for iop,opM in enumerate(list(OpsM)): 532 txt = MT2text([opM,(OpsT[iop]+cent)%1.],reverse) 533 OpText.append(txt.replace(' ','').lower()) 534 return OpText 503 535 504 536 def MT2text(Opr,reverse=False): … … 1031 1063 return ' '.join(magSym) 1032 1064 1065 def Text2MT(mcifOpr,CIF=True): 1066 "From space group cif text returns matrix/translation" 1067 XYZ = {'x':[1,0,0],'+x':[1,0,0],'-x':[-1,0,0],'y':[0,1,0],'+y':[0,1,0],'-y':[0,-1,0], 1068 'z':[0,0,1],'+z':[0,0,1],'-z':[0,0,-1],'x-y':[1,-1,0],'-x+y':[-1,1,0],'y-x':[-1,1,0], 1069 '+x-y':[1,-1,0],'+y-x':[-1,1,0]} 1070 ops = mcifOpr.split(",") 1071 M = [] 1072 T = [] 1073 for op in ops[:3]: 1074 ip = len(op) 1075 if '/' in op: 1076 try: #mcif format 1077 nP = op.count('+') 1078 opMT = op.split('+') 1079 T.append(eval(opMT[nP])) 1080 if nP == 2: 1081 opMT[0] = '+'.join(opMT[0:2]) 1082 except NameError: #normal cif format 1083 ip = op.index('/') 1084 T.append(eval(op[:ip+2])) 1085 opMT = [op[ip+2:],''] 1086 else: 1087 opMT = [op,''] 1088 T.append(0.) 1089 M.append(XYZ[opMT[0].lower()]) 1090 return np.array(M),np.array(T) 1091 1033 1092 def MagText2MTS(mcifOpr,CIF=True): 1034 1093 "From magnetic space group cif text returns matrix/translation + spin flip"
Note: See TracChangeset
for help on using the changeset viewer.