Changeset 1578
- Timestamp:
- Nov 21, 2014 3:25:30 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r1574 r1578 3445 3445 finally: 3446 3446 dlg.Destroy() 3447 wx.Yield() 3447 3448 oldId = self.PatternTree.GetSelection() #retain current selection 3448 3449 oldName = self.PatternTree.GetItemText(oldId) -
trunk/GSASIIindex.py
r1572 r1578 28 28 GSASIIpath.SetVersionNumber("$Revision$") 29 29 import GSASIIlattice as G2lat 30 import GSASIIpwd as G2pwd 30 31 import scipy.optimize as so 31 32 … … 198 199 return M20,X20 199 200 201 def calc_M20SS(peaks,HKL): 202 'needs a doc string' 203 diff = 0 204 X20 = 0 205 for Nobs20,peak in enumerate(peaks): 206 if peak[3]: 207 Qobs = 1.0/peak[8]**2 208 Qcalc = 1.0/peak[9]**2 209 diff += abs(Qobs-Qcalc) 210 elif peak[2]: 211 X20 += 1 212 if Nobs20 == 19: 213 d20 = peak[8] 214 break 215 else: 216 d20 = peak[8] 217 Nobs20 = len(peaks) 218 for N20,hkl in enumerate(HKL): 219 if hkl[4] < d20: 220 break 221 eta = diff/Nobs20 222 Q20 = 1.0/d20**2 223 if diff: 224 M20 = Q20/(2.0*diff) 225 else: 226 M20 = 0 227 M20 /= (1.+X20) 228 return M20,X20 229 200 230 def sortM20(cells): 201 231 'needs a doc string' … … 231 261 N = len(HKL) 232 262 if N == 0: return False,peaks 233 hklds = list(np.array(HKL).T[ -2])+[1000.0,0.0,]263 hklds = list(np.array(HKL).T[3])+[1000.0,0.0,] 234 264 hklds.sort() # ascending sort - upper bound at end 235 265 hklmax = [0,0,0] 236 266 for ipk,peak in enumerate(peaks): 237 267 if peak[2]: 268 peak[4:7] = [0,0,0] #clear old indexing 269 peak[8] = 0. 238 270 i = bisect.bisect_right(hklds,peak[7]) # find peak position in hkl list 239 dm = peak[ 7]-hklds[i-1] # peak to neighbor hkls in list240 dp = hklds[i]-peak[ 7]271 dm = peak[-2]-hklds[i-1] # peak to neighbor hkls in list 272 dp = hklds[i]-peak[-2] 241 273 pos = N-i # reverse the order 242 274 if dp > dm: pos += 1 # closer to upper than lower … … 247 279 if hkl[-1] >= 0: # peak already assigned - test if this one better 248 280 opeak = peaks[hkl[-1]] 249 dold = abs(opeak[ 7]-hkl[-2])281 dold = abs(opeak[-2]-hkl[3]) 250 282 dnew = min(dm,dp) 251 283 if dold > dnew: # new better - zero out old … … 256 288 hkl[-1] = ipk 257 289 peak[4:7] = hkl[:3] 258 peak[8] = hkl[ -2] # fill in d-calc290 peak[8] = hkl[3] # fill in d-calc 259 291 for peak in peaks: 260 292 peak[3] = False 261 293 if peak[2]: 262 if peak[ 8] > 0.:294 if peak[-1] > 0.: 263 295 for j in range(3): 264 296 if abs(peak[j+4]) > hklmax[j]: hklmax[j] = abs(peak[j+4]) 265 297 peak[3] = True 266 298 if hklmax[0]*hklmax[1]*hklmax[2] > 0: 299 return True,peaks 300 else: 301 return False,peaks #nothing indexed! 302 303 def IndexSSPeaks(peaks,HKL): 304 'needs a doc string' 305 import bisect 306 N = len(HKL) 307 if N == 0: return False,peaks 308 if len(peaks[0]) == 9: #add m column if missing 309 for peak in peaks: 310 peak.insert(7,0) 311 hklds = list(np.array(HKL).T[4])+[1000.0,0.0,] 312 hklds.sort() # ascending sort - upper bound at end 313 hklmax = [0,0,0,0] 314 for ipk,peak in enumerate(peaks): 315 if peak[2]: #Use 316 peak[4:8] = [0,0,0,0] #clear old indexing 317 peak[9] = 0. 318 i = bisect.bisect_right(hklds,peak[8]) # find peak position in hkl list 319 dm = peak[8]-hklds[i-1] # peak to neighbor hkls in list 320 dp = hklds[i]-peak[8] 321 pos = N-i # reverse the order 322 if dp > dm: pos += 1 # closer to upper than lower 323 if pos >= N: 324 print pos,N 325 break 326 hkl = HKL[pos] # put in hkl 327 if hkl[-1] >= 0: # peak already assigned - test if this one better 328 opeak = peaks[hkl[-1]] 329 dold = abs(opeak[-2]-hkl[4]) 330 dnew = min(dm,dp) 331 if dold > dnew: # new better - zero out old 332 opeak[4:8] = [0,0,0,0] 333 opeak[9] = 0. 334 else: # old better - do nothing 335 continue 336 hkl[-1] = ipk 337 peak[4:8] = hkl[:4] 338 peak[9] = hkl[4] # fill in d-calc 339 for peak in peaks: 340 peak[3] = False 341 if peak[2]: 342 if peak[-1] > 0.: 343 for j in range(4): 344 if abs(peak[j+4]) > hklmax[j]: hklmax[j] = abs(peak[j+4]) 345 peak[3] = True 346 if hklmax[0]*hklmax[1]*hklmax[2]*hklmax[3] > 0: 267 347 return True,peaks 268 348 else: … … 296 376 else: 297 377 return A 378 379 def Values2Vec(ibrav,vec,Vref,val): 380 if ibrav in [3,4,5,6]: 381 Nskip = 2 382 elif ibrav in [7,8,9,10]: 383 Nskip = 3 384 elif ibrav in [11,12]: 385 Nskip = 4 386 else: 387 Nskip = 6 388 i = 0 389 for v,r in zip(vec,Vref): 390 if r: 391 v = val[i+Nskip] 392 i += 1 393 return np.array(vec) 298 394 299 395 def FitHKL(ibrav,peaks,A,Pwr): … … 338 434 339 435 return True,np.sum(errFit(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Zref,Pwr)**2),A,Z,result 436 437 def FitHKLZSS(wave,ibrav,peaks,A,V,Vref,Z,Zref,Pwr): 438 'needs a doc string' 439 440 def errFit(values,ibrav,d,H,tth,wave,vec,Vref,Zref,Pwr): 441 Zero = Z 442 if Zref: 443 Zero = values[-1] 444 A = Values2A(ibrav,values[:6]) 445 vec = Values2Vec(ibrav,vec,Vref,values) 446 Qo = 1./d**2 447 Qc = G2lat.calc_rDsqZSS(H,A,vec,Zero,tth,wave) 448 return (Qo-Qc)*d**Pwr 449 450 Peaks = np.array(peaks).T 451 452 values = A2values(ibrav,A) 453 for v,r in zip(V,Vref): 454 if r: 455 values.append(v) 456 if Zref: 457 values.append(Z) 458 result = so.leastsq(errFit,values,full_output=True,ftol=0.0001,factor=0.001, 459 args=(ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,V,Vref,Zref,Pwr)) 460 A = Values2A(ibrav,result[0]) 461 Vec = Values2Vec(ibrav,V,Vref,result[0]) 462 if Zref: 463 Z = result[0][-1] 464 chisq = np.sum(errFit(result[0],ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,Vec,Vref,Zref,Pwr)**2) 465 return True,A,Vec,Z,chisq,result 340 466 341 467 def FitHKLT(difC,ibrav,peaks,A,Z,Zref,Pwr): … … 404 530 def getDmin(peaks): 405 531 'needs a doc string' 406 return peaks[-1][ 7]532 return peaks[-1][-2] 407 533 408 534 def getDmax(peaks): 409 535 'needs a doc string' 410 return peaks[0][ 7]536 return peaks[0][-2] 411 537 412 538 def refinePeaksZ(peaks,wave,ibrav,A,Zero,ZeroRef): … … 418 544 Peaks[8] = 1./np.sqrt(G2lat.calc_rDsqZ(H,Aref,Z,Peaks[0],wave)) 419 545 peaks = Peaks.T 420 HKL = G2lat.GenHBravais(dmin,ibrav,A ref)546 HKL = G2lat.GenHBravais(dmin,ibrav,A) 421 547 M20,X20 = calc_M20(peaks,HKL) 422 548 return len(HKL),M20,X20,Aref,Z 549 550 def refinePeaksZSS(peaks,wave,Inst,SGData,SSGData,maxH,ibrav,A,vec,vecRef,Zero,ZeroRef): 551 'needs a doc string' 552 dmin = getDmin(peaks) 553 OK,Aref,Vref,Z,smin,result = FitHKLZSS(wave,ibrav,peaks,A,vec,vecRef,Zero,ZeroRef,0) 554 Peaks = np.array(peaks).T 555 H = Peaks[4:8] 556 Peaks[9] = 1./np.sqrt(G2lat.calc_rDsqZSS(H,Aref,Vref,Z,Peaks[0],wave)) #H,A,vec,Z,tth,lam 557 peaks = Peaks.T 558 HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vref,maxH,Aref) 559 M20,X20 = calc_M20SS(peaks,HKL) 560 return len(HKL),M20,X20,Aref,Vref,Z 423 561 424 562 def refinePeaksT(peaks,difC,ibrav,A,Zero,ZeroRef): … … 430 568 Peaks[8] = 1./np.sqrt(G2lat.calc_rDsqT(H,Aref,Z,Peaks[0],difC)) 431 569 peaks = Peaks.T 432 HKL = G2lat.GenHBravais(dmin,ibrav,A ref)570 HKL = G2lat.GenHBravais(dmin,ibrav,A) 433 571 M20,X20 = calc_M20(peaks,HKL) 434 572 return len(HKL),M20,X20,Aref,Z -
trunk/GSASIIlattice.py
r1489 r1578 462 462 return rdsq 463 463 464 def calc_rDsqZSS(H,A,vec,Z,tth,lam): 465 'needs doc string' 466 rpd = np.pi/180. 467 rdsq = calc_rDsq(H[:3]+(H[3][:,np.newaxis]*vec).T,A)+Z*sind(tth)*2.0*rpd/lam**2 468 return rdsq 469 464 470 def calc_rDsqT(H,A,Z,tof,difC): 465 471 'needs doc string' 466 472 rdsq = calc_rDsq(H,A)+Z/difC 473 return rdsq 474 475 def calc_rDsqTSS(H,A,vec,Z,tof,difC): 476 'needs doc string' 477 rdsq = calc_rDsq(H[:3]+H[3][:,np.newaxis]*vec,A)+Z/difC 467 478 return rdsq 468 479 … … 478 489 return Hmax 479 490 480 def sortHKLd(HKLd,ifreverse,ifdup ):491 def sortHKLd(HKLd,ifreverse,ifdup,ifSS=False): 481 492 '''needs doc string 482 493 … … 486 497 ''' 487 498 T = [] 499 N = 3 500 if ifSS: 501 N = 4 488 502 for i,H in enumerate(HKLd): 489 503 if ifdup: 490 T.append((H[ 3],i))504 T.append((H[N],i)) 491 505 else: 492 T.append(H[ 3])506 T.append(H[N]) 493 507 D = dict(zip(T,HKLd)) 494 508 T.sort() -
trunk/GSASIIphsGUI.py
r1548 r1578 5550 5550 '''Create the Select tab menus and bind to all menu items 5551 5551 ''' 5552 print 'FillMenus'5553 5552 # General 5554 5553 FillSelectPageMenu(TabSelectionIdDict, G2frame.dataFrame.DataGeneral) -
trunk/GSASIIplot.py
r1571 r1578 1004 1004 view = Page.toolbar._views.forward()[0][:2] 1005 1005 wid = view[1]-view[0] 1006 found = HKL[np.where(np.fabs(HKL.T[- 1]-xpos) < 0.002*wid)]1006 found = HKL[np.where(np.fabs(HKL.T[-2]-xpos) < 0.002*wid)] 1007 1007 if len(found): 1008 1008 if len(found[0]) > 6: #SS reflections … … 1543 1543 clr = 'g' 1544 1544 if G2frame.qPlot: 1545 Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,hkl[- 1]),color=clr,dashes=(5,5))1545 Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,hkl[-2]),color=clr,dashes=(5,5)) 1546 1546 if G2frame.dPlot: 1547 Plot.axvline(G2lat.Pos2dsp(Parms,hkl[- 1]),color=clr,dashes=(5,5))1547 Plot.axvline(G2lat.Pos2dsp(Parms,hkl[-2]),color=clr,dashes=(5,5)) 1548 1548 else: 1549 Plot.axvline(hkl[- 1],color=clr,dashes=(5,5))1549 Plot.axvline(hkl[-2],color=clr,dashes=(5,5)) 1550 1550 elif G2frame.PatternTree.GetItemText(PickId) in ['Reflection Lists'] or \ 1551 1551 'PWDR' in G2frame.PatternTree.GetItemText(PickId): -
trunk/GSASIIpwd.py
r1572 r1578 796 796 return lenR,dRdS 797 797 798 def getHKLpeak(dmin, SGData,A):798 def getHKLpeak(dmin,Inst,SGData,A): 799 799 'needs a doc string' 800 800 HKL = G2lat.GenHLaue(dmin,SGData,A) … … 803 803 ext = G2spc.GenHKLf([h,k,l],SGData)[0] 804 804 if not ext: 805 HKLs.append([h,k,l,d, -1])805 HKLs.append([h,k,l,d,G2lat.Dsp2pos(Inst,d),-1]) 806 806 return HKLs 807 807 808 def getHKLMpeak(dmin, SGData,SSGData,Vec,maxH,A):808 def getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A): 809 809 'needs a doc string' 810 810 HKLs = [] … … 818 818 ext = G2spc.GenHKLf([h,k,l],SGData)[0] 819 819 if not ext and d >= dmin: 820 HKLs.append([h,k,l,0,d, -1])820 HKLs.append([h,k,l,0,d,G2lat.Dsp2pos(Inst,d),-1]) 821 821 for dH in SSdH: 822 822 if dH: … … 827 827 HKLM = np.array([h,k,l,dH]) 828 828 if G2spc.checkSSextc(HKLM,SSGData[1]): 829 HKLs.append([h,k,l,dH,d, -1])830 return HKLs829 HKLs.append([h,k,l,dH,d,G2lat.Dsp2pos(Inst,d),-1]) 830 return G2lat.sortHKLd(HKLs,True,True,True) 831 831 832 832 def getPeakProfile(dataType,parmDict,xdata,varyList,bakType): -
trunk/GSASIIpwdGUI.py
r1572 r1578 932 932 933 933 if G2frame.dataDisplay: 934 # G2frame.dataFrame.Clear()935 934 G2frame.dataFrame.DestroyChildren() 936 935 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) … … 2033 2032 tree item. 2034 2033 ''' 2034 bravaisSymb = ['Fm3m','Im3m','Pm3m','R3-H','P6/mmm','I4/mmm', 2035 'P4/mmm','Fmmm','Immm','Cmmm','Pmmm','C2/m','P2/m','P1'] 2035 2036 IndexId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List') 2036 2037 Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[0] … … 2094 2095 if len(data[0]): 2095 2096 G2frame.dataFrame.IndexPeaks.Enable(True) 2096 cells = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List')) 2097 if cells: #what if SS? 2098 cellist = cells[2] 2099 dmin = cells[3] 2097 Unit = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List')) 2098 if Unit: 2099 if len(Unit) == 4: #patch 2100 Unit.append({}) 2101 controls,bravais,cellist,dmin,ssopt = Unit 2100 2102 G2frame.HKL = [] 2101 # if ssopt.get('Use',False): 2102 # SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2103 # Vec = ssopt['ModVec'] 2104 # maxH = ssopt['maxH'] 2105 # G2frame.HKL = G2pwd.getHKLMpeak(dmin,SGData,SSGData,Vec,maxH,A) 2106 for i,cell in enumerate(cellist): 2107 if cell[-1]: #selected cell from table - no SS 2108 ibrav = cell[2] 2109 A = G2lat.cell2A(cell[3:9]) 2110 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 2111 peaks = G2indx.IndexPeaks(data[0],G2frame.HKL)[1] 2112 for hkl in G2frame.HKL: 2113 hkl.append(G2lat.Dsp2pos(Inst,hkl[3])) 2103 if ssopt.get('Use',False): 2104 cell = controls[6:12] 2105 A = G2lat.cell2A(cell) 2106 ibrav = bravaisSymb.index(controls[5]) 2107 spc = controls[13] 2108 SGData = G2spc.SpcGroup(spc)[1] 2109 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2110 Vec = ssopt['ModVec'] 2111 maxH = ssopt['maxH'] 2112 G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A) 2113 data[0] = G2indx.IndexSSPeaks(data[0],G2frame.HKL)[1] 2114 else: #select cell from table - no SS 2115 for i,cell in enumerate(cellist): 2116 if cell[-2]: 2117 ibrav = cell[2] 2118 A = G2lat.cell2A(cell[3:9]) 2119 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 2120 for hkl in G2frame.HKL: 2121 hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])) 2122 data[0] = G2indx.IndexPeaks(data[0],G2frame.HKL)[1] 2123 break 2114 2124 rowLabels = [] 2115 2125 for i in range(len(data[0])): rowLabels.append(str(i+1)) … … 2349 2359 Vec = ssopt['ModVec'] 2350 2360 maxH = ssopt['maxH'] 2351 G2frame.HKL = G2pwd.getHKLMpeak(dmin,SGData,SSGData,Vec,maxH,A) 2361 G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A) 2362 peaks = [G2indx.IndexSSPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #keep esds from peak fit 2352 2363 else: 2353 G2frame.HKL = G2pwd.getHKLpeak(dmin, SGData,A)2354 peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #keep esds from peak fit2364 G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A) 2365 peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #keep esds from peak fit 2355 2366 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List'),peaks) 2356 for hkl in G2frame.HKL:2357 hkl.append(G2lat.Dsp2pos(Inst,hkl[-2])+controls[1])2358 2367 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 2359 2368 G2plt.PlotPowderLines(G2frame) … … 2394 2403 Vol = G2lat.calc_V(A) 2395 2404 if ibrav in [0,1,2]: 2396 print " %s%10.6f" % ('a =',cell[0])2405 print " %s%10.6f" % ('a =',cell[0]) 2397 2406 elif ibrav in [3,4,5,6]: 2398 print " %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],' c =',cell[2],' volume =',Vol)2407 print " %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],' c =',cell[2],' volume =',Vol) 2399 2408 elif ibrav in [7,8,9,10]: 2400 print " %s%10.6f %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],' volume =',Vol)2409 print " %s%10.6f %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],' volume =',Vol) 2401 2410 elif ibrav in [11,12]: 2402 print " %s%10.6f %s%10.6f %s%10.6f %s%8.3f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],'beta =',cell[4],' volume =',Vol)2411 print " %s%10.6f %s%10.6f %s%10.6f %s%8.3f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],'beta =',cell[4],' volume =',Vol) 2403 2412 else: 2404 print "%s%10.6f %s%10.6f %s%10.6f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2]) 2405 print "%s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol) 2413 print " %s%10.6f %s%10.6f %s%10.6f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2]) 2414 print " %s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol) 2415 2416 def vecPrint(Vec): 2417 print ' %s %10.5f %10.5f %10.5f'%('Modulation vector:',Vec[0],Vec[1],Vec[2]) 2406 2418 2407 2419 PatternId = G2frame.PatternId … … 2411 2423 G2frame.ErrorDialog('No peaks!', 'Nothing to refine!') 2412 2424 return 2413 print ' Refine cell'2425 print ' Refine cell' 2414 2426 controls,bravais,cells,dmin,ssopt = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List')) 2415 2427 cell = controls[6:12] … … 2418 2430 SGData = G2spc.SpcGroup(controls[13])[1] 2419 2431 dmin = G2indx.getDmin(peaks[0])-0.005 2420 G2frame.HKL = G2pwd.getHKLpeak(dmin,SGData,A)2421 peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #put peak fit esds back in peaks2422 2432 if 'C' in Inst['Type'][0]: 2423 Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks[0],wave,ibrav,A,controls[1],controls[0]) 2433 if ssopt.get('Use',False): 2434 vecFlags = [True if x in ssopt['ssSymb'] else False for x in ['a','b','g']] 2435 SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb']) 2436 G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,ssopt['ModVec'],ssopt['maxH'],A) 2437 peaks = [G2indx.IndexSSPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #put peak fit esds back in peaks 2438 Lhkl,M20,X20,Aref,Vec,Zero = \ 2439 G2indx.refinePeaksZSS(peaks[0],wave,Inst,SGData,SSGData,ssopt['maxH'],ibrav,A,ssopt['ModVec'],vecFlags,controls[1],controls[0]) 2440 else: 2441 G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A) 2442 peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #put peak fit esds back in peaks 2443 Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks[0],wave,ibrav,A,controls[1],controls[0]) 2424 2444 else: #'T'OF - doesn't seem to work 2445 G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A) 2446 peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]] #put peak fit esds back in peaks 2425 2447 Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksT(peaks[0],difC,ibrav,A,controls[1],controls[0]) 2426 2448 controls[1] = Zero 2427 2449 controls[6:12] = G2lat.A2cell(Aref) 2428 2450 controls[12] = G2lat.calc_V(Aref) 2429 data = [controls,bravais,cells,dmin,ssopt]2430 2451 cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2] 2431 2452 for cell in cells: 2432 2453 cell[-2] = False 2433 2454 cells.insert(0,[M20,X20,ibrav]+controls[6:13]+[True,False]) 2434 data[2] = cells 2455 if ssopt.get('Use',False): 2456 ssopt['ModVec'] = Vec 2457 G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,ssopt['ModVec'],ssopt['maxH'],A) 2458 else: 2459 G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A) 2460 data = [controls,bravais,cells,dmin,ssopt] 2435 2461 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data) 2436 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,Aref) 2437 print "%s%10.3f" % ('refinement M20 = ',M20) 2438 print 'unindexed lines = ',X20 2462 print " %s%10.3f" % ('refinement M20 = ',M20) 2463 print ' unindexed lines = ',X20 2439 2464 cellPrint(ibrav,Aref) 2465 ip = 4 2466 if ssopt.get('Use',False): 2467 vecPrint(Vec) 2468 ip = 5 2440 2469 for hkl in G2frame.HKL: 2441 hkl .append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])2470 hkl[ip] = G2lat.Dsp2pos(Inst,hkl[ip-1])+controls[1] 2442 2471 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 2443 2472 G2plt.PlotPowderLines(G2frame) … … 2476 2505 G2frame.HKL = G2lat.GenHBravais(dmin,bestCell[2],G2lat.cell2A(bestCell[3:9])) 2477 2506 for hkl in G2frame.HKL: 2478 hkl. append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])2507 hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1]) 2479 2508 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 2480 2509 G2plt.PlotPowderLines(G2frame) … … 2502 2531 G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A) 2503 2532 for hkl in G2frame.HKL: 2504 hkl. append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])2533 hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1]) 2505 2534 if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId): 2506 2535 G2plt.PlotPowderLines(G2frame) … … 2542 2571 2543 2572 if G2frame.dataDisplay: 2544 G2frame.dataFrame.Clear() 2573 G2frame.dataFrame.DestroyChildren() 2574 # G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 2575 G2frame.dataDisplay = wxscroll.ScrolledPanel(G2frame.dataFrame) 2545 2576 G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.IndexMenu) 2546 2577 if not G2frame.dataFrame.GetStatusBar(): … … 2571 2602 2572 2603 G2frame.dataFrame.SetLabel('Unit Cells List') 2573 G2frame.sp = wx.SplitterWindow(G2frame.dataFrame)2574 G2frame.dataDisplay = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER)2575 2604 G2frame.dataFrame.IndexPeaks.Enable(False) 2576 2605 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List')) … … 2583 2612 G2frame.dataFrame.MakeNewPhase.Enable(False) 2584 2613 if cells: 2585 G2frame.bottom = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER)2586 G2frame.sp.SplitHorizontally(G2frame.dataDisplay,G2frame.bottom,0)2587 2614 G2frame.dataFrame.CopyCell.Enable(True) 2588 2615 G2frame.dataFrame.MakeNewPhase.Enable(True) … … 2725 2752 mainSizer.Add(ssSizer,0) 2726 2753 2727 mainSizer.Layout()2728 G2frame.dataDisplay.SetSizer(mainSizer)2729 topSize = mainSizer.Fit(G2frame.dataFrame)2730 G2frame.dataDisplay.SetSize(topSize)2731 2754 if cells: 2732 if ibrav == 13: 2733 topSize[1] += 230 2734 else: 2735 topSize[1] += 200 2736 G2frame.dataFrame.setSizePosLeft(topSize) 2737 2738 if cells: 2739 bottomSize = topSize #screwy but bottom doesn't have a size in linux! 2740 bottomSize[0] -= 20 #to reveal slider 2741 if ibrav == 13: 2742 bottomSize[1] -= 240 2743 else: 2744 bottomSize[1] -= 210 2745 wx.StaticText(parent=G2frame.bottom,label=' Indexing Result ') 2755 mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='\n Indexing Result:'),0,WACV) 2746 2756 rowLabels = [] 2747 2757 colLabels = ['M20','X20','use','Bravais','a','b','c','alpha','beta','gamma','Volume','Keep'] … … 2758 2768 G2frame.HKL = G2lat.GenHBravais(dmin,cell[2],A) 2759 2769 for hkl in G2frame.HKL: 2760 hkl. append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])2770 hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1]) 2761 2771 table.append(row) 2762 2772 UnitCellsTable = G2gd.Table(table,rowLabels=rowLabels,colLabels=colLabels,types=Types) 2763 gridDisplay = G2gd.GSGrid(G2frame. bottom)2773 gridDisplay = G2gd.GSGrid(G2frame.dataDisplay) 2764 2774 gridDisplay.SetPosition(wx.Point(0,20)) 2765 2775 gridDisplay.SetTable(UnitCellsTable, True) … … 2776 2786 else: 2777 2787 gridDisplay.SetReadOnly(r,c,isReadOnly=True) 2778 gridDisplay.SetSize(bottomSize) 2779 2788 mainSizer.Add(gridDisplay,0,WACV) 2789 mainSizer.Layout() 2790 G2frame.dataDisplay.SetSizer(mainSizer) 2791 G2frame.dataDisplay.SetAutoLayout(1) 2792 G2frame.dataDisplay.SetupScrolling() 2793 Size = mainSizer.Fit(G2frame.dataFrame) 2794 Size[0] += 25 2795 G2frame.dataDisplay.SetSize(Size) 2796 G2frame.dataFrame.setSizePosLeft(Size) 2797 2780 2798 ################################################################################ 2781 2799 ##### Reflection list … … 3350 3368 ISample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Sample Parameters')) 3351 3369 ILimits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Limits')) 3352 IInst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Instrument Parameters'))3353 3370 IfOK,result,varyList,sig,Rvals,covMatrix,parmDict,Msg = G2sasd.ModelFit(IProfile,IProfDict,ILimits,ISample,IModel) 3354 3371 JModel = copy.deepcopy(IModel) … … 3832 3849 Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Sample Parameters')) 3833 3850 Limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Limits')) 3834 Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))3835 3851 Substances = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Substances')) 3836 3852 ProfDict,Profile = G2frame.PatternTree.GetItemPyData(G2frame.PatternId)[:2] -
trunk/GSASIIspc.py
r1572 r1578 1150 1150 OpM = np.array([op[0] for op in Ops]) 1151 1151 OpT = np.array([op[1] for op in Ops]) 1152 HKLS = np.array([HKL,-HKL]) 1152 HKLS = np.array([HKL,-HKL]) #Freidel's Law 1153 1153 DHKL = np.reshape(np.inner(HKLS,OpM)-HKL,(-1,4)) 1154 1154 PHKL = np.reshape(np.inner(HKLS,OpT),(-1,)) 1155 for dhkl,phkl in zip(DHKL,PHKL)[1:]: 1155 for dhkl,phkl in zip(DHKL,PHKL)[1:]: #skip identity 1156 1156 if dhkl.any(): 1157 1157 continue 1158 1158 else: 1159 if phkl :1159 if phkl%1.: 1160 1160 return False 1161 1161 return True
Note: See TracChangeset
for help on using the changeset viewer.